一、圖數據庫
優點
1、圖數據庫可以很高效的插入大量數據。圖數據庫面向的應用領域數據量可能都比較大,比如知識圖譜、社交關系、風控關系等,總數據量級別一般在億或十億以上,有的甚至達到百億邊。mysql不做分表分庫的情況下插入百萬數據基本就慢到不行,圖數據庫基本能勝任億級以上的數據,比如neo4j、titan(janus)、hugegraph等圖數據庫,持續插入十億級的數據基本還能保持在一個較高的速度。
2、圖數據庫可以很高效的查詢關聯數據。傳統關系型數據庫不擅長做關聯查詢,特別是多層關聯(比如查我的好友的好友有哪些人),因為一般來說都需要做表連接,表連接是一個很昂貴的操作,涉及到大量的IO操作及內存消耗。圖數據庫對關聯查詢一般都進行針對性的優化,比如存儲模型上、數據結構、查詢算法等,防止局部數據的查詢引發全部數據的讀取。
3、圖數據庫提供了針對圖檢索的查詢語言,比如Gremlin、Cypher等圖數據庫語言。圖查詢語言大大方便了關聯分析業務的持續開發,傳統方案在需求變更時往往要修改數據存儲模型、修改復雜的查詢腳本,圖數據庫已經把業務表達抽象好了。
選擇
實際上開源的、流行的圖數據庫就只有以下幾種:
Neo4jOrientDBArangoDBJanusGraphDgraphNeo4j就不說了,基本是圖數據庫這塊的領跑者,但實話實說,費用也不低,因此需要慎重考慮,如果是土豪,當我沒說。
OrientDB和ArangoDB都是老牌的圖數據庫了,正因為早,所以呢,框架和架構有點老,因為是從單機版拓展而來的,對于集群和分布式支持的不是那么舒服。但瑕不掩瑜。
JanusGraph和Dgraph是比較新的,對分布式和集群支持還行,費用也不高。
另外,特別提一下:TigerGraph,是最貼合中國國情的圖數據庫系統,目前在國內用的還不錯。
延伸閱讀:
二、圖數據庫主要特點
存儲計算分離
對于 Nebula Graph 來講,有這么幾個技術特點:名列前茅個就是采用了存儲計算分離的架構。這樣架構主要的考慮其實前面幾個 Talk大家都已經討論了很多,主要好處就是為了上云或者說 彈性 , 方便單獨擴容 。上午的 Talk:HBase on Cloud 也有提到,業務水位總是很難預測的,一段時間存儲不夠了,有些時候計算不夠了。在云上或者使用容器技術,計算存儲分離的架構運維起來會比較方便,成本也更好控制。大家使用 HBase 那么久,這方面的感觸肯定很多。
查詢語言 nGQL
Nebula Graph 的第二個技術特點是它的查詢語言,我們稱為 nGQL,比較接近 SQL。少數大一點的語法差異就是 不用嵌套 (embedding)。大家都知道嵌套的 SQL,讀起來是非常痛苦的,要從里向外讀。
支持多種后端存儲
第三個特點就是 Nebula Graph 支持多種后端存儲,除了原生的引擎外,也支持 HBase。因為很多用戶,對 HBase 已經相當熟悉了,并不希望多一套存儲架構。從架構上來說,Nebula Graph 是完全對等的分布式系統。
計算下推
和 HBase 的 CoProcessor 一樣,Nebula Graph 支持數據計算下推。數據過濾,包括一些簡單的聚合運算,能夠在存儲層就做掉,這樣對于性能來講能提升會非常大。