本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Gremlin 与 Neptune DFE 查询引擎一起使用
如果您在实验室模式下完全启用名为 DFE 的 Neptune 替代查询引擎(通过将neptune_lab_mode
数据库集群参数设置为DFEQueryEngine=enabled
),则 Neptune 会将只读 Gremlin 查询/遍历转换为中间逻辑表示形式,并尽可能在 DFE 引擎上运行它们。
但是,DFE 尚不支持 Gremlin 的所有步骤。当无法在 DFE 上原生运行某个步骤时,Neptune 会回退运行该步骤。 TinkerPop explain
和profile
报告包括发生这种情况时的警告。
从引擎版本 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
查找支持DedupGlobalStep
,ByModulation
SideEffect
、和Map
查询支持除外。
交叉查询计划
当翻译过程遇到没有相应原生 DFE 运算符的 Gremlin 步骤时,在回退到使用 Tinkerpop 之前,它会尝试找到其他可以在 DFE 引擎上原生运行的中间查询部分。它通过将交错逻辑应用于顶级遍历来实现此目的。结果是尽可能使用支持的步骤。
任何此类中间的非前缀查询转换都使用explain
和profile
输出来NeptuneInterleavingStep
表示。
为了进行性能比较,您可能需要在查询中关闭交替传输,同时仍使用 DFE 引擎运行前缀部分。或者,您可能只想使用引 TinkerPop 擎执行非前缀查询。您可以通过使用disableInterleaving
查询提示来执行该操作。
就像值为的UsedFE查询提示根本false
无法在 DFE 上运行查询一样,值为的disableInterleaving
查询提示true
会关闭查询的翻译 DFE 交错。例如:
g.with('Neptune#disableInterleaving', true) .V().has('genre','drama').in('likes')
更新了 Gremlinexplain
和profile
输出
Gremlin e xplain 提供了有关Neptune 用来运行查询的优化遍历的详细信息。有关启用 DFE 引擎时explainexplain输出是什么样子的示例,请参阅 DFE 输出示例。
Gremlinprofile API运行指定的 Gremlin 遍历,收集有关运行的各种指标,并生成概要报告,其中包含有关优化的查询计划和各种运算符的运行时统计信息的详细信息。有关启用 DFEprofile 引擎时profile输出是什么样子的示例,请参阅 DFE 输出示例。
由于 DFE 引擎是在实验室模式下发布的实验功能,因此explain
和profile
输出的确切格式可能会发生变化。