cursor.readPref()
์ ์
cursor.readPref(mode, tagSet, hedgeOptions)
์ค์
Mongo์ฌ ๋ฐฉ๋ฒ
์ด ํ์ด์ง์์๋
mongosh
๋ฉ์๋๋ฅผ ์ค๋ช ํฉ๋๋ค. ์ด๋ Node.js์ ๊ฐ์ ์ธ์ด๋ณ ๋๋ผ์ด๋ฒ์ ๋ํ ์ค๋ช ์๊ฐ ์๋๋๋ค.MongoDB API ๋๋ผ์ด๋ฒ์ ๊ฒฝ์ฐ ์ธ์ด๋ณ MongoDB ๋๋ผ์ด๋ฒ ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ปค์์
readPref()
๋ฅผ ์ถ๊ฐํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ์ฟผ๋ฆฌ๋ฅผ ๋ณต์ ๋ณธ ์ธํธ์ ๋ฉค๋ฒ๋ก ๋ผ์ฐํ ํ๋ ๋ฐฉ๋ฒ์ ์ ์ดํฉ๋๋ค.์ฐธ๊ณ
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฌธ์๋ฅผ ๊ฒ์ํ๊ธฐ ์ ์ ์ปค์์
readPref()
์ ์ ์ฉํด์ผ ํฉ๋๋ค.
๋งค๊ฐ๋ณ์
Parameter | ์ ํ | ์ค๋ช
|
---|---|---|
๋ฌธ์์ด | ๋ค์ ์ฝ๊ธฐ ์ค์ (read preference) ๋ชจ๋ ์ค ํ๋: | |
๋ฌธ์ ๋ฐฐ์ด | ์ ํ ์ฌํญ. ์ง์ ๋ ํ๊ทธ๊ฐ ์๋ ๋ฉค๋ฒ์๊ฒ ์ฝ๊ธฐ ๋์์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํ๊ทธ ์ธํธ ์
๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฝ๊ธฐ ์ค์ (read preference) ํ๊ทธ ์ธํธ ๋ชฉ๋ก์ ์ฐธ์กฐํ์ธ์. | |
๋ฌธ์ | MongoDB 8.0ํค์ง๋ ์ฝ๊ธฐ(hedged read)๋ MongoDB ๋ถํฐ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ์ฝ๊ธฐ ์ค์ (read preference) ์ ์ง์ ํ๋ ์ ํ ์ฌํญ. ํค์ง๋ ์ฝ๊ธฐ( hedged read) ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ๋ฌธ์์ ๋๋ค.
|
readPref()
๋ ์ฝ๊ธฐ ์ค์ ์ ๋ํ ์ฝ๊ธฐ ์ค์ maxStalenessSeconds
์ต์
์ ์ง์ํ์ง ์์ต๋๋ค.
ํธํ์ฑ
์ด ๋ฉ์๋๋ ๋ค์ ํ๊ฒฝ์์ ํธ์คํ ๋๋ ๋ฐฐํฌ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
MongoDB Atlas: ํด๋ผ์ฐ๋์์์ MongoDB ๋ฐฐํฌ๋ฅผ ์ํ ์์ ๊ด๋ฆฌํ ์๋น์ค
์ฐธ๊ณ
์ด ๋ช ๋ น์ ๋ชจ๋ MongoDB Atlas ํด๋ฌ์คํฐ์์ ์ง์๋ฉ๋๋ค. ๋ชจ๋ ๋ช ๋ น์ ๋ํ Atlas ์ง์์ ๊ดํด ์์ธํ ์์๋ณด๋ ค๋ฉด ์ง์๋์ง ์๋ ๋ช ๋ น์ ์ฐธ์กฐํ์ญ์์ค.
MongoDB Enterprise: MongoDB์ ๊ตฌ๋ ๊ธฐ๋ฐ ์์ฒด ๊ด๋ฆฌ ๋ฒ์
MongoDB Community: MongoDB์ ์์ค ์ฌ์ฉ ๊ฐ๋ฅ ๋ฌด๋ฃ ์์ฒด ๊ด๋ฆฌ ๋ฒ์
์์
์ฝ๊ธฐ ์ค์ (read preference) ๋ชจ๋ ์ง์
๋ค์ ์์ ์ ์ฝ๊ธฐ ์ค์ ๋ชจ๋ ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๊ธฐ ๋์์ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๋ก ์ง์ ํฉ๋๋ค.
db.collection.find({ }).readPref( "secondary")
์ฝ๊ธฐ ์ค์ (read preference) ํ๊ทธ ์ธํธ ์ง์
ํน์ ํ๊ทธ๊ฐ ์๋ ์ธ์ปจ๋๋ฆฌ๋ฅผ ๋์์ผ๋ก ํ๋ ค๋ฉด mode ๋ฐ tagSet ๋ฐฐ์ด์ ๋ชจ๋ ํฌํจํฉ๋๋ค.
db.collection.find({ }).readPref( "secondary", [ { "datacenter": "B" }, // First, try matching by the datacenter tag { "region": "West"}, // If not found, then try matching by the region tag { } // If not found, then use the empty document to match all eligible members ] )
์ธ์ปจ๋๋ฆฌ ์ ํ ํ๋ก์ธ์ค์์ MongoDB๋ datacenter: "B"
ํ๊ทธ๊ฐ ์๋ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๋ฅผ ๋จผ์ ์ฐพ์ผ๋ ค๊ณ ํฉ๋๋ค.
๋ฐ๊ฒฌ๋๋ฉด MongoDB๋ ์ ๊ฒฉ ์ธ์ปจ๋๋ฆฌ๋ฅผ
datacenter: "B"
ํ๊ทธ๊ฐ ์๋ ์ธ์ปจ๋๋ฆฌ๋ก ์ ํํ๊ณ ๋๋จธ์ง ํ๊ทธ๋ฅผ ๋ฌด์ํฉ๋๋ค.์๋ฌด๊ฒ๋ ๋ฐ๊ฒฌ๋์ง ์์ผ๋ฉด MongoDB๋
"region": "West"
ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ๋ฅผ ์ฐพ์ผ๋ ค๊ณ ์๋ํฉ๋๋ค.๋ฐ๊ฒฌ๋๋ฉด MongoDB๋ ์ ๊ฒฉ ์ธ์ปจ๋๋ฆฌ๋ฅผ
"region": "West"
ํ๊ทธ๊ฐ ์๋ ์ธ์ปจ๋๋ฆฌ๋ก ์ ํํฉ๋๋ค.์๋ฌด๊ฒ๋ ๋ฐ๊ฒฌ๋์ง ์์ผ๋ฉด MongoDB๋ ์ ๊ฒฉ ์ธ์ปจ๋๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์์ธํ ๋ด์ฉ ์ ํ๊ทธ ์ผ์น ์์๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ค์๋ ์ฐธ์กฐํ์ธ์.
ํค์ง๋ ์ฝ๊ธฐ(hedged read) ์ง์
์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๊ฒฝ์ฐ ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ์๋ ์ฝ๊ธฐ ์ค์ (read preference) ์ ๋ํ ํค์ง๋ ์ฝ๊ธฐ( hedged read )๋ฅผ ํ์ฑํ ํ ์ ์์ต๋๋ค. ํค์ง๋ ์ฝ๊ธฐ(hedged read)๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด mongos
์ ํค์ง๋ ์ฝ๊ธฐ(hedged read)์ ๋ํ enabled support
๊ฐ ์์ด์ผ ํ๋ฉฐ( ๊ธฐ๋ณธ๊ฐ) primary
์ด ์๋ ์ฝ๊ธฐ ์ค์ ์์ ํค์ง๋ ์ฝ๊ธฐ(hedged read)๋ฅผ ํ์ฑํ ์์ด์ผ ํฉ๋๋ค.
ํค์ง๋ ์ฝ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ์ธ์ปจ๋๋ฆฌ๋ฅผ ๋์์ผ๋ก ํ๋ ค๋ฉด ๋ค์ ์์ ๊ฐ์ด ๋ชจ๋์ hedgeOptions๋ฅผ ๋ชจ๋ ํฌํจํด์ผ ํฉ๋๋ค.
ํ๊ทธ ์ธํธ ์์ด
db.collection.find({ }).readPref( "secondary", // mode null, // tag set { enabled: true } // hedge options ) ํ๊ทธ ์ธํธ ํฌํจ
db.collection.find({ }).readPref( "secondary", // mode [ { "datacenter": "B" }, { } ], // tag set { enabled: true } // hedge options )