readConcern "majority"
์ด ํ์ด์ง์ ๋ด์ฉ
๋ค์ค ๋ฌธ์ ํธ๋์ญ์
๊ณผ ๊ด๋ จ์ด ์๋ ์ฝ๊ธฐ ์์
์ ๊ฒฝ์ฐ, ์ฝ๊ธฐ ๊ณ ๋ ค "majority"
๋ ์ฝ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ์ ๊ณผ๋ฐ์๊ฐ ์น์ธํ์์ ๋ณด์ฅํฉ๋๋ค(. ์ฝ์ ๋ฌธ์๋ ๋ด๊ตฌ์ฑ์ด ๋ฐ์ด๋๊ณ ๋กค๋ฐฑ๋์ง ์์์ด ๋ณด์ฅ๋ฉ๋๋ค.
๋ค์ค ๋ฌธ์ ํธ๋์ญ์
์์ ์คํ๋๋ ์์
์ ๊ฒฝ์ฐ, ์ฝ๊ธฐ ๊ณ ๋ ค "majority"
๋ ํธ๋์ญ์
์ด ์ฐ๊ธฐ ๊ณ ๋ ค 'majority'์ ํจ๊ป ์ปค๋ฐ๋๋ ๊ฒฝ์ฐ์๋ง ๋ณด์ฆ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด "majority"
์ฝ๊ธฐ ๊ณ ๋ ค๊ฐ ํธ๋์ญ์
์์ ์ฝ์ ๋ฐ์ดํฐ์ ๋ํ ๋ณด์ฅ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
์ฝ๊ธฐ ๊ณ ๋ ค ์์ค์ ๊ด๊ณ์์ด ๋ ธ๋์ ์ต์ ๋ฐ์ดํฐ๋ ์์คํ ์ ์๋ ๋ฐ์ดํฐ์ ์ต์ ๋ฒ์ ์ ๋ฐ์ํ์ง ์์ ์ ์์ต๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋๋์ง ์์ธํ ์์๋ณด๋ ค๋ฉด ์๋ ํ์ผ์ค๋ฒ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฑ๋ฅ
๊ฐ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ๋ ๊ณผ๋ฐ์ ์ปค๋ฐ ํฌ์ธํธ์ ๋ฐ์ดํฐ ๋ทฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์งํ๋ฉฐ, ๊ณผ๋ฐ์ ์ปค๋ฐ ํฌ์ธํธ๋ ํ๋ผ์ด๋จธ๋ฆฌ์์ ๊ณ์ฐํฉ๋๋ค. ์ฝ๊ธฐ ๊ณ ๋ ค "majority"
๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋
ธ๋๋ ์ด ๋ทฐ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ฉฐ ์ฑ๋ฅ ์ธก๋ฉด์์ ๋ค๋ฅธ ์ฝ๊ธฐ ๊ณ ๋ ค์ ๋น์ทํฉ๋๋ค.
๊ฐ์ฉ์ฑ
์ฝ๊ธฐ ๊ณ ๋ ค "majority"
๋ ์ธ๊ณผ์ ์ผ๋ก ์ผ๊ด๋ ์ธ์
๋ฐ ํธ๋์ญ์
์ ๋ฌด์ ๊ด๊ณ์์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฒฝ๊ณ
ํ๋ผ์ด๋จธ๋ฆฌ-์ธ์ปจ๋๋ฆฌ-์ค์ฌ์(PSA) ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด ๋ค์์ ๊ณ ๋ คํ์ธ์.
์ฐ๊ธฐ ๊ณ ๋ ค
"majority"
๋ ์ธ์ปจ๋๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ฑฐ๋ ์ง์ฐ๋์์ ๋ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์กฐ์ธ์ ์์ฒด ๊ด๋ฆฌ PSA ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ํตํ ์ฑ๋ฅ ๋ฌธ์ ์ํ๋ฅผ์ฐธ์กฐํ์ธ์.๊ธ๋ก๋ฒ ๊ธฐ๋ณธ๊ฐ
"majority"
๋ฅผ ์ฌ์ฉํ๊ณ ์๊ณ ์ฐ๊ธฐ ๊ณ ๋ ค๊ฐ ๊ณผ๋ฐ์ ํฌ๊ธฐ๋ณด๋ค ์์ผ๋ฉด, ์ฟผ๋ฆฌ๊ฐ ์ค๋๋ (์์ ํ ๋ณต์ ๋์ง ์์) ๋ถ์ค ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.
์์
์ธ ๋ฉค๋ฒ๋ก ๊ตฌ์ฑ๋ ๋ณต์ ๋ณธ ์ธํธ์ 0์ ์ฐ๋ ์ฐ๊ธฐ ์์ ์ ๋ค์ ํ์๋ผ์ธ์ ๊ณ ๋ คํด ๋ณด์ญ์์ค.
์ฐธ๊ณ
๋จ์ํ๋ฅผ ์ํด ์ด ์์์์๋ ๋ค์๊ณผ ๊ฐ์ ์ํฉ์ ๊ฐ์ ํฉ๋๋ค.
์ฐ๊ธฐ 0 ์ด์ ์ ๋ชจ๋ ์ฐ๊ธฐ๊ฐ ๋ชจ๋ ๊ตฌ์ฑ์์ ์ฑ๊ณต์ ์ผ๋ก ๋ณต์ ๋์์ต๋๋ค.
์ฐ๊ธฐ ์ด์ ์ ์ฐ๊ธฐ 0 ์ด์ ์ ์ด์ ์ฐ๊ธฐ์ ๋๋ค.
Write 0 ์ดํ์๋ ๋ค๋ฅธ ์ฐ๊ธฐ๊ฐ ๋ฐ์ํ์ง ์์์ต๋๋ค.
์๊ฐ | ์ด๋ฒคํธ | ๊ฐ์ฅ ์ต๊ทผ ๊ธ | ๊ฐ์ฅ ์ต๊ทผ 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'์ ํจ๊ป ์ปค๋ฐ๋๋ ๊ฒฝ์ฐ์๋ง ๋ณด์ฆ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด "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"
๋ฅผ ์ฌ์ฉํ๊ณ ์๊ณ ์ฐ๊ธฐ ๊ณ ๋ ค๊ฐ ๊ณผ๋ฐ์ ํฌ๊ธฐ๋ณด๋ค ์์ผ๋ฉด, ์ฟผ๋ฆฌ๊ฐ ์ค๋๋ (์์ ํ ๋ณต์ ๋์ง ์์) ๋ถ์ค ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.