Docs Menu
Docs Home
/
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งค๋‰ด์–ผ
/ / /

cursor.readPref()

cursor.readPref(mode, tagSet, hedgeOptions)

์ค‘์š”

Mongo์‰ฌ ๋ฐฉ๋ฒ•

์ด ํŽ˜์ด์ง€์—์„œ๋Š” mongosh ๋ฉ”์„œ๋“œ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Node.js์™€ ๊ฐ™์€ ์–ธ์–ด๋ณ„ ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ ์„ค๋ช…์„œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

MongoDB API ๋“œ๋ผ์ด๋ฒ„์˜ ๊ฒฝ์šฐ ์–ธ์–ด๋ณ„ MongoDB ๋“œ๋ผ์ด๋ฒ„ ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ปค์„œ์— readPref() ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฟผ๋ฆฌ๋ฅผ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๋ฉค๋ฒ„๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์ „์— ์ปค์„œ์— readPref()์„ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Parameter
์œ ํ˜•
์„ค๋ช…

๋ชจ๋“œ

๋ฌธ์ž์—ด

๋‹ค์Œ ์ฝ๊ธฐ ์„ค์ • (read preference) ๋ชจ๋“œ ์ค‘ ํ•˜๋‚˜: primary, primaryPreferred, secondary, secondaryPreferred ๋˜๋Š” nearest

๋ฌธ์„œ ๋ฐฐ์—ด

์„ ํƒ ์‚ฌํ•ญ. ์ง€์ •๋œ ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š” ๋ฉค๋ฒ„์—๊ฒŒ ์ฝ๊ธฐ ๋Œ€์ƒ์„ ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํƒœ๊ทธ ์„ธํŠธ ์ž…๋‹ˆ๋‹ค. tagSet ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค primary

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฝ๊ธฐ ์„ค์ • (read preference) ํƒœ๊ทธ ์„ธํŠธ ๋ชฉ๋ก์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฌธ์„œ

MongoDB 8.0ํ—ค์ง€๋œ ์ฝ๊ธฐ(hedged read)๋Š” MongoDB ๋ถ€ํ„ฐ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์„ค์ • (read preference) ์„ ์ง€์ •ํ•˜๋Š” nearest ์ฟผ๋ฆฌ๋Š” ๋” ์ด์ƒ ๊ธฐ๋ณธ๊ฐ’ ํ—ค์ง€๋œ ์ฝ๊ธฐ(hedged read)๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ—ค์ง€๋œ ์ฝ๊ธฐ( ํ—ค์ง€๋œ ์ฝ๊ธฐ (hedged read))๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜๋ฉด MongoDB ๋Š” ํ—ค์ง€๋œ ์ฝ๊ธฐ( ํ—ค์ง€๋œ ์ฝ๊ธฐ (hedged read) read)๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ฒฝ๊ณ ๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

์„ ํƒ ์‚ฌํ•ญ. ํ—ค์ง€๋œ ์ฝ๊ธฐ( hedged read) ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค.

{ enabled: <boolean> }

enabled ํ•„๋“œ์˜ ๊ธฐ๋ณธ๊ฐ’์€ true์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋นˆ ๋ฌธ์„œ { } ์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ { enabled: true } ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

readPref()๋Š” ์ฝ๊ธฐ ์„ค์ •์— ๋Œ€ํ•œ ์ฝ๊ธฐ ์„ค์ • maxStalenessSeconds ์˜ต์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ ํ™˜๊ฒฝ์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ๋ฐฐํฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • MongoDB Atlas: ํด๋ผ์šฐ๋“œ์—์„œ์˜ MongoDB ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์™„์ „ ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค

์ฐธ๊ณ 

์ด ๋ช…๋ น์€ ๋ชจ๋“  MongoDB Atlas ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ช…๋ น์— ๋Œ€ํ•œ Atlas ์ง€์›์— ๊ด€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์ง€์›๋˜์ง€ ์•Š๋Š” ๋ช…๋ น์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • MongoDB Enterprise: MongoDB์˜ ๊ตฌ๋… ๊ธฐ๋ฐ˜ ์ž์ฒด ๊ด€๋ฆฌ ๋ฒ„์ „

  • MongoDB Community: MongoDB์˜ ์†Œ์Šค ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋ฌด๋ฃŒ ์ž์ฒด ๊ด€๋ฆฌ ๋ฒ„์ „

๋‹ค์Œ ์ž‘์—…์€ ์ฝ๊ธฐ ์„ค์ • ๋ชจ๋“œ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ๊ธฐ ๋Œ€์ƒ์„ ์„ธ์ปจ๋”๋ฆฌ ๋ฉค๋ฒ„๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

db.collection.find({ }).readPref( "secondary")

ํŠน์ • ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š” ์„ธ์ปจ๋”๋ฆฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋ ค๋ฉด 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๋Š” ์ ๊ฒฉ ์„ธ์ปจ๋”๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ ์€ ํƒœ๊ทธ ์ผ์น˜ ์ˆœ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ๋„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฒฝ์šฐ ํ”„๋ผ์ด๋จธ๋ฆฌ๊ฐ€ ์•„๋‹Œ ์ฝ๊ธฐ ์„ค์ • (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
    )

๋Œ์•„๊ฐ€๊ธฐ

์ปค์„œ.readConcern

์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