๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๐ŸŒฎ ๐Ÿ’ฌ
๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป/DB

[MongoDB] ๊ฐ„๋‹จํ•œ ๊ฐœ๋…์ •๋ฆฌ

by ๋ฐ”์ฟ„๋ฆฌ 2025. 1. 10.

 

๊ฐœ์š”

์ด๋ฒˆ์— ํฌ๋กค๋งํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชฝ๊ณ ๋””๋น„์— ์ ์žฌํ•ด๋‹ฌ๋ผ๋Š” ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์ง„ํ–‰ํ–ˆ๋‹ค.

์ฒ˜์Œ์œผ๋กœ ๋ชฝ๊ณ ๋””๋น„๋ฅผ ์ ‘ํ•ด๋ณด๋Š” ๊ฒธ ๊ฐœ๋… ์ •๋ฆฌ๋ฅผ ํ•ด๋ณผ๊นŒ ํ•œ๋‹ค.

๋ชฝ๊ณ ๋””๋น„ MongoDB

์˜คํ”ˆ์†Œ์Šค์ด๋‹ค

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ JSON ์œ ์‚ฌํ•œ ๋ฌธ์„œ ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜๋Š”๊ฒŒ ํŠน์ง•์ด๋‹ค.

์ „ํ†ต์ ์ธ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS)์™€๋Š” ๋‹ฌ๋ฆฌ, ์Šคํ‚ค๋งˆ๊ฐ€ ์—†๋‹ค.

 

ํŠน์ง•

(1) ๋ฌธ์„œ ๊ธฐ๋ฐ˜(Document-oriented) ์ €์žฅ

- ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”์˜ ํ–‰(row)์œผ๋กœ ์ €์žฅํ•˜๋Š” RDBMS์™€ ๋‹ฌ๋ฆฌ, MongoDB๋Š” BSON(Binary JOSN) ํฌ๋งท์˜ ๋ฌธ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

- ์˜ˆ:

{
  "name": "John",
  "age": 30,
  "skills": ["Python", "JavaScript"]
}

 

(2) ์Šคํ‚ค๋งˆ๋ฆฌ์Šค(Schema-less)

- ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์ „์— ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

- ๊ฐ ๋ฌธ์„œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ•„๋“œ์™€๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

(3) ๊ณ ์„ฑ๋Šฅ ๋ฐ ํ™•์žฅ์„ฑ

- ์ˆ˜ํ‰์  ํ™•์žฅ์„ ์ง€์›ํ•˜์—ฌ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์ ํ•ฉํ•˜๋‹ค.

- Sharding์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ„์‚ฐ ์ €์žฅ ๊ฐ€๋Šฅ

 

(4) ์œ ์—ฐํ•œ ์ฟผ๋ฆฌ

- SQL ๋Œ€์‹  ๊ณ ๊ธ‰ ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CRUD ์ž‘์—…์„ ์ˆ˜ํ–‰

- ๋ณต์žกํ•œ ํ•„ํ„ฐ๋ง, ์ •๋ ฌ, ์ง‘๊ณ„ ๋“ฑ์„ ์ง€์›

 

(5) ๋‚ด์žฅ ๋ณต์ œ ๋ฐ ๊ณ ๊ฐ€์šฉ์„ฑ

- ๋ณต์ œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ ๊ฐ€์šฉ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ๋†’์ž„

- Replica Set์„ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋ณธ์ œ๋ณธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์ž๋™์œผ๋กœ ์žฅ์•  ์กฐ์น˜

 

(6) ๊ฐ•๋ ฅํ•œ ์ง‘๊ณ„ ํ”„๋ ˆ์ž„์›Œํฌ

- ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•˜๊ฑฐ๋‚˜ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ ์ œ๊ณต

 

(7) ๋‹ค์–‘ํ•œ ์–ธ์–ด ์ง€์›

- MongoDB๋Š” Python, Java, Node.js, C++, PHP, Go ๋“ฑ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ์‰ฝ๊ฒŒ ํ†ตํ•ฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

์ฃผ์š” ์šฉ๋„

(1) ๋น…๋ฐ์ดํ„ฐ ๋ฐ ์‹ค์‹œ๊ฐ„ ๋ถ„์„

- ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ €์žฅํ•˜๊ณ  ์ฝ์–ด์•ผํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ

 

(2) ์ฝ˜ํ…์ธ  ๊ด€๋ฆฌ ๋ฐ ์นดํƒˆ๋กœ๊ทธ

- ๋‹ค์–‘ํ•œ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์œ ์šฉ

 

(3) ๋ชจ๋ฐ”์ผ ๋ฐ IoT ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

- ์Šคํ‚ค๋งˆ ์œ ์—ฐ์„ฑ ๋•๋ถ„์— ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

 

(4) ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

- ์‚ฌ์šฉ์ž ํ”„๋กœํŒŒ์ผ, ๋กœ๊ทธ ๋ฐ์ดํ„ฐ, ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ ์ €์žฅ

 

์ •๋ฆฌ

๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๋ฉด

(์žฅ์ ) ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ์œ ์—ฐํ•ด์„œ ๋น ๋ฅธ ์ฝ๊ธฐ, ์“ฐ๊ธฐ ์„ฑ๋Šฅ์— ์œ ๋ฆฌํ•˜๊ธฐ์— ํŠนํžˆ ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ์—์„œ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค. ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์ ํ•ฉํ•˜๊ณ  ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์ด ํ•„์š”์—†๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์œ ์šฉํ•˜๊ธฐ์— ๊ฐœ๋ฐœ ์ดˆ๊ธฐ ๋‹จ๊ณ„์˜ ์Šคํƒ€ํŠธ์—…, ๋น…๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, IoT ๊ฐ™์€ ๋ถ„์•ผ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

(๋‹จ์ ) ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋น„ํ•ด ๋ณต์žกํ•œ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ•˜๋‹ค. ์ž˜๋ชป ์„ค๊ณ„๋œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์€ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค.