๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป DEV/Database

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

by vodkassi 2021. 1. 5.
728x90

Q. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€? (Relational Databse)

 

์ผ๋ฐ˜์ ์œผ๋กœ '์ •๋ณด'๋ฅผ '๋ฐ์ดํ„ฐ'๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  '์ •๋ณด์˜ ์ง‘ํ•ฉ' ๋˜๋Š” '์ฒด๊ณ„ํ™”๋œ ์ •๋ณด์˜ ์ง‘ํ•ฉ'์„ '๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค' (DB) ๋ผ๊ณ  ํ•œ๋‹ค. ๊ฐ€๋ น, SNS ์— ๊ฐ€์ž…๋œ ์ด์šฉ์ž๋“ค์˜ ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ด๋ฉ”์ผ์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ, ์„ฑ๋ณ„, ๋‚˜์ด ๋“ฑ์˜ ์ง‘ํ•ฉ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

Database ์˜ ์˜ˆ:

  ์•„์ด๋”” ๋น„๋ฐ€๋ฒˆํ˜ธ ์ „ํ™”๋ฒˆํ˜ธ ์„ฑ๋ณ„ ๋‚˜์ด ...
0 abc 12345 01011112222 F 19  
1 def 67890 01098765432 F 33  
2 ghi 24680 01012341234 M 21  

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์ด ์กด์žฌํ•˜๋Š”๋ฐ, ์œ„์™€ ๊ฐ™์€ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ˜•์„ฑํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๊ณ„ํ˜• (Relational) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๊ณ  ํ•œ๋‹ค. "๊ด€๊ณ„๋ฅผ ํ˜•์„ฑํ•˜๋‹ค"๋Š” ํ‘œํ˜„์ด ๋ชจํ˜ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

 

SNS์˜ ์œ ์ €๊ฐ€ aaa, bbb, ccc ์„ธ ๋ช…์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ๋‹ค. Table 1 ์—๋Š” SNS ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๊ฐ€, Table 2 ์—๋Š” ๊ฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ํ•œ ๋กœ๊ทธ์ธ ๊ธฐ๋ก์ด, Table 3 ์—๋Š” SNS ์— ์˜ฌ๋ผ์˜จ ๊ฒŒ์‹œ๋ฌผ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋‹ค. ์„ธ ํ…Œ์ด๋ธ”์— ๋‹ด๊ธด ์ •๋ณด๋ฅผ ํ•˜๋‚˜์˜ ํ‘œ์— ๋ชจ์•„ ๊ด€๋ฆฌํ•œ๋‹ค๋ฉด ์ค‘๋ณต ์ž…๋ ฅ๊ฐ’๋„ ๋งŽ์„ ๊ฒƒ์ด๋ฉฐ, ์ฒด๊ณ„์ ์ธ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ์งˆ ๊ฒƒ์ด๋‹ค. (ํŠนํžˆ ํŽ˜์ด์Šค๋ถ๊ณผ ๊ฐ™์ด ์œ ์ €๊ฐ€ ๋ช‡์‹ญ์–ต ๋ช… ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฐฉ๋Œ€ํ•˜๋‹ค๋ฉด ๋”์šฑ!) 

 

๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ฒด๊ณ„์ ์ธ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ฒด๊ณ„๋ฅผ RDBMS (Relational Database Management System) ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

 


Q. SQL ๊ณผ noSQL์˜ ์ฐจ์ด๋Š”?

 

RDBMS ์ค‘ SQL ์€ Structured Query Language ์˜ ์•ฝ์ž๋กœ, ํ•œ๊ตญ์–ด๋กœ๋Š” '๊ตฌ์กฐ์  ์งˆ์˜ ์–ธ์–ด' ์ด๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์–ธ์–ด์ด๋ฉฐ, ์€ํ–‰์ด๋‚˜ ์ƒ์—…์‹œ์„ค์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” Oracle ์„ ๋น„๋กฏํ•˜์—ฌ MySQL, PostgreSQL, SQLite ๋“ฑ ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ์ด ์žˆ๋‹ค. SQL์˜ ์ฃผ์š” ํŠน์ง•์€ ์Šคํ‚ค๋งˆ (Schema: ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ) ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ, ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ, ๊ทธ๋ฆฌ๊ณ  ์ฟผ๋ฆฌ (Read & Write) ๋ฅผ ์“ด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.  

 

 

 

 

๋ฐ˜๋Œ€๋กœ, Not only SQL์˜ ์•ฝ์ž์ธ NoSQL์€ RDBMS๊ฐ€ ์•„๋‹Œ DBMS ๋กœ, ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์Šคํ‚ค๋งˆ๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๋Š” ์ ์€ ์ˆ˜์˜ ๋ฌถ์Œ์œผ๋กœ ์ €์žฅ๋˜๋ฉฐ, ๋Œ€๋Ÿ‰ request ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํผํฌ๋จผ์Šค๊ฐ€ ๋›ฐ์–ด๋‚˜๋‹ค. NoSQL์—๋Š” MongoDB, Elasticsearch, Cassandra ๋“ฑ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉฐ, ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ์„ ํ™œ์šฉํ•œ๋‹ค. 

 

 

 

SQL ๊ณผ NoSQL ์˜ ์ฐจ์ด์ ์— ํŒŒ๊ณ ๋“ค์–ด ๊นŠ์ด ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์œผ๋‚˜, ์ด๋“ค์˜ ํŠน์ง•์„ ๋ฐ˜์˜ํ•œ ๋Œ€ํ‘œ์ ์ธ ์ฐจ์ด์ ์€ 'ํ™•์žฅ์„ฑ' (Scalability) ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. SQL ์€ ์ˆ˜ํ‰์  ํ™•์žฅ์ด ์–ด๋ ค์šด ๋ฐ˜๋ฉด ์ˆ˜์ง์  ํ™•์žฅ์ด ์šฉ์ดํ•˜๋ฉฐ, NoSQL์€ ์ˆ˜ํ‰์  ํ™•์žฅ์ด ์šฉ์ดํ•œ ๋ฐ˜๋ฉด ์ˆ˜์ง์  ํ™•์žฅ์ด ์–ด๋ ต๋‹ค. 

 

์ˆ˜ํ‰์  ํ™•์žฅ (Horizontal Scaling) ์ด๋ž€, ๊ธฐ์กด ์„œ๋ฒ„ ์˜†์— ์„œ๋ฒ„๋ฅผ ๋” ์ถ”๊ฐ€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ญ์‹œ ๊ฐ ์„œ๋ฒ„์— ๋‚˜๋ˆ„์–ด ๋„ฃ๋Š” ์ž‘์—…์ด๋‹ค. SQL ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๊ด€๊ณ„ํ˜•์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ํ…Œ์ด๋ธ”์ด ์œ ๊ธฐ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ์˜ ๋ถ„๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ˆ˜์ง์  ํ™•์žฅ (Vertical Scaling) ์ด๋ž€, ๊ธฐ์กด ์„œ๋ฒ„์˜ ์šฉ๋Ÿ‰์„ ํ‚ค์šฐ๋Š” ์ž‘์—…์ด๋‹ค. ์„œ๋ฒ„๊ฐ€ ํด ์ˆ˜ ์žˆ๋Š” ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•˜๊ธด ํ•˜์ง€๋งŒ, ๊ทธ๋Ÿฐ ํ•œ๋„ ๋‚ด์—์„œ๋Š” ์–ผ๋งˆ๋“ ์ง€ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด ์žฅ์ ์ด์ž ๋‹จ์ ์ด ๋  ์ˆ˜ ์žˆ๋‹ค. 

 


๋Œ“๊ธ€