비교
BSON과 MessagePack 비교
BSON과 MessagePack은 모두 문서형 바이너리 데이터를 표현할 수 있지만 BSON은 MongoDB 계열의 타입 문서 표현이고 MessagePack은 범용 객체 직렬화 형식입니다.
어떤 형식을 선택해야 할까요?
MongoDB 문서와 ObjectId·날짜 같은 BSON 전용 값에는 BSON을 사용하세요. MongoDB 밖에서 객체를 간결하게 교환하려면 MessagePack을 고려하고 확장 유형과 수신 측 지원을 합의하세요.
적합한 경우 BSON
MongoDB 문서 직렬화 · BSON 지원 도구 간 문서 교환
- 날짜와 바이너리 데이터 같은 자료형 보존
- BSON을 읽고 쓰는 드라이버와 도구 사용
적합한 경우 MessagePack
JSON과 비슷한 데이터를 바이너리로 직렬화 · 호환되는 애플리케이션 사이에서 구조화된 데이터 교환
- JSON식 배열, 맵, 기본값을 바이너리로 인코딩
- 호환 라이브러리 사이에서 확장값과 타임스탬프 교환
기본 정보
| 항목 | BSON | MessagePack |
|---|---|---|
| 확장자 | .bson | .msgpack, .mpk |
| MIME 유형 | application/bson | application/octet-stream |
| 주요 용도 | MongoDB 문서 직렬화 · BSON 지원 도구 간 문서 교환 | JSON과 비슷한 데이터를 바이너리로 직렬화 · 호환되는 애플리케이션 사이에서 구조화된 데이터 교환 |
| 여는 방법 | mongorestore 또는 BSON 지원 도구나 라이브러리로 읽습니다. 내용을 확인하려면 Extended JSON 등 읽을 수 있는 표현으로 변환하세요. 바이너리 파일을 텍스트 편집기로 수정하지 마세요. | MessagePack 지원 라이브러리나 디코더로 읽습니다. 내용을 확인하려면 진단 표기나 JSON과 비슷한 보기로 변환하고, 바이너리 값과 확장값이 어떻게 표시되는지 살펴보세요. |
| 내보내기 또는 변환 | JSON으로 변환할 때 날짜, ObjectId, 바이너리 값은 표준 JSON에 대응 자료형이 없어 Extended JSON 표기나 애플리케이션별 표현이 필요할 수 있습니다. 다시 BSON으로 되돌려야 한다면 자료형 정보를 보존하는 방법을 선택하고 실제 데이터로 테스트하세요. | JSON으로 변환할 때 바이너리 값과 확장값은 표준 JSON에 대응하는 유형이 없어 배열, 문자열 또는 도구별 표현이 필요할 수 있습니다. 왕복 변환이 필요하면 실제 데이터로 유형, 숫자 범위, 타임스탬프, 맵 키, 확장형을 확인하세요. |
용도별 선택
날짜와 바이너리 데이터 같은 자료형 보존
MongoDB 문서 직렬화 · BSON 지원 도구 간 문서 교환
BSONBSON을 읽고 쓰는 드라이버와 도구 사용
MongoDB 문서 직렬화 · BSON 지원 도구 간 문서 교환
BSONJSON식 배열, 맵, 기본값을 바이너리로 인코딩
JSON과 비슷한 데이터를 바이너리로 직렬화 · 호환되는 애플리케이션 사이에서 구조화된 데이터 교환
MessagePack호환 라이브러리 사이에서 확장값과 타임스탬프 교환
JSON과 비슷한 데이터를 바이너리로 직렬화 · 호환되는 애플리케이션 사이에서 구조화된 데이터 교환
MessagePack핵심 사항 1
BSON은 길이 접두 문서와 배열 및 날짜, ObjectId, Decimal128 같은 명시적 유형을 정의합니다. MessagePack은 범용 맵·배열·숫자·문자열·바이너리와 앱 정의 확장을 제공합니다.
차이 자세히 보기핵심 사항 2
BSON은 MongoDB 문서 모델과 관련 도구에 맞고 MessagePack은 특정 데이터베이스를 전제하지 않는 범용 직렬화에 쓰입니다.
차이 자세히 보기차이 자세히 보기
MongoDB 호환 문서 유형이 중요하면 BSON, 데이터베이스 독립적인 바이너리 객체 프로토콜이 필요하면 MessagePack을 선택하세요. 변환 전에 날짜, 정수 폭, 소수, ObjectId 및 확장값을 매핑하고 왕복 테스트를 하세요.
- 둘 다 바이너리 인코딩이지만 구조와 유형 체계가 달라 서로를 그대로 읽을 수 없습니다.
- BSON은 문서용 고유 유형과 규칙을 가집니다. MessagePack 확장 코드의 의미는 애플리케이션이 정의해야 합니다.
- 변환은 날짜, 숫자 범위, 소수 또는 식별자 의미를 바꿀 수 있습니다. 매핑을 문서화하고 수신 구현에서 값을 검증하세요.
자주 묻는 질문
BSON 파일의 확장자를 MessagePack으로 바꾸면 되나요?
아니요. 확장자 변경은 바이너리 구조와 유형을 변환하지 않습니다. 명시적 필드 매핑으로 디코딩 후 다시 직렬화해야 합니다.