Computer Science/๐Ÿ’พ Database

[DB] RDBMS์˜ SQL๊ณผ NoSQL ์ฐจ์ด

J1Yun 2023. 3. 21. 17:02
728x90

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS, SQL Database)

  • ๊ณ ์ •๋œ ํ–‰(row)๊ณผ ์—ด(column)๋กœ ๊ตฌ์„ฑ๋œ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
  • ํ…Œ์ด๋ธ”์˜ ๊ด€๊ณ„๊ฐ€ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์กฐํ™”๋œ ์ฟผ๋ฆฌ ์–ธ์–ด(SQL)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃธ
  • ๊ฐ ์—ด์€ ํ•˜๋‚˜์˜ ์†์„ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ , ํ–‰์—๋Š” ๊ฐ ์—ด์˜ ๋ฐ์ดํ„ฐ ํ˜•์‹์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ
  • ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ์™€ ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋“ฑ์„ ์‚ฌ์ „์— ์ •์˜ํ•œ ํ›„ ๊ทธ ํ˜•์‹์„ ์œ ์ง€ํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ ์กฐ์ž‘
  • ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ง๊ด€์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Œ

์žฅ์ 

  • ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋œ ์Šคํ‚ค๋งˆ, ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ
  • ๊ด€๊ณ„๋Š” ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต์—†์ด ํ•œ๋ฒˆ๋งŒ ์ €์žฅ

๋‹จ์ 

  • ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์–ด๋ ค์›Œ ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง
  • ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ์–ด์„œ Join ๋ฌธ์ด ๋งŽ์€ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ์Œ
  • ๋Œ€์ฒด๋กœ ์ˆ˜์ง์  ํ™•์žฅ๋งŒ ๊ฐ€๋Šฅํ•จ

 

 

๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(NoSQL Database)

  • Key-Value, ๋ฌธ์„œ ๋“ฑ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
  • ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ๋ฐ ๋ฐ์ดํ„ฐ ์ €์žฅ ํ˜•์‹์— ๋Œ€ํ•œ ์ œํ•œ์ด ์—†์Œ
  • ํ…Œ์ด๋ธ” ๊ฐ„ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์Œ

์žฅ์ 

  • ์Šคํ‚ค๋งˆ๊ฐ€ ์—†์–ด์„œ ์œ ์—ฐํ•จ. ์–ธ์ œ๋“ ์ง€ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ •ํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ•„๋“œ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•„์š”๋กœ ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ €์žฅ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ์†๋„๊ฐ€ ๋นจ๋ฆ„
  • ์ˆ˜์ง ๋ฐ ์ˆ˜ํ‰ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ชจ๋“  ์ฝ๊ธฐ/์“ฐ๊ธฐ ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

๋‹จ์ 

  • ์œ ์—ฐ์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ฒฐ์ •์„ ๋ฏธ๋ฃจ๊ฒŒ ๋  ์ˆ˜ ์žˆ์Œ
  • ๋ฐ์ดํ„ฐ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ ๋  ๊ฒฝ์šฐ ๋ชจ๋“  ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•ด ์ˆ˜์ •ํ•ด์ฃผ์–ด์•ผ ํ•จ

 

 

NoSQL Database ์œ ํ˜•

  • Key-Value ํƒ€์ž… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • ์†์„ฑ๊ณผ ๊ฐ’์— ๋Œ€ํ•ด Key-Value ์Œ์œผ๋กœ ๋‚˜ํƒ€๋‚ด์–ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์—ด์˜ ํ˜•ํƒœ๋กœ ์ €์žฅ
    • Ex) Redis, Dynamo ๋“ฑ
  • ๋ฌธ์„œํ˜•(Document) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”์ด ์•„๋‹Œ JSON๊ณผ ์œ ์‚ฌํ•œ ํ˜•์‹์œผ๋กœ ๋ฌธ์„œํ™”ํ•˜์—ฌ ์ €์žฅ
    • ๊ฐ๊ฐ์˜ ๋ฌธ์„œ๋Š” ํ•˜๋‚˜์˜ ์†์„ฑ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์ปฌ๋ ‰์…˜์ด๋ผ๊ณ  ํ•˜๋Š” ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌ
    • Ex) MongoDB ๋“ฑ
  • Wide-Column Store ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์—ด(column)์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘์ค‘์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • ๊ฐ ์—ด์—๋Š” key-value ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๊ณ , ์ปฌ๋Ÿผ ํŒจ๋ฐ€๋ฆฌ(column families)๋ผ๊ณ  ํ•˜๋Š” ์—ด์˜ ์ง‘ํ•ฉ์ฒด ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌ
    • ํ•˜๋‚˜์˜ ํ–‰์— ๋งŽ์€ ์—ด์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์–ด์„œ ์œ ์—ฐ์„ฑ์ด ๋†’์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ํ•„์š”ํ•œ ์—ด์„ ์œ ์—ฐํ•˜๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์–ด ๊ทœ๋ชจ๊ฐ€ ํฐ ๋ฐ์ดํ„ฐ ๋ถ„์„์— ์ฃผ๋กœ ์‚ฌ์šฉ
    • Ex) Cassandra, HBase ๋“ฑ
  • ๊ทธ๋ž˜ํ”„(Graph) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๊ทธ๋ž˜ํ”„์™€ ๋น„์Šทํ•œ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • ๋…ธ๋“œ(nodes)์— ์†์„ฑ๋ณ„(entities)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , ๊ฐ ๋…ธ๋“œ ๊ฐ„์˜ ๊ด€๊ณ„๋Š” ์„ (edge)์œผ๋กœ ํ‘œํ˜„
    • Ex) Neo4J, InfiniteGraph

 

 

