Computer Science/๐พ Database
[DB] RDBMS์ SQL๊ณผ NoSQL ์ฐจ์ด
J1Yun
2023. 3. 21. 17:02
728x90
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDBMS, SQL Database)
- ๊ณ ์ ๋ ํ(row)๊ณผ ์ด(column)๋ก ๊ตฌ์ฑ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- ํ ์ด๋ธ์ ๊ด๊ณ๊ฐ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ์ ๋ชจ์์ด๊ธฐ ๋๋ฌธ์ ๊ตฌ์กฐํ๋ ์ฟผ๋ฆฌ ์ธ์ด(SQL)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃธ
- ๊ฐ ์ด์ ํ๋์ ์์ฑ์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ , ํ์๋ ๊ฐ ์ด์ ๋ฐ์ดํฐ ํ์์ ๋ง๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ
- ํ ์ด๋ธ์ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ ํ์ ๋ฑ์ ์ฌ์ ์ ์ ์ํ ํ ๊ทธ ํ์์ ์ ์งํ๋ฉฐ ๋ฐ์ดํฐ ์กฐ์
- ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ง๊ด์ ์ผ๋ก ํ์ ํ ์ ์์
์ฅ์
- ๋ช ํํ๊ฒ ์ ์๋ ์คํค๋ง, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ
- ๊ด๊ณ๋ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ค๋ณต์์ด ํ๋ฒ๋ง ์ ์ฅ
๋จ์
- ๋ฐ์ดํฐ ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ด๋ ค์ ์ ์ฐ์ฑ์ด ๋จ์ด์ง
- ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์์ด์ Join ๋ฌธ์ด ๋ง์ ๋ณต์กํ ์ฟผ๋ฆฌ๊ฐ ๋ง๋ค์ด์ง ์ ์์
- ๋์ฒด๋ก ์์ง์ ํ์ฅ๋ง ๊ฐ๋ฅํจ
๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(NoSQL Database)
- Key-Value, ๋ฌธ์ ๋ฑ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- ํ ์ด๋ธ ๊ตฌ์กฐ ๋ฐ ๋ฐ์ดํฐ ์ ์ฅ ํ์์ ๋ํ ์ ํ์ด ์์
- ํ ์ด๋ธ ๊ฐ ๊ด๊ณ๋ฅผ ์ ์ํ์ง ์์
์ฅ์
- ์คํค๋ง๊ฐ ์์ด์ ์ ์ฐํจ. ์ธ์ ๋ ์ง ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ ํ๊ณ ์๋ก์ด ํ๋ ์ถ๊ฐ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์๋ก ํ๋ ํ์์ผ๋ก ์ ์ฅ๋์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ์๋๊ฐ ๋นจ๋ฆ
- ์์ง ๋ฐ ์ํ ํ์ฅ์ด ๊ฐ๋ฅํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์์ํค๋ ๋ชจ๋ ์ฝ๊ธฐ/์ฐ๊ธฐ ์์ฒญ ์ฒ๋ฆฌ ๊ฐ๋ฅ
๋จ์
- ์ ์ฐ์ฑ์ผ๋ก ์ธํด ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ฒฐ์ ์ ๋ฏธ๋ฃจ๊ฒ ๋ ์ ์์
- ๋ฐ์ดํฐ ์ค๋ณต์ด ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ปฌ๋ ์ ์ ๋ํด ์์ ํด์ฃผ์ด์ผ ํจ
NoSQL Database ์ ํ
- Key-Value ํ์
๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์์ฑ๊ณผ ๊ฐ์ ๋ํด Key-Value ์์ผ๋ก ๋ํ๋ด์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐฐ์ด์ ํํ๋ก ์ ์ฅ
- Ex) Redis, Dynamo ๋ฑ
- ๋ฌธ์ํ(Document) ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธ์ด ์๋ JSON๊ณผ ์ ์ฌํ ํ์์ผ๋ก ๋ฌธ์ํํ์ฌ ์ ์ฅ
- ๊ฐ๊ฐ์ ๋ฌธ์๋ ํ๋์ ์์ฑ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์ปฌ๋ ์ ์ด๋ผ๊ณ ํ๋ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด์ ๊ด๋ฆฌ
- Ex) MongoDB ๋ฑ
- Wide-Column Store ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด(column)์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ง์ค์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๊ฐ ์ด์๋ key-value ํ์์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๊ณ , ์ปฌ๋ผ ํจ๋ฐ๋ฆฌ(column families)๋ผ๊ณ ํ๋ ์ด์ ์งํฉ์ฒด ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ
- ํ๋์ ํ์ ๋ง์ ์ด์ ํฌํจํ ์ ์์ด์ ์ ์ฐ์ฑ์ด ๋์ผ๋ฉฐ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํ์ํ ์ด์ ์ ์ฐํ๊ฒ ์ ํํ ์ ์์ด ๊ท๋ชจ๊ฐ ํฐ ๋ฐ์ดํฐ ๋ถ์์ ์ฃผ๋ก ์ฌ์ฉ
- Ex) Cassandra, HBase ๋ฑ
- ๊ทธ๋ํ(Graph) ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์๋ฃ๊ตฌ์กฐ์ ๊ทธ๋ํ์ ๋น์ทํ ํ์์ผ๋ก ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ ธ๋(nodes)์ ์์ฑ๋ณ(entities)๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ๊ฐ ๋ ธ๋ ๊ฐ์ ๊ด๊ณ๋ ์ (edge)์ผ๋ก ํํ
- Ex) Neo4J, InfiniteGraph
SQL Database VS NoSQL Database
- ๋ฐ์ดํฐ ์ ์ฅ(Storage)
- SQL DB๋ SQL์ ํ์ฉํด ๋ฏธ๋ฆฌ ์์ฑ๋ ์คํค๋ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ํด์ง ํ์์ ๋ฐ๋ผ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ ์ฅ
- NoSQL DB๋ key-value, document, wide-column, graph ๋ฑ์ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
- ์คํค๋ง(Schema)
- SQL DB๋ ๋ฐ์ดํฐ ์์ฑ๋ณ๋ก ์ด(column)์ ๋ํ ์ ๋ณด๋ฅผ ์ ํด ๋ฏธ๋ฆฌ ์ ํด ๊ณ ์ ๋ ํ์์ ์คํค๋ง๊ฐ ํ์
- NoSQL DB๋ ๋์ ์ผ๋ก ์คํค๋ง์ ํํ๋ฅผ ๊ด๋ฆฌ
- ์ฟผ๋ฆฌ(Query)
- SQL DB๋ SQL๊ณผ ๊ฐ์ด ๊ตฌ์กฐํ๋ ์ฟผ๋ฆฌ ์ธ์ด๋ฅผ ์ฌ์ฉํด ํ ์ด๋ธ์ ํ์๊ณผ ํ ์ด๋ธ๊ฐ์ ๊ด๊ณ์ ๋ง์ถฐ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ
- NoSQL DB๋ ๊ตฌ์กฐํ ๋์ง ์์ ์ฟผ๋ฆฌ ์ธ์ด๋ก๋ ๋ฐ์ดํฐ ์์ฒญ์ด ๊ฐ๋ฅ
- ํ์ฅ์ฑ(Scalability)
- SQL DB์ ์ฃผ๋ก ์์ง์ ํ์ฅ(๋์ ์ฑ๋ฅ์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ CPU ์ฌ์ฉ)๋ง ์ฉ์ด
- NoSQL DB๋ ์์ง์ ํ์ฅ ๋ฟ๋ง ์๋๋ผ ์ํ์ ํ์ฅ(์๋ฒ ์ฆ์ค, ํด๋ผ์ฐ๋ ์๋น์ค ์ด์ฉ)์๋ ์ ๋ฆฌ
SQL ๊ธฐ๋ฐ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ผ์ด์ค
- ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ๋ช ํํ๋ฉฐ ๋ณ๊ฒฝ ๋ ์ฌ์ง๊ฐ ์์ผ๋ฉฐ ๋ช ํํ ์คํค๋ง๊ฐ ์ค์ํ ๊ฒฝ์ฐ
- ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๋ ๋ฐ์ดํฐ๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ
- ์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ์์ด(๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ) ๋ณ๊ฒฝ์ด ์ฉ์ดํ๊ธฐ ๋๋ฌธ
NoSQL ๊ธฐ๋ฐ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ผ์ด์ค
- ์ ํํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ ์๊ฑฐ๋ ๋ณ๊ฒฝ ๋ฐ ํ์ฅ ๋ ์ ์๋ ๊ฒฝ์ฐ
- ๋ฐ์ดํฐ ์ฝ๊ธฐ๋ฅผ ์์ฃผ ํ์ง๋ง, ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์์ฃผ ์๋ ๊ฒฝ์ฐ
- ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ค์ผ ํ๋ ๊ฒฝ์ฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ํ์ ์ผ๋ก ํ์ฅํ ์ ์๊ธฐ ๋๋ฌธ
โญ๏ธ ์ฐธ๊ณ
728x90