With AI

MongoDB๋ž€?

  • -
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ MongoDB๋ž€?

MongoDB๋Š” NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค‘ ํ•˜๋‚˜๋กœ, JSON๊ณผ ์œ ์‚ฌํ•œ BSON(Binary JSON) ๋ฌธ์„œ ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฌธ์„œ ์ง€ํ–ฅ(Document-Oriented) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS)์™€ ๋‹ฌ๋ฆฌ ์Šคํ‚ค๋งˆ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฅผ ์ปฌ๋ ‰์…˜(Collection)๊ณผ ๋ฌธ์„œ(Document) ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค.


๐Ÿ”น MongoDB์˜ ํ•ต์‹ฌ ๊ฐœ๋…

1. ๋ฌธ์„œ(Document)

MongoDB์˜ ๊ธฐ๋ณธ ์ €์žฅ ๋‹จ์œ„๋กœ, ํ‚ค-๊ฐ’ ์Œ์„ ๊ฐ€์ง€๋Š” JSON๊ณผ ์œ ์‚ฌํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

{
  "_id": ObjectId("603d2f1d8b3c4a2f1c3a9e0c"),
  "name": "ํ™๊ธธ๋™",
  "age": 30,
  "address": {
    "city": "์„œ์šธ",
    "zipcode": "12345"
  }
}
  • _id: ๋ฌธ์„œ์˜ ๊ณ ์œ  ์‹๋ณ„์ž(๊ธฐ๋ณธ์ ์œผ๋กœ ์ž๋™ ์ƒ์„ฑ๋จ)
  • name, age, address: Key-Value ํ˜•์‹์œผ๋กœ ์ €์žฅ๋จ
  • address์ฒ˜๋Ÿผ **์ค‘์ฒฉ ๋ฌธ์„œ(Nested Document)**๋„ ์ง€์›

 

2. ์ปฌ๋ ‰์…˜(Collection)

์ปฌ๋ ‰์…˜์€ RDBMS์˜ ํ…Œ์ด๋ธ”(Table)๊ณผ ์œ ์‚ฌํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์„œ๋ฅผ ํฌํ•จํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์—ญํ• 
  • ๊ฐ™์€ ์ปฌ๋ ‰์…˜ ๋‚ด์˜ ๋ฌธ์„œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ตฌ์กฐ(์Šคํ‚ค๋งˆ)๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
  • ์˜ˆ: users ์ปฌ๋ ‰์…˜์— ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ฐ€๋Šฅ

 

3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database)

MongoDB๋Š” ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปฌ๋ ‰์…˜์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

use myDatabase  # ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ ํƒ ๋˜๋Š” ์ƒ์„ฑ
  • use ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•˜๋ฉด ์ž๋™ ์ƒ์„ฑ๋จ

 

4. BSON(Binary JSON)

MongoDB๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ BSON(Binary JSON) ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  • JSON๋ณด๋‹ค ๋น ๋ฅธ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์„ฑ๋Šฅ์„ ์ œ๊ณต
  • ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ง€์› (int, double, string, date, array, objectId ๋“ฑ)

๐Ÿ”น MongoDB์˜ ์ฃผ์š” ํŠน์ง•

โœ… 1. ์Šคํ‚ค๋งˆ๋ฆฌ์Šค(Schema-less) ๊ตฌ์กฐ

  • RDBMS์™€ ๋‹ฌ๋ฆฌ ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜ํ•  ํ•„์š” ์—†์Œ
  • ๊ฐ ๋ฌธ์„œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ํ•„๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๊ฐ€๋Šฅ

โœ… 2. ํ™•์žฅ์„ฑ(Scalability) – ์ˆ˜ํ‰ ํ™•์žฅ(Sharding) ์ง€์›

  • Sharding(์ƒค๋”ฉ): ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„์— ๋ถ„์‚ฐํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๊ธฐ์ˆ 
  • ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์„ฑ๋Šฅ ์ €ํ•˜ ์—†์ด ํ™•์žฅ ๊ฐ€๋Šฅ

โœ… 3. ๊ณ ์„ฑ๋Šฅ(High Performance)

  • ๋ฐ์ดํ„ฐ๊ฐ€ BSON(Binary JSON) ํ˜•์‹์œผ๋กœ ์ €์žฅ๋˜์–ด ๋น ๋ฅธ ์กฐํšŒ ๊ฐ€๋Šฅ
  • ์ธ๋ฑ์Šค(Index) ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ํ–ฅ์ƒ

โœ… 4. ์ž๋™ ๋ณต์ œ(Replication) ๋ฐ ๊ณ ๊ฐ€์šฉ์„ฑ(High Availability)

  • **Replica Set(๋ ˆํ”Œ๋ฆฌ์นด ์…‹)**์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ณต์ œ
  • ํ•œ ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ ๋‹ค๋ฅธ ๋ณต์ œ๋ณธ์ด ์ž‘๋™ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์†์‹ค ๋ฐฉ์ง€

โœ… 5. ๊ฐ•๋ ฅํ•œ ์ฟผ๋ฆฌ ๊ธฐ๋Šฅ

  • SQL๊ณผ ๋น„์Šทํ•œ ๊ฐ•๋ ฅํ•œ ์ฟผ๋ฆฌ ์–ธ์–ด ์ œ๊ณต
  • ๋‹ค์–‘ํ•œ ํ•„ํ„ฐ๋ง, ์ •๋ ฌ, ์ง‘๊ณ„(Aggregation) ์—ฐ์‚ฐ ์ง€์›

๐Ÿ”น MongoDB ๊ธฐ๋ณธ ๋ช…๋ น์–ด

โ–ถ๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ

show dbs       # ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชฉ๋ก ์กฐํšŒ
use myDB       # myDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ ๋˜๋Š” ์ƒ์„ฑ
db.dropDatabase()  # ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ญ์ œ

โ–ถ๏ธ ์ปฌ๋ ‰์…˜ ๊ด€๋ฆฌ

show collections   # ์ปฌ๋ ‰์…˜ ๋ชฉ๋ก ์กฐํšŒ
db.createCollection("users")  # ์ปฌ๋ ‰์…˜ ์ƒ์„ฑ
db.users.drop()    # ์ปฌ๋ ‰์…˜ ์‚ญ์ œ

โ–ถ๏ธ ๋ฌธ์„œ ์‚ฝ์ž…(Insert)

db.users.insertOne({ "name": "ํ™๊ธธ๋™", "age": 30 })  # ๋‹จ์ผ ๋ฌธ์„œ ์‚ฝ์ž…
db.users.insertMany([
  { "name": "๊น€์ฒ ์ˆ˜", "age": 25 },
  { "name": "์ด์˜ํฌ", "age": 28 }
])  # ์—ฌ๋Ÿฌ ๋ฌธ์„œ ์‚ฝ์ž…

โ–ถ๏ธ ๋ฌธ์„œ ์กฐํšŒ(Find)

db.users.find()  # ๋ชจ๋“  ๋ฌธ์„œ ์กฐํšŒ
db.users.find({ "age": 30 })  # ํŠน์ • ์กฐ๊ฑด ์กฐํšŒ
db.users.find().sort({ "age": 1 })  # ๋‚˜์ด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ

โ–ถ๏ธ ๋ฌธ์„œ ์ˆ˜์ •(Update)

db.users.updateOne({ "name": "ํ™๊ธธ๋™" }, { $set: { "age": 31 } })  # ๋‹จ์ผ ๋ฌธ์„œ ์ˆ˜์ •
db.users.updateMany({}, { $set: { "active": true } })  # ๋ชจ๋“  ๋ฌธ์„œ์— ํ•„๋“œ ์ถ”๊ฐ€

โ–ถ๏ธ ๋ฌธ์„œ ์‚ญ์ œ(Delete)

db.users.deleteOne({ "name": "ํ™๊ธธ๋™" })  # ํŠน์ • ๋ฌธ์„œ ์‚ญ์ œ
db.users.deleteMany({ "age": { $lt: 30 } })  # ๋‚˜์ด๊ฐ€ 30 ๋ฏธ๋งŒ์ธ ๋ชจ๋“  ๋ฌธ์„œ ์‚ญ์ œ

 

๐Ÿ”น MongoDB์™€ RDBMS ๋น„๊ต

