Docs Menu

์“ฐ๊ธฐ ๊ณ ๋ ค

์“ฐ๊ธฐ ๊ณ ๋ ค๋Š” ๋…๋ฆฝํ˜• mongod, ๋ณต์ œ๋ณธ ์„ธํŠธ ๋˜๋Š” ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ (write) ์ž‘์—…์— ๋Œ€ํ•ด MongoDB ์—์„œ ์š”์ฒญํ•˜๋Š” ์Šน์ธ ์ˆ˜์ค€์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ mongos ์ธ์Šคํ„ด์Šค๋Š” ์“ฐ๊ธฐ ๊ณ ๋ ค (write concern) ๊ณ ๋ ค๋ฅผ ์ƒค๋“œ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๋‹ค์ค‘ ๋ฌธ์„œ ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฝ์šฐ ๊ฐœ๋ณ„ ์ž‘์—… ์ˆ˜์ค€์ด ์•„๋‹Œ ํŠธ๋žœ์žญ์…˜ ์ˆ˜์ค€์—์„œ ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์—์„œ ๊ฐœ๋ณ„ ์“ฐ๊ธฐ ์ž‘์—…์˜ ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ ์„ธํŠธ์™€ ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ๋Š” ๊ธ€๋กœ๋ฒŒ ๊ธฐ๋ณธ ์“ฐ๊ธฐ ๊ณ ๋ ค ์„ค์ •์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์ ์ธ ์“ฐ๊ธฐ ๊ณ ๋ ค๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ์ž‘์—…์—๋Š” ๊ธ€๋กœ๋ฒŒ ๊ธฐ๋ณธ ์“ฐ๊ธฐ ๊ณ ๋ ค ์„ค์ •์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ setDefaultRWConcern์„ ์ฐธ์กฐํ•˜์„ธ์š”.

MongoDB Atlas์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ฐฐํฌ์„œ๋ฒ„์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๊ณ ๋ ค ์„ค์ •์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด MongoDB Atlas๋ฅผ ์‚ฌ์šฉํ•ด ํšŒ๋ณต ํƒ„๋ ฅ์„ฑ์„ ๊ฐ€์ง„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ•์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์“ฐ๊ธฐ ๊ณ ๋ ค์—๋Š” ๋‹ค์Œ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{ w: <value>, j: <boolean>, wtimeout: <number> }
  • w ์˜ต์…˜์€ ์“ฐ๊ธฐ ์ž‘์—…์ด ์ง€์ •๋œ ์ˆ˜์˜ mongod์ธ์Šคํ„ด์Šค๋กœ ์ „ํŒŒ๋˜์—ˆ๊ฑฐ๋‚˜ ์ง€์ •๋œ ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง„ mongod ์ธ์Šคํ„ด์Šค๋กœ ์ „ํŒŒ๋˜์—ˆ์Œ์„ ํ™•์ธ ์š”์ฒญํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ์“ฐ๊ธฐ ์ž‘์—…์ด ์˜จ๋””์Šคํฌ ์ €๋„์— ๊ธฐ๋ก๋˜์—ˆ๋‹ค๋Š” ํ™•์ธ์„ ์š”์ฒญํ•˜๋Š” j ์˜ต์…˜ ๋ฐ

  • ์“ฐ๊ธฐ ์ž‘์—…์ด ๋ฌด๊ธฐํ•œ ์ฐจ๋‹จ๋˜์ง€ ์•Š๋„๋ก ์‹œ๊ฐ„ ์ œํ•œ์„ ์ง€์ •ํ•˜๋Š” wtimeout ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

w ์˜ต์…˜์€ ์“ฐ๊ธฐ ์ž‘์—…์ด ์ง€์ •๋œ ๊ฐœ์ˆ˜์˜ mongod ์ธ์Šคํ„ด์Šค ๋˜๋Š” ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ mongod ์ธ์Šคํ„ด์Šค๋กœ ์ „ํŒŒ๋˜์—ˆ์Œ์„ ํ™•์ธํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์“ฐ๊ธฐ ๊ณ ๋ ค์— w ํ•„๋“œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, MongoDB๋Š” w ์˜ต์…˜์„ ๊ธฐ๋ณธ ์“ฐ๊ธฐ ๊ณ ๋ ค ์„ค์ •์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

setDefaultRWConcern์„ ์‚ฌ์šฉํ•ด ๊ธฐ๋ณธ ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฐ˜๋“œ์‹œ w ํ•„๋“œ ๊ฐ’์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

w ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ w: <value> ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ’
์„ค๋ช…
"majority"

๋ฐ์ดํ„ฐ ๋ณด์œ  ํˆฌํ‘œ ๋ฉค๋ฒ„์˜ ๊ณ„์‚ฐ๋œ ๊ณผ๋ฐ˜์ˆ˜๊ฐ€ ๋กœ์ปฌ oplog ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ง€์†์ ์œผ๋กœ ๊ธฐ๋กํ–ˆ์Œ์„ ํ™•์ธ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฉค๋ฒ„๋Š” ๋กœ์ปฌ oplog์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฝ์„ ๋•Œ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉ .

8.0 ๋ฒ„์ „ ๋ณ€๊ฒฝ ์‚ฌํ•ญ: MongoDB๋Š” ์ด์ „ ๋ฆด๋ฆฌ์Šค์—์„œ์ฒ˜๋Ÿผ ๋ฉค๋ฒ„๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์“ฐ๊ธฐ๋ฅผ ์Šน์ธํ•ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•œ ํˆฌํ‘œ ๋ฉค๋ฒ„๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ„ ๊ทธ๋ฆฌ๊ณ  members[n].votes๊ฐ€ 0๋ณด๋‹ค ํฐ ๋ชจ๋“  ์„ธ์ปจ๋”๋ฆฌ ๋ฉค๋ฒ„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ { w: "majority" } ์“ฐ๊ธฐ ํ›„ ์ฝ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

