일단 시작해보는 블로그

[MongoDB] About MongoDB, 몽고DB 본문

개발/Mysql

[MongoDB] About MongoDB, 몽고DB

Selina Park 2019. 8. 26. 15:00

C++로 작성된 오픈소스 문서지향(Document-Oriented)적 Cross-platform 데이터베이스이며, 뛰어난 확장성과 성능을 자랑한다.

현존하는 NoSQL 데이터 베이스 중 인지도 1위를 유지하고 있음.

 

NoSQL?

-> SQL이 no가 아니라, Not Only SQL이다. 기존의 RDMS의 한계를 극복하기 위해 만들어진 새로운 형태의 데이터저장소이다.

관계형 DB가 아니므로, RDMS처럼 고정된 스키마 및 JOIN이 존재하지 않는다.

 

Document?

-> RDMS에서의 record와 비슷한 개념.

이의 데이터 구조는 한개이상의 key-value pair으로 이뤄져 있다.

예를 들면 다음과 같다.

{
    "_id" : ObjectId("5099803df3f4948bd2f98391"),
    "username" : "jinsun",
    "name" : { first : "J.S", last : "PARK"}
}

여기서 _id는 12bytes의 hexadecimal(16진수) 값으로서, 각 document의 유일함(uniqueness)을 제공한다.

이 값의 첫 4bytes는 현재 timestamp, 다음 3bytes는 machine id, 다음 2bytes는 MongoDB 서버의 프로세스id, 마지막 3bytes는 순차번호이다. 즉, 추가될 때 마다 값이 높아진다.

 

Document는 동적(dynamic)의 schema를 갖고 있다. 같은 Collection 안에 있는 Document 끼리 다른 schema를 갖고 있을 수 있는데, 쉽게 말해서 서로 다른 데이터(다른 key)들을 가지고 있을 수 있다.

 

Collection? 

MongoDB Document의 그룹이다. Document들이 Collection 내부에 위치하고 있는데, RDMS의 table과 비슷한 개념이다.

그렇지만 schema를 따로 가지고 있지 않는다. (각 Document들이 동적이 schema를 가지고 있기때문에!)

 

Database?

Collection들의 물리적인 컨테이너이다. 각 Database는 파일시스템에 여러파일들로 저장된다.

 

RDMS와의 비교

RDMS(Relational Database Management System, 관계형 데이터베이스 관리 시스템)은 행과 열로된 2차원의 table로 데이터를 고나리하는 데이터 베이스 시스템이다. Mysql, Oracle Database, DB2 등 시스템들이 RDMS에 속함.

 

장점

 - Schema-less(Schema가 없다. 같은 Collection 안에 있을지라도 다른 Schema를 가지고 있을 수 있다.)

 - 각 객체의 구조가 뚜렷하다.

 - 복잡한 JOIN이 없다.

 - Deep Query ability(문서지향적 Query Language를 사용하여 SQL만큼 강력한 Query성능을 제공한다.)

 - 어플리케이션에서 사용되는 객체를 데이터베이스에 추가할 때 Conversion/Mapping이 불필요하다.

 

 

macOS 설치

터미널창 열기

brew update

brew install mongodb



sudo mkdir -p /data/db   -> -p는 상위폴더, 즉 db의 상위폴더가 없을 수 있기 때문에 다 세트로 만들어달라는 것

whoami        -> username을 얻기위해서

sudo chown 유저네임 /data/db    -> 권한 얻기위해서 chown



mongod     -> mongodb서버 실행하는 명령어. 이 후, 다른 터미널 창을 켜고 다음 명령을 실행한다.



mongo

 

[REFERENCE]

https://velopert.com/436

Comments