๐ง RDBMS ์ NoSQL ์ ์ฐจ์ด
๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์๋น์ค๋ผ๋ฉด ํ์์ ์ผ๋ก ์ฌ์ฉํด์ผํ๋๊ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ๋ฐ์, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๊ฐ๋ ๊ณผ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ RDBMS ์ NoSQL ์ ์ฐจ์ด์ ๋ฐ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๋ค ์ํฉ์์ ์ฌ์ฉํด์ผํ๋์ง์ ๋ํด ์ ์ค๋ช ๋ ๊ธ์ด ์์ด ๊ณต์ ๋๋ฆฝ๋๋ค. ๊ฐ๋ตํ๊ฒ ๋ด์ฉ์ ์์ฝํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๐ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Database, DB) ๋? ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฝ๊ฒ ๋งํด์ ๋ฐ์ดํฐ์ ์งํฉ์ ๋๋ค. DB์๋ ๋ค์ํ ์ ํ์ด ์กด์ฌํ๋๋ฐ์. ๊ณ์ธตํ(Hierarchical), ๋งํ(Network), ๊ด๊ณํ(Relational), ๊ฐ์ฒด์งํฅํ(Object-Oriented), ๊ฐ์ฒด๊ด๊ณํ(Object-Relational) ๋ฑ์ด ์์ต๋๋ค. ๐ RDBMS(๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค) ์ด๋? ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ณ ์ ๋ ํ(row)๊ณผ ์ด(column)๋ก ๊ตฌ์ฑ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ๊ฐ ์ด์๋ ํ๋์ ์์ฑ์ ๋ํ ์ ๋ณด๊ฐ ์ ์ฅ๋๊ณ , ํ์๋ ๊ฐ ์ด์ ๋ฐ์ดํฐ ํ์์ ๋ง๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ฉ๋๋ค. ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ํต์ฌ์ ์ธ ํน์ง์ด ๋ ๊ฐ์ง ์์ต๋๋ค. 1. ๋ฐ์ดํฐ๊ฐ ์ ํด์ง ๋ฐ์ดํฐ ์คํค๋ง์ ๋ฐ๋ผ ํ ์ด๋ธ์ ์ ์ฅ๋๋ค๋ ์ 2. ๋ฐ์ดํฐ๊ฐ ๊ด๊ณ๋ฅผ ํตํด ์ฌ๋ฌ ํ ์ด๋ธ์ ๋ถ์ฐ๋๋ค๋ ์ ๐ NoSQL(๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค) ์ด๋? ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค SQL, ์ฆ, ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ ํ์ ๋งํฉ๋๋ค. ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์นญํ ๋ NoSQL(๋๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค)๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ ์ด๋ธ ํ์์ด ์๋๋ฉฐ, ๊ด๊ณํ ํ ์ด๋ธ๊ณผ๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ๋ฐ์ดํฐ ์ ํ์ ๋ฐ๋ผ ๋ค์ํ ์ ํ์ ๊ฐ์ถ๊ณ ์์ผ๋ฉฐ, ์ฃผ์ ์ ํ์ผ๋ก๋ ๋ฌธ์, ํค ๊ฐ, ์์ด๋ ์ปฌ๋ผ, ๊ทธ๋ํ ๋ฑ์ด ์์ต๋๋ค. NoSQL์ด๋ผ๊ณ ํด์ ๊ผญ ์คํค๋ง๊ฐ ์๋ ๊ฒ์ ์๋๋๋ค. ์ ์ฐํ ์คํค๋ง๋ฅผ ์ ๊ณตํ๋ฉฐ, ๋๋์ ๋ฐ์ดํฐ์ ๋์ ์ฌ์ฉ์ ๋ถํ์์๋ ์์ฝ๊ฒ ํ์ฅํ ์ ์๋ค๋ ์ ์ด ํฐ ์ฅ์ ์ ๋๋ค. ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ฌ ๋ ์คํค๋ง์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ์ต๋๋ค. ๐ RDBMS VS NoSQL, ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ? โ๏ธ ๋ฐ์ดํฐ ์ ์ฅ(Storage) - RDBMS: ๋ฐ์ดํฐ๋ฅผ SQL ์ธ์ด๋ฅผ ํตํด ํ ์ด๋ธ์ ์ ์ฅํฉ๋๋ค. ๋ฏธ๋ฆฌ ์์ฑ๋ ์คํค๋ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ํด์ง ํ์์ ๋ง๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผ๋ง ํฉ๋๋ค. - NoSQL: key-value, document, wide-column, graph ๋ฑ์ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. โ๏ธ ์คํค๋ง(Schema) - RDBMS: ๊ณ ์ ๋ ์คํค๋ง๊ฐ ํ์. ์ฒ๋ฆฌํ๋ ค๋ ๋ฐ์ดํฐ ์์ฑ๋ณ๋ก ์ด(column)์ ๋ํ ์ ๋ณด๋ฅผ ๋ฏธ๋ฆฌ ์ ํด์ผ๋ง ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅ. ์คํค๋ง์ ๋ํ ๋ณ๊ฒฝ์ ๊ฐ๋ฅํ์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฒด๋ฅผ ์์ ํ๊ฑฐ๋ ์คํ๋ผ์ธ์ผ๋ก ์ ํํด์ผ ํ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ต๋ํ ์ ์คํ๊ฒ ์คํค๋ง๋ฅผ ์ ์ํด์ผํ ํ์๊ฐ ์๋ค. - NoSQL: ์ ์ฐํ๊ฒ ์คํค๋ง์ ํํ๋ฅผ ๊ด๋ฆฌ. ํ์ ์ถ๊ฐํ ๋ ์ฆ์ ์๋ก์ด ์ด์ ์ถ๊ฐํ ์ ์๊ณ , ๊ฐ๋ณ ์์ฑ์ ๋ํด์ ๋ชจ๋ ์ด์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋์ ์ ๋ ฅํ์ง ์์๋ ๋๋ค. โ๏ธ ์ฟผ๋ฆฌ(Query) - RDBMS: ํ ์ด๋ธ์ ํ์๊ณผ ํ ์ด๋ธ ๊ฐ์ ๊ด๊ณ์ ๋ง์ถฐ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ. ์์ฒญํ๋ ๋ฐฉ์์ด ์ ํด์ ธ ์๊ธฐ ๋๋ฌธ์ SQL ์ธ์ด์ ๊ฐ์ด ๊ตฌ์กฐํ๋ ์ฟผ๋ฆฌ ์ธ์ด๋ฅผ ์ฌ์ฉ. - NoSQL: ๋ฐ์ดํฐ ๊ทธ๋ฃน ์์ฒด๋ฅผ ์กฐํํ๋ ๊ฒ์ ์ด์ ์ ๋๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ตฌ์กฐํ๋์ง ์์ ์ฟผ๋ฆฌ ์ธ์ด๋ก๋ ๋ฐ์ดํฐ ์์ฒญ์ด ๊ฐ๋ฅ. ์ด๋ฅผ UnQL์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. โ๏ธ ํ์ฅ์ฑ(Scalability) - RDBMS: ์์ง์ ์ผ๋ก ํ์ฅ(Scale Up)ํ๋ฉฐ ๋์ ๋ฉ๋ชจ๋ฆฌ์ CPU๋ฅผ ์ฌ์ฉ. ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ตฌ์ถ๋ ํ๋์จ์ด์ ์ฑ๋ฅ์ ๋ง์ด ์ด์ฉํ๋ฏ๋ก ๋น์ฉ์ด ๋น์ผ ํธ์ด๋ฉฐ, ์ฌ๋ฌ ๊ฐ์ ์๋ฒ์ ๊ฑธ์ณ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๊ณ๋ฅผ ์ ์ํ ์ ์์ง๋ง ๋งค์ฐ ๋ณต์กํ๊ณ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฒ์ด ๋จ์ . - NoSQL: ์ํ์ ์ผ๋ก ํ์ฅ(Scale Out)์ด ๊ฐ๋ฅ. NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ํ ์๋ฒ๋ฅผ ์ถ๊ฐ๋ก ๊ตฌ์ถํ๊ฒ ๋๋ฉด ๋ง์ ํธ๋ํฝ์ ํธ๋ฆฌํ๊ฒ ์ฒ๋ฆฌํ ์ ์๊ณ SQL๋ณด๋ค ์ ๋ ดํ ๋ฒ์ฉ ํ๋์จ์ด๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ์ ์ธ์คํด์ค์ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํธ์คํ ํ ์ ์์ด ์๋์ ์ผ๋ก ๋น์ฉ์ด ์ ๋ ดํ ๊ฒ์ด ์ฅ์ . ๐ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDBMS)๋ฅผ ์ฌ์ฉํด์ผ ํ ๋ - ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ACID ์ฑ์ง์ ์ค์ํด์ผ ํ๋ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ ๊ฒฝ์ฐ - ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๋ ๋ฐ์ดํฐ๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ - ๋ณ๊ฒฝ๋ ์ฌ์ง๊ฐ ์๊ณ ๋ช ํํ ์คํค๋ง๊ฐ ์ฌ์ฉ์์ ๋ฐ์ดํฐ์๊ฒ ์ค์ํ ๊ฒฝ์ฐ ๐ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด์ผ ํ ๋ - ์ ํํ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ์ ์ ์๊ฑฐ๋ ๋ณ๊ฒฝ, ํ์ฅ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ - ์ฝ๊ธฐ๋ ์์ฃผ ํด๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์์ฃผ ์๋ ๊ฒฝ์ฐ - ๋ง๋ํ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ค์ผ ํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ํ์ผ๋ก ํ์ฅํด์ผ ํ๋ ๊ฒฝ์ฐ ๐ ์๋ฌธ - https://www.whatap.io/ko/blog/173/index.html?utm_source=facebook&utm_medium=sns_ad&utm_campaign=whatap_blog&utm_content=RDBMS_NoSQL&fbclid=PAAaZeq1mANqwrEgzgFo04B5gL6OZMhV2Jr71jAHyfiKRHq-TO8swPQr8C6KM_aem_AWUe5ZHYvT-75Unh_RPU0mt1GfoAeO7ZNE199clumiI8S60cG6xOHYGtSxTOXRgniniBAUO8b5jJb4lWZmyf1nAK ๐ ํจ๊ป ๋ณด๋ฉด ์ข์ ๊ธ - ๐ก NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ข ๋ฅ: https://careerly.co.kr/comments/66826?utm_campaign=self-share