Amazon Neptune 替代查询引擎 (DFE) - Amazon Neptune

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

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 实例参数设置为 viaQueryHint,这会导致 DFE 引擎仅用于 openCypher 查询,以及显式包含 useDFE 查询提示(设置为 true)的 Gremlin 和 SPARQL 查询。

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

您也可以通过包含特定 Gremlin 查询或 SPARQL 查询useDFE 查询提示来禁用 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 是否正在执行查询。请参阅Gremlin explain 报告中包含的信息以了解 explain,并参阅DFE profile 报告以了解 profile

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

Neptune DFE 支持的查询构造

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

对于 SPARQL,这是连接性基本图形模式的子集。

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

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