做知識圖譜的一般需要用圖數據庫存儲及檢索,相對更加的直觀化。記得2年前做教育方向用到過Neo4j,速度的確是慢。目前比較流行的Neo4j、JanusGraph、TigerGraph等,JanusGraph是開源的,在騰訊和百度都有用。收集了一下幾種Graph數據庫的對比,從容量、性能、查詢能力、分析能力、開源生態等方面考慮:
1. 容量
目前是大數據時代,隨便一個公司都會有很多的數據產生,之前公司一個語音評測系統,每天都有3億條提交。這麼大的數據量,做分析和存儲都是需要考慮容量的。
- Neo4j:支持數據高可能的HA集羣,但不是分佈式存儲;
- TigerGraph:自稱是原生的並行圖;
- JanusGraph:可以接HBase及ScyllaDb等NoSQL作爲後端存儲,在存儲層面上是分佈式的,容量比較大;百度基於JanusGraph開源了HugeGraph,增加了很多特性,提高了易用性及性能,增加了一些圖分析算法
2. 性能
如果需要圖查詢及分析計算執行的比較快,一般需要關注底層架構,原生圖存儲是基於點和邊,計算中不需要過多的邏輯及物理層轉換。
- Neo4j:原生圖
- TigerGraph:原生圖
- JanusGraph:非原生圖
3. 查詢
圖數據庫要有點關係的檢索能力,比如兩點之間的所有路徑、最短路徑、多維度查詢等等都是必不可少的。差異性主要是性能。普通圖數據庫查詢3度及以上通常性能很低,而我們實際上經常要查6度關係,TigerGraph自己針對Twitter的大圖數據庫的測試報告性能很好,只有TigerGraph完成了6度關係查詢
4. 分析計算能力
圖數據庫如果僅具備存儲和查詢能力,則還需要依賴於外部的GraphX等計算引擎完成一些圖算法分析,在數據傳輸和圖表達上都存在這轉換浪費。TigerGraph可以通過GSQL實現類存儲過程的算法封裝,而且已經實現了很多圖算法,但是語法結構要比Neo4j複雜的多。
5. 開源生態
開源生態決定很多公司會不會採用或者進行改造。
- JanusGraph/HugeGraph:基於Apache協議開源,開放性好;
- Neo4j:社區開源,非商業免費,商業版支持HA集羣,並不是完全分佈式,使用最廣泛
- TigerGraph:不開源,開發者版支持單機單用戶單圖非商業免費,不支持DynamicSchemaChange等