Mac을 사용하고 있어서 macOS기준으로 포스팅을 작성합니다.
1. 몽고디비란?
MongoDB 는 무료 오픈 소스 플랫폼 문서 지향 데이터 베이스(Cross-Platform Document-Oriented)입니다.
NoSQL의 일종으로 확장성이 좋고 성능이 우수합니다.
JSON과 같은 동적 스키마(Schema)형 문서들을 선호함으로써 전통적인 테이블 기반 관계형 데이터베이스들(RDMS)과는 차별화 됩니다.
1) NoSQL이란?
NoSQL 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용합니다.
때문에 NoSQL데이터베이스는 단순 검색 및 추가 작업이 쉬워서
빅데이터(Big Data) 및 실시간 웹 애플리케이션(Web Application)에 자주 쓰입니다.
NoSQL이란 이름은 "SQL을 사용하지 않는다(No SQL)" 라는 의미가 아니고,
SQL 계열 쿼리 언어를 사용 할 수도 있다는 사실을 강조하기 위한 이름으로 "Not only SQL" 의 약어입니다.
2) NoSQL vs SQL
SQL (MySQL) | NoSQL(MongoDB) |
규칙에 맞는 데이터 입력 | 자유로운 데이터 입력 |
테이블 간 JOIN 지원 | 컬렉션 간 JOIN 미지원 |
트랜잭션 지원 | 트랜잭션 미지원 |
안정성, 일관성 | 확장성, 가용성 |
용어 (테이블, 로우, 컬럼) | 용어 (컬렉션, 다큐먼트, 필드) |
2. 몽고디비 설치하기
공식 사이트의 메뉴얼을 따라해봅니다.
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/
Homebrew를 활용해서 설치하는 방법을 그대로 따라했습니당ㅇㅅㅇ
(Homebrew를 설치하지 않았다면 설치한 후에! 진행하면 됩니다)
터미널 창에 순서대로 실행
brew tap mongodb/brew
brew install mongodb-community@4.2
brew services start mongodb-community@4.2
ps aux | grep -v grep | grep mongod
다 끝내고 mongo 명령어를 실행시켰을 때 프롬프트가 >로 바뀌면 완료
$ mongo
MongoDB shell version v4.2.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.2.3
>
끝내고 싶을때는 ctrl+c
3. 계정 추가
디비에 누구나 접근가능하니 관리자 계정을 만들어 추가합니다.
> use admin
switched to db admin
> db.createUser({user: 'root', pwd: '비밀번호', roles: ['root']})
Successfully added user: { "user": "root", "roles": ["root"]}
user에 사용자 이름을 넣고, pwd에는 비밀번호를 입력합니다. 모든 권한을 주는 root를 부여해 주어 관리자 계정을 추가완료 했습니다.
위 예시에는 user에 'root'라고 써있지만 원하는 이름을 넣으면 됩니다.
잠시 프롬프트를 종료한 후 몽고디비가 인증을 사용하도록 설정합니다.
brew services stop mongodb-community@4.2
vim /usr/local/etc/mongod.conf
/usr/local/etc/mongod.conf
...
security:
authorization: enabled
위에 두줄을 추가해주고 :wq!로 저장하고 다시 mongomongodb-community@4.2를 실행합니다.
mongo admin -u [이름] -p [비밀번호] 명령어로 접속합니다.
brew service start mongodb-community@4.2
mongo admin -u 이름 -p 비밀번호
4. 컴퍼스 설치하기
GUI로 몽고디비를 쉽게 관리하는 도구인 컴퍼스를 활용해도 됩니다. 터미널이 편하면 설치안해도 됩니다. 선택사항!
https://www.mongodb.com/download-center/compass
Download 버튼을 누르고 dmg파일 다운로드 후 실행!
다운로드 완료화면에서 MongoDB Compass Community아이콘을 우측 Application폴더로 드래그해서 넣으면 설치 끝
(설치하고 런치패드에 생성된 아이콘을 눌렀더니 실행이 안된다?
그럼 finder로 application폴더에서 MongoDB Compass 우클릭 후 열기 눌러서 실행한번하고나면 그후로는 어디서든 실행잘됨)
처음 실행하면 아래와 같이 창이 뜨는데,
New Connection이라는 글자 오른쪽에
작은 파란글씨 Fill in connection fields individually 이거 클릭!
아래 처럼 창이 바뀌면 Authentication을 Username/Password로 변경
아까 만든 계정 이름과 비밀번호 입력해주고 Connect 시키면 끝
연결하면 이런식으로 창이 뜸 내가 만든 데이터베이스를 볼 수 있습니다.
저는 다른 데이터베이스가 추가된 상태로 보이는데 기본적으로 처음에는 admin과 local이 있습니다.
5. 데이터베이스, 컬렉션 생성하기
간단하게 nodejs라는 데이터베이스를 만들어봅니다.
몽고디비 프롬프트에 생성한 계정으로 접속해서 진행합니다.
1) 데이터베이스 생성: use [데이터베이스 명]
> use nodejs
switched to db nodejs
2) 데이터베이스 목록 확인: show dbs
최소 한 개 이상 데이터를 넣어야 목록에 표시되기 때문에 nodejs는 목록에 없습니다.
> show dbs
admin 0.000GB
local 0.000GB
3) 현재 사용중인 데이터베이스 확인: db
목록에는 없었지만 nodejs 데이터베이스를 사용 중인걸 확인할 수 있습니다.
> db
nodejs
4) 컬렉션 생성: db.createCollection('컬렉션 이름')
본래 컬렉션은 따로 생성할 필요없이 다큐먼트를 넣는 순간 자동으로 생성되지만,
직접 컬렉션을 생성하는 명령어가 있습니다.
> db.createCollection('users')
{ "ok" : 1 }
> db.createCollection('comments')
{ "ok" : 1 }
5) 컬렉션 목록 확인: show collections
> show collections
comments
users
'DB > MongoDB' 카테고리의 다른 글
[MongoDB] Aggregate Pipeline 사용 2 ( $group / $match / $sort ) (0) | 2020.04.29 |
---|---|
[MongoDB] Aggregate Pipeline 사용 ( $project / $limit ) (0) | 2020.04.29 |
[MongoDB] aggregation란? (0) | 2020.04.29 |
[MongoDB] Mongoose란? (0) | 2020.03.19 |
[MongoDB] CRUD 작업하기 (0) | 2020.03.19 |