Bolt(ネットワークプロトコル)

コンテンツへジャンプ
フリー百科事典『ウィキペディア(Wikipedia)』より

ボルト
原作者Neo4j
安定版リリース
バージョン5.8
で書かれています様々な言語
オペレーティングシステムどれでも
プラットフォームクロスプラットフォーム
タイプネットワークプロトコル
ライセンスクリエイティブ・コモンズ 3.0 表示-継承
ウェブサイト www.neo4j.com /docs / bolt /current /

BoltプロトコルBolt は、データベースアプリケーションにおけるクライアント・サーバー通信に使用されるコネクション指向 ネットワークプロトコルです。TCP接続またはWebSocketを介して動作します。

Bolt はステートメント指向であり、クライアントは単一の文字列と型指定されたパラメータのセットからなるステートメントを含むメッセージを送信できます。サーバーは各ステートメントに対して、結果メッセージと、オプションで結果レコードのストリームで応答します。

歴史

[編集]

Boltプロトコルは、2015年11月にダンカン・ブラウン氏が実施し、DZoneに掲載されたインタビューの中で初めて公開されました。[ 1 ]このプロトコルを実装したソフトウェアの最初のリリースは、Neo4j Serverのマイルストーンリリースの一部として、2015年12月に行われました。[ 2 ] 2016年4月には、Neo4j Server 3.0がリリースされ、プロトコルの最初のサーバー実装と、Boltクライアントドライバースイートが含まれていました。このリリースは、いくつかの主要メディアから注目を集めました。[ 3 ] [ 4 ] [ 5 ]

バージョン管理

[編集]

Boltネットワークプロトコルは、クライアントとサーバー間の互換性を確保するためにバージョンネゴシエーションを使用します。クライアントは、サポートされているプロトコルバージョンを最大4つ送信します。これらのバージョンは32ビット整数としてエンコードされ、古い順に送信されます。サーバーは互換性のある最も高いバージョンを応答し、一致するバージョンが見つからない場合は0を返して接続を切断します。Bolt 4.0以降、このプロトコルはメジャーバージョンとマイナーバージョンをサポートしています。Bolt 4.3では範囲ベースのマイナーバージョン管理が導入され、クライアントは連続するマイナーバージョンを簡潔に指定できるようになりました。[ 6 ]

プロトコルの概要

[編集]

プロトコルの新しいバージョンは定期的にリリースされ、パフォーマンス、機能、互換性が向上します

メッセージング

[編集]
Boltネットワークプロトコルにおける典型的な相互作用

Boltクライアントとサーバーはどちらも、接続を介して一連のメッセージとしてデータを送信します。各メッセージにはタイプ(「署名」バイトで示される)があり、追加データが含まれる場合があります。クライアントが相互作用を駆動し、クライアントが送信した各メッセージに対して、サーバーから1つ以上の応答メッセージが送信されます

以下の情報は Bolt バージョン 5.8 に関するものであり、プロトコルの最新の開発を反映していない可能性があります。

クライアントメッセージ:

タイプ署名
HELLO0x01 [ 7 ]
ログオン0x6A [ 8 ]
ログオフ0x6B [ 9 ]
テレメトリ0x54 [ 10 ]
さようなら0x02 [ 11 ]
リセット0x0F [ 12 ]
実行0x10 [ 13 ]
破棄0x2F [ 14 ]
引く0x3F [ 15 ]
開始0x11 [ 16 ]
コミット0x12 [ 17 ]
ロールバック0x13 [ 18 ]
ルート0x66 [ 19 ]

サーバーメッセージ:

タイプ署名
成功0x70 [ 20 ]
失敗0x7F [ 21 ]
無視0x7E [ 22 ]
記録0x71 [ 23 ]

メッセージ転送エンコーディング

[編集]

各メッセージはバイト列にエンコードされます。これらのバイトはバイナリチャンクエンコード方式で転送されます。各チャンクの先頭には、直後に続くバイト数を示す符号なしビッグエンディアンの16ビット整数が付加されます。長さ0はメッセージの終了を示すために使用されます。

障害処理

[編集]

クライアントは、サーバーからの応答を待たずに複数のメッセージを送信することができます。[ 24 ]サーバーは各メッセージを順番に処理します。ただし、クライアントから送信されたメッセージ間に論理的な依存関係がある場合があるため、サーバーは、先行するメッセージへの応答としてFAILUREを送信した後は、受信したリクエストを評価しません。代わりに、クライアントがRESETメッセージを送信して失敗を確認するまで、すべてのクライアントメッセージに対してIGNOREDメッセージを返信します。

