1 圖數據庫排名
圖數據庫排名:https://db-engines.com/en/ranking/graph+dbms

2 圖數據庫比較表格
初次release | 2007 | 2010 | 2012 | 2017 | 2018 | 2016 | 2017 |
是否開源 | 社區版開源 | 開源版限制數據庫規模 | 開源 | 開源 | 開源 | 開源 | 閉源 |
是否收費 | 企業版收費 | webUI管理模塊收費 | 企業版收費 | 免費 | 免費 | 免費 | 收費 |
數據模型 | graph | doc/graph/kv | doc/graph/kv | graph | graph | graph | graph |
實施語言 | Java/Scala | Java | C/C++/JavaScript | Java | Java | Go | C++ |
SQL | 不支持 | 類SQL | 不支持 | 不支持 | 不支持 | 不支持 | 類SQL |
查詢語言 | cypher | 類SQL | AQL | gremlin | gremlin | GraphQL | GSQL |
是否支持在線備份 | 社區版不支持 | 主主備份 | 主從備份 | 后端框架支持 | 后端框架支持 | 支持 | GBAR支持 |
存儲系統 | 原生 | 原生 | RockDB |
Cassanda
Hbase
|
Cassanda
Hbase
|
原生 | 原生 |
分布式 | 企業版支持 | 后期支持 | 后期支持 | 原生支持 | 原生支持 | 原生支持 | 支持 |
應用場景 | 人工智能、欺詐檢測、知識圖譜等場景 | 知識圖譜等 | 知識圖譜等 | 雲服務商、具備技術能力深厚的廠商 | 互聯網大規模數據場景,網絡安全、金融風控、廣告推薦、知識圖譜等 | 行業圖譜,社交網絡等 |
實時欺詐檢測等
|
相關文檔 |
非常多
|
多
|
多 | 少 | 少 | 少 | 中 |
文檔地址 | https://neo4j.com/docs/ | http://orientdb.com/docs/last/ | https://www.arangodb.com/documentation/ | http://www.janusgraph.cn/ | https://hugegraph.github.io/hugegraph-doc/ | https://dgraph.io/docs/ | http://docs.tigergraph.com.cn/ |
3 各種圖數據庫屬性
3.1 Neo4j(主流)
- 歷史悠久且長期處於圖數據庫領域的主力地位,其功能強大,性能也不錯,單節點的服務器可承載上億級的節點和關系。社區版最多支持 320 億個節點、320 億個關系和 640 億個屬性。
- 優點:Neo4j有自己的后端存儲,不必如同JanusGraph等一樣還要依賴另外的數據庫存儲。 Neo4j在每個節點中存儲了每個邊的指針,因而遍歷時效率相當高。
- 缺點:企業版付費。開源的社區版本只支持單機,不支持分布式。社區版只能部署成單實例,企業版可以部署成高可用集群,從而可以解決高並發量的問題;不能做集群,單個實例故障時影響系統正常運行。社區版只支持冷備份,即需要停止服務后才能進行備份。
3.2 OrientDB(不推薦)
- OrientDB是第二代分布式圖數據庫,以混合數據模型為特點,它包括可以在最復雜的場景中使用復制和分片,並以Apache2許可證提供開放源代碼。ORIENTDB工作速度快,能夠在最常見的硬件上每秒存儲220000條記錄,並且支持無模式、完整和混合模式,可以使用SQL作為查詢語言之一。
- 優點:ORIENTDB使用身份驗證、密碼和靜態數據加密等方式為所有機密數據提供安全保護。OrientDB為確保更好的性能,最近引入了節點的快速重新同步,即使處理數十億條記錄,遍歷速度也不會受到影響。OrientDB 是分布式多模型數據庫,支持圖數據模型,支持 sharding 機制,大規模查詢情況下性能比較好;
- 缺點:開源版功能部分欠缺。起步較早,最初的時候都是一個單機的圖數據庫,然后隨着用戶數據量的不斷增加,后期增加了分布式模式,支持集群和副本,但是由於后加的功能,其分布式支持的不是很好。
3.3 ArangoDB(不推薦)
- Arangodb以一種非常創造性和靈活的方式安排數據。數據可以存儲為鍵或值對、圖或文檔,所有這些都可以通過一種查詢語言訪問。為了更安全的選擇,查詢中可以使用聲明性模型。用戶可以在一個查詢中組合不同的模型及其特性的原因是,ArangoDB對所有數據模型都使用相同的核心和相同的查詢語言。
-
優點:Arangodb獨特的特性是它能夠在一個查詢中組合不同的數據模型。這使得其展示方式令人印象深刻且美觀。它比其他數據庫具有更靈活的擴展性、增強的容錯性、大容量的存儲能力和更低的成本。arangodb最突出的特性是foxx,這是一個用於編寫數據庫中以數據為中心的javascript框架。
- 缺點:它們起步比較早,最初的時候都是一個單機的圖數據庫,然后隨着用戶數據量的不斷增加,后期增加了分布式模式,支持集群和副本,但是經過調研發現,可能是由於后加的功能,他們的分布式支持的不是很好。
3.4 JanusGraph(推薦)
- JanusGraph是可擴展的圖數據庫,底層依賴於大數據組件,對分布式支持的非常好,也都是完全的開源免費,存儲數據模型也都是專為圖數據而設計。JanusGraph基於Titan發展而來,包含其所有功能,采用Tikerpop的Gremlin圖查詢語言,有單獨的后端存儲,支持Cassandra/HBase/BerkeleyDB等做存儲,支持Solr/ES/Lucence等做圖索引 支持Spark GraphX/Giraph等圖分析計算引擎及Hadoop分布式計算框架 原生支持集成了Tinkerpop系列組件:Gremlin查詢語言,Gremlin-Server及Gremlin applications。 采用很友好的Apache2.0協議,支持對接可視化組件如Cytoscape,Gephi plugin for Apache TinkerPop,Graphexp,KeyLines by Cambridge Intelligence,Linkurious
-
優點:JanusGraph的存儲系統依賴於像Cassandra、HBase(HBase又依賴於Zookeeper和HDFS)、BerkelyDB等等這樣的存儲系統,索引系統依賴於Elasticsearch、Solr、Lucene等等;也基於這些原因,它和大數據生態結合的非常好,可以很好地和Spark結合做一些大型的圖計算。所以可以很好的和spark的大數據平台進行結合,並且能夠支持實時圖遍歷和分析查詢
- 缺點:其存儲需要依賴於其他存儲系統,JanusGraph使用HBase作為底層存儲系統,而HBase又依賴於Zookeeper和HDFS,另外JanusGraph的索引又依賴於ES,所以想要搭建一套完整的JanusGraph,需要同時搭建維護好幾套系統,維護成本非常大。另一問題就是穩定性,根據經驗來看,系統越復雜,依賴系統越多,整體可控性就越差,穩定性風險就越大。並且三方的一些工具也存在一些問題,所以要用肯定要基於底層(讀寫)進行性能優化。
3.5 HugeGraph(推薦)
- 百度基於JanusGraph開源了HugeGraph,增加了很多特性,提高了易用性及性能,增加了一些圖分析算法。實現了Apache ThinkerPop 3框架,支持Gremlin圖查詢語言。HugeGraph支持多用戶並行操作,輸入Gremlin查詢語句,並及時得到圖查詢結果。也可以再用戶程序中調用hugeGraph API進行圖分析或查詢。
- 優點:HugeGraph可以與Spark GraphX進行鏈接,借助Spark GraphX圖分析算法(如PageRank、Connected Components、Triangle Count等)對HugeGraph的數據進行分析挖掘。HugeGraph還針對圖數據庫的高頻應用(例如:ShortestPath、k-out、k-neighbor等)做了特定性能優化,並且為用戶提供更為高效的使用體驗
- 缺點:基於JanusGraph開源,存在和JanusGraph同樣的問題,維護成本高。
3.6 Dgraph(推薦)
-
dgraph 是基於 golang 開發的開源的分布式圖數據庫。誕生時間不長, 發展卻很迅速,從設計之初就考慮了分布式和擴展性,所以對分布式支持的非常好。
-
優點:Dgraph 不依賴與任何第三方系統,只有一個 Dgraph 可執行文件,只需在啟動時通過參數指定是 Zero(管理節點)還是 Alpha(數據節點)即可,Dgraph 會自動組成集群,運維部署非常簡單。Dgraph維護成本低很多。Dgraph 和 JanusGraph 性能差不多,但復雜查詢下,Dgraph 性能遠高於 JanusGraph。同時,Dgraph 的寫入性能也整體高於 janusGraph。
-
缺點:比如還不支持多重邊、一個集群只支持一個圖、與大數據生態兼容不足等,這些都需要靠后期不斷完善。
3.7 TigerGraph(不推薦)
- TigerGraph是一個目前業界先進的企業級圖數據庫。系統完全閉源。部分查詢算法開源。分為開發版和企業版。開發版免費,但功能受限,比如單點只能構建一個圖。企業面收費,支持大規模集群,頂點表數量不受限制。
- 優點:TigerGraph可以通過GSQL實現類存儲過程的算法封裝,而且已經實現了很多圖算法,但是語法結構要比Neo4j復雜的多。
- 缺點:付費圖數據庫。Neo4j按照cpu收費,TigerGraph按照數據容量(G)來收費,費用較貴。
4 選型結論
- 推薦一:Neo4j。使用起來相當的方便,入門門檻很低,基本上拿來就能用,並且有很好的社區支持,三方庫、第三方工具的支持,社區版本也可以支撐到不錯的數據量(億級沒問題)。但是如果想挖掘海量數據,需要考慮的是海量數據的存儲及計算,分布式存儲是首選。開源版Neo4j並不支持分布式。
- 推薦二:Dgraph。Dgraph 除了運維成本低之外,整體讀寫性能也優於JanusGraph。缺點是文檔社區支持較差。
- 推薦三:JanusGraph或HugeGraph。JanusGraph社區支持更全,復雜計算性能優於HugeGraph。
參考資料
[1] 貝殼找房—【圖數據庫系列】之 JanusGraph VS Dgraph:貝殼分布式圖數據庫技術選型之路 https://www.6aiq.com/article/1586913224622
[2] 百度安全開源大規模圖數據庫HugeGraph https://zhuanlan.zhihu.com/p/41240429
[3] “圖”叫好不叫座?TigerGraph讓人人都能圖分析
https://baijiahao.baidu.com/s?id=1675240460582634548&wfr=spider&for=pc
[4] 「JanusGraph與HugeGraph」圖形數據庫 - 技術選型-功能對比 https://blog.csdn.net/lovebyz/article/details/88800363