NoSQL의 장점 및 특징에 대해서 이해 할 수 있다.
MongoDB의 도큐먼트(Document)와 컬렉션(Collection)에 대해 이해할 수 있다.
MongoDB의 Atlas에 대해 이해할 수 있다
MongoDB에서 CRUD를 할 수 있다.
Aggregation Framework를 사용하여 aggregate 명령어로 쿼리할 수 있다.
SQL 처럼 행과 열을 사용하지 않는 database.
ex) MongoDB - Document NoSQL database
데이터를 자유로운 형태로 저장가능
NoSQL DB 는 클라우드를 기반으로 쉽게 분리를 할 수 있어 저장공간을 효율적으로 사용한다. 수평적으로 서버를 확장 및 분산이 가능하다.
MongoDB는 Atlas 로 클라우드에 DB 를 설정한다.
Atlas 는 GUI 와 CLI 로 데이터를 시각화, 분석, 내보내기, 빌드하는 데 사용할 수 있다.
Atlas 사용자는 이 DB 서버, cluster 를 배포할 수 있으며, cluster 는 그룹화된 서버에 데이터를 저장한다.
DB 서버는 DB의 Replica Set 으로 구성되어 있다. Cluster 배포시 클러스터 내에 DB 복사본이 자동으로 생성된다. 따라서 DB 하나(DB instance)에 문제가 발생해도 데이터가 그대로 유지된다.
Document 는 객체의 형태로 데이터를 저장한다.
{
<field> : value,
"age" : 30
}
SQL | MongoDB |
---|---|
Table | Collection |
Record | Document |
Column | Field |
Value | Value |
MongoDB document 는 JSON 의 형식을 가지고 있다. 따라서 JSON 형식을 따라야 한다.
JSON 은 읽기 쉽고 사용하기 편리하다.
대신 parsing 이 느리고 메모리 사용이 비효율적이며, 데이터 타입에 제약이 있다.
BSON(Binary JSON) 은 이진법에 기반을 둔 표현법이다. 따라서 메모리 사용이 효율적이며 빠르며, 많은 데이터 타입을 사용할 수 있다.
MongoDB 는 JSON 형식으로 데이터베이스에 추가하고 조회하며, 내부적으로는 BSON 형태로 데이터를 저장, 사용한다.
// JSON
Import: mongoimport
Export: mongoexport
// BSON
Import: mongorestore
Export: mongodump
Aggregation Framework 는 MongoDB 에서 데이터를 query 하는 방법 중 하나로 MQL(Mongo Query Language) 보다 다양한 쿼리를 작성할 수 있다.
Aggregate 는 파이프라인의 각 단계 순서대로 데이터가 처리된다. 원본데이터는 변경되지 않는다.
각 단계 이름 앞에는 $ 가 있고 그 뒤에는 실행할 작업에 대한 설명이 나온다.
데이터의 수가 늘어날수록 query 하는 시간은 늘어난다. 따라서 index(색인) 를 사용하여 자료구조를 만들어 query 시간을 줄일 수 있다.