2013-07-23 59 views
18

如果有人在另一個數據庫之上構建數據庫(如twitter),那麼該數據庫會繼承底層數據庫的侷限性和低效率嗎?圖表數據庫可以跨節點有效地分配數據嗎?

我特別感興趣的是titan db(http://thinkaurelius.com),因爲他們聲稱支持跨節點高效地分割數據集。

由於cassandra的效率,他們聲稱支持跨節點分發數據。然而,neo4j聲稱他們不在節點之間分發數據,而是在每個節點上覆制整個數據集的原因是因爲任何圖形遍歷離開一個節點,因此必須在以太網上移動,這太慢了實用。

由於cassandra沒有關於圖的知識,因此無法優化以保持一個節點上的圖遍歷。因此,大多數圖遍歷將跨越節點邊界。

巨人聲稱跨節點高效擴展真假嗎?

回答

19

Titan確定底層存儲後端(BASS for Cassandra,HBase默認值)的關鍵排序順序,然後將頂點分配給頂點,以使分配給相同分區塊的頂點具有分配給相同物理機。換句話說,Titan「理解」底層存儲後端如何分配數據並使用利用這種意識的圖形分區技術。 Titan使用包含領域知識的半自動分區。

在Pearson基準(http://arli.us/edu-planet-scale)中,該圖根據大學進行了分區,這是該特定數據集的近似最佳分區標準。如果不進行分區,擴展到1200億個邊緣幾乎是不可能的。

在圖層上進行創新的同時,Titan建立在經過驗證的技術之上(用於擴展,持久性,熱備份,可用性,災難恢復等)。這與Twitter的Flock和Facebook的Tao都採用的路線相同。雖然這意味着Titan在非常深的遍歷中速度較慢,但​​它確實允許Titan擴展到非常大的圖形或非常多的併發事務(讀取和寫入)。

0

好問題。 我認爲這是所有關於校準。 Twitter(使用Cassandra)使用圖形數據庫的方式非常具體(它們只有兩個「深度」級別),因此查詢不必遍歷長圖形(並且不必強制複製整個數據集)。 我認爲Titan和Neo4j都是正確的,Neo4j試圖提供一個通用的圖形數據庫,所以你有多種解決方案取決於你如何使用它,他們不知道人們將如何使用它,因此他們應用更常見的解決方案:複製整個數據集。

事實上,如果您不復制整個數據集,並且您想要在圖形中漫遊較長的路徑,那麼速度會很慢。

那麼,你的用法是什麼?我從來沒有使用過泰坦,但是一個好的測試就是將它的性能與Neo4j進行比較,具體取決於查詢的「深度」。

+0

看起來像泰坦支持任何類型的圖表,因爲cassandra(據說)不知道關於圖的任何內容 - 只是原始數據。 不幸的是,我沒有幾臺服務器用於測試。我不認爲在同一個硬盤上運行5個虛擬機的基準測試,使用內部網絡將是一個公平的測試方法。 –

相關問題