๐ NoSQL
NoSQL์ด๋?
NoSQL์ ์ด๊ธฐ์ ์ฃผ๋ก ํ RDBMS๋ฅผ ์๋ฏธํ๋ ํ์คํ๋ ๊ตฌ์กฐ์ ์ง์ ์ธ์ด๊ฐ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค(No SQL) ๋๋ ๊ด๊ณ๋ฅผ ๊ฐ์ง ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ ์ํ์์ง๋ง ํ์ฌ๋ ์์ ๋ ๊ฐ์ง ์๋ฏธ ์ธ์๋ SQL๋ฟ๋ง ์๋๋ผ ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ ๊ณต(Not Only SQL)ํ๋ค๋ ์๋ฏธ๋ก ์ผ๋ฐํ๋์์ต๋๋ค.
NoSQL DB ์ข
๋ฅ
NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข
๋ฅ๋ ํค-๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ํ๋จผํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์นผ๋ผ ํจ๋ฐ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋๋ฉ๋๋ค.
- ํค-๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค : ํค์ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฐฐ์ด๊ตฌ์กฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค ๊ฐ์ฅ ๋จ์ํ ๊ตฌ์กฐ์
๋๋ค.
- ๋ํ๋จผํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค : ํ๋์ ๊ฐ์ ํํ๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ๋ฅผ JSON ํฌ๋งท์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค ๊ฐ์ฅ ์ธ๊ธฐ๊ฐ ๋์ต๋๋ค.
- ์นผ๋ผ ํจ๋ฐ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค : ์นผ๋ผ๊ณผ ๋ก์ฐ๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์นผ๋ผ์ ์ด๋ฆ๊ณผ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋๊ณ ๋ก์ฐ๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ์นผ๋ผ์ผ๋ก ๊ตฌ์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค : ๋
ธ๋์ ๊ด๊ณ๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๊ทผ์ ํ ๊ฐ์ฒด๋ฅผ ๋ชจ๋ธ๋งํ ๋ชฉ์ ์ผ๋ก ์ค๊ณ๋์์ต๋๋ค.
NoSQL DB ํน์ง
- ์ ์ฐ์ฑ : ์คํค๋ง ์ ์ธ ์์ด ํ๋์ ์ถ๊ฐ ๋ฐ ์ญ์ ๊ฐ ์์ ๋ก์ด Schema-less ๊ตฌ์กฐ์
๋๋ค.
- ํ์ฅ์ฑ : ์ค์ผ์ผ ์์์ ์ํ ์๋ฒ ํ์ฅ์ด ์ฉ์ดํฉ๋๋ค.
- ๊ณ ์ฑ๋ฅ : ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฑ๋ฅ์ด ๋ฐ์ด๋ฉ๋๋ค.
- ๊ฐ์ฉ์ฑ : ์ฌ๋ฌ ๋์ ๋ฐฑ์
์๋ฒ ๊ตฌ์ฑ์ด ๊ฐ๋ฅํ์ฌ ์ฅ์ ๋ฐ์ ์์๋ ๋ฌด์ค๋จ ์๋น์ค๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๐ MongoDB
MongoDB ํน์ง
- ๋ํ๋จผํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ํ๋จผํธ๋ HTML๊ณผ ๊ฐ์ ํน์ ํ์์ ํ๊ทธ ๊ตฌ์กฐ๋ฅผ ์๋ฏธํ๋ฉฐ, mongoDB๋ JSON(JavaScript Object Notation) ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ฏ๋ก NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค ๋ํ๋จผํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ถ๋ฅ๋ฉ๋๋ค. ๋ํ ๋ํ๋จผํธ๋ mongoDB๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ต์ ๋จ์์ด๊ธฐ๋ ํฉ๋๋ค.
- ๋ํ๋จผํธ๋ ํ๋์ ๊ฐ์ ์์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๊ด๊ณ๋ฅผ ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ค์ฒฉ ๋ํ๋จผํธ์ ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ 1๊ฐ์ ๋ํ๋จผํธ๋ก ํํํ ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ์
์ถ๋ ฅ ์์๋ JSON ํ์์ ๋ํ๋จผํธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฅ ์์๋ ์ด์ง ํฌ๋งท์ผ๋ก ์ธ์ฝ๋ฉํ BSON(Binary JSON) ํ์์ ๋ํ๋จผํธ๋ก ๋ณํ๋์ด ์ ์ฅ๋ฉ๋๋ค.
- ์คํค๋ง์ ์ ์ธ ์์ด ํ๋์ ์ถ๊ฐ์ ์ญ์ ๊ฐ ์์ ๋ก์ด Schema-less ๊ตฌ์กฐ์
๋๋ค.
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ
์ด๋ธ ๋ด ๋ชจ๋ ๋ก์ฐ(Row)์ ์นผ๋ผ ์งํฉ์ด ๋์ผํ๊ณ ๊ฐ์ ์นผ๋ผ์ ๋์ผํ ๋ฐ์ดํฐ ํ์
์ ๊ฐ๋ ์ ํ ์คํค๋ง์ด๋, mongoDB๋ ์ปฌ๋ ์
๋ด ๋ชจ๋ ๋ํ๋จผํธ๋ค์ ํ๋ ์งํฉ์ด ๋์ผํ์ง ์๊ณ ๊ฐ์ ํ๋๋ผ๋ ๋ฐ์ดํฐ ํ์
์ด ๋ค๋ฅผ ์ ์๋ ๋น์ ํ ์คํค๋ง์
๋๋ค.
- ๋น ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- mongoDB๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๊ณ(Relationship) ๊ฐ๋
์ด ์๋ ๋น ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์
๋๋ค.
- mongoDB๋ ์กฐ์ธ(Join)์ ์ง์ํ์ง ์์ผ๋ฉฐ, ๋์ ์๋ฒ ๋๋ ๋ฐฉ์์ ๋ํ๋จผํธ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ ํผ๋ฐ์ค ๋ฐฉ์์ ๋ํ๋จผํธ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ํ ์ ํ๋ฆฌ์ผ์ด์
์์ ์กฐ์ธํด์ผ ํฉ๋๋ค.
- mongoDB๋ ํธ๋์ญ์
์ ์ง์ํ์ง ์๊ณ ๊ฐ๊ฐ์ ๋ํ๋จผํธ ๋จ์๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
- ํธ๋์ญ์
์ ์ง์ํ์ง ์์ผ๋ฏ๋ก Commit ๋๋ Rollback ๊ฐ๋
์ด ์์ผ๋ฉฐ ๋ชจ๋ Auto Commit์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
DML
์
๋ ฅ : db.member.insert( { no : "C001", age : 45, status : "A" } )
์์ : db.member.update( { age : { $gt : 25 } }, { $set : { status : "C" } }, { multi : true } )
์ญ์ : db.member.remove( { no : "C001" } )
์กฐํ : db.member.find( { no : "C001" } )
๐ MongoDB ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง
๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ด๋ป๊ฒ ์ค๊ณํ๋๋์ ๋ฐ๋ผ ๋ฐ์ดํฐ ์ ํฉ์ฑ๊ณผ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ์ฃผ๊ฒ๋ฉ๋๋ค. mongoDB ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ๋ํ๋จผํธ ์ค๊ณ ํ ์ปฌ๋ ์
์ ์ค๊ณํ๋ ์์๋ก ์งํ๋ฉ๋๋ค.
์๋ฒ ๋๋ ๋ฐฉ์
์๋ฒ ๋๋ ๋ฐฉ์์ ๊ด๊ณ๋ฅผ ๊ฐ๋ ๋ฐ์ดํฐ ์งํฉ์ ๋จ์ผ ๋ํ๋จผํธ์ ํฌํจํ์ฌ ์ ์ฅํ๋ ๋ฐฉ์์
๋๋ค.
๋ ํผ๋ฐ์ค ๋ฐฉ์
๋ ํผ๋ฐ์ค ๋ฐฉ์์ ๋ํ๋จผํธ์ ๊ด๊ณ๋ฅผ ๊ฐ๋ ๋ค๋ฅธ ๋ํ๋จผํธ์ ์๋ณ์๋ฅผ ์ฐธ์กฐํค๋ก ์ ์ฅํ์ฌ ํ์์ ์ ํ๋ฆฌ์ผ์ด์
์์ ์กฐ์ธํ๋ ๋ฐฉ์์
๋๋ค.
์ฐธ๊ณ ๋งํฌ1
์ฐธ๊ณ ๋งํฌ2
์ฐธ๊ณ ๋งํฌ3
SQL์ด๋ผ๊ณ ๋ค ๊ฐ์ SQL์ ์๋์๋ค์.. ์ ์ ๋ฆฌํด์ฃผ์ ์ ์ ์ฝ๊ณ ๊ฐ๋๋ค ^_^