amazon-web-services - 如何最好地在 AWS Neptune 中建模数据
问题描述
我目前正在评估 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 种最常见的访问模式索引的边和属性。
所以我会基于这个假设:
- 我们需要存储传入和传出边,或者
- 我们需要启用“使用实验室模式创建 OSGP 索引”以从两个方向进行索引
这里最好的方法是什么?
解决方案
通常,在 Gremlin 中遍历边时,最好指定您感兴趣的边标签。这有助于查询引擎更轻松地放弃考虑其他边。对于需要查看传入边的任何步骤,例如 、in
、inE
、both
,尤其如此bothE
。
特定于 Amazon Neptune,只要您能够为这些步骤提供一个或多个标签,就不需要 OSGP 索引。
推荐阅读
- c - 直接传递变量地址和在C中传递指针(指向同一个变量)之间的区别?
- c++ - Linux 承诺提供比它所能提供的更多的内存
- haskell - 在 Haskell 中 a : -> b 是什么意思?
- python - Pandas:时间列添加并重复所有行一个月
- algorithm - 创建点云的最小边界框组合的算法
- delphi - 有没有办法在 Delphi 中制作一个“子枚举”数组?
- python - 无需拼接图像的 OpenCV 曝光补偿
- python - 使用捕获的值作为行标识符
- angular - Mat-tab-group's [(selectedIndex)]=... binding is flaky
- powerbi - How to count different elements inside a column in power BI?