これは、 PostgreSQLワイヤ プロトコルの障害処理と回復に似ています

PackStream の概要 - バージョン 1

[編集]

PackStreamは、豊富な型を持つデータを交換するためのバイナリ表現形式です。Boltメッセージングプロトコルの構文レイヤーを提供します。

データエンコーディング

[編集]

Boltは、さまざまなデータ型のエンコーディングをサポートしています。

タイプ説明
Null [ 25 ]値が存在しないことを表します
ブール値[ 26 ]ブール値の true または false。
整数[ 27 ]64ビット符号付き整数
浮動小数点数[ 28 ]64ビット浮動小数点数
バイト[ 29 ]バイト配列
文字列[ 30 ]UTF-8でエンコードされた文字列
リスト[ 31 ]順序付けられた値のコレクション。
辞書[ 32 ]キーと値のエントリのコレクション (順序は保証されません)。
構造[ 33 ]型シグネチャを持つ複合値。

参考文献

[編集]
  1. ^ 「Neo4jの次期バイナリプロトコル、Boltの紹介 - パート1 - DZoneデータベース」 dzone.com 20176月2日閲覧
  2. ^ 「Bolting Forward: The Neo4j 3.0 Milestone 1 Release Is Here - Neo4j Graph Database」 . neo4j.com . 2015年12月4日. 2017年6月2日閲覧
  3. ^ Martin, Alexander J. (2016年4月26日). 「Neo4jがバイナリプロトコルを導入し、グラフデータベースの性能を向上」 . theregister.co.uk . 2017年6月2日閲覧
  4. ^ 「Neo4j 3.0がバイナリ通信プロトコルと標準化されたドライバーとともにリリース」 InfoQ 20176月2日閲覧
  5. ^ 「Neo TechnologyがNeo4j 3.0をリリース」。tomsitpro.com 。2016年4月26日 2017年5月7日時点のオリジナルよりアーカイブ。 2017年6月2日閲覧
  6. ^ "バージョン管理" . neo4j.com . 2025年1月10日閲覧
  7. ^ 「Helloメッセージ」 . neo4j.com . 2025年1月9日閲覧
  8. ^ 「ログオンメッセージ」 . neo4j.com . 2025年1月9日閲覧
  9. ^ 「ログオフメッセージ」 . neo4j.com . 2025年1月9日閲覧
  10. ^ 「テレメトリメッセージ」 . neo4j.com . 2025年1月9日閲覧
  11. ^ 「さよならメッセージ」 . neo4j.com . 2025年1月9日閲覧
  12. ^ 「リセットメッセージ」 . neo4j.com . 2025年1月9日閲覧
  13. ^ 「メッセージを実行」 . neo4j.com . 2025年1月9日閲覧。
  14. ^ 「メッセージを破棄する」 . neo4j.com . 2025年1月9日閲覧。
  15. ^ 「Pull message」 . neo4j.com . 2025年1月9日閲覧
  16. ^ 「Begin message」 . neo4j.com . 2025年1月9日閲覧
  17. ^ 「コミットメッセージ」 . neo4j.com . 2025年1月9日閲覧
  18. ^ 「ロールバックメッセージ」 . neo4j.com . 2025年1月9日閲覧
  19. ^ 「ルートメッセージ」 . neo4j.com . 2025年1月9日閲覧
  20. ^ 「成功メッセージ」 . neo4j.com . 2025年1月9日閲覧
  21. ^ 「失敗メッセージ」 . neo4j.com . 2025年1月9日閲覧
  22. ^ 「無視されたメッセージ」 . neo4j.com . 2025年1月9日閲覧
  23. ^ 「メッセージを録音する」 . neo4j.com . 2025年1月9日閲覧。
  24. ^ "Pipelining" . neo4j.com . 2025年1月9日閲覧
  25. ^ 「Nullデータ型」 . neo4j.com . 2025年1月10日閲覧
  26. ^ 「ブールデータ型」 . neo4j.com . 2025年1月10日閲覧
  27. ^ 「整数データ型」 . neo4j.com . 2025年1月10日閲覧
  28. ^ 「Floatデータ型」 . neo4j.com . 2025年1月10日閲覧
  29. ^ 「バイトデータ型」 . neo4j.com . 2025年1月10日閲覧
  30. ^ 「文字列データ型」 . neo4j.com . 2025年1月10日閲覧
  31. ^ 「リストデータ型」 . neo4j.com . 2025年1月10日閲覧
  32. ^ 「辞書データ型」 . neo4j.com . 2025年1月10日閲覧
  33. ^ 「構造データ型」 . neo4j.com . 2025年1月10日閲覧