{ w: "majority" } ๋Œ€๋ถ€๋ถ„์˜ MongoDB ๋ฐฐํฌ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ๊ฐ’ ์“ฐ๊ธฐ ๊ณ ๋ ค (write concern) ์ž…๋‹ˆ๋‹ค. ์•”์‹œ์  ๊ธฐ๋ณธ ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์˜ˆ์‹œ ๋“ค์–ด 3 ๊ฐœ์˜ ํˆฌํ‘œ ๋ฉค๋ฒ„๊ฐ€ ์žˆ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ ํ”„๋ผ์ด๋จธ๋ฆฌ-์„ธ์ปจ๋”๋ฆฌ-์„ธ์ปจ๋”๋ฆฌ(PSS)๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”. ์ด ๋ณต์ œ๋ณธ ์„ธํŠธ ์˜ ๊ฒฝ์šฐ ๊ณ„์‚ฐ๋œ ๊ณผ๋ฐ˜์ˆ˜๋Š” 2์ด๋ฉฐ, ์“ฐ๊ธฐ (write) ํ”„๋ผ์ด๋จธ๋ฆฌ ์™€ ํ•˜๋‚˜์˜ ์„ธ์ปจ๋”๋ฆฌ oplog๋กœ ์ „ํŒŒ๋˜์–ด์•ผ ํด๋ผ์ด์–ธํŠธ ์— ์“ฐ๊ธฐ ๊ณ ๋ ค (write concern) ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€ members[n].votes ๋ณด๋‹คํฐ Hidden , ์ง€์—ฐ ๋ฐ ์šฐ์„  ์ˆœ์œ„ 0 0 ๋ฉค๋ฒ„๋Š” ์“ฐ๊ธฐ (write) ์ž‘์—…์„ "majority" ์Šน์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์—ฐ๋œ ์„ธ์ปจ๋”๋ฆฌ๋Š” ๊ตฌ์„ฑ๋œ secondaryDelaySecs๋ณด๋‹ค ์ด์ „์— ์™„๋ฃŒ๋œ ์“ฐ๊ธฐ ํ™•์ธ์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์“ฐ๊ธฐ (write) ์ž‘์—…์ด ํด๋ผ์ด์–ธํŠธ ์— ๋Œ€ํ•œ ์Šน์ธ๊ณผ ํ•จ๊ป˜ ๋ฐ˜ํ™˜๋œ w: "majority" ํ›„ ํด๋ผ์ด์–ธํŠธ readConcern์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์“ฐ๊ธฐ (write) ๊ฒฐ๊ณผ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."majority"

"majority" ๋‹จ์ผ ๋ฌธ์„œ ๋ฐ ๋‹ค์ค‘ ๋ฌธ์„œ ์“ฐ๊ธฐ์— ์“ฐ๊ธฐ ๊ณ ๋ ค (write concern) ์ง€์ •ํ•˜๊ณ  ์ž‘์—…์ด ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์ „์— ๊ณ„์‚ฐ๋œ ๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์˜ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์— ๋ณต์ œํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฒฐ๊ตญ ๋ณต์ œ๋˜๊ฑฐ๋‚˜ ๋กค๋ฐฑ๋ฉ๋‹ˆ๋‹ค. ๋ฅผ wtimeout ์ฐธ์กฐํ•˜์„ธ์š”.

์ธ์Šคํ„ด์Šค๊ฐ€ mongod ์“ฐ๊ธฐ (write) ์Šน์ธํ•˜๋Š” ๊ฒฝ์šฐ ์Šน์ธ ๋™์ž‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.

<number>

์“ฐ๊ธฐ ์ž‘์—…์ด ์ง€์ •๋œ ์ˆ˜์˜ mongod ์ธ์Šคํ„ด์Šค์— ์ „ํŒŒ๋˜์—ˆ์Œ์„ ํ™•์ธ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ:

w: 1

์“ฐ๊ธฐ ์ž‘์—…์ด ๋…๋ฆฝํ˜• mongod ๋˜๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ํ”„๋ผ์ด๋จธ๋ฆฌ๋กœ ์ „ํŒŒ๋˜์—ˆ์Œ์„ ํ™•์ธ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์“ฐ๊ธฐ ์ž‘์—…์ด ์„ธ์ปจ๋”๋ฆฌ์— ๋ณต์ œ๋˜๊ธฐ ์ „์— ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๊ฐ•๋“ฑ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๋กค๋ฐฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฝ๊ณ : ์“ฐ๊ธฐ (write){ w: 1 } ์ž‘์—…์—์„œ ์“ฐ๊ธฐ ๊ณ ๋ ค (write concern) ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์“ฐ๊ธฐ (write) ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „์— ํ”„๋ผ์ด๋จธ๋ฆฌ ๋‹ค์‹œ ์‹œ์ž‘๋˜๋ฉด ๋กค๋ฐฑ ๋””๋ ‰ํ† ๋ฆฌ oplog ํ™€ (oplog hole) ์ดํ›„์— ์ œ์ถœ๋œ ์“ฐ๊ธฐ๊ฐ€ ์ œ์™ธ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

w: 0

