4

我将 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()

再次泰坦意味着以下:

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

但是,我该怎么做呢?我已经有一个“myProperty”的索引,但它需要一个快速查询的值。

3.)同样的问题有边缘......

4

2 回答 2

6

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

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

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

于 2014-01-31T13:45:14.370 回答
1

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

于 2014-04-20T16:12:07.143 回答