2010-06-04 217 views
28

我想知道什麼來存儲持久性存儲圖的最佳途徑的最好辦法是,以供日後分析,搜索,聚類等什麼是存儲在圖形持久存儲

我看到的Neo4j作爲一個選項,我很好奇,如果還有其他圖形數據庫可用。有沒有人對大型社交網絡如何存儲其基於圖的數據(或其他需要像模型一樣存儲圖的網站,例如RDF)有所瞭解。

像Cassandra或MySQL的選項呢?

+0

泰坦:https://github.com/thinkaurelius/titan – jcadcell 2015-07-09 19:44:23

回答

0

你可以看看InfiniteGraph,這將很快(http://www.infinitegraph.com/)發佈了測試版

如果這是用於商業用途,那麼你會看到它面向的,將有更大的圖形站點。社交網站建立了自定義解決方案,這些解決方案當時適用於他們。但是他們的內部解決方案比使用InfiniteGraph更受限制。像Cassandra或MySQL這樣的產品並不是針對這個多對多的問題集而設計的。你可以做到嗎?當然,但是這是很多手寫代碼,並且不可擴展。 讓我們知道如果你有一個真正的項目,我們可以幫你找出你的圖表需求。 謝謝, 沃倫 [email protected]

14

圖形數據庫:

  1. HyperGraphDB:通用,可擴展的,可移植的,分佈式的,可嵌入的,開放源碼的數據存儲機制。
  2. InfoGrid:一個互聯網圖數據庫與許多額外的軟件組件,使圖形基礎上的REST富web應用程序的開發變得容易。
  3. vertexdb:支持自動垃圾收集的高性能圖形數據庫服務器。

來源:http://nosql.mypopescu.com/post/498705278/quick-review-of-existing-graph-databases

圖形庫:

  1. WebGraph是研究web圖的框架。 從他們的頁面 - 「它提供了管理非常大圖的簡單方法,利用現代壓縮技術。」
  2. Dex是一個管理非常大的圖形或網絡的高性能庫。
  3. 此博客文章 - On Building a Stupidly Fast Graph Database - 提供了關於構建圖形數據庫的一些指導 - 他們使用的技術 是「內存映射I/O,基於磁盤的線性散列」。
4

免責聲明:我是從圖表分析的角度來講的。

有幾種存儲圖形數據的文件格式:GraphML,GXL和其他幾種。但存儲通常不是問題。使用這些圖表而不將它們完全加載到RAM中是棘手的部分。

RDF模型過於通用,無法進行嚴謹的圖形分析。如果您不介意自己的分析速度很慢並且自己編寫算法,請使用現有的圖形數據庫 - 請參閱wikipedia

對於實際分析,使用現有圖分析庫將所有數據加載到RAM中,如SNAP或請參閱This question

2

這裏沒有絕對正確的答案;有很多種選擇,其選擇嚴重取決於您的需求。隨着大規模的檢索/遍歷(例如社交網絡和類似的後端),你很快就會遇到隨機I/O瓶頸;我相信將你的圖存儲在RAM中是當前唯一的實際操作過程。較少延遲敏感的應用程序有各種各樣的選項,其中包括neo4j(具有商業風格的開源)和Allegrograph(商業版有限免費版)。

在Delver我們最終實現我們自己的非規範化的數據模型(基本上鄰接表來表示圖)在上GigaSpaces頂部RAM(一些信息可以在this presentation找到),自定義地圖,減少代碼查詢和數據分析。如果你走這條路,Cassandra似乎是一個可行的開源平臺。