干貨學(xué)習(xí)丨圖數(shù)據(jù)庫技術(shù)發(fā)展

▕??作者:楊明皓,英國謝菲爾德大學(xué)碩士畢業(yè)。原海航集團(tuán)大數(shù)據(jù)相關(guān)技術(shù)負(fù)責(zé)人狐赡,海南大數(shù)據(jù)產(chǎn)業(yè)聯(lián)盟專家,現(xiàn)任普適智能COO;擅長大數(shù)據(jù)領(lǐng)域以及關(guān)系網(wǎng)絡(luò)領(lǐng)域技術(shù)颖侄,有著豐富的銀行金融業(yè)項(xiàng)目實(shí)施經(jīng)驗(yàn)鸟雏,并成功落地了多個(gè)基于知識圖譜技術(shù)的項(xiàng)目。

導(dǎo)讀

上期提到關(guān)系網(wǎng)絡(luò)技術(shù)發(fā)展览祖,本文將詳細(xì)講述圖數(shù)據(jù)庫的技術(shù)發(fā)展孝鹊。

關(guān)系網(wǎng)絡(luò)的數(shù)據(jù)需要完成基本的圖結(jié)構(gòu)數(shù)據(jù)存儲,同時(shí)也要支持上層應(yīng)用對關(guān)系網(wǎng)絡(luò)中的數(shù)據(jù)進(jìn)行實(shí)時(shí)查詢展蒂,知識推理又活,離線大規(guī)模圖計(jì)算甚至是實(shí)時(shí)大規(guī)模圖計(jì)算等,所以專門針對關(guān)系網(wǎng)絡(luò)數(shù)據(jù)存儲做了優(yōu)化的圖數(shù)據(jù)庫成了關(guān)鍵的組件锰悼。目前工業(yè)界的圖數(shù)據(jù)庫基本都是基于帶標(biāo)簽的屬性圖結(jié)構(gòu)來設(shè)計(jì)的柳骄。

? 圖數(shù)據(jù)庫技術(shù)發(fā)展

1、圖數(shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫的區(qū)別

為什么要使用專門的圖數(shù)據(jù)庫來對關(guān)系網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行存儲箕般?這里必須提到圖數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫的區(qū)別耐薯。

關(guān)系型數(shù)據(jù)庫存儲的是一件客觀事實(shí)的描述,比如用戶購買了某件具體的商品丝里,客戶申請了一筆貸款曲初,它根據(jù)關(guān)系型數(shù)據(jù)庫的四范式設(shè)計(jì)原則構(gòu)建在關(guān)系模型之上。

關(guān)系型數(shù)據(jù)庫和圖數(shù)據(jù)庫的主要差異是數(shù)據(jù)存儲的方式杯聚,關(guān)系型數(shù)據(jù)天然就是表格式的,因此存儲在數(shù)據(jù)表的行和列中臼婆。數(shù)據(jù)表可以彼此關(guān)聯(lián)協(xié)作存儲,也很容易提取數(shù)據(jù),尤其在查找某個(gè)區(qū)間內(nèi)的數(shù)據(jù)組很有優(yōu)勢幌绍,但是卻無法清晰直觀地體現(xiàn)出數(shù)據(jù)之間包含的潛在關(guān)系颁褂。

關(guān)系型數(shù)據(jù)庫是以實(shí)體建模這一基礎(chǔ)理念設(shè)計(jì)的。實(shí)體之間的關(guān)系需要創(chuàng)建一個(gè)關(guān)聯(lián)表來維護(hù)纷捞,當(dāng)需要描述大量關(guān)系時(shí)痢虹,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫已經(jīng)不堪重負(fù);聯(lián)系確實(shí)存在于關(guān)系型數(shù)據(jù)庫自身的術(shù)語中主儡,但只出現(xiàn)在建模階段奖唯,作為連接表的手段,對于關(guān)聯(lián)關(guān)系卻什么都做不了糜值。所以圖數(shù)據(jù)庫經(jīng)過特別設(shè)計(jì)的數(shù)據(jù)存儲結(jié)構(gòu)丰捷,能加快實(shí)體之間的關(guān)系查詢,這就是圖數(shù)據(jù)庫的主要優(yōu)勢之一寂汇。

2病往、圖數(shù)據(jù)庫的發(fā)展

圖數(shù)據(jù)庫的發(fā)展主要有兩個(gè)階段。

第一個(gè)階段主要是解決關(guān)系網(wǎng)絡(luò)數(shù)據(jù)的存儲骄瓣,查詢和分析問題停巷,能支持上層應(yīng)用對關(guān)系網(wǎng)絡(luò)數(shù)據(jù)的OLTP業(yè)務(wù)需求以及離線大規(guī)模圖數(shù)據(jù)的OLAP業(yè)務(wù)需求。

第二階段的圖數(shù)據(jù)庫不光滿足OLTP業(yè)務(wù)和離線OLAP業(yè)務(wù),采用內(nèi)置的MPP計(jì)算引擎畔勤,實(shí)現(xiàn)實(shí)時(shí)大規(guī)模圖數(shù)據(jù)的OLAP業(yè)務(wù)蕾各。

DB-Engines網(wǎng)站2020年圖數(shù)據(jù)庫使用率排名

為了滿足關(guān)系網(wǎng)絡(luò)數(shù)據(jù)的存儲,查詢和大規(guī)模圖分析的性能庆揪,圖數(shù)據(jù)庫在其底層數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)上也盡量貼合關(guān)系數(shù)據(jù)的搜索習(xí)慣式曲,減少磁盤的I/O時(shí)間。傳統(tǒng)關(guān)系型數(shù)據(jù)庫的B+樹數(shù)據(jù)結(jié)構(gòu)適合范圍數(shù)據(jù)的檢索以及隨機(jī)數(shù)據(jù)讀取上有優(yōu)秀的性能缸榛,而對于關(guān)系數(shù)據(jù)的遍歷則顯得相形見絀了吝羞。

