计算所有顶点的快速方法(使用属性x)

时间:2014-01-31 09:40:37

标签: nosql gremlin titan

我正在使用Titan和Cassandra,并且有几个(相关的)关于使用Gremlin查询数据库的问题:

1。)是否有更快的方法来计算所有顶点而不是

g.V.count()

Titan声称使用索引。但是如何使用没有属性的索引?

WARN  c.t.t.g.transaction.StandardTitanTx - Query requires iterating over all vertices [<>]. For better performance, use indexes

2。)是否有更快的方法来计算属性'myProperty'而不是

的所有顶点
g.V.has('myProperty').count()

Titan再次意味着:

WARN  c.t.t.g.transaction.StandardTitanTx - Query requires iterating over all vertices [(myProperty<> null)]. For better performance, use indexes

但是,我怎么能这样做?我已经有了'myProperty'的索引,但它需要一个快速查询的值。

3。)和边缘相同的问题......

2 个答案:

答案 0 :(得分:4)

使用g.V.count()迭代所有顶点是获得计数的唯一方法。它不能更快​​地完成&#34;。如果您的图表太大以至于需要数小时才能得到答案,或者您的查询根本不会返回,那么您应该考虑使用Faunus。然而,即使使用Faunus,你也可以期待等待你的答案(例如Hadoop的性质......这里没有亚秒响应),但至少你会得到一个。

每次进行表扫描(即迭代所有顶点)时,都会得到“#34;迭代所有顶点&#34;”的警告。一般来说,你不想这样做,因为你永远不会得到回应。添加索引不会帮助您更快地计算所有顶点。

边缘有相同的答案。如果可以,请在Gremlin中使用g.E.count()。如果花了太长时间,那么试试Faunus,这样你至少可以得到一个答案。

答案 1 :(得分:0)

在大型分布式图形数据库中进行计数是很昂贵的。您可以拥有一个节点来跟踪许多数据库的常用聚合数,并从cron作业更新它,以便您方便地使用它。通常,如果您有数百万个顶点,那么前一个小时的计数就不是这样的灾难。