graph - Titan 需要多大的 Faunus 图形分析框架?

标签 graph gremlin titan faunus

我正在研究在 TitanGraph 数据库上对两个数据集跨边执行图聚合(groupBy、groupCount)查询:

  1. 大约 10,000 个节点和大约 100 万条边

  2. 大约 200,000 个节点和大约 10 亿条边

有谁知道我需要在什么时候努力安装 Faunus 才能在 1 分钟内完成这种类型的 gremlin 查询?

最佳答案

在 10000 个节点和 1M 条边上,使用普通的 Gremlin(没有 Faunus)应该没有问题。请参阅下面的代码,其中我使用 Furnace 生成了大约该大小的图表:

gremlin>  g = TitanFactory.open('/tmp/titan/generated')
==>titangraph[local:/tmp/titan/generated]
gremlin> import com.tinkerpop.furnace.generators.*
==>import com.tinkerpop.gremlin.*
==>import com.tinkerpop.gremlin.java.*
...
==>import com.tinkerpop.furnace.generators.*
gremlin> for (int i=0;i<10000;i++) g.addVertex(i)
==>null
gremlin> r = new java.util.Random()
==>java.util.Random@137f0ced
gremlin> generator = new DistributionGenerator("knows", { it.setProperty("weight", r.nextInt(100)) } as EdgeAnnotator)
==>com.tinkerpop.furnace.generators.DistributionGenerator@111a3ce4
gremlin> generator.setOutDistribution(new PowerLawDistribution(2.1))
==>null
gremlin> generator.generate(g,1000000)
==>1042671

回顾您在 aggregates 上的帖子,我基本上对这个数据集执行相同的查询。

gremlin> start=System.currentTimeMillis();g.E.groupBy{it.getProperty("weight")}{it}.cap.next();System.currentTimeMillis()-start
==>1415
gremlin> m.size()
==>100

如您所见,执行此遍历大约需要 1.5 秒(在内存中的 TinkerGraph 上大约需要 500 毫秒)。

在 1B 边缘,您可能需要 Faunus。我不认为你会在一分钟内完成所有这些边缘的迭代,即使你能以某种方式将它们全部放入内存中。请注意,使用 Faunus,您可能不会获得 1 分钟的查询/回答时间。我认为您需要进行一些实验。

关于graph - Titan 需要多大的 Faunus 图形分析框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20285413/

相关文章:

javascript - 在尝试寻找最长路径时消除有向无环图中的无关边

javascript - 当某些 x 轴刻度为空值时如何在 Jqplot 中显示 'fillToValue'

c++ - 如何检查图是否为平面图?

azure - Gremlin 查询检查顶点上的边对

neo4j - 如何选择顶点共享公共(public)属性的边?

neo4j - 我应该使用 TitanDB 吗?

graph - 大数据的数据建模

javascript - gremlin-javascript 中的纯文本 SASL 身份验证

java - Titan gremlin 控制台和 java 为 group().by() 查询返回不同的结果

database - HDFS 中存储了什么以及为什么 Titan 执行查询时 map-reduce 计算速度如此之快?