MongoDB - YooByWk/YooByWk.github.io GitHub Wiki

MongoDB

MongoDB ๋Œ€ํ‘œ์ ์ธ NoSQL๋กœ ๋„ํ๋จผํŠธ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค.

์ „ํ†ต์ ์ธ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDB)๊ฐ€ ํ–‰๊ณผ ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ JSON๊ณผ ์œ ์‚ฌํ•œ BJON(Binary JSON) ํ˜•์‹์˜ ๋ฌธ์„œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

ํŠน์ง•

1. ๋ฌธ์„œ ๋ชจ๋ธ

๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜์˜ ๋ฌธ์„œ์— ์บก์Аํ™” ๋˜์–ด ์ €์žฅ๋œ๋‹ค. ์ด ๋ฌธ์„œ๋Š” ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

RDB์˜ Row ์— ํ•ด๋‹นํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ์ง€์—ญ์„ฑ์ด ๋†’์•„ ๊ด€๋ จ ์ •๋ณด ์ ‘๊ทผ์ด ๋น ๋ฅด๋‹ค.

2. ์œ ์—ฐํ•œ ์Šคํ‚ค๋งˆ

์ปฌ๋ ‰์…˜ ๋‚ด Document ๋“ค์€ ์„œ๋กœ ๋‹ค๋ฅธ ํ•„๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ํŠน์ง•์œผ๋กœ ์ธํ•ด ์„œ๋น„์Šค ๋ณ€๊ฒฝ/ํ™•์žฅ์— ๋”ฐ๋ฅธ ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ ๋น„์šฉ์ด ๋‚ฎ๋‹ค.

3. ๊ณ ๊ฐ€์šฉ์„ฑ

Replica Set ์„ ํ†ตํ•ด ์ž๋™ ์žฅ์•  ๋ณต๊ตฌ (Failover) ๋ฐ ๋ฐ์ดํ„ฐ ๋‹ค์ค‘ํ™”๋ฅผ ์ง€์›.

๋งŒ์•ฝ ํ”„๋ผ์ด๋จธ๋ฆฌ ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒ์‹œ, ์„ธ์ปจ๋”๋ฆฌ ์„œ๋ฒ„๋ฅผ ๋ฆฌ๋” ์„œ๋ฒ„๋กœ ์‚ฌ์šฉ(์ž๋™)

4. ์ˆ˜ํ‰ ํ™•์žฅ์„ฑ

์ƒค๋”ฉ์„ ํ†ตํ•ด ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ„์‚ฐ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ.

์ •ํ™•ํžˆ ๋งํ•˜๋ฉด ์ž๋™์ ์œผ๋กœ ์ง„ํ–‰ํ•ด์ฃผ์–ด auto-sharding ์ด๋ผ ๋ณผ ์ˆ˜ ์žˆ์Œ

RDB์™€ ๋น„๊ต

๊ตฌ๋ถ„ MongoDB (NoSQL) RDB (SQL)
์Šคํ‚ค๋งˆ ์œ ์—ฐํ•จ (Schemaless) ๊ณ ์ •์  (Fixed Schema)
ํ™•์žฅ ์ˆ˜ํ‰ ํ™•์žฅ (Sharding) ์šฉ์ด ์ˆ˜์ง ํ™•์žฅ (Scale-Up) ์ค‘์‹ฌ
๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๊ณ  ์ž„๋ฒ ๋”ฉ(Embedding) ๋˜๋Š” ์ฐธ์กฐ(Referencing)๋กœ ํ‘œํ˜„ ์ •๊ทœํ™”๋ฅผ ํ†ตํ•œ Join์œผ๋กœ ํ‘œํ˜„
๋ฌด๊ฒฐ์„ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์—์„œ ๋ณด์žฅ (Mongoose ๋“ฑ) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ ˆ๋ฒจ์—์„œ ๋ณด์žฅ (ํŠธ๋žœ์žญ์…˜ ์ œ์•ฝ์กฐ๊ฑด)

์‚ฌ์šฉ

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

๊ฐ™์ด๋ณด๊ธฐ

Mongoose