AWS Neptune Gremlin 在散列边缘 ID 上分页
AWS Neptune Gremlin paginate on hashed edge ID
我有一个非常大的数据集,接近5亿条边,其中几乎所有的边都需要遍历。我试图通过尝试在 IDS 上分页来并行化这些遍历。我的策略是尝试按 MD5 散列的 ID 进行分页。我尝试了如下查询:
g.E().hasLabel('foo').has(id, TextP.startingWith('AAA'))
第 1 页
g.E().hasLabel('foo').has(id, TextP.startingWith('AAB'))
第 2 页
但每个查询似乎都在进行全面扫描,而不仅仅是一个子集。你建议我如何进行分页?
我建议您 运行 profile
踩下您的查询以查看实际遍历量。
在 id
上使用 startingWith
谓词对我来说似乎不是一个优化的解决方案,因为它可能使用哈希索引,而不是范围索引。
我会尝试在其他字符串 属性 上添加前缀,甚至添加随机 [1..n] 'replica' 属性 并使用 .has('replica', i)
进行过滤以获得最佳性能,尤其是在这么大的图表上。
我有一个非常大的数据集,接近5亿条边,其中几乎所有的边都需要遍历。我试图通过尝试在 IDS 上分页来并行化这些遍历。我的策略是尝试按 MD5 散列的 ID 进行分页。我尝试了如下查询:
g.E().hasLabel('foo').has(id, TextP.startingWith('AAA'))
第 1 页
g.E().hasLabel('foo').has(id, TextP.startingWith('AAB'))
第 2 页
但每个查询似乎都在进行全面扫描,而不仅仅是一个子集。你建议我如何进行分页?
我建议您 运行 profile
踩下您的查询以查看实际遍历量。
在 id
上使用 startingWith
谓词对我来说似乎不是一个优化的解决方案,因为它可能使用哈希索引,而不是范围索引。
我会尝试在其他字符串 属性 上添加前缀,甚至添加随机 [1..n] 'replica' 属性 并使用 .has('replica', i)
进行过滤以获得最佳性能,尤其是在这么大的图表上。