圖資料庫淺談

cjsoldier發表於2017-06-25

圖資料庫分為兩大類:native graph和non-native graph

native graph:

資料只能存放在一臺機器上。不支援分片。如果你的資料量非常大,Neo4j是扛不住的。
它的優點是讀寫速度都非常快,查關係也非常快。
典型代表是Neo4j。網上查了很久,Neo4j的團隊認為你應該只把最重要的資料存到圖裡。Neo4j不願意犧牲速度。因為目前圖資料庫分片是一個NP complete的問題。他們說與其實現一個naive(幼稚的)分片,不如把速度搞好。顯然這是衝著資料分析來的。速度上來了,配合spark,分析資料就更快了,這樣才有可能挖掘出更有價值的資料。

non-ative graph:

資料可以儲存在多臺機器上。支援分片(partition/sharding)。這個自然是衝著大資料來的。好處是不用擔心一臺機器硬碟的容量不夠了,壞處是犧牲了效能。
這一類的圖資料庫有titan,orly,cayley。

titan的backend可以配置成Hbase或者Cassandra,可以做到分片。

cayley如果backend配置的是分散式的mongo的話,也能做到分片。

orly不依賴第三方backend。直接做到分片,並且聲稱效能還很好。

雖然支援分片,但其實titan和cayley只是一個graph layer。因為他們底層依賴其他儲存系統。既然是graph layer,有人就質疑說titan和cayley能否稱得上真正的圖資料庫。titan和orly做的挺好,都被收購了,然後就死掉了。github上很久沒人更新了。目前也只能寄希望於cayley了。這個是go語言寫的。社群也很活躍。

插一段廢話:
我不懂大資料,更不懂資料探勘。只能談談自己的一點理解。
零散的資料沒什麼價值,但是一旦把資料關聯起來,即便是看起來是垃圾資料也可能會得出非常有價值的結論。怎麼關聯?抽取實體,建立關係,抽象出模型。據說行話叫構建知識圖譜。然後從關聯的資料量找出有價值的東西。這需要對資料極度敏感,智力還要好。這種活我們這些小程式設計師可幹不了,得數學家和科學家來。科學家是大朋友,我們只是小朋友。小朋友可以很容易培養,科學家卻不可多得。李開復說的,我覺得說的很有道理。我們能做什麼?做大資料採集。做爬蟲也好,做大資料儲存也好都是為資料探勘的人服務的。哦,對了,怎麼挖掘資料?我也不知道,大概是機器學習,深度學習吧。


相關文章