-
Notifications
You must be signed in to change notification settings - Fork 1
๐งพNoSQL์ด ๋ญ์ผ?
๋ฉ์ธ DB๋ฅผ ์ ํํ๋ ๊ณผ์ ์์ ํฌ๊ฒ RDB๋ฅผ ์ฌ์ฉํ ์ง ์๋๋ฉด ๋ค๋ฅธ DB๋ฅผ ์ฌ์ฉํ ์ง์ ๋ํ ๋ถ๋ถ์ด ๊ณ ๋ฏผ์ด์์ต๋๋ค. ๊ทธ๋ฐ ์ํฉ์์ RDB๊ฐ ์๋ ๋ค๋ฅธ DB๋ ์ง์์ด ์์ด ๋ฐฐ์๋ณด๊ณ ์ ์ ๋ฆฌํ์ต๋๋ค.
์ด ๋ถ๋ถ์ ๋ ธ๋ง๋ ์ฝ๋์ ๋์ฝ๋ผ์ค์ค์ ๋ด์ฉ์ ์ ๋ฆฌํ์ต๋๋ค.
https://www.youtube.com/watch?v=Q_9cFgzZr8Q
NoSQL์ ๋ง ๊ทธ๋๋ก SQL์ด ์๋๋๋ค. โ ๊ทธ๊ฒ ๋ญ์ผ ์ฅ๋ํด?
์ง์ง ๋ป์ด Not Only SQL ๋๋, Not SQL ์ ๋๋ค.
๋ง ๊ทธ๋๋ก SQL์ด ์๋ DB๋ฅผ NoSQL์ด๋ผ๊ณ ํฉ๋๋ค. ์ด๋ ๊ฒ ๋ ์ด์ ๋ ๊ฐ์ฅ ํํ๊ฒ ์ฐ๋ DB๊ฐ RDB์ด๋ผ์ ๊ทธ๊ฑธ ๋บ ๋๋จธ์ง๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ฒ ๋ ๊ฒ ์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด NoSQL์ ํ๋๊ฐ ์๋๋ผ๋ ๋ป์ ๊ฐ์ง๊ธฐ๋ ํฉ๋๋ค.
์ค์ ๋ก NoSQL์๋ ๊ทธ ์ข ๋ฅ์ ๋ฐ๋ผ ์ฌ์ฉํ๋ DB๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค.
๋ํ์ ์ผ๋ก๋ Document DB, Key Value DB ๊ทธ๋ฆฌ๊ณ Graph DB๊ฐ ์์ต๋๋ค.
-
DocumentDB(Mongo DB)
- JSON ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
- RDB์ฒ๋ผ ํ๊ณผ ์ด์ ํตํ ์คํค๋ง ํํ๊ฐ ์๋๋๋ค.
- ์ฆ ์ฌ์ฉ์๊ฐ ์ํ๋ ์ด๋ ํ ๋ฐ์ดํฐ๋ ์ ์ฅ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๊ทธ๋์ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๊ฐ ์์ฒญ ์ ์ฐํฉ๋๋ค.
-
Key Value DB(Cassandra DB, DynamoDB)
- ์์ฒญ ๋น ๋ฅด๊ณ ์ฝ๊ณ ์ฐ๊ธฐ ์ํด key value๋ฅผ ์ฌ์ฉํฉ๋๋ค
- Cassandra DB๋ ์ฝ๊ณ ์ฐ๋ ๊ณผ์ ์ด ๋งค์ฐ ๋น ๋ฆ ๋๋ค.(์ค์ ๋ก ๋ทํ๋ฆญ์ค, ์ธ์คํ๊ทธ๋จ ๋๋, ์ฐ๋ฒ ๋ฑ์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.)
- dynamo db
- ๋น ๋ฅด์ง๋ง SQL ์ฒ๋ผ ์ฟผ๋ฆฌ๋ฌธ์ ์ง์ ํ์ง ๋ชปํฉ๋๋ค.
- ๊ทธ๋์ ์ ์ฅํ๊ธฐ ์ ์ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ป์ ์ง์ ๋ํ ๊ณ ๋ฏผ์ด ํ์ํฉ๋๋ค.
-
GraphDB
- ๊ฐ ๋ ธ๋ ๊ฐ์ ๊ด๊ณ๋ฅผ ์์์ผ ํ ๋ ์ฌ์ฉํฉ๋๋ค.(ํ์ด์ค๋ถ=Tao)
- Document์ Key Value DB ์๋ ๋ค๋ฅด๊ฒ ๊ฐ๊ฐ์ ์ํฐํฐ๋ฅผ ์ ์ฅํ๊ณ ์ด๋ฅผ ๊ด๊ณ๋ง์ผ๋ก ์ฐ๊ฒฐํฉ๋๋ค.
์โฆ ๊ฐ์ด ์กํ์ง ์๋ค์โฆ..
๋ฐ์ ๊ธ์ ๋ ธ๋ง๋ ์ฝ๋์ ๋์ฝ๋ผ์ค ์ค์ ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ ์ ์๊ฐ๋๋ก ์ ๋ฆฌํ์ต๋๋ค.(๊ฐ์ธ์ ์ ๊ฐ์ธ์ ์ธ ์๊ฒฌ)
๐ก ํ๋ฒํ ํ๋ก์ ํธ๋ SQL๋ก ๊ฑฐ์ ๋๋ถ๋ถ ์ปค๋ฒ๊ฐ ๊ฐ๋ฅํ๋ค. ์ค์ ๋ก ์ธ์คํ๋ ์ฒ์์๋ SQL๋ก ๊ตฌํ์ ํ๋ค.
๊ทธ๋์ ๊ทธ๋ฅ SQL๋ก ํด๋ผ. ๋์ค์ ๊ณ ๋ฏผํด๋ด๋ ์ข๋ค
์ฆ ๋์ค์ ํน์ดํ ์ผ์ด์ค์ ๊ฒฝ์ฐ ํ์์ ์ํด NoSQL์ ๋์ ํ๋ ๊ฒ๋ ์ข์ ์๊ฐ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ทธ๋ฅ ๋ง์ด ์ฌ์ฉํ๋๊น SQL์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ง์๊น์?
์ ๊ฐ ํญ์ ์ค์ํ ๊ฐ๋ฐ์๋ก์๋ ๋์ด๊ฐ๊ธฐ ์ข ๊บผ๋ฆผ์งํฉ๋๋ค.
๊ทธ๋์ ๋ ์ฐพ์๋ดค์ต๋๋ค.
๋ฐ์ ๊ธ์ ๋ค์ด๋ฒ ํด๋ผ์ฐ๋์์ ์ค์ ๋ก ๋ฐฐํฌํ๋ Mongo DB ์๋น์ค๋ฅผ ๋ฐํํ๋ ์์์ ๋๋ค.
https://www.youtube.com/watch?v=V_Zs1BmAFoI
๋ค์ด๋ฒ์ ์ค์ ์ฌ๋ก๋ฅผ ์์๋ก ๋ค๋ฉฐ ์ค๋ช ํด์ฃผ์ จ์ต๋๋ค. ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณด์๋ฉด
- ํ์ฌ ๋ค์ด๋ฒ์ Mongo DB ์ฌ์ฉ๋์ ์์ฒญ ๋ง์์ง
- ์ค๋งํธ ์คํ ์ด, ๋ค์ด๋ฒ ์ผํ, ๋ค์ด๋ฒ ์นํฐ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๋ค์ํ ์๋น์ค์๋ Mongo DB๋ฅผ ์ฌ์ฉํ๊ณ ์์
๋ค์์๋ ์ Mongo DB๋ฅผ ์ฌ์ฉํ ์ ๋ฐ์ ์์๋ ์ง์ ๋ํด ์ค๋ช ํด์ฃผ์ จ์ต๋๋ค.
-
๊ฐ์ธํ ์์ญ์ ๋ฐฉ๋ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์
- ๋ชจ๋ฐ์ผ ๊ธฐ๋ฅ์ ํ์ฑ์ ๋ฐ๋ฅธ ๋ชจ๋ฐ์ผ ์๋น์ค ์ฌ์ฉ๋ ์ฆ๊ฐ
- ๋ชจ๋ฐ์ผ์์ ๋ณด๋ ๊ธฐ๋ก์ PC์์๋ ๋๊ฐ์ด ์ฌ์ฉํ๊ณ ์ถ์
- ๊ธฐ์กด์ ์ฌ์ฉํ๋ ๋ก์ปฌ์ ์ ์ฅํ๋ ๋ฐฉ์์ ๊ฐ์ธํ ์์ญ์์ ์ฒ๋ฆฌ ํ์
- ๋ค๋ฅธ NoSQL์ ๋นํด Mongo DB๋ Secondary Index๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋ฐฉ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ฉ์ดํ์
-
Flexable schema
- ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ๋ฌ ์๋น์ค ํ์์ ๋ง๋ค ํ์๊ฐ ์์์(๋๊ธ ๊ธฐ๋ฅ ๊ฐ์ ๊ฒฝ์ฐ)
- ๊ณตํต๋ ๊ธฐ๋ฅ์ ๋ง๋๋ ๊ฐ๋ฐํ์ด ๋ฐ๋ก ์๊ณ ์ด ๊ณตํต ํ๋ซํผ์ ๊ฐ์ ธ์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ฑํ
- ํ์ง๋ง RDB๋ฅผ ์ฌ์ฉํ๋ฉด ์คํค๋ง๊ฐ ๊ณ ์ ๋์ด ์ฌ๋ฌ ์์คํ ์์ ์ฌ์ฉํ๊ธฐ ํ๋ ๋ถ๋ถ์ด ์กด์ฌ
- ๊ทธ๋์ ์ด๋ฐ ๋ถ๋ถ์ Mongo DB๋ฅผ ํตํด ์ฌ์ฉ(์ ์ฐํ ๊ตฌ์กฐ)
์ด ๋ฐ์๋ naver mongo DB๋ง์ ์ข์ ์ ์ ๋ง์ด ์ค๋ช ํด์ฃผ์ จ๋๋ฐโฆ ์์ง ์ง์์ด ์์ ์ ๋ถ ์ดํดํ๊ธฐ๋ ํ๋ค์์ต๋๋คโฆ
๊ทธ๋ฆฌ๊ณ ์ ๋ฒ ๊ธฐ์ ๋ถ๋ค์ ๋์ฒด์ ์ผ๋ก ์ด๋ค DB๋ฅผ ์ฌ์ฉํ์๊น ๊ถ๊ธํด์ก์ต๋๋ค.
๋ช ๊ฐ ๋ค์ด๊ฐ์ ๋ณธ ๊ฒฐ๊ณผ๋ก๋ Mongo DB๋ฅผ ๋ฉ์ธ DB๋ก ์ฌ์ฉํ๋ ํ์ด ๋ ๋ง์์ต๋๋ค.
Mongo DB๋ฅผ ์ ํํ ์ด์
- ๋จ์ํ I/O๋ฅผ ์ฒ๋ฆฌํจ์ ์ข๋ค(์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ๊ทธ๋๋ก ๋ณด๋ผ ๋)
- ์ฆ ๋ณต์กํ์ง ์๋ ๋ฐ์ดํฐ์๋ NoSQL์ด ์ข๋ค.
- NodeJS๋ฅผ ์ฌ์ฉํ ๋ NoSQL์ ๊ฐ๋ ฅํ๋ค.(Non-Blocking + Async)
- ๊ฒ์์ ๊ฒฝ์ฐ ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํด์ผํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ด ๋ฐ์ํด์ ์ ์ฐํ Mongo DB๋ฅผ ์ ํ MySQL์ ์ ํํ ์ด์
- ๋ฒ์ฉ์ ์ด๋ค.(์ค์ ๊ธฐ์ ์์ ๋ง์ด ์ฌ์ฉ)
- ํ ์ด๋ธ ๊ฐ ๊ด๊ณ๊ฐ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค.
- ์ฑํ ๊ณผ ๊ฐ์ ๋น ๋ฅธ Write๊ฐ ํ์์๊ณ ๊ด๊ณ๋ฅผ ๋งบ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ์ NoSQL์ ์ฌ์ฉํ๋ฉด ์์ ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค๊ณ ํ๋จํ๋ค.
๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์กฐํ๋ง ํ๋ค โ Mongo DB
๋ญ๊ฐ ์กฐ์์ ํ๋ค โ My SQL
๋ผ๊ณ ๋ฐ์๋ค์์ต๋๋ค. ๋ฌผ๋ก ์ด ํ๋ก์ ํธ๊ฐ ๋๋๊ณ ๋ ๋ค์ ์๊ฐ์ ๋ ๋ฌ๋ผ์ง๊ฒ ์ง๋ง ํ์ฌ ์์ ์์๋ MongoDB๋ฅผ ์ ํํ์ต๋๋ค.
์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-
์คํค๋ง์ ์์ ์ด ์ ๋ค. ๋ฐ์ดํฐ์ ์ ๊ทํ ๊ณผ์ ์ด ํ์ํ RDB ํน์ฑ ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋ณ๊ฒฝ์ด ์์ผ๋ฉด ์ ๊ทํ ๋ฑ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผํฉ๋๋ค. ์ฒ์ํ๋ ํ๋ก์ ํธ์ ํ์ ์ธ ๋งํผ ์คํค๋ง์ ์์ ์ด ์ฆ์ ๊ฒ์ผ๋ก ์๊ฐ์ด ๋๊ณ ์ด ๋ ๋น ๋ฅธ ๋ฌธ์ ํด๊ฒฐ์ ์ํด ์คํค๋ง ์์ ์ด ์ ์ Document DB ์ฆ ๋ชฝ๊ณ ๋๋น๋ฅผ ๋ฉ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ํํ์ต๋๋ค.
-
์ฝ๊ณ ์ฐ๊ธฐ์ ๋น ๋ฆ ๋ฌผ๋ก ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ง๋ง ํ ์ด๋ธ์ ๊ด๊ณ๋ฅผ ๋งบ๊ณ ๋น๋ฒํ๊ฒ JOIN์ ํตํด ๋น์ฉ์ ๊ฐ์ ธ๊ฐ๋ ๊ฒ ๋ณด๋ค๋ ๋จ์ํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์์ผ๋ก์จ ์๋์ ์ด์ ์ ๊ฐ์ ธ๊ฐ๊ณ ์ ํ์ต๋๋ค. ๋น์ฐํ๊ฒ ์ง๋ง ์ด ๋ถ๋ถ์ ๋ํด์๋ ๋น๊ต๊ฐ ํ์ํ๊ฒ ์ง๋ง ์ด๋ ํ๋ก์ ํธ๊ฐ ๋๋ ํ ๋ฆฌํฉํ ๋ง ์๊ฐ์ ํ ์๊ฐ์ ๋๋ค.
-
๊ธฐ์ ์ ๋์ ์ฌ์ค ์ด๊ฑด ๊ฐ์ธ์ ์ธ ์ด์ ์ด์ง๋ง ์๋ MongoDB๋ฅผ ์ฌ์ฉํด๋ณด๊ณ ์ถ์์ต๋๋ค. ์ด์ ์๋ MySQL์ ํตํด ํ๋ก์ ํธ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ๋น๊ด๊ณํ DB๋ฅผ ์ฌ์ฉํด์ ํ๋ก์ ํธ๋ฅผ ํด๋ณด๊ณ ์ถ์์ต๋๋ค. ๊ทธ๋๋ ์ข์ ๊ธฐํ๊ฐ ๋์ ์ฌ์ฉํด๋ณผ ์ ์์ด์ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
BE
iOS
- โ Week01 ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ
- โ Week02 ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ
- โ Week03 ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ
- โ Week04 ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ
- โ Week05 ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ
- โ Week06 ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