๐ ๊ถ๊ธํ ๋ชจ๋ ๊ฒ์ ๊ธฐ๋กํฉ๋๋ค.
๐ ๊ธฐ๋ก์์ ๋ฉ์ถ์ง ์๊ณ ๋์ ๊ฒ์ผ๋ก ๋ง๋ญ๋๋ค.
๐ ์๋ชป๋ ์ ๋ณด๊ฐ ์๋ค๋ฉด ์ธ์ ๋ ์ง ๋๊ธ์ ๋จ๊ฒจ์ฃผ์ธ์ :D
๐ค SQL?
SQL์ Structured Query Language์ ์ฝ์๋ฉฐ ๊ตฌ์กฐํ๋ ์ฟผ๋ฆฌ ์ธ์ด์ด๋ค. SQL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์ด์ ๊ธฐ์ค์ผ๋ก ์ฃผ๋ก ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ๋๋ค. ๋ํ์ ์ธ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ MySQL, Oracle, SQLite, PostgreSQL, MariaDB ๋ฑ์ด ์๋ค. ์ฌ๊ธฐ์ ์ฟผ๋ฆฌ๋ ์ ์ฅ๋์ด ์๋ ์ ๋ณด๋ฅผ ํํฐํ๊ธฐ ์ํ ์ง๋ฌธ์ผ๋ก ์ํ๋ ๋ฐ์ดํฐ๋ง์ ๊ฐ์ ธ์ค๊ฒ ๋์์ค๋ค. SQL์ ๊ตฌ์กฐํ๋ ํ
์ด๋ธ์ ์ฌ์ฉํ๋ DB(๋ฐ์ดํฐ๋ฒ ์ด์ค)์์ ์ฌ์ฉ๊ฐ๋ฅํ๋ค. ๊ด๊ณํ DB์์๋ ํ
์ด๋ธ์ ์ฌ์ ์ ์ ์ํ ๋ค์ ๊ทธ์ ์๋ง๋ ๋ฐ์ดํฐ๋ง ๋ฃ์ ์ ์๋ค. ๊ทธ๋ ๊ธฐ์ ์ฒ์ ์คํค๋ง ์ค๊ณ์ ํ์ํ ๊ฒ์ผ๋ก ์์ ๋์๋ ๋ฐ์ดํฐ๋ณด๋ค ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ฒ ๋์๋ค๊ณ ์ฝ๊ฒ ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค. ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด์ ORM์ ์ฌ์ฉํ ์ ์๋ค. (Sequelize, TypeORM, ๋ฑ)
๊ด๊ณํ DB๋ ์คํค๋ง ์ค๊ณ์ one-to-one, one-to-many, many-to-many๋ฅผ ๋ช
ํ์ด ๊ท์ ์ํ๊ณ ์คํค๋ง๋ฅผ ์ง์ผํ๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก ์ค๋ณต๋๊ฑฐ๋ ์๋ชป ์
๋ ฅ๋ ๋ฐ์ดํฐ๊ฐ ์ฝ๊ฒ DB์ ์ฝ์ผ๋ ์ ์๋ค๋ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ค.
๐ง Where to use SQL?
- ์ด๊ธฐ ์คํค๋ง ๊ตฌ์ฑ์ ํตํด์ ๋๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ ๋
- ์คํค๋ง ๊ตฌ์กฐ๋ ๋น๊ต์ ๊ฐ๋จํ์ง๋ง Update๊ฐ ๋ง์ ๋
- Scale up์ ํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์ ์ ๋ (์๋ฒ์ ์ฑ๋ฅ์ด ํฅ์๋์ด์ผ ๋จ)
๐ค NoSQL?
SQL์ด ๊ตฌ์กฐํ ์ฟผ๋ฆฌ ์ธ์ด๋ผ๋ฉด, NoSQL์ ๋น๊ตฌ์กฐํ ์ฟผ๋ฆฌ ์ธ์ด์ด๋ค. SQL์ด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ํ ์ด๋ธ๋ก ๊ตฌ์กฐํ๋์ด ์ฐ๊ฒฐ๋์ด ์๋ค๋ฉด, NoSQL์ ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ฐ์ดํฐ๊ฐ ๊ณ ์ ๋์ด ์์ง ์๋ค. JOIN(no Relations)์ ๊ฐ๋ ์ด ์ฌ๋ผ์ง๊ณ , JOIN์ด ์๊ธฐ ๋๋ฌธ์ ์กฐํ๊ฐ SQL๋ณด๋ค ๋น๊ต์ ๋น ๋ฅด๋ค. NoSQL ๊ธฐ๋ฐ์ ๋น๊ด๊ณํ DB๋ ๋ค์ํ ํ์ ์ผ๋ก ๊ตฌ์ฑ๋ ์ ์๋ค.
- Key-Value ํ์ : ์ฌ๊ธฐ์ key๋ ์์ฑ ์ด๋ฆ์ ๋ปํ๊ณ , value๋ ์์ฑ์ ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ ๊ฐ์ ๋ปํ๋ค.
- ๋ฌธ์ํ(Document) ํ์ : ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์์ฒ๋ผ ์ ์ฅํ๋ค. ๋ณดํต JSON ์ ์ฌ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์ํํ๋ค. ๊ฐ๊ฐ์ ๋ฌธ์๋ ํ๋์ ์์ฑ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์ปฌ๋ ์ ์ด๋ผ ํ๋ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด์ ๊ด๋ฆฌํ๋ค. ๋ํ์ ์ธ ๋ฌธ์ํ DB๋ก๋ MongoDB๊ฐ ์๋ค.
- Wide-Column ํ์ : DB์ ์ด์ ๋ํ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ์ค์ ์ผ๋ก ์ผ๊ณ , ๊ฐ ์ด์๋ key-value ํ์์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๊ณ , ์ปฌ๋ผ ํ๋ฐ๋ฆฌ๋ผ ํ๋ ์ด์ ์งํฉ์ฒด ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค. ๋ํ์ ์ธ Wide-Column DB๋ก Cassandra, HBase๊ฐ ์๋ค.
- ๊ทธ๋ํ ํ์ : ์๋ฃ๊ตฌ์กฐ ๊ทธ๋ํ์ ๋น์ทํ ํ์์ด๋ค. ๋ํ์ ์ธ ํด๋น DB๋ก InfiniteGraph, Neo4J๊ฐ ์๋ค.
๐ง Where to use NoSQL?
- ์ดํ์ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋ ์ง ์์ํ ์ ์์ ๋
- Read / Write๊ฐ Update๊ฐ ๋ณด๋ค ํ์ ํ ๋ง์ ๋
- Scale up์ ํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๋ (์๋ฒ์ ์๋๋ง ๋ ์ถ๊ฐํ๋ฉด OK)
Top comments (0)