BT

Protocol Buffers/Thriftに対する動的な代替手段としてのBERT

| 作者: Werner Schuster フォローする 9 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2009年11月10日. 推定読書時間: 2 分 |

原文(投稿日:2009/11/02)へのリンク

エンコーディングデータとしてはXMLが有名だが、その効率の悪さが問題となる場合も多い。効率の悪さには、エンコーディング/デコーディングが非効率であることと、使用する空間サイズが大きいことの両面がある。これに対して、人気のあるバイナリシリアライゼーションフォーマットには、広く使われているASN.1や、GoogleのProtocolBuffers、FacebookのThriftといったものがある。

そして今、BERTという新しいフォーマットがGitHubのバックエンドを動かしている。BERTはTom Preston-Werner氏によって作られたフォーマットであり、ノード間通信のためにErlang termのエンコードに使われるErlangのExternal Term Format (ETF)に基づいている。

BERTはETFを拡張して、dictionaryやtime、regexなどの複雑なデータ型が使えるようになっている。

また、BERTはASN.1やProtocol Buffersとは違って、フォーマットのスキーマやIDL仕様を必要としない。つまり、BERTはJSONの背景にある考え方のバイナリ版のようなものだ、とTom Preston-Werner氏は説明する。

私はJSONが好きなんです。言語のサブセットを抜き出して、それを使ってプロセス間通信をしやすくするという考え方が大好きなんです。それで、Erlectricityを使ってやった仕事を思い出しました。2年ほど前、私はErlectricityのためのC拡張を書いていました。ErlangのExternal Term Formatのデシリアライゼーションを高速化するためです。
[..] 私は考えたんです。もし、ErlangのExternal Term Formatの汎用的な部分を抜き出して、それをプロセス間通信の標準にしたらどうなるだろうか? もし、ErlangにJavaScriptのJSONに相当するものがあればどうなるだろうか? そして、もし、そのフォーマット上にRPCプロトコルを構築するとどうなるだろうか? そうすると、何が起こるのだろうか、どれだけシンプルになるだろうか?

BERT-RPCは、BERTを使って呼び出しの引数と戻り値をエンコードすることにより、BERT-RPCサーバにホストされているコードをリモートから呼び出すことができる。Tom氏はBERT-RPCの機能について言及している。

- 同期呼び出しと非同期呼び出し [..]
- ストリーミング(要求と応答)
- ディレクティブのキャッシュ

ErnieといったBERT-RPCサーバを使うと、Rubyコードから利用することも可能だ。

BERTとBERT-RPCには仕様書が存在する。そして、RubyとErlangの実装以外にも、JavascriptPythonといった言語でも、BERTを利用することができる。

あなたはBERTのようなスキーマなしのアプローチの方が好きですか?それとも、ASN.1やProtocol BuffersのようなIDLに基づくアプローチの方が好きですか?

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT