计算图上第n次连接的最佳方法

时间:2019-01-08 05:18:17

标签: apache-spark elasticsearch graph-databases arangodb spark-graphx

我在ArangoDB上有一个图形数据库,该数据库的节点深度约为100个级别,某些用户约为205k。对于正常使用,用于遍历图形的AQL效果很好。但是在某些情况下,图遍历会花费太多时间,

  1. 计算某些用户的最大深度
  2. 计算节点深度约为50+且子节点200k +的根节点的权重。这里的权重是通过将每个子节点的权重相加得出的。
  3. 为某个节点在特定级别上获取所有节点。

我尝试的解决方案如下:

  • 对于#1和#2,我正在计算后台的最大深度和权重,并将其保留在缓存中以避免实时处理。如果图形有任何变化,这些值也会重新计算。
  • 对于#3,我尝试将图形放置在实际上使性能变差的分片上(并且可以预料,因为图形无法利用分片的好处)

我需要以下建议:

  • 预先计算每个级别上的用户ID并将其放入每个用户的缓存中是个好主意吗?
  • 是否有一种方法可以将图拆分为不同的碎片(更好的方法),以便我的查询可以并行运行以完成提早获取节点数据的任务?
  • Elastic search或Spark之类的工具能否有助于提高Graph查询的性能?

谢谢

0 个答案:

没有答案