๐Ÿ‘จโ€๐Ÿ’ปMySQL SQLite MongoDB

์„์ค€ยท2022๋…„ 10์›” 16์ผ
0

Computer Science

๋ชฉ๋ก ๋ณด๊ธฐ
6/6
post-thumbnail

์ด์ „์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ
SQLite, MySQL, MongoDB ์ด๋ ‡๊ฒŒ 3๊ฐ€์ง€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ŠคํŽ™๊ณผ ์žฅ๋‹จ์ ์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ•› MySQL

์ฐธ๊ณ : https://smoh.tistory.com/m/369

Oracle์—์„œ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” Open Database์ž…๋‹ˆ๋‹ค. ์›น ๊ฐœ๋ฐœ์„ ํ•˜์‹ ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ์ ‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

๐Ÿ“ŒํŠน์ง•

MySQL์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ํ‘œ์ค€ SQL์„ ์ง€ํ‚ค์ง€ ์•Š๋Š” ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์†๋„๋ฅผ ๊ฐ€์žฅ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ๊ธฐ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, SQL์„ ์ •ํ™•ํžˆ ์ง€์ผœ์•ผ ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ์—์„œ๋Š” ๊ฐ„ํ˜น ์˜ค๋ฅ˜๊ฐ€ ๋‚  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ์žฅ์ 

  1. ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค
    • ์•ž์„œ ๋งํ•œ ๊ฒƒ๊ณผ ๊ฐ™์ด ํ‘œ์ค€ SQL ์ค€์ˆ˜๋ณด๋‹ค ์†๋„์— ์ง‘์ค‘ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ๊ธฐ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฆ…๋‹ˆ๋‹ค.
  2. ๊ฐ€์žฅ ์ธ๊ธฐ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค RDBMS์ธ ๋งŒํผ, ๋Œ€๊ทœ๋ชจ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ MySQL์„ ์ฒ˜์Œ ์‹œ์ž‘ํ•œ๋‹ค ํ•˜๋”๋ผ๋„ ๊ฐ€์ด๋“œ๋ผ์ธ์ด ๋„˜์น˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์ž‘ํ•˜๊ธฐ ํŽธํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์€ DB์ธ ๋•๋ถ„์— ํƒ€์‚ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ๋„๊ตฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊นŒ์ง€ ์˜ํ–ฅ์„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.
  3. ๋ณด์•ˆ ์ˆ˜์ค€์ด ๋†’๋‹ค
    • ์•”ํ˜ธ ๋ณด์•ˆ ์ˆ˜์ค€ ์„ค์ • ๊ฐ€๋Šฅ
    • ๋ฃจํŠธ ์‚ฌ์šฉ์ž ์•”ํ˜ธ ์ •์˜
    • ์‚ฌ์šฉ์ž ๋ณ„ ์—‘์„ธ์Šค ๊ถŒํ•œ ๋ณ„๋„ ๋ถ€์—ฌ ๊ฐ€๋Šฅ
    • ์ต๋ช… ๊ณ„์ •์„ ์ œ๊ฑฐํ•˜๊ณ  ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ๋ณด์•ˆ์„ ํ–ฅ์ƒํ•˜๋Š”๋ฐ ๋„์›€๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ํฌํ•จ๋œ ์„ค์น˜
  4. ๋ณต์ œ ๊ธฐ๋Šฅ ์ง€์›
    • ๋ฐ์ดํ„ฐ ๋ฐฑ์—… ์†”๋ฃจ์…˜ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜์—ฌ ์ˆ˜ํ‰์  ํ™•์žฅ์— ์œ ์šฉ
      • ์•ˆ์ •์„ฑ, ๋‚ด๊ฒฐํ•จ์„ฑ, ๊ฐ€์šฉ์„ฑ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ˜ธ์ŠคํŠธ์—์„œ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์—ฌ๋Ÿฌ ์œ ํ˜• ๋ณต์ œ ๊ธฐ๋Šฅ ์ง€์›

๐Ÿ“Œ ๋‹จ์ 

  1. ํ‘œ์ค€ SQL์„ ์ง€ํ‚ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ช‡๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ์กด์žฌํ•จ
    • ex. FULL JOIN
  2. ๋ผ์ด์„ ์Šค ๋ฐ ๋…์  ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ œ์•ฝ
    • ๋…์  ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ์ถœ์‹œ๋œ ์—ฌ๋Ÿฌ ์œ ๋ฃŒ ์ƒ์šฉ ์—๋””์…˜์ด ์กด์žฌํ•˜์—ฌ ์ผ๋ถ€ ๊ธฐ๋Šฅ์€ ํ•ด๋‹น ์—๋””์…˜์—์„œ๋งŒ ๊ฐ€๋Šฅํ•จ

