readConcern
์ด ํ์ด์ง์ ๋ด์ฉ
readConcern
์ต์
์ ์ฌ์ฉํ๋ฉด ๋ณต์ ๋ณธ ์ธํธ์ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์์ ์ฝ์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ ๋ฐ ๊ฒฉ๋ฆฌ ์์ฑ์ ์ ์ดํ ์ ์์ต๋๋ค.
์ฐ๊ธฐ ๊ณ ๋ ค ์ฌํญ๊ณผ ์ฝ๊ธฐ ๊ณ ๋ ค ์ฌํญ์ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ์ฌ ์ผ๊ด์ฑ ๋ฐ ๊ฐ์ฉ์ฑ ๋ณด์ฅ ์์ค์ ์ ์ ํ ์กฐ์ ํ ์ ์์ต๋๋ค(์: ๋ ๊ฐ๋ ฅํ ์ผ๊ด์ฑ ๋ณด์ฅ์ ๊ธฐ๋ค๋ฆฌ๊ฑฐ๋ ์ผ๊ด์ฑ ์๊ตฌ ์ฌํญ์ ์ํํ์ฌ ๋ ๋์ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํ๋ ๋ฑ).
๋ณต์ ๋ณธ ์ธํธ ๋ฐ ์ค๋ ํด๋ฌ์คํฐ๋ ๊ธ๋ก๋ฒ ๊ธฐ๋ณธ ์ฝ๊ธฐ ์ฐ๋ ค ์ฌํญ ์ค์ ์ ์ง์ํฉ๋๋ค. ๋ช
์์ ์ธ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ง์ ํ์ง ์์ ์์
์๋ ๊ธ๋ก๋ฒ ๊ธฐ๋ณธ ์ฝ๊ธฐ ๊ณ ๋ ค ์ค์ ์ด ์ ์ฉ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ setDefaultRWConcern
์ ์ฐธ์กฐํ์ธ์.
์ฝ๊ธฐ ๊ณ ๋ ค ์์ค
๋ค์๊ณผ ๊ฐ์ ์ฝ๊ธฐ ๊ณ ๋ ค ์์ค์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
level | ์ค๋ช
|
---|---|
์ด ์ฟผ๋ฆฌ๋ ๋ณต์ ์ธํธ ๊ตฌ์ฑ์์ ๊ณผ๋ฐ์์ ๋ฐ์ดํฐ๊ฐ ๊ธฐ๋ก๋์์์ ๋ณด์ฅํ์ง ์๊ณ ์ธ์คํด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค(์ฆ, ๋กค๋ฐฑ๋ ์ ์์ต๋๋ค). ๊ธฐ๋ณธ๊ฐ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฐ ์ธ์ปจ๋๋ฆฌ์ ๋ํ ์ฝ๊ธฐ์ ๋๋ค. ๊ฐ์ฉ์ฑ: ์ฝ๊ธฐ ๊ณ ๋ ค ์์ธํ ๋ด์ฉ์ | |
์ด ์ฟผ๋ฆฌ๋ ๋ณต์ ์ธํธ ๊ตฌ์ฑ์์ ๊ณผ๋ฐ์์ ๋ฐ์ดํฐ๊ฐ ๊ธฐ๋ก๋์์์ ๋ณด์ฅํ์ง ์๊ณ ์ธ์คํด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค(์ฆ, ๋กค๋ฐฑ๋ ์ ์์ต๋๋ค). ๊ฐ์ฉ์ฑ: ์ฝ๊ธฐ ๊ณ ๋ ค ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๊ฒฝ์ฐ, ์์ธํ ๋ด์ฉ์ | |
์ด ์ฟผ๋ฆฌ๋ ๋ณต์ ๋ณธ ์ธํธ ๊ตฌ์ฑ์์ ๊ณผ๋ฐ์ ์ด์์ด ํ์ธํ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค. ์ฝ๊ธฐ ์์ ์์ ๋ฐํ๋ ๋ฌธ์๋ ์คํจ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ด๊ตฌ์ฑ์ ๊ฐ์ต๋๋ค. ์ฝ๊ธฐ ๊ณ ๋ ค 'majority'๋ฅผ ์ถฉ์กฑํ๊ธฐ ์ํด, ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ๋ ๊ณผ๋ฐ์ ์ปค๋ฐ ํฌ์ธํธ์ ์๋ ๋ฐ์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ด ๋ณด๊ธฐ ํ๋ฉด์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐ๋ผ์ ์ฝ๊ธฐ ๊ณ ๋ ค ๊ฐ์ฉ์ฑ: ์ฝ๊ธฐ ๊ณ ๋ ค ์๊ตฌ ์ฌํญ: ์ฝ๊ธฐ ๊ณ ๋ ค ์์ค์ ๋ค์ค ๋ฌธ์ ํธ๋์ญ์
์์ ์คํ๋๋ ์์
์ ๊ฒฝ์ฐ, ์ฝ๊ธฐ ๊ณ ๋ ค ์์ธํ ๋ด์ฉ์ | |
์ด ์ฟผ๋ฆฌ๋ ์ฝ๊ธฐ ์์ ์ด ์์๋๊ธฐ ์ ์ ์๋ฃ๋๊ณ ๊ณผ๋ฐ์ ์ด์์ด ํ์ธํ ๋ชจ๋ ์ฑ๊ณต์ ์ธ ์ฐ๊ธฐ๋ฅผ ๋ฐ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค. ์ฟผ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ธฐ ์ ์ ๋์์ ์คํ ์ค์ธ ์ฐ๊ธฐ๊ฐ ๋ณต์ ๋ณธ ์ธํธ ๊ตฌ์ฑ์์ ๊ณผ๋ฐ์์ ์ ํ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค. ์ฝ๊ธฐ ๊ณ ๋ ค ํ ๊ณผ๋ฐ์์ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ๊ฐ ์ถฉ๋ํ๋ค๊ฐ ๋ค์ ์์๋๋ ๊ฒฝ์ฐ,
์๊ตฌ ์ฌํญ: ์ ํํ ๊ฐ๋ฅ ์ฝ๊ธฐ ๊ณ ๋ ค๋ ์ฝ๊ธฐ ์์ ์ด ๋จ์ผ ๋ฌธ์๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๋ ์ฟผ๋ฆฌ ํํฐ๋ฅผ ๋ช ์ํ๋ ๊ฒฝ์ฐ์๋ง ์ ์ฉ๋ฉ๋๋ค. ๋ํ ๋ค์ ๊ธฐ์ค ์ค ์ด๋ ํ๋๋ผ๋ ์ถฉ์กฑ๋์ง ์์ผ๋ฉด ์ ํํ ๊ฐ๋ฅ ์ฝ๊ธฐ ๊ณ ๋ ค๊ฐ ์ผ๊ด์ ์ธ ์ค๋ ์ท์์ ์ฝํ์ง ์์ ํํฐ์ ์ผ์นํ๋ ๋ฌธ์๊ฐ ๋ฐํ๋์ง ์์ ์ ์์ต๋๋ค.
์์ ๊ธฐ์ค ์ค ํ๋๋ผ๋ ์ถฉ์กฑ๋๋ฉด ์ฟผ๋ฆฌ๋ ์ผ๊ด์ ์ธ ์ค๋ ์ท์ ์ฝ์ด ์ผ์นํ๋ ๋ฌธ์ ํ๋๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง ๋ฉค๋ฒ์ ๊ณผ๋ฐ์ ์ด์์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ, ํญ์ ์ ํํ ๊ฐ๋ฅํ ์ฝ๊ธฐ ๊ณ ๋ ค์ ํจ๊ป ์์ธํ ๋ด์ฉ์ | |
์ฝ๊ธฐ ๊ณ ๋ ค If a transaction is not part of a causally consistent
session, upon transaction commit with write
concern "majority" , the transaction operations
are guaranteed to have read from a snapshot of
majority-committed data.If a transaction is part of a causally consistent
session, upon transaction commit with write
concern "majority" , the transaction operations
are guaranteed to have read from a snapshot of
majority-committed data that provides causal consistency with
the operation immediately preceding the transaction start.๊ฐ์ฉ์ฑ: ์ฝ๊ธฐ ๊ณ ๋ ค
|
์ฝ๊ธฐ ๊ณ ๋ ค ์์ค์ ๊ด๊ณ์์ด ๋ ธ๋์ ์ต์ ๋ฐ์ดํฐ๋ ์์คํ ์ ์๋ ๋ฐ์ดํฐ์ ์ต์ ๋ฒ์ ์ ๋ฐ์ํ์ง ์์ ์ ์์ต๋๋ค.
๊ฐ ์ฝ๊ธฐ ๊ณ ๋ ค ์์ค์ ๊ดํ ์์ธํ ๋ด์ฉ์ ๋ค์์์ ํ์ธํ์ธ์.
readConcern
Support
์ฝ๊ธฐ ๊ณ ๋ ค ์ต์
๋ค์ค ๋ฌธ์ ํธ๋์ญ์
์์ ์คํ๋์ง ์๋ ์์
์ ๊ฒฝ์ฐ, readConcern
์์ค์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ง์ํ๋ ๋ช
๋ น๊ณผ ๋ฉ์๋์ ๋ํ ์ต์
์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค.
readConcern: { level: <level> }
mongosh
๋ฉ์๋์ db.collection.find()
์ ๋ํ ์ฝ๊ธฐ ๊ณ ๋ ค ์์ค์ ์ง์ ํ๋ ค๋ฉด cursor.readConcern()
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
db.collection.find().readConcern(<level>)
ํธ๋์ญ์ ๋ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๊ธฐ ๊ณ ๋ ค
๋ค์ค ๋ฌธ์ ํธ๋์ญ์ ์ ๊ฒฝ์ฐ ๊ฐ๋ณ ์์ ์์ค์ด ์๋ ํธ๋์ญ์ ์์ค์์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ค์ ํฉ๋๋ค. ํธ๋์ญ์ ์ ์์ ์๋ ํธ๋์ญ์ ์์ค์ ์ฝ๊ธฐ ๊ณ ๋ ค๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ปฌ๋ ์ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ค์์ ์ค์ ๋ ๋ชจ๋ ์ฝ๊ธฐ ๊ณ ๋ ค๋ ํธ๋์ญ์ ๋ด๋ถ์์ ๋ฌด์๋ฉ๋๋ค. ํธ๋์ญ์ ์์ค์ ์ฝ๊ธฐ ๊ณ ๋ ค๊ฐ ๋ช ์์ ์ผ๋ก ์ง์ ๋ ๊ฒฝ์ฐ, ํด๋ผ์ด์ธํธ ์์ค์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ ํธ๋์ญ์ ๋ด์์ ๋ฌด์๋ฉ๋๋ค.
์ค์
๊ฐ๋ณ ์์ ์์๋ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ๋ช ์์ ์ผ๋ก ์ค์ ํ๋ฉด ์ ๋ฉ๋๋ค. ํธ๋์ญ์ ์ ๋ํ ์ฝ๊ธฐ ๊ด์ฌ์ฌ๋ฅผ ์ค์ ํ๋ ค๋ฉด ์ฝ๊ธฐ ๊ณ ๋ ค/์ฐ๊ธฐ ๊ณ ๋ ค/์ฝ๊ธฐ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
ํธ๋์ญ์ ์์ ์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
๋ค์ค ๋ฌธ์ ํธ๋์ญ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ ์ฝ๊ธฐ ๊ณ ๋ ค ์์ค์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ค์ค ๋ฌธ์ ํธ๋์ญ์ ์ ์ผ๋ถ์ธ ์ฐ๊ธฐ ๋ช ๋ น์ ํธ๋์ญ์ ์์ค์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ง์ํ ์ ์์ต๋๋ค.
ํธ๋์ญ์ ๋ด์์ ์ปฌ๋ ์ ๊ณผ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ปฌ๋ ์ ๋๋ ์ธ๋ฑ์ค๋ฅผ ๋ช ์์ ์ผ๋ก ์์ฑํ๋ ๊ฒฝ์ฐ ํธ๋์ญ์ ์ ์ฝ๊ธฐ ๊ณ ๋ ค
"local"
์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ปฌ๋ ์ ์ ์์์ ์ผ๋ก ์์ฑํ๋ ๊ฒฝ์ฐ ํธ๋์ญ์ ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํธ๋์ญ์ ์์ ์ ์์ค์ด ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ํธ๋์ญ์ ์ ์ธ์ ์์ค์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ฌ์ฉํ๊ณ , ์ด๊ฒ์ด ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ์๋ ํด๋ผ์ด์ธํธ ์์ค์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ํธ๋์ญ์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ฐธ์กฐํ์ธ์.
์ธ๊ณผ์ ์ผ๋ก ์ผ๊ด์ ์ธ ์ธ์ ๋ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๊ธฐ ๊ณ ๋ ค
์ธ๊ณผ์ ์ผ๋ก ์ผ๊ด์ ์ธ ์ธ์
์์ ์คํํ๋ ์์
์๋ "local"
, "majority"
๋ฐ "snapshot"
์์ค์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ธ๊ณผ ๊ด๊ณ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ค๋ฉด "majority"
๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ธ๊ณผ์ ์ผ๊ด์ฑ์์ ํ์ธํ์ธ์.
์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ง์ํ๋ ์์
๋ค์ ์์ ์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ง์ํฉ๋๋ค.
์ค์
ํธ๋์ญ์ ๋ด ์์ ์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ค์ ํ๋ ค๋ฉด ๊ฐ๋ณ ์์ ์์ค์ด ์๋ ํธ๋์ญ์ ์์ค์์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ค์ ํ์ธ์. ํธ๋์ญ์ ๋ด ๊ฐ๋ณ ์์ ์๋ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ๋ช ์์ ์ผ๋ก ์ค์ ํ๋ฉด ์ ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ฑฐ๋ ๋ฐ ์ฐ๋ ค ์ฌํญ ์ฝ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
๋ช
๋ น/๋ฉ์๋ | |||||
---|---|---|---|---|---|
โ | โ | โ | โ | ||
โ | โ | โ | โ [2] | โ | |
โ | โ | โ | โ | โ | |
โ | โ | โ | โ | โ | |
โ | โ | ||||
โ | โ | โ | โ | โ [3] | |
โ | โ | โ |
[1] | $out ๋๋ $merge ๋จ๊ณ๋ ์ฝ๊ธฐ ๊ณ ๋ ค "linearizable" ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฆ, db.collection.aggregate() ์ "linearizable" ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ง์ ํ๋ฉด ํ์ดํ๋ผ์ธ์ ๋ ์ค ๊ทธ ์ด๋ค ๋จ๊ณ๋ ํฌํจํ ์ ์์ต๋๋ค. |
[2] | ์ฝ๊ธฐ ๊ณ ๋ ค "snapshot" ์ ํน์ ์ฝ๊ธฐ ์์
๋ฐ ๋ค์ค ๋ฌธ์ ํธ๋์ญ์
์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ํธ๋์ญ์
์์๋ ์ค๋ ์ปฌ๋ ์
์ distinct ๋ช
๋ น์ด๋ ํฌํผ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. |
๋ํ, ๋ค์ ์ฐ๊ธฐ ์์ ์ ๋ค์ค ๋ฌธ์ ํธ๋์ญ์ ์ ์ผ๋ถ์ธ ๊ฒฝ์ฐ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์๋ฝํ ์ ์์ต๋๋ค.
์ค์
ํธ๋์ญ์ ๋ด ์์ ์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ค์ ํ๋ ค๋ฉด ๊ฐ๋ณ ์์ ์์ค์ด ์๋ ํธ๋์ญ์ ์์ค์์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ค์ ํ์ธ์.
๋ช
๋ น | |||||
---|---|---|---|---|---|
โ | โ | ||||
โ | โ | ||||
โ | โ | ||||
โ | โ | ||||
โ | |||||
โ |
[3] | (1, 2) ์ฝ๊ธฐ ๊ณ ๋ ค "snapshot" ์ ํน์ ์ฝ๊ธฐ ์์
๋ฐ ๋ค์ค ๋ฌธ์ ํธ๋์ญ์
์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ํธ๋์ญ์
์ ๊ฒฝ์ฐ ํธ๋์ญ์
์์ค์์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ค์ ํ์ธ์. "snapshot" ์ ์ง์ํ๋ ํธ๋์ญ์
์์
์ ํธ๋์ญ์
์์ ์ฌ์ฉํ ์ ์๋ CRUD ์์
์ ํด๋นํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ํธ๋์ญ์
๋ฐ ์ฝ๊ธฐ ๊ณ ๋ ค์์ ํ์ธํ์ธ์. |
local
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฝ์ฐ ์ฝ๊ธฐ ๊ณ ๋ ค ์ง์ ์ ๋จ
๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. MongoDB๋ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปฌ๋ ์ ์์์ ์์ ์ ๋ํด ๊ตฌ์ฑ๋ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์๋์ผ๋ก ๋ฌด์ํฉ๋๋ค.
๊ณ ๋ ค ์ฌํญ
์์ฒด ์ฐ๊ธฐ ์ฝ๊ธฐ
์ฐ๊ธฐ์์ ์น์ธ์ ์์ฒญํ๋ ๊ฒฝ์ฐ ์ธ๊ณผ์ ์ผ๋ก ์ผ๊ด๋ ์ธ์ ์ ์ฌ์ฉํ์ฌ ์์ ์ ์ฐ๊ธฐ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค.
์ค์๊ฐ ์ฃผ๋ฌธ ์ฒ๋ฆฌ
"linearizable"
์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ "majority"
์ฐ๊ธฐ ๊ณ ๋ ค์ ๊ฒฐํฉํด ์ฌ์ฉํ๋ฉด ๋ง์น ํ๋์ ์ค๋ ๋๊ฐ ์ค์๊ฐ์ผ๋ก ๋ณต์์ ์์
์ ์คํํ๋ ๊ฒ์ฒ๋ผ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋ณต์์ ์ฝ๊ธฐ ์์
๊ณผ ์ฐ๊ธฐ ์์
์ ์คํํ๋๋ก ํ์ฉํฉ๋๋ค. ๊ทธ๋์ ์ด๋ฌํ ์ฝ๊ธฐ์ ์ฐ๊ธฐ์ ํด๋นํ๋ ์ผ์ ์ด ์ ํํ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์ฑ๋ฅ ๋น๊ต
"majority"
์๋ ๋ฌ๋ฆฌ, "linearizable"
์ฝ๊ธฐ ๊ณ ๋ ค๋ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ์ ์ฝ๊ธฐ ์์
์ด { w: "majority" }
์ฐ๊ธฐ ๊ณ ๋ ค๋ก ์ฐ๊ธฐ๋ฅผ ํ์ธํ ์ ์๋ ํ๋ผ์ด๋จธ๋ฆฌ๋ก๋ถํฐ ์ฝ๊ธฐ๋ฅผ ์คํํ๊ณ ์์์ ํ์ธํด ์ค๋๋ค. [4] ๋ฐ๋ผ์ ์ ํํ ๊ฐ๋ฅํ ์ฝ๊ธฐ ๊ณ ๋ ค๊ฐ ์ค์ ๋ ์ฝ๊ธฐ๊ฐ "majority"
๋๋ "local"
์ฝ๊ธฐ ๊ณ ๋ ค๋ณด๋ค ํจ์ฌ ๋๋ฆด ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง ๋ฉค๋ฒ์ ๊ณผ๋ฐ์ ์ด์์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ, ํญ์ ์ ํํ ๊ฐ๋ฅํ ์ฝ๊ธฐ ๊ณ ๋ ค์ ํจ๊ป maxTimeMS
๋ฅผ ์ฌ์ฉํ์ธ์. maxTimeMS
๋ ์์
์ด ๋ฌด๊ธฐํ์ผ๋ก ์ฐจ๋จ๋์ง ์๋๋ก ํ๋ฉฐ, ๋์ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ถฉ์กฑํ ์ ์๋ ๊ฒฝ์ฐ ์์
์ด ์ค๋ฅ๋ฅผ ๋ฐํํ๋๋ก ํฉ๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
db.restaurants.find( { _id: 5 } ).readConcern("linearizable").maxTimeMS(10000) db.runCommand( { find: "restaurants", filter: { _id: 5 }, readConcern: { level: "linearizable" }, maxTimeMS: 10000 } )
[4] | ์ผ๋ถ ์ํฉ์์๋ ๋ณต์ ๋ณธ ์ธํธ์ ๋ ๋
ธ๋๊ฐ ์ผ์์ ์ผ๋ก ์์ ์ด ์ฃผ ๋
ธ๋๋ผ๊ณ ์๊ฐํ ์ ์์ง๋ง, { w:
"majority" } ๊ฐ์ ์ฐ๊ธฐ ์ฐ๋ ค๋ก ์ฐ๊ธฐ๋ฅผ ์๋ฃํ ์ ์๋ ๋
ธ๋๋ ์ต๋ ํ ๊ฐ๋ฟ์
๋๋ค. { w: "majority" } ๊ฐ์ ์ฐ๊ธฐ๋ฅผ ์๋ฃํ ์ ์๋ ๋
ธ๋๊ฐ ํ์ฌ์ ์ฃผ ๋
ธ๋์ด๊ณ , ๋ค๋ฅธ ๋
ธ๋๋ ๋ณดํต ๋คํธ์ํฌ ํํฐ์
์ผ๋ก ์ธํด ๊ฐ๋ฑ๋ ๊ฒ์ ์์ง ์ธ์ํ์ง ๋ชปํ ์ด์ ์ ์ฃผ ๋
ธ๋์
๋๋ค. ์ด ๊ฒฝ์ฐ ์ด์ ์ฃผ ๋
ธ๋์ ์ฐ๊ฒฐํ ํด๋ผ์ด์ธํธ๋ ์ฝ๊ธฐ ๊ธฐ๋ณธ ์ค์ primary ๋ฅผ ์์ฒญํ์์๋ ๋ถ๊ตฌํ๊ณ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ฒ ๋๋ฉฐ, ์ด์ ์ ์ฃผ ๋
ธ๋์ ๋ํ ์๋ก์ด ์ฐ๊ธฐ๋ ๊ฒฐ๊ตญ ๋กค๋ฐฑ๋ฉ๋๋ค. |
์ฝ๊ธฐ ์์
๋ฐ afterClusterTime
MongoDB๋ ์ธ๊ณผ์ ์ผ๋ก ์ผ๊ด์ ์ธ ์ธ์
์ ๋ํ ์ง์์ ํฌํจํฉ๋๋ค. ์ธ๊ณผ์ ์ผ๋ก ์ผ๊ด์ ์ธ ์ธ์
๊ณผ ๊ด๋ จ๋ ์ฝ๊ธฐ ์์
์ ๊ฒฝ์ฐ, MongoDB๋ ์ธ๊ณผ์ ์ผ๋ก ์ผ๊ด์ ์ธ ์ธ์
๊ณผ ๊ด๋ จ๋ ์์
์์ ๋๋ผ์ด๋ฒ๊ฐ ์๋์ผ๋ก afterClusterTime
์ฝ๊ธฐ ๊ณ ๋ ค ์ต์
์ ์ค์ ํ๋๋ก ์ง์ํฉ๋๋ค.
์ค์
์ฝ๊ธฐ ์์
์ afterClusterTime
์ ์๋์ผ๋ก ์ค์ ํ์ง ๋ง์ธ์. MongoDB ๋๋ผ์ด๋ฒ๋ ์ธ๊ณผ์ ์ผ๋ก ์ผ๊ด์ ์ธ ์ธ์
๊ณผ ๊ด๋ จ๋ ์์
์ ์ด ๊ฐ์ ์๋์ผ๋ก ์ค์ ํฉ๋๋ค. ํ์ง๋ง ๋ค๋ฅธ ํด๋ผ์ด์ธํธ ์ธ์
์ ์์
๊ณผ ์ผ์นํ๋๋ก ์ธ์
์ ์์
์๊ฐ๊ณผ ํด๋ฌ์คํฐ ์๊ฐ์ ์๋น๊ธธ ์ ์์ต๋๋ค. ์์์์ ์์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฐธ๊ณ
atClusterTime์ afterClusterTime
์ ํจ๊ป ์ง์ ํ ์ ์์ต๋๋ค. ์ฝ๊ธฐ ๊ณ ๋ ค "snapshot"
๊ณผ ํจ๊ป atClusterTime์ ์ฌ์ฉํ๋ ค๋ฉด ์ธ๊ณผ์ ์ผ๋ก ์ผ๊ด์ ์ธ ์ธ์
์ ๋นํ์ฑํํด์ผ ํฉ๋๋ค.
afterClusterTime
๊ฐ์ด T
์ธ ์ฝ๊ธฐ ์์ฒญ์ ์ถฉ์กฑํ๋ ค๋ฉด ๋ฐ๋์ oplog๊ฐ ์๊ฐ T
์ ๋๋ฌํ ํ mongod
๊ฐ ์์ฒญ์ ์ํํด์ผ ํฉ๋๋ค. oplog๊ฐ ์๊ฐ T
์ ๋๋ฌํ์ง ์์ ๊ฒฝ์ฐ mongod
๋ ์์ฒญ์ ์ฒ๋ฆฌํ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
afterClusterTime
์ด ์ง์ ๋ ์ฝ๊ธฐ ์์
์ ์ฝ๊ธฐ ๊ณ ๋ ค ์์ค ์๊ตฌ ์ฌํญ๊ณผ ์ง์ ๋ afterClusterTime
์๊ตฌ ์ฌํญ์ ๋ชจ๋ ์ถฉ์กฑํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค.
์ธ๊ณผ์ ์ผ๋ก ์ผ๊ด์ ์ธ ์ธ์
๊ณผ ๊ด๋ จ์ด ์๋ ์ฝ๊ธฐ ์์
์ ๊ฒฝ์ฐ afterClusterTime
์ด ์ค์ ๋์ง ์์ต๋๋ค.
์ฐ๋ ค ์ฌํญ ์ถ์ฒ ์ฝ๊ธฐ
MongoDB๋ ํน์ ์ฝ๊ธฐ ๊ณ ๋ ค์ ์์ธ์ ๋ํ๋ด๋ ์ฝ๊ธฐ ๊ณ ๋ ค provenance
๋ฅผ ์ถ์ ํฉ๋๋ค. provenance
๋ getLastError
์งํ, ์ฝ๊ธฐ ๊ณ ๋ ค ์ค๋ฅ ๊ฐ์ฒด, MongoDB ๋ก๊ทธ์ ํ์๋ฉ๋๋ค.
๋ค์ ํ๋ ๊ฐ๋ฅํ ์ฝ๊ธฐ provenance
๊ณ ๋ ค ์ ๊ฐ๊ณผ ๊ทธ ์ค์์ฑ์ ๋ณด์ฌ์ค๋๋ค.
์ถ์ฒ | ์ค๋ช
|
---|---|
| ์ฝ๊ธฐ ์ฐ๋ ค ์ฌํญ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ง์ ๋์์ต๋๋ค. |
| ์ฝ๊ธฐ ๊ณ ๋ ค๊ฐ ์ฌ์ฉ์๊ฐ ์ ์ํ ๊ธฐ๋ณธ๊ฐ์์ ๋ฐ์ํ์ต๋๋ค. |
| ๋ค๋ฅธ ๋ชจ๋ ์ฝ๊ธฐ ๊ณ ๋ ค ์ฌ์์ด ๋ถ์ฌํด ์๋ฒ์์ ์ฝ๊ธฐ ๊ณ ๋ ค๊ฐ ๋ฐ์ํ์ต๋๋ค. |