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

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

将 Gremlin 与 Neptune DFE 查询引擎一起使用

如果你完全启用 Neptune替代查询引擎被称为 DFE实验室模式(通过设置neptune_lab_mode以下数据库集群参数DFEQueryEngine=enabled),然后 Neptune 将只读 Gremlin 查询/遍历转换为中间逻辑表示形式,并尽可能在 DFE 引擎上运行它们。

但是,DFE 尚未支持所有 Gremlin 步骤。当一个步骤无法在 DFE 上本机运行时,Neptune 会回到 TinkerPop 上运行该步骤。这些区域有:explainprofile出现这种情况时,报告包含警告

注意

从开头引擎版本 1.0.5.0,在没有本机支持的情况下处理 Gremlin 步骤的默认 DFE 行为已更改。以前 DFE 发动机回落在 Neptune Gremlin 引擎上,现在它回落在了香草的 TinkerPop 引擎上。

DFE 引擎本身支持的 Gremlin 步骤

  • GraphStep

  • VertexStep

  • EdgeVertexStep

  • IdStep

  • TraversalFilterStep

  • PropertiesStep

  • HasStep过滤对属性、ID 和标签上的顶点和边缘的支持,但文本和Without谓词。

  • WherePredicateStepPath-作用域的过滤器,但不是ByModulationSideEffect要么Map查找支持

  • DedupGlobalStep,除外ByModulationSideEffect, 和Map查找支持。

查询计划交错

当翻译过程遇到一个没有相应的本地 DFE 运算符的 Gremlin 步骤时,在回到使用 Tinkerpop 之前,它会尝试找到可以在 DFE 引擎上本机运行的其他中间查询部分。它通过将交错逻辑应用于顶级遍历来实现这一点。结果是,尽可能使用受支持的步骤。

任何这样的中间、非前缀查询转换都使用NeptuneInterleavingStep中的explainprofile输出。

为了比较性能,您可能希望在查询中关闭交错,同时仍然使用 DFE 引擎运行前缀部分。或者,你可能只想使用 TinkerPop 引擎来执行非前缀查询。使用此操作可通过使用disableInterleaving查询提示。

就像使用的 Fe值为的查询提示false完全阻止在 DFE 上运行查询,disableInterleaving值为的查询提示true关闭 DFE 交错以便翻译查询。例如:

g.with('Neptune#disableInterleaving', true) .V().has('genre','drama').in('likes')

更新 Grelinexplainprofile输出

Gremlin说明提供了有关 Neptune 用于运行查询的优化遍历的详细信息。请参阅DFE 示例explain输出举例说明什么explain输出看起来像启用 DFE 引擎时。

这些区域有:GremlinprofileAPI运行指定的 Gemlin 遍历、收集有关运行的各种指标并生成分析报告,其中包含有关优化查询计划的详细信息以及各种运算符的运行时间统计信息。请参阅DFE 示例profile输出举例说明什么profile输出看起来像启用 DFE 引擎时。

注意

由于 DFE 引擎是在实验室模式下发布的实验功能,因此explainprofile产出可能会随时更改。