MongoDB - JSON vs BSON

Verba volant, scripta manent·2021년 4월 13일
1

JSON

도큐먼트를 shell을 이용하여 조회하거나 업데이트 할 때, 도큐먼트는 JSON(JavaScript Object Notation)형식으로 출력된다.
JSON 형식으로 도큐먼트를 작성하기 위해서는 아래와 같은 조건을 만족해야 한다.

  1. {} 중괄호로 도큐먼트가 시작하고 끝나야한다.
  2. 필드와 값이 : 콜론으로 분리되어야 하며, 필드와 값을 포함하는 쌍은 , 쉼표로 나뉘어야 한다.
  3. 필드도 문자열이기 때문에 "" 쌍따옴표로 감싸야한다.

이 조건 중 어느 하나라도 충족되지 않으면 유효한 도큐먼트라고 볼 수 없다.

아래의 이미지는 올바른 JSON 형식으로 작성된 예시이다.

-> 조건을 모두 충족했다.
-> 읽기 쉽고 많은 개발자들이 쓰기 편한 형태이다.

그러나! 단점도 존재한다.
1. 텍스트 형식이라서 읽기 쉬우나 파싱이 매우 느리고 메모리 사용이 비효율적이다.
2. JSON이 기본 데이터 타입만을 지원하기 때문에 사용 할 수 있는 타입에 제한이 있다.

BSON

JSON의 단점을 해결하기 위한 방안으로 풀네임은 Binary JavaScript Object Notation.
컴퓨터의 언어에 가까운 이진법에 기반을 둔 표현법이다.

아래는 BSON의 형태이다.

특징:
1. Lightweight
문서 자체의 여백을 줄여 효율적으로 데이터 저장 공간을 절약하는 경량(lightweight)형태라서 네트워크를 통해 데이터를 전달하고 표현하는 방식에 적합하다.
2. Traversable
문자열 값에 길이를 접두사로 붙이는 기능이 있어, 문자열의 끝을 빠르게 파악한다.
그래서 데이터를 탐색(traverse)하는데 도움이 된다.
3. Efficient
BSON 데이터 형태는 C언어이 데이터 형태를 사용한다.
그래서 인코딩/디코딩의 속도가 매우 빠르기 때문에 전반적인 성능에 나쁜 영향을 주지는 않는다.

장점:
1. JSON보다 메모리 사용에 효율적이다.
2. 보다 빠르고 가벼우며 유연하다.
3. JSON보다 더 많은 데이터 타입을 사용할 수 있다.

JSON vs BSON

JSON BSON
유형 표준 파일 형식 이진 파일 형식
속도 비교적 덜 빠름 빠름
공간 상대적으로 적은 공간을 소모함 상대적으로 더 많은 공간이 소모됨
용법 데이터 전송 데이터 저장
인코딩 및 디코딩 기술 없음 보다 빠른 인코딩 및 디코딩 기술을 가짐
형질 키-값 쌍은 데이터 전송에만 사용됨 가볍고 빠르며 뒤집을 수 있음
구조 비동기 서버 브라우저 통신에 사용되는 언어 독립 형식 필드 이름, 유형 및 값을 포함하는 정렬된 요소 목록으로 구성된 이진 JSON.
필드 이름 유형은 일반적으로 문자열임
순회 모든 컨텐츠를 건너 뛰지 않고 건너뜀 관련 콘텐츠에 대한 색인을 작성하고 사용하지 않아도 되는 모든 콘텐츠를 건너뜀
파싱 사람이 읽을 수 있는 형식이므로 파싱할 필요없음 기계가 파싱하고 생성하기 쉽기 때문에 파싱해야됨
생성 유형 객체와 배열로 구성
객체 : 키-값 쌍의 모음
배열 : 값-목록으로 정렬
문자열의 길이 및 객체 부속 유형과 같은 추가 정보로 구성
데이터 유형이 JSON에서 지원되지 않는 데이터 유형

결론

MongoDB는 JSON형식으로 작성된 것은 무엇이든 데이터베이스에 추가할 수 있고, 쉽게 조회할 수 있지만, 속도, 효율성, 유연성의 장점이 있기 때문에 내부적으로 BSON 형식으로 데이터를 저장, 사용하고 있다.

profile
말은 사라지지만 기록은 남는다

0개의 댓글