SQL Database VS NoSQL Database

  • ๋ฐ์ดํ„ฐ ์ €์žฅ(Storage)
    • SQL DB๋Š” SQL์„ ํ™œ์šฉํ•ด ๋ฏธ๋ฆฌ ์ž‘์„ฑ๋œ ์Šคํ‚ค๋งˆ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •ํ•ด์ง„ ํ˜•์‹์— ๋”ฐ๋ผ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ ์ €์žฅ
    • NoSQL DB๋Š” key-value, document, wide-column, graph ๋“ฑ์˜ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ 
  • ์Šคํ‚ค๋งˆ(Schema)
    • SQL DB๋Š” ๋ฐ์ดํ„ฐ ์†์„ฑ๋ณ„๋กœ ์—ด(column)์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ •ํ•ด ๋ฏธ๋ฆฌ ์ •ํ•ด ๊ณ ์ •๋œ ํ˜•์‹์˜ ์Šคํ‚ค๋งˆ๊ฐ€ ํ•„์š”
    • NoSQL DB๋Š” ๋™์ ์œผ๋กœ ์Šคํ‚ค๋งˆ์˜ ํ˜•ํƒœ๋ฅผ ๊ด€๋ฆฌ
  • ์ฟผ๋ฆฌ(Query)
    • SQL DB๋Š” SQL๊ณผ ๊ฐ™์ด ๊ตฌ์กฐํ™”๋œ ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ํ…Œ์ด๋ธ”์˜ ํ˜•์‹๊ณผ ํ…Œ์ด๋ธ”๊ฐ„์˜ ๊ด€๊ณ„์— ๋งž์ถฐ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ
    • NoSQL DB๋Š” ๊ตฌ์กฐํ™” ๋˜์ง€ ์•Š์€ ์ฟผ๋ฆฌ ์–ธ์–ด๋กœ๋„ ๋ฐ์ดํ„ฐ ์š”์ฒญ์ด ๊ฐ€๋Šฅ
  • ํ™•์žฅ์„ฑ(Scalability)
    • SQL DB์€ ์ฃผ๋กœ ์ˆ˜์ง์  ํ™•์žฅ(๋†’์€ ์„ฑ๋Šฅ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ CPU ์‚ฌ์šฉ)๋งŒ ์šฉ์ด
    • NoSQL DB๋Š” ์ˆ˜์ง์  ํ™•์žฅ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ˆ˜ํ‰์  ํ™•์žฅ(์„œ๋ฒ„ ์ฆ์„ค, ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ์ด์šฉ)์—๋„ ์œ ๋ฆฌ

 

 

SQL ๊ธฐ๋ฐ˜์˜ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ผ€์ด์Šค

  • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•˜๋ฉฐ ๋ณ€๊ฒฝ ๋  ์—ฌ์ง€๊ฐ€ ์—†์œผ๋ฉฐ ๋ช…ํ™•ํ•œ ์Šคํ‚ค๋งˆ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ
  • ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ
    • ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด(๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ) ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ธฐ ๋•Œ๋ฌธ

 

NoSQL ๊ธฐ๋ฐ˜์˜ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ผ€์ด์Šค

  • ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ ๋ฐ ํ™•์žฅ ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
  • ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ๋ฅผ ์ž์ฃผ ํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์€ ์ž์ฃผ ์—†๋Š” ๊ฒฝ์šฐ
  • ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ค„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ˆ˜ํ‰์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ

 

 

โญ๏ธ ์ฐธ๊ณ 

728x90