setDefaultRWConcern
์ ์
setDefaultRWConcern
setDefaultRWConcern
๊ด๋ฆฌ ๋ช ๋ น์ ๋ณต์ ๋ณธ ์ธํธ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๊ธ๋ก๋ฒ ๊ธฐ๋ณธ ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ๊ณ ๋ ค ๊ตฌ์ฑ์ ์ค์ ํฉ๋๋ค.setDefaultRWConcern
์admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด ์คํ๋์ด์ผ ํฉ๋๋ค.๋ณต์ ๋ณธ ์ธํธ์ ๊ฒฝ์ฐ ํ๋ผ์ด๋จธ๋ฆฌ
mongod
์์setDefaultRWConcern
๋ช ๋ น์ ์คํํ์ธ์.์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๊ฒฝ์ฐ,
mongos
์์setDefaultRWConcern
์ ์คํํฉ๋๋ค.
ํธํ์ฑ
์ด ๋ช ๋ น์ ๋ค์ ํ๊ฒฝ์์ ํธ์คํ ๋๋ ๋ฐฐํฌ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
MongoDB Enterprise: MongoDB์ ๊ตฌ๋ ๊ธฐ๋ฐ ์์ฒด ๊ด๋ฆฌ ๋ฒ์
MongoDB Community: MongoDB์ ์์ค ์ฌ์ฉ ๊ฐ๋ฅ ๋ฌด๋ฃ ์์ฒด ๊ด๋ฆฌ ๋ฒ์
๊ตฌ๋ฌธ
๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ๋ฌธ์ ๊ฐ์ง๋๋ค:
db.adminCommand( { setDefaultRWConcern : 1, defaultReadConcern: { <read concern> }, defaultWriteConcern: { <write concern> }, writeConcern: { <write concern> }, comment: <any> } )
๋ช ๋ น ํ๋
์ด ๋ช ๋ น์ ๋ค์ ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํ๋ | ์ ํ | ์ค๋ช
|
---|---|---|
|
| |
| ์ ์ญ ์ฝ๊ธฐ ๊ณ ๋ ค ๊ตฌ์ฑ์ด ํฌํจ๋ ๋ฌธ์์ ๋๋ค. ์ ํจํ ์ฝ๊ธฐ ๊ณ ๋ ค ๊ฐ์ฒด๋ฅผ ์ง์ ํ์ธ์.
ํ์ฌ ์ ์ญ ์ฝ๊ธฐ ๊ณ ๋ ค (read concern) ์์ ๋์ง ์์ ์ํ๋ก ๋๋ ค๋ฉด ์ด ๋ฌธ์ ์๋ตํ์ธ์. ์๋ต๋ ๊ฒฝ์ฐ | |
| ์ ์ญ ๊ธฐ๋ณธ ์ฐ๊ธฐ ๊ณ ๋ ค ๊ตฌ์ฑ์ด ํฌํจ๋ ๋ฌธ์์ ๋๋ค.
ํ์ฌ ์ ์ญ ์ฐ๊ธฐ ๊ณ ๋ ค (write concern) ์์ ๋์ง ์์ ์ํ๋ก ๋๋ ค๋ฉด ์ด ๋ฌธ์ ์๋ตํ์ธ์. ์๋ต๋ | |
๊ฐ์ฒด | ์ ํ ์ฌํญ. ๋ช
๋ น ์์ฒด์์ ์ฌ์ฉํ ์ฐ๊ธฐ ์๋ตํ๋ฉด ๋ | |
| any | ์ ํ ์ฌํญ. ์ด ๋ช ๋ น์ ์ฒจ๋ถํ ์ฌ์ฉ์ ์ ๊ณต ์ฝ๋ฉํธ์ ๋๋ค. ์ค์ ๋๋ฉด ์ด ์ค๋ช ์ ๋ค์ ์์น์์ ์ด ๋ช ๋ น์ ๋ ์ฝ๋์ ํจ๊ป ํ์๋ฉ๋๋ค.
๋๊ธ์ ์ ํจํ ๋ชจ๋ BSON types (๋ฌธ์์ด, ์ ์, ๊ฐ์ฒด, ๋ฐฐ์ด ๋ฑ)์ด ๋ ์ ์์ต๋๋ค. |
setDefaultRWConcern
์ ํ์ฌ ๊ตฌ์ฑ๋ ์ ์ญ ๊ธฐ๋ณธ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ณ ๋ ค๊ฐ ํฌํจ๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐํ๋ ํ๋์ ๋ํ ์ ์ฒด ์ค๋ช
์๋ getDefaultRWConcern
์ ์ฐธ์กฐํ์ธ์.
ํ๋
์ฐธ๊ณ
featureCompatibilityVersion 4.4 ์ด์์ด ํ์ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๊ฐ mongod
์ featureCompatibilityVersion์ด 4.4
์ด์์ผ๋ก ์ค์ ๋์ด ์์ด์ผ setDefaultRWConcern
(์)๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
MongoDB 5.0๋ถํฐ๋ setDefaultRWConcern
๋ช
๋ น์ ํตํด CWWC(Cluster Wide Write Concern, ํด๋ฌ์คํฐ ์ ์ฒด ์ฐ๊ธฐ ๊ณ ๋ ค)๋ฅผ ์ค์ ํ๊ณ ๋๋ฉด ์ฐ๊ธฐ ๊ณ ๋ ค ์ค์ ์ ํด์ ํ ์ ์์ต๋๋ค.
MongoDB๋ ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์์ ์ฐ์ฐ์๋ง ์ ์ญ ๊ธฐ๋ณธ ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ ์ฉํฉ๋๋ค.
MongoDB๊ฐ ์ ์ญ ๊ธฐ๋ณธ ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ฐ์ฐ์ ์ ์ฉํ๋ฉด ์คํ ํด๋ผ์ด์ธํธ๊ฐ ํด๋น ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ๋ช ์์ ์ผ๋ก ์ง์ ํ ๊ฒ์ฒ๋ผ ํด๋น ์ฐ์ฐ์ด ์๋ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ
๋ณต์ ๋ณธ ์ธํธ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๋์์ผ๋ก setDefaultRWConcern
์ ์คํํ์ธ์. ํ๋ผ์ด๋จธ๋ฆฌ๋ ์ ์ ์ญ ๊ธฐ๋ณธ ์ค์ ์ ๋ณต์ ๋ณธ ์ธํธ์ ๋๋จธ์ง ๋ฉค๋ฒ์ ๋ณต์ ํฉ๋๋ค. ์
๋ฐ์ดํธ๋ ์ ์ญ ๊ธฐ๋ณธ ์ค์ ์ ์์ง ๋ณต์ ํ์ง ์์ ์ธ์ปจ๋๋ฆฌ์์๋ ๊ธฐ๋ณธ๊ฐ์ '์ค๋๋' ๋ก์ปฌ ์ฌ๋ณธ์ ๊ณ์ ์ฌ์ฉํฉ๋๋ค.
w : "majority"
์ writeConcern์ผ๋ก setDefaultRWConcern
๋ช
๋ น์ ์คํํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ด ๋๋ถ๋ถ์ ๋ณต์ ๋ณธ ์ธํธ ๊ตฌ์ฑ์์ ์ ํ๋ ํ์๋ง ๋ช
๋ น์ด ๋ฐํ๋๋๋ก ํฉ๋๋ค.
์ค๋ฉ๋ ํด๋ฌ์คํฐ
ํด๋ฌ์คํฐ์ mongos
์ ๋ํด setDefaultRWConcern
(์)๋ฅผ ์คํํฉ๋๋ค. mongos
(์)๋ ์
๋ฐ์ดํธ๋ ์ค์ ์ config ์๋ฒ ๋ณต์ ๋ณธ ์ธํธ(CSRS)์ ๊ณ์ ์ ์งํฉ๋๋ค. ๊ฐ mongos
(์)๋ CSRS๋ฅผ ๋์์ผ๋ก getDefaultRWConcern
(์)๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์คํํด์ ์ ์ญ ์ค์ ์ ๋ก์ปฌ ์ฌ๋ณธ์ ์๋ก ๊ณ ์นฉ๋๋ค. mongos
(์)๋ ์๋ก๊ณ ์นจ ์ฌ์ด์ ๊ธฐ๊ฐ ๋์ ์ ์ญ ๊ธฐ๋ณธ๊ฐ์ '์ค๋๋' ๋ก์ปฌ ์ฌ๋ณธ์ ์ฌ์ฉํฉ๋๋ค.
w : "majority"
์ writeConcern์ผ๋ก setDefaultRWConcern
๋ช
๋ น์ ์คํํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ด ๋๋ถ๋ถ์ CSRS ๊ตฌ์ฑ์์ ์ ํ๋ ํ์๋ง ๋ช
๋ น์ด ๋ฐํ๋๋๋ก ํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ด ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ๊ณ ๋ ค ์ค์ ์ ๋ช
์์ ์ผ๋ก ์ง์ ํ์ง ์์ ์ฑ mongos
์(๋ฅผ) ๋์์ผ๋ก ์ฐ์ฐ์ ์คํํ๋ฉด mongos
์ด(๊ฐ) ์ด์ ํด๋นํ๋ ์ ์ญ ๊ธฐ๋ณธ ์ค์ ์ ์ ์ฉํฉ๋๋ค.
์ ์ญ ๊ธฐ๋ณธ ์ค์ ์ ๊ฐ๋ณ ์ค๋์ ์ ํ๋์ง ์์ต๋๋ค. ์ค๋์ ๋ํด์๋ setDefaultRWConcern
์ ์คํํ ์ ์์ต๋๋ค.
์ค์
setDefaultRWConcern
์๋ featureCompatibilityVersion 4.4+
์ด ํ์ํฉ๋๋ค. ๋ฐฐํฌ์๋ฒ์ featureCompatibilityVersion์ 4.4
์์ 4.2
๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ๋ฉด ํด๋ฌ์คํฐ ์ ์ฒด์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ณ ๋ ค ๊ธฐ๋ณธ๊ฐ์ด ์์ค๋ฉ๋๋ค. ๋จ, mongos
์ธ์คํด์ค๋ ์ต๋ 30์ด ๋์ ๊ธฐ๋ณธ๊ฐ์ ๊ณ์ ์ ์ฉํ ์ ์์ต๋๋ค.
์ค๋ฉ ๊ด๋ฆฌ ๋ช ๋ น์ผ๋ก ์ฌ์ ์๋๋ ์ฐ๊ธฐ ๊ณ ๋ ค ์ค์
config ์๋ฒ์์ ์ฐ๊ธฐ ์ฐ์ฐ์ ์คํํ๋ ์ค๋ฉ ๊ด๋ฆฌ ๋ช
๋ น(์: enableSharding
๋ช
๋ น ๋๋ addShard
๋ช
๋ น)์ ์ ์ญ ๊ธฐ๋ณธ ์ฐ๊ธฐ ๊ณ ๋ ค ์ค์ ์์ ํน์ ํ ๋์์ ์คํํฉ๋๋ค.
์ด ๋ช ๋ น์ ๊ตฌ์ฑ๋ ์ ์ญ ๊ธฐ๋ณธ ์ฐ๊ธฐ ๊ณ ๋ ค์ ๊ด๊ณ์์ด
"majority"
์(๋ฅผ) ์ฌ์ฉํฉ๋๋ค.์ด ๋ช ๋ น์ ์ต์ wtimeout์
60000
(์ผ)๋ก ์ฌ์ฉํฉ๋๋ค. ์ด ๋ช ๋ น์60000
๋ณด๋ค ํฐ ๊ฒฝ์ฐ์๋ง ์ ์ญ ๊ธฐ๋ณธ ์ฐ๊ธฐ ๊ณ ๋ คwtimeout
์(๋ฅผ) ์ฌ์ฉํฉ๋๋ค.
์ก์ธ์ค ์ ์ด
์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ์ ์ธ์ฆ์ ์ ์ฉํ๋ ๋ณต์ ๋ณธ ์ธํธ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๊ฒฝ์ฐ, setDefaultRWConcern
์ธ์ฆ๋ ์ฌ์ฉ์์๊ฒ setDefaultRWConcern
๊ถํ ์กฐ์น ์ด ์์ด์ผ ํฉ๋๋ค.
clusterManager
๊ธฐ๋ณธ ์ ๊ณต ์ญํ ์ setDefaultRWConcern
์ ์คํํ๋ ๋ฐ ํ์ํ ๊ถํ์ ์ ๊ณตํฉ๋๋ค.
์์
์ ์ญ ๊ธฐ๋ณธ ์ฐ๊ธฐ ๊ณ ๋ ค ์ค์ ํ๊ธฐ
์๋ ์ฐ์ฐ์์๋ ์ ์ญ ์ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ๋ค์ ๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค.
db.adminCommand({ "setDefaultRWConcern" : 1, "defaultWriteConcern" : { "w" : 2 } })
์ด ์์ ์ ๋ค์๊ณผ ์ ์ฌํ ๋ฌธ์๋ฅผ ๋ฐํํฉ๋๋ค.
{ "defaultWriteConcern" : { "w" : 2 }, "updateOpTime" : Timestamp(1586290895, 1), "updateWallClockTime" : ISODate("2020-04-07T20:21:41.849Z"), "localUpdateWallClockTime" : ISODate("2020-04-07T20:21:41.862Z"), "ok" : 1, "$clusterTime" : { ... } "operationTime" : Timestamp(1586290925, 1) }
์ ์ญ ๊ธฐ๋ณธ ์ฝ๊ธฐ ๊ณ ๋ ค ์ค์ ํ๊ธฐ
๋ค์ ์ฐ์ฐ์์๋ ์ ์ญ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ "majority"
(์ผ)๋ก ์ค์ ํฉ๋๋ค.
db.adminCommand({ "setDefaultRWConcern" : 1, "defaultReadConcern" : { "level" : "majority" } })
์ด ์์ ์ ๋ค์๊ณผ ์ ์ฌํ ๋ฌธ์๋ฅผ ๋ฐํํฉ๋๋ค.
{ "defaultReadConcern" : { "level" : "majority" }, "updateOpTime" : Timestamp(1586290895, 1), "updateWallClockTime" : ISODate("2020-04-07T20:21:41.849Z"), "localUpdateWallClockTime" : ISODate("2020-04-07T20:21:41.862Z"), "ok" : 1, "$clusterTime" : { ... } "operationTime" : Timestamp(1586290925, 1) }
์ ์ญ ๊ธฐ๋ณธ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ณ ๋ ค ์ค์ ํ๊ธฐ
์๋ ์ฐ์ฐ์์๋ ์ ์ญ ๊ธฐ๋ณธ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ๋ค์ ๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค.
w: 2
์ฐ๊ธฐ ๊ณ ๋ คlevel: "majority"
์ฝ๊ธฐ ๊ณ ๋ ค
db.adminCommand({ "setDefaultRWConcern" : 1, "defaultWriteConcern" : { "w" : 2 }, "defaultReadConcern" : { "level" : "majority" } })
์ด ์์ ์ ๋ค์๊ณผ ์ ์ฌํ ๋ฌธ์๋ฅผ ๋ฐํํฉ๋๋ค.
"defaultWriteConcern" : { "w" : 2 }, "defaultReadConcern" : { "level" : "majority" }
์ ์ญ ๊ธฐ๋ณธ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ณ ๋ ค ์ค์ ํด์ ํ๊ธฐ
๋ค์์ ์ํํ ์ ์์ต๋๋ค.
์ ์ญ ๊ธฐ๋ณธ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ค์ ํด์ ํ์ธ์.
์ ์ญ ๊ธฐ๋ณธ ์ฐ๊ธฐ ๊ณ ๋ ค๋ ์์ง ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ์๋ง ์ค์ ํด์ ํ์ธ์.
๊ทธ ์๋ก ์ ์ญ ๊ธฐ๋ณธ ์ฝ๊ธฐ ๊ณ ๋ ค๊ฐ level: "majority"
(์ผ)๋ก ์ค์ ๋์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ด
์๋ค. ์ ์ญ ๊ธฐ๋ณธ ์ฝ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ค์ ํด์ ํ๋ ค๋ฉด ๋น ๋ฌธ์ {}
์(๋ฅผ) ์ฌ์ฉํ์ธ์.
db.adminCommand( { "setDefaultRWConcern" : 1, "defaultReadConcern" : {} } )
์ด ์ฐ์ฐ์ ์ฐ์ฐ์ด ์ฑ๊ณตํ๋ค๋ ๊ฒ์ ๋ํ๋ด๋ ๋ฌธ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ฐํํฉ๋๋ค.
{ defaultReadConcern: { level: 'local' }, defaultWriteConcern: { w: 2, wtimeout: 0 }, updateOpTime: Timestamp({ t: 1656696934, i: 1 }), updateWallClockTime: ISODate("2022-07-01T17:35:40.578Z"), defaultWriteConcernSource: 'global', defaultReadConcernSource: 'implicit', localUpdateWallClockTime: ISODate("2022-07-01T17:35:40.578Z"), ok: 1, '$clusterTime': { ... }, operationTime: Timestamp({ t: 1656632593, i: 1 }) }
์ ์ญ ๊ธฐ๋ณธ ์ฐ๊ธฐ ๊ณ ๋ ค๋ ์์ง ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ์๋ง ์ค์ ํด์ ํ ์ ์์ต๋๋ค.
์ ์ญ ๊ธฐ๋ณธ ์ฐ๊ธฐ ๊ณ ๋ ค๋ฅผ ์ค์ ํด์ ํ๋ ค๋ฉด ๋น ๋ฌธ์ {}
์(๋ฅผ) ์ฌ์ฉํ์ธ์.
db.adminCommand( { "setDefaultRWConcern" : 1, "defaultWriteConcern" : {} } )
์ ์ญ ๊ธฐ๋ณธ ์ฐ๊ธฐ ๊ณ ๋ ค๊ฐ ๋ค์๊ณผ ๊ฐ์ ์ํ์ธ ๊ฒฝ์ฐ:
์ค์ ํด์ ๋จ, ์ฐ์ฐ์ด ์ฑ๊ณตํฉ๋๋ค.
์ด๋ฏธ ์ค์ ๋์ด ์์, ์ฐ์ฐ์ด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค.
MongoServerError: The global default write concern cannot be unset once it is set.