圖數據庫選型比較:Neo4j、JanusGraph、HugeGraph

圖數據庫(Graph Database)是一種以圖結構進行存儲和查詢的數據庫。本文總結了圖數據庫選型的各類因素,並對比了3個主流開源圖數據庫:Neo4j、JanusGraph、HugeGraph。Neo4j是老牌的圖數據庫,JanusGraph是非常成功的開源圖數據庫TitanDB的Fork版(TitanDB已經不維護了),HugeGraph是百度開源的圖數據庫。下面表格是具體的對比內容,共比較了30多個指標,包括生態、功能、性能、工具鏈等維度,分享出來給大家作爲參考:

對比點 Neo4j JanusGraph HugeGraph
品牌知名度 最高 國際知名度一般,國內知名度高
開源生態 社區版開源,但較多限制,商業版閉源 開源,兼容Apache Tinkerpop生態,主要由IBM提供雲上服務 開源,兼容Apache Tinkerpop生態,由百度領頭,提供本土化技術與服務
圖查詢語言 Cypher Gremlin Gremlin
適用場景偏向 人工智能、欺詐檢測、知識圖譜等場景 雲服務商、具備技術能力深厚的廠商 互聯網大規模數據場景,網絡安全、金融風控、廣告推薦、知識圖譜等
支持數據規模 社區版十億級 百億級以上 千億級以上
大規模數據寫入性能 在線導入速度慢,脫機導入速度較快 較慢 在線導入速度快,支持覆蓋寫
大規模數據查詢性能 較快,性能抖動較嚴重 快,較穩定
功能完善程度 最完善 完善 完善
Feature迭代速度 趨於完善,新功能上線較慢 Fork自Titan,主要提供後端存儲的版本兼容適配,基本很少上線新Feature 百度自研,2016年項目啓動,開源社區新功能迭代更新快速
開放及可擴展性 無法擴展 可擴展,不過代碼複雜導致難度較大,內置支持4種後端存儲:HBase、Cassandra、Bigtable、Berkeley 可擴展,插件化機制擴展容易,內置支持6種以上後端存儲:RocksDB、Cassandra、HBase、ScyllaDB、MySQL、PostgreSQL等
數據導入工具 支持CSV在線導入,速度在1萬/秒內;支持neo4j-import脫機導入,速度在10萬/秒級別,只能用於初始化導入 未提供支持 支持在線導入,速度在10萬/秒級別,支持格式豐富:CSV、TXT、Json,支持從HDFS導入併兼任其各類壓縮格式,支持從傳統關係型數據庫導入,包括MySQL、Oracle、PostgreSQL、SQL-Server等,支持從消息隊列導入
數據備份恢復 支持脫機備份與恢復,需停機狀態,商業版支持在線增量備份與脫機恢復 未提供支持,需要用戶手動寫程序 支持在線遠程備份,支持在線遠程恢復
數據增量備份 商業版支持,且支持備份數據加密 不支持 不支持
API與客戶端 支持HTTP API,支持Java、C#、JS語言版本的Client 支持HTTP API或WebSocket,支持Java、Python、C#、JS語言版本的Client 支持HTTP RESTful API,原生僅支持Java語言Client;支持Gremlin API,如果對外暴露Gremlin-Server後可支持Java、Python、C#、JS語言版本的Client
可視化界面 支持,功能豐富 不支持,需要用戶集成第三方界面 支持,功能豐富,支持可視化的數據建模、導入、分析等
內置常用圖算法 提供安裝算法包,提供了豐富的基本圖算法,包括路徑搜索、相似性、中心性、社區檢測、鏈接預測等類別的算法 不支持 內置提供了基本的圖算法,包括路徑搜索、協同推薦、中心性、社區發現等類別的算法
支持圖計算平臺集成 未提供支持 支持Spark GraphX、Giraph等 支持Spark GraphX
基礎功能:屬性圖的增刪該查、持久化存儲、元數據、事務、緩存、查詢優化、增量更新圖 支持 支持 支持
ACID事務 支持 部分支持,根據後端存儲而定,Berkeley後端可完整支持事務,Cassandra後端支持原子性提交事務,HBase後端僅支持單行原子性理解,可能導致多行數之間據不一致 部分支持,根據後端存儲而定,MySQL、PostgreSQL後端可完整支持事務,RocksDB、Cassandra後端支持原子性提交事務,HBase後端僅支持單行原子性;保證最終一致性
Schema約束 商業版支持,包括屬性非空、唯一性等約束,同時也支持Schema-Free 支持,同時也支持Schema-Free 支持,包括模式校驗、屬性非空、唯一性等約束,不允許Schema-Free
屬性索引 支持簡單索引和複合索引,支持全文索引,依賴第三方Lucene庫 支持複合索引和混合索引,複合索引允許精確匹配查詢,混合索引支持範圍查詢、全文檢索和空間檢索,依賴第三方系統ES或Solr 支持二級索引、範圍索引、聯合索引、全文索引,允許精確匹配查詢、範圍查詢、全文檢索等,均爲原生實現不依賴第三方系統,不支持空間檢索
圖存儲類型 本地存儲 非本地存儲,支持分佈式存儲 非本地存儲,支持分佈式存儲
圖分區 不支持 支持 支持
超級點問題 超級點的鄰接邊查詢慢,十字鏈表存儲結構難以加速部分邊的查詢 通過Vertex-Centric索引可緩解 通過Vertex-Centric索引可緩解,支持全量獲取數據
多圖實例 版本4.0支持 支持 支持
主鍵ID、自定義ID 不支持 不支持主鍵ID,有限制的支持自定義Long ID,不過會導致數據不一致 支持
頂點或邊數據的TTL 不支持 支持,可精細到頂點屬性粒度 支持
用戶認證與權限控制 商業版支持 支持用戶認證 支持用戶認證、支持基於用戶角色的權限控制
高危查詢語句限制 Cypher無關 不支持Gremlin高危語句限制 支持,可限制用戶執行高危Gremlin語句,如禁止訪問本地文件、退出進程、打開Socket連接等高危操作
運行中語句跟蹤 商業版支持,包括:列出正在運行的查詢語句、中斷正在運行的查詢 不支持 同步Gremlin查詢不支持跟蹤,異步Gremlin查詢支持狀態跟蹤和任務取消
LDAP集成 商業版支持 未提供支持 未提供支持,可擴展插件
高可用HA 商業版支持 未提供支持 商業版支持
監控 商業版支持 支持Metrics監控 支持監控接口

參考:

  • https://neo4j.com/docs/operations-manual/current/introduction/

  • https://docs.janusgraph.org/

  • https://hugegraph.github.io/hugegraph-doc/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章