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

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

Amazon Neptune 替代查询引擎 (DFE)

Amazon Neptune 有一个名为 DFE 的新的替代查询引擎,该引擎比当前引擎更有效地使用 CPU 核心、内存和 I/O 等数据库实例资源。它目前作为实验室模式功能提供,仅用于开发目的。

注意

DFE 引擎首次在Neptune 引擎发布 1.0.3.0,然后从Neptune 引擎发布 1.0.5.0,默认情况下它变为启用状态,但仅用于查询提示和 OpenPher 支持,因为DFEQueryEngine=viaQueryHint成为默认的实验室模式设置。在 Neptune 中对 OpenPher 的 Support 取决于启用的 DFE 引擎。

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

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

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

重要

实验型 DFE 引擎目前尚未调整以在t3.medium实例类型。只要引擎仍处于实验室模式,请仅在较大的实例大小中启用它。

启用和禁用 Neptune DFE

您可以随时在中启用或禁用 DFE。Neptune 实验室模式设置DFEQueryEngineenableddisabled,或者viaQueryHint中的neptune_lab_mode参数组中的数据库集群参数组。

  • 设置DFEQueryEngineenabled启用新的查询引擎以及旧的引擎,并尽可能使用新引擎,除非useDFE查询提示存在并设置为false.

  • 设置DFEQueryEnginedisabled只启用较旧的引擎。

  • 设置DFEQueryEngineviaQueryHint(默认设置)同时启用新的查询引擎和旧的引擎,但是只有在useDFE查询提示存在并设置为true.

您也可以使用useDFE查询提示(请参阅Gremlin UseFe 查询提示Gremlin,这些区域有:useDFESPARQL 查询提示SPARQL)。通过此查询提示,您可以防止 DFE 执行该特定查询。

重要

DFE 目前正在实验中。它旨在用于开发,并且是建议在生产中使用。

您可以使用实例状态像这样打电话:

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

然后状态响应指定 DFE 是否已启用:

{ "status": "healthy", "startTime": "Tue Nov 05 22:49:06 UTC 2019", "dbEngineVersion": "development", "role": "writer", "gremlin": {"version":"tinkerpop-3.4.1"}, "sparql": {"version":"sparql-1.1"}, "labMode": { "Streams": "disabled", "ReadWriteConflictDetection": "enabled", "DFEQueryEngine": "enabled" }, "rollingBackTrxCount": "5", "rollingBackTrxEarliestStartTime": "Fri Jan 10 01:26:21 UTC 2020" }

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

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

Neptune DFE 支持的查询结构

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

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

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

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