Format Atlas

비교

Avro와 CBOR

Apache Avro는 스키마에 따라 레코드를 인코딩하고 writer/reader 스키마 해석과 컨테이너 파일을 지원합니다. CBOR는 JSON 데이터 모델을 확장한 범용 바이너리 형식으로 바이트 문자열과 태그를 직접 표현합니다.

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

데이터 파이프라인에서 관리형 스키마, 타입 레코드, 스키마 진화가 필요하면 Avro를 고려하세요. IETF 표준의 범용 바이너리 값, 태그, 프로토콜 페이로드에는 CBOR를 고려하세요.

적합한 경우 Avro

정의된 스키마로 레코드 교환

  • 스키마 버전을 관리하는 이벤트와 데이터 파이프라인

적합한 경우 CBOR

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

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

기본 정보

항목AvroCBOR
확장자.avro.cbor
MIME 유형application/avroapplication/cbor
주요 용도정의된 스키마로 레코드 교환제약이 있는 기기와 네트워크에서 구조화된 데이터 교환 · COSE 및 IoT 프로토콜의 데이터 표현
여는 방법Avro 지원 도구로 스키마, 필드, 형식 및 레코드를 확인하세요.CBOR 라이브러리나 디코더로 읽고 진단 표기 또는 JSON과 비슷한 보기로 확인합니다. 태그와 바이트 문자열처럼 JSON에 바로 대응하지 않는 값의 표현을 살펴보세요.
내보내기 또는 변환JSON이나 Parquet으로 변환할 때 필드명, 형식, null, 논리 유형, 레코드 수 및 스키마 호환성을 확인하세요.JSON으로 변환할 때 바이트 문자열과 태그가 붙은 값은 JSON에 직접 대응하지 않아 도구별 표현이 필요할 수 있습니다. 서명, 해시, 캐시 키에 쓸 때는 RFC 8949의 결정적 인코딩 등 프로토콜에서 합의한 규칙을 따르세요.

용도별 선택

스키마 버전을 관리하는 이벤트와 데이터 파이프라인

정의된 스키마로 레코드 교환

Avro

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

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

CBOR

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

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

CBOR

핵심 사항 1

Avro를 디코딩하려면 writer 스키마가 필요하며 객체 컨테이너 파일에 스키마를 넣을 수 있습니다. CBOR는 맵과 태그 같은 타입 데이터 항목을 인코딩하지만 앱의 스키마 진화 규칙은 별도입니다.

차이 자세히 보기

핵심 사항 2

Avro는 스키마로 record, union, enum, logical type을 정의합니다. CBOR는 정수, 바이트 문자열, 배열, 맵, 태그를 정의하지만 특정 레코드 스키마 체계를 강제하지 않습니다.

차이 자세히 보기

차이 자세히 보기

생산자와 소비자가 호환 스키마를 관리하고 레코드 진화가 필요하면 Avro를 사용하세요. 프로토콜에 바이트 문자열이나 태그를 포함한 범용 소형 바이너리 모델이 필요하면 CBOR를 사용하세요. 스키마 배포, 결정적 인코딩 요건, 구현 지원을 확인하세요.

  • Avro 데이터는 writer 스키마로 해석되며 컨테이너 파일에 스키마를 포함할 수 있습니다. CBOR 항목에는 바이너리 타입 정보가 있지만 앱 수준 스키마 계약은 자동 제공되지 않습니다.
  • Avro 스키마 해석은 writer와 reader 스키마를 조정할 수 있습니다. CBOR 태그는 일반 데이터 항목에 의미를 더하지만 양쪽이 태그 의미와 처리를 합의해야 합니다.
  • 두 형식은 바이트 수준에서 호환되지 않습니다. 변환 시 union, logical type, 기본값, 누락값, CBOR 태그, 정수 범위, 바이트 문자열, 결정적 인코딩, 알 수 없는 확장을 확인하세요.

자주 묻는 질문

CBOR가 스키마 없이 Avro 데이터를 디코딩할 수 있나요?

아니요. 인코딩이 서로 다르고 Avro 디코딩에는 writer 스키마가 필요합니다. 변환할 때 스키마와 값을 CBOR 항목으로 명시적으로 매핑해야 합니다.

자세히 보기

참고 자료 및 사양