์“ฐ๊ธฐ ๊ณ ๋ ค์— ๋Œ€ํ•œ ํ™•์ธ์„ ์š”์ฒญํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ w: 0์€ ์†Œ์ผ“ ์˜ˆ์™ธ์™€ ๋„คํŠธ์›Œํ‚น ์˜ค๋ฅ˜์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์“ฐ๊ธฐ ์ž‘์—…์ด ์„ธ์ปจ๋”๋ฆฌ์— ๋ณต์ œ๋˜๊ธฐ ์ „์— ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ๊ฐ•๋“ฑ๋˜์—ˆ์„ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๋กค๋ฐฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ ์ง€์ •ํ–ˆ์ง€๋งŒ w: 0 j: true mongod ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ ๋…๋ฆฝํ˜• ๋˜๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ ์˜ ํ”„๋ผ์ด๋จธ๋ฆฌ ์—์„œ ์Šน์ธ์„ ์š”์ฒญ ๋ฐ j: true ๊ฐ€ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

w ~ ๊ฐ’์ด 1๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ, ์ง€์ •๋œ ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋ผ์ด๋จธ๋ฆฌ์™€ ํ•„์š”ํ•œ ๋งŒํผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ์„ธ์ปจ๋”๋ฆฌ๋กœ๋ถ€ํ„ฐ ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์“ฐ๊ธฐ ๊ณ ๋ ค ์ž„๊ณ„๊ฐ’์„ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด ์„ธ์ปจ๋”๋ฆฌ๊ฐ€ ๊ผญ ํˆฌํ‘œ ๊ตฌ์„ฑ์›์ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 1๊ฐœ์˜ ํ”„๋ผ์ด๋จธ๋ฆฌ์™€ 2๊ฐœ์˜ ์„ธ์ปจ๋”๋ฆฌ๊ฐ€ ์žˆ๋Š” 3๊ฐœ์˜ ๋ฉค๋ฒ„๋ฅผ ๊ฐ€์ง„ ๋ณต์ œ๋ณธ ์„ธํŠธ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. w: 2๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด ํ”„๋ผ์ด๋จธ๋ฆฌ์™€ 2๊ฐœ์˜ ์„ธ์ปจ๋”๋ฆฌ ์ค‘ ํ•˜๋‚˜๋กœ๋ถ€ํ„ฐ ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. w: 3์„ ์ง€์ •ํ•˜๋ฉด ํ”„๋ผ์ด๋จธ๋ฆฌ์™€ ๋ชจ๋“  ์„ธ์ปจ๋”๋ฆฌ์˜ ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Hidden, ์ง€์—ฐ ๋ฐ ์šฐ์„  ์ˆœ์œ„ 0 ๋ฉค๋ฒ„๋Š” ์“ฐ๊ธฐ (write) ์ž‘์—…์„ w: <number> ์Šน์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์—ฐ๋œ ์„ธ์ปจ๋”๋ฆฌ๋Š” ๊ตฌ์„ฑ๋œ secondaryDelaySecs๋ณด๋‹ค ์ด์ „์— ์™„๋ฃŒ๋œ ์“ฐ๊ธฐ ํ™•์ธ์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค๊ฐ€ mongod ์“ฐ๊ธฐ (write) ์Šน์ธํ•˜๋Š” ๊ฒฝ์šฐ ์Šน์ธ ๋™์ž‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.

<custom write concern name>

์“ฐ๊ธฐ ์ž‘์—…์ด settings.getLastErrorModes์— ์ •์˜๋œ ์‚ฌ์šฉ์ž ์ง€์ • ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ถฉ์กฑํ•˜๋Š” tagged ๋ฉค๋ฒ„์— ์ „ํŒŒ๋˜์—ˆ์Œ์„ ํ™•์ธ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ๋ฉ€ํ‹ฐ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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

์ธ์Šคํ„ด์Šค๊ฐ€ mongod ์“ฐ๊ธฐ (write) ์Šน์ธํ•˜๋Š” ๊ฒฝ์šฐ ์Šน์ธ ๋™์ž‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.

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

j ์˜ต์…˜์€ MongoDB์— ์“ฐ๊ธฐ ์ž‘์—…์ด ์˜จ๋””์Šคํฌ ์ €๋„์— ์ž‘์„ฑ๋˜์—ˆ์Œ์„ ํ™•์ธ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

j

์ธ j: true ๊ฒฝ์šฐ,mongod w: ์— ์ง€์ •๋œ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋””์Šคํฌ ์ €๋„ ์— ๊ธฐ๋กํ–ˆ์Œ์„ ํ™•์ธ<value> ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. j: true ๊ทธ ์ž์ฒด๋กœ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ ํ”„๋ผ์ด๋จธ๋ฆฌ ํŽ˜์ผ์˜ค๋ฒ„ ๋กœ ์ธํ•ด ์“ฐ๊ธฐ (write) ๋กค๋ฐฑ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

j: true ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด MongoDB๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ๋ฅผ ํฌํ•จํ•˜์—ฌ ์š”์ฒญ๋œ ์ˆ˜์˜ ๋ฉค๋ฒ„๊ฐ€ ์ €๋„์— ์“ฐ๊ธฐ๋ฅผ ์™„๋ฃŒํ•œ ํ›„์—๋งŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ๋ณต์ œ๋ณธ j: true ์„ธํŠธ ์˜ ์“ฐ๊ธฐ ๊ณ ๋ ค (write concern)๋ฅผ<value> w: ์“ฐ๊ธฐ ๊ณ ๋ ค (write concern)์™€ ๊ด€๊ณ„์—†์ด ์ €๋„์— ์“ฐ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

  • ์ €๋„๋ง ์—†์ด ์‹คํ–‰๋˜๋Š” mongod ์ธ์Šคํ„ด์Šค์— j: true๋ฅผ ํฌํ•จํ•˜๋Š” ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ง€์ •ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ์ €๋„๋ง์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ w: "majority"๋Š” j: true์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. writeConcernMajorityJournalDefault ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์„ ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ๋™์ž‘์ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ™•์ธ ๋™์ž‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  • j: true๋ฅผ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์•”์‹œํ•˜๋Š” ์“ฐ๊ธฐ ๊ณ ๋ ค๋Š” ์ฆ‰์‹œ ์ €๋„ ๋™๊ธฐํ™”๋ฅผ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ €๋„๋ง ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ์˜ต์…˜์€ ์“ฐ๊ธฐ ๊ณ ๋ ค์˜ ์‹œ๊ฐ„์ œํ•œ์„ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. wtimeout์€ w๊ฐ€ 1๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