ํ•ญ๋ชฉ MongoDB(NoSQL) RDBMS(MySQL, PostgreSQL ๋“ฑ)
๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋ฌธ์„œ(Document) ์ง€ํ–ฅ ํ…Œ์ด๋ธ”(Table) ๊ธฐ๋ฐ˜
์Šคํ‚ค๋งˆ(Schema) ์Šคํ‚ค๋งˆ ์—†์Œ (์œ ์—ฐํ•จ) ์Šคํ‚ค๋งˆ ๊ณ ์ • (์ •ํ˜•ํ™”)
ํ™•์žฅ ๋ฐฉ์‹ ์ˆ˜ํ‰ ํ™•์žฅ(Sharding) ์ˆ˜์ง ํ™•์žฅ(Scaling Up)
์ฟผ๋ฆฌ ์–ธ์–ด MongoDB Query Language (MQL) SQL
ํŠธ๋žœ์žญ์…˜ ์ง€์› ๊ธฐ๋ณธ์ ์œผ๋กœ ์•ฝํ•จ (ํ•˜์ง€๋งŒ ์ตœ์‹  ๋ฒ„์ „์—์„œ ์ง€์›) ๊ฐ•๋ ฅํ•œ ํŠธ๋žœ์žญ์…˜ ์ง€์›
์ธ๋ฑ์Šค ์ง€์› (B-Tree ๊ธฐ๋ฐ˜) ์ง€์› (B-Tree, Hash ๋“ฑ)

โœ… MongoDB๋Š” ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋‚˜ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
โœ… RDBMS๋Š” ๊ฐ•๋ ฅํ•œ ํŠธ๋žœ์žญ์…˜ ๋ฐ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”น MongoDB๊ฐ€ ์ ํ•ฉํ•œ ๊ฒฝ์šฐ

โœ… ๋น…๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
โœ… IoT, ๋กœ๊ทธ ๋ฐ์ดํ„ฐ ์ €์žฅ
โœ… JSON ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์ €์žฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
โœ… ๋น ๋ฅธ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์„ฑ๋Šฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

๐Ÿ”น MongoDB ์‚ฌ์šฉ ์˜ˆ์‹œ

๐Ÿ“Œ 1. ๋กœ๊ทธ ๋ฐ์ดํ„ฐ ์ €์žฅ

์„œ๋ฒ„ ๋กœ๊ทธ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ ๋“ฑ์˜ ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Œ

๐Ÿ“Œ 2. ์‹ค์‹œ๊ฐ„ ๋ถ„์„ ์‹œ์Šคํ…œ

MongoDB์˜ Aggregation Framework๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๊ฐ€๋Šฅ

๐Ÿ“Œ 3. IoT ๋ฐ ์„ผ์„œ ๋ฐ์ดํ„ฐ

๋‹ค์–‘ํ•œ ์„ผ์„œ ๋ฐ์ดํ„ฐ(๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ)๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ €์žฅ

๐Ÿ“Œ 4. ์†Œ์…œ ๋ฏธ๋””์–ด ๋ฐ ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ๊ด€๋ฆฌ

์Šคํ‚ค๋งˆ๊ฐ€ ์œ ๋™์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์…œ ๋„คํŠธ์›Œํฌ ๊ฐ™์€ ์„œ๋น„์Šค์— ์ ํ•ฉ


๐Ÿ”น ๊ฒฐ๋ก 

MongoDB๋Š” ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ, ๋›ฐ์–ด๋‚œ ํ™•์žฅ์„ฑ, ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.
ํŠนํžˆ, ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ์™€ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํŠธ๋žœ์žญ์…˜์ด ์ค‘์š”ํ•œ ๊ธˆ์œต ์‹œ์Šคํ…œ ๋“ฑ์—์„œ๋Š” RDBMS๊ฐ€ ๋” ์ ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ƒํ™ฉ์— ๋งž๊ฒŒ RDBMS์™€ NoSQL์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

'With AI' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Dart๋ž€?  (0) 2025.03.03
RESTful์ด๋ž€?  (1) 2025.02.28
์›น ์„œ๋ฒ„ Apache์™€ Nginx  (0) 2025.02.26
MySQL๊ณผ MariaDB์˜ ๊ด€๊ณ„  (0) 2025.02.25
Maven์ด๋ž€?  (0) 2025.02.24
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.