16.1 SQL vs NoSQL databases

2024. 2. 27. 23:48ใ†CS - Roadmap.sh/16. Databases

CS - 16. Databases - 16.1 SQL vs NoSQL databases

Databases

๐Ÿ’กA database is a collection of useful data of one or more related organizations structured in a way to make data an asset to the organization. A database management system is a software designed to assist in maintaining and extracting large collections of data in a timely fashion.

 

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

 

SQL vs NoSQL databases

๐Ÿ’กSQL stands for Structured Query Language. It’s used for relational databases. A SQL database is a collection of tables that stores a specific set of structured data. Some examples are PostgreSQL, MySQL, MariaDB etc.

NoSQL stands for Not Only SQL. It’s used for non-relational databases. A NoSQL database is a collection of collections that stores a specific set of unstructured data. Some examples are MongoDB, CouchDB, Redis etc.

 

SQL์€ ๊ตฌ์กฐํ™”๋œ ์ฟผ๋ฆฌ ์–ธ์–ด์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํŠน์ • ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ์ €์žฅํ•˜๋Š” ํ…Œ์ด๋ธ” ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋กœ๋Š” PostgreSQL, MySQL, MariaDB ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
NoSQL์€ Not Only SQL์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค. ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํŠน์ • ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์„ ์ €์žฅํ•˜๋Š” ์ปฌ๋ ‰์…˜์˜ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋กœ๋Š” MongoDB, CouchDB, Redis ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

SQL(Structured Query Language) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS)๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์—ด๊ณผ ํ–‰์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ…Œ์ด๋ธ”์— ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ํ…Œ์ด๋ธ”์€ ๊ณ ์œ ํ•œ ํ‚ค๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์ :

ํ‘œ์ค€ํ™”๋œ ์–ธ์–ด(SQL)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ๊ฐ€ ์ •ํ™•ํ•˜๊ณ  ์ผ๊ด€์„ฑ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์—ฌ๋Ÿฌ ์ž‘์—…์„ ํ•œ ๋‹จ์œ„๋กœ ๋ฌถ์–ด ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.


๋‹จ์ :
์ˆ˜ํ‰ ํ™•์žฅ์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ƒˆ๋กœ์šด ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์šฉ๋Ÿ‰์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๊ฒƒ์ด ๋ณต์žกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋Š” ์‹œ์Šคํ…œ์„ ๋Š๋ฆฌ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

NoSQL(Not Only SQL) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋‹ฌ๋ฆฌ ๊ณ ์ •๋œ ์Šคํ‚ค๋งˆ๊ฐ€ ์—†์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ๋Š” JSON, ํ‚ค-๊ฐ’ ์Œ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ์ €์žฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์ :

์ˆ˜ํ‰ ํ™•์žฅ์ด ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ƒˆ๋กœ์šด ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์šฉ๋Ÿ‰์„ ์‰ฝ๊ฒŒ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋‹จ์ :
ํ‘œ์ค€ํ™”๋œ ์ฟผ๋ฆฌ ์–ธ์–ด๊ฐ€ ์—†์œผ๋ฏ€๋กœ, ๊ฐ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ณด๋‹ค ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

 

 

 

๋‘˜์„ ์‚ฌ์šฉํ•  ๊ฒฐ์ •ํ•  ๋•Œ ์ค‘์š”ํ•˜๊ฒŒ ๊ณ ๋ คํ•ด์•ผ ํ• ์ ์€ 

1. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ

2. ๋ณต์žกํ•œ ์ฟผ๋ฆฌ ์ˆ˜ํ–‰

3. ๋ฐ์ดํ„ฐ์˜ ์ •ํ˜•ํ™” ์—ฌ๋ถ€

4. ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

5. ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ

6. ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„ 

์ •๋„๋กœ ๋ณผ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

1. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ - SQL ์ด ํŠธ๋žœ์žญ์…˜ ์ง€์›๊ณผ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ๋กœ ๊ธˆ์œต, ์˜๋ฃŒ ๊ฐ™์€ ๋ฌด๊ฒฐ์„ฑ์ด ์ค‘์š”ํ•œ ํ™˜๊ฒฝ์—์„œ ๊ณ ๋ ค๋ฉ๋‹ˆ๋‹ค.

 

2. ๋ณต์žกํ•œ ์ฟผ๋ฆฌ 

-  SQL์˜ ๊ด€๊ฒŒํ˜• ๋ชจ๋ธ์ด DB์˜ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ, JOIN์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

 

3. ๋ฐ์ดํ„ฐ์˜ ์ •ํ˜•ํ™” ์—ฌ๋ถ€

- SQL ์€ ๊ณ ์ •๋œ ์Šคํ‚ค๋งˆ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๊ฐ€ ๋ฏธ๋ฆฌ ์ •ํ•ด์ ธ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์ข‹์Šต๋‹ˆ๋‹ค.

 

4. ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ

- NoSQL์€ ์ˆ˜ํ‰ ํ™•์žฅ์ด ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์—, ๋น…๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ๋•Œ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

5. ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

- 3๋ฒˆ๊ณผ ๋น„์Šทํ•œ ์˜์—ญ์ธ๋ฐ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š”๊ฒฝ์šฐ NoSQL์€ ๊ตฌ์กฐ๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์ฒ˜ํ• ์ˆ˜์žˆ์Šต๋‹ˆ๋‹ค.

 

6. ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„

- ๋น ๋ฅธ ์‘๋‹ต์‹œ๊ฐ„์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ NoSQL์€ DB์— ๊ฐ„๋‹จํ•œ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด ๋น ๋ฅธ ์‘๋‹ต์‹œ๊ฐ„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜, ์บ์‹ฑ, ์บ์‹œ, ์„ธ์…˜๋“ฑ ๊ด€๋ฆฌ์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

728x90

'CS - Roadmap.sh > 16. Databases' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

16.3 Entity Relationship Model (+ERD) (์ถ”๊ฐ€ํ•„์š”)  (0) 2024.03.28
16.2 Normalization vs Denormalization  (0) 2024.02.29