Server

[DB] MongoDB

soogoori 2024. 7. 8. 13:58

MongoDB ํŠน์ง•

  • ์˜คํ”ˆ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ NoSQL DB
  • ์‚ฌ์ „ ์ •์˜๋œ ์Šคํ‚ค๋งˆ ์—†์ด ์œ ์—ฐํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ ์ €์žฅ ๐Ÿ‘‰ row, column ํ•„์š” X
  • ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ๋ถ„์‚ฐํ•˜์—ฌ ์ €์žฅ, ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
  • ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์ธ๋ฑ์Šค ์ง€์›
  • ๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ๊ฐ€ ๋งŽ์€ ์„œ๋น„์Šค
    ๐Ÿ‘‰ BSON ํ†ตํ•ด ์“ฐ๊ธฐ๊ฐ€ ๋น ๋ฅด๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ
    ๐Ÿ‘‰ collection์„ ์—ฌ๋Ÿฌ ์„œ๋ฒ„๋กœ ๋ถ„ํ• ํ•˜์—ฌ ์ €์žฅ ๋ฐ ์กฐํšŒํ•˜๋Š” sharding ์ง€์› 
    • ex) IoT ๋ฐ ์„ผ์„œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ์„œ๋น„์Šค ๐Ÿ‘‰ ๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ ๋งŽ์ด ๋ฐœ์ƒ (์ด๋ฒคํŠธ ๋ฐœํ–‰)
  • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค
    • ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋‚˜๋ˆ ์„œ ์ €์žฅํ•˜๊ณ  ์‰ฝ๊ฒŒ ์„œ๋ฒ„ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ 

 

BSON

student ↔ address๋Š” ์ผ๋Œ€์ผ๊ด€๊ณ„

  • Binary ํ˜•์‹์˜ JSON
  • JSON๋ณด๋‹ค ๋น ๋ฅธ ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉ
  • ํ•„๋“œ์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ์ธ์ฝ”๋”ฉ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง
  • ๋‹ค์–‘ํ•œ ํƒ€์ž… ์ง€์›
    • document์˜ id : ObjectId
    • ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ : BinData
    • ๋‚ ์งœ : Date, ISODate
    • ์ •๊ทœํ‘œํ˜„์‹
    • nested JSON ๐Ÿ‘‰ ๋”์šฑ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ €์žฅ ๊ฐ€๋Šฅ

  • MongoDB BSON ์ธ์ฝ”๋”ฉ
    • ์ฒซ ์ค„ ๐Ÿ‘‰ ์ „์ฒด document ํฌ๊ธฐ ๊ฐ€๋ฆฌํ‚ด
    • ๋ฐ์ดํ„ฐ ํƒ€์ž…, ํ•„๋“œ๋ช…, ๊ธธ์ด(๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋”ฐ๋ผ optional), ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ

 

 

Document

  • ํ•˜๋‚˜์˜ ๊ฐœ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ด
  • RDB์˜ Row์— ํ•ด๋‹น (โ‰’ record)
  • ํ•„๋“œ์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ์ค‘์ฒฉ๋œ ํ•˜์œ„ Document๋‚˜ ๋ฐฐ์—ด ํฌํ•จ ๊ฐ€๋Šฅ
  • BSON ํ˜•์‹์œผ๋กœ ์ €์žฅ๋˜๋ฉฐ BSON์—์„œ ์ง€์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž… ์‚ฌ์šฉ

 

Collection

  • MongoDB Document๋“ค์„ ์ €์žฅํ•˜๋Š” ๋‹จ์œ„
  • RDB์˜ Table์— ํ•ด๋‹น
  • ํ•˜๋‚˜์˜ Collection ๋‚ด์—์„œ Document๋งˆ๋‹ค ๋‹ค๋ฅธ ํ•„๋“œ์™€ ๋ฐ์ดํ„ฐ ํƒ€์ž… ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ 

 

Database

  • MongoDB Collection์„ ์ €์žฅํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ
  • Document๋ฅผ ์ถ”๊ฐ€ํ•  Collection์ด ์—†๋‹ค๋ฉด ์ž๋™์œผ๋กœ collection ์ƒ์„ฑ

 

 

  • blogs ๐Ÿ‘‰ Collection
  • admin ๐Ÿ‘‰ database

 

 

ํŠธ๋žœ์žญ์…˜

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์„œ์™€ ์ปฌ๋ ‰์…˜ ์‚ฌ์ด์— ์ž‘์—… ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ ๐Ÿ‘‰ ACID ๋ณด์žฅ
  • ์—ฌ๋Ÿฌ ์ƒค๋“œ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฝ์šฐ ์ฟผ๋ฆฌ๊ฐ€ broadcast ๋˜๋ฏ€๋กœ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ
  • 1๋ฒˆ ์žฌ์‹œ๋„ ํ›„ ์‹คํŒจ์‹œ ํด๋ผ์ด์–ธํŠธ์— ์—๋Ÿฌ ์ „ํŒŒ

 

 

 

RDB vs MongoDB

 

 

์ฐธ๊ณ ์ž๋ฃŒ

https://blog.jetbrains.com/idea/2019/10/intellij-idea-2019-3-eap5-mongodb-support-template-and-more/

https://www.linkedin.com/pulse/relational-database-vs-mongodb-shaharyar-saleem/

https://www.pragimtech.com/blog/mongodb-tutorial/relational-and-non-relational-databases/#google_vignette

https://www.mongodb.com/docs/v4.2/core/databases-and-collections/

https://studio3t.com/academy/lessons/mongodb-basics/