圖數(shù)據(jù)庫針對關(guān)系網(wǎng)絡(luò)的數(shù)據(jù)特點(diǎn),采用了免索引領(lǐng)接内颗,鄰接表钧排,點(diǎn)邊數(shù)據(jù)以KCV的形式組織等等方式存儲關(guān)系網(wǎng)絡(luò)數(shù)據(jù),其根本目的在于對鄰邊和鄰節(jié)點(diǎn)的快速查詢遍歷均澳,減少隨機(jī)讀寫的磁盤尋道時(shí)間卖氨,提升關(guān)系網(wǎng)絡(luò)數(shù)據(jù)的I/O性能。

原生圖數(shù)據(jù)庫不僅在數(shù)據(jù)存儲文件的組織形式上做了優(yōu)化负懦,在計(jì)算機(jī)物理存儲層面也充分利用內(nèi)存緩存來減少數(shù)據(jù)的讀取延遲甚至是提升寫入效率。

3柏腻、幾種典型圖數(shù)據(jù)庫的分析

NEO4J是最早在工業(yè)界大規(guī)模使用的圖數(shù)據(jù)庫纸厉,也是由NEO4J最早提出原生圖數(shù)據(jù)庫的概念,NEO4J認(rèn)為原生圖數(shù)據(jù)庫應(yīng)該具備原生圖存儲和免索引領(lǐng)接兩個(gè)特性五嫂。

原生圖存儲是指在存儲層面針對關(guān)系網(wǎng)絡(luò)數(shù)據(jù)的存儲和管理而設(shè)計(jì)優(yōu)化的颗品;而免索引領(lǐng)接就是上面提到的,在搜索鄰邊和鄰節(jié)點(diǎn)時(shí)減少磁盤尋道時(shí)間提升I/O性能沃缘,NEO4J主要通過固定存儲單元大小以及雙向鏈表的技術(shù)來實(shí)現(xiàn)躯枢。

同時(shí)NEO4J也是非分布式的數(shù)據(jù)存儲和處理的圖數(shù)據(jù)庫,因?yàn)镹EO4J認(rèn)為單機(jī)下沒有分布式的網(wǎng)絡(luò)I/O和聚合操作所帶來的時(shí)間損耗槐臀,再加上對磁盤锄蹂,內(nèi)存和CPU的優(yōu)化,查詢性能可以達(dá)到最優(yōu)水慨。

