

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

# Amazon Neptune 代替クエリエンジン (DFE)
<a name="neptune-dfe-engine"></a>

Amazon Neptune には、元のエンジンよりも効率的に CPU コア、メモリ、I/O などの DB インスタンスリソースを使用する DFE と呼ばれる代替クエリエンジンがあります。

**注記**  
データセットが大きいと、T3 インスタンスでは DFE エンジンが適切に動作しない場合があります。

DFE エンジンは SPARQL、Gremlin、および openCypher クエリを実行し、左ディープ、ブッシー、ハイブリッドなど、多種多様なプランタイプをサポートします。　 プランオペレータは、予約済みのコンピューティングコアのセットで実行されるコンピューティング操作と、I/O スレッドプール内の独自のスレッドで実行される I/O 操作の両方を呼び出すことができます。　

DFE は、Neptune グラフデータに関する事前生成された統計情報を使用して、クエリの構造化方法について情報に基づいた判断を下します。　 これらの統計の生成方法については、「[DFE 統計](neptune-dfe-statistics.md)」を参照してください。

プランタイプと使用されるコンピューティングスレッドの数は、事前に生成された統計と Neptune ヘッドノードで使用可能なリソースに基づいて自動的に選択されます。結果の順序は、内部計算の並列性を持つプランでは事前に決められていません。

# Neptune DFE エンジンの使用場所の制御
<a name="neptune-dfe-enabling-disabling"></a>

デフォルトでは、インスタンスの [neptune\$1dfe\$1query\$1engine](parameters.md#parameters-instance-parameters-neptune_dfe_query_engine) インスタンスパラメータは `viaQueryHint` に設定されます。これにより、DFE エンジンは openCypher クエリと、`useDFE` クエリヒントが `true` に明示的に設定された Gremlin および SPARQL クエリにのみ使用されます。

`neptune_dfe_query_engine` インスタンスパラメータを `enabled` に設定することにより、DFE エンジンを完全に有効にして、可能な限りどこでも使用できるようにすることができます。

特定の [Gremlin クエリ](gremlin-query-hints-useDFE.md)または [SPARQL クエリ](sparql-query-hints-useDFE.md)の `useDFE` クエリヒントを含めることにより、DFE を無効にすることもできます。このクエリヒントを使用すると、DFE がその特定のクエリを実行しないようにできます。

インスタンスで DFE が有効になっているかどうかは、次のように [インスタンスのステータス](access-graph-status.md) 呼び出しを使用して調べることができます。

```
curl -G https://your-neptune-endpoint:port/status
```

次に、ステータス応答は DFE が有効かどうかを指定します。

```
{
  "status":"healthy",
  "startTime":"Wed Dec 29 02:29:24 UTC 2021",
  "dbEngineVersion":"development",
  "role":"writer",
  "dfeQueryEngine":"viaQueryHint",
  "gremlin":{"version":"tinkerpop-3.5.2"},
  "sparql":{"version":"sparql-1.1"},
  "opencypher":{"version":"Neptune-9.0.20190305-1.0"},
  "labMode":{
    "ObjectIndex":"disabled",
    "ReadWriteConflictDetection":"enabled"
  },
  "features":{
    "ResultCache":{"status":"disabled"},
    "IAMAuthentication":"disabled",
    "Streams":"disabled",
    "AuditLog":"disabled"
  },
  "settings":{"clusterQueryTimeoutInMs":"120000"}
}
```

Gremlin `explain` および `profile` 結果は、クエリが DFE によって実行されているかどうかを示します。　 `explain` については [Gremlin `explain` レポートに含まれる情報](gremlin-explain-api.md#gremlin-explain-api-results) を、`profile` については [DFE `profile` レポート](gremlin-profile-api.md#gremlin-profile-dfe-output) を参照してください。　

同様に SPARQL `explain` は、SPARQL クエリが DFE によって実行されているかどうかを示します。　 詳細については、[DFE が無効の場合の SPARQL `explain` 出力の例](sparql-explain-examples.md#sparql-explain-output-dfe) および [`DFENode`operator](sparql-explain-operators.md#sparql-explain-operator-dfenode) を参照してください。

# Neptune DFE でサポートされているクエリコンストラクト
<a name="neptune-dfe-suppoorts-subset"></a>

現在、Neptune DFE は SPARQL および Gremlin クエリコンストラクトのサブセットをサポートしています。

SPARQL の場合、これは結合サブセットの[基本的なグラフパターン](https://www.w3.org/TR/sparql11-query/#BasicGraphPatterns)です。

Gremlin では、一般に、より複雑なステップを含まない一連のトラバーサルを含むクエリのサブセットです。

次のように、DFE によってクエリの 1 つが全体または一部で実行されているかどうかを確認できます。
+ Gremlin では `explain` および `profile` 結果は、DFE によって実行されているクエリのどの部分 (存在する場合) かを示します。　 `explain` については [Gremlin `explain` レポートに含まれる情報](gremlin-explain-api.md#gremlin-explain-api-results) を、`profile` については [DFE `profile` レポート](gremlin-profile-api.md#gremlin-profile-dfe-output) を参照してください。　 また、[`explain`および`profile`を使用した Gremlin クエリのチューニング](gremlin-traversal-tuning.md) も参照してください。

  個々の Gremlin ステップに対する Neptune エンジンのサポートの詳細については、[Gremlin ステップサポート](gremlin-step-support.md) を参照してください。
+ 同様に SPARQL `explain` は、SPARQL クエリが DFE によって実行されているかどうかを示します。　 詳細については、[DFE が無効の場合の SPARQL `explain` 出力の例](sparql-explain-examples.md#sparql-explain-output-dfe) および [`DFENode`operator](sparql-explain-operators.md#sparql-explain-operator-dfenode) を参照してください。