TIL(46) 데이터베이스 (NoSQL)

codedot·2021년 10월 19일
0
post-thumbnail

데이터 베이스 (NoSQL) ✍🏻

MongoDB 📍

  • NoSQL Document 데이터 베이스

  • 테이블이 아닌 문서처럼 저장하는 데이터 베이스

  • JSON유사 형식으로 데이터를 문서화 한다.

  • 필드-값 (<field> : <value>)의 형태로 가지고 있고, 컬렉션이라고 하는 그룹으로 묶어서 관리

  • MongoDB 데이터베이스는 NoSQL 도큐먼트 데이터베이스


MongoDB Document 용어 📌

  • 도큐먼트(Document) : 필드 - 값쌍으로 저장된 데이터

    • 필드(Field) : 데이터 포인트를 위한 고유한 식별자
  • 값(Value) : 주어진 식별자와 연결된 데이터

  • 컬렉션(Collection) : MongoDB의 도큐먼트로 구성된 저장소, 일반적으로 도큐먼트 간의 공통 필드가 있다. 데이터베이스 당 많은 컬렉션이 있고, 컬렉션 당 많은 도큐먼트가 있을 수 있다.


그렇다면 언제 사용 되는가? 📌

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

  • 관계에 중점을 둔 SQL 데이터베이스보다 자유로운 형태로 데이터를 저장할 수 있으므로 필요에 따라 새로운 유형 추가가 가능하다.
  • 많은 양의 데이터가 필요한 경우 NoSQL이 효율적일 수 있다.

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

  • 클라우드 기반으로 쉽게 분리 할 수 있도록 지원하며, 저장 공간을 효율적으로 사용한다.
  • SQL이 수직적으로 확정되기 때문에 양이 많아지면 증설이 어렵지만, NoSQL은 수평적 확장 형태이기에 이론상 무한대로 서버를 분산시켜 DB를 증설할 수 있다.

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

  • 스키마를 미리 준비할 필요가 없어, 개발을 빠르게 해야하는 경우 적합하다.

Document 작성 및 표현 방법 📌

  • shell을 이용하여 조회하거나 업데이트 할 때, Document는 JSON 형식으로 출력된다.
  • JSON 형식으로 Document를 작성하기 위한 조건
    • {} 중괄호로 Document가 시작하고, 끝나야 한다
    • 필드와 값이 콜론 (:)으로 분리되어야 하며, 필드와 값을 포함하는 쌍은 쉼표(,)로 구분된다.
    • 문자열인 필드도 쌍따옴표("")로 감싸야 한다.
    • 조건 중 어느 하나라도 충족되지 않는다면, 이는 유효한 Document가 아니다.

예시

{
	"_id" : "12345",
	"date" : IAMDate("2021-10-19T09:00:00Z"),
	"listing_id" : "1038163":,
	"reviewer_id" : "3600555",
	"reviewer_name" : "kim",
	"comments" : "Hellow Word!"
}

BSON(Binary JSON) 📌

  • JSON 형식은 읽기 쉽고, 많은 개발자들이 사용하기 편리하여 데이터를 저장하는 좋은 방법 중 하나이다.
    그러나 JSON 형태로 데이터를 저장할 때 단점도 존재한다.
    텍스트 형식이기 때문에 읽기는 쉽지만, 파싱이 느리고 메모리 사용이 비효율적이다.
    그리고 JSON은 기본 데이터 타입만 지원하기에 사용 할 수 있는 데이터 타입에 제약이 있다.

  • JSON의 단점을 해결하기 위한 방안으로 사용된 BSON

  • 컴퓨터 언어에 가까운 이진법에 기반을 둔 표현법

  • JSON 보다 메모리 사용이 효율적이며 빠르고, 가볍고, 유연하다.

  • 더 많은 데이터 타입을 사용할 수 있다.

  • MongoDB 내부에서는 속도, 효율성, 유연성의 장점인 BSON으로 데이터를 저장, 사용한다.

profile
Loding...

0개의 댓글