| 原作者 | ネオテクノロジー |
|---|---|
| 安定リリース | バージョン 1
|
| 書かれた | さまざまな言語 |
| オペレーティング·システム | どれでも |
| プラットフォーム | クロスプラットフォーム |
| タイプ | ネットワークプロトコル |
| ライセンス | クリエイティブ・コモンズ 3.0 表示-継承 |
| Webサイト | ボルトプロトコル |
Bolt プロトコル( Bolt )は、データベースアプリケーションでのクライアント サーバー通信に使用される接続指向の ネットワーク プロトコルです。TCP接続またはWebSocketを介して動作します。
Bolt はステートメント指向であり、クライアントは単一の文字列と一連の型指定されたパラメータからなるステートメントを含むメッセージを送信できます。サーバーは各ステートメントに対して結果メッセージとオプションの結果レコードのストリームで応答します。
歴史
Boltプロトコルは、2015年11月にダンカン・ブラウンがDZoneで公開したインタビューで初めて公開されました。[1]このプロトコルを実装したソフトウェアの最初のリリースは、Neo4j Serverのマイルストーンリリースの一部として、2015年12月に行われました。[2] 2016年4月には、プロトコルの最初のサーバー実装とBoltクライアントドライバーのスイートを含むNeo4j Server 3.0がリリースされました。このリリースは、いくつかの主流メディアから注目を集めました。[3] [4] [5]
バージョン管理
このプロトコルは、明示的なバージョン管理と、クライアントとサーバー間のバージョンネゴシエーションをサポートします。このプロトコルの公開バージョンは、バージョン 1 のみです。
プロトコルの概要 - バージョン 1
メッセージング

Bolt クライアントとサーバーは両方とも、接続を介して一連のメッセージとしてデータを送信します。各メッセージにはタイプ (「署名」バイトで示される) があり、追加データが含まれる場合があります。クライアントが対話を駆動し、クライアントによって送信された各メッセージにより、サーバーから 1 つ以上の応答メッセージが送信されます。
クライアントメッセージ:
サーバーメッセージ:
メッセージ転送エンコーディング
各メッセージは、バイトのシーケンスにエンコードされます。これらのバイトは、バイナリチャンク エンコーディングを使用して転送されます。各チャンクの前には、直後に続くバイト数を示す符号なしのビッグ エンディアンの 16 ビット整数が付きます。長さ 0 は、メッセージの終わりを示すために使用されます。
障害処理
クライアントは、最初に応答を待たずに、サーバーに複数のメッセージを送信することができます。[16]サーバーは各メッセージを順番に処理します。ただし、クライアントが送信したメッセージ間には論理的な依存関係がある場合があるため、サーバーは、前のメッセージに応答して FAILURE を送信した後は、受信した要求を評価しません。代わりに、クライアントが ACK_FAILURE メッセージを送信して失敗を確認するまで、すべてのクライアント メッセージに IGNORED メッセージを返信します。
これは、 PostgreSQLワイヤ プロトコルの障害処理と回復に似ています。
データのエンコード
Bolt は、さまざまなデータ型のエンコードをサポートしています。
参考文献
- ^ 「Neo4j の次世代バイナリ プロトコル、Bolt の紹介 - パート 1 - DZone データベース」。dzone.com。2017年6 月 2 日閲覧。
- ^ 「Bolting Forward: Neo4j 3.0 Milestone 1 リリースがリリースされました - Neo4j Graph Database」。neo4j.com。 2015 年 12 月 4 日。 2017 年6 月 2 日閲覧。
- ^ Martin, Alexander J. (2016 年 4 月 26 日). 「Neo4j がバイナリ プロトコルを導入し、グラフ データベース ゲームを強化」theregister.co.uk . 2017 年6 月 2 日閲覧。
- ^ 「Neo4j 3.0 がバイナリ通信プロトコルと標準化されたドライバーとともにリリースされました」。InfoQ。2017年6 月 2 日閲覧。
- ^ 「Neo Technology、Neo4j 3.0をリリース」。tomsitpro.com。2016年4月26日。2017年5月7日時点のオリジナルよりアーカイブ。 2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
- ^ 「Bolt Protocol、バージョン1」。boltprotocol.org 。2017年6月2日閲覧。
外部リンク
- ボルトプロトコル仕様