๐Ÿ“Œ์ดํ‰

๐Ÿ‘MySQL์„ ์“ฐ๋ฉด ์ข‹์€ ๊ฒฝ์šฐ

  • ๋ถ„์‚ฐ ์ž‘์—…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ(MySQL์˜ ๋ณต์ œ๊ธฐ๋Šฅ)
  • ์ฝ๊ธฐ ์†๋„์— ์ง‘์ค‘๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์˜ ๊ฒฝ์šฐ(์›น ์‚ฌ์ดํŠธ, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜)
  • ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ , ์žฅ๊ธฐ์ ์œผ๋กœ ๋ดค์„ ๋•Œ ์„œ๋น„์Šค ํ™•์ •์„ฑ์— ์šฉ์ดํ•˜๋‹คใ…ฃ

๐Ÿ‘ŽMySQL์„ ์“ฐ๋ฉด ์•ˆ ์ข‹์€ ๊ฒฝ์šฐ

  • SQL์ค€์ˆ˜๊ฐ€ ์—„๊ฒฉํ•œ ๊ฒฝ์šฐ
  • ๋™์‹œ์„ฑ๊ณผ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์ด ์š”๊ตฌ๋˜๋Š” ๊ฒฝ์šฐ.
    - ์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ๊ธฐ๊ฐ€ ๋งŽ์€ ์ž‘์—…์—์„œ ์ž˜ ์ˆ˜ํ–‰๋˜์ง€๋งŒ, ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๊ฐ€ ๋™์‹œ์— ์ž‘์—…์ด ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ. -> PostgreSQL๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ RDBMS๊ฐ€ ๋” ๋‚˜์€ ์„ ํƒ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ•SQLite

๐Ÿ“ŒํŠน์ง•

  1. ๋…๋ฆฝํ˜• ํŒŒ์ผ ๊ธฐ๋ฐ˜์˜ RDBMS. ๋”ฐ๋ผ์„œ ์‹œ์Šคํ…œ์ด ์ถฉ๋Œํ•˜๊ฑฐ๋‚˜ ์ •์ „์ด ๋ฐœ์ƒํ•ด๋„ DB์˜ ํŠธ๋žœ์žญ์…˜์€ ACID๋ฅผ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.
  2. Serverless Database
  3. DB์— ์—‘์„ธ์Šค ํ•˜๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋””์Šคํฌ ํŒŒ์ผ์„ ์ง์ ‘ ์ฝ๊ณ  ์“ฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  4. ์˜คํ”ˆ RDBMS

๐Ÿ“Œ์žฅ์ 

  1. ๋งค์šฐ ๊ฐ€๋ณ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ๊ณต๊ฐ„์€ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ 600kb๋ฏธ๋งŒ์˜ ๊ณต๊ฐ„์„ ์ฐจ์ง€
  2. ์™„์ „ํžˆ ๋…๋ฆฝํ˜•์œผ๋กœ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์Šคํ…œ์„ ์„ค์น˜ํ•ด์•ผํ•˜๋Š” ์™ธ๋ถ€ ์ข…์†์„ฑ์ด ์—†์Œ
  3. ์‚ฌ์šฉ์ž ์นœํ™”์  RDBMS. ์ฆ‰์‹œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” Zero-configuration๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • serverless์ธ ๋งŒํผ ์‹œ์ž‘, ์žฌ์‹œ์ž‘, ์ค‘์ง€ ๊ณผ์ •์ด ์—†๊ณ , SQLite์„ค์น˜์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ†ตํ•ฉ๊นŒ์ง€์˜ ๊ณผ์ •์ด ๊ฐ„์†Œํ™”๋จ
  4. ์ด์‹์„ฑ์ด ๋›ฐ์–ด๋‚จ
    • ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„๋ฆฌ๋œ ํŒŒ์ผ์˜ ์ปค๋‹ค๋ž€ ๋ฐฐ์น˜๋กœ ์ €์žฅํ•˜๋Š” ๋‹ค๋ฅธ ์ผ๋ฐ˜์  DB์™€ ๋‹ฌ๋ฆฌ, SQLite๋Š” ํŒŒ์ผ์— ์ „์ฒด DB๊ฐ€ ์ €์žฅ๋จ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ณ„์ธต์˜ ์–ด๋””์—๋‚˜ ์œ„์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋™์‹ ๋””์Šคํฌ ๋˜๋Š” ํŒŒ์ผ ์ „์†ก ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด์„œ๋„ ์ „์†ก์ด ๊ฐ€๋Šฅ

๐Ÿ“Œ ๋‹จ์ 

  1. ๋™์‹œ์„ฑ ์ œํ•œ
    • ๋™์‹œ์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ SQLite์— ์•ก์„ธ์Šคํ•˜๊ณ  ์ฟผ๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ฃผ์–ด์ง„ ์‹œ๊ฐ„์— ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ.
    • ์ฆ‰, SQLite๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋‹ค๋ฅธ ์ž„๋ฒ ๋””๋“œ DB ๊ด€๋ฆฌ ์‹œ์Šคํ…œ๋ณด๋‹ค ๋” ํฐ ๋™์‹œ์„ฑ์„ ์ง€์›ํ•˜๊ธด ํ•˜์ง€๋งŒ, MySQL PostgreSQL๋งŒํผ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ RDBMS๋งŒํผ์€ ์•„๋‹ˆ๋‹ค
  2. ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ๊ฐ€ ์—†๋‹ค.
    • DB์‹œ์Šคํ…œ์€ DB ๋ฐ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ์‚ฌ์ „์— ์ •์˜๋œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ถŒํ•œ์„ ์ฃผ์ง€๋งŒ SQLite๋Š” ๋””์Šคํฌ ํŒŒ์ผ ํ˜•ํƒœ์ด๊ธฐ์—, ์•ก์„ธ์Šค ๊ฐ€๋Šฅํ•œ ๊ถŒํ•œ์€ ์˜ค์ง ๊ธฐ๋ณธ ์šด์˜ ์ฒด์ œ์˜ ์ผ๋ฐ˜์ ์ธ ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ฟ์ด ์—†๋‹ค. ๋”ฐ๋ผ์„œ ํŠน๋ณ„ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์š”๊ตฌ๋˜๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ์ข‹์ง€ ๋ชปํ•˜๋‹ค.
  3. 2๋ฒˆ์˜ ์ด์œ ๋กœ ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋‹ค.
    • SQLite์™€ ๊ฐ™์€ serverless DB๋ณด๋‹ค ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฒ„๊ทธ๋กœ ๋ถ€ํ„ฐ ๋” ์•ˆ์ „ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ex. ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
        - ํด๋ผ์ด์–ธํŠธ์˜ ์ž˜๋ชป๋œ ํฌ์ธํ„ฐ๋Š” ์„œ๋ฒ„ ๋ฉ”๋ชจ๋ฆฌ์˜ ์†์ƒ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
      • ์„œ๋ฒ„๋Š” ํ•˜๋‚˜์˜์˜๊ตฌ์ ์ธ ํ”„๋กœ์„ธ์Šค์ด๊ธฐ ๋•Œ๋ฌธ์—, ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ DB๋Š” serverless DB ๋” ์ •๋ฐ€ํ•˜๊ฒŒ ์•ก์„ธ์Šค๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ง์€ serverless DB๋ณด๋‹ค ๋” ์„ธ๋ฐ€ํ•œ ์ž ๊ธˆ๊ธฐ๋Šฅ๊ณผ ๋™์‹œ์„ฑ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ง๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ์ดํ‰

๐Ÿ‘SQLite ์“ฐ๋ฉด ์ข‹์€ ๊ฒฝ์šฐ

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

๐Ÿ‘ŽSQLite ์“ฐ๋ฉด ์•ˆ ์ข‹์€ ๊ฒฝ์šฐ

  • ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์š”๊ตฌ๋˜๋Š” ๊ฒฝ์šฐ
    - SQLite๋Š” ๋””์Šคํฌ ๋“œ๋ผ์ด๋ธŒ์™€ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์ง€์›ํ•œ๋‹ค๋ฉด 140TB๊นŒ์ง€ ๊ธฐ์ˆ ์ ์œผ๋กœ ์ง€์šฐ๋„ˆ์ด ๊ฐ€๋Šฅ ํ•˜๋‚˜, SQLite ๊ณต์‹๋ฌธ์„œ๋Š” ์–ด๋–ค DB๋“  1TB์— ๊ทผ์ ‘ํ•ด์ง€๋ฉด ์ค‘์•™ ์ง‘์ค‘ํ˜• ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ DB์— ๋ณด๊ด€ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋†’์€ ๋ณผ๋ฅจ ์“ฐ๊ธฐ๊ฐ€ ์š”๊ตฌ๋˜๋Š” ๊ฒฝ์šฐ
    - ์ง€์ •๋œ ์‹œ๊ฐ„์— ํ•˜๋‚˜์˜ ์“ฐ๊ธฐ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ฒ˜๋ฆฌ๋Ÿ‰์ด ํฌ๊ฒŒ ์ œํ•œ๋จ
  • ๋„คํŠธ์›Œํฌ ์•ก์„ธ์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ
    - serverless์ด๊ธฐ์— ์ง์ ‘์ ์ธ ๋„คํŠธ์›Œํฌ ์•ก์„ธ์Šค๊ฐ€ ๋ถˆ๊ฐ€ํ•จ

