Protocol Buffers
Protocol Buffersは、Googleが設計した言語非依存のバイナリシリアライズ形式である。.proto スキーマ定義を必要とし、JSON/XMLよりコンパクトで型安全である。
目的
スキーマが互換性を保証する、強く型付けされコンパクトで効率的な言語横断のデータ交換を提供する。
メカニズム
.proto のIDLがフィールド番号付きのメッセージ型を定義する。エンコード時、各フィールドは (field_number<<3 | wire_type) タグで始まり、整数はvarint、文字列とネストされたメッセージは長さプレフィックスを使う。未知のフィールドは前方互換性を保つ。proto3は構文を簡素化している。
ユースケース
- gRPCの転送プロトコル
- Google内部データの保存
- モバイルAPI(帯域節約)
- コンフィグと永続化
例
- 入力
message User { string name = 1; }OutputBinary encodingRequires protoc compilation
よくあるエラー
- Changing field numbers breaks compatibility
- Once assigned, numbers must not be reused or changed
関連用語
Avro
Avro は Hadoop エコシステム由来の行指向バイナリシリアライズ形式であり、スキーマの埋め込みと外部参照の両方をサポートし、ビッグデータの保存や Kafka で使われる。 用語集
JSON
JSON(JavaScript Object Notation)は、JavaScript のオブジェクトリテラルに基づく軽量なデータ交換形式である。キー・バリューペアと配列を使う。 用語集
CBOR
CBOR(Concise Binary Object Representation)は JSON のバイナリ版であり、RFC 8949 で標準化され、よりコンパクトでより多くのデータ型をサポートする。 用語集