7種圖數據庫簡單比較


 

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協議,支持對接可視化組件如CytoscapeGephi plugin for Apache TinkerPop,GraphexpKeyLines by Cambridge IntelligenceLinkurious
  • 優點: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
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM