組成
在一個圖形資料庫中,最主要的組成有兩種,結點集和連線結點的關係(有的也稱泡泡和箭頭)。結點集就是圖中一系列結點的集合,比較接近於關係資料庫中所最常使用的表,而關係則是圖形資料庫所特有的組成。
優勢
在需要表示多對多關係時,我們常常需要創建一個關聯表來記錄不同實體的多對多關係,而且這些關聯表常常不用來記錄信息。如果兩個實體之間擁有多種關係,那么我們就需要在它們之間創建多個關聯表。而在一個圖形資料庫中,我們只需要標明兩者之間存在著不同的關係。如果希望在兩個結點集間建立雙向關係,我們就需要為每個方向定義一個關係。
也就是說,相對於關係資料庫中的各種關聯表,圖形資料庫中的關係可以通過關係能夠包含屬性這一功能來提供更為豐富的關係展現方式。因此相較於關係型資料庫,圖形資料庫的用戶在對事物進行抽象時將擁有一個額外的武器,那就是豐富的關係。
套用
在許多情報和執法程式中,重要的是要尋找一個模式的事件。這些事件中的任何一個都可能看起來是無害的,但他們觀點以及他們是怎樣直接或間接相關的,概念是不一樣的。再例如社會網路分析(SNA)對許多供應商的消費品非常感興趣,他是構建人與人之間的關係圖。Facebook是一個社交網路,它可以與家人和朋友之間保持聯繫。圖形資料庫能很好地顯示出這個人在他/她的朋友圈中是否有影響力,這群朋友是否有著共同的興趣愛好。
常見圖形資料庫
Neo4j
Neo4j是一個流行的圖形資料庫,它是開源的。最近,Neo4j的社區版已經由遵循AGPL許可協定轉向了遵循GPL許可協定。儘管如此,Neo4j的企業版依然使用AGPL許可。Neo4j基於Java實現,兼容ACID特性,也支持其他程式語言,如Ruby和Python。
FlockDB
FlockDB是Twitter為進行關係數據分析而構建的。FlockDB迄今為止還沒有穩定的版本,對於它是否是一個真正的圖形資料庫,尚有爭議。FlockDB和其它圖形資料庫(如Neo4j、OrientDB)的區別在於圖的遍歷,Twitter的數據模型不需要遍歷社交圖譜。儘管如此,由於FlockDB套用於Twitter這樣的大型站點,以及它相比其它圖形資料庫的簡潔性,仍然值得我們值得關注。
AllegroGrap
AllegroGrap是一個基於W3c標準的為資源描述框架構建的圖形資料庫。它為處理連結數據和Web語義而設計,支持SPARQL、RDFS++和Prolog。
AllegroGraph是Franz Lnz公司(Web語義產品提供商,旗艦產品是基於LISP的企業開發工具)的產品之一,Pfizer、Ford、Kodak、NASA和美國國防部都是該公司的客戶。
GraphDB
GraphDB是德國sones公司在.NET基礎上構建的。Sones公司於2007年成立,近年來陸續進行了幾輪融資。GraphDB社區版遵循AGPL v3許可協定,企業版是商業化的。GraphDB託管在Windows Azure平台上。
InfiniteGraph
InfiniteGraph基於Java實現,它的目標是構建“分散式的圖形資料庫”,已被美國國防部和美國中央情報局所採用。
除此之外,還有其他一些圖形資料庫,如OrientDB、InfoGrid和HypergraphDB。Ravel構建在開源的Pregel實現之上,微軟研究院的Trinity項目也是一個圖形資料庫項目。