成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

大數(shù)據(jù)時代的新型數(shù)據(jù)庫--圖數(shù)據(jù)庫 Neo4j

IT那活兒 / 2391人閱讀
大數(shù)據(jù)時代的新型數(shù)據(jù)庫--圖數(shù)據(jù)庫 Neo4j

1

什么是圖數(shù)據(jù)庫

圖數(shù)據(jù)庫是基于數(shù)學(xué)里圖論的思想和算法而實(shí)現(xiàn)的高效處理復(fù)雜關(guān)系網(wǎng)絡(luò)的新型數(shù)據(jù)庫系統(tǒng)。

圖數(shù)據(jù)庫的數(shù)據(jù)存儲方式就像將其繪制出來一樣-Nodes通過Relationships所定義的關(guān)系相連起來,形成關(guān)系型網(wǎng)絡(luò)結(jié)構(gòu),展示了每個多帶帶的實(shí)體如何與其他實(shí)體聯(lián)系或相互關(guān)聯(lián)。

2

圖數(shù)據(jù)庫擅長做什么-與傳統(tǒng)關(guān)系型數(shù)據(jù)庫相比


關(guān)系查詢更佳:圖形數(shù)據(jù)庫善于高效處理大量的、復(fù)雜的、互連的、多變的數(shù)據(jù)。其計算效率遠(yuǎn)遠(yuǎn)高于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫。

傳統(tǒng)關(guān)系型數(shù)據(jù)庫在查詢關(guān)系問題上最簡單的方法就是建立一個關(guān)系模型,如下圖:

圖中展示了一個非常簡單的關(guān)系模型,當(dāng)我們想就這個關(guān)系模型查詢關(guān)系深度為1的關(guān)系(比如小明的朋友)時可使用

進(jìn)行查詢

深度為1的查詢,關(guān)聯(lián)關(guān)系并不復(fù)雜,MySQL執(zhí)行起來壓力不大,語句也很容易編寫,但是如果將深度提到2(也就是查詢小明朋友的朋友時)語句已經(jīng)開始變長,再進(jìn)一步將深度提升到3時,MySQL查詢也會開始產(chǎn)生壓力。


有一個很有意思的測試,一分別通過關(guān)系型數(shù)據(jù)和圖數(shù)據(jù)庫在一個社交網(wǎng)絡(luò)里找到最大深度為5的關(guān)系。他們的數(shù)據(jù)集包括100萬人,每人約有50個朋友。實(shí)驗(yàn)結(jié)果如下:

當(dāng)查詢的關(guān)系深度達(dá)到3時,MySQL的查詢效率便開始被Neo4j圖數(shù)據(jù)庫甩開。

至于為什么Neo4j的關(guān)系查詢能力能夠優(yōu)于傳統(tǒng)關(guān)系型數(shù)據(jù)庫,則需要去了解它是如何存儲數(shù)據(jù)的。

3

圖數(shù)據(jù)庫Neo4j的存儲結(jié)構(gòu)


節(jié)點(diǎn)、關(guān)系與屬性

一個圖數(shù)據(jù)庫中的數(shù)據(jù)由節(jié)點(diǎn)(node)和將節(jié)點(diǎn)連接起來的關(guān)系(relationship)組成,節(jié)點(diǎn)(node)和關(guān)系(relationship)中又包含一個或多個屬性(property)。節(jié)點(diǎn)有擁有若干標(biāo)簽,關(guān)系帶有類型。

