.protobuf
Data
Protocol Buffers(Protobuf)
Protocol BuffersはGoogleの言語中立な構造化データシリアライゼーションフォーマットです。JSONやXMLよりもコンパクトで高速で、スキーマ定義(.protoファイル)を使用して数十のプログラミング言語で型安全なコードを生成します。
MIMEタイプ
application/x-protobuf
種類
バイナリ
圧縮
無劣化
メリット
- + 10-100x smaller and faster than JSON/XML
- + Schema-driven with generated type-safe code
- + Backward-compatible schema evolution via field numbers
- + Standard wire format for gRPC
デメリット
- − Not human-readable — binary format requires tooling
- − Requires .proto schema definition and code generation step
- − Not suitable for human-edited configuration files
.PROTOBUFを使うタイミング
gRPCサービス、内部マイクロサービス通信、高速でコンパクトなスキーマ駆動シリアライゼーションが必要なシステムにProtobufを使用してください。
技術的詳細
Protobufは番号付きフィールドを持つ.protoスキーマを使用し、言語固有のコードにコンパイルされます。バイナリワイヤーフォーマットは整数にvarintエンコーディング、文字列とネストメッセージに長さ付きエンコーディングを使用します。
歴史
Googleは内部でProtocol Buffersを開発し、2008年にオープンソースとしてリリースしました。Proto2がオプショナルフィールドを追加し、Proto3(2016年)がデフォルト値で言語を簡素化しました。gRPCはProtobufをデフォルトのワイヤーフォーマットとして使用します。