2017_10_11_mongoDB - denlyou/AIL GitHub Wiki

๋ชฝ๊ณ  DB

์†Œ๊ฐœ

  • 10gen์‚ฌ ๊ฐœ๋ฐœ
  • Document Data Model ํƒ€์ž…์˜ NoSQL
  • ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜์—ฌ json ํ˜•ํƒœ๋กœ ์ €์žฅ
    • ์Šคํ‚ค๋งˆ๋ฅผ ๊ณ ์ •ํ•˜์ง„ ์•Š์•„ risk๊ฐ€ ์ ์Œ
  • join์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•˜๋Š”๊ฒŒ ์ค‘์š”

ํŠน์ง•

  • ๋ฉ”๋ชจ๋ฆฌ ๋งต ํ˜•ํƒœ์˜ ํŒŒ์ผ ์—”์ง„ DB
    • ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ฐ€๊ธฐ ์„ฑ๋Šฅ ์ขŒ์šฐ
  • ๊ณ„์† ์Œ“์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ ํ•ฉ
    • ex> ๋กœ๊ทธ ๋ฐ์ดํ„ฐ, ์ด๋ฒคํŠธ ์ฐธ์—ฌ๋‚ด์—ญ, ์„ธ์…˜
    • ํŠนํžˆ ๊ธˆ์œต, ๊ฒฐ์ œ, ํšŒ์›์ •๋ณด์™€ ๊ฐ™์€ DB๋กœ๋Š” ๋งค์šฐ ๋ถ€์ ํ•ฉ (ํ•„์š”ํ•˜๋ฉด RDBMS๊ฐ™์ด ์“ฐ๊ธฐ)

Document Data Medel

  • key-value ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ง‘ํ•ฉ
  • key์—๋Š” String, Number, Date ๊ฐ€๋Šฅ
  • document์— ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋‹ด์•„์•ผํ•จ
    • ํ•˜์œ„value์— ๋ฐฐ์—ด์ด๋‚˜ ์ƒˆ๋กœ์šด ๋„ํ๋จผํŠธ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ
  • join์ด ๋ถˆ๊ฐ€๋Šฅ
    • ๋ฏธ๋ฆฌ join๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผํ•จ

์„ค๊ณ„๋Š” ์ข…์ด๋ฌธ์„œ ์ž‘์„ฑํ•˜๋“ฏ~ํ•˜๋ฅด๋Š” ์†์„ค์ด ์žˆ์Œ?

JSON ( http://www.json.org/json-ko.html )

  • Javascript Object Notation
  • lightweight data ๊ตํ™˜ ํ˜•์‹
    • xml ์ฒ˜๋Ÿผ ๋‹ค์–‘ํ•œ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑ ๊ฐ€๋Šฅ
    • xml ๋ณด๋‹ค ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์Œ
  • ์‚ฌ๋žŒ๋„, ๊ธฐ๊ณ„๋„ ์ƒ์„ฑ/ํ•ด์„ํ•˜๊ธฐ ์‰ฌ์›€
    • ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฒ˜๋ฆฌ ํšจ์œจ์ด ์ข‹์Œ

๊ฒฐ๋ก  : ์‰ฝ๊ณ , ๋น ๋ฅด๊ณ , ๊ฐ„ํŽธํ•˜๋‹ค

๋ชฝ๊ณ DB ์žฅ/๋‹จ์ 

์žฅ์ 

  • schema-less : ๋‹ค์–‘ํ•ญ ํ˜•ํ…Œ ๋ฐ์ดํ„ฐ ์ˆ˜์šฉ, ๋ณ€ํ™”์— risk๊ฐ€ ์ ์Œ
  • read/write ๋น ๋ฆ„
  • Scale Out : ์žฅํžˆ ํ™•์žฅ์ด ๊ฐ„๋‹จํ•˜์—ฌ ๋งŽ์€ ๋ฐ์ดํ„ฐ ์ €์žฅ์ด ๊ฐ€๋Šฅ
  • json ๊ตฌ์กฐ : ์ง๊ด€์ ์ด๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  ๊ฐœ๋ฐœ์ด ํŽธํ•จ

๋‹จ์ 

  • ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ์ค‘ ์žฅ์•  ๋ฐœ์ƒ์‹œ ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๊ฐ€๋Šฅ
  • ๋งŽ์€ ์ธ๋ฑ์Šค ์‚ฌ์šฉ์‹œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋งŽ์ด ํ•„์š”
  • RDBMS์— ๋น„ํ•ด
    • ์ €์žฅ๊ณต๊ฐ„์ด ๋งŽ์ด ํ•„์š”
    • ๋ณต์žกํ•œ join ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง
    • transactions ์ง€์›์ด ๋ฏธ์•ฝ

๋น…๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํŠนํ™”

  • memory mapped๋ฅผ ์‚ฌ์šฉ
    • OS์˜ ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ ๋ณด๊ด€ํ•˜๋‹ค ๋น„๋™๊ธฐ๋กœ disk์— ๊ธฐ๋ก ํ•˜๋Š” ๋ฐฉ์‹
    • ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
    • OS๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์‹œ ๊ธ‰๊ฒฉํ•œ ์„ฑ๋Šฅ์ €ํ•˜

๋ถˆ์•ˆ์ •์„ฑ

  • ๋ฐ์ดํ„ฐ๊ฐ€ ํฌ๋ฉด~
    • ์ผ๋ถ€ ๋ฐ์ดํ„ฐ ์†์‹ค ๊ฐ€๋Šฅ
    • ์ƒค๋”ฉ, ๋ ˆํ”Œ๋ฆฌ์นด ๋น„์ •์ƒ ๋™์ž‘ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ

๋ชฝ๊ณ DB ์ฃผ์š”๊ธฐ๋Šฅ

์ฟผ๋ฆฌ ๋Œ€์‹  CRUD์šฉ ๋ฉ”์†Œ๋“œ ์ œ๊ณต

  • C : save(), R : find(), U : update(), D : remove()
  • ์ธ๋ฑ์Šค ์ œ๊ณต (์—ฌ๋Ÿฌ๊ฐœ, ๋ณตํ•ฉ ๊ฐ€๋Šฅ)
  • DB๋ณต์ œ ์ง€์› (master-slave ๊ตฌ์„ฑ) : ์žฅ์•  ๋Œ€์‘์— ์œ ๋ฆฌํ•จ
  • ์ƒค๋”ฉ ์ง€์› : SW์ ์œผ๋กœ DB๋ฅผ ๋ถ„์‚ฐ์ €์žฅ
  • ๋งต๋ฆฌ๋“€์Šค ๊ธฐ๋Šฅ : ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐํ•˜์—ฌ ์—ฐ์‚ฐํ›„ ๋‹ค์‹œ ํ•ฉ์น˜๋Š” ๊ธฐ์ˆ 

(..๊ฐœ๋…์ด ์–ด๋ ค์›Œ์ง„๋‹ค..๋‚˜์ค‘์— ๋‹ค์‹œ๋ณด์ž..)