wtimeout ์€ ํ•„์š”ํ•œ ์“ฐ๊ธฐ ๊ณ ๋ ค๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ์„ฑ๊ณตํ•˜๋”๋ผ๋„ ์ง€์ •๋œ ์ œํ•œ ์‹œ๊ฐ„์ด ๊ฒฝ๊ณผํ•œ ํ›„์— ์“ฐ๊ธฐ ์ž‘์—…์„ ์“ฐ๊ธฐ ๊ณ ๋ ค ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์“ฐ๊ธฐ ์ž‘์—…์ด ๋ฐ˜ํ™˜๋˜๋ฉด MongoDB๋Š” ์“ฐ๊ธฐ ๊ณ ๋ ค๊ฐ€ wtimeout ์‹œ๊ฐ„ ์ œํ•œ์„ ์ดˆ๊ณผํ•˜๊ธฐ ์ „์— ์ˆ˜ํ–‰๋œ ์„ฑ๊ณต์ ์ธ ๋ฐ์ดํ„ฐ ์ˆ˜์ •์„ ๋˜๋Œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

wtimeout ์˜ต์…˜์„ ์ง€์ •ํ•˜์ง€ ์•Š์•˜๊ณ  ์“ฐ๊ธฐ ๊ณ ๋ ค ์ˆ˜์ค€์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ, ์“ฐ๊ธฐ ์ž‘์—…์€ ๋ฌด๊ธฐํ•œ์œผ๋กœ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. wtimeout ๊ฐ’์„ 0์œผ๋กœ ์ง€์ •ํ•˜๋ฉด wtimeout ์˜ต์…˜์ด ์—†๋Š” ์“ฐ๊ธฐ ๊ณ ๋ ค์™€ ๋™์ผํ•ด์ง‘๋‹ˆ๋‹ค.

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" }

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

Non-Arbiters
์ค‘์žฌ์ž
ํˆฌํ‘œ ๋…ธ๋“œ
๊ณผ๋ฐ˜์ˆ˜ ํˆฌํ‘œ ๋…ธ๋“œ
์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•”์‹œ์  ๊ธฐ๋ณธ ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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" } ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ DDL(๋ฐ์ดํ„ฐ ์ •์˜ ์–ธ์–ด) ์ž‘์—…์€ ์“ฐ๊ธฐ ๊ณ ๋ ค "majority"๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ ์ž‘์—…์€ ์ œ๊ณต๋œ ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ "majority"๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.

w ์˜ต์…˜๊ณผ j ์˜ต์…˜์€ mongod ์ธ์Šคํ„ด์Šค๊ฐ€ ์“ฐ๊ธฐ ์—ฐ์‚ฐ์„ ์Šน์ธํ•˜๋Š” ์‹œ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๋…๋ฆฝํ˜• mongod๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์“ฐ๊ธฐ๋ฅผ ์ ์šฉํ•˜๊ฑฐ๋‚˜ ๋””์Šคํฌ ์ €๋„์— ์“ฐ๊ธฐ๋ฅผ ์™„๋ฃŒํ•œ ํ›„ ์“ฐ๊ธฐ ์ž‘์—…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ํ‘œ์—๋Š” ๋…๋ฆฝํ˜•์˜ ํ™•์ธ ๋™์ž‘๊ณผ ๊ด€๋ จ๋œ ์“ฐ๊ธฐ ๊ณ ๋ ค๊ฐ€ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

j ๋Š” ์ง€์ •๋˜์ง€ ์•Š์Œ
j:true
j:false

w: 1

inMemory

On-disk journal

inMemory

w: "majority"

์ €๋„๋ง์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์˜จ๋””์Šคํฌ ์ €๋„

On-disk journal

inMemory

์ฐธ๊ณ 

writeConcernMajorityJournalDefault๋ฅผ false๋กœ ์„ค์ •ํ•˜๋ฉด MongoDB๋Š” w: "majority" ์“ฐ๊ธฐ๊ฐ€ ๋””์Šคํฌ ์ €๋„์— ์ž‘์„ฑ๋˜๋Š” ๊ฒƒ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์“ฐ๊ธฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฃผ์–ด์ง„ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋…ธ๋“œ ๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์ด ์ผ์‹œ์ ์œผ๋กœ ์†์‹ค๋œ ๊ฒฝ์šฐ(์ถฉ๋Œ, ์žฌ์‹œ์ž‘ ๋“ฑ), "majority" ์“ฐ๊ธฐ ์ž‘์—…์ด ๋กค๋ฐฑ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

w์— ์ง€์ •๋œ ๊ฐ’์€ ์„ฑ๊ณต์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์ „์— ์“ฐ๊ธฐ๋ฅผ ์Šน์ธํ•ด์•ผ ํ•˜๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ ๋…ธ๋“œ์˜ ์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ ๊ฒฉ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋…ธ๋“œ์— ๋Œ€ํ•ด j ์˜ต์…˜์€ ๋…ธ๋“œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์“ฐ๊ธฐ ์—ฐ์‚ฐ์„ ์ ์šฉํ•œ ํ›„ ์“ฐ๊ธฐ๋ฅผ ์Šน์ธํ• ์ง€, ์•„๋‹ˆ๋ฉด ์˜จ๋””์Šคํฌ ์ €๋„์— ์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„ ์“ฐ๊ธฐ๋ฅผ ์Šน์ธํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

