Docs Menu

readConcern "majority"

"majority"

๋‹ค์ค‘ ๋ฌธ์„œ ํŠธ๋žœ์žญ์…˜๊ณผ ๊ด€๋ จ์ด ์—†๋Š” ์ฝ๊ธฐ ์ž‘์—…์˜ ๊ฒฝ์šฐ, ์ฝ๊ธฐ ๊ณ ๋ ค "majority"๋Š” ์ฝ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์˜ ๊ณผ๋ฐ˜์ˆ˜๊ฐ€ ์Šน์ธํ–ˆ์Œ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค(. ์ฝ์€ ๋ฌธ์„œ๋Š” ๋‚ด๊ตฌ์„ฑ์ด ๋›ฐ์–ด๋‚˜๊ณ  ๋กค๋ฐฑ๋˜์ง€ ์•Š์Œ์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์ค‘ ๋ฌธ์„œ ํŠธ๋žœ์žญ์…˜์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์—…์˜ ๊ฒฝ์šฐ, ์ฝ๊ธฐ ๊ณ ๋ ค "majority"๋Š” ํŠธ๋žœ์žญ์…˜์ด ์“ฐ๊ธฐ ๊ณ ๋ ค 'majority'์™€ ํ•จ๊ป˜ ์ปค๋ฐ‹๋˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ณด์ฆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด "majority" ์ฝ๊ธฐ ๊ณ ๋ ค๊ฐ€ ํŠธ๋žœ์žญ์…˜์—์„œ ์ฝ์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ณด์žฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฝ๊ธฐ ๊ณ ๋ ค ์ˆ˜์ค€์— ๊ด€๊ณ„์—†์ด ๋…ธ๋“œ์˜ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋Š” ์‹œ์Šคํ…œ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ตœ์‹  ๋ฒ„์ „์„ ๋ฐ˜์˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋ผ์ด๋จธ๋ฆฌ์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์ž๋™ ํŽ˜์ผ์˜ค๋ฒ„๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฐ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„๋Š” ๊ณผ๋ฐ˜์ˆ˜ ์ปค๋ฐ‹ ํฌ์ธํŠธ์˜ ๋ฐ์ดํ„ฐ ๋ทฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€ํ•˜๋ฉฐ, ๊ณผ๋ฐ˜์ˆ˜ ์ปค๋ฐ‹ ํฌ์ธํŠธ๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ์—์„œ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ฝ๊ธฐ ๊ณ ๋ ค "majority"๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋“œ๋Š” ์ด ๋ทฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ ๋‹ค๋ฅธ ์ฝ๊ธฐ ๊ณ ๋ ค์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

์ฝ๊ธฐ ๊ณ ๋ ค "majority"๋Š” ์ธ๊ณผ์ ์œผ๋กœ ์ผ๊ด€๋œ ์„ธ์…˜ ๋ฐ ํŠธ๋žœ์žญ์…˜ ์œ ๋ฌด์— ๊ด€๊ณ„์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

ํ”„๋ผ์ด๋จธ๋ฆฌ-์„ธ์ปจ๋”๋ฆฌ-์ค‘์žฌ์ž(PSA) ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด ๋‹ค์Œ์„ ๊ณ ๋ คํ•˜์„ธ์š”.

  • ์“ฐ๊ธฐ ๊ณ ๋ ค "majority"๋Š” ์„ธ์ปจ๋”๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ง€์—ฐ๋˜์—ˆ์„ ๋•Œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์กฐ์–ธ์€ ์ž์ฒด ๊ด€๋ฆฌ PSA ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ํ†ตํ•œ ์„ฑ๋Šฅ ๋ฌธ์ œ ์™„ํ™”๋ฅผ์ฐธ์กฐํ•˜์„ธ์š”.

  • ๊ธ€๋กœ๋ฒŒ ๊ธฐ๋ณธ๊ฐ’ "majority"๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ์“ฐ๊ธฐ ๊ณ ๋ ค๊ฐ€ ๊ณผ๋ฐ˜์ˆ˜ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์œผ๋ฉด, ์ฟผ๋ฆฌ๊ฐ€ ์˜ค๋ž˜๋œ (์™„์ „ํžˆ ๋ณต์ œ๋˜์ง€ ์•Š์€) ๋ถ€์‹ค ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ธ ๋ฉค๋ฒ„๋กœ ๊ตฌ์„ฑ๋œ ๋ณต์ œ๋ณธ ์„ธํŠธ์— 0์„ ์“ฐ๋Š” ์“ฐ๊ธฐ ์ž‘์—…์˜ ๋‹ค์Œ ํƒ€์ž„๋ผ์ธ์„ ๊ณ ๋ คํ•ด ๋ณด์‹ญ์‹œ์˜ค.

์ฐธ๊ณ 

๋‹จ์ˆœํ™”๋ฅผ ์œ„ํ•ด ์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์“ฐ๊ธฐ 0 ์ด์ „์˜ ๋ชจ๋“  ์“ฐ๊ธฐ๊ฐ€ ๋ชจ๋“  ๊ตฌ์„ฑ์›์— ์„ฑ๊ณต์ ์œผ๋กœ ๋ณต์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์“ฐ๊ธฐ ์ด์ „์€ ์“ฐ๊ธฐ 0 ์ด์ „์˜ ์ด์ „ ์“ฐ๊ธฐ์ž…๋‹ˆ๋‹ค.

  • Write 0 ์ดํ›„์—๋Š” ๋‹ค๋ฅธ ์“ฐ๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

3 ๋…ธ๋“œ ๋ณต์ œ๋ณธ ์„ธํŠธ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ์ž‘์—…์˜ ํƒ€์ž„๋ผ์ธ
์‹œ๊ฐ„
์ด๋ฒคํŠธ
๊ฐ€์žฅ ์ตœ๊ทผ ๊ธ€
๊ฐ€์žฅ ์ตœ๊ทผ w: "๋Œ€๋‹ค์ˆ˜" ์“ฐ๊ธฐ

t 0

๊ธฐ๋ณธ ์ ์šฉ ์“ฐ๊ธฐ 0

Primary: Write 0
Secondary 1: Write prev
Secondary 2: Write prev
Primary: Write prev
Secondary 1: Write prev
Secondary 2: Write prev

t 1

๋ณด์กฐ 1์€ ์“ฐ๊ธฐ 0์„์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write prev
Primary: Write prev
Secondary 1: Write prev
Secondary 2: Write prev

ํ‹ฐ 2

๋ณด์กฐ 2 ๋Š” ์“ฐ๊ธฐ 0์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write prev
Secondary 1: Write prev
Secondary 2: Write prev

t 3

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

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write 0
Secondary 1: Write prev
Secondary 2: Write prev

t 4

์ฃผ ์„œ๋ฒ„๊ฐ€ ๋ณด์กฐ ์„œ๋ฒ„ 2๋กœ๋ณต์ œ๊ฐ€ ์„ฑ๊ณตํ–ˆ์Œ์„ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write 0
Secondary 1: Write prev
Secondary 2: Write prev

t 5

๋ณด์กฐ 1์€ (์ •๊ธฐ์ ์ธ ๋ณต์ œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด) ๊ฐ€์žฅ ์ตœ๊ทผ์˜ w์— ๋Œ€ํ•œ ์Šค๋ƒ…์ƒท์„ ์—…๋ฐ์ดํŠธํ•˜๋ผ๋Š” ์•Œ๋ฆผ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. "majority" ์“ฐ๊ธฐ

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write prev

t 6

๋ณด์กฐ 2๋Š” (์ •๊ธฐ์ ์ธ ๋ณต์ œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ†ตํ•ด) ๊ฐ€์žฅ ์ตœ๊ทผ์˜ w์— ๋Œ€ํ•œ ์Šค๋ƒ…์ƒท์„ ์—…๋ฐ์ดํŠธํ•˜๋ผ๋Š” ์•Œ๋ฆผ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. "majority" ์“ฐ๊ธฐ

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0
Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0

๊ทธ๋Ÿฐ ๋’ค, ๋‹ค์Œ ํ‘œ์—๋Š” "majority" ์ฝ๊ธฐ ์šฐ๋ ค๋ฅผ ๊ฐ€์ง„ ์ฝ๊ธฐ ์ž‘์—…์ด T ์‹œ์ ์— ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ƒํƒœ๊ฐ€ ์š”์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์„ธ ๋ฉค๋ฒ„ ๋ณต์ œ๋ณธ ์„ธํŠธ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ์ž‘์—…์˜ ํƒ€์ž„๋ผ์ธ์ž…๋‹ˆ๋‹ค.
๋Œ€์ƒ ์ฝ๊ธฐ
์‹œ๊ฐ„ T
๋ฐ์ดํ„ฐ ์ƒํƒœ

๊ธฐ๋ณธ

t ์ด์ „ 3

๋ฐ์ดํ„ฐ๋Š” ์ด์ „์“ฐ๊ธฐ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ

t ์ดํ›„ 3

๋ฐ์ดํ„ฐ๋Š” ์“ฐ๊ธฐ 0์„๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

์ค‘๊ณ ๋“ฑ ๊ต์œก 1

t ์ด์ „ 5

๋ฐ์ดํ„ฐ๋Š” ์ด์ „์“ฐ๊ธฐ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

์ค‘๊ณ ๋“ฑ ๊ต์œก 1

t ์ดํ›„ 5

๋ฐ์ดํ„ฐ๋Š” ์“ฐ๊ธฐ 0์„๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

์ค‘๊ณ ๋“ฑ ๊ต์œก 2

t ์ด์ „ ๋˜๋Š” t 6

๋ฐ์ดํ„ฐ๋Š” ์ด์ „์“ฐ๊ธฐ๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

์ค‘๊ณ ๋“ฑ ๊ต์œก 2

t ์ดํ›„ 6

๋ฐ์ดํ„ฐ๋Š” ์“ฐ๊ธฐ 0์„๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.

์ฝ๊ธฐ ๊ณ ๋ ค "majority"๋Š” WiredTiger ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ

serverStatus ๋ช…๋ น์€ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์ด "majority" ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ง€์›ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” storageEngine.supportsCommittedReads ํ•„๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

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

๋‹ค์ค‘ ๋ฌธ์„œ ํŠธ๋žœ์žญ์…˜์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์—…์˜ ๊ฒฝ์šฐ, ์ฝ๊ธฐ ๊ณ ๋ ค "majority"๋Š” ํŠธ๋žœ์žญ์…˜์ด ์“ฐ๊ธฐ ๊ณ ๋ ค 'majority'์™€ ํ•จ๊ป˜ ์ปค๋ฐ‹๋˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ณด์ฆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด "majority" ์ฝ๊ธฐ ๊ณ ๋ ค๊ฐ€ ํŠธ๋žœ์žญ์…˜์—์„œ ์ฝ์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ณด์žฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

$out๋‹จ๊ณ„๋ฅผ ํฌํ•จํ•˜๋Š” ์ง‘๊ณ„์— ๋Œ€ํ•ด ์ฝ๊ธฐ ๊ณ ๋ ค(read concern) ์ˆ˜์ค€์„ "majority" ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

MongoDB 5.0๋ถ€ํ„ฐ๋Š” ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ๊ฐœ์„ ์œผ๋กœ ์ธํ•ด enableMajorityReadConcern ๋ฐ --enableMajorityReadConcern๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ํ•ญ์ƒ true์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

์ด์ „ ๋ฒ„์ „์˜ MongoDB์—์„œ๋Š” enableMajorityReadConcern ๋ฐ --enableMajorityReadConcern๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ false์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ์Šคํ† ๋ฆฌ์ง€ ์บ์‹œ ์••๋ ฅ์œผ๋กœ ์ธํ•ด 3๋ฉค๋ฒ„ PSA(Primary-Secondary-Arbiter) ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฐํฌ๊ฐ€ ๊ณ ์ •๋˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋ผ์ด๋จธ๋ฆฌ-์„ธ์ปจ๋”๋ฆฌ-์ค‘์žฌ์ž(PSA) ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด ๋‹ค์Œ์„ ๊ณ ๋ คํ•˜์„ธ์š”.

  • ์“ฐ๊ธฐ ๊ณ ๋ ค "majority"๋Š” ์„ธ์ปจ๋”๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ง€์—ฐ๋˜์—ˆ์„ ๋•Œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์กฐ์–ธ์€ ์ž์ฒด ๊ด€๋ฆฌ PSA ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ํ†ตํ•œ ์„ฑ๋Šฅ ๋ฌธ์ œ ์™„ํ™”๋ฅผ์ฐธ์กฐํ•˜์„ธ์š”.

  • ๊ธ€๋กœ๋ฒŒ ๊ธฐ๋ณธ๊ฐ’ "majority"๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ์“ฐ๊ธฐ ๊ณ ๋ ค๊ฐ€ ๊ณผ๋ฐ˜์ˆ˜ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์œผ๋ฉด, ์ฟผ๋ฆฌ๊ฐ€ ์˜ค๋ž˜๋œ (์™„์ „ํžˆ ๋ณต์ œ๋˜์ง€ ์•Š์€) ๋ถ€์‹ค ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.