効率的なマルチスレッドの Gremlin 書き込みの作成 - Amazon Neptune

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

効率的なマルチスレッドの Gremlin 書き込みの作成

Gremlin を使用して Neptune にデータをマルチスレッドでロードするためのガイドラインがいくつかあります。

可能な場合は、各スレッドに衝突しないように挿入または変更するための頂点またはエッジのセットを渡します。たとえば、スレッド 1 は 1〜50,000 の ID 範囲を、スレッド 2 は 50,001〜100,000 の ID 範囲を、というように続きます。これにより、 ConcurrentModificationException。 安全のため、 try/catch すべての書き込みをブロックします。失敗した場合は、しばらくしてから再試行できます。

一般に、50〜100 (頂点またはエッジ) の間のバッチサイズでの書き込みはうまく機能します。各頂点に追加されるプロパティがたくさんある場合は、100 よりも 50 に近い数が適しています。一部の実験は役立ちます。したがって、バッチオペレーションされた書き込みは次のようなものを使用できます。

g.addV(‘test’).property(id,’1’).as(‘a’). addV(‘test’).property(id,’2’). addE(‘friend’).to(‘a’).

これは、バッチオペレーションごとに繰り返し表示されます。

バッチを使用すると、サーバーへの Gremlin ラウンドトリップごとに 1 つの頂点またはエッジを追加するよりもはるかに効率的です。

言語バリアント (GLV) クライアントを使用している場合は、最初にトラバーサルを作成することによってプログラム的にバッチを作成できます。次にそれに追加して、最後にそれを繰り返します。次に例を示します。

t.addV(‘test’).property(id,’1’).as(‘a’) t.addV(‘test’).property(id,’2’) t.addE(‘friend’).to(‘a’) t.iterate()

可能であれば Gremlin 言語バリアントクライアントを使用することをお勧めします。ただし、文字列を連結してバッチを構築することでクエリをテキスト文字列として送信するクライアントと同様のことを実行できます。

クエリに基本的な HTTP ではなく Gremlin クライアントライブラリのいずれかを使用している場合、スレッドはすべて同じクライアント、クラスター、または接続プールを共有する必要があります。最高のスループット (接続プールのサイズ、Gremlin クライアントが使用するワーカースレッドの数などの設定) を得るために設定を調整する必要がある場合もあります。