w: "majority"

๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋ฐ์ดํ„ฐ ๋ณด์œ  ํˆฌํ‘œ ๋ฉค๋ฒ„๋Š” ๋ชจ๋‘ "majority" ์“ฐ๊ธฐ ์ž‘์—…์˜ ์“ฐ๊ธฐ ์Šน์ธ์— ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ์—๋Š” ๋ฉค๋ฒ„๊ฐ€ j ๊ฐ’์— ๋”ฐ๋ผ ์“ฐ๊ธฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์ ์ด ์ œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

j ๋Š” ์ง€์ •๋˜์ง€ ์•Š์Œ

ํ™•์ธ์€ writeConcernMajorityJournalDefault์˜ ๊ฐ’์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

  • true์ธ ๊ฒฝ์šฐ, ํ™•์ธ์—๋Š” ์˜จ๋””์Šคํฌ ์ €๋„์— ์ˆ˜ํ–‰๋œ ์“ฐ๊ธฐ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(j: true).

    writeConcernMajorityJournalDefault ๊ธฐ๋ณธ๊ฐ’ true

  • false์ธ ๊ฒฝ์šฐ, ํ™•์ธ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ˆ˜ํ–‰๋œ ์“ฐ๊ธฐ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(j: false).

j: true

ํ™•์ธ์—๋Š” ์˜จ๋””์Šคํฌ ์ €๋„์— ์ˆ˜ํ–‰๋œ ์“ฐ๊ธฐ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

j: false

ํ™•์ธ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ˆ˜ํ–‰๋œ ์“ฐ๊ธฐ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ j: false ์ด ์„ค์ •ํ•˜๋‹ค ๊ฒฝ์šฐ ๋””์Šคํฌ ์ƒ์˜ ์ €๋„ ์— ์ž‘์—…์„ ์“ธ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ writeConcernMajorityJournalDefault: true ์ด ์„ค์ •ํ•˜๋‹ค ์žˆ์œผ๋ฉด j: false ์ด ์„ค์ •ํ•˜๋‹ค ์žˆ๋”๋ผ๋„ ์ €๋„ ์— ์ž‘์—…์„ ๊ธฐ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

j: false ๋ฐ writeConcernMajorityJournalDefault: true ์ด ์„ค์ •ํ•˜๋‹ค ๋˜๋ฉด ์“ฐ๊ธฐ (write) ์ž‘์—…์ด ์ €๋„ ์— ๋น„๋™๊ธฐ์ ์œผ๋กœ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

  • w: majority ์ด ์„ค์ •ํ•˜๋‹ค ์“ฐ๊ธฐ๋Š” ์ €๋„ ์ด ๋””์Šคํฌ๋กœ ํ”Œ๋Ÿฌ์‹œ๋  ๋•Œ๊นŒ์ง€ ์™„๋ฃŒ๋œ ๊ฒƒ์œผ๋กœ ํ™•์ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • w: majority ์“ฐ๊ธฐ๋Š” j ์„ค์ •์— ๊ด€๊ณ„์—†์ด "majority" ์ฝ๊ธฐ ์Šค๋ƒ…์ƒท ์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ด๋Š” writeConcernMajorityJournalDefault: true ๋กœ ์„ค์ •ํ•˜๋‹ค ๋˜๋ฉด ๋Œ€๋‹ค์ˆ˜ ์ฝ๊ธฐ ์Šค๋ƒ…์ƒท ์ด ๋Œ€๋ถ€๋ถ„์˜ ์ €๋„๋ง๋œ ์“ฐ๊ธฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  • ์“ฐ๊ธฐ (write) ์ž‘์—…์ด ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์— w: majority ์Šน์ธ๊ณผ ํ•จ๊ป˜ ๋ฐ˜ํ™˜๋œ ํ›„ majority ์ฝ๊ธฐ ๊ณ ๋ ค (read concern) ๊ฐ€ ์„ค์ •ํ•˜๋‹ค ์žˆ์œผ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—์„œ ์“ฐ๊ธฐ (write) ๊ฒฐ๊ณผ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋™์ž‘์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ w: "majority" ๋™์ž‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.

w: <number>

๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋ชจ๋“  ๋ฉค๋ฒ„๋Š” w: <number> ์“ฐ๊ธฐ ์ž‘์—…์˜ ์“ฐ๊ธฐ ํ™•์ธ์— ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ์—๋Š” ๋ฉค๋ฒ„๊ฐ€ j ๊ฐ’์— ๋”ฐ๋ผ ์“ฐ๊ธฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์ ์ด ์ œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

j ๋Š” ์ง€์ •๋˜์ง€ ์•Š์Œ

ํ™•์ธ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ˆ˜ํ–‰๋œ ์“ฐ๊ธฐ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(j: false).

j: true

ํ™•์ธ์—๋Š” ์˜จ๋””์Šคํฌ ์ €๋„์— ์ˆ˜ํ–‰๋œ ์“ฐ๊ธฐ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

j: false

ํ™•์ธ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ˆ˜ํ–‰๋œ ์“ฐ๊ธฐ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

