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

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

Amazon Neptune 替代查询引擎 (DFE)

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

注意

对 OpenPher 的 Support 取决于 Neptune 中的 DFE 查询引擎。

DFE 引擎首次在实验室模式下使用Neptune 引擎发布 1.0.3.0,然后从Neptune 引擎发布 1.0.5.0,默认情况下它变为启用状态,但仅用于与查询提示一起使用和 OpenCensPher 支持。

以开头1.Neptune 发动机版本 1.1.1.0DFE 引擎不再处于实验室模式,现在可以使用neptune_dfe_query_engine实例的数据库参数组中的实例参数。

注意

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

DFE 引擎运行 SPARQL、Gremlin 和 OpenCysPher 查询,并支持各种计划类型,包括左深计划、繁忙和混合计划。计划运算符可以调用在一组预留计算内核上运行的计算操作和 I/O 操作(每个操作都在 I/O 线程池中的自己的线程上运行)。

DFE 使用关于你的 Neptune 图数据的预先生成的统计数据来做出有关如何构建查询的明智决策。请参阅DFE 统计数据了解有关如何生成这些统计数据的信息。

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

控制 Neptune DFE 引擎的使用位置

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

您可以完全启用 DFE 引擎,以便尽可能通过设置neptune_dfe_query_engine到实例参数enabled.

您还可以通过将useDFE查询特定的提示Gremlin 查询要么SPARQL 查询. 此查询提示允许您防止 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"} }

Grelinexplainprofile结果告诉你 DFE 是否正在执行查询。请参阅Gremlin 中包含的信息explain报告为了explainDFEprofile报告为了profile.

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

Neptune DFE 支持的查询结构

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

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

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

你可以找出你的一个查询是全部还是部分由 DFE 执行,如下所示: