2014-01-31 95 views
2

我使用的是土衛六與卡桑德拉和有關於詢問與小鬼數據庫數(相關的)問題:快速的方法來計算所有頂點(與屬性x)

1)是否有計算所有一個更快的方式頂點比

g.V.count() 

泰坦聲稱使用索引。但是,我怎樣才能使用沒有財產的索引?

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),並與邊緣相同的問題...

+0

重複的http://stackoverflow.com/questions/17214959/number-of-nodes-edges-in-a-large-graph-via-gremlin –

回答

4

遍歷所有頂點與g.V.count()是得到計數的唯一途徑。它不能「更快」地完成。如果圖表太大以至於需要數小時才能得到答案,或者查詢完全不會返回,則應考慮使用Faunus。然而,即使Faunus你可以期待等待你的回答(這就是Hadoop的本質......這裏沒有亞秒級響應),但至少你會得到一個。每當你做表掃描(即遍歷所有頂點)時,你會得到「迭代所有頂點」的警告。一般來說,你不想這樣做,因爲你永遠不會得到迴應。添加索引不會幫助您更快地計算所有頂點。

邊緣具有相同的答案。如果可以,請在Gremlin中使用g.E.count()。如果花費太長時間,那麼嘗試Faunus,這樣你至少可以得到答案。

+0

你的意思是沒有辦法執行有效的計數泰坦?我們應該考慮更新櫃檯嗎?泰坦允許用於執行原子操作嗎? – Thomas

+0

在Titan中,沒有用於有效返回計數的圖元素(即頂點/邊)的內部計數器。我不知道其他藍圖實現是否可以做到這一點(我在想「不」,但對orientdb,neo4j等的最新發展可能是錯誤的)。關於「原子操作」問題,如果您打算使用cassandra或hbase後端,您應該閱讀泰坦文檔的這一部分:http://s3.thinkaurelius.com/docs/titan/0.5.4/eventual-consistency.html –

0

在大型分佈式圖形數據庫中進行計數很昂貴。你可以有一個節點跟蹤許多數據庫的頻繁總數,並從一個cron作業更新它,所以你有它的方便。通常情況下,如果您有數百萬個頂點,從前一小時算起並不是這樣的災難。