์ˆจ๊ฒจ์ง€๊ฑฐ๋‚˜, ์ง€์—ฐ๋˜๊ฑฐ๋‚˜, ์šฐ์„ ์ˆœ์œ„ 0์ธ ๋ฉค๋ฒ„๋Š” w: <number> ์“ฐ๊ธฐ ์ž‘์—…์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์—ฐ๋œ ์„ธ์ปจ๋”๋ฆฌ๋Š” ๊ตฌ์„ฑ๋œ secondaryDelaySecs๋ณด๋‹ค ์ด์ „์— ์™„๋ฃŒ๋œ ์“ฐ๊ธฐ ํ™•์ธ์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

MongoDB 8.0, { w: "majority" } ์“ฐ๊ธฐ๋Š” ๋Œ€๋‹ค์ˆ˜์˜ ๋ฐ์ดํ„ฐ ๋ณด์œ  ๋ฉค๋ฒ„๊ฐ€ oplog ํ•ญ๋ชฉ์„ ์•ˆ์ •์ ์œผ๋กœ ์ž‘์„ฑํ•œ ํ›„ ์Šน์ธ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ, ๋ฉค๋ฒ„๋“ค์€ ๋กœ์ปฌ oplog์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ฝ์œผ๋ฉด์„œ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฆด๋ฆฌ์Šค์—์„œ MongoDB๋Š” ๋ฉค๋ฒ„๊ฐ€ ์“ฐ๊ธฐ๋ฅผ ์ ์šฉํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์Šน์ธ์„ ๋ฐ˜ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

{ w: "majority" } ์“ฐ๊ธฐ ์งํ›„์— ์„ธ์ปจ๋”๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ๋Š” ์Šน์ธ์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์„ธ์ปจ๋”๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์“ฐ๊ธฐ์—์„œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๊ธฐ ์ „์— ์ปฌ๋ ‰์…˜์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„ธ์ปจ๋”๋ฆฌ์—์„œ ์ฝ๊ณ  { w: "majority" } ์“ฐ๊ธฐ์—์„œ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์— ์ฆ‰์‹œ ์•ก์„ธ์Šคํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์ธ๊ณผ์  ์ผ๊ด€์„ฑ ์„ธ์…˜์—์„œ ์‹คํ–‰ํ•˜์„ธ์š”.

ํ”„๋ผ์ด๋จธ๋ฆฌ์—์„œ ์ž์‹ ์˜ ์“ฐ๊ธฐ๋ฅผ ์ฝ์œผ๋ ค๋ฉด, ์ผ๋ฐ˜์ ์œผ๋กœ "majority" ์ฝ๊ธฐ ๊ณ ๋ ค(read concern)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  { w: "majority" } ์“ฐ๊ธฐ ๊ณ ๋ ค(write concern)๋กœ ์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

{ w: n } ์“ฐ๊ธฐ ๊ณ ๋ ค(write concern)๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ n์ด ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์˜ ๊ณ„์‚ฐ๋œ ๊ณผ๋ฐ˜์ˆ˜๋ณด๋‹ค ํฌ๊ณ  ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๊ธฐ๋ณธ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์“ฐ๊ธฐ ๊ณ ๋ ค "j" ์˜ต์…˜์ด ์ €๋„์— ๋Œ€ํ•œ ์“ฐ๊ธฐ๋ฅผ ์Šน์ธํ•˜๋„๋ก ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ด๋Š” "majority" ์ฝ๊ธฐ ๊ณ ๋ ค(read concern)๊ฐ€ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๊ณผ๋ฐ˜์ˆ˜ ๋…ธ๋“œ์—์„œ ์ง€์†ํ˜• ์—…๋ฐ์ดํŠธ๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๊ธฐ๋ณธ ํด๋Ÿฌ์Šคํ„ฐ ์„ค์ •๊ณผ ์ €๋„๋ง ์—†์ด { w: n } ์“ฐ๊ธฐ ๊ณ ๋ ค๋กœ ์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  n์ด ๊ณ„์‚ฐ๋œ ๊ณผ๋ฐ˜์ˆ˜๋ณด๋‹ค ํฌ๋ฉด, ๋Œ€๋ถ€๋ถ„์˜ ๋…ธ๋“œ์—์„œ ์“ฐ๊ธฐ๊ฐ€ ์ง€์†ํ˜•์œผ๋กœ ์ €์žฅ๋˜๊ธฐ ์ „์— ์“ฐ๊ธฐ ์Šน์ธ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

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

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ธ๊ณผ์  ์ผ๊ด€์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  • writeConcernMajorityJournalDefault๋ฅผ false๋กœ ์„ค์ •ํ•˜๋ฉด MongoDB๋Š” w: "majority" ์“ฐ๊ธฐ๊ฐ€ ๋””์Šคํฌ ์ €๋„์— ์ž‘์„ฑ๋˜๋Š” ๊ฒƒ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์“ฐ๊ธฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฃผ์–ด์ง„ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋…ธ๋“œ ๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์ด ์ผ์‹œ์ ์œผ๋กœ ์†์‹ค๋œ ๊ฒฝ์šฐ(์ถฉ๋Œ, ์žฌ์‹œ์ž‘ ๋“ฑ), "majority" ์“ฐ๊ธฐ ์ž‘์—…์ด ๋กค๋ฐฑ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • members[n].votes๊ฐ€ 0๋ณด๋‹ค ํฌ๊ณ  ์ˆจ๊ฒจ์ง€๊ฑฐ๋‚˜, ์ง€์—ฐ๋˜๊ฑฐ๋‚˜, ์šฐ์„ ์ˆœ์œ„๊ฐ€ 0์ธ ๋ฉค๋ฒ„๋Š” "majority" ์“ฐ๊ธฐ ์ž‘์—…์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์ง€์—ฐ๋œ ์„ธ์ปจ๋”๋ฆฌ๋Š” ๊ตฌ์„ฑ๋œ secondaryDelaySecs๋ณด๋‹ค ์ด์ „์— ์™„๋ฃŒ๋œ ์“ฐ๊ธฐ ํ™•์ธ์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • MongoDB 5.0๋ถ€ํ„ฐ STARTUP2 ์ƒํƒœ์˜ ๋ณต์ œ๋ณธ ์ง‘ํ•ฉ ๋ฉค๋ฒ„๋Š” ์“ฐ๊ธฐ ๊ณผ๋ฐ˜์ˆ˜์— ์ฐธ์—ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. MongoDB๋Š” ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ปฌ๋ ‰์…˜์—์„œ์˜ ์ž‘์—…์— ๋Œ€ํ•ด ๊ตฌ์„ฑ๋œ ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ž๋™์œผ๋กœ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

