[Database] NoSQL

Steve·2021년 6월 27일
0

웹개발 코스

목록 보기
49/59
  • NoSQL의 장점 및 특징에 대해서 이해 할 수 있다.

  • MongoDB의 도큐먼트(Document)와 컬렉션(Collection)에 대해 이해할 수 있다.

    • JSON과 BSON의 차이점을 이해하고, 도큐먼트를 가져오거나 내보낼 수 있다.
  • MongoDB의 Atlas에 대해 이해할 수 있다

    • 클러스터(Cluster)와 레플리카 세트(Replica set)에 대해 이해할 수 있다.
    • Atlas를 GUI(Graphical User Interface)와 shell 쿼리문으로 사용할 수 있다.
  • MongoDB에서 CRUD를 할 수 있다.

    • Insert, Find, Update, Delete에 대한 쿼리문을 작성 할 수 있다.
    • 연산자와 프로젝션(Projection)을 사용 할 수 있다.
    • 배열과 서브 도큐먼트를 쿼리할 수 있다.
  • Aggregation Framework를 사용하여 aggregate 명령어로 쿼리할 수 있다.

    • $match, $project, $group 연산자를 사용할 수 있다.

NoSQL Database 란

SQL 처럼 행과 열을 사용하지 않는 database.
ex) MongoDB - Document NoSQL database

NoSQL 을 사용하는 경우

1. 비구조적인 대용량의 데이터를 저장하는 경우

데이터를 자유로운 형태로 저장가능

2. 클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우

NoSQL DB 는 클라우드를 기반으로 쉽게 분리를 할 수 있어 저장공간을 효율적으로 사용한다. 수평적으로 서버를 확장 및 분산이 가능하다.

3. 빠르게 서비스를 구축하고 데이터 구조를 자주 업데이트 하는 경우

  • NoSQL DB 는 schema 를 미리 준비할 필요가 없어 개발을 빠르게 해야하는 경우, 서버 다운타임(서버를 오프라인으로 전환하여 작업하는 시간) 없이 데이터 구조를 자주 업데이트 하는 경우 적합

Mongo DB

MongoDB는 Atlas 로 클라우드에 DB 를 설정한다.
Atlas 는 GUI 와 CLI 로 데이터를 시각화, 분석, 내보내기, 빌드하는 데 사용할 수 있다.
Atlas 사용자는 이 DB 서버, cluster 를 배포할 수 있으며, cluster 는 그룹화된 서버에 데이터를 저장한다.

DB 서버는 DB의 Replica Set 으로 구성되어 있다. Cluster 배포시 클러스터 내에 DB 복사본이 자동으로 생성된다. 따라서 DB 하나(DB instance)에 문제가 발생해도 데이터가 그대로 유지된다.

MongoDB Document

Document 는 객체의 형태로 데이터를 저장한다.

{
  <field> : value,
  "age" : 30
}
SQLMongoDB
TableCollection
RecordDocument
ColumnField
ValueValue

JSON, BSON

MongoDB document 는 JSON 의 형식을 가지고 있다. 따라서 JSON 형식을 따라야 한다.

JSON 은 읽기 쉽고 사용하기 편리하다.
대신 parsing 이 느리고 메모리 사용이 비효율적이며, 데이터 타입에 제약이 있다.

BSON(Binary JSON) 은 이진법에 기반을 둔 표현법이다. 따라서 메모리 사용이 효율적이며 빠르며, 많은 데이터 타입을 사용할 수 있다.

MongoDB 는 JSON 형식으로 데이터베이스에 추가하고 조회하며, 내부적으로는 BSON 형태로 데이터를 저장, 사용한다.

import, export

// JSON
Import: mongoimport
Export: mongoexport

// BSON
Import: mongorestore
Export: mongodump

Aggregation Framework

Aggregation Framework 는 MongoDB 에서 데이터를 query 하는 방법 중 하나로 MQL(Mongo Query Language) 보다 다양한 쿼리를 작성할 수 있다.

Aggregate 는 파이프라인의 각 단계 순서대로 데이터가 처리된다. 원본데이터는 변경되지 않는다.

각 단계 이름 앞에는 $ 가 있고 그 뒤에는 실행할 작업에 대한 설명이 나온다.

Index

데이터의 수가 늘어날수록 query 하는 시간은 늘어난다. 따라서 index(색인) 를 사용하여 자료구조를 만들어 query 시간을 줄일 수 있다.

profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글