【问题标题】:How best to model data in AWS Neptune如何最好地在 AWS Neptune 中建模数据
【发布时间】:2021-03-19 09:24:53
【问题描述】:

我目前正在评估 AWS Neptune 作为一个潜在的图形数据库(特别是将其与 Azure Cosmos Graph DB 进行比较)。场景是我有一堆测试数据,我正在使用批量加载程序添加这些数据,然后将对数据库性能运行一些基准测试。

我很好奇如何最好地在 AWS Neptune 中建模数据。

在 Azure Cosmos Graph DB 中,边是单向的,并且存储在源顶点上。因此,除非一条边也存储在另一个顶点上,否则需要查找入站边的查询会很慢。

到目前为止,在 AWS Neptune 中,我还没有找到有关如何以类似方式对边缘进行最佳优化的答案。

阅读 Neptune 内部数据模型 (https://docs.aws.amazon.com/neptune/latest/userguide/feature-overview-data-model.html) 的此描述表明,存在用于顶点、边和属性的通用存储模式,这些存储模式使用 3 种最常见的访问模式进行索引。

所以我会基于此假设:

  1. 我们需要存储传入和传出边,或者
  2. 我们需要启用“使用实验室模式创建 OSGP 索引”以从两个方向索引

这里最好的方法是什么?

【问题讨论】:

  • 如果您正在寻找“意见”,您可能会得到更好的回复:reddit.com/r/aws

标签: amazon-web-services graph gremlin amazon-neptune


【解决方案1】:

一般而言,在 Gremlin 中遍历边时,最好指定您感兴趣的边标签。这有助于查询引擎更轻松地放弃考虑其他边。对于需要查看传入边的任何步骤尤其如此,例如ininEbothbothE

特定于 Amazon Neptune,只要您能够为这些步骤提供一个或多个标签,就不需要 OSGP 索引。

【讨论】:

  • 是的,但是是否有必要在顶点之间的两个方向上创建边才能有效地工作?
  • 只要您能够在 Gremlin 查询中提供边缘标签,无论边缘方向如何,它们都应该是有效的。如果您无法提供标签,那么传出边遍历会更有效。
猜你喜欢
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
  • 2020-06-21
  • 1970-01-01
  • 2019-05-13
相关资源
最近更新 更多