Gremlin スクリプトベースのセッションのサポート - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Gremlin スクリプトベースのセッションのサポート

Amazon Neptune で暗示的なトランザクションを伴う Gremlin セッションを使用できます。Gremlin セッションの詳細については、Apache TinkerPop ドキュメントの「セッションの検討」を参照してください。以下のセクションでは、Java で Gremlin セッションを使用する方法について説明します。

注記

この機能は、Neptune エンジンリリース 1.0.1.0.200463.0 からアクセスできます。

Neptune エンジンリリース 1.1.1.0 および TinkerPop バージョン 3.5.2 以降では、 を使用することもできますGremlin トランザクション

重要

現在、Neptune がスクリプトベースのセッションを開いたままにできる最長時間は 10 分です。それ以前にセッションを閉じないと、セッションはタイムアウトし、その中のすべてがロールバックされます。

Gremlin コンソール上の Gremlin セッション

session パラメータを指定せずに Gremlin コンソールでリモート接続を作成すると、リモート接続はセッションレスモードで作成されます。このモードでは、サーバーに送信される各リクエストはそれ自体で完全なトランザクションとして扱われ、リクエスト間の状態は保存されません。リクエストが失敗すると、そのリクエストのみがロールバックされます。

session パラメータを使用するリモート接続を作成した場合、リモート接続を閉じるまで続くスクリプトベースのセッションを作成します。すべてのセッションは、コンソールが生成して返UUIDす一意の によって識別されます。

次に示すのは、セッションを作成する 1 つのコンソール呼び出しの例です。クエリが送信されると、別の呼び出しによってセッションが閉じられ、クエリがコミットされます。

注記

サーバー側のリソースを解放するには、Gremlin クライアントを常に閉じておく必要があります。

gremlin> :remote connect tinkerpop.server conf/neptune-remote.yaml session . . . . . . gremlin> :remote close

詳細と例については、 TinkerPop ドキュメントの「セッション」を参照してください。

セッション中に実行するすべてのクエリは、単一のトランザクションを形成します。そのトランザクションは、クエリがすべて成功してリモート接続を閉じるまでコミットされません。クエリが失敗した場合、または Neptune でサポートされるセッションの最大有効期間内に接続を閉じなかった場合、セッショントランザクションはコミットされず、その中のすべてのクエリがロールバックされます。

Gremlin 言語バリアントの Gremlin セッション

Gremlin 言語バリアント (GLV) では、次の例のように、1 つのトランザクションで複数のクエリを発行するSessionedClientオブジェクトを作成する必要があります。

try { // line 1 Cluster cluster = Cluster.open(); // line 2 Client client = cluster.connect("sessionName"); // line 3 ... ... } finally { // Always close. If there are no errors, the transaction is committed; otherwise, it's rolled back. client.close(); }

前の例の行 3 は、問題のクラスターについて設定されている設定オプションに従って SessionedClient オブジェクトを作成します。- sessionName 接続メソッドに渡す文字列は、セッションの一意の名前になります。衝突を回避するには、名前UUIDに を使用します。

クライアントは初期化されると、セッショントランザクションを開始します。セッションの形成中に実行したすべてのクエリは、client.close( ) を呼び出すときにのみコミットされます。繰り返しますが、単一のクエリが失敗した場合、または Neptune でサポートされるセッションの最大有効期間内に接続を閉じなかった場合、セッショントランザクションは失敗し、その中のすべてのクエリがロールバックされます。

注記

サーバー側のリソースを解放するには、Gremlin クライアントを常に閉じておく必要があります。

GraphTraversalSource g = traversal().withRemote(conn); Transaction tx = g.tx(); // Spawn a GraphTraversalSource from the Transaction. // Traversals spawned from gtx are executed within a single transaction. GraphTraversalSource gtx = tx.begin(); try { gtx.addV('person').iterate(); gtx.addV('software').iterate(); tx.commit(); } finally { if (tx.isOpen()) { tx.rollback(); } }