我正在将 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.) 与边缘相同的问题......
最佳答案
使用 g.V.count()
迭代所有顶点是获得计数的唯一方法。它不能“更快”完成。如果您的图表太大以至于需要数小时才能获得答案,或者您的查询根本没有返回,您应该考虑使用 Faunus .然而,即使使用 Faunus,您也可以期待等待您的答案(这就是 Hadoop 的性质……这里没有亚秒级响应),但至少您会得到一个。
任何时候进行表扫描(即迭代所有顶点)时,都会收到“迭代所有顶点”的警告。一般来说,你不想这样做,因为你永远不会得到回应。添加索引不会帮助您更快地计算所有顶点。
边缘有相同的答案。使用 g.E.count()
如果可以的话,在 Gremlin。如果时间太长,请尝试 Faunus,这样您至少可以得到答案。
关于nosql - 计算所有顶点的快速方法(具有属性 x),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21476729/