์ฝ๊ธฐ ์ค์
์ด ํ์ด์ง์ ๋ด์ฉ
์ฝ๊ธฐ ๊ธฐ๋ณธ ์ค์ ์ MongoDB ํด๋ผ์ด์ธํธ๊ฐ ๋ณต์ ๋ณธ ์ธํธ ๋ ธ๋์ ์ฝ๊ธฐ ์์ ์ ์ด๋ป๊ฒ ๋ผ์ฐํ ํ๋์ง ์ค๋ช ํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ธฐ ์์ ์ ๋ณต์ ๋ณธ ์ธํธ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ(์ฆ, ์ฝ๊ธฐ ์ค์ ๋ชจ๋ 'primary')๋ก ์ง์ํฉ๋๋ค. ํ์ง๋ง ํด๋ผ์ด์ธํธ๋ ์ฝ๊ธฐ ์์ ์ ์ธ์ปจ๋๋ฆฌ๋ก ์ ์กํ๋๋ก ์ฝ๊ธฐ ์ค์ ์ ์ง์ ํ ์ ์์ต๋๋ค.
์ฝ๊ธฐ ์ค์ ์ ์ฝ๊ธฐ ์ค์ ๋ชจ๋์ ์ ํ์ ์ผ๋ก ํ๊ทธ ์ค์ ๋ชฉ๋ก ,maxStalenessSeconds ์ต์
, ํค์ง๋ ์ฝ๊ธฐ ์ต์
์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ํค์ง๋ ์ฝ๊ธฐ ์ต์
์ primary
์ด์ธ์ ์ฝ๊ธฐ ์ค์ ์ ์ฌ์ฉํ๋ ์ฝ๊ธฐ๋ฅผ ์ํด ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฝ๊ธฐ ์ค์ ๋ชจ๋
๋ค์ ํ์๋ ์ฝ๊ธฐ ์ค์ ๋ชจ๋์ ๋ํ ๊ฐ๋ตํ ์์ฝ์ด ๋์ด๋์ด ์์ต๋๋ค.
์ฐธ๊ณ
primary
๊ฐ ์๋ ์ฝ๊ธฐ ์ค์ (read preference) ๋ชจ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์์ ํค์ง๋ ์ฝ๊ธฐ(hedged read)๋ฅผ ์ง์ํฉ๋๋ค.
์ฝ๊ธฐ ์ค์ ๋ชจ๋ | ์ค๋ช
|
---|---|
๊ธฐ๋ณธ ๋ชจ๋. ๋ชจ๋ ์์ ์ ํ์ฌ ๋ณต์ ๋ณธ ์ธํธ ํ๋ผ์ด๋จธ๋ฆฌ์์ ์ฝ์ต๋๋ค. ๋ถ์ฐ ํธ๋์ญ์
์ ํฌํจ๋ ์ฝ๊ธฐ ์์
์ | |
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์์ ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ ธ๋์์ ์ฝ์ง๋ง, ํ๋ผ์ด๋จธ๋ฆฌ ๋ ธ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ์ธ์ปจ๋๋ฆฌ ๋ ธ๋์์ ์ฝ์ต๋๋ค. ์ฝ๊ธฐ ์ค์ (read preference) | |
๋ชจ๋ ์์ ์ ๋ณต์ ๋ณธ ์ธํธ์ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ์์ ์ฝ์ต๋๋ค. ์ฝ๊ธฐ ์ค์ (read preference) | |
์์ ์ ์ผ๋ฐ์ ์ผ๋ก ๋ณต์ ๋ณธ ์ธํธ์ ์ธ์ปจ๋๋ฆฌ ๋ ธ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ต๋๋ค. ๋ง์ฝ ๋ณต์ ๋ณธ ์ธํธ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ ธ๋๊ฐ ํ๋๋ง ์๊ณ ๋ค๋ฅธ ๋ ธ๋๊ฐ ์๋ค๋ฉด, ์์ ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ ธ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ต๋๋ค. ์ฝ๊ธฐ ์ค์ (read preference) | |
์์ ์ ์ง์ ๋ ์ง์ฐ ์๊ฐ ์๊ณ๊ฐ์ ๋ฐ๋ผ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ๋ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๋ ์๊ด์์ด ์์์ ์ ๊ฒฉ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ์์ ์ฝ์ต๋๋ค. ์ด ์์ ์ ์ง์ฐ ์๊ฐ์ ๊ณ์ฐํ ๋ ๋ค์ ์ฌํญ์ ๊ณ ๋ คํฉ๋๋ค.
์ฝ๊ธฐ ์ค์ (read preference) |
์ฝ๊ธฐ ํ๊ฒฝ์ค์ ๋ชจ๋์ ๋ํ ์์ธํ ์ค๋ช ์ ์ฝ๊ธฐ ์ค์ ๋ชจ๋๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ค์๋ ์ฐธ์กฐํ์ธ์.
ํ๋
primary
์ ์ธํ ๋ชจ๋ ์ฝ๊ธฐ ์ค์ ๋ชจ๋๋ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค. ์ด๋ ์ธ์ปจ๋๋ฆฌ๊ฐ ํ๋ผ์ด๋จธ๋ฆฌ๋ก๋ถํฐ ์์ ์ ๋น๋๊ธฐ์ ์ผ๋ก ๋ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. [1]primary
๊ฐ ์๋ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๋ฉด, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ ์ ์๋์ง ํ์ธํ์ธ์.์ฝ๊ธฐ ๊ธฐ๋ณธ ์ค์ ์ ๋ฐ์ดํฐ์ ๊ฐ์์ฑ์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ์ฆ, ํด๋ผ์ด์ธํธ๋ ์ฐ๊ธฐ ๊ฒฐ๊ณผ๊ฐ ํ์ธ๋๊ฑฐ๋ ๋๋ค์์ ๋ณต์ ๋ณธ ์ธํธ ๋ ธ๋์ ์ ํ๋๊ธฐ ์ ์ ์ฐ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ฒฉ๋ฆฌ, ์ผ๊ด์ฑ ๋ฐ ์ต์ ์ฑ(Recency) ์ฝ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฝ๊ธฐ ์ค์ ์ ์ธ๊ณผ์ ์ผ๊ด์ฑ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
"majority"
์ฝ๊ธฐ ๊ณ ๋ ค๊ฐ ์๋ ์ฝ๊ธฐ ์์ ๊ณผ"majority"
์ฐ๊ธฐ ๊ณ ๋ ค๊ฐ ์ฐ๊ธฐ ์์ ์ ๋ํด ์ธ๊ณผ์ ์ผ๋ก ์ผ๊ด์ฑ์ด ์๋ ์ธ์ ์ ์ ๊ณตํ๋ ์ธ๊ณผ์ ์ผ๊ด์ฑ ๋ณด์ฅ์ MongoDB deployment์ ๋ชจ๋ ๋ฉค๋ฒ์ ๊ฑธ์ณ ์ ์ง๋ฉ๋๋ค.
๊ฒฝ๊ณ
๋ง์ด๊ทธ๋ ์ด์ ์ด ์๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ์ธ์ปจ๋๋ฆฌ ์ฝ๊ธฐ๋ ๋ฌธ์๋ฅผ ๋์น ์ ์์ต๋๋ค.
์ค๋ฉ๋ ํด๋ฌ์คํฐ์์ ์ฅ๊ธฐ ์คํ ์ธ์ปจ๋๋ฆฌ ์ฝ๊ธฐ๋ ๋ง์ด๊ทธ๋ ์ด์ ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ ๋ฌธ์๋ฅผ ๋๋ฝํ ์ ์์ต๋๋ค.
์ฒญํฌ ๋ง์ด๊ทธ๋ ์ด์
์ค์ ์ฒญํฌ๋ฅผ ์ญ์ ํ๊ธฐ ์ ์, MongoDB๋ orphanCleanupDelaySecs
๋๋ ์ฒญํฌ์ ๊ด๋ จ๋ ์งํ ์ค์ธ ์ฟผ๋ฆฌ๊ฐ ์ค๋ ํ๋ผ์ด๋จธ๋ฆฌ์์ ์๋ฃ๋ ๋๊น์ง ๋ ์ค ๋ ๊ธด ์๊ฐ์ ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ฒ์์ ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋์์ ์คํ๋์์ง๋ง ๋
ธ๋๊ฐ ์ธ์ปจ๋๋ฆฌ ๋
ธ๋๋ก ๋ด๋ ค๊ฐ ํ์๋ ๊ณ์๋๋ ์ฟผ๋ฆฌ๋ ์ฒ์์ ์ธ์ปจ๋๋ฆฌ ๋
ธ๋์์ ์คํ๋ ๊ฒ์ฒ๋ผ ์ฒ๋ฆฌ๋ฉ๋๋ค. ์ฆ, ์๋ฒ๋ ํ์ฌ ๊ธฐ๋ณธ ์๋ฒ์ ์ฒญํฌ๋ฅผ ๋์์ผ๋ก ํ๋ ์ฟผ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง orphanDelayCleanupSecs
๋์ ๋๊ธฐํฉ๋๋ค.
์ฒญํฌ๋ฅผ ๋์์ผ๋ก ํ๊ณ ์ธ์ปจ๋๋ฆฌ์์ ์คํ๋๋ ์ฟผ๋ฆฌ๋ ์ฟผ๋ฆฌ๊ฐ orphanCleanupDelaySecs
๋ณด๋ค ์ค๋ ๊ฑธ๋ฆฌ๋ฉด ๋ฌธ์๋ฅผ ๋๋ฝํ ์ ์์ต๋๋ค.
์ฝ๊ธฐ ์ค์ ๋ชจ๋
primary
๋ชจ๋ ์ฝ๊ธฐ ์์ ์ ํ์ฌ ๋ณต์ ๋ณธ ์ธํธ์ ํ๋ผ์ด๋จธ๋ฆฌ๋ง ์ฌ์ฉํฉ๋๋ค. [1] ๊ธฐ๋ณธ ์ฝ๊ธฐ ๋ชจ๋์ ๋๋ค. ๋ง์ฝ ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ์ฝ๊ธฐ ์์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค.
primary
์ฝ๊ธฐ ์ค์ ๋ชจ๋๋ ํ๊ทธ ์ธํธ ๋ชฉ๋ก์ด๋ maxStalenessSeconds๋ฅผ ์ฌ์ฉํ๋ ์ฝ๊ธฐ ์ค์ ๋ชจ๋์ ํธํ๋์ง ์์ต๋๋ค. ํ๊ทธ ์ธํธ ๋ชฉ๋ก ๋๋maxStalenessSeconds
๊ฐ์primary
๋ก ์ง์ ํ๋ฉด ๋๋ผ์ด๋ฒ์์ ์ค๋ฅ๋ฅผ ์์ฑํฉ๋๋ค.์ฝ๊ธฐ ์์ ์ด ํฌํจ๋ ๋ถ์ฐ ํธ๋์ญ์ ์ ์ฝ๊ธฐ ์ค์ (read preference)
primary
๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ํน์ ํธ๋์ญ์ ์ ๋ชจ๋ ์์ ์ ๋์ผํ ๋ ธ๋๋ก ๋ผ์ฐํ ๋์ด์ผ ํฉ๋๋ค.
primaryPreferred
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์์ ์ ์ธํธ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ์์ ์ฝ์ต๋๋ค. ๊ทธ๋ฌ๋ ํ์ผ์ค๋ฒ ์กฐ์น ์ํฉ๊ณผ ๊ฐ์ด ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์ฝ๊ธฐ ์ค์ ์
maxStalenessSeconds
๋ฐ ํ๊ทธ ์ธํธ ๋ชฉ๋ก์ ์ถฉ์กฑํ๋ ์ธ์ปจ๋๋ฆฌ๋ฉค๋ฒ๋ก๋ถํฐ ์์ ์ ์ฝ์ต๋๋ค.
primaryPreferred
์ฝ๊ธฐ ์ค์ ์ maxStalenessSeconds ๊ฐ์ด ํฌํจ๋์ด ์๊ณ ์ฝ์ด์ฌ ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ, ํด๋ผ์ด์ธํธ๋ ์ธ์ปจ๋๋ฆฌ์ ๋ง์ง๋ง ์ฐ๊ธฐ๋ฅผ ๊ฐ์ฅ ์ต๊ทผ ์ฐ๊ธฐ๊ฐ ์๋ ์ธ์ปจ๋๋ฆฌ์ ๋ง์ง๋ง ์ฐ๊ธฐ์ ๋น๊ตํ์ฌ ๊ฐ ์ธ์ปจ๋๋ฆฌ๊ฐ ์ผ๋ง๋ ์ค๋ ๋์๋์ง ์ถ์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํด๋ผ์ด์ธํธ๋ ์์ ์ง์ฐ์ดmaxStalenessSeconds
์ดํ์ธ ์ธ์ปจ๋๋ฆฌ์ ์ฝ๊ธฐ ์์ ์ ์ง์ํฉ๋๋ค.์ฝ๊ธฐ ์ค์ ์ ํ๊ทธ ์ธํธ ๋ชฉ๋ก (ํ๊ทธ ์ธํธ์ ๋ฐฐ์ด)์ด ํฌํจ๋์ด ์๊ณ ์ฝ์ ์ ์๋ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ๊ฐ ์๋ ๊ฒฝ์ฐ, ํด๋ผ์ด์ธํธ๋ ์ผ์นํ๋ ํ๊ทธ๊ฐ ์๋ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๋ฅผ ์ฐพ์ผ๋ ค๊ณ ์๋ํฉ๋๋ค (์ผ์นํ๋ ํ๊ทธ๊ฐ ๋ฐ๊ฒฌ๋ ๋๊น์ง ํ๊ทธ ์ธํธ๋ฅผ ์ฐจ๋ก๋ก ์๋ํฉ๋๋ค). ์ผ์นํ๋ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ํด๋ผ์ด์ธํธ๋ ์ผ์นํ๋ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ทธ๋ฃน์์ ๋ฌด์์๋ก ์ธ์ปจ๋๋ฆฌ๋ฅผ ์ ํํฉ๋๋ค. ์ผ์นํ๋ ํ๊ทธ๋ฅผ ๊ฐ์ง ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๊ฐ ์๋ ๊ฒฝ์ฐ, ์ฝ๊ธฐ ์์ ์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค.
์ฝ๊ธฐ ๊ธฐ๋ณธ ์ค์ ์
maxStalenessSeconds
๊ฐ ๊ณผ ํ๊ทธ ์ธํธ ๋ชฉ๋ก์ด ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ, ํด๋ผ์ด์ธํธ๋ ๋จผ์ ์ค๋๋ ์ ๋์ ๋ฐ๋ผ ํํฐ๋งํ ๋ค์ ์ง์ ๋ ํ๊ทธ๋ฅผ ๊ธฐ์ค์ผ๋ก ํํฐ๋งํฉ๋๋ค.primaryPreferred
๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ฝ๊ธฐ ์์ ์ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.maxStalenessSeconds
์ต์ ์ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ๋๋ฌด ์ค๋๋์๋ค๊ณ ์ถ์ ํ๋ ์ธ์ปจ๋๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ง ์๋๋ก ํ ์ ์์ต๋๋ค.์ฐธ๊ณ
์ฝ๊ธฐ ์ค์
primaryPreferred
๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์์ ํค์ง๋ ์ฝ๊ธฐ๋ฅผ ์ง์ํฉ๋๋ค.
secondary
์์ ์ ์ธํธ์ ์ค์ง ์ธ์ปจ๋๋ฆฌ๋ก๋ถํฐ๋ง ์ฝ์ต๋๋ค.์ฌ์ฉ ๊ฐ๋ฅํ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๊ฐ ์์ผ๋ฉด ์ด ์ฝ๊ธฐ ์์ ์์ ์ค๋ฅ๋ ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋๋ถ๋ถ์ ๋ณต์ ๋ณธ ์ธํธ์๋ ์ต์ํ ํ๋์ ์ธ์ปจ๋๋ฆฌ๊ฐ ์์ง๋ง ์ฌ์ฉ ๊ฐ๋ฅํ ์ธ์ปจ๋๋ฆฌ๊ฐ ์๋ ์ํฉ๋ ์์ต๋๋ค.์๋ฅผ ๋ค์ด ํ๋์ ํ๋ผ์ด๋จธ๋ฆฌ, ํ๋์ ์ธ์ปจ๋๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ํ๋์ ์ค์ฌ์๊ฐ ์๋ ๋ณต์ ๋ณธ ์ธํธ์์ ๋ฉค๋ฒ๊ฐ ๋ณต๊ตฌ ์ค์ด๊ฑฐ๋ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๊ฐ ์์ ์ ์์ต๋๋ค.
secondary
์ฝ๊ธฐ ์ค์ ์ maxStalenessSeconds ๊ฐ์ด ํฌํจ๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ ์ธ์ปจ๋๋ฆฌ์ ๋ง์ง๋ง ์ฐ๊ธฐ๋ฅผ ํ๋ผ์ด๋จธ๋ฆฌ์ ๋ง์ง๋ง ์ฐ๊ธฐ์ ๋น๊ตํ์ฌ ๊ฐ ์ธ์ปจ๋๋ฆฌ์ ๋ถ์ค ์ ๋๋ฅผ ์ถ์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํด๋ผ์ด์ธํธ๋ ์์ ์ง์ฐ์ดmaxStalenessSeconds
์ดํ์ธ ์ธ์ปจ๋๋ฆฌ์ ์ฝ๊ธฐ ์์ ์ ์ง์ํฉ๋๋ค. ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ์์ผ๋ฉด ํด๋ผ์ด์ธํธ๋ ๋น๊ต๋ฅผ ์ํด ๊ฐ์ฅ ์ต๊ทผ์ ์ด ์ธ์ปจ๋๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.์ฝ๊ธฐ ์ค์ ์ ํ๊ทธ ์ธํธ ๋ชฉ๋ก (ํ๊ทธ ์ธํธ์ ๋ฐฐ์ด)์ด ํฌํจ๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ ์ผ์นํ๋ ํ๊ทธ๊ฐ ์๋ ์ธ์ปจ๋๋ฆฌ ๊ตฌ์ฑ์์ ์ฐพ์ผ๋ ค๊ณ ์๋ํฉ๋๋ค (์ผ์นํ๋ ํ๊ทธ๊ฐ ๋ฐ๊ฒฌ๋ ๋๊น์ง ํ๊ทธ ์ธํธ์ ์์๋๋ก ์๋). ์ผ์นํ๋ ์ธ์ปจ๋๋ฆฌ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ํด๋ผ์ด์ธํธ๋ ์ผ์นํ๋ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ ์ค ๊ฐ์ฅ ๊ฐ๊น์ด ๊ทธ๋ฃน์์ ๋ฌด์์๋ก ์ธ์ปจ๋๋ฆฌ๋ฅผ ์ ํํฉ๋๋ค. ์ผ์นํ๋ ํ๊ทธ๋ฅผ ๊ฐ์ง ์ธ์ปจํฐ๋ฆฌ ๋ฉค๋ฒ๊ฐ ์๋ ๊ฒฝ์ฐ, ์ฝ๊ธฐ ์์ ์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํต๋๋ค.
์ฝ๊ธฐ ๊ธฐ๋ณธ ์ค์ ์
maxStalenessSeconds
๊ฐ ๊ณผ ํ๊ทธ ์ธํธ ๋ชฉ๋ก์ด ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ, ํด๋ผ์ด์ธํธ๋ ๋จผ์ ์ค๋๋ ์ ๋์ ๋ฐ๋ผ ํํฐ๋งํ ๋ค์ ์ง์ ๋ ํ๊ทธ๋ฅผ ๊ธฐ์ค์ผ๋ก ํํฐ๋งํฉ๋๋ค.secondary
๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ฝ๊ธฐ ์์ ์ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.maxStalenessSeconds
์ต์ ์ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ๋๋ฌด ์ค๋๋์๋ค๊ณ ์ถ์ ํ๋ ์ธ์ปจ๋๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ง ์๋๋ก ํ ์ ์์ต๋๋ค.์ฐธ๊ณ
์ฝ๊ธฐ ์ค์
secondary
๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์์ ํค์ง๋ ์ฝ๊ธฐ๋ฅผ ์ง์ํฉ๋๋ค.
secondaryPreferred
์์ ์ ์ผ๋ฐ์ ์ผ๋ก ๋ณต์ ๋ณธ ์ธํธ์ ์ธ์ปจ๋๋ฆฌ ๋ ธ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ต๋๋ค. ๋ง์ฝ ๋ณต์ ๋ณธ ์ธํธ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ ธ๋๊ฐ ํ๋๋ง ์๊ณ ๋ค๋ฅธ ๋ ธ๋๊ฐ ์๋ค๋ฉด, ์์ ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ ธ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ต๋๋ค.
secondaryPreferred
์ฝ๊ธฐ ์ค์ (read preference)์ maxStalenessSeconds ๊ฐ์ด ํฌํจ๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ ์ธ์ปจ๋๋ฆฌ์ ๋ง์ง๋ง ์ฐ๊ธฐ๋ฅผ ํ๋ผ์ด๋จธ๋ฆฌ์ ๋ง์ง๋ง ์ฐ๊ธฐ์ ๋น๊ตํ์ฌ ๊ฐ ์ธ์ปจ๋๋ฆฌ์ ๋ถ์ค ์ ๋๋ฅผ ์ถ์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํด๋ผ์ด์ธํธ๋ ์์ ์ง์ฐ์ดmaxStalenessSeconds
์ดํ์ธ ์ธ์ปจ๋๋ฆฌ์ ์ฝ๊ธฐ ์์ ์ ์ง์ํฉ๋๋ค. ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ์์ผ๋ฉด ํด๋ผ์ด์ธํธ๋ ๋น๊ต๋ฅผ ์ํด ๊ฐ์ฅ ์ต๊ทผ์ ์ด ์ธ์ปจ๋๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์ ์ง์ฐ ์๊ฐ์ดmaxStalenessSeconds
์ดํ์ธ ์ธ์ปจ๋๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ ์ฝ๊ธฐ ์์ ์ ๋ณต์ ๋ณธ ์ธํธ์ ํ๋ผ์ด๋จธ๋ฆฌ๋ก ๋ณด๋ ๋๋ค.์ฝ๊ธฐ ํ๊ฒฝ ์ค์ ์ ํ๊ทธ ์ธํธ ๋ชฉ๋ก(ํ๊ทธ ์ธํธ์ ๋ฐฐ์ด)์ด ํฌํจ๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ ์ผ์นํ๋ ํ๊ทธ๊ฐ ์๋ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๋ฅผ ์ฐพ์ผ๋ ค๊ณ ์๋ํฉ๋๋ค(์ผ์นํ๋ ํ๊ทธ๊ฐ ๋ฐ๊ฒฌ๋ ๋๊น์ง ํ๊ทธ ์ธํธ์ ์์๋๋ก ์๋). ์ผ์นํ๋ ์ธ์ปจ๋๋ฆฌ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ํด๋ผ์ด์ธํธ๋ ์ผ์นํ๋ ์ธ์ปจ๋๋ฆฌ์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ทธ๋ฃน์์ ๋ฌด์์๋ก ์ธ์ปจ๋๋ฆฌ๋ฅผ ์ ํํฉ๋๋ค. ์ผ์นํ๋ ํ๊ทธ๋ฅผ ๊ฐ์ง ์ธ์ปจ๋๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ, ํด๋ผ์ด์ธํธ๋ ํ๊ทธ๋ฅผ ๋ฌด์ํ๊ณ ํ๋ผ์ด๋จธ๋ฆฌ์์ ์ฝ์ต๋๋ค.
์ฝ๊ธฐ ๊ธฐ๋ณธ ์ค์ ์
maxStalenessSeconds
๊ฐ ๊ณผ ํ๊ทธ ์ธํธ ๋ชฉ๋ก์ด ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ, ํด๋ผ์ด์ธํธ๋ ๋จผ์ ์ค๋๋ ์ ๋์ ๋ฐ๋ผ ํํฐ๋งํ ๋ค์ ์ง์ ๋ ํ๊ทธ๋ฅผ ๊ธฐ์ค์ผ๋ก ํํฐ๋งํฉ๋๋ค.secondaryPreferred
๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ฝ๊ธฐ ์์ ์ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.maxStalenessSeconds
์ต์ ์ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ๋๋ฌด ์ค๋๋์๋ค๊ณ ์ถ์ ํ๋ ์ธ์ปจ๋๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ง ์๋๋ก ํ ์ ์์ต๋๋ค.์ฐธ๊ณ
์ฝ๊ธฐ ์ค์
secondaryPreferred
๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์์ ํค์ง๋ ์ฝ๊ธฐ๋ฅผ ์ง์ํฉ๋๋ค.
nearest
๋๋ผ์ด๋ฒ๋ ๋คํธ์ํฌ ์ง์ฐ์ด ํ์ฉ ๊ฐ๋ฅํ ๋๊ธฐ ์๊ฐ ์ฐฝ ๋ด์ ์ํ๋ ๋ฉค๋ฒ๋ก๋ถํฐ ์ฝ์ต๋๋ค.
nearest
๋ชจ๋์์์ ์ฝ๊ธฐ๋ ์ฝ๊ธฐ ์์ ์ ๋ผ์ฐํ ํ ๋ ๋ฉค๋ฒ๊ฐ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ์ธ์ง ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ์ธ์ง๋ฅผ ๊ณ ๋ คํ์ง ์์ต๋๋ค. ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ์ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๋ ๋๋ฑํ๊ฒ ์ทจ๊ธ๋ฉ๋๋ค.์ด ๋ชจ๋๋ฅผ ์ค์ ํ๋ฉด ํ์ฌ ๋ฐ์ดํฐ๋ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ํธํ์ง ์๊ณ ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ์ด ์ฝ๊ธฐ ์์ ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ ์ ์์ต๋๋ค.
์ฝ๊ธฐ ์ค์ ์ MaxStalenessSeconds ๊ฐ์ด ํฌํจ๋ ๊ฒฝ์ฐ ๊ฐ๋ฅํ๋ค๋ฉด ํด๋ผ์ด์ธํธ๋ ์ธ์ปจ๋๋ฆฌ์ ๋ง์ง๋ง ์ฐ๊ธฐ๋ฅผ ํ๋ผ์ด๋จธ๋ฆฌ์ ๋ง์ง๋ง ์ฐ๊ธฐ ์์ ๊ณผ ๋น๊ตํ๊ณ , ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ์๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ต๊ทผ์ ์ด ์ธ์ปจ๋๋ฆฌ์ ๋น๊ตํ์ฌ ๊ฐ ์ธ์ปจ๋๋ฆฌ๊ฐ ์ผ๋ง๋ ์ค๋ ๋์๋์ง ์ถ์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํด๋ผ์ด์ธํธ๋ ์์ ์ง์ฐ์ด
maxStalenessSeconds
๋ณด๋ค ํฐ ์ธ์ปจ๋๋ฆฌ๋ฅผ ํํฐ๋งํ๊ณ ๋คํธ์ํฌ ์ง์ฐ์ด ํ์ฉ ๊ฐ๋ฅํ ์ง์ฐ ์๊ฐ ๋ด์ ์๋ ๋๋จธ์ง ๋ฉค๋ฒ (ํ๋ผ์ด๋จธ๋ฆฌ ๋๋ ์ธ์ปจ๋๋ฆฌ)์๊ฒ ๋ฌด์์๋ก ์ฝ๊ธฐ๋ฅผ ์ง์ํฉ๋๋ค.ํ๊ทธ ์ธํธ ๋ชฉ๋ก์ ์ง์ ํ๋ฉด ํด๋ผ์ด์ธํธ๋ ์ง์ ๋ ํ๊ทธ ์ธํธ ๋ชฉ๋ก๊ณผ ์ผ์นํ๋ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ์ ์ฐพ์ผ๋ ค๊ณ ์๋ํ๊ณ , ๊ฐ์ฅ ๊ฐ๊น์ด ๊ทธ๋ฃน ์ค์์ ์์์ ๋ฉค๋ฒ์๊ฒ ์ฝ๊ธฐ๋ฅผ ์ง์ํฉ๋๋ค.
์ฝ๊ธฐ ์ค์ ์
maxStalenessSeconds
๊ฐ๊ณผ ํ๊ทธ ์ธํธ ๋ชฉ๋ก์ด ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ ๋จผ์ ์ค๋๋ ์ ๋์ ๋ฐ๋ผ ํํฐ๋งํ ๋ค์ ์ง์ ๋ ํ๊ทธ๋ฅผ ๊ธฐ์ค์ผ๋ก ํํฐ๋งํฉ๋๋ค. ๋๋จธ์งmongod
์ธ์คํด์ค์์ ํด๋ผ์ด์ธํธ๋ ํ์ฉ ๊ฐ๋ฅํ ์ง์ฐ ์๊ฐ ๋ฒ์ ๋ด์ ์๋ ์ธ์คํด์ค๋ก ์ฝ๊ธฐ๋ฅผ ์์๋ก ์ง์ํฉ๋๋ค. ์ฝ๊ธฐ ์ค์ ๋ฉค๋ฒ ์ ํ ๋ฌธ์์ ์ด ํ๋ก์ธ์ค์ ๋ํ ์์ธํ ์ค๋ช ์ด ๋์ ์์ต๋๋ค.nearest
๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ฝ๊ธฐ ์์ ์ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.maxStalenessSeconds
์ต์ ์ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ๋๋ฌด ์ค๋๋์๋ค๊ณ ์ถ์ ํ๋ ์ธ์ปจ๋๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ง ์๋๋ก ํ ์ ์์ต๋๋ค.์ฐธ๊ณ
๊ธฐ๋ณธ์ ์ผ๋ก ์ฝ๊ธฐ ์ค์
nearest
๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ์ฝ๊ธฐ์ ํค์ง๋ ์ฝ๊ธฐ๋ฅผ ์ฌ์ฉํ๋๋ก ์ง์ ํฉ๋๋ค.
๋ค์๋ ์ฐธ์กฐํ์ธ์.
ํน์ ์ฝ๊ธฐ ์ค์ ์ ์ฌ์ฉ ์ฌ๋ก์ ๋ํด ์์๋ณด๋ ค๋ฉด ์ฝ๊ธฐ ํ๊ฒฝ ์ค์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฝ๊ธฐ ํ๊ฒฝ์ค์ ๊ตฌ์ฑ
MongoDB ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋๋ผ์ด๋ฒ์ ์ฝ๊ธฐ ์ค์ (read preference) API๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๊ธฐ ์ค์ ์ ์ง์ ํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋๋ผ์ด๋ฒ API ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ธ์. ๋ํ ๋ณต์ ๋ณธ ์ธํธ๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํ ๋ ์ฝ๊ธฐ ์ค์ (ํค์ง๋ ์ฝ๊ธฐ(hedged read) ์ต์ ์ ์ธ)์ ์ค์ ํ ์ ์์ต๋๋ค. ์์๋ ์ฐ๊ฒฐ ๋ฌธ์์ด์์ ํ์ธํ ์ ์์ต๋๋ค.
์ฃผ์ด์ง ์ฝ๊ธฐ ์ค์ ์ ๋ํด MongoDB ๋๋ผ์ด๋ฒ๋ ๋์ผํ ๋ ธ๋ ์ ํ ๋ก์ง์ ์ฌ์ฉํฉ๋๋ค.
mongosh
์ฌ์ฉ ์ cursor.readPref()
๋ฐ Mongo.setReadPref()
๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
์ฝ๊ธฐ ํ๊ฒฝ์ค์ ๋ฐ ํธ๋์ ์
์ฝ๊ธฐ ์์
์ด ํฌํจ๋ ๋ถ์ฐ ํธ๋์ญ์
์ ์ฝ๊ธฐ ์ค์ (read preference) primary
๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ํน์ ํธ๋์ญ์
์ ๋ชจ๋ ์์
์ ๋์ผํ ๋
ธ๋๋ก ๋ผ์ฐํ
๋์ด์ผ ํฉ๋๋ค.
์ถ๊ฐ ๊ณ ๋ ค ์ฌํญ
์ง๊ณ ํ์ดํ๋ผ์ธ์์
$merge
๋๋ $out
๋จ๊ณ๋ฅผ ์ฌ์ฉํ ๋๋ ๋ค์ ์ฌํญ์ ๊ณ ๋ คํ์ธ์.
MongoDB 5.0๋ถํฐ
$merge
๋จ๊ณ๊ฐ ์๋ ํ์ดํ๋ผ์ธ์ ํด๋ฌ์คํฐ์ ๋ชจ๋ ๋ ธ๋์์ featureCompatibilityVersion์ด5.0
์ด์์ผ๋ก ์ค์ ๋์ด ์๊ณ ์ฝ๊ธฐ ์ค์ ์ด ์ธ์ปจ๋๋ฆฌ ์ฝ๊ธฐ๋ฅผ ํ์ฉํ๋ ๊ฒฝ์ฐ ๋ณต์ ๋ณธ ์ธํธ ์ธ์ปจ๋๋ฆฌ ๋ ธ๋์์ ์คํ๋ ์ ์์ต๋๋ค.
$merge
๋ฐ$out
๋จ๊ณ๋ ์ธ์ปจ๋๋ฆฌ ๋ ธ๋์์ ์คํ๋์ง๋ง ์ฐ๊ธฐ ์์ ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ ธ๋๋ก ์ ์ก๋ฉ๋๋ค.๋ชจ๋ ๋๋ผ์ด๋ฒ ๋ฒ์ ์ด ๋ณด์กฐ ๋ ธ๋๋ก ์ ์ก๋๋
$merge
์ฐ์ฐ์ ์ง์ํ๋ ๊ฒ์ ์๋๋๋ค. ์์ธํ ๋ด์ฉ์ ๋๋ผ์ด๋ฒ ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด์ MongoDB ๋ฒ์ ์์๋
$out
๋๋$merge
๋จ๊ณ๊ฐ ์๋ ํ์ดํ๋ผ์ธ์ ํญ์ ๊ธฐ๋ณธ ๋ ธ๋์์ ์คํ๋๋ฉฐ ์ฝ๊ธฐ ๊ธฐ๋ณธ ์ค์ ์ ๊ณ ๋ ค๋์ง ์์์ต๋๋ค.
mapReduce
์์
์ ๊ฒฝ์ฐ mapReduce
๋ฐ์ดํฐ๋ฅผ ์ฐ์ง ์๋ "inline" ์์
๋ง ์ฝ๊ธฐ ์ค์ ์ ์ง์ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด mapReduce
์์
์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ์์ ์คํ๋ฉ๋๋ค.
[1] | (1, 2) ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ณต์ ๋ณธ ์ธํธ์ ๋ ๋
ธ๋๊ฐ ์ผ์์ ์ผ๋ก ์์ ์ด ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋๋ผ๊ณ ์๊ฐํ ์ ์์ง๋ง ์ด ์ค ์ต๋ ํ๋๋ง { w:
"majority" } ์ฐ๊ธฐ ๊ณ ๋ ค๋ก ์ฐ๊ธฐ๋ฅผ ์๋ฃ ์ ์์ต๋๋ค. { w: "majority" } ์ฐ๊ธฐ๋ฅผ ์๋ฃํ ์ ์๋ ๋
ธ๋๊ฐ ํ์ฌ ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋์ด๊ณ ๋ค๋ฅธ ๋
ธ๋๋ ์ผ๋ฐ์ ์ผ๋ก ๋คํธ์ํฌ ํํฐ์
์ผ๋ก ์ธํด ์์ง ๊ฐ๋ฑ์ ์ธ์ํ์ง ๋ชปํ ์ด์ ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋์
๋๋ค. ์ด ๊ฒฝ์ฐ ์ด์ ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋์ ์ฐ๊ฒฐํ๋ ํด๋ผ์ด์ธํธ๋ ์ฝ๊ธฐ ์ค์ primary ๋ฅผ ์์ฒญํ์์๋ ๋ถ๊ตฌํ๊ณ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์์ผ๋ฉฐ ์ด์ ํ๋ผ์ด๋จธ๋ฆฌ ๋
ธ๋์ ๋ํ ์๋ก์ด ์ฐ๊ธฐ๋ ๊ฒฐ๊ตญ ๋กค๋ฐฑ๋ฉ๋๋ค. |