圖形數(shù)據(jù)庫屬于NoSQL數(shù)據(jù)庫四大類型之一,圖形存儲(chǔ)類產(chǎn)品中也以下列七種較為流行及常用: Neo4J, Infinite Graph, DEX, InfoGrid, HyperGraphDB, Trinity 以及AllegroGraph。
總體比較結(jié)果如下圖的表格所示:每款產(chǎn)品似乎都支持高性能及分布式部署。 “1M”是指對(duì)應(yīng)圖形數(shù)據(jù)庫可以支持100萬個(gè)免費(fèi)節(jié)點(diǎn)。 RDF圖形可以被看作一種特殊屬性的圖形。由于超圖形是目前圖形格式中最常見的類型,因此支持超圖形的數(shù)據(jù)庫在理論上也應(yīng)該會(huì)支持屬性圖形。
圖形數(shù)據(jù)庫對(duì)比表
Neo4J是當(dāng)下人氣最高的圖形數(shù)據(jù)庫。從名稱我們就能看出Neo4J在設(shè)計(jì)上主要考慮到Java應(yīng)用程序的實(shí)際需求,但它同時(shí)也支持Python。Neo4J屬于開源項(xiàng)目,共有GPLv3社區(qū)版、高級(jí)版、企業(yè)版三種版本;后兩者都以AGPLv3商業(yè)許可為基礎(chǔ)。 更多內(nèi)容請(qǐng)參見:http://neo4j.org/
InfiniteGraph 是一款由Objectivity公司推出的圖形類數(shù)據(jù)庫,該公司還推出過一款同名的對(duì)象類數(shù)據(jù)庫。免費(fèi)許可版本只能支持最高100萬節(jié)點(diǎn)及邊線總數(shù)。InfiniteGraph需要作為服務(wù)項(xiàng)目加以安裝,這與以MySQL為代表的傳統(tǒng)數(shù)據(jù)庫頗為相似。InfiniteGraph借鑒了Objectivity/DB中的面向?qū)ο蟾拍,因此其中的每一個(gè)節(jié)點(diǎn)及邊線都算作一個(gè)對(duì)象。 更多內(nèi)容請(qǐng)參見:http://www.infinitegraph.com/
DEX一直被形容為一款具備高性能及優(yōu)秀可擴(kuò)展性的圖形類數(shù)據(jù)庫,這對(duì)于NoSQL應(yīng)用程序來說無疑擁有相當(dāng)強(qiáng)的吸引力。其個(gè)人評(píng)估版本最多可支持100萬個(gè)節(jié)點(diǎn)。目前最新的版本是4.2,同時(shí)支持Java及.Net編程。請(qǐng)注意,舊的4.1版本只支持Java,且無法與新版本相兼容。 更多內(nèi)容請(qǐng)參見:http://sparsity-technologies.com/dex
InfoGrid一直標(biāo)榜自己是一款“網(wǎng)頁圖形數(shù)據(jù)庫”,也就是說它的某些功能主要面向網(wǎng)頁應(yīng)用程序。圖五展示了InfoGrid的整體框架,而圖形數(shù)據(jù)庫在其中所扮演的似乎并不是主要組成部分。InfoGrid在OpenID項(xiàng)目中也擁有幾款應(yīng)用程序,該項(xiàng)目同樣由Netmesh公司所支持。 更多內(nèi)容請(qǐng)參見:http://infogrid.org/
HyperGraphDB是一套開源數(shù)據(jù)存儲(chǔ)機(jī)制,并依托于BerkeleyDB數(shù)據(jù)庫存在。HyperGraphDB的圖形模型被稱為直接式超圖形。從數(shù)學(xué)角度來講,超圖形允許其一條邊線指向兩個(gè)以上的節(jié)點(diǎn)。HyperGraphDB在此基礎(chǔ)上更進(jìn)一步,允許一條邊線指向其它邊線,如此一來HyperGraphDB在概括性方面就大大超過了其它圖形類數(shù)據(jù)庫。 更多內(nèi)容請(qǐng)參見:http://www.hypergraphdb.org/index
微軟不久之前才剛剛攜Trinity首個(gè)發(fā)布版本V0.1(只允許企業(yè)內(nèi)網(wǎng)接入)加入角逐。根據(jù)介紹,Trinity是一款基于內(nèi)存的圖形存儲(chǔ)機(jī)制,且具備豐富的數(shù)據(jù)庫功能,其中包括高并行性聯(lián)機(jī)查詢處理、ACI事務(wù)支持等等。在圖形處理方面,Trinity只為用戶提供了C# API。 更多內(nèi)容請(qǐng)參見:http://research.microsoft.com/en-us/projects/trinity/
AllegroGraph是一款老牌圖形類數(shù)據(jù)庫了,據(jù)稱其負(fù)載“數(shù)十億RDF(即資源描述框架)三元組仍可保持高性能”。盡管RDF三元組可以作為邊線來處理,但AllegroGraph的原本設(shè)計(jì)意圖是創(chuàng)建以RDF為中心的語義網(wǎng)絡(luò)應(yīng)用程序,并支持SPARQL、RDFS++以及Prolog等由包括Java程序在內(nèi)的各類客戶應(yīng)用推衍得出的程序。AllegroGraph RDFStore免費(fèi)版本支持最多5000萬個(gè)三元組。 更多內(nèi)容請(qǐng)參見:http://allegrograph.org/agraph/allegrograph/
哪款數(shù)據(jù)庫能夠勝出?哈哈,還是老答案,“取決于實(shí)際需求”。盡管對(duì)具備不同特點(diǎn)的產(chǎn)品進(jìn)行排名總會(huì)惹來激烈的辯論,但有時(shí)我們還是需要做出這個(gè)“艱難的決定”:
- 如果大家需要存儲(chǔ)RDF三元組,那么AllegroGraph是首選;
- 處理屬性圖,Neo4J與DEX是當(dāng)仁不讓的利器;
- 處理超圖形,HyperGraphDB堪稱行家。