BSON
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
BSON은 JSON과 유사한 바이너리 데이터 직렬화 형식으로, 공개된 명세를 가지고 있다. BSON 문서는 필드 이름, 데이터 형식, 값으로 구성된 요소들을 포함하는 BSON 객체 유형으로 시작한다. JSON에 없는 데이터 형식을 지원하며, 저장 공간 및 검색 속도 측면에서 효율성을 고려하여 설계되었다.
더 읽어볼만한 페이지
- 문서 지향 데이터베이스 - 몽고DB
몽고DB는 2007년 개발되어 2009년 오픈 소스로 전환된 문서 지향적 NoSQL 데이터베이스로, 다양한 데이터 쿼리, 인덱싱, 고가용성, 수평적 확장 기능을 제공하며, 2018년부터 멀티 도큐먼트 ACID 트랜잭션을 지원하고 다양한 에디션과 프로그래밍 언어를 지원한다. - 문서 지향 데이터베이스 - 카우치베이스 서버
카우치베이스 서버는 JSON 문서를 지원하는 NoSQL 데이터베이스로, 유연한 데이터 모델, 자동 샤딩, 클러스터 간 복제를 통한 고성능과 연속성을 제공하며, SQL++ 쿼리 언어를 사용하고 Couchbase Mobile을 통해 오프라인 우선 모바일 데이터베이스 기능을 지원한다. - JSON - JSON 웹 토큰
JSON 웹 토큰(JWT)은 헤더, 페이로드, 서명으로 구성되어 정보를 안전하게 전송하는 개방형 표준으로, 사용자 인증 및 권한 부여에 주로 사용되지만 알고리즘 관련 취약점, 키 관리, 토큰 무효화 등의 문제점도 존재한다. - JSON - JSON-LD
JSON-LD는 JSON 데이터를 RDF 모델로 표현하는 직렬화 방법으로, 컨텍스트를 활용해 JSON 속성을 온톨로지 개념에 연결하며 SEO, 의료 정보학, IoT 등 다양한 분야에서 활용되고 Schema.org, 구글 지식 그래프 등에서 중요한 역할을 한다. - 데이터 직렬화 포맷 - XML
XML은 태그 중첩 방식 구문을 사용하는 범용 언어로서, 인터넷을 통한 구조화된 문서 및 데이터 공유를 용이하게 하고, 웰 폼 및 유효 XML 문서 개념을 통해 구문 정확성을 검사하며, 데이터 교환 등 다양한 분야에서 널리 사용된다. - 데이터 직렬화 포맷 - S-표현식
S-표현식은 Lisp 구문에서 소스 코드와 데이터를 표현하는 기본 구조로, 원자와 `(x . y)` 형태의 표현식으로 정의되며, 이진 트리 표현, 다양한 데이터 형식 지원, 그리고 여러 분야에서 활용된다.
| BSON - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
![]() | |
| 확장 | .bson |
| 마임 유형 | application/bson |
| 기반 | JSON |
| 개발 | 10gen (현재 MongoDB Inc.) |
| 최초 출시 | 2009년 |
| 최신 버전 | 1.3 (2023년 4월 25일) |
| 상태 | 활성 |
| 유형 코드 | application/bson |
| 상세 정보 | |
| 설명 | BSON (Binary JSON)은 JSON과 유사한 이진 직렬화 형식으로, MongoDB에 사용하기 위해 설계되었다. |
2. 데이터 형식 및 구문
BSON은 공개된 명세를 가지고 있으며,[4][5] BSON 문서의 최상위 요소는 BSON 객체 유형이어야 한다. 이 객체는 하나 이상의 요소(element)를 포함하며, 각 요소는 필드 이름, 데이터 형식, 값으로 구성된다. 필드 이름은 문자열이다.
BSON이 지원하는 다양한 데이터 형식은 #지원하는 데이터 형식 하위 섹션에, JSON과의 주요 차이점 및 추가적인 내용은 #JSON과의 차이점 하위 섹션에 상세히 설명되어 있다.
2. 1. 지원하는 데이터 형식
BSON은 다음과 같은 데이터 형식을 지원한다.[4][5]- 유니코드 문자열 (UTF-8 인코딩 사용)
- 32비트 정수
- 64비트 정수
- 배정밀도 (64비트 IEEE 754 부동 소수점 숫자, NaN/Inf 포함)
- decimal128 (128비트 IEEE 754-2008 부동 소수점 숫자, 이진 정수 십진수(BID) 변형), 소수점 자리수에 민감한 금융 데이터 및 최대 106145 정도의 값과 34자리의 소수점 정확도를 가진 임의 정밀도 숫자를 처리하는 데 적합함
- 시간대 없는 날짜 및 시간 (유닉스 시간 이후의 밀리초 단위의 긴 정수)
- 바이트 배열 (임의의 바이너리 데이터용)
- 부울 (
true및false) - null
- BSON 객체
- BSON 배열
- 자바스크립트 코드
- MD5 바이너리 데이터
- 정규 표현식 (Perl 호환 정규 표현식 ("PCRE") 버전 8.41, UTF-8 지원)[6]
BSON은 JSON에 없는 날짜 및 시간, 바이트 배열, IEEE 754 부동 소수점 등의 유형을 포함하고, 여러 숫자 유형에 대한 유형별 처리를 제공한다는 점에서 JSON과 중요한 차이점을 갖는다. 이러한 추가 유형을 텍스트 방식으로 표현해야 하는 경우, MongoDB의 확장 JSON 형식을 사용할 수 있다.[7]
2. 1. 1. 기본 데이터 형식
BSON은 공개된 명세를 가지고 있다.[4][5] 구조의 최상위 요소는 BSON 객체 유형이어야 하며 1개 이상의 요소를 포함하는데, 여기서 요소는 필드 이름, 유형 및 값으로 구성된다. 필드 이름은 문자열이다. 유형은 다음과 같다.- 유니코드 문자열 (UTF-8 인코딩 사용)
- 32비트 정수
- 64비트 정수
- 배정밀도 (64비트 IEEE 754 부동 소수점 숫자, NaN/Inf 포함)
- decimal128 (128비트 IEEE 754-2008 부동 소수점 숫자, 이진 정수 십진수(BID) 변형), 소수점 자리수에 민감한 금융 데이터 및 최대 106145 정도의 값과 34자리의 소수점 정확도를 가진 임의 정밀도 숫자를 처리하는 데 적합함
- 시간대 없는 날짜 및 시간 (유닉스 시간 이후의 밀리초 단위의 긴 정수)
- 바이트 배열 (임의의 바이너리 데이터용)
- 부울 (
true및false) - null
- BSON 객체
- BSON 배열
- 자바스크립트 코드
- MD5 바이너리 데이터
- 정규 표현식 (Perl 호환 정규 표현식 ("PCRE") 버전 8.41, UTF-8 지원)[6]
JSON과의 중요한 차이점은 BSON에는 JSON에 없는 유형(예: 날짜 및 시간, 바이트 배열, 적절한 IEEE 754 부동 소수점)이 포함되어 있고, 보편적인 "숫자" 유형 대신 여러 숫자 유형에 대한 유형별 처리를 제공한다는 것이다. 이러한 추가 유형을 텍스트 방식으로 표현해야 하는 경우, MongoDB의 확장 JSON 형식[7]을 사용할 수 있다.
2. 1. 2. 복합 데이터 형식
BSON은 공개된 명세를 가지고 있다.[4][5] 구조의 최상위 요소는 BSON 객체 유형이어야 하며 1개 이상의 요소를 포함하는데, 여기서 요소는 필드 이름, 유형 및 값으로 구성된다. 필드 이름은 문자열이다. 유형은 다음과 같다.- 유니코드 문자열 (UTF-8 인코딩 사용)
- 32비트 정수
- 64비트 정수
- 배정밀도 (64비트 IEEE 754 부동 소수점 숫자, NaN/Inf 포함)
- decimal128 (128비트 IEEE 754-2008 부동 소수점 숫자, 이진 정수 십진수(BID) 변형), 소수점 자리수에 민감한 금융 데이터 및 최대 106145 정도의 값과 34자리의 소수점 정확도를 가진 임의 정밀도 숫자를 처리하는 데 적합함
- 시간대 없는 날짜 및 시간 (유닉스 시간 이후의 밀리초 단위의 긴 정수)
- 바이트 배열 (임의의 바이너리 데이터용)
- 부울 (
true및false) - null
- BSON 객체
- BSON 배열
- 자바스크립트 코드
- MD5 바이너리 데이터
- 정규 표현식 (Perl 호환 정규 표현식 ("PCRE") 버전 8.41, UTF-8 지원)[6]
JSON과의 중요한 차이점은 BSON에는 JSON에 없는 유형(예: 날짜 및 시간, 바이트 배열, 적절한 IEEE 754 부동 소수점)이 포함되어 있고, 보편적인 "숫자" 유형 대신 여러 숫자 유형에 대한 유형별 처리를 제공한다는 것이다. 이러한 추가 유형을 텍스트 방식으로 표현해야 하는 경우, MongoDB의 확장 JSON 형식[7]을 사용할 수 있다.
2. 1. 3. 기타 데이터 형식
BSON은 공개된 명세를 가지고 있다.[4][5] 구조의 최상위 요소는 BSON 객체 유형이어야 하며 1개 이상의 요소를 포함하는데, 여기서 요소는 필드 이름, 유형 및 값으로 구성된다. 필드 이름은 문자열이다. 유형은 다음과 같다.- 유니코드 문자열 (UTF-8 인코딩 사용)
- 32비트 정수
- 64비트 정수
- 배정밀도 (64비트 IEEE 754 부동 소수점 숫자, NaN/Inf 포함)
- decimal128 (128비트 IEEE 754-2008 부동 소수점 숫자, 이진 정수 십진수(BID) 변형), 소수점 자리수에 민감한 금융 데이터 및 최대 106145 정도의 값과 34자리의 소수점 정확도를 가진 임의 정밀도 숫자를 처리하는 데 적합함
- 시간대 없는 날짜 및 시간 (유닉스 시간 이후의 밀리초 단위의 긴 정수)
- 바이트 배열 (임의의 바이너리 데이터용)
- 부울 (
true및false) - null
- BSON 객체
- BSON 배열
- 자바스크립트 코드
- MD5 바이너리 데이터
- 정규 표현식 (Perl 호환 정규 표현식 ("PCRE") 버전 8.41, UTF-8 지원)[6]
JSON과의 중요한 차이점은 BSON에는 JSON에 없는 유형(예: 날짜 및 시간, 바이트 배열, 적절한 IEEE 754 부동 소수점)이 포함되어 있고, 보편적인 "숫자" 유형 대신 여러 숫자 유형에 대한 유형별 처리를 제공한다는 것이다. 이러한 추가 유형을 텍스트 방식으로 표현해야 하는 경우, MongoDB의 확장 JSON 형식[7]을 사용할 수 있다.
2. 2. JSON과의 차이점
JSON과의 중요한 차이점은 BSON에는 JSON에 없는 유형(예: 날짜 및 시간, 바이트 배열, 적절한 IEEE 754 부동 소수점)이 포함되어 있고, 보편적인 "숫자" 유형 대신 여러 숫자 유형에 대한 유형별 처리를 제공한다는 것이다.[7] 이러한 추가 유형을 텍스트 방식으로 표현해야 하는 경우, MongoDB의 확장 JSON 형식을 사용할 수 있다.[7]타입은 명목상 JSON의 상위 집합이지만 (예를 들어 JSON은 "date"와 "byte array"를 갖지 않는다[10]), 예외적으로 JSON이 사용할 수 있는 "number"를 사용할 수 없다.
3. 효율성
BSON은 JSON에 비해 저장 공간 및 검색 속도 면에서 효율성을 고려하여 설계되었다. BSON 문서 내의 큰 요소들은 검색을 용이하게 하기 위해 길이 필드로 시작한다. 어떤 경우에는 길이 접두사와 명시적인 배열 인덱스 때문에 BSON이 JSON보다 더 많은 공간을 사용할 수 있다.[9]
4. 예제
JSON영어 문서 {"hello": "world"}는 BSON 형식으로 다음과 같이 저장된다.
\x16\x00\x00\x00 // 전체 문서 크기
\x02 // 0x02 = 문자열 타입
hello\x00 // 필드 이름
\x06\x00\x00\x00world\x00 // 필드 값 (값의 크기, 값, 널 종결자)
\x00 // 0x00 = EOO 타입 ('객체 종료')
참조
[1]
웹사이트
BSON Support in ASP.NET Web API 2.1 - ASP.NET 4.x
https://docs.microso[...]
2014-01-20
[2]
웹사이트
BSON (Binary JSON) Serialization
https://bsonspec.org[...]
2021-11-23
[3]
웹사이트
BSON Implementation Projects
https://bsonspec.org[...]
2021-11-24
[4]
웹사이트
BSON (Binary JSON): Specification
https://bsonspec.org[...]
2021-11-24
[5]
웹사이트
Introducing NoSQL and MongoDB {{!}} What Is NoSQL? {{!}} InformIT
https://www.informit[...]
2018-01-17
[6]
웹사이트
regex – Tools for representing MongoDB regular expressions — PyMongo 3.6.0 documentation
https://api.mongodb.[...]
2018-01-17
[7]
웹사이트
MongoDB Extended JSON documentation
https://docs.mongodb[...]
2020-05-03
[8]
문서
MIME Media Types - The Internet Assigned Numbers Authority
http://www.iana.org/[...]
[9]
문서
BSON Specification
http://bsonspec.org
[10]
문서
JSON Specification
http://www.json.org/
[11]
웹인용
BSON Support in ASP.NET Web API 2.1 - ASP.NET 4.x
https://docs.microso[...]
2014-01-20
[12]
웹인용
BSON (Binary JSON) Serialization
https://bsonspec.org[...]
2021-11-23
[13]
웹인용
BSON Implementation Projects
https://bsonspec.org[...]
2021-11-24
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
