๋ฌธ์„œ ๋ฉ”๋‰ด

๋ฌธ์„œ ํ™ˆ โ†’ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ โ†’ MongoDB ๋งค๋‰ด์–ผ

๊ธฐ๋ณธ MongoDB ์ฝ๊ธฐ ๊ณ ๋ ค/์“ฐ๊ธฐ ๊ณ ๋ ค

์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ

  • readConcern
  • ์“ฐ๊ธฐ ๊ณ ๋ ค
  • ์ธ๊ณผ์  ์ผ๊ด€์„ฑ ๋ณด์žฅ
์ฝ๊ธฐ/์“ฐ๊ธฐ ๊ณ ๋ ค ์ƒ์†
ํด๋ฆญํ•˜์—ฌ ํ™•๋Œ€

๊ธฐ๋ณธ ์ฝ๊ธฐ ๊ณ ๋ ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์šด์˜
๊ธฐ๋ณธ ์ฝ๊ธฐ ๊ณ ๋ ค
ํ”„๋ผ์ด๋จธ๋ฆฌ์— ๋Œ€ํ•ด ์ฝ๊ธฐ

"local"

์ฐธ๊ณ 

  • ์ด ์ฝ๊ธฐ ๊ณ ๋ ค๋Š” ๋กค๋ฐฑ๋  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด ์ฝ๊ธฐ ๊ณ ๋ ค๋Š” ์ธ๊ณผ์  ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„ธ์ปจ๋”๋ฆฌ์—์„œ ์ฝ๊ธฐ

"local"

์ฐธ๊ณ 

  • ์ด ์ฝ๊ธฐ ๊ณ ๋ ค๋Š” ๋กค๋ฐฑ๋  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด ์ฝ๊ธฐ ๊ณ ๋ ค๋Š” ์ธ๊ณผ์  ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ๊ธฐ ๊ณ ๋ ค์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ฝ๊ธฐ/์“ฐ๊ธฐ ๊ณ ๋ ค ์ƒ์†

MongoDB 5.0๋ถ€ํ„ฐ ์•”์‹œ์  ๊ธฐ๋ณธ ์“ฐ๊ธฐ ์šฐ๋ ค๋Š” w: majority์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ค‘์žฌ์ž๊ฐ€ ํฌํ•จ๋œ ๋ฐฐํฌ์˜ ๊ฒฝ์šฐ ํŠน๋ณ„ํžˆ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณต์ œ ์„ธํŠธ์˜ ํˆฌํ‘œ ๊ณผ๋ฐ˜์ˆ˜๋Š” 1์— ํˆฌํ‘œ ํšŒ์› ์ˆ˜์˜ ์ ˆ๋ฐ˜์„ ๋ฐ˜์˜ฌ๋ฆผํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ํˆฌํ‘œ ๊ตฌ์„ฑ์›์˜ ์ˆ˜๊ฐ€ ํˆฌํ‘œ ๊ณผ๋ฐ˜์ˆ˜๋ณด๋‹ค ๋งŽ์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์“ฐ๊ธฐ ๋ฌธ์ œ๋Š” { w: 1 } ์ž…๋‹ˆ๋‹ค.

  • ๋‹ค๋ฅธ ๋ชจ๋“  ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๊ธฐ๋ณธ ์“ฐ๊ธฐ ์šฐ๋ ค๋Š” { w: "majority" }์ž…๋‹ˆ๋‹ค.

ํŠนํžˆ MongoDB๋Š” ๋‹ค์Œ ๊ณต์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ์“ฐ๊ธฐ ๋ฌธ์ œ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

if [ (#arbiters > 0) AND (#non-arbiters <= majority(#voting-nodes)) ]
defaultWriteConcern = { w: 1 }
else
defaultWriteConcern = { w: "majority" }

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋ฐฐํฌ์™€ ํ•ด๋‹น ๊ธฐ๋ณธ ์“ฐ๊ธฐ ๋ฌธ์ œ๋ฅผ ๊ณ ๋ คํ•ด๋ณด์„ธ์š”.

๋น„์ค‘์žฌ์ธ
์ค‘์žฌ์ž
ํˆฌํ‘œ ๋…ธ๋“œ
๊ณผ๋ฐ˜์ˆ˜ ํˆฌํ‘œ ๋…ธ๋“œ
์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•”์‹œ์  ๊ธฐ๋ณธ ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
2
1
3
2
{ w: 1 }
4
1
5
3
{ w: "majority" }
  • ์ฒซ ๋ฒˆ์งธ ์˜ˆ์ œ์—์„œ๋Š”

    • ์ด 3๊ฐœ์˜ ํˆฌํ‘œ ๋…ธ๋“œ์—๋Š” 2๋ช…์˜ ๋น„์ค‘์žฌ์ž์™€ 1๋ช…์˜ ์ค‘์žฌ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ํˆฌํ‘œ ๋…ธ๋“œ์˜ ๋Œ€๋‹ค์ˆ˜(1 + 3์˜ ์ ˆ๋ฐ˜, ๋ฐ˜๋‚ด๋ฆผ)๋Š” 2์ž…๋‹ˆ๋‹ค.

    • ๋น„์ค‘์žฌ์ž ์ˆ˜(2)๋Š” ๋Œ€๋‹ค์ˆ˜์˜ ํˆฌํ‘œ ๋…ธ๋“œ(2)์™€ ๋™์ผํ•˜๋ฏ€๋กœ { w: 1 } ์˜ ์•”์‹œ์  ์“ฐ๊ธฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ๋‘ ๋ฒˆ์งธ ์˜ˆ์ œ์—์„œ๋Š”

    • ์ด 5๊ฐœ์˜ ํˆฌํ‘œ ๋…ธ๋“œ์—๋Š” 4๋ช…์˜ ๋น„์ค‘์žฌ์ž์™€ 1๋ช…์˜ ์ค‘์žฌ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ํˆฌํ‘œ ๋…ธ๋“œ์˜ ๋Œ€๋‹ค์ˆ˜(1 + 5์˜ ์ ˆ๋ฐ˜, ๋ฐ˜๋‚ด๋ฆผ)๋Š” 3์ž…๋‹ˆ๋‹ค.

    • ๋น„ ์ค‘์žฌ์ž (4) ์˜ ์ˆ˜๊ฐ€ ํˆฌํ‘œ ๋…ธ๋“œ (3) ์˜ ๊ณผ๋ฐ˜์ˆ˜๋ณด๋‹ค ๋งŽ์•„์„œ ์•”๋ฌต์ ์ธ ์“ฐ๊ธฐ ๋ฌธ์ œ๊ฐ€ { w: "majority" } ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์“ฐ๊ธฐ ๊ณ ๋ ค์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ธ๊ณผ์ ์œผ๋กœ ์ผ๊ด€๋œ ํด๋ผ์ด์–ธํŠธ ์„ธ์…˜์˜ ๊ฒฝ์šฐ, ํด๋ผ์ด์–ธํŠธ ์„ธ์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋งŒ ์ธ๊ณผ์  ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

  • ๊ด€๋ จ๋œ ์ฝ๊ธฐ ์ž‘์—…์€ "majority" ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๊ด€๋ จ ์“ฐ๊ธฐ ์ž‘์—…์€ "majority" ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

โ†ย ๊ธฐ๋ณธ MongoDB ํฌํŠธ