2014-03-03 150 views
3

我對圖數據庫相當陌生,我試圖確定Neo4j是否是用於網絡圖上數據挖掘的正確工具,或者是否有更適合的地方。我正在計劃使用圖形數據庫對一些大圖(數百萬個節點/ 10到100萬個邊)執行分析,但是我會考慮應用算法併爲圖中的每個人計算度量標準。例如:使用Neo4j進行數據挖掘

  • 對於每個人他們的擴展網絡中有多少人有一定的屬性。
  • 每個來自具有某個屬性的人的步數。
  • 從事社區檢測
  • 運行網頁排名

從尋找到它了一下,好像Neo4j的是非常適合跑步從某個節點開始查詢,但它也適用於應用計算在網絡中的每個人?我已經遇到了'圖計算引擎'這個詞作爲兩者之間的區別,但是似乎找不到太多內容。

是否有任何其他工具在這個尺度上是有用的(gephi和類似的將無法處理我需要使用的數據量)。

回答

3

它看起來不像neo4j是你在這裏找的東西。在我看來,你真的需要一個圖形引擎,而不是一個圖形數據庫

  • 隨着圖形數據庫,你應該能夠執行查詢。處理高度連接的數據時,它的執行速度非常快。例如,Neo4j應該快速地選擇一個節點,找到它的朋友,然後在社交圖中找到朋友的朋友的起始節點。在這種情況下,圖數據庫在處理大量節點時性能優於sql模型。請注意,效率恰恰來自您的引擎無需查看整個圖表以回答您的查詢的事實。

  • 使用圖形引擎,您可以按照您的描述對整個圖進行計算。

如果你想擴展和分析大量的節點,我建議你看看MapReduce方法;見Hadoop(也可能是Mahout)。

希望這會有所幫助!

+0

謝謝你,對ge很好對兩者之間的區別做一些清晰的說明。我熟悉Hadoop並且一直在考慮Apache Giraph,它似乎專門用於圖形(https://giraph.apache.org/),但是設置hadoop集羣將是一個相對較大的問題。是否有任何gephi(相對較小的圖...我認爲)和hadoop(巨大的圖)之間的中間產品。 – Ger

+0

不知道giraph,我會看看它:) 從我的經驗來看,運行hadoop工作的最簡單且經濟實惠的方式是在[amazon emr]上使用需求羣集(https:// aws .amazon.com/elasticmapreduce /)。好處是,您可以根據您必須處理的數據量來擴展集羣。運行相對較小的羣集非常便宜,而且您沒有任何配置要做! – aherve

5

由於您需要使用圖形數據庫分析引擎,因此您可能對Faunus感興趣。這是他們的描述:

Faunus是一個基於Hadoop的圖形分析引擎,用於分析跨多機計算羣集表示的圖形。

我知道這件事,因爲我一直注視着他們的圖形數據庫泰坦,它很好地集成了Tinkerpop,但我沒有使用它(Faunus)。

所以通過使用Faunus,您還可以擁有一個圖形後端,IMO會與您想要做的事情攜手並進。

+0

這篇博文可能對介紹[Faunus]有用(http://thinkaurelius.com/2012/11/11/faunus-provides-big-graph-data-analytics/)。 –

4

另一個非常好的圖形分析引擎是GraphLab(它是單機版本:GraphChi)。非常令人印象深刻的性能 - 請參閱:http://graphlab.com/

鏡像其他評論(並防止它成爲一個產品線程,將它鎖定在SO) - Neo4j是一個圖形數據庫 - 非常有用的查詢/探索/等。 GraphLab和給出的其他例子是更多的整體圖分析 - 像pagerank,圖三角計數等東西...

1

我知道這是遲到,但爲未來的Google員工的利益。

您可能還想嘗試構建在Spark上的GraphX項目。它現在是alpha,但對於大規模圖形分析來說看起來不錯。

https://spark.apache.org/graphx/

2

如果你想要一個純Neo4j的解決方案,你應該檢查this項目。

實現的算法:

1的PageRank

2三角計數

3標籤傳播的社區檢測

4模塊化(社區檢測)

希望它能幫助