Format Atlas

FORMAT COMPARISON

Avro vs CBOR

Apache Avroはスキーマに従ってレコードを符号化し、reader/writer schemaの解決やコンテナファイルを提供します。CBORはJSONデータモデルを拡張する汎用バイナリ形式で、バイト列やタグ等を直接表現します。

最終確認: 2026-09-27

AvroとCBOR、どちらを選ぶ?

管理されたスキーマ、レコード単位の型定義、スキーマ進化を含むデータ基盤ではAvroを検討します。IETF仕様に沿う汎用バイナリ値、タグやプロトコルデータを扱う場合はCBORが適することがあります。対象システムのスキーマ配布、決定的エンコード要件、実装対応を確認してください。

Avro向き

スキーマ付きレコードデータのシリアライズと交換

  • イベントやレコードをスキーマとともに扱うデータ連携

CBOR向き

制約のある機器や通信での構造化データ交換・COSEやIoTプロトコルなどでのデータ表現

  • JSONに似たデータを小さなバイナリ表現で扱う
  • 標準タグやアプリケーション定義タグで値の意味を示す

基本情報を比較

AvroとCBORの主な違いを確認できます。

項目AvroCBOR
拡張子.avro.cbor
MIME Typeapplication/avroapplication/cbor
主な用途スキーマ付きレコードデータのシリアライズと交換制約のある機器や通信での構造化データ交換・COSEやIoTプロトコルなどでのデータ表現
圧縮schema_serializationnone
開く方法Avro対応ツールでスキーマ、フィールド、型、レコード内容を確認します。CBORライブラリやデコーダーで読み込み、診断表記またはJSON相当の表示へ変換して確認します。タグやバイト列など、JSONに直接対応しない値は変換時の表現を確認してください。
書き出し・変換JSONやParquetへ変換する場合は、フィールド名、型、null、論理型、スキーマ互換性を確認します。JSONへ変換すると、バイト列やタグ付き値などはJSONに直接対応しないため、ツール固有の表記になることがあります。署名・ハッシュ・キャッシュキーに使う場合はRFC 8949の決定的符号化など、プロトコルで合意した符号化規則を適用します。

用途別の選び方

作りたいものや使う場面から選べます。

イベントやレコードをスキーマとともに扱うデータ連携

スキーマ付きレコードデータのシリアライズと交換

Avro向き

JSONに似たデータを小さなバイナリ表現で扱う

制約のある機器や通信での構造化データ交換・COSEやIoTプロトコルなどでのデータ表現

CBOR向き

標準タグやアプリケーション定義タグで値の意味を示す

制約のある機器や通信での構造化データ交換・COSEやIoTプロトコルなどでのデータ表現

CBOR向き

確認ポイント 1

Avroのデータ符号化にはwriter schemaが必要で、Object Container Fileはスキーマを含められます。CBORは各アイテムを型付きバイナリで表し、マップやタグを扱えますが、アプリ固有のスキーマ互換運用は別途定義します。

使い分け

確認ポイント 2

Avroはrecord、union、enum、logical type等をスキーマで定義し、読み取り時にwriter/reader schemaを解決できます。CBORはバイト列、整数、配列、マップ、タグなどのデータモデルを定義し、特定のレコードスキーマ方式を強制しません。

使い分け

選ぶ理由を詳しく

  • どちらも相互にバイト互換ではありません。AvroからCBORへ移すときはschema、union、logical type、既定値と欠損を、CBORから移すときはtag、byte string、整数幅、決定的エンコード、未知拡張値を検証してください。

詳しく見る

参考資料・仕様