< ๐ก NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ข ๋ฅ >
NoSQL ์ 'Not Only SQL' ์ ์ค์๋ง๋ก ๊ธฐ์กด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDBMS)์์ ์ฌ์ฉํ๋ SQL ์ด ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋๊ฑธ ๋ปํฉ๋๋ค. ์ด๊ธฐ์๋ ์ด ๋ป์ด ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDBMS)๋ฅผ ์์ด๋ค๋ ์๋ฏธ๋ก ์ ๋ฌ๋๊ธฐ๋ ํ์ง๋ง ์ด๋ ์๋ชป๋ ํด์์ด๊ณ ๊ธฐ์กด์ ๋ ์ ์ ์ธ ํํ์ RDBMS ๋ฅผ ํํผํ์ฌ ๋ค์ํ ํํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋ฌ๋ค ๋ผ๊ณ ์ดํดํ์๋ฉด ๋ฉ๋๋ค. NoSQL ์ด ๋ฑ์ฅํ๋ฉด์ ๊ธฐ์กด์ RDBMS ๋ก ํด๊ฒฐํ๊ธฐ ์ด๋ ค์ ๋ ์ด์๋ค์ ํด๊ฒฐํ ์ ์๊ฒ ๋์์ง๋ง, ๊ทธ๋ ๋ค๊ณ ํด์ ๋ฌด์กฐ๊ฑด NoSQL ์ด RDBMS ๋ณด๋ค ๋ฐ์ด๋๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๊ฐ ๊ฐ์ง ํน์ง๊ณผ ์ด๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ ์ง์ ๋ฐ๋ผ NoSQL ์ด ๋ ์ข์ ์๋ฃจ์ ์ด ๋ ์๋, RDBMS ๊ฐ ๋ ์ข์ ์๋ฃจ์ ์ด ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ฐ์ง ํน์ง์ ์ ํ์ ํ๊ณ ์ํฉ์ ๋ง๊ฒ ์ ์ ํ ์๋ฃจ์ ์ ์ธ ์ ์๋๋ก ํด์ผ ํฉ๋๋ค. ํ์ฌ๊น์ง ์ถ์๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํฌ๊ฒ ๋ค์๊ณผ ๊ฐ์ ํํ๊ฐ ์กด์ฌํฉ๋๋ค. โ๏ธ Key-Value Database Key ๊ฐ ๊ณ ์ ์๋ณ์ ์ญํ ์ ํ๋ Key-Value ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํํ์ ๋๋ค. ๊ฐ ๊ฐ์ ๋ค๋ฅธ ํํ์ ์คํค๋ง๋ฅผ ๊ฐ์ง ์ ์์ด ๋ค์ํ ํํ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ๋ํ์ ์ธ Key-Value ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก Redis, Memcached, Hazelcast ๋ฑ์ด ์์ต๋๋ค. โ๏ธ Wide Column Database ํ๋ง๋ค ๊ณ ์ ํ key ๋ฅผ ์ ์ํ๊ณ ํด๋น ํ์ ์ฌ๋ฌ๊ฐ์ ์ด(Column)์ ์ ์ฅํ ์ ์๋๋ฐ ์ด๋ ์ ์ฅ๋๋ ์ด์ ํํ๊ฐ ๊ณ ์ ๋์ง ์๊ณ ๋ค์ํ ํํ๋ก(๋ค์ํ ์คํค๋ง๋ก) ์ ์ฅํ ์ ์์ต๋๋ค.(Wide Column Database ๊ตฌ์กฐ์ ๋ํ ์์ธํ ๋ด์ฉ์ https://database.guide/what-is-a-column-store-database/ ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์) ๋๋์ ๋ฐ์ดํฐ์ ์์ถ, ๋ถ์ฐ์ฒ๋ฆฌ, ์ง๊ณ ์ฟผ๋ฆฌ(SUM, COUNT, AVG ๋ฑ) ๋ฐ ์ฟผ๋ฆฌ ๋์ ์๋ ๊ทธ๋ฆฌ๊ณ ํ์ฅ์ฑ์ด ๋ฐ์ด๋๊ฒ์ด ํน์ง์ ๋๋ค. ๋ํ์ ์ธ Wide Column ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก Cassandra, Hbase, Druid ๋ฑ์ด ์์ต๋๋ค. โ๏ธ Document Database ๊ฐ์ฒด ํน์ Metadata ๋ฅผ ํ๋์ Document ํน์ Page ๋จ์๋ก ์ ์ฅํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋๋ค. Document ๋ JSON, XML ๋ฑ๊ณผ ๊ฐ์ ํ์์ผ๋ก ์ ์ฅํ ์ ์์ผ๋ฉฐ ์ ์ฅ๋๋ ๋ฌธ์๋ง๋ค ๋ค๋ฅธ ์คํค๋ง๋ก ์ ์ฅ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ํ์ ์ธ Document ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก MongoDB, Apache CouchDB ๋ฑ์ด ์์ต๋๋ค. โ๏ธ Graph Database Graph ๋ฐ์ดํฐ๋ ์ํ์ ๊ทธ๋ํ ์ด๋ก ์ ํ ๋๋ฅผ ๋๊ณ ์๋๋ฐ, ๊ฐ๋ณ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ ์ (Node ํน์ Vertex), ์ฑ์ง์ด ๋น์ทํ ๊ฐ์ฒด๋ค์ ๋ฌถ์ด์ฃผ๋ ๋ฌถ์(Label), ๊ฐ์ฒด๋ค๊ฐ์ ๊ด๊ณ๋ฅผ ํ์ํ๋ ๊ด๊ณ์ (Edge ํน์ Relationship)์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. Graph ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ด๋ฌํ Graph ๋ฐ์ดํฐ์ ๊ด๊ณ์ ๋ง๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณผ ์ ์ ๊ทธ๋ํ ํํ๋ก ์ ์ฅํ๊ณ , ์ ์ ๋ฐ๋ผ ํน์ ํจํด๊ณผ ์ด์ ํ์์ ๋น ๋ฅด๊ฒ ์ถ์ ํ ์ ์์ผ๋ฉฐ, ์ถ๊ฐ์ ์ธ ๋๊ตฌ๋ก ์ด๋ฅผ ์๊ฐํํจ์ผ๋ก์จ ๋ฐ์ดํฐ์ ์๊ด๊ด๊ณ๋ฅผ ๋ณด๋ค ์ง๊ด์ ์ผ๋ก ๋น ๋ฅด๊ฒ ๋ถ์ํ ์ ์๊ฒ ๋์์ฃผ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋๋ค. ๋ํ์ ์ธ Graph ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก Neo4j, Blazegraph, OrientDB , AgensGraph ๋ฑ์ด ์์ต๋๋ค.