圖資料庫作為新興NoSQL資料庫的代表,可以分為四種類型。圖資料庫應用廣泛,無論是網際網路行業還是傳統的金融、地產、醫療等行業,都可以通過圖資料庫的應用進一步提升企業效率。數易軒致力於圖資料庫技術服務,為您介紹圖資料庫的四個分類。
01 圖存儲和圖處理
通常,我們可以根據圖資料庫底層存儲模式和處理方式兩個維度對產品進行分類,所以在了解圖資料庫分類之前,首先解釋一下這兩個維度的含義。
1 存儲方式維度
原生(Native)圖存儲:數據存儲模式專門為存儲和處理圖而設計優化,可支持各類圖算法的快速遍歷。
非原生(Non-Native)圖存儲:採用關係資料庫、面向對象資料庫或其它通用數據存儲策略存儲數據,未專門優化存儲方式。
2 處理方式維度
原生圖處理:採用免索引鄰接(index-free adjacency)機制,通過指針專門保存節點之間的指向關係,每個節點都會維護對相鄰節點的引用,表現為相鄰節點的微索引,而非全局索引,因此圖遍歷只和搜索圖的數量有關,與整體規模無關,是高性能圖遍歷、查詢和寫入的關鍵。
非原生圖處理:不採用免索引鄰接機制保存節點之間的關係。
02四類圖資料庫
基於底層存儲模式和處理方式兩個維度,我們可以將圖資料庫產品劃分為四個分類。
2.1 存儲與處理均為原生
針對圖的存儲和管理特點,這類圖資料庫的數據結構經過專門的設計和優化;通常採用免索引鄰接機制,邏輯上的關聯節點在資料庫中存在物理的「指針」指向彼此,從而使數據讀寫和索引性能顯著提升。能充分體現圖資料庫實時處理關係的優越性,可謂之「真」圖資料庫。這種圖資料庫也是主流圖資料庫廠商所採用的技術,代表產品包括Neo4j、OrientDB、TigerGraph等,應用廣泛。
2.2 存儲原生處理非原生
此種圖資料庫通常不是採用屬性圖數據模型,而是採用RDF三元組或者超圖格式存儲圖數據,主要用於學術研究,面向語義分析、機器學習等專門領域。代表產品有AllegroGraph等。
AllegroGraph採用了文檔和圖技術相結合的混合數據模型,主要用於處理以RDF為中心的語義網應用,在讀寫和查詢RDF三元組數據時具有較高性能。
2.3 存儲非原生處理原生
此類圖資料庫採用HBase、Bigtable、Cassandra、關係型資料庫等方式存儲圖數據,通過在內存中將數據轉換為圖結構實現圖遍歷等算法,通常情況下,其多度查詢時的性能劣於存儲與處理均原生的資料庫,大多數開源圖資料庫均屬於此種類型。由於Hadoop技術的流行,採用了Hbase等分布式存儲的圖資料庫的學習成本相對較低,這是其在開源產品中更為常見的一個原因。同時,由於利用了分布式存儲方式,其存儲容量比較容易實現水平擴展,但由於其圖計算引擎本身並沒有實現分布式,因此計算性能仍難以通過資源水平擴展實現提升。代表產品有JanusGraph。
JanusGraph源自Titan圖資料庫,是一種採用Java開發的開源分布式圖資料庫,支持ACID和最終一致性,可以用於OLTP。JanusGraph使用HBase、 Cassandra、或者Oracle BDB作為數據存儲,支持與Apache TinkerPop進行原生集成,採用Gremlin圖查詢語言作為其標準語法。其模塊化架構使得它可以廣泛地與各類存儲、索引和客戶端技術交互操作,例如與Spark、Giraph、Hadoop等大數據平臺ETL集成,通過ElasticSearch、Solr、Lucene進行全文檢索,可以通過Cytoscape、Graphexp以及TinkerPop的Gephi插件等工具實現圖數據可視化等。
2.4 存儲與處理均非原生
此類圖資料庫通常更類似於在應用層面實現了圖算法的應用系統,例如FlockDB,是Twitter自研的一類客戶關係管理系統,對於其是否屬於真正的圖資料庫尚有爭議。其採用MySQL存儲數據,僅支持一度關係查詢,不對圖結構進行遍歷。目前版本更新處於停滯狀態,應用範圍局限於Twitter。
目前,各種圖資料庫產品百花齊放,也因為數據存儲和處理的方式不同,不同類型的圖資料庫產品特點迥異。所以,在實際工作和研究中,要結合自身實際情況,選擇最適合自己的圖資料庫。