Docs Menu

convertToCapped (์˜๋ฌธ)

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

convertToCapped

๊ฒฝ๊ณ 

์ƒค๋“œ ์ปฌ๋ ‰์…˜์—์„œ๋Š” ์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์ง€ ์•Š์Œ

MongoDB ๋Š” ์ƒค๋”ฉ๋œ ์ปฌ๋ ‰์…˜์—์„œ convertToCapped ๋ช…๋ น์„ ์ง€์› ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค .

convertToCapped ๋ช…๋ น์€ ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์ด ์•„๋‹Œ ๊ธฐ์กด ์ปฌ๋ ‰์…˜์„ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

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

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

์ค‘์š”

์ด ๋ช…๋ น์€ ์„œ๋ฒ„๋ฆฌ์Šค ์ธ์Šคํ„ด์Šค์—์„œ๋Š” ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ง€์›๋˜์ง€ ์•Š๋Š” ๋ช…๋ น์„ ์ฐธ์กฐํ•˜์„ธ์š”.

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

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

๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ๋ฌธ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค:

db.runCommand(
{
convertToCapped: <collection>,
size: <capped size>,
writeConcern: <document>,
comment: <any>
}
)

์ด ๋ช…๋ น์€ ๋‹ค์Œ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ•„๋“œ
์„ค๋ช…

convertToCapped (์˜๋ฌธ)

๋ณ€ํ™˜ํ•  ๊ธฐ์กด ์ปฌ๋ ‰์…˜์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

size

๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์˜ ์ตœ๋Œ€ ํฌ๊ธฐ(๋‹จ์œ„: ๋ฐ”์ดํŠธ)์ž…๋‹ˆ๋‹ค.

์“ฐ๊ธฐ ๊ณ ๋ ค

์„ ํƒ ์‚ฌํ•ญ. ๋ช…๋ น์˜ ์“ฐ๊ธฐ ๊ณ ๋ ค drop (write concern) ๋ฅผ Expressํ•˜๋Š” ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์“ฐ๊ธฐ ๊ณ ๋ ค (write concern)๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.

comment

์„ ํƒ ์‚ฌํ•ญ. ์ด ๋ช…๋ น์— ์ฒจ๋ถ€ํ•  ์‚ฌ์šฉ์ž ์ œ๊ณต ์ฝ”๋ฉ˜ํŠธ์ž…๋‹ˆ๋‹ค. ์„ค์ •๋˜๋ฉด ์ด ์„ค๋ช…์€ ๋‹ค์Œ ์œ„์น˜์—์„œ ์ด ๋ช…๋ น์˜ ๋ ˆ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€์€ ์œ ํšจํ•œ ๋ชจ๋“  BSON types (๋ฌธ์ž์—ด, ์ •์ˆ˜, ๊ฐ์ฒด, ๋ฐฐ์—ด ๋“ฑ)์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

convertToCapped ๋Š” ๊ธฐ์กด ์ปฌ๋ ‰์…˜ (<collection>)์„ ๊ฐ€์ ธ์™€์„œ size ์ธ์ˆ˜(<capped size>)๋กœ ์ง€์ •๋œ ์ตœ๋Œ€ ํฌ๊ธฐ(๋ฐ”์ดํŠธ)๋ฅผ ๊ฐ€์ง„ ๊ณ ์ • ์‚ฌ์ด์ฆˆ ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜ ์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ณ€ํ™˜ ํ”„๋กœ์„ธ์Šค ์ค‘์— convertToCapped ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋™์ž‘์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

  • MongoDB๋Š” ์›๋ž˜ ์ปฌ๋ ‰์…˜์˜ ๋ฌธ์„œ๋ฅผ ์ž์—ฐ์Šค๋Ÿฌ์šด ์ˆœ์„œ ๋กœ ํƒ์ƒ‰ํ•˜๊ณ  ๋ฌธ์„œ๋ฅผ ์ƒˆ ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์— ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์— ์ง€์ •๋œ capped size ๊ฐ€ ์›๋ณธ ๋น„๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ, MongoDB๋Š” ์‚ฝ์ž… ์ˆœ์„œ ๋˜๋Š” ์„ ์ž… ์„ ์ถœ ์ˆœ์„œ์— ๋”ฐ๋ผ ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์˜ ๋ฌธ์„œ๋ฅผ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

  • ๋‚ด๋ถ€์ ์œผ๋กœ, MongoDB๋Š” collection์„ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์ ˆ์ฐจ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    • cloneCollectionAsCapped ๋ช…๋ น์€ ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜ ์„ ๋งŒ๋“ค๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    • MongoDB๋Š” ์›๋ณธ collection์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

    • renameCollection ๋Š” ์ƒˆ ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜ ์˜ ์ด๋ฆ„์„ ์›๋ž˜ ์ปฌ๋ ‰์…˜ ์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • ์ด๋Š” ์ž‘์—… ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฐํƒ€ ๋ฝ์„ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ž ๊ธˆ์„ ์ ์šฉํ•œ ๋‹ค๋ฅธ ์ž‘์—…์€ ํ•ด๋‹น ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ž ๊ธˆ์„ ์ ์šฉํ•˜๋Š” ์ž‘์—…์— ๊ด€ํ•œ ๋‚ด์šฉ์€ ์ผ๋ฐ˜์ ์ธ ํด๋ผ์ด์–ธํŠธ ์ž‘์—…์—์„œ ์–ด๋–ค ์ž ๊ธˆ์„ ์‚ฌ์šฉํ•˜๋‚˜์š”?๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

๊ฒฝ๊ณ 

convertToCapped๋Š” _id ํ•„๋“œ์— ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ œ์™ธํ•œ ์›๋ž˜ ์ปฌ๋ ‰์…˜์˜ ์ธ๋ฑ์Šค๋ฅผ ์ƒˆ ์ปฌ๋ ‰์…˜์— ๋‹ค์‹œ ๋งŒ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์ปฌ๋ ‰์…˜์— ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ณ€ํ™˜์ด ์™„๋ฃŒ๋œ ํ›„์— ์ด๋Ÿฌํ•œ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์ œ์—์„œ๋Š” db.collection.insertOne() ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ events collection์„ ๋งŒ๋“ค๊ณ  db.collection.stats() ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ collection์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

db.events.insertOne( { click: 'button-1', time: new Date() } )
db.events.stats()

MongoDB๋Š” ๋‹ค์Œ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค:

{
"ns" : "test.events",
...
"capped" : false,
...
}

events collection์„ ๊ณ ์ • ์‚ฌ์ด์ฆˆ ์ปฌ๋ ‰์…˜์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๋œ collection ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

db.runCommand( { convertToCapped: 'events', size: 8192 } )
db.events.stats()

MongoDB๋Š” ๋‹ค์Œ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค:

{
"ns" : "test.events",
...
"capped" : true,
"max" : NumberLong("9223372036854775807"),
"maxSize" : 8192,
...
}

convertToCapped๋Š” _id ํ•„๋“œ์— ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ œ์™ธํ•œ ์›๋ž˜ ์ปฌ๋ ‰์…˜์˜ ์ธ๋ฑ์Šค๋ฅผ ์ƒˆ ์ปฌ๋ ‰์…˜์— ๋‹ค์‹œ ๋งŒ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์ปฌ๋ ‰์…˜์— ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ณ€ํ™˜์ด ์™„๋ฃŒ๋œ ํ›„์— ์ด๋Ÿฌํ•œ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

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