[編集]

    ボルト
    原作者Neo4j
    安定版リリース
    バージョン5.8
    で書かれています様々な言語
    オペレーティングシステムどれでも
    プラットフォームクロスプラットフォーム
    タイプネットワークプロトコル
    ライセンスクリエイティブ・コモンズ 3.0 表示-継承
    ウェブサイトwww.neo4j.com/docs/bolt/current/

    BoltプロトコルBolt は、データベースアプリケーションにおけるクライアント・サーバー通信に使用されるコネクション指向 ネットワークプロトコルです。TCP接続またはWebSocketを介して動作します。

    Bolt はステートメント指向であり、クライアントは単一の文字列と型指定されたパラメータのセットからなるステートメントを含むメッセージを送信できます。サーバーは各ステートメントに対して、結果メッセージと、オプションで結果レコードのストリームで応答します。

    歴史

    Boltプロトコルは、2015年11月にダンカン・ブラウン氏が行ったインタビューの中で初めて公開され、DZoneに掲載されました。[1]このプロトコルを実装したソフトウェアの最初のリリースは、Neo4j Serverのマイルストーンリリースの一部として、2015年12月に行われました。[2] 2016年4月には、Neo4j Server 3.0がリリースされ、プロトコルの最初のサーバー実装と、Boltクライアントドライバーのスイートが含まれていました。このリリースは、いくつかの主要メディアから注目を集めました。[3] [4] [5]

    バージョン管理

    Boltネットワークプロトコルは、クライアントとサーバー間の互換性を確保するためにバージョンネゴシエーションを使用します。クライアントは、サポートされているプロトコルバージョンを最大4つ、32ビット整数としてエンコードして送信し、古いエントリを優先します。サーバーは互換性のある最高のバージョンを応答するか、一致するものが見つからない場合はゼロ値を返して接続を閉じます。Bolt 4.0以降、プロトコルはメジャーバージョンとマイナーバージョンをサポートしています。Bolt 4.3では範囲ベースのマイナーバージョン管理が導入され、クライアントは連続するマイナーバージョンをコンパクトに指定できるようになりました。[6]

    プロトコルの概要

    プロトコルの新しいバージョンは定期的にリリースされ、パフォーマンス、機能、互換性が向上します

    メッセージング

    Boltネットワークプロトコルにおける典型的な相互作用

    Boltクライアントとサーバーはどちらも、接続を介して一連のメッセージとしてデータを送信します。各メッセージにはタイプ(「署名」バイトで示される)があり、追加データが含まれる場合があります。クライアントが相互作用を駆動し、クライアントが送信した各メッセージに対して、サーバーから1つ以上の応答メッセージが送信されます

    以下の情報は Bolt バージョン 5.8 に関するものであり、プロトコルの最新の開発を反映していない可能性があります。

    クライアントメッセージ:

    タイプ署名
    HELLO0x01 [7]
    ログオン0x6A [8]
    ログオフ0x6B [9]
    テレメトリ0x54 [10]
    さようなら0x02 [11]
    リセット0x0F [12]
    実行0x10 [13]
    破棄0x2F [14]
    引く0x3F [15]
    開始0x11 [16]
    コミット0x12 [17]
    ロールバック0x13 [18]
    ルート0x66 [19]

    サーバーメッセージ:

    タイプ署名
    成功0x70 [20]
    失敗0x7F [21]
    無視0x7E [22]
    記録0x71 [23]

    メッセージ転送エンコーディング

    各メッセージはバイト列にエンコードされます。これらのバイトはバイナリチャンクエンコード方式で転送されます。各チャンクの先頭には、直後に続くバイト数を示す符号なしビッグエンディアンの16ビット整数が付加されます。長さ0はメッセージの終了を示すために使用されます。

    障害処理

    クライアントは、最初に応答を待たずに、サーバーに複数のメッセージを送信することができます。[24]サーバーは各メッセージを順番に処理します。ただし、クライアントから送信されたメッセージ間に論理的な依存関係がある場合があるため、サーバーは、前のメッセージに応答してFAILUREを送信した後、受信したリクエストを評価しません。代わりに、クライアントがRESETメッセージを送信して失敗を確認するまで、すべてのクライアントメッセージにIGNOREDメッセージを返信します

    これは、 PostgreSQLワイヤ プロトコルの障害処理と回復に似ています

    PackStream の概要 - バージョン 1

    PackStreamは、豊富な型を持つデータを交換するためのバイナリ表現形式です。Boltメッセージングプロトコルの構文レイヤーを提供します。

    データエンコーディング

    Boltは、さまざまなデータ型のエンコーディングをサポートしています。

    タイプ説明
    Null [25]値が存在しないことを表します
    ブール値[26]ブール値の true または false。
    整数[27]64ビット符号付き整数
    浮動小数点数[28]64ビット浮動小数点数
    バイト[29]バイト配列
    文字列[30]UTF-8でエンコードされた文字列
    リスト[31]順序付けられた値のコレクション。
    辞書[32]キーと値のエントリのコレクション (順序は保証されません)。
    構造[33]型シグネチャを持つ複合値。

    参考文献

    1. ^ 「Neo4jの次期バイナリプロトコル、Boltの紹介 – パート1 - DZoneデータベース」dzone.com . 2017年6月2日閲覧
    2. ^ 「Bolting Forward: The Neo4j 3.0 Milestone 1 Release Is Here - Neo4j Graph Database」. neo4j.com . 2015年12月4日. 2017年6月2日閲覧
    3. ^ Martin, Alexander J. (2016年4月26日). 「Neo4jがバイナリプロトコルを導入し、グラフデータベースの性能を向上」theregister.co.uk . 2017年6月2日閲覧
    4. ^ 「Neo4j 3.0がバイナリ通信プロトコルと標準化されたドライバーとともにリリース」InfoQ 2017年6月2日閲覧
    5. ^ “Neo Technology、Neo4j 3.0をリリース”. tomsitpro.com . 2016年4月26日. 2017年5月7日時点のオリジナルよりアーカイブ。 2017年6月2日閲覧
    6. ^ “バージョン管理”. neo4j.com . 2025年1月10日閲覧
    7. ^ “Hello message”. neo4j.com . 2025年1月9日閲覧
    8. ^ 「ログオンメッセージ」. neo4j.com . 2025年1月9日閲覧
    9. ^ 「ログオフメッセージ」. neo4j.com . 2025年1月9日閲覧
    10. ^ “テレメトリメッセージ”. neo4j.com . 2025年1月9日閲覧
    11. ^ “さよならメッセージ”. neo4j.com . 2025年1月9日閲覧
    12. ^ “リセットメッセージ”. neo4j.com . 2025年1月9日閲覧
    13. ^ “Run message”. neo4j.com . 2025年1月9日閲覧
    14. ^ “メッセージを破棄する”. neo4j.com . 2025年1月9日閲覧。
    15. ^ “Pull message”. neo4j.com . 2025年1月9日閲覧
    16. ^ “Begin message”. neo4j.com . 2025年1月9日閲覧
    17. ^ “コミットメッセージ”. neo4j.com . 2025年1月9日閲覧
    18. ^ 「ロールバックメッセージ」. neo4j.com . 2025年1月9日閲覧
    19. ^ “ルートメッセージ”. neo4j.com . 2025年1月9日閲覧
    20. ^ 「成功メッセージ」. neo4j.com . 2025年1月9日閲覧
    21. ^ 「失敗メッセージ」. neo4j.com . 2025年1月9日閲覧
    22. ^ 「無視されたメッセージ」. neo4j.com . 2025年1月9日閲覧
    23. ^ 「メッセージを録音する」. neo4j.com . 2025年1月9日閲覧。
    24. ^ “Pipelining”. neo4j.com . 2025年1月9日閲覧
    25. ^ 「Nullデータ型」. neo4j.com . 2025年1月10日閲覧
    26. ^ 「ブールデータ型」. neo4j.com . 2025年1月10日閲覧
    27. ^ 「整数データ型」. neo4j.com . 2025年1月10日閲覧
    28. ^ 「Floatデータ型」. neo4j.com . 2025年1月10日閲覧
    29. ^ 「バイトデータ型」. neo4j.com . 2025年1月10日閲覧
    30. ^ 「文字列データ型」. neo4j.com . 2025年1月10日閲覧
    31. ^ 「リストデータ型」. neo4j.com . 2025年1月10日閲覧
    32. ^ 「辞書データ型」. neo4j.com . 2025年1月10日閲覧
    33. ^ 「構造データ型」. neo4j.com . 2025年1月10日閲覧
    • Boltプロトコル仕様
    Retrieved from "https://en.wikipedia.org/w/index.php?title=Bolt_(network_protocol)&oldid=1268548975"
    Original text
    Rate this translation
    Your feedback will be used to help improve Google Translate