๐Ÿ•MongoDB

๐Ÿ“ŒํŠน์ง•

  1. NoSQL ์˜คํ”ˆ์†Œ์Šค Database์ด๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ ๋„ํ๋จผํŠธ DB

    NoSQL ?

    Not Only SQL ๋˜๋Š” Nonrelational Operational Database SQL์˜ ์•ฝ์ž
    ํ‘œ์ค€ํ™”๋œ ๊ตฌ์กฐ์  ์งˆ์˜ ์–ธ์–ด๊ฐ€ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋˜๋Š” ๊ด€๊ณ„๋ฅผ ๊ฐ–์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ค์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.
    ํ‚ค-๋ฒจ๋ฅ˜ / ๋„ํ๋จผํŠธ / ์ปฌ๋Ÿผ ํŒจ๋ฐ€๋ฆฌ / ๊ทธ๋ž˜ํ”„ DB ๋“ฑ 4๊ฐ€์ง€ ์ข…๋ฅ˜์˜ NoSQL์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    Document DB ?

    ํ•„๋“œ์™€ ๊ฐ’ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ JSON ํฌ๋งท์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž…๋‹ˆ๋‹ค.

  2. NoSQL์˜ ํŠน์ง•์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

    • ์œ ์—ฐ์„ฑ: ์Šคํ‚ค๋งˆ ์„ ์–ธ ์—†์ด ํ•„๋“œ์˜ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ๊ฐ€ ์ž์œ ๋กœ์€ Schema_-less๊ตฌ์กฐ
    • ํ™•์žฅ์„ฑ: ์Šค์ผ€์ผ ์•„์›ƒ์— ์˜ํ•œ ์„œ๋ฒ„ ํ™•์žฅ์ด ์šฉ์ด
    • ๊ณ ์„ฑ๋Šฅ: ๊ณ ์„ฑ๋Šฅ์˜ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌ
    • ๊ฐ€์šฉ์„ฑ: ์—ฌ๋Ÿฌ ๋Œ€์˜ ๋ฐฑ์—… ์„œ๋ฒ„ ๊ตฌ์„ฑ์ด ๊ฐ€๋Šฅํ•˜์—ฌ ์žฅ์•  ๋ฐœ์ƒ ์‹œ์—๋„ ๋ฌด์ค‘๋‹จ ์„œ๋น„์Šค๊ฐ€ ๊ฐ€๋Šฅ
  3. ๋น„ ํŠธ๋žœ์žญ์…˜

    • ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š๊ณ  ๊ฐ๊ฐ์˜ ๋„ํ๋จผํŠธ ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ
    • ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ Commit ๋˜๋Š” Rollback ๊ฐœ๋…์ด ์—†์œผ๋ฉฐ ๋ชจ๋‘ AutoCommit์œผ๋กœ ์ฒ˜๋ฆฌ
  4. ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ์‹œ JSON(JavaScript Object Notation)ํ˜•ํƒœ, ๋ฐ์ดํ„ฐ ์ €์žฅ์‹œ BSON(JSON๋ฐ์ดํ„ฐ๋ฅผ ์ด์ง„ ํ˜•์‹์œผ๋กœ ์ธ์ฝ”๋”ฉํ•œ ํฌ๋ฉง)ํ˜•์‹์„ ์‚ฌ์šฉ

    • ๊ฒ€์ƒ‰์†๋„๊ฐ€ ๋น ๋ฆ„
    • ์ธ์ฝ”๋”ฉ ๋””์ฝ”๋”ฉ์ด ํ•„์š”ํ•จ
  5. ๊ณ ์œ ์˜ DML(๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด)๋ฅผ ๊ฐ–๊ณ ์žˆ๋‹ค(Javascript ๊ธฐ๋ฐ˜ ๋ช…๋ น์–ด & JSON์„ ๋„ํ๋จผํŠธ ์ธ์ž๋กœ ์‚ฌ์šฉ)

  6. ๋ณ„๋„์˜ ์Šคํ‚ค๋งˆ ์„ ์–ธ ์—†์ด ๋„ํ๋จผํŠธ์˜ ํ•„๋“œ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค(์œ ์—ฐ์„ฑ & ์Šคํ‚ค๋งˆ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค)

๐Ÿ“Œ์žฅ์ 

  1. Schema-less๋กœ ์–ป๋Š” ์œ ์—ฐ์„ฑ
    • ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ฐ€๋Šฅ
    • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์˜ ์œ ์—ฐํ•œ ๋ณ€ํ™” ๊ฐ€๋Šฅ(๋ชจ๋ธ ๋ณ€๊ฒฝ, ํ•„๋“œ ํ™•์žฅ ์šฉ์ด
  2. Read/Write ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚จ
  3. Scale out ๊ตฌ์กฐ
    • ๋งŽ์€ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ฐ€๋Šฅ
    • ์žฅ๋น„ ํ™•์žฅ์ด ๊ฐ„๋‹จ
  4. JSON ๊ตฌ์กฐ: ๋ฐ์ดํ„ฐ ์ง๊ด€์  ์ดํ•ด ๊ฐ€๋Šฅ
  5. ์‚ฌ์šฉ๋ฐฉ๋ฒ•์ด ์‰ฝ๊ณ , ๊ฐœ๋ฐœ์ด ํŽธ๋ฆฌํ•จ

๐Ÿ“Œ ๋‹จ์ 

  1. ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ ์ค‘ ์žฅ์•  ๋ฐœ์ƒ ์‹œ, ๋ฐ์ดํ„ฐ ์†์‹ค ๊ฐ€๋Šฅ
  2. ๋งŽ์€ ์ธ๋ฑ์Šค ์‚ฌ์šฉ์‹œ, ์ถฉ๋ถ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ™•๋ณด ํ•„์š”
  3. ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„ ์†Œ๋ชจ๊ฐ€ RDB<S์— ๋น„ํ•ด ๋งŽ์Œ(๋น„ํšจ์œจ์ ์ธ Key ์ค‘๋ณต ์ž…๋ ฅ)
  4. ๋ณต์žกํ•œ JOIN ์‚ฌ์šฉ์‹œ ์„ฑ๋Šฅ ์ œ์•ฝ, ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๋ณด์žฅ์ด ์•ˆ๋จ
  5. ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์˜ค๋ฒ„ํ•  ๊ฒฝ์šฐ ๊ธ‰๊ฒฉํ•œ ์„ฑ๋Šฅ ์ €ํ•˜
  6. CASCADE ๋ชปํ•จ

๐Ÿ“Œ์ดํ‰

๐Ÿ‘MongoDB ์“ฐ๋ฉด ์ข‹์€ ๊ฒฝ์šฐ

  • ์Œ“์•„๋†“๊ณ  ์‚ญ์ œ๊ฐ€ ์—†๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ์ ํ•ฉ(์ˆ˜์ •x)
  • ์ถฉ๋ถ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ–๊ณ ์žˆ๊ณ , Read/Write์— ํŠนํ™”๋œ ๊ฒฝ์šฐ
  • ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅธ ์†๋„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ(๋น…๋ฐ์ดํ„ฐ ์‚ฐ์—…)
  • ๋กœ๊ทธ์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๊ฒฝ์šฐ
  • ์••๋„์ ์ธ ํผํฌ๋จผ์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ(RDB๋Œ€๋น„ 100๋ฐฐ ์ด์ƒ ์ฐจ์ด, memory mapped file)

๐Ÿ‘ŽMongoDB ์“ฐ๋ฉด ์•ˆ ์ข‹์€ ๊ฒฝ์šฐ

  • ํŠธ๋žœ์žญ์…˜์ด ํ•„์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ๋ถ€์ ํ•ฉ(๊ธˆ์œต๊ถŒ, ๊ฒฐ์ œ, ํšŒ์›์ •๋ณด ๋“ฑ)
  • ์—„๊ฒฉํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ๊ฒ€์‚ฌ๋‚˜ ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ
  • ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ์ค‘์š”ํ•œ ์‚ฌ๋ก€
profile
ํŒŒ์ด์ฌ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž ์ง€๋ง์ƒ

0๊ฐœ์˜ ๋Œ“๊ธ€