翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Neptune DFEクエリエンジンでの Gremlin の使用
ラボモードDFEの と呼ばれる Neptune 代替クエリエンジンを完全に有効にすると (neptune_lab_mode
DB クラスターパラメータを に設定することでDFEQueryEngine=enabled
)、Neptune は読み取り専用の Gremlin クエリ/トラバーサルを中間論理表現に変換し、可能な限りDFEエンジンで実行します。
ただし、 DFEはすべての Gremlin ステップをまだサポートしていません。ステップを でネイティブに実行できない場合DFE、Neptune はフォールバック TinkerPop してステップを実行します。これが発生すると、explain
および profile
レポートに警告が含まれます。
注記
エンジンリリース 1.0.5.0 以降、ネイティブサポートなしで Gremlin ステップを処理するためのデフォルトのDFE動作が変更されました。以前は DFE Neptune Gremlin エンジンにエンジンがフォールバックしていましたが、現在は vanilla TinkerPop エンジンにフォールバックしています。
DFE エンジンでネイティブにサポートされている Gremlin ステップ
GraphStep
VertexStep
EdgeVertexStep
IdStep
TraversalFilterStep
PropertiesStep
HasStep
プロパティと ID とラベルの頂点とエッジのフィルタリングサポート (テキストとWithout
述語を除く)。WherePredicateStep
とPath
-スコープ付きフィルタ。ただし、ByModulation
、SideEffect
またはMap
ルックアップサポートなしDedupGlobalStep
、ただしByModulation
、SideEffect
およびMap
ルックアップサポートは除く。
クエリ計画インターリーブ
翻訳プロセスで、対応するネイティブDFE演算子を持たない Gremlin ステップが検出されると、Tinkerpop の使用に戻る前に、DFEエンジンでネイティブに実行できる他の中間クエリパーツを見つけようとします。これは、最上位レベルのトラバーサルにインターリーブロジックを適用することによって行われます。その結果、サポートされているステップは可能な限り使用されます。
このような中間的な非プレフィックスクエリ変換は、NeptuneInterleavingStep
およびexplain
出力にある profile
を使って表されます。
パフォーマンスを比較するには、DFEエンジンを使用してプレフィックス部分を実行しながら、クエリのインターリーブをオフにすることができます。または、プレフィックス以外のクエリ実行には TinkerPop エンジンのみを使用することをお勧めします。これを行うには、disableInterleaving
クエリヒントを使用します。
値が のの使用DFEクエリヒントが でクエリが実行されfalse
ないようにするのと同様にDFE、値が のクエリヒントはdisableInterleaving
、クエリの翻訳のためのDFEインターリーブtrue
をオフにします。以下に例を示します。
g.with('Neptune#disableInterleaving', true) .V().has('genre','drama').in('likes')
Gremlin explain
および profile
出力の更新
Gremlin explain は、Neptune がクエリの実行に使用する最適化されたトラバーサルの詳細を示します。DFE エンジンが有効になっている場合のDFEexplain出力の例については、出力例を参照してください。 explain
Gremlin profile API は指定された Gremlin トラバーサルを実行し、実行に関するさまざまなメトリクスを収集して、最適化されたクエリプランの詳細と、さまざまな演算子の実行時統計情報を含むプロファイルレポートを生成します。DFE エンジンが有効になっている場合のDFEprofile出力の例については、profile
出力例を参照してください。
注記
DFE エンジンはラボモードでリリースされた実験的な機能であるため、 explain
および profile
出力の正確な形式は変更される可能性があります。