一、類似Neo4j這樣的圖數(shù)據(jù)庫(kù)在國(guó)內(nèi)會(huì)興起么
在NoSQL領(lǐng)域,從最近十年的表現(xiàn)來(lái)看圖數(shù)據(jù)庫(kù)已經(jīng)成為關(guān)注度較高,發(fā)展趨勢(shì)最明顯的數(shù)據(jù)庫(kù)類型。從圖數(shù)據(jù)庫(kù)的優(yōu)勢(shì)和趨勢(shì)上來(lái)看前景很好,特別是圖數(shù)據(jù)庫(kù)在處理大數(shù)據(jù)方面的優(yōu)勢(shì),會(huì)讓圖數(shù)據(jù)庫(kù)越來(lái)越像關(guān)系型數(shù)據(jù)庫(kù)一樣流行。
近年來(lái)圖數(shù)據(jù)庫(kù)的幾個(gè)典型應(yīng)用場(chǎng)景:知識(shí)圖譜、金融風(fēng)控、社交關(guān)系等場(chǎng)景也使得圖數(shù)據(jù)庫(kù)這個(gè)新技術(shù)與AI相結(jié)合,在人工智能領(lǐng)域發(fā)揮重要基礎(chǔ)作用。相信強(qiáng)人工智能時(shí)代圖數(shù)據(jù)庫(kù)技術(shù)更是不可或缺,因?yàn)楦兄悄苤系恼J(rèn)知智能,比如記憶提取、關(guān)聯(lián)推理、歸納、探索、聯(lián)想等都是依賴于記憶點(diǎn)構(gòu)建起來(lái)的復(fù)雜網(wǎng)絡(luò)之上的決策過(guò)程。
圖數(shù)據(jù)庫(kù)技術(shù)已經(jīng)在國(guó)內(nèi)興起了,不僅有越來(lái)越多的使用者,也出現(xiàn)越來(lái)越多的開(kāi)發(fā)者。近幾年來(lái)國(guó)內(nèi)也有一些公司在研發(fā)圖數(shù)據(jù)庫(kù),包括百度、阿里、華為等。
下面是從圖數(shù)據(jù)庫(kù)中查詢出的電影關(guān)系圖譜:
圖數(shù)據(jù)庫(kù)技術(shù)的興起有其自身的原因:
使用圖(或者網(wǎng))的方式來(lái)表達(dá)現(xiàn)實(shí)世界的關(guān)系很直接、自然,易于建模。比如某人喜歡看某電影,就可以建立一條邊連接這個(gè)人和這部電影,這條邊就叫做“喜歡”邊,同時(shí)這個(gè)人還可以有其它邊,比如“朋友”邊、“同學(xué)”邊等,同樣這個(gè)電影也可以有其它邊,比如“導(dǎo)演”邊、“主演”邊等,這樣就構(gòu)建了自然的關(guān)系網(wǎng)。圖數(shù)據(jù)庫(kù)可以很高效的插入大量數(shù)據(jù)。圖數(shù)據(jù)庫(kù)面向的應(yīng)用領(lǐng)域數(shù)據(jù)量可能都比較大,比如知識(shí)圖譜、社交關(guān)系、風(fēng)控關(guān)系等,總數(shù)據(jù)量級(jí)別一般在億或十億以上,有的甚至達(dá)到百億邊。mysql不做分表分庫(kù)的情況下插入百萬(wàn)數(shù)據(jù)基本就慢到不行,圖數(shù)據(jù)庫(kù)基本能勝任億級(jí)以上的數(shù)據(jù),比如neo4j、titan(janus)、hugegraph等圖數(shù)據(jù)庫(kù),持續(xù)插入十億級(jí)的數(shù)據(jù)基本還能保持在一個(gè)較高的速度。圖數(shù)據(jù)庫(kù)可以很高效的查詢關(guān)聯(lián)數(shù)據(jù)。傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)不擅長(zhǎng)做關(guān)聯(lián)查詢,特別是多層關(guān)聯(lián)(比如查我的好友的好友有哪些人),因?yàn)橐话銇?lái)說(shuō)都需要做表連接,表連接是一個(gè)很昂貴的操作,涉及到大量的IO操作及內(nèi)存消耗。圖數(shù)據(jù)庫(kù)對(duì)關(guān)聯(lián)查詢一般都進(jìn)行針對(duì)性的優(yōu)化,比如存儲(chǔ)模型上、數(shù)據(jù)結(jié)構(gòu)、查詢算法等,防止局部數(shù)據(jù)的查詢引發(fā)全部數(shù)據(jù)的讀取。圖數(shù)據(jù)庫(kù)提供了針對(duì)圖檢索的查詢語(yǔ)言,比如Gremlin、Cypher等圖數(shù)據(jù)庫(kù)語(yǔ)言。圖查詢語(yǔ)言大大方便了關(guān)聯(lián)分析業(yè)務(wù)的持續(xù)開(kāi)發(fā),傳統(tǒng)方案在需求變更時(shí)往往要修改數(shù)據(jù)存儲(chǔ)模型、修改復(fù)雜的查詢腳本,圖數(shù)據(jù)庫(kù)已經(jīng)把業(yè)務(wù)表達(dá)抽象好了,比如上面的2層好友查詢,Gremlin實(shí)現(xiàn)為g.V(me).out(‘friend’).out(‘friend’),如果需要改為2層同學(xué)查詢,那調(diào)整一下把好友換為同學(xué)即可g.V(me).out(‘classmate’).out(‘classmate’)。圖數(shù)據(jù)庫(kù)提供了專業(yè)的分析算法、工具。比如ShortestPath、PageRank、PersonalRank、Louvain等等,不少圖數(shù)據(jù)庫(kù)還提供了數(shù)據(jù)批量導(dǎo)入工具,提供了可視化的圖顯示界面,使得數(shù)據(jù)的分析結(jié)果更加直觀展示出來(lái)。延伸閱讀;
二、圖數(shù)據(jù)庫(kù)相對(duì)于傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)
(1)傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)為每一類實(shí)體建表,但沒(méi)有對(duì)關(guān)系進(jìn)行表示的機(jī)制。因此在更多實(shí)體引入之后,我們將需要越來(lái)越多的關(guān)聯(lián)表,從而使得基于關(guān)系型數(shù)據(jù)庫(kù)的解決方案繁瑣易錯(cuò)。
(2)圖數(shù)據(jù)庫(kù)由于其獨(dú)特的設(shè)計(jì),為關(guān)系和屬性的查詢提供了快速的解決方案。