Database Schema Design

SQL vs NoSQL

SQL๊ณผ NoSQL์˜ ์ฐจ์ด์™€ ๊ฐ๊ฐ์˜ ์žฅ๋‹จ์ 

SQL (Structured Query Language)

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž์ฒด๋ฅผ ๋งํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ ํ•˜๋Š” ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ๋งํ•œ๋‹ค.

SQL is ths language we use to 'talk' to our database

SQL์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(RDBMS)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ์ˆ˜์ •, ์‚ญ์ œ ๋ฐ ๊ฒ€์ƒ‰ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋Š” ์ •ํ•ด์ง„(์—„๊ฒฉํ•œ) ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ (= structure)๋ฅผ ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

    • ์Šคํ‚ค๋งˆ๋ฅผ ์ค€์ˆ˜ํ•˜์ง€ ์•Š๋Š” ๋ ˆ์ฝ”๋“œ๋Š” ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค.

  • ๋ฐ์ดํ„ฐ๋Š” ๊ด€๊ณ„๋ฅผ ํ†ตํ•ด์„œ ์—ฐ๊ฒฐ๋œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ…Œ์ด๋ธ”์— ๋ถ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

    • ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

  • PostgreSql, MySQL, Oracle, Microsoft SQL Server

NoSQL

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

  • ์Šคํ‚ค๋งˆ ์—†์Œ

  • ๊ด€๊ณ„ ์—†์Œ

    • ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์ผํ•œ ์ปฌ๋ ‰์…˜์— ๋„ฃ๋Š”๋‹ค.

    • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋‚˜๋ˆ„์–ด ๋‹ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    • ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปฌ๋ ‰์…˜๋“ค์„ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค. ๋นผ๋จน์œผ๋ฉด ์•ˆ๋œ๋‹ค.

๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฌธ์„œ(documents)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋ฌธ์„œ๋Š” JSON ๋ฐ์ดํ„ฐ์™€ ๋น„์Šทํ•œ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

Redis, RavenDB, Cassandra, MongoDB, BigTable, HBase, Neo4j and CouchDB

[์ˆ˜์ง์ (Vertical) & ์ˆ˜ํ‰์ (Horizontal) ํ™•์žฅ(Scaling)]

  • ์ˆ˜์ง์  ํ™•์žฅ

    • ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ๋งŒ ํ–ฅ์ƒ

    • SQL์€ ์ˆ˜์ง์  ํ™•์žฅ๋งŒ ๊ฐ€๋Šฅ

  • ์ˆ˜ํ‰์  ํ™•์žฅ

    • ๋” ๋งŽ์€ ์„œ๋ฒ„๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ „์ฒด์ ์œผ๋กœ ๋ถ„์‚ฐ๋จ

    • NoSQL ๊ฐ€๋Šฅ

์žฅ๋‹จ์ 

SQL์˜ ์žฅ์ 

  • ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ ๋œ ์Šคํ‚ค๋งˆ, ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ

  • ๊ด€๊ณ„๋Š” ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต์—†์ด ํ•œ๋ฒˆ๋งŒ ์ €์žฅ๋จ

  • ๊ตฌ์กฐ๊ฐ€ ์ž˜ ์žกํ˜€ ์žˆ๋‹ค.

  • ์„œ์น˜๊ฐ€ ๋น ๋ฅด๋‹ค.

  • ํŠผํŠผํ•˜๋‹ค.

  • db๊ฐ€ ์ฃฝ๋Š” ์ผ์€ ๋“œ๋ฌผ๋‹ค.

SQL์˜ ๋‹จ์ 

  • ๋œ ์œ ์—ฐํ•˜๋‹ค, ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ๋Š” ์‚ฌ์ „์— ๊ณ„ํš๋˜๊ณ  ์•Œ๋ ค์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— JOIN์œผ๋กœ ๋งค์šฐ ๋ณต์žกํ•˜๋‹ค.

  • ์ˆ˜ํ‰์  ํ™•์žฅ์ด ์–ด๋ ต๋‹ค.

  • ์„ฑ์žฅ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.

  • ๋™์ ‘์ด ์—„์ฒญ๋งŽ์€ ๊ฒƒ์€ DB๋Š” writeํ•  ๋•Œ๋งˆ๋‹ค ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ lock์„ ๊ฑด๋‹ค.

    • write์™€ read๋ฅผ ๋‚˜๋ˆ ๋†“๋Š”๋‹ค.

    • DB๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ฌ ์•„๋งˆ์กด์€...

NoSQL์˜ ์žฅ์ 

  • ์Šคํ‚ค๋งˆ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ํ›จ์”ฌ ๋” ์œ ์—ฐํ•˜๋‹ค.

    • ์–ธ์ œ๋“ ์ง€ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ •ํ•˜๊ณ  ์ƒˆ๋กœ์šด "ํ•„๋“œ"๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•„์š”๋กœ ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ €์žฅ

    • ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ์†๋„๊ฐ€ ๋นจ๋ผ์ง„๋‹ค.

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

  • ํŠธ๋ ๋กœ! ๋ณด๋“œ์— ๊ธ€์˜ฌ๋ฆฌ๊ณ  ์นด๋“œ๊ฐ€ ๋นจ๋ฆฌ ๋นจ๋ฆฌ ๋ฐ”๋€๋‹ค.

  • ๋ถ„์‚ฐ์‹œ์Šคํ…œ, ๋ถ„์‚ฐdb, ์ž์ฒด์ ์œผ๋กœ ๋ถ„์‚ฐ..

  • sql๋ณด๋‹ค ๋น„์‹ธ๋‹ค.

  • ๊ด‘๋ฒ”์œ„ํ•œ ํ•„ํ„ฐ

NoSQL์˜ ๋‹จ์ 

  • ์œ ์—ฐ์„ฑ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ฒฐ์ •์„ ํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ฏธ๋ฃจ๊ฒŒ ๋œ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์ค‘๋ณต์€ ์—ฌ๋Ÿฌ ์ปฌ๋ ‰์…˜์„ ์—…๋ฐ์ดํŠธ ์‹œ์ผœ์ค˜์•ผ ํ•œ๋‹ค.

SQL ์‚ฌ์šฉ์€?

  • ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ

  • ๋ช…ํ™•ํ•œ ์Šคํ‚ค๋งˆ๊ฐ€ ์‚ฌ์šฉ์ž์™€ ๋ฐ์ดํ„ฐ์— ์ค‘์š”ํ•  ๊ฒฝ์šฐ

NoSQL ์‚ฌ์šฉ์€?

  • ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ/ ํ™•์žฅ ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

  • ์ฝ๊ธฐ๋Š” ์ž์ฃผ ํ•˜์ง€๋งŒ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๊ฒฝ์šฐ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ˆ˜ํ‰์œผ๋กœ ํ™•์žฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

    • ๋ง‰๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ค„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

Last updated

Was this helpful?