Amazon Neptune 替代查询引擎 (DFE) - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Neptune 替代查询引擎 (DFE)

Amazon Neptune 有一个名为 DFE 的替代查询引擎,它比原来的 Neptune 引擎更有效地使用数据库实例资源,例如 CPU 内核、内存和 I/O。

注意

对于大型数据集,DFE 引擎可能无法在 t3 实例上正常运行。

DFE 引擎运行 SPARQL、Gremlin 和 OpencyPher 查询,支持多种计划类型,包括左深度计划、浓密计划和混合计划类型。计划运算符可以调用计算操作(在预留的一组计算内核上运行)和 I/O 操作,后者在 I/O 线程池中各自的线程上运行。

DFE 使用有关您的 Neptune 图形数据的预生成的统计数据来就如何构造查询做出明智的决策。有关如何生成这些统计数据的信息,请参见DFE 统计数据

计划类型和使用的计算线程数是根据预先生成的统计数据和 Neptune 头节点中的可用资源自动选择的。对于具有内部计算并行性的计划,结果顺序不是预先确定的。

控制 Neptune DFE 引擎的使用位置

默认情况下,neptune_dfe_query_engine实例的实例参数设置为,这会导致 DFE 引擎仅用于 OpencyPher 查询以及明确包含设置为的查询提示的 Gremlin 和 SPARQL 查询。viaQueryHint useDFE true

通过将neptune_dfe_query_engine实例参数设置为,您可以完全启用 DFE 引擎,以便尽可能使用它。enabled

您也可以通过添加特定 Gremlin 查询或 SPAR useDFE QL 查询的查询提示来禁用 DFE。此查询提示使您可以防止 DFE 执行该特定查询。

您可以使用实例状态调用来确定实例中是否启用了 DFE,如下所示:

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 explainprofile结果告诉你 DFE 是否正在执行查询。参见Grem explain lin 报告中包含的信息原文explainDFE 报道 profile和原文profile

同样,SPARQL 会explain告诉你 DFE 是否正在执行 SPARQL 查询。有关更多DFENode 运算符详细信息,请参阅启用 DFE 时的 SPARQL explain 输出示例和。

Neptune DFE 支持的查询结构

目前,Neptune DFE 支持 SPARQL 和 Gremlin 查询结构的子集。

对于 SPARQL 来说,这是连词基本图形模式的子集。

对于 Gremlin 来说,它通常是包含遍历链的查询子集,这些遍历链不包含一些更复杂的步骤。

您可以通过以下方式了解您的一个查询是全部还是部分由 DFE 执行: