BSON이란

문해피와 제육볶음·2023년 8월 21일
0

7월의 프로젝트

목록 보기
7/11

프로젝트를 하면서 mongoDB에 데이터를 적재하고 운영하던중 지금까지 도큐먼트는 JSON형태로 저장되는중알았지만
mongoDB는 특수한 BSON형태로 저장되고 출력은 JSON으로 한다는것을 알았습니다

🤔 JSON

JSON은 (JavaScript Object Notation) 경량의 데이터 교환 형식으로, 텍스트 기반입니다.

구조

  1. 객체(Object) : 중괄효 {} 안에 키-값 쌍으로 이루어진 데이터를 포함합니다.
  2. 배열(Array) : 대괄호 [] 안에 쉼표로 구분된 값들을 포함합니다.
  3. 값(Value) : 문자열, 숫자, Boolean, 객체, 배열, null등 다양한 데이터 형태를 가집니다.

예시

{
  "name": "moon_happy",
  "age": 25,
  "isStudent": false,
  "courses": [
    {
      "title": "수학",
      "semester": 1
    },
    {
      "title": "과학",
      "semester": 2
    }
  ],
  "address": {
    "city": "서울",
    "country": "한국"
  },
  "hobbies": ["축구시청", "음주"]
}

특징

  • 서버와 클라이언트 간의 교류에서 일반적으로 많이 사용된다.
  • JSON문서 형식은 자바스크립트 객체의 형식을 기반으로 만들어졌다.
  • 자바스크립트 문법과 굉장히 유사하지만 텍스트 형식일 뿐이다.
  • 특정 언어에 종속되지 않고, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 핸들링할 수 있는 - 라이브러리를 제공한다.
  • 텍스트 형식이라서 읽기 쉽지만, 파싱이 매우 느리고 메모리 사용이 비효율적이다.

🤔 BSON

BSON은 JSON과 형태는 동일하지만 Binary 형태로 변경된 구조입니다.
BSON은 이진 형식의 데이터이기 때문에 JSON처럼 가독성이 높은것은 아닙니다.
그러나 JSON과 유사한 객체와 배열을 포함하며, 효율적인 저장과 빠른 탐색・쿼리가 가능합니다.

효율적인 이유

  1. 효율적인 저장: BSON은 이진 형식으로 데이터를 저장하므로, 메모리 사용을 최적화하며 빠른 액세스와 인코딩·디코딩이 가능합니다.
  2. 빠른 쿼리 처리: BSON은 저장된 데이터의 크기 정보와 필드 순서 정보를 함께 가지고 있으므로, 쿼리 작업 시 필요한 정보를 빠르게 찾고 처리할 수 있습니다.
  3. 다양한 데이터입 지원: BSON은 JSON보다 더 다양한 데이터 타입을 지원하므로, MongoDB에서 사용하는의 종류를 다양화하고 효율적으로 저장할 수 있습니다.

예시

{
  "name": "moon_happy",
  "age": 25 (int32),
  "isStudent": false (boolean),
  "courses": [
    {
      "title": "수학",
      "semester": 1 (int32)
    },
    {
      "title": "과학",
      "semester": 2 (int32)
    }
  ],
  "objectId": ObjectId("507f1f77bcf86cd799439011"),
  "created_at": ISODate("2023-08-22T00:00:00Z"),
  "hobbies": ["축구시청", "음주"],
  "patterns": /ab+c/i (regular expression)
}

특징

  • 이진 형식: BSON은 이진 데이터 형식으로 저장되어 있어 효율적인 메모리 사용 및 빠른 인코딩과 디코딩 작업이 가능합니다.
  • 타입 지원: BSON은 JSON보다 다양한 데이터 타입을 지원합니다. 숫자형으로는 int, long, float, double 등이 있으며, 날짜형, 정규식, 16진수 바이너리 데이터 등의 별도의 데이터 타입도 지원합니다.
  • 크기 및 순서 정보: BSON은 각 문서의 크기와 필드의 순서 정보가 함께 저장됩니다. 이를 통해 저장소나 통신 과정에서의 데이터 인코딩 및 해독이 효율적으로 이루어집니다.

아래는 BSON 형태의 간단한 예시입니다. (주의: BSON이 이진 형식이기 때문에 표현이 제한적일 수 있습니다. 아래 예시는 데이터 구조를 대략적으로 표현한 것에 불과합니다.)

0개의 댓글