即使是NEO4J的集群模式得糜,也是數(shù)據(jù)副本拷貝的形式,如果理解NEO4J存儲結(jié)構(gòu)的話也不難明白為什么其單機(jī)性能最優(yōu)晰洒。Neo4J同時(shí)提供了社區(qū)版和商業(yè)版朝抖。

Neo4J存儲端數(shù)據(jù)結(jié)構(gòu)

ArangoDB是基于C++的多數(shù)據(jù)模型數(shù)據(jù)庫,支持Document, K-V, Graph等多種數(shù)據(jù)模型的存儲谍珊。

ArangoDB和Wikipedia社區(qū)都反對了NEO4J提出的原生圖數(shù)據(jù)的定義治宣,他們認(rèn)為原生圖數(shù)據(jù)庫應(yīng)該是使用具有點(diǎn),邊和屬性表示的圖數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲和語義查詢的數(shù)據(jù)庫,而與內(nèi)部的數(shù)據(jù)文件存儲形式無關(guān)侮邀,更重要的應(yīng)該在于數(shù)據(jù)模型和算法的使用坏怪。

ArangoDB采用基于HASH和鏈表的混合索引形式組織圖數(shù)據(jù),Arango將所有的邊數(shù)據(jù)都存儲在一張大的哈希表中豌拙,同時(shí)將每個(gè)節(jié)點(diǎn)關(guān)聯(lián)的所有鄰邊都存儲在一個(gè)雙向鏈表中陕悬。該數(shù)據(jù)結(jié)構(gòu)在保證圖遍歷性能的同時(shí),對圖數(shù)據(jù)的修改和刪除也提供了很好的性能按傅。同時(shí)ArangoDB是支持橫向拓展的分布式數(shù)據(jù)庫捉超,并提供了社區(qū)版和商業(yè)版。

ArangoDB存儲端數(shù)據(jù)結(jié)構(gòu)

Titan是一個(gè)開源的分布式圖數(shù)據(jù)存儲引擎唯绍,向下支持多種基于Google Bigtable 的KCV數(shù)據(jù)模型的數(shù)據(jù)庫拼岳,包括 Apache Cassandra, Apache HBase况芒, Google Cloud Bigtable惜纸, Oracle BerkeleyDB;向上支持Gremlin 圖查詢語言對業(yè)務(wù)系統(tǒng)提供關(guān)系網(wǎng)絡(luò)數(shù)據(jù)查詢绝骚,同時(shí)兼容Spark 分布式計(jì)算框架耐版,提供對大規(guī)模關(guān)系網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行離線OLAP 分析。2015年Titan被DataStax公司收購压汪,進(jìn)行商業(yè)化改造粪牲,開源社區(qū)開發(fā)者新fork出一個(gè)分支,封裝成JanusGraph項(xiàng)目并持續(xù)維護(hù)止剖。

JanusGraph基于Google?Bigtable?的KCV數(shù)據(jù)模型設(shè)計(jì)腺阳,采用邊切割的方式存儲關(guān)系網(wǎng)絡(luò)數(shù)據(jù),將點(diǎn)的屬性穿香,邊的屬性亭引,鄰節(jié)點(diǎn)key信息存在一起封裝成KCV的數(shù)據(jù)結(jié)構(gòu),通過key進(jìn)行索引皮获,減少鄰邊和鄰節(jié)點(diǎn)的遍歷時(shí)間焙蚓。其關(guān)系網(wǎng)絡(luò)數(shù)據(jù)處理的時(shí)間復(fù)雜度還是需要根據(jù)其具體的存儲層組件來進(jìn)行分析,如果是采用HBase做為存儲端魔市,那顯而易見在關(guān)系網(wǎng)絡(luò)數(shù)據(jù)寫入方面會有一定的優(yōu)勢主届。

JanusGraph也是許多國內(nèi)一線大廠封裝自己圖數(shù)據(jù)庫的基本開源框架,基于商業(yè)敏感性這里也就不一一列舉了待德。國內(nèi)廠商對于JanusGraph的二次封裝優(yōu)化策略主要在于ID的分配機(jī)制君丁,邊的索引優(yōu)化等。

JanusGraph存儲端數(shù)據(jù)結(jié)構(gòu)

