一、圖數(shù)據(jù)庫
圖數(shù)據(jù)庫是基于圖模型的數(shù)據(jù)庫。相比較于關(guān)系型數(shù)據(jù)庫,圖數(shù)據(jù)庫是真正注重“關(guān)系”的數(shù)據(jù)庫。
圖數(shù)據(jù)庫的主要職能是管理圖數(shù)據(jù),因此需要支持高效的對頂點/邊的查詢與更新;為了方便用戶的使用,通常還需要增加對事務(wù)(transaction)的支持,從而保證并發(fā)操作下的正常運(yùn)作。
圖數(shù)據(jù)庫的功能是傳統(tǒng)關(guān)系型數(shù)據(jù)庫的一個拓展,相比較關(guān)系型數(shù)據(jù)庫僅支持表結(jié)構(gòu),圖數(shù)據(jù)支持的圖結(jié)構(gòu)更為靈活。圖數(shù)據(jù)庫在基于圖的數(shù)據(jù)增加、刪除、查詢、修改等方面做了不同于其他數(shù)據(jù)庫的設(shè)計。在圖數(shù)據(jù)的操作抽象上,采用基于頂點的視角,比如頂點通過其所有出邊訪問其鄰接頂點,這一類的操作也是圖數(shù)據(jù)庫系統(tǒng)設(shè)計的核心。
面對海量數(shù)據(jù)的存儲和處理問題,傳統(tǒng)的關(guān)系數(shù)據(jù)庫已經(jīng)無法滿足大部分的日常數(shù)據(jù)儲存的需求。圖數(shù)據(jù)庫技術(shù)可以將關(guān)系信息儲存為實體、靈活拓展數(shù)據(jù)模型。由于提供了對關(guān)聯(lián)數(shù)據(jù)最直接的表達(dá),以及圖模型對異構(gòu)數(shù)據(jù)天然的包容力。未來,圖數(shù)據(jù)庫技術(shù)必將成為最為熱點的技術(shù)之一,為企業(yè)存儲和分析大規(guī)模圖數(shù)據(jù)提供強(qiáng)有力的支持。
延伸閱讀:
二、圖數(shù)據(jù)庫優(yōu)點有什么
使用圖(或者網(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ù)的讀取。