๐ฌ RDB์ NoSQL์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
โ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDB)๋ ์ฌ์ ์ ์๊ฒฉํ๊ฒ ์ ์๋ DB schema๋ฅผ ์๊ตฌํ๋ table ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ฐ ๋ฐํด, ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ NoSQL์ table ํ์์ด ์๋ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
NoSQL์ ์ ์์ผ ๊ฐ๋ฐ ๋ฑ ํ์ฅ ๊ฐ๋ฅ์ฑ์ด ์๊ฑฐ๋ ์ ํํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์ ํด์ง์ง ์์ ์์ ๊ฐ๋ฅ์ฑ์ด ์์ ๋ ์ ์ฐํ๊ฒ ๋์ฒ๊ฐ ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์์ง๋ง, RDB๋ ์๊ฒฉํ Schema๋ก ์ธํด ๋ฐ์ดํฐ์ ์ค๋ณต์ด ์๊ธฐ ๋๋ฌธ์, update๊ฐ ๋ง๊ฑฐ๋ ๋ฐ์ดํฐ ํ ์ด๋ธ ๊ฐ์ ์๊ด๊ด๊ณ๊ฐ ๋ณต์กํ ๋ ์ ๋ฆฌํฉ๋๋ค. ๋ฐ๋ฉด NoSQL์ ๋ฐ์ดํฐ ์ค๋ณต์ผ๋ก ์ธํด update์ ๋ชจ๋ ์ปฌ๋ ์ ์์ ์์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ update๊ฐ ์ ๊ณ ์กฐํ๊ฐ ๋ง์ ๋ ์ ๋ฆฌํฉ๋๋ค.
๋ฐ๋ผ์ ์ํ๊ฑฐ๋ ๋ฑ ๊ณ ๋๋ก ์ ๊ทํ๋ ๋ฐ์ดํฐ๋ฅผ ํ์๋ก ํ๋ ๋ฑ์ ์์คํ ์์๋ RDB๋ฅผ ์ด์ฉํ๊ณ , ๋น ๋ฐ์ดํฐ์ ๊ฐ์ด ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ๋ก ํ๋ ๊ณณ์์๋ NoSQL์ ์ด์ฉํ๋๊ฒ์ด ๋ฐ๋์งํฉ๋๋ค.
RDB - NoSQL
RDB ๋?
๐ Relational Database๋ก ๊ด๊ณํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ธฐ์ด๋ฅผ ๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๋งํจ.
RDB ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์คํค๋ง๋ฅผ ์ฌ์ ์ ์ ์ํด์ผ๋ง ํจ.
๋ฐ์ดํฐ ์ค๋ณต์ด ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ update๊ฐ ๋ง์ ๋ ์ ๋ฆฌ
์๋ฅผ ๋ค์ด ์์ ์ํธ์ฒ๋ผ 2์ฐจ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋น์นธ์ ์ฐจ๊ณก์ฐจ๊ณก ๋ด์๊ฐ๋ฉฐ, ๊ฐ๊ฐ์ ์นธ์ ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๊ณ ์ด ๋ฒํธ๋ฅผ ํตํด ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ๋ ๋ฐฉ์์ ๋งํ๋ค. ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (RDBMS)์ ๊ตฌ์กฐํ๋ ์ฟผ๋ฆฌ ์ธ์ด(SQL)์ ๊ธฐ๋ฐ์ด๋ค.
RDB๋ ๊ณผ๊ฑฐ๋ถํฐ ์ค๋ซ๋์ ์ฌ์ฉ๋์ด์๋ค.
์ํ๋ ๋ด์ฉ์ ์ฐพ๊ณ ์ ๋ ฌํ๊ธฐ์ ์ข์ผ๋ฉฐ, ๋ฏธ๋ฆฌ ์์๋๋ ๋ฐ์ดํฐ์ ํ๋ฆ์ ๋ง๊ฒ ์ค๊ณํด ๋๊ธฐ ๋๋ฌธ์ ์์ ์ฑ๋ ๋์ ํน์ง์ ๊ฐ์ง๋ค. ํ์ฅ์ค๊ณ๋ฅผ ์ ์ฉํ๊ธฐ ํธํ๋ค๋ ์ฅ์ ๋ ๊ฐ์ง๊ณ ์๋ค.
Oracle๊ณผ mySQL, MS SQL, IMB DB2๊ฐ ๋ํ์ ์ธ RDB์ด๋ค.
์ต๊ทผ์๋ RDB์์ No SQL์ด๋ผ๋ ์๋ก์ด ๋ฐฉ์์ DB๊ฐ ๋ฑ์ฅํ๊ณ ์๋ค. ํ์ง๋ง No SQL์ ๊ฒฝ์ฐ ๋จ์ํ ํ์๊ณผ ์ ์ถ๋ ฅ์ด ํ์ํ ์๋น์ค์์ ์ฌ์ฉํ๊ธฐ์๋ ์๋๋ ํจ์จ์ฑ์ ๋ฌธ์ ๊ฐ ์์ด RDB์ ๋ณํํ์ฌ ์ฌ์ฉ๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
NoSQL์ด๋?
๐ no SQL(Structed Query Language).
no์ ํด์์ ๋ํด์๋ no, not olny, non-relational operational ๋ฑ์ผ๋ก ์๊ฒฌ์ด ๊ฐ๋ฆฐ๋ค.
NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ ์ฌ์ ์ ์คํค๋ง๋ฅผ ์ ์ํ์ง ์์๋ ์ ์ฅ๋ ์ ์์.
update๊ฐ ์ ๊ณ ์กฐํ๊ฐ ๋ง์ ๋ ์ ๋ฆฌ
๋ํ์ ์ธ no SQL๋ก๋ mongoDB, Cassandra, HBase๊ฐ ์์ผ๋ฉฐ noSQL DB์ ํน์ง์ ์๋์ ๊ฐ์
- ์ค์๊ฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋น ๋ฐ์ดํฐ์ ๋๋ฆฌ ์ฌ์ฉ
- ์ผ๋ฐ์ ์ผ๋ก ๋น์ ๊ทํ๋ ๋ฐ์ดํฐ์ ์์กดํ๋ฉฐ, ์๋์ ์ผ๋ก ์ ์ ์์ ๋ฐ์ดํฐ(๋๋ ์ปจํ ์ด๋)๋ฅผ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ ์ง์
- ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ ๊ด๊ณ๋ฅผ ๋ชจ๋ธ๋งํ์ง ์๊ณ , ํฌํจ๋ ๊ธฐ๋ก(๋๋ ๋ฌธ์)์ผ๋ก ๋ชจ๋ธ๋งํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์
- ๊ด๊ณํ ๋ชจ๋ธ์ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ ํ ์ด๋ธ ๊ฐ์ ์กฐ์ธ ๊ธฐ๋ฅ์ด ์์
- ๋จ์ผ ํ ์ด๋ธ์ ๋ํ ์ฟผ๋ฆฌ์์ ์๋ ์์ฃผ ์ ์๋ํ๋, ์ฟผ๋ฆฌ๋ณต์ก์ฑ์ด ๋์์ง๋ ๊ฒฝ์ฐ RDB์ ํํด์ผ.
- ์ง์ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ ๋ฑ์ ๋น SQL ์ธํฐํ์ด์ค๋ฅผ ํตํ ๋ฐ์ดํฐ ์ก์ธ์ค
- ๋๋ถ๋ถ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์๋ฒ๋ฅผ ๋ฌถ์ด์(ํด๋ฌ์คํฐ๋ง) ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ฑ
- RDB์์ ์ง์ํ๋ Data ์ฒ๋ฆฌ ์๊ฒฐ์ฑ(Transaction ACID) ์ง์ ๋ฏธ๋ณด์ฅ
- ๋ฐ์ดํฐ์ ์คํค๋ง์ ์์ฑ๋ค์ ๋ค์ํ๊ฒ ์์ฉ ๋ฐ ๋์ ์ ์(Schema-less)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ค๋จ ์๋ ์๋น์ค์ ์๋ ๋ณต๊ตฌ ๊ธฐ๋ฅ ์ง์
- ๋ค์๊ฐ ์คํ์์ค๋ก ์ ๊ณต
- ํ์ฅ์ฑ, ๊ฐ์ฉ์ฑ, ๋์ ์ฑ๋ฅ
NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ
- ํค ๊ฐ : ํค ๊ฐ์ ๊ฐ์ฅ ์ ์ฐํ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ฐ ํ๋์ ์ ์ฅ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฝ ์์ด ์๋ฒฝํ๊ฒ ์ ์ดํ ์ ์๊ธฐ ๋๋ฌธ์ด์ฃ .
- ๋ฌธ์ : ๋ฌธ์ ์ ์ฅ์ ๋๋ ๋ฌธ์ ์งํฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ์ ๋ฐ๊ตฌ์กฐ์ ๋ฐ์ดํฐ์ ์ ์ฅ, ๊ฒ์, ๊ด๋ฆฌ์ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฌธ์์ ํฌํจํ ํ๋๋ฅผ ํน์ ํ ํ์๊ฐ ์์ต๋๋ค.
- ๊ทธ๋ํ : ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ๋ ธ๋ ๋ฐ ๋ ธ๋ ๊ฐ ์ฐ๊ฒฐ์ ๋ณด์ฌ์ฃผ๋ ๊ด๊ณ๋ก ๊ตฌ์ฑํฉ๋๋ค. ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋์ฑ ํ๋ถํ๊ณ ์์ ํ ๋ฐ์ดํฐ ํํ์ ์ง์ํฉ๋๋ค. ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์์ ๋คํธ์ํฌ, ์์ฝ ์์คํ , ์ฌ๊ธฐ ๊ฐ์ง ๋ฑ์ ์ ์ฉ๋ฉ๋๋ค.
- ๋์ ์ด : ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ ์ด๋ธ, ํ, ์ด ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ๋ฐ ๊ด๋ฆฌํฉ๋๋ค. ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ด ํ์์ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฒ์ํ๊ฒ ๋ฐฐํฌ๋์ด ์คํค๋ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์์งํฉ๋๋ค.
NoSQL DB๋ฅผ ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒฝ์ฐ
- ๋น ๋ฅธ ํ์ ์ด ํ์ํ ๊ธฐ์ ๋ฑ ์ ์ฐํ ์คํค๋ง๊ฐ ํ์ํ ๋
- ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌํ๋ ๊ฒฝ์ฐ
- ๋ฎ์ ๋๊ธฐ์๊ฐ ๋๋ ์๋ต์๊ฐ์ ์๊ตฌํ๋ ์ ํ๋ฆฌ์ผ์ด์
No SQL์ ์ฌ์ฉํ๋ฉด ์ ์ข์ ๊ฒฝ์ฐ
- ๋๋ค์์ ๊ธ์ต, ํ๊ณ, ๊ธฐ์ ๋ฆฌ์์ค ๊ณํ์ ์ํ ๊ณ ์ ์ ์ธ ๋ฐฑ์คํผ์ค ๋น์ฆ๋์ค ์ ํ๋ฆฌ์ผ์ด์
- ๋ฐ์ดํฐ์ ๋ณํ ๋ฐ ์ค๋ณต์ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ณ ๋๋ก ์ ๊ทํ๋ ๋ฐ์ดํฐ์ ์์กดํ๋ ๋ถ์ผ์ด๊ธฐ ๋๋ฌธ
- ์ฟผ๋ฆฌ์ ๋ณต์ก์ฑ์ด ๋์์ง๋ ๊ฒฝ์ฐ
- NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ณดํต ๋ณต์กํ ์กฐ์ธ, ํ์ ์ฟผ๋ฆฌ ๋ฐ WHERE ์ ์์์ ์ค์ฒฉ ์ง์๋ฅผ ์ ๊ณตํ์ง ์๊ธฐ ๋๋ฌธ.
์ฐธ๊ณ ์๋ฃ
https://www.oracle.com/kr/database/nosql/what-is-nosql/
'Web_Backend > DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ผ๋์ ์ฝ๋ฉ ์ผ๊ธฐ์ฅ :) #์ฝ๋ฉ๋ธ๋ก๊ทธ #๊ธฐ์ ๋ธ๋ก๊ทธ #์ฝ๋ฉ #์กฐ๊ธ์ฉ,๊พธ์คํ
ํฌ์คํ ์ด ์ข์๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ํด์ฃผ์ธ์!