Docs Menu

์ฝ๊ธฐ ์„ค์ •

์ฝ๊ธฐ ๊ธฐ๋ณธ ์„ค์ •์€ MongoDB ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋…ธ๋“œ์— ์ฝ๊ธฐ ์ž‘์—…์„ ์–ด๋–ป๊ฒŒ ๋ผ์šฐํŒ…ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Read operations to a replica set. Default read preference routes the read to the primary. Read preference of ``nearest`` routes the read to the nearest member.
ํด๋ฆญํ•˜์—ฌ ํ™•๋Œ€

๊ธฐ๋ณธ์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ฝ๊ธฐ ์ž‘์—…์„ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ„(์ฆ‰, ์ฝ๊ธฐ ์„ค์ • ๋ชจ๋“œ 'primary')๋กœ ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ๋Š” ์ฝ๊ธฐ ์ž‘์—…์„ ์„ธ์ปจ๋”๋ฆฌ๋กœ ์ „์†กํ•˜๋„๋ก ์ฝ๊ธฐ ์„ค์ •์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ๊ธฐ ์„ค์ •์€ ์ฝ๊ธฐ ์„ค์ • ๋ชจ๋“œ์™€ ์„ ํƒ์ ์œผ๋กœ ํƒœ๊ทธ ์„ค์ • ๋ชฉ๋ก ,maxStalenessSeconds ์˜ต์…˜, ํ—ค์ง€๋œ ์ฝ๊ธฐ ์˜ต์…˜์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํ—ค์ง€๋œ ์ฝ๊ธฐ ์˜ต์…˜์€ primary ์ด์™ธ์˜ ์ฝ๊ธฐ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋Š” ์ฝ๊ธฐ๋ฅผ ์œ„ํ•ด ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ์—๋Š” ์ฝ๊ธฐ ์„ค์ • ๋ชจ๋“œ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์š”์•ฝ์ด ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

primary๊ฐ€ ์•„๋‹Œ ์ฝ๊ธฐ ์„ค์ • (read preference) ๋ชจ๋“œ๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํ—ค์ง€๋œ ์ฝ๊ธฐ(hedged read)๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ฝ๊ธฐ ์„ค์ • ๋ชจ๋“œ
์„ค๋ช…

๊ธฐ๋ณธ ๋ชจ๋“œ. ๋ชจ๋“  ์ž‘์—…์€ ํ˜„์žฌ ๋ณต์ œ๋ณธ ์„ธํŠธ ํ”„๋ผ์ด๋จธ๋ฆฌ์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค.

๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ์— ํฌํ•จ๋œ ์ฝ๊ธฐ ์ž‘์—…์€ primary๋กœ ์ฝ๊ธฐ ์„ค์ •์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ํŠธ๋žœ์žญ์…˜์˜ ๋ชจ๋“  ์ž‘์—…์€ ๋™์ผํ•œ ๋…ธ๋“œ๋กœ ๋ผ์šฐํŒ…๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ž‘์—…์€ ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ์—์„œ ์ฝ์ง€๋งŒ, ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์„ธ์ปจ๋”๋ฆฌ ๋…ธ๋“œ์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค.

์ฝ๊ธฐ ์„ค์ •(read preference) primaryPreferred๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํ—ค์ง€๋œ ์ฝ๊ธฐ(hedged read))๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ์ž‘์—…์€ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ์„ธ์ปจ๋”๋ฆฌ ๋ฉค๋ฒ„์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค.

์ฝ๊ธฐ ์„ค์ •(read preference) secondary๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํ—ค์ง€๋œ ์ฝ๊ธฐ(hedged read))๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—…์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ์„ธ์ปจ๋”๋ฆฌ ๋…ธ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ณต์ œ๋ณธ ์„ธํŠธ์— ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ๊ณ  ๋‹ค๋ฅธ ๋…ธ๋“œ๊ฐ€ ์—†๋‹ค๋ฉด, ์ž‘์—…์€ ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.

์ฝ๊ธฐ ์„ค์ •(read preference) secondaryPreferred๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํ—ค์ง€๋œ ์ฝ๊ธฐ(hedged read))๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—…์€ ์ง€์ •๋œ ์ง€์—ฐ ์‹œ๊ฐ„ ์ž„๊ณ„๊ฐ’์— ๋”ฐ๋ผ ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ„๋“  ์„ธ์ปจ๋”๋ฆฌ ๋ฉค๋ฒ„๋“  ์ƒ๊ด€์—†์ด ์ž„์˜์˜ ์ ๊ฒฉ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์—์„œ ์ฝ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•  ๋•Œ ๋‹ค์Œ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

์ฝ๊ธฐ ์„ค์ •(read preference) nearest๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํ—ค์ง€๋œ ์ฝ๊ธฐ(hedged read)๋ฅผ ์ง€์›ํ•˜๋ฉฐ ๊ธฐ๋ณธ ์„ค์ •์—์„œ ํ—ค์ง€๋œ ์ฝ๊ธฐ(hedged read) ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ฝ๊ธฐ ํ™˜๊ฒฝ์„ค์ • ๋ชจ๋“œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ์ฝ๊ธฐ ์„ค์ • ๋ชจ๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

  • 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๋ฅผ ์š”์ฒญํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด์ „ ํ”„๋ผ์ด๋จธ๋ฆฌ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์“ฐ๊ธฐ๋Š” ๊ฒฐ๊ตญ ๋กค๋ฐฑ๋ฉ๋‹ˆ๋‹ค.