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