์๋ ํ์ธ์! ์ด๋ฒ ์๊ฐ์๋ MacOS์ ๋ชฝ๊ณ ๋๋น๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๋ชฝ๊ณ ๋๋น๋ฅผ ์ค์นํ๊ธฐ์ ์ ๋ชฝ๊ณ ๋๋น์ NoSQL์ ๋ํด ๊ฐ๋ตํ๊ฒ ์ดํด๋ณด๊ณ , ์ค์น๋ฅผ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
โป ๋ชฝ๊ณ ๋๋น๋ ์ฒ์ ์ฌ์ฉํด๋ณด๊ธฐ ๋๋ฌธ์ ์๋ชป๋ ๋ด์ฉ์ด ์กด์ฌํ ์ ์์ต๋๋ค๐ญ
NoSQL ์ด๋?
Wiki์๋ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช ํ๊ณ ์์ต๋๋ค.
๋จ์ด ๋ป ์์ฒด๋ฅผ ๋ฐ์ง๋ฉด "Not only SQL"๋ก SQL๋ง์ ์ฌ์ฉํ์ง ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ ์ง์นญํ๋ ๋จ์ด์ ๋๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ ์๋ฏธ๊ฐ ์๋, ์ฌ๋ฌ ์ ํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
๋ํ ๊ธฐ์กด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํ ๋ฐ์ดํฐ์ ์ ์ฅ์๋ก ๋ฌธ์, ๊ทธ๋ํ, key-value, ์ธ๋ฉ๋ชจ๋ฆฌ, ๊ฒ์ ๋ฑ์ ํฌํจํ ๋ค์ํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ mongoDB์ ๊ณต์๋ฌธ์์ ๋ณด๋ค ์์ธํ ์ค๋ช ์ด ๋์ด์์ต๋๋ค.
MongoDB ๋?
๊ณต์๋ฌธ์์๋ ๋ชฝ๊ณ ๋๋น๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํ๊ณ ์์ต๋๋ค.
๋ชฝ๊ณ ๋๋น๋ ํ์ํ ์ฟผ๋ฆฌ ์ ๊ณต ๋ฐ ์ธ๋ฑ์ฑ์ ํ์ฉํด ์ํ๋ ์์ค์ ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ ๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋๋ค.
๋ชฝ๊ณ ๋๋น๋ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- JSON ํ์์ ๋ฐ์ดํฐ๊ตฌ์กฐ๋ก ๋ฌธ์(Document)์ ์ ์ฅํฉ๋๋ค.
- ์ฆ, ํ๋๊ฐ ๋ฌธ์์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์๊ฐ์ ๋ฐ๋ผ ๋ณํ ์ ์์ต๋๋ค.
- ๋ฌธ์ ๋ชจ๋ธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ๊ฐ์ฒด๋ค๋ก ๋งตํํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ์์ ์ฟผ๋ฆฌ, ์ธ๋ฑ์ฑ, ์ค์๊ฐ ์งํฉ ๊ฐ๋ ฅํ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ฐ ๋ถ์ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
- MongoDB๋ ์ฝ์ด์์ ๋ฐฐํฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋์ ๊ฐ์ฉ์ฑ ๋ฐ ์ํ์ ํ์ฅ ๋ฑ ์ฌ์ฉ์ด ์ฉ์ดํฉ๋๋ค.
- Sharding(๋ถ์ฐ) / Replica(๋ณต์ ) ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
MongoDB ์ค์น ๋ฐ ์คํํ๊ธฐ
์ด์ ๋ชฝ๊ณ ๋๋น๋ฅผ ์ค์นํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ๋ MacOS(M1)์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์, Homebrew๋ฅผ ํตํด ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃฐ ์์ ์ ๋๋ค.
โป ํน์ Homebrew ์ค์น๋ฅผ ์ํ์ ๊ฒฝ์ฐ M1 Homebrew ์ค์น ๋งํฌ๋ฅผ ํตํด ์ค์นํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
1) ๋จผ์ ํฐ๋ฏธ๋์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์.
brew tap mongodb/brew
brew install mongodb-community
2) ๋ชฝ๊ณ ๋๋น ์คํ(start) ๋ฐ ์ ์ง(stop) ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
brew services start mongodb-community
brew services stop mongodb-community
brew services start mongodb-community ๋ช ๋ น์ด๋ฅผ ํตํด ๋ชฝ๊ณ ๋๋น๋ฅผ ์คํํ๊ณ , ๋ชฝ๊ณ ๋๋น ๊ธฐ๋ณธํฌํธ(27017)๋ก ์ ์ํฉ๋๋ค.
๋ชฝ๊ณ ๋๋น๊ฐ ์ ์์ ์ผ๋ก ์คํ๋ ๊ฒฝ์ฐ์๋ ์์ ๊ฐ์ ๋ฌธ๊ตฌ๊ฐ ๋์ค๊ฒ ๋ฉ๋๋ค.
๋ค์์ผ๋ก ๋ชฝ๊ณ ๋๋น ํ ์คํธ ๋ฐ GUI ํด์ธ compass๋ฅผ ์ค์นํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ชฝ๊ณ ๋๋น ํ ์คํธํ๊ธฐ
CLI ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋จํ๊ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปฌ๋ ์ ์์ฑ ๋ฐ ์ญ์ ๋ฅผ ํ ์คํธํด๋ณด๊ฒ ์ต๋๋ค.
๋ชฝ๊ณ ๋๋น๋ฅผ ์คํํ ์ํ์์ mongo ๋ฅผ ์ ๋ ฅํ ํ ์ ์ฌ์ง์ฒ๋ผ > ๊ฐ ์ถ๋ ฅ๋๋๋ก ๋ง๋ญ๋๋ค.
๋ชฝ๊ณ ๋๋น์ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ปฌ๋ ์ ๊ด๋ จํด์ ๋ฌธ๋ฒ์ ๊ฐ๋ตํ ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
// ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
use ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช
// ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ธ
show dbs;
// ์ปฌ๋ ์
์์ฑ
db.createCollection('์ปฌ๋ ์
๋ช
');
// ์ปฌ๋ ์
ํ์ธ
show collections;
// ์ปฌ๋ ์
์ญ์
db.์ปฌ๋ ์
๋ช
.drop();
// ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ญ์
db.dropDatabase()
compass(๋ชฝ๊ณ ๋๋น GUI) ์ค์น ๋ฐ ์คํํ๊ธฐ
์ ๋ ์ฃผ๋ก ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ MySQL์ ์ฌ์ฉํ๊ณ ์๋๋ฐ์, ํด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ๋๋
์์๊ฐ์ด CLI๊ฐ ์๋ MySQL Workbench ๋ผ๋ GUI ๊ธฐ๋ฐ์ ํด์ ์ฃผ๋ก ์ฌ์ฉํฉ๋๋ค.
๋ฐ๋ผ์ ๋ชฝ๊ณ ๋๋น๋ ์์ ๊ฐ์ ํฐ๋ฏธ๋ํ์์ด ์๋, ์ข ๋ ํธ๋ฆฌํ ์ฌ์ฉ์ด ๊ฐ๋ฅํ GUI ๊ธฐ๋ฐ์ compass ๋ผ๋ ํ๋ก๊ทธ๋จ์
์ค์นํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
โป ๋ชฝ๊ณ ๋๋น๋ compass์ Studoi 3T, Robo 3T ๋ฑ ์ด 9๊ฐ์ง์ GUI Client Tools์ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
ํ์ง๋ง compass๋ ๋ชฝ๊ณ ๋๋น์์ ๊ณต์์ ์ผ๋ก ๋ฐฐํฌํ๊ณ ์๋ ํด์ด๊ธฐ ๋๋ฌธ์, ํด๋น ํด์ ์ค์นํ๋๋ก ํ๊ฒ ์ต๋๋ค.
1) ๋จผ์ ์๋ ์ฌ์ดํธ์์ MacOS ์ ์ฉ ํ์ผ์ ๋ค์ด๋ฐ๊ณ ์คํํฉ๋๋ค.
https://www.mongodb.com/try/download/compass
2) ๋ชฝ๊ณ ๋๋น compass Connect
์์์ ์คํํ ๋ชฝ๊ณ ๋๋น์ ์ฐ๊ฒฐ์ ์ํด Fill in connection fields individually ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ฐ๋ก Connect๋ฅผ ํด๋ฆญํด์ ์ฐ๊ฒฐํฉ๋๋ค.
๊ทธ๋ผ ๊ฐ๋จํ ์ฐ๊ฒฐ์ด ๋๋ฉด์ ์ด์ ์ ์์ฑํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํดํธ๋ก ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ค(admin, config, local)์ด
์กด์ฌํฉ๋๋ค. ๐
์ด์์ผ๋ก ๋ชฝ๊ณ ๋๋น์ ์ค์น ๋ฐ GUI ํด๋ผ์ด์ธํธ ํด(compass)๋ฅผ ์ค์นํ๊ณ , ํ ์คํธ๋ฅผ ์งํํด๋ณด์์ต๋๋ค.
๋ค์ ์๊ฐ์๋ ๋ชฝ๊ณ ๋๋น๋ฅผ ํตํด ๊ฐ๋จํ CRUD ์์ ์ ์งํํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค :)
References
- https://lygggg.github.io/blog/NoSql/
- https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/
'CS > Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring Data MongoDB] Auto-Increment Sequence ๋ง๋ค๊ธฐ (0) | 2021.09.10 |
---|---|
[MySQL] - ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ ์์ค(Isolation level) (11) | 2021.09.05 |
DBCP(DataBase Conncetion Pool), ์ปค๋ฅ์ ํ ์ด๋? (0) | 2021.08.10 |
์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ์ ์์ฑํ ๋์ ํธ๋์ญ์ ์ฒ๋ฆฌ (6) | 2021.08.05 |
MongoDB CRUD(์์ฑ, ์กฐํ, ์์ , ์ญ์ ) ์ฟผ๋ฆฌ๋ฌธ (0) | 2021.07.26 |
๋๊ธ