原生圖存儲(nativegraph storage

一般認(rèn)為具有"無索引鄰接"特性的圖數(shù)據(jù)庫才稱為原生圖數(shù)據(jù)。

neo4j的節(jié)點(diǎn)、關(guān)系和屬性分別保存在neostore.nodestore.db、neostore.relationshipstore.db和neostore.propertystore.db文件中,在neo4j中,點(diǎn)、關(guān)系和屬性等圖的組成元素都是基于neo4j內(nèi)部維護(hù)的ID進(jìn)行訪問的,數(shù)據(jù)結(jié)構(gòu)如下圖:
節(jié)點(diǎn)(指向聯(lián)系和屬性的單向鏈表,neostore.nodestore.db):
inUse:表示是否被使用的標(biāo)志位。
nextRelId:代表關(guān)聯(lián)到這個節(jié)點(diǎn)的第一個關(guān)系的ID。
nextPropId:代表第一個屬性ID。
labels:是代表當(dāng)前節(jié)點(diǎn)的標(biāo)簽,指向該節(jié)點(diǎn)的標(biāo)簽存儲。
extra:作為保留位。
關(guān)系(雙向鏈表,neostore.relationshipstore.db):
inUse:代表是否被使用的標(biāo)志位。
firstNode:表示起始節(jié)點(diǎn)的ID
secondNode:表示結(jié)束節(jié)點(diǎn)的ID
relationshipType:表示關(guān)系類型
firstPrevRelId:表示起始頂點(diǎn)上前一個邊記錄
firstNextRelId:表示起始頂點(diǎn)上后一個邊記錄
secPrevRelId:表示終止頂點(diǎn)上前一個邊記錄
secNextRelId:表示終止頂點(diǎn)上后一個邊記錄
指向前后邊記錄的4個指針形成了兩個“關(guān)系雙向鏈”
nextPropId:是邊上的第1個屬性的id
firstInChainMarker:表示該邊記錄是否是“關(guān)系鏈”中第1條記錄
一個Byte存輔助信息,即前后屬性結(jié)構(gòu)ID的高位信息
一個Int存前一個屬性
一個Int存下一個屬性


假設(shè)要查詢與某個點(diǎn)有對應(yīng)關(guān)系的所有點(diǎn)時,首先查到該點(diǎn)的ID,通過該ID計算該點(diǎn)的存儲偏移位置,從存儲文件中獲取到該點(diǎn)的信息,然后從該點(diǎn)的信息中獲取到該點(diǎn)nextRelId數(shù)據(jù)即該點(diǎn)第一個關(guān)系的ID,根據(jù)這個ID計算該關(guān)系存儲偏移量,從存儲文件中獲取該關(guān)系數(shù)據(jù),判斷是否為需要查詢的關(guān)系,若為所要查詢的,則獲取該關(guān)系的secondNode即該關(guān)系的終節(jié)點(diǎn)ID,若為其他節(jié)點(diǎn)則保存該ID,查詢到所有數(shù)據(jù)返回關(guān)系及節(jié)點(diǎn)。

綜上所述Neo4j關(guān)系查詢的核心便在relationship(關(guān)系)的存儲上,一條關(guān)系存儲的數(shù)據(jù)包括上一條邊、下一條邊、關(guān)系/邊的起始節(jié)點(diǎn)與結(jié)束節(jié)點(diǎn),當(dāng)查詢某一個點(diǎn)某一條關(guān)系時只需查詢到該點(diǎn)所對應(yīng)的第一條關(guān)系/邊,然后根據(jù)這條關(guān)系上所存儲的下一條關(guān)系以及關(guān)系的開始節(jié)點(diǎn)與終節(jié)點(diǎn)進(jìn)行查詢即可。

Neo4j中node、relationship、property以鏈表的形式存儲了本記錄及上一條或下一條記錄的相關(guān)信息,保證了關(guān)系遍歷的效率。

關(guān)于Neo4j的介紹就到這里。


END


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129958.html

相關(guān)文章

  • 云計算?數(shù)據(jù)?SaaS回歸

    摘要:宋體當(dāng)云計算如火如荼的肆意展現(xiàn)時代風(fēng)采的時候,大數(shù)據(jù)已經(jīng)悄然的出現(xiàn)在這個巨大的舞臺中央。對于云計算來說,大數(shù)據(jù)在云平臺上盡情展現(xiàn)那風(fēng)華絕代的容姿,為客戶帶去大數(shù)據(jù)深埋的價值,將是云計算送給所有云時代用戶們最精彩的表演。 當(dāng)云計算如火如荼的肆意展現(xiàn)時代風(fēng)采的時候,大數(shù)據(jù)已經(jīng)悄然的出現(xiàn)在這個巨大的舞臺中央。對于云計算來說,大數(shù)據(jù)在云平臺上盡情展現(xiàn)那風(fēng)華絕代的容姿,為客戶帶去大數(shù)據(jù)深埋的價值,將是...

    Crazy_Coder 評論0 收藏0
  • PHPOA辦公系統(tǒng):新型工作流引擎4.0,快速提升OA辦公方式

    摘要:更嚴(yán)重的是,會導(dǎo)致信息系統(tǒng)的失控。實(shí)現(xiàn)了數(shù)據(jù)的同步交換和共享,從而簡化多余流程,消除重復(fù)工作,有效提升工作效率和精度。工作流將大大深化系統(tǒng)的應(yīng)用,讓系統(tǒng)發(fā)揮出全新的價值。而不具有工作流特點(diǎn)的系統(tǒng),將很快被時代所拋棄。 一、工作流1.0時代終結(jié)OA系統(tǒng)的應(yīng)用正在不斷深化,正在逐漸完成從無紙化到智能化的轉(zhuǎn)變,作為OA系統(tǒng)應(yīng)用的核心,工作流技術(shù)也同樣發(fā)生了很大的轉(zhuǎn)變。 我們知道,對工作流比較...

    afishhhhh 評論0 收藏0
  • 新型數(shù)據(jù)云服務(wù)企業(yè)新數(shù)科技完成千萬元Pre-A輪融資

    摘要:近日,數(shù)據(jù)云服務(wù)企業(yè)新數(shù)科技宣布完成千萬元首輪融資,本輪融資由天創(chuàng)資本領(lǐng)投,白澤資本原以太資本擔(dān)任財務(wù)顧問,資金將主要用于云數(shù)據(jù)庫新型管理平臺等軟件產(chǎn)品的研發(fā)投入行業(yè)生態(tài)體系建設(shè)和人才引進(jìn)等方面。近日,數(shù)據(jù)云服務(wù)企業(yè)新數(shù)科技宣布完成千萬元首輪融資,本輪融資由天創(chuàng)資本領(lǐng)投,白澤資本(原以太資本)擔(dān)任財務(wù)顧問,資金將主要用于云數(shù)據(jù)庫新型管理平臺等軟件產(chǎn)品的研發(fā)投入、行業(yè)生態(tài)體系建設(shè)和人才引進(jìn)等方...

    DoINsiSt 評論0 收藏0
  • 創(chuàng)新加速云計算普及和技術(shù)演進(jìn)

    摘要:創(chuàng)新加速了云計算在中國的普及,中橋調(diào)研顯示,中國近企業(yè)級用戶將在混合云環(huán)境下運(yùn)營,公有云快速成為核心資源。云計算高動態(tài)高自動化的資源部署和管理,讓用戶能夠靈活根據(jù)業(yè)務(wù)需求,進(jìn)行實(shí)時近實(shí)時交付,從而最大限度降低投入。數(shù)字化時代,創(chuàng)新快速成為數(shù)字經(jīng)濟(jì)增長最重要的驅(qū)動力。近年來,各國政府都出臺了相應(yīng)創(chuàng)新戰(zhàn)略和規(guī)劃,以推動自身經(jīng)濟(jì)可持續(xù)發(fā)展,提升國家在全球的競爭力。無論是德國的《新高科技戰(zhàn)略–為德國...

    Betta 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<