MongoDB 소개 및 설치하기
MongoDB의 특징과 설치하는 방법에 대해 알아보겠습니다.
1. MongoDB
MongoDB는 C++로 작성된 문서지향적(Document-Oriented) NoSQL(Not Only SQL) 오픈 소스 데이터베이스입니다.
MongoDB에서 사용되는 데이터 형태는 다음과 같습니다.
{
_id: ObjectId("5099803df3f4948bd2f98391"),
userName: "freestrokes",
name: { first: "Harry", last: "Kim" }
}
MongoDB의 데이터 구조를 RDBMS와 비교하여 정리하면 다음과 같습니다.
- Field
RDBMS의 column과 유사한 개념입니다. - Document
RDBMS의 row(record)와 유사한 개념입니다. document는 JSON object 형태이며 key-value 데이터로 구성됩니다.
BSON(Binary JSON) 형태로 이루어져 있어 JSON 객체 형태의 저장이 가능합니다.
document를 생성하면 고유의 _id 값이 생성됩니다. - Collection
RDBMS의 table과 유사한 개념입니다. document들의 집합으로 구성됩니다. - Database
collection들의 물리적인 컨테이너입니다.
MongoDB의 장점은 다음과 같습니다.
- Schema-less
RDBMS처럼 고정 Schema가 존재하지 않기 때문에 같은 collection 내에서도 다른 document의 schema를 가질 수 있습니다.
collection 내의 document가 각각 고유한 field를 갖는 것이 가능하며 이러한 특징을 동적 스키마라고 합니다. - 간편하고 빠른 Query
RDBMS처럼 JOIN은 없지만 CRUD Query는 고속으로 동작합니다.
MongoDB의 schema는 document에 최대한 많은 데이터를 포함하도록 디자인되어있는데, 이러한 구조는 간편하고 빠른 Query가 가능하게 해줍니다. - 우수한 확장성(Scalability)
MongoDB는 확장성이 우수하고 여러개의 데이터베이스에 데이터를 분할하는 Sharding 클러스터 구축도 가능합니다.
2. MongoDB 설치
macOS(Catalina) 환경에서 패키지 관리자 Homebrew를 이용하여 MongoDB를 설치하는 방법입니다.
2.1. Homebrew 설치
Homebrew(https://brew.sh) 설치가 되어있지 않은 경우 Terminal에서 아래 명령어를 이용하여 설치해줍니다.
설치시 /usr/local/bin/brew update --force 에러가 발생하는 경우엔 /usr/local/Homebrew 디렉터리를 삭제한 후에 아래 명령어를 다시 실행해줍니다.
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2.2. brew를 이용한 MongoDB 설치
macOS Catalina 버전에서 brew instatll mongodb로 설치를 진행하면 에러가 발생하는 경우가 있기 때문에 아래 명령어를 순차적으로 실행하여 설치해줍니다.
$ brew tap mongodb/brew
$ brew install mongodb-community@4.4
설치가 완료되면 데이터 저장소로 사용할 로컬 디렉터리를 생성해줍니다. mongodb의 기본 데이터 저장 경로(/data/db)는 macOS Catalina 버전에서 접근이 제한되어 있기 때문에 별도로 생성해줍니다.
Terminal에서 whoami 명령어를 실행하면 사용자명이 나오는데 경로 생성시 $(whoami) 위치에 입력해줍니다.
$ whoami
$ sudo mkdir -p /Users/$(whoami)/data/db
이후엔 brew를 이용하여 mongodb 서비스를 실행해줍니다.
$ brew services start mongodb-community@4.4
mongodb의 기본 포트는 27017 입니다. 아래 명령어로 확인할 수 있습니다.
$ lsof -i:27017
서비스가 실행되면 mongo 명령어를 이용하여 프롬프트에 접속할 수 있습니다.
$ mongo
다음과 같이 프롬프트가 > 모양으로 바뀌면 정상적으로 접속이 된 것입니다.
2.3. MongoDB 계정과 인증 설정
다음 명령어를 실행하여 mongodb에서 사용할 root 권한의 계정을 추가해줍니다.
> use admin;
> db.createUser({user:'$(id)',pwd:'$(pwd)',roles:['root']});
계정을 추가한 후에 mongodb 서비스를 종료하고 /usr/local/etc/mongod.conf 파일을 수정해줍니다.
$ brew services stop mongodb-community@4.4
$ vim /usr/local/etc/mongod.conf
다음과 같이 security: authorization: enabled 항목을 작성하여 저장해줍니다.
systemLog:
destination: file
path: /usr/local/var/log/mongodb/mongo.log
logAppend: true
storage:
dbPath: /usr/local/var/mongodb
net:
bindIp: 127.0.0.1
security:
authorization: enabled
수정이 완료되면 다시 mongodb 서비스를 실행하고 추가한 계정을 이용하여 접속해줍니다.
$ brew services start mongodb-community@4.4
$ mongo admin -u $(id) -p $(pwd)
다음과 같이 등록한 계정을 이용하여 정상적으로 접속된 것을 확인할 수 있습니다.
이상으로 MongoDB와 설치 방법 배열에 대해 알아봤습니다.
※ Reference
- poiemaweb.com, MongoDB의 기본 개념과 설치, https://poiemaweb.com/mongdb-basics
- medium.com/@gwakhyoeun, Mac OS에서 mongodb 설치하기, https://medium.com/@gwakhyoeun/mac-os%EC%97%90%EC%84%9C-mongodb-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-79e473cc9000
- cionman.tistory.com, 01. MongoDB(몽고디비) Study - NoSQL 이란? 그리고 MongoDB 소개, https://cionman.tistory.com/44
- velog.io/@cyongchoi, MongoDB 소개, https://velog.io/@cyongchoi/MongoDb-%EC%86%8C%EA%B0%9C
- docs.mongodb.com, Install MongoDB Community Edition on macOS, https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/