jjinny_0609
냐냥
jjinny_0609
전체 방문자
오늘
어제
  • 분류 전체보기 (249)
    • IT (18)
      • Eclipse (1)
      • 라즈베리파이 (8)
      • 정보처리기사 (2)
      • 팀 프로젝트 (5)
      • 자료구조 (1)
      • CS 지식 (0)
    • 프로그래밍 언어 (75)
      • Java (33)
      • 파이썬 (4)
      • Node.js (38)
    • 프론트엔드(Frontend) (83)
      • HTML (7)
      • CSS (8)
      • JavaScript (10)
      • jQuery (2)
      • React (50)
      • Vue.js (6)
    • 백엔드(Backend) (62)
      • 네트워크 (1)
      • 데이터베이스 (49)
      • Spring (6)
      • JSP (6)
    • 협업 도구 (6)
      • Git & GitHub (6)
    • 리뷰 (1)
      • 향수 (1)
    • Game Engine (2)
      • 언리얼 엔진5 (1)
      • Unity (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 블로그관리 홈
  • 글쓰기
  • 글관리

공지사항

인기 글

hELLO · Designed By 정상우.
jjinny_0609

냐냥

[MongoDB] BSON이란?
백엔드(Backend)/데이터베이스

[MongoDB] BSON이란?

2023. 11. 24. 16:22
728x90

BSON

이제는 MongoDB에서 데이터를 입력하는 방법에 중점을 두어 알아보겠습니다.

그러나 먼저 MongoDB에서 데이터가 어떻게 저장되고, 어떤 형식을 기대하는지에 대해 이해할 필요가 있습니다.

이것이 바로 BSON입니다.

 

BSON이란?

BSON은 "Binary JSON"을 의미하며 이것이 바로 BSON이 고안된 것입니다. BSON의 이진 구조는 유형 및 길이 정보를 인코딩하므로 JSON에 비해 훨씬 더 빠르게 탐색할 수 있습니다.

BSON은 날짜 및 이진 데이터와 같은 일부 비 JSON 기본 데이터 유형을 추가합니다. 이것이 없었다면 MongoDB는 일부 귀중한 지원을 놓쳤을 것입니다.

 

다음은 몇 가지 JSON 개체 및 해당 BSON 표현의 예입니다.

{"hello": "world"} →
\x16\x00\x00\x00           // total document size
\x02                       // 0x02 = type String
hello\x00                  // field name
\x06\x00\x00\x00world\x00  // field value
\x00                       // 0x00 = type EOO ('end of object')
 
{"BSON": ["awesome", 5.05, 1986]} →
\x31\x00\x00\x00
 \x04BSON\x00
 \x26\x00\x00\x00
 \x02\x30\x00\x08\x00\x00\x00awesome\x00
 \x01\x31\x00\x33\x33\x33\x33\x33\x33\x14\x40
 \x10\x32\x00\xc2\x07\x00\x00
 \x00
 \x00

 

https://www.mongodb.com/json-and-bson

 

JSON And BSON

Learn how MongoDB uses the lightweight and flexible BSON, an extension JSON, to maximize efficiency for programming languages

www.mongodb.com

JSON vs BSON

JSON과 BSON은 실제로 설계상 가까운 사촌입니다. BSON은 더 광범위한 애플리케이션을 위한 특정 확장 기능을 갖춘 JSON 데이터의 이진 표현으로 설계되었으며 데이터 저장 및 탐색에 최적화되었습니다. JSON과 마찬가지로 BSON은 객체 및 배열 삽입을 지원합니다.

 

BSON이 JSON과 다른 점 중 하나는 좀 더 고급 유형의 데이터를 지원한다는 것입니다. 예를 들어 JSON은 정수(반올림 숫자)와 부동 소수점 숫자(다양한 소수 정밀도를 가짐)를 구별하지 않습니다.

대부분의 서버 측 프로그래밍 언어에는 보다 정교한 숫자 유형(표준에는 정수, "float"라고 불리는 정규 정밀도 부동 소수점 숫자, "double"이라고 불리는 배정밀도 부동 소수점 및 부울 값이 포함됨)이 있으며, 각각은 효율적인 수학을 위해 고유한 최적의 사용법을 가지고 있습니다.

BSON 유형

각 BSON 유형에는 다음 표에 나열된 정수 및 문자열 식별자가 모두 있습니다.

Type Number Alias Notes
Double
1
"double"
 
String
2
"string"
 
Object
3
"object"
 
Array
4
"array"
 
Binary data
5
"binData"
 
Undefined
6
"undefined"
Deprecated.
ObjectId
7
"objectId"
 
Boolean
8
"bool"
 
Date
9
"date"
 
Null
10
"null"
 
Regular Expression
11
"regex"
 
DBPointer
12
"dbPointer"
Deprecated.
JavaScript
13
"javascript"
 
Symbol
14
"symbol"
Deprecated.
JavaScript code with scope
15
"javascriptWithScope"
Deprecated in MongoDB 4.4.
32-bit integer
16
"int"
 
Timestamp
17
"timestamp"
 
64-bit integer
18
"long"
 
Decimal128
19
"decimal"
 
Min key
-1
"minKey"
 
Max key
127
"maxKey"
 

JSON(JavaScript Object Notation)에 관련이 있는 BSON은 키-값 쌍의 형태를 가지고 있습니다. JSON과 유사하게 생겼지만 텍스트 기반이 아닌 이진법으로 표현되어 있습니다. 이진법은 JSON보다 더 압축된 형태로 데이터를 저장할 수 있어, 메모리 효율성이 뛰어나다는 장점이 있습니다.

 

JSON은 읽기 쉽고 이해하기 쉬운 형식이지만, 대용량 데이터를 다룰 때는 성능 이슈가 발생할 수 있습니다. 텍스트 기반이라 텍스트 파싱이 느리고, 읽을 수 있는 형식으로 저장되어 공간 효율성이 떨어집니다. 이런 문제를 해결하기 위해 BSON은 JSON을 이진법으로 압축한 형태를 채택하고 있습니다.

 

BSON은 JSON과 유사하면서도 다양한 데이터 유형을 지원합니다. 예를 들어, JSON은 기본적인 데이터 유형만을 지원하는 반면, BSON은 String, Boolean, Number, Array, Date, Raw Binary 등 다양한 유형을 다룰 수 있습니다.

특히 날짜와 같은 데이터는 JSON에서는 직접 지원하지 않지만 BSON에서는 처리할 수 있습니다.

 

결론적으로, BSON은 MongoDB에서 사용되는 이진법 형식의 JSON으로, 데이터를 효율적으로 저장하고 읽을 수 있게 도와줍니다. 그리고 이를 통해 MongoDB는 더 빠르고 효율적으로 데이터를 처리할 수 있게 됩니다.

 

다음에는 Mongo 데이터베이스에 값을 삽입해보도록 해보겠습니다. 계속 진행해주세요 ! 🚀

728x90

'백엔드(Backend) > 데이터베이스' 카테고리의 다른 글

[MongoDB] MongoDB에서 찾기  (0) 2023.11.25
[MongoDB] MongoDatabase에 삽입하기  (0) 2023.11.24
[MongoDB] MongoDB 7 설치법 : Mac OS  (0) 2023.11.24
[MongoDB] MongoDB 7 설치법 : Windows  (0) 2023.11.24
(SQL 첫걸음) 데이터 베이스 #7  (0) 2023.03.17
    jjinny_0609
    jjinny_0609
    뉴비 개발자의 학습 내용을 정리한 블로그입니다.

    티스토리툴바