Format Atlas

비교

CBOR와 MessagePack 비교

CBOR와 MessagePack은 모두 JSON과 비슷한 값을 바이너리로 직렬화합니다. CBOR는 프로토콜 태그와 결정적 인코딩 규칙을 표준화하고, MessagePack은 일반 객체를 간결하게 인코딩합니다.

어떤 형식을 선택해야 할까요?

프로토콜에 IETF 표준 태그나 결정적 인코딩이 필요하면 CBOR를 고려하세요. 기존 앱과 라이브러리 호환성이 우선이면 MessagePack을 선택하세요. 숫자 범위, 확장값, 정규화 및 구현 간 동작을 테스트하세요.

적합한 경우 CBOR

제약이 있는 기기와 네트워크에서 구조화된 데이터 교환 · COSE 및 IoT 프로토콜의 데이터 표현

  • JSON과 비슷한 데이터를 작은 바이너리 형태로 표현
  • 표준 또는 애플리케이션 정의 태그로 값의 의미 표시

적합한 경우 MessagePack

JSON과 비슷한 데이터를 바이너리로 직렬화 · 호환되는 애플리케이션 사이에서 구조화된 데이터 교환

  • JSON식 배열, 맵, 기본값을 바이너리로 인코딩
  • 호환 라이브러리 사이에서 확장값과 타임스탬프 교환

기본 정보

항목CBORMessagePack
확장자.cbor.msgpack, .mpk
MIME 유형application/cborapplication/octet-stream
주요 용도제약이 있는 기기와 네트워크에서 구조화된 데이터 교환 · COSE 및 IoT 프로토콜의 데이터 표현JSON과 비슷한 데이터를 바이너리로 직렬화 · 호환되는 애플리케이션 사이에서 구조화된 데이터 교환
여는 방법CBOR 라이브러리나 디코더로 읽고 진단 표기 또는 JSON과 비슷한 보기로 확인합니다. 태그와 바이트 문자열처럼 JSON에 바로 대응하지 않는 값의 표현을 살펴보세요.MessagePack 지원 라이브러리나 디코더로 읽습니다. 내용을 확인하려면 진단 표기나 JSON과 비슷한 보기로 변환하고, 바이너리 값과 확장값이 어떻게 표시되는지 살펴보세요.
내보내기 또는 변환JSON으로 변환할 때 바이트 문자열과 태그가 붙은 값은 JSON에 직접 대응하지 않아 도구별 표현이 필요할 수 있습니다. 서명, 해시, 캐시 키에 쓸 때는 RFC 8949의 결정적 인코딩 등 프로토콜에서 합의한 규칙을 따르세요.JSON으로 변환할 때 바이너리 값과 확장값은 표준 JSON에 대응하는 유형이 없어 배열, 문자열 또는 도구별 표현이 필요할 수 있습니다. 왕복 변환이 필요하면 실제 데이터로 유형, 숫자 범위, 타임스탬프, 맵 키, 확장형을 확인하세요.

용도별 선택

JSON과 비슷한 데이터를 작은 바이너리 형태로 표현

제약이 있는 기기와 네트워크에서 구조화된 데이터 교환 · COSE 및 IoT 프로토콜의 데이터 표현

CBOR

표준 또는 애플리케이션 정의 태그로 값의 의미 표시

제약이 있는 기기와 네트워크에서 구조화된 데이터 교환 · COSE 및 IoT 프로토콜의 데이터 표현

CBOR

JSON식 배열, 맵, 기본값을 바이너리로 인코딩

JSON과 비슷한 데이터를 바이너리로 직렬화 · 호환되는 애플리케이션 사이에서 구조화된 데이터 교환

MessagePack

호환 라이브러리 사이에서 확장값과 타임스탬프 교환

JSON과 비슷한 데이터를 바이너리로 직렬화 · 호환되는 애플리케이션 사이에서 구조화된 데이터 교환

MessagePack

핵심 사항 1

CBOR는 RFC 8949에서 정수, 바이트 문자열, 배열, 맵, 태그를 정의합니다. MessagePack은 정수, 문자열, 바이너리, 배열, 맵과 애플리케이션 정의 확장 유형을 정의합니다.

차이 자세히 보기

핵심 사항 2

CBOR는 서명이나 해시용 일관된 표현에 유용한 결정적 인코딩 요건을 명시합니다. MessagePack은 키 정렬 및 확장 규칙을 애플리케이션에서 정해야 할 수 있습니다.

차이 자세히 보기

차이 자세히 보기

한 형식이 언제나 더 작거나 빠르다고 가정하지 말고 프로토콜과 생태계에 맞춰 선택하세요. 태그·확장·맵 키·숫자·선택값의 대응을 정의하고 실제 페이로드로 시험하세요.

  • CBOR 태그는 애플리케이션 값의 의미를 식별할 수 있으며 RFC 8949는 결정적 인코딩 요건을 설명합니다. MessagePack 확장 유형은 애플리케이션이 정의한 유형 번호와 바이트를 담습니다.
  • 비슷한 데이터를 나타내더라도 바이트 인코딩은 서로 다릅니다. 한 형식의 디코더가 다른 형식을 읽는다고 가정하면 안 됩니다.
  • 변환 과정에서 숫자 폭, 맵 키 유형, 태그 또는 확장값이 달라질 수 있습니다. 대응 규칙을 정하고 실제 구현 사이에서 왕복 테스트를 하세요.

자주 묻는 질문

CBOR와 MessagePack은 바이너리 호환되나요?

아니요. 인코딩과 확장 모델이 다르므로 명시적 변환 또는 공유 프로토콜 정의가 필요합니다.

자세히 보기

참고 자료 및 사양