ํŒ

rs.status()๋Š” ๊ณ„์‚ฐ๋œ ๊ณผ๋ฐ˜์ˆ˜๊ฐ€ ํฌํ•จ๋œ writeMajorityCount ํ•„๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์“ฐ๊ธฐ ๊ณ ๋ ค์˜ ๊ณผ๋ฐ˜์ˆ˜ "majority"๋Š” ๋‹ค์Œ ๊ฐ’ ์ค‘ ๋” ์ž‘์€ ๊ฐ’์œผ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ํˆฌํ‘œ ๋ฉค๋ฒ„์˜ ๊ณผ๋ฐ˜์ˆ˜(์ค‘์žฌ์ž ํฌํ•จ)์™€

  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•œ ๋ชจ๋“  ํˆฌํ‘œ ๋ฉค๋ฒ„ ์ˆ˜์˜ ๋น„๊ต์ž…๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

๊ณ„์‚ฐ๋œ ๊ณผ๋ฐ˜์ˆ˜๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ๋ชจ๋“  ํˆฌํ‘œ ๊ตฌ์„ฑ์›์˜ ์ˆ˜์™€ ๋™์ผํ•œ ์ƒํ™ฉ(3๊ฐœ์˜ ๊ตฌ์„ฑ์›์„ ๊ฐ€์ง„ ํ”„๋ผ์ด๋จธ๋ฆฌ-์„ธ์ปจ๋”๋ฆฌ-์ค‘์žฌ์ž ๋ฐฐํฌ์—์„œ ๋“ฑ)์—์„œ, ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ํˆฌํ‘œ ๊ตฌ์„ฑ์›์ด ๋‹ค์šด๋˜๊ฑฐ๋‚˜ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์“ฐ๊ธฐ ๊ณ ๋ ค "majority"(์€)๋Š” ํƒ€์ž„์•„์›ƒ๋˜๊ฑฐ๋‚˜ ์ธ์ •๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ค‘์žฌ์ž ๋Œ€์‹  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ํˆฌํ‘œ ๊ตฌ์„ฑ์›์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”.

  • 3๊ฐœ์˜ ํˆฌํ‘œ ๊ตฌ์„ฑ์›, P-S-S(ํ”„๋ผ์ด๋จธ๋ฆฌ-์„ธ์ปจ๋”๋ฆฌ-์„ธ์ปจ๋”๋ฆฌ)๊ฐ€ ์žˆ๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ:

    • ๋ชจ๋“  ํˆฌํ‘œ ๋ฉค๋ฒ„์˜ ๊ณผ๋ฐ˜์ˆ˜๋Š” 2๋ช…์ž…๋‹ˆ๋‹ค.

    • ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋ณด์œ  ํˆฌํ‘œ ๋ฉค๋ฒ„์˜ ์ˆ˜๋Š” 3๋ช…์ž…๋‹ˆ๋‹ค.

    The calculated majority is 2, the minimum of 2 and 3. The write must propagate to the primary and one of the secondaries to acknowledge the write concern "majority" to the client.
  • ๋ณต์ œ๋ณธ ์„ธํŠธ์—๋Š” ํˆฌํ‘œ ๋ฉค๋ฒ„ 3๋ช…์ด ์žˆ์œผ๋ฉฐ, ํ”„๋ผ์ด๋จธ๋ฆฌ-์„ธ์ปจ๋”๋ฆฌ-์ค‘์žฌ์ž(P-S-A)์ž…๋‹ˆ๋‹ค.

    • ๋ชจ๋“  ํˆฌํ‘œ ๋ฉค๋ฒ„์˜ ๊ณผ๋ฐ˜์ˆ˜๋Š” 2๋ช…์ž…๋‹ˆ๋‹ค.

    • ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•œ ๋ชจ๋“  ํˆฌํ‘œ ๋ฉค๋ฒ„ ์ˆ˜๋Š” 2์ž…๋‹ˆ๋‹ค.

    The calculated majority is 2, the minimum of 2 and 2. Since the write can only be applied to data-bearing members, the write must propagate to the primary and the secondary to acknowledge the write concern "majority" to the client.

    ํŒ

    ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•œ ๋ชจ๋“  ํˆฌํ‘œ๊ถŒ ์žˆ๋Š” ๋ฉค๋ฒ„๊ฐ€ ์“ฐ๊ธฐ๋ฅผ ์Šน์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋Š” (P-S-A) ๋˜๋Š” ๊ธฐํƒ€ ํ† ํด๋กœ์ง€์— "majority" ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”. "majority" ์“ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‚ด๊ตฌ์„ฑ์ด ๋ณด์žฅ๋˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๊ณ ๊ฐ์€ ๋Œ€์‹  P-S-S์™€ ๊ฐ™์ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋ณด์œ  ํˆฌํ‘œ ๋ฉค๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ํ† ํด๋กœ์ง€๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

