[MongoDB] 몽고DB
지난 포스팅까지는 SQL의 대표주자인 오픈소스 MySQL과 MySQL의 SQL 문법을 알아보았습니다. 이번에 소개드릴 데이터베이스는 몽고DB입니다. 왜 SQL을 배웠는데, 다른 것을 다시 배우는 지부터, 몽고 디비가 무엇인지까지도, 이번 포스트에서 소개해드리겠습니다.
1. NoSQL
NoSQL은 이름에서 느낄 수 있듯이 SQL을 사용하지 않는 데이터베이스입니다. 사용하지 않는다고 했지만 이는 정확하지 않은 이야기이고, SQL을 사용할 수는 있으므로 No를 Not only라고도 부르기도 합니다.
그렇다면 SQL문을 사용하지 않았을 때의 장점은 무엇이길래 NoSQL이 등장하게 되었을까요? NoSQL 데이터베이스는 기존의 관계형 데이터베이스에 비해 융통성있고, 데이터를 다루는데 개선된 매커니즘을 다루고 있습니다. 기존 데이터베이스가 관계적이고, 구조적 데이터를 다루기 위해 규칙을 세웠다면 NoSQL은 그런 규칙에서 벗어나 비교적 자유롭게 다룰 수 있다는 점이 있습니다.
2. Mongo DB 소개
Mongo DB(이하 몽고디비)는 NoSQL에서 가장 잘 알려진 데이터베이스들 중 하나입니다. 제가 몽고디비를 소개하는 이유는 몽고디비가 자바스크립트로 이용하는데 특화되어 있어서, 자바스크립트를 배워왔던 분들이라면 익숙하고 편하게 이용할 수 있기 때문입니다. 또한 자바스크립트 하나로 데이터베이스까지 다룬다면, 굉장한 생산성과 효율성을 가질 수 있다는 이점도 존재합니다.
NoSQL과 관계형 데이터베이스는 각각 이점이 있기 때문에 프로젝트에서 하나 이상의 데이터베이스를 섞어서 이용하기도 합니다.
3. Mongo DB의 특징과 관계형 데이터베이스와의 비교
MySQL과 몽고디비의 특징을 비교하면 다음과 같습니다.
Mongo DB | MySQL |
자유로운 데이터 입력 | 규칙을 따르는 데이터 입력 |
확장성과 가용성 | 안정성과 일관성 |
JOIN 미지원 | JOIN 지원 |
우선 기존 관계형 데이터베이스와 몽고디비에서 사용하는 용어가 조금씩 다릅니다. 관계형 데이터베이스의 테이블(릴레이션), Row, Column이라고 부르던 것은 몽고디비에서는 컬렉션, Document, Field라고 부릅니다.
다음으로 큰 특징은 몽고디비는 데이터 입력이 자유롭다는 것 입니다. 컬렉션이라는 개념과 필드(관계형에서 컬럼)이라는 개념이 있으나, 따로 속성을 정의하지 않습니다. 몽고디비는 컬렉션만을 만들고 그 내부 document에 저장되는 데이터들은 개체마다 다양한 속성을 가질 수 있습니다.
또 다른 특징은 JOIN 명령이 존재하지 않는다는 점입니다. JOIN이 활용에 따라 아주 강력한 도구가 될 수 있다는 점을 고려하면, 이것은 단점이 될 수도 있는 특징입니다. 물론 JOIN과 비슷한 쿼리를 작성할 수는 있으나, JOIN 명령처럼 모든 상황에서 쿼리를 작성할 수는 없습니다.
마지막 특징은 확장성과 가용성인데, 이 특징이 몽고디비의 가장 강력한 장점입니다. 데이터 입력이 자유로워 컬렉션 내부의 일관성은 떨어지게 되지만, 데이터를 빠르게 입력하고, 여러곳에 분산시킬 수 있습니다.
4. 몽고디비 설치
https://www.mongodb.com/try/download/community
위의 다운로드 페이지에서 몽고디비를 다운받을 수 있습니다. current 버전(작성일 기준 2022.01.26, V5.0.5)을 다운해 주세요.
다운로드 후 .msi를 실행해 설치를 진행합니다. Setup 타입은 complete로 진행해주세요.
다음 화면에서는 체크박스를 해제하고 진행해주세요.
그러면 다음 페이지에서 컴퍼스를 설치할거냐고 묻는데, 이것은 체크하셔도 되고, 안해도 됩니다.
몽고디비 컴퍼스는 몽고디비를 편하게 사용하기 위한 GUI 툴 입니다. Git의 소스트리나 MySQL의 워크벤치를 생각하시면 됩니다. 저는 콘솔로 진행할 예정이지만, 일단 컴퍼스도 설치하고 진행하도록 하겠습니다.
설치가 완료되었다면, 추가적으로 작업을 해주어야합니다. 터미널(cmd, 콘솔)을 열고 설치 경로 bin으로 이동합니다. 따로 경로를 만지지 않았다면 보통 다음 위치에 존재합니다. 해당 경로를 환경변수에도 추가해주세요.
C:\Program Files\MongoDB\Server\(설치 메이저 버전)\bin
그리고 C:위치에 data\db폴더를 만들어줍니다. 이 기본 경로가 존재하지 않는다면, 서버 실행시 오류가 납니다.
C:\data\db
서버를 실행해보겠습니다. 서버 실행 명령은 mongod입니다.
mongod
그러면 아래와 같은 로그들이 나오는데 중간에 보시면 27017번 포트로 서버가 실행되고 있음을 알 수 있습니다.
다른 콘솔 창을 열어 서버에 접속해보겠습니다. 서버에 접속하는 명령은 mongo입니다.
mongo
입력란이 '>'로 변경되었다면, 몽고디비 서버에 접속을 성공한 것 입니다.
관리자 계정 root를 만들어보겠습니다. use admin으로 어드민 db를 만들어주세요.
use admin
그 다음 다음 메소드를 통해 root 계정을 생성해주세요.
db.createUser({user: '계정명', pwd: '비밀번호', roles: ['권한']})
이렇게 되면 사용자 관리자 계정을 생성했습니다.
서버를 실행할 때 --auth 옵션을 추가하면 DB 접속 시 권한이 있어야 접속이 가능하도록 서버를 실행할 수 있습니다.
//서버 실행
mongod --auth
//서버 접속
mongo admin -u 계정명 -p 비밀번호
몽고디비를 종료하는 방법은 Ctrl+C 혹은 quit를 입력하면 종료가 됩니다.
이렇게 몽고디비를 설치하고 기본적인 실행방법까지 알아보았습니다. 다음 포스트부터는 몽고디비를 사용하는 방법들을 알아보겠습니다.