- Published on
MongoDB ์์ํ๊ธฐ ๐ฑ
- Authors
- Name
- Haneul
MongoDB
MongoDB ๋ ?
mongoDB๋ ๋ฌธ์์งํฅ(Document-Oriented) ์ ์ฅ์๋ฅผ ์ ๊ณตํ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ผ๋ก, ํ์กดํ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค ์ธ์ง๋ 1์๋ฅผ ์ ์งํ๊ณ ์์ต๋๋ค. mongoDB์์๋ ๋ฐ์ดํฐ๊ฐ Document๋ก ๋ถ๋ฆฌ๋ฉฐ, ์ด ๋ฐ์ดํฐ์ ์งํฉ์ Collection(RDMS์์๋ Table)์ด๋ผ๊ณ ํฉ๋๋ค. ์คํค๋ง ์ ์ฝ ์์ด ์์ ๋กญ๊ณ , BSON(Binary JSON) ํํ๋ก ๊ฐ ๋ฌธ์๊ฐ ์ ์ฅ๋๋ฉฐ ๋ฐฐ์ด(Array)์ด๋ ๋ ์ง(Date) ๋ฑ ๊ธฐ์กด RDMS์์ ์ง์ํ์ง ์๋ ํํ๋ก๋ ์ ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ JOIN์ด ํ์ ์์ด ํ ๋ฌธ์์ ์ข ๋ ์ดํดํ๊ธฐ ์ฌ์ด ํํ ๊ทธ๋๋ก ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์๋ค๋ ๊ฒ์ด ํน์ง์ ๋๋ค.
ํนํ mongoDB๋ ๋ฌธ์์งํฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก, ์ด๊ฒ์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ ์ ๋ง๊ณ JSON์ ์ฌ์ฉํ ๋ ์์ฃผ ์ ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ Node.js์ ํธํ์ด ๋งค์ฐ ์ข๊ธฐ ๋๋ฌธ์, Node.js์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. ๋ฌผ๋ก mysql ๊ฐ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ๋ ๊ฐ๋ฅํฉ๋๋ค.
- Join์ด ์์ผ๋ฏ๋ก Join์ด ํ์ ์๋๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐํ๊ฐ ํ์
- ๋ค์ํ ์ข ๋ฅ์ ์ฟผ๋ฆฌ๋ฌธ์ ์ง์(ํํฐ๋ง, ์์ง, ์ ๋ ฌ, ์ ๊ทํํ์ ๋ฑ)
- ๊ด๋ฆฌ์ ํธ์์ฑ
- ์คํค๋ง ์๋(Schemaless) ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด์ฉํ ์ ์ ๊ฐ๋ฐ. ํ๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๋ ๊ฒ์ด ๋งค์ฐ ์ฌ์์ง
- ์ฌ์ด ์ํ ํ์ฅ์ฑ
- ์ธ๋ฑ์ฑ ์ ๊ณต
NoSQL
๊ธฐ์กด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ค์ ๋๋ถ๋ถ ๊ด๊ณํ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ ๋๊ณ ์์ผ๋ฏ๋ก ๋๋ถ๋ถ SQL์ด๋ผ๋ ์ง์๋ฌธ์ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ , ๊ฐฑ์ , ์ ์ฅ, ๊ฒ์ํ๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ต๊ทผ ๋ค์ด ์ด๋ฌํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๊ณผ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ๋ํ ๊ด์ฌ์ด ์ฆ๊ฐํ๊ณ ์๋๋ฐ, ์ด๋ฌํ ์์คํ ์ ์ผ์ปฌ์ด NoSQL(Not Only SQL)์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ mongoDB๋ ์ด๋ฌํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ค ํ๋์ ๋๋ค. ๋น ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ RDBMS๋ก๋ง ํธ๋ํฝ์ ๊ฐ๋นํ๊ธฐ ์ด๋ ค์์ ธ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ์ํ ๊ฒ์ด NoSQL์ ๋๋ค. ๊ด๊ณํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ฌ์ฉํ์ง ์๊ณ SQL์ ์ฌ์ฉํ์ง ์๋ ๊ทธ ์ด์ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ๋๋ ๋ฐ์ดํฐ ์คํ ์ด๋ฅผ ์ผ์ปฌ์ด NoSQL์ด๋ผ๊ณ ์นญํฉ๋๋ค. ๊ฐ์ฅ ํฐ ํน์ง์ ํ์ฅ์ฑ๊ณผ ๊ธฐ์ฉ์ฑ, ๋์ ์ฑ๋ฅ, ๊ทธ๋ฆฌ๊ณ ๋ค์ํ ๋ฐ์ดํฐ ํํ๋ฅผ ์์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
MongoDB ์ค์น
// tapping
brew tap mongodb/brew
brew install mongodb-community
brew services start mongodb-community
// mongo ๋ฒ์ ํ์ธ
mongod --version
// mongo ์คํ
mongo
Mongoose
mongoose๋, mongoDB๋ผ๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ํ๋ ๋ ธ๋์ ํ์ฅ๋ชจ๋์ ๋๋ค. mongoose๋ mongoDB์ ODM์ ๋๋ค. ODM์ Object Document Mapping์ ์ฝ์๋ก, ๋ฌธ์๋ฅผ DB์์ ์กฐํํ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ก ๋ฐ๊ฟ์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. mongoDB์ ODM์๋ mongodb-native ๋ฑ ์ฌ๋ฌ ๊ฐ๊ฐ ์์ง๋ง ๊ทธ์ค mongoose๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
์ฐธ๊ณ : https://edu.goorm.io/learn/lecture/557/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-node-js/lesson/174384/mongodb%EB%9E%80, ๊ณต์๋ฌธ์