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) ์ด๋, ๊ธฐ์กด ์๋ฒ์ ์ฉ๋์ ํค์ฐ๋ ์์ ์ด๋ค. ์๋ฒ๊ฐ ํด ์ ์๋ ํ๊ณ๊ฐ ์กด์ฌํ๊ธด ํ์ง๋ง, ๊ทธ๋ฐ ํ๋ ๋ด์์๋ ์ผ๋ง๋ ์ง ํ์ฅ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด ์ฅ์ ์ด์ ๋จ์ ์ด ๋ ์ ์๋ค.
'๐ป DEV > Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Database] Redis Vs Memcached (0) | 2021.08.10 |
---|---|
[Database] Express/NodeJS ์์ Redis ์ฌ์ฉํ๊ธฐ (0) | 2021.07.18 |
[Database] ์ค๋ฉ(Sharding) ์ด๋? (0) | 2021.07.14 |
[Database] Row oriented DB, Column oriented DB ๋? (0) | 2021.07.13 |
[Database] DB ํจ๋ฌ๋ค์ (Paradigm) ์ด๋? (0) | 2021.07.08 |
๋๊ธ