๋ณต์ œ๋ณธ ์„ธํŠธ์— ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ค‘์žฌ์ž๋ฅผ ๋ฐฐ์น˜ํ•˜์ง€ ๋งˆ์„ธ์š”. ๋ณต์ˆ˜ ์ค‘์žฌ์ž ๊ด€๋ จ ์šฐ๋ ค ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ธฐ์กด ๋ ˆํ”Œ๋ฆฌ์นด ์„ธํŠธ์— ์ค‘์žฌ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜์„ธ์š”:

  • ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณต์ œ๋ณธ ์„ธํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•˜๋Š” ๋ฉค๋ฒ„๊ฐ€ ๋‘ ๊ฐœ ์ดํ•˜์ธ ๊ฒฝ์šฐ ๋จผ์ € ๋ณต์ œ๋ณธ ์„ธํŠธ์— ๋Œ€ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด ์“ฐ๊ธฐ ์šฐ๋ ค๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ค‘์žฌ์ž๋กœ ์ƒˆ๋กœ์šด ๋ณต์ œ ์„ธํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด์˜ ์“ฐ๊ธฐ ๊ณ ๋ ค ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

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

MongoDB๋Š” ํŠน์ • ์“ฐ๊ธฐ ๊ณ ๋ ค์˜ ์›์ธ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์“ฐ๊ธฐ ๊ณ ๋ ค provenance๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. provenance๋Š” getLastError ๋ฉ”ํŠธ๋ฆญ, ์ฝ๊ธฐ ๊ณ ๋ ค ์˜ค๋ฅ˜ ๊ฐ์ฒด, MongoDB ๋กœ๊ทธ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ๋Š” ๊ฐ€๋Šฅํ•œ ์“ฐ๊ธฐ ๊ณ ๋ ค provenance ์˜ ๊ฐ’๊ณผ ๊ทธ ์ค‘์š”์„ฑ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ถœ์ฒ˜
์„ค๋ช…

clientSupplied

์“ฐ๊ธฐ ์šฐ๋ ค ์‚ฌํ•ญ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ง€์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

customDefault

์“ฐ๊ธฐ ๊ณ ๋ ค๋Š” ์‚ฌ์šฉ์ž ์ •์˜๋œ ๊ธฐ๋ณธ๊ฐ’์—์„œ ๋น„๋กฏ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. setDefaultRWConcern์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

getLastErrorDefaults

์“ฐ๊ธฐ ๊ณ ๋ ค๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ settings.getLastErrorDefaults ํ•„๋“œ์—์„œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

implicitDefault

์“ฐ๊ธฐ ๊ณ ๋ ค๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์“ฐ๊ธฐ ๊ณ ๋ ค ์‚ฌ์–‘์ด ์—†๋Š” ์ƒํƒœ์—์„œ ์„œ๋ฒ„์—์„œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฟผ๋Ÿผ ์ปค๋ฐ‹๊ณผ ์“ฐ๊ธฐ ๊ณ ๋ ค(write concern) ๊ฐ„์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ค‘์š”ํ•œ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ธ๋ฑ์Šค ๋นŒ๋“œ๋Š” ์ฟผ๋Ÿผ ์ปค๋ฐ‹ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ์“ฐ๊ธฐ ์ž‘์—…์€ ์“ฐ๊ธฐ ๊ณ ๋ ค ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ๊ฐ ๋ฐ์ดํ„ฐ ๋ณด์œ  ๋…ธ๋“œ๋Š” ํˆฌํ‘œ๊ถŒ์„ ๊ฐ€์ง„ ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.

์ปค๋ฐ‹ ์ฟผ๋Ÿผ์€ ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ„๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ช‡ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋ณด์œ  ํˆฌํ‘œ ๋ฉค๋ฒ„ ๋˜๋Š” ์–ด๋–ค ํˆฌํ‘œ ๋ฉค๋ฒ„๊ฐ€ ๋™์‹œ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์ปค๋ฐ‹ํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ํ”„๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ„๊ฐ€ ์ปค๋ฐ‹์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์“ฐ๊ธฐ ๊ณ ๋ ค๋Š” ์“ฐ๊ธฐ ์ž‘์—…์ด ์ง€์ •๋œ ์ˆ˜์˜ ์ธ์Šคํ„ด์Šค๋กœ ์ „ํŒŒ๋˜์—ˆ๋‹ค๋Š” ํ™•์ธ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค.

8.0 ๋ฒ„์ „ ๋ณ€๊ฒฝ ์‚ฌํ•ญ: ์ปค๋ฐ‹ ์ฟผ๋Ÿผ์€ ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „์— ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์™„๋ฃŒํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๋Š” ๋…ธ๋“œ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์ปค๋ฐ‹ํ•œ ๊ฒฝ์šฐ ์“ฐ๊ธฐ ๊ณ ๋ ค๋Š” ๋ช…๋ น์ด ์„ฑ๊ณต์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์ „์— ์ธ๋ฑ์Šค ๋นŒ๋“œ oplog ํ•ญ๋ชฉ์„ ๋ณต์ œํ•ด์•ผ ํ•˜๋Š” ๋…ธ๋“œ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์ปค๋ฐ‹ํ–ˆ์„ ๋•Œ ์“ฐ๊ธฐ ๊ณ ๋ ค๊ฐ€ ๋ช…๋ น์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐ˜ํ™˜๋˜๊ธฐ ์ „์— ์ธ๋ฑ์Šค ๋นŒ๋“œ๋ฅผ ์™„๋ฃŒํ•ด์•ผ ํ•˜๋Š” ๋…ธ๋“œ ์ˆ˜๋ฅผ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.