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

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

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

如果您在实验室模式下完全启用名为 DFE 的 Neptune 替代查询引擎(通过将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谓词除外。

  • WherePredicateStep带有Path-scoped 过滤器ByModulation,但没有,SideEffect或者Map查找支持

  • DedupGlobalStepByModulationSideEffect、和Map查询支持除外。

交叉查询计划

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

任何此类中间的非前缀查询转换都使用explainprofile输出来NeptuneInterleavingStep表示。

为了进行性能比较,您可能需要在查询中关闭交替传输,同时仍使用 DFE 引擎运行前缀部分。或者,您可能只想使用引 TinkerPop 擎执行非前缀查询。您可以通过使用disableInterleaving查询提示来执行该操作。

就像值为的UsedFE查询提示根本false无法在 DFE 上运行查询一样,值为的disableInterleaving查询提示true会关闭查询的翻译 DFE 交错。例如:

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

更新了 Gremlinexplainprofile输出

Gremlin e xplain 提供了有关Neptune 用来运行查询的优化遍历的详细信息。有关启用 DFE 引擎时explainexplain输出是什么样子的示例,请参阅 DFE 输出示例。

Gremlinprofile API运行指定的 Gremlin 遍历,收集有关运行的各种指标,并生成概要报告,其中包含有关优化的查询计划和各种运算符的运行时统计信息的详细信息。有关启用 DFEprofile 引擎时profile输出是什么样子的示例,请参阅 DFE 输出示例。

注意

由于 DFE 引擎是在实验室模式下发布的实验功能,因此explainprofile输出的确切格式可能会发生变化。