TigerGraph是商業(yè)圖數(shù)據(jù)庫将宪,其采用C++語言開發(fā)绘闷,在關(guān)系網(wǎng)絡(luò)數(shù)據(jù)的存儲和查詢方面做了物理層的優(yōu)化橡庞,充分使用了計(jì)算機(jī)的緩存資源,同時(shí)也提供了高壓縮比的數(shù)據(jù)存儲策略印蔗。

通過內(nèi)置圖存儲引擎和圖計(jì)算引擎并存的技術(shù)扒最,采用MPP計(jì)算模型,實(shí)現(xiàn)實(shí)時(shí)的OLAP分析华嘹。相比JanusGraph采用Spark框架實(shí)現(xiàn)MPP計(jì)算吧趣,TigerGraph的圖中每個(gè)頂點(diǎn)和邊同時(shí)作為存儲和計(jì)算的并行單元,能提供更高的計(jì)算效率和性能耙厚。

微軟的Azure云計(jì)算服務(wù)的Cosmos DB强挫,亞馬遜云計(jì)算服務(wù)的Neptune以及阿里云的GDB圖數(shù)據(jù)庫,都是各個(gè)云廠商推出的云上圖數(shù)據(jù)庫服務(wù)薛躬。目前俯渤,圖數(shù)據(jù)庫的技術(shù)發(fā)展還沒形成一套完整的工業(yè)標(biāo)準(zhǔn),但是隨著關(guān)系網(wǎng)絡(luò)技術(shù)的發(fā)展和普及八匠,多元化的圖數(shù)據(jù)庫共存在市場上的局面還暫時(shí)不會改變, 實(shí)時(shí)大規(guī)模關(guān)系網(wǎng)絡(luò)OLAP技術(shù)也將是未來發(fā)展的趨勢趴酣。

參考書籍:

[1]?圖數(shù)據(jù)庫lan Robinson, Jim Webber, Emil Eiferm?著?劉璐梨树,梁越譯

[2]?知識圖譜概念與技術(shù)?肖仰華?等編著

參考網(wǎng)絡(luò)材料:

[1]https://www.arangodb.com/2016/04/index-free-adjacency-hybrid-indexes-graph-databases?

[2]?https://www.cnblogs.com/zhangzl419/p/9100498.html

[3]?https://zhuanlan.zhihu.com/p/36183004

關(guān)于我們

普適智能科技有限公司(簡稱:普適智能PUSHI AI)是一家專注于數(shù)據(jù)處理和知識圖譜技術(shù)的人工智能高科技公司,致力于為企業(yè)提供一站式認(rèn)知智能服務(wù)岖寞。

普適智能專注于技術(shù)創(chuàng)新型人才提供技術(shù)分享和學(xué)習(xí)內(nèi)容劝萤,使創(chuàng)新成為持續(xù)的核心競爭力。

如果您感興趣慎璧,歡迎加入PUSHI AI社群,共同探索AI跨释。關(guān)注普適智能并評論即可加入我們~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胸私,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鳖谈,更是在濱河造成了極大的恐慌岁疼,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缆娃,死亡現(xiàn)場離奇詭異捷绒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)贯要,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門暖侨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人崇渗,你說我怎么就攤上這事字逗【┲#” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵葫掉,是天一觀的道長些举。 經(jīng)常有香客問我,道長俭厚,這世上最難降的妖魔是什么户魏? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮挪挤,結(jié)果婚禮上叼丑,老公的妹妹穿的比我還像新娘。我一直安慰自己电禀,他們只是感情好幢码,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尖飞,像睡著了一般症副。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上政基,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天贞铣,我揣著相機(jī)與錄音,去河邊找鬼沮明。 笑死辕坝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的荐健。 我是一名探鬼主播役听,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼判耕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起艾扮,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤搞旭,失蹤者是張志新(化名)和其女友劉穎贬派,沒想到半個(gè)月后麦锯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡佑附,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年樊诺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片音同。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡词爬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出权均,到底是詐尸還是另有隱情缸夹,我是刑警寧澤痪寻,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站虽惭,受9級特大地震影響橡类,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芽唇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一顾画、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧匆笤,春花似錦研侣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咆课,卻和暖如春末誓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背书蚪。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工喇澡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人殊校。 一個(gè)月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓晴玖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親为流。 傳聞我的和親對象是個(gè)殘疾皇子呕屎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容