Gremlin と Neptune DFE クエリエンジンを使用する - Amazon Neptune

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

Gremlin と Neptune DFE クエリエンジンを使用する

neptune_lab_modeDB クラスターパラメータを に設定してDFEQueryEngine=enabled) ラボモードで DFE として知られる Neptune の代替クエリエンジンを有効にすると、Neptune は読み取り専用の Gremlin クエリ/トラバーサルを中間論理表現に変換し、可能な限り DFE エンジンで実行します。

ただし、DFE はまだ Gremlin のすべてのステップをサポートしていません。DFE でステップをネイティブに実行できない場合、Neptune は TinkerPop にフォールバックしてステップを実行します。これが発生すると、explain および profile レポートに警告が含まれます。

注記

エンジンリリース 1.0.5.0 以降、DFE がネイティブにサポートしていないステップに遭遇すると、以前と同じように Neptune Gremlin エンジンではなく、ベースの TinkerPop エンジンにフォールバックします。

クエリ計画インターリーブ

変換プロセスで、対応するネイティブ DFE 演算子を持たない Gremlin ステップが検出されると、Tinkerpop の使用にフォールバックする前に、DFE エンジンでネイティブに実行できる他の中間クエリ部分を見つけようとします。これは、最上位レベルのトラバーサルにインターリーブロジックを適用することによって行われます。その結果、サポートされているステップは可能な限り使用されます。

このような中間的な非プレフィックスクエリ変換は、NeptuneInterleavingStep およびexplain 出力にある profile を使って表されます。

パフォーマンスの比較のために、DFE エンジンを使用してプレフィックス部分を実行しながら、クエリでのインターリーブをオフにしたい場合があります。または、非プレフィックスクエリの実行に TinkerPop エンジンだけを使用することもできます。これを行うには、disableInterleaving クエリヒントを使用します。

useDFE 値の false クエリヒントにより DFE でクエリがまったく実行されなくなるように、disableInterleaving 値の true クエリヒントはクエリの変換の DFE インターリーブをオフにします。例:

g.with('Neptune#disableInterleaving', true) .V().has('genre','drama').in('likes')

Gremlin explain および profile 出力の更新

Gremlin explain は、Neptune がクエリの実行に使用する最適化されたトラバーサルの詳細を示します。DFE エンジンが無効化されているときの explain 出力はどのようなものかの例について、サンプル DFE explain 出力をご覧ください。

Gremlin profile API は指定された Gremlin トラバーサルを実行し、実行に関するさまざまなメトリクスを収集して、最適化されたクエリプランの詳細と、さまざまな演算子の実行時統計情報を含むプロファイルレポートを生成します。profile DFE エンジンが無効化されているときの出力はどのようなものかの例について、サンプル DFE profile 出力をご覧ください。

注記

DFE はラボモードでリリースされる実験的な機能なので、explain および profile 出力の正確な形式は変更される可能性があります。