2013-11-28 21 views
2

我最近一直在測試Titan-Cassandra和OrientDB,並且想到了一個問題。GraphDB查詢和分片

我只是想知道graphDBs在不同集羣中的分片圖表是如何以及他們的查詢接口如何支持在分片圖表上查詢找到兩個節點之間的最短路徑。

我知道Gremlin爲其groupby函數實現了Mapreduce pattern

但我想更深入地瞭解查詢 - 分片如何關聯以及兩個DB如何處理分片圖上的查詢。特別是,我對OrientDB的SQL接口如何支持跨分片圖進行查詢感興趣。

我知道Neo4j反對分拆,我建議從previous question我問。

回答

8

請參閱有關泰坦以下兩個職位(http://titan.thinkaurelius.com):

通常情況下,當你開始開發一個圖形應用程序,你正在使用一臺機器。在這個模型中,整個圖形都在一臺機器上。如果圖形很小(數據大小明智)並且事務負載很低(不是大量的讀/寫),那麼當您投入生產時,您只需添加複製以實現高可用性。使用非分佈式複製時,數據將完全複製到其他計算機,並且如果任何一臺計算機停機,其他計算機仍可用於處理請求。再一次請注意,在這種情況下,您的數據不會被分區/分發,只會被複制。接下來,隨着圖形尺寸的增大(超出單個機器的內存和HD空間),您需要開始考慮分配。使用分佈式,您可以將圖形分配到多機羣集上(並確保高可用性),確保您有一些數據冗餘(例如複製因子3)。

有兩種方法目前在土衛六分區數據:

  1. 隨機分配:頂點和他們共處一關聯邊分佈在集羣中。也就是說,一個頂點及其入射邊形成一個「數據束」,並一起存在於一臺機器上。隨機分區確保羣集正確平衡,因此沒有一臺機器正在維護所有數據。簡單的分銷策略通常是有效的。
  2. 用戶控制分區:頂點(及其事件邊界)被分配給一個分區(該分區最終代表一臺機器 - 儘管由於複製和多臺機器上存在相同的數據而不是完全正確)。用戶定向分區對於瞭解其域的拓撲的應用程序非常有用。例如,你可能知道,不同大學的人之間的邊緣比同一所大學的人之間的邊緣少。因此,智能分區將基於大學。這確保了適當的頂點頂點託管,並減少了希望解決遍歷的多機器問題。缺點是你想確保你的集羣不是太不平衡(一個分區上的所有數據)。

在一天結束時,整個故事是關於共同定位。你能確保共同檢索到的數據在物理空間中接近嗎?

最後,注意泰坦允許並行讀取(和寫入)使用法烏努斯(http://faunus.thinkaurelius.com)。因此,如果你有一個需要掃描整個圖形的OLAP問題,那麼泰坦的協同定位模型作爲一個頂點很方便,而它的邊緣是從磁盤順序讀取的。再次,故事依然保持不變 - 根據共同檢索的時間,共同定位太空。