# Protocol Buffers
## 概要
[[Google]]が提供するプラットフォーム中立・拡張可能な構造化データのシリアライズ機構であり、オープンソース実装として公開されている。[[@2010__VLDB__Dremel - Interactive Analysis of Web-Scale Datasets]]では、Dremelのデータモデル(強く型付けされたネストレコード)の名称の由来がProtocol Buffersであると説明され、C++やJavaなどのプログラミング言語向けにコード生成ツールがバインディングを生成する。フィールド値がレコード出現順に逐次レイアウトされる標準的なバイナリオンワイヤ表現により、言語をまたいだ相互運用性(例: Javaで書かれたMRプログラムがC++ライブラリ経由で公開されたデータソースのレコードを消費する)を実現する(Source: [[@2010__VLDB__Dremel - Interactive Analysis of Web-Scale Datasets]] §3 Data Model)。
Dremelが提案する列指向ストレージ表現は、このProtocol Buffersのネストデータモデルを損失なくカラムへ分解・再構成するアルゴリズム(repetition level・definition level)として設計されている。
## 関連
- ソース: [[@2010__VLDB__Dremel - Interactive Analysis of Web-Scale Datasets]]
- エンティティ: [[Google]]
- 概念: [[ネスト型カラムナストレージ]]
## 出典
- [[@2010__VLDB__Dremel - Interactive Analysis of Web-Scale Datasets]]