圖數(shù)據(jù)庫(kù)和圖計(jì)算的區(qū)別,終于有人講明白了
?前所未有的能力
如果你還懷疑關(guān)系型數(shù)據(jù)庫(kù)的局限性,那么請(qǐng)想象一下,使用關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),是否能夠解決以下問(wèn)題:
- 如何找到一個(gè)人朋友的朋友的朋友……?
- 如何(實(shí)時(shí))找到一個(gè)賬戶與多個(gè)黑名單賬戶之間的關(guān)聯(lián)路徑?
- 如何判斷某個(gè)時(shí)間段內(nèi)兩個(gè)賬戶之間的交易(或交易記錄)是否正常?
- 在一個(gè)供應(yīng)鏈網(wǎng)絡(luò)中,如果一個(gè)北美的制造廠/工廠停工,將會(huì)給韓國(guó)的百貨商場(chǎng)旗艦店帶來(lái)什么樣的影響?
- 在貨運(yùn)、電力傳輸、通信網(wǎng)絡(luò)中,如果一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)或服務(wù)停運(yùn)(下線),受到波及和影響的范圍有多大?
- 在大健康領(lǐng)域,如果一個(gè)用戶提交他的電子病歷和健康檔案,是否可以提供實(shí)時(shí)個(gè)性化的重大疾病保險(xiǎn)推薦服務(wù)?
- 在反洗錢的場(chǎng)景中,如何知曉一個(gè)賬戶持有者把他的資金通過(guò)多層中間人的賬戶轉(zhuǎn)賬后,最終再重新匯入他自己(或其他關(guān)系人)的賬戶中?
- 現(xiàn)有的搜索引擎只可以進(jìn)行一維的、基于關(guān)鍵字的搜索,例如輸入“牛頓與成吉思汗”,如何返回任何有實(shí)質(zhì)意義的、關(guān)聯(lián)發(fā)散的結(jié)果?
- 在一張知識(shí)圖譜中,如何找到多個(gè)知識(shí)實(shí)體間所形成的兩兩關(guān)聯(lián)的網(wǎng)絡(luò)?類似地,在一個(gè)由通話記錄構(gòu)成的大網(wǎng)中,如何找到1000個(gè)犯罪嫌疑人所構(gòu)成的兩兩之間的6度以內(nèi)的關(guān)聯(lián)網(wǎng)絡(luò)?
以上9個(gè)問(wèn)題僅列舉了傳統(tǒng)數(shù)據(jù)管理系統(tǒng)(當(dāng)然也包含其他的NoSQL或大數(shù)據(jù)框架)或搜索引擎無(wú)法以高效、低代價(jià)的方式完成的眾多挑戰(zhàn)中的一小部分。圖1展示了使用圖進(jìn)行網(wǎng)絡(luò)分析,與其他類型的數(shù)據(jù)源不同,其可敏捷應(yīng)對(duì)變化、未知的數(shù)據(jù)關(guān)系與類型以及能高效處理海量數(shù)據(jù)。
在實(shí)時(shí)圖數(shù)據(jù)庫(kù)和圖計(jì)算引擎的幫助下,我們可以實(shí)時(shí)地在不同數(shù)據(jù)間找到深度關(guān)聯(lián)關(guān)系。舉例來(lái)說(shuō),基于百科全書的知識(shí)體系而構(gòu)建的知識(shí)圖譜數(shù)據(jù)集中(一張大圖,圖中的頂點(diǎn)是一個(gè)個(gè)的知識(shí)點(diǎn),而邊則是知識(shí)點(diǎn)之間的關(guān)聯(lián)關(guān)系),通過(guò)圖引擎可以實(shí)時(shí)計(jì)算出如圖1、圖2所示路徑。
▲圖1 實(shí)時(shí)搜索最短路徑:從牛頓到成吉思汗(表單模式)
▲圖2 實(shí)時(shí)搜索最短路徑:從牛頓到成吉思汗(圖形模式)
與傳統(tǒng)的搜索引擎不同,當(dāng)搜索時(shí),你期待的返回結(jié)果不再是單一的網(wǎng)頁(yè)、鏈接排序,而是更為復(fù)雜、多邊甚至全面的關(guān)聯(lián)關(guān)系,搜索引擎不會(huì)返回為空、答非所問(wèn)或無(wú)實(shí)際意義的答案,在實(shí)時(shí)圖計(jì)算引擎的支撐下,它可以返回最優(yōu)的、人腦都無(wú)法企及的智能路徑。如果仔細(xì)觀察圖2中的路徑,你會(huì)發(fā)現(xiàn)這些實(shí)體與關(guān)聯(lián)關(guān)系所形成的每一條路徑存在著強(qiáng)因果關(guān)系。通過(guò)這種“高維”搜索引擎返回的有強(qiáng)因果關(guān)系的路徑,一環(huán)扣一環(huán),其中蘊(yùn)含的知識(shí)體量與密度(熵值)遠(yuǎn)高于傳統(tǒng)的基于倒排索引和PageRank算法的互聯(lián)網(wǎng)搜索引擎。并且,以上所有過(guò)程在圖數(shù)據(jù)庫(kù)支撐下都是實(shí)時(shí)完成,返回最優(yōu)(不一定是最短)路徑。如果用戶對(duì)展望未來(lái)更感興趣,可以改變篩選過(guò)濾和調(diào)整條件,例如設(shè)置相關(guān)頂點(diǎn)(或節(jié)點(diǎn))與邊的參數(shù)(或?qū)傩裕?,并按照一定的模板邏輯?lái)實(shí)現(xiàn)搜索等,如圖3所示。
▲圖3 實(shí)時(shí)動(dòng)態(tài)圖過(guò)濾與剪枝(通過(guò)圖搜索過(guò)濾)
很顯然,隨著過(guò)濾條件變得更苛刻,搜索返回結(jié)果的路徑變得更長(zhǎng)了(從5層增加為7層),但是搜索時(shí)間并沒(méi)有指數(shù)級(jí)增長(zhǎng)。這是實(shí)時(shí)圖計(jì)算引擎的一個(gè)很重要的能力—對(duì)子圖的動(dòng)態(tài)剪枝能力,一邊搜索,一邊過(guò)濾(剪枝)。缺乏這種能力的圖數(shù)據(jù)庫(kù)絕無(wú)可能成為有商業(yè)應(yīng)用前景的實(shí)時(shí)圖數(shù)據(jù)庫(kù)。
圖4展示了由以上路徑動(dòng)態(tài)生成的子圖的2D空間可視化效果。
▲圖4 通過(guò)圖過(guò)濾后形成的多層關(guān)聯(lián)
另一個(gè)實(shí)例是通過(guò)對(duì)轉(zhuǎn)賬、匯款、取現(xiàn)等交易的數(shù)據(jù)流進(jìn)行追蹤來(lái)實(shí)現(xiàn)實(shí)時(shí)反洗錢監(jiān)測(cè)。圖5中左邊最大的點(diǎn)是資金流出方,經(jīng)過(guò)10層中間賬號(hào)不斷轉(zhuǎn)賬轉(zhuǎn)發(fā),最終匯聚在右邊的小點(diǎn)(賬戶)位置。除非經(jīng)過(guò)10層以上的深層挖掘,否則你很難發(fā)現(xiàn)數(shù)據(jù)(資金)的真正流向,以及它們背后的真正意圖。對(duì)于各國(guó)的金融監(jiān)管機(jī)構(gòu)而言,實(shí)時(shí)圖數(shù)據(jù)庫(kù)與圖計(jì)算的意義不言而喻—當(dāng)犯罪分子在以圖的方式規(guī)避監(jiān)管的時(shí)候,他們會(huì)通過(guò)構(gòu)造深層的圖模型來(lái)逃避反洗錢追蹤,而監(jiān)管機(jī)構(gòu)只有使用具備深度穿透分析能力的圖數(shù)據(jù)庫(kù)才能讓犯罪分子無(wú)處遁形。
?
▲圖5 資金流向圖
絕大多數(shù)人都知道“蝴蝶效應(yīng)”,就是在數(shù)據(jù)和信息的海洋中捕捉從一個(gè)(或多個(gè))實(shí)體到遙遠(yuǎn)的另外一個(gè)(或多個(gè))實(shí)體間微妙的關(guān)聯(lián)關(guān)系。從數(shù)據(jù)處理框架的角度來(lái)看,如果沒(méi)有圖計(jì)算的幫助,蝴蝶效應(yīng)是極難被發(fā)現(xiàn)的。有人會(huì)說(shuō)隨著算力的指數(shù)級(jí)增強(qiáng),未來(lái)總有一天我們會(huì)實(shí)現(xiàn),筆者以為,這一天已經(jīng)到來(lái)!實(shí)時(shí)圖數(shù)據(jù)庫(kù)就是進(jìn)行蝴蝶效應(yīng)計(jì)算、查詢的最佳工具。
在2017年,知名數(shù)據(jù)分析公司Gartner提出了一個(gè)5層的數(shù)據(jù)分析模型,如圖6所示。
▲圖6 Gartner 5層數(shù)據(jù)分析模型
在圖6中,數(shù)據(jù)分析的未來(lái)在于“網(wǎng)絡(luò)分析”,或稱為實(shí)體鏈接分析,建立這個(gè)系統(tǒng)只能依賴圖數(shù)據(jù)庫(kù)。圖計(jì)算系統(tǒng)把數(shù)據(jù)以網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的方式構(gòu)建,并搜尋網(wǎng)絡(luò)內(nèi)的關(guān)聯(lián)關(guān)系,它的效率遠(yuǎn)超關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。關(guān)系型數(shù)據(jù)庫(kù)通過(guò)表連接來(lái)進(jìn)行計(jì)算,它可能永遠(yuǎn)無(wú)法完成類似的任務(wù)。
數(shù)據(jù)分析(技術(shù))的發(fā)展是商業(yè)發(fā)展的必然結(jié)果,它提高了數(shù)據(jù)處理的科技水平。在圖6中,從第1層到第2層可以視為數(shù)據(jù)分析領(lǐng)域內(nèi)從單機(jī)應(yīng)用到互聯(lián)應(yīng)用的提升;第3層是渠道中心化數(shù)據(jù)分析,它經(jīng)常發(fā)生在一個(gè)公司的渠道或部門的內(nèi)部;第4層的特點(diǎn)是跨渠道,它要求大型公司內(nèi)的不同渠道進(jìn)行數(shù)據(jù)分享,從而最大程度挖掘數(shù)據(jù)的價(jià)值,你必須合并各個(gè)渠道搜集到的不同類數(shù)據(jù),并把它們視為一個(gè)整體,由此來(lái)進(jìn)行網(wǎng)絡(luò)化分析(例如社交網(wǎng)絡(luò)分析)。這種通用的、跨部門、跨數(shù)據(jù)集的多維數(shù)據(jù)間關(guān)聯(lián)分析需求的挑戰(zhàn),只有圖數(shù)據(jù)庫(kù)才能完美實(shí)現(xiàn)。
圖計(jì)算與圖數(shù)據(jù)庫(kù)的差異
圖計(jì)算(graph computing)與圖數(shù)據(jù)庫(kù)(graph database)之間的差異是很多剛接觸圖的人不容易厘清的。盡管在很多情況下,圖計(jì)算可以和圖數(shù)據(jù)庫(kù)混用、通用。但是,它們之間存在很多不同,筆者認(rèn)為有必要單獨(dú)做個(gè)介紹。
圖計(jì)算可以簡(jiǎn)單地等同于圖處理框架(graph processing frameworks)、圖計(jì)算引擎(graph computing engines),它的主要工作是對(duì)已有的數(shù)據(jù)進(jìn)行計(jì)算和分析。圖計(jì)算框架多數(shù)都出自學(xué)術(shù)界,這個(gè)和圖論自20世紀(jì)60年代與計(jì)算機(jī)學(xué)科發(fā)生學(xué)科交叉并一直不斷演化有關(guān)。
圖計(jì)算框架在過(guò)去20年中的主要發(fā)展是在OLAP(Online Analytical Processing,聯(lián)機(jī)分析處理)場(chǎng)景中進(jìn)行數(shù)據(jù)批處理。
圖數(shù)據(jù)庫(kù)的出現(xiàn)要晚得多,最早可以稱之為圖數(shù)據(jù)庫(kù)的也要到20世紀(jì)90年代,而真正的屬性圖或原生圖技術(shù)在2011年后才出現(xiàn)。
圖數(shù)據(jù)庫(kù)的框架主要功能可以分為三大部分:存儲(chǔ)、計(jì)算與面向應(yīng)用的服務(wù)(例如數(shù)據(jù)分析、決策方案提供、預(yù)測(cè)等)。其中計(jì)算部分,包含圖計(jì)算,但是圖數(shù)據(jù)庫(kù)通常可以處理AP與TP類操作,也就是說(shuō)可以兼顧OLAP與OLTP(Online Transactional Processing,在線事務(wù)處理),兩者的結(jié)合也衍生出了新的HTAP類型的圖數(shù)據(jù)庫(kù),第3章會(huì)詳細(xì)介紹它的原理。簡(jiǎn)言之,從功能角度上看,圖數(shù)據(jù)庫(kù)是圖計(jì)算的超集。
但是,圖計(jì)算與圖數(shù)據(jù)庫(kù)有個(gè)重要的差異點(diǎn):圖計(jì)算通常只關(guān)注和處理靜態(tài)的數(shù)據(jù),而圖數(shù)據(jù)庫(kù)則能處理動(dòng)態(tài)的數(shù)據(jù)。換言之,圖數(shù)據(jù)庫(kù)在數(shù)據(jù)動(dòng)態(tài)變化的同時(shí)能保證數(shù)據(jù)的一致性,并能完成業(yè)務(wù)需求。這兩者的區(qū)別基本上也是AP和TP類操作的區(qū)別之所在。
多數(shù)圖計(jì)算框架都源自學(xué)術(shù)界,其關(guān)注的要點(diǎn)和場(chǎng)景與工業(yè)界的圖數(shù)據(jù)庫(kù)有很大的不同。前者在創(chuàng)建之初大都面向靜態(tài)的磁盤文件,通過(guò)預(yù)處理、加載入磁盤或內(nèi)存后進(jìn)行處理;而后者,特別是在金融、通信、物聯(lián)網(wǎng)等場(chǎng)景中,其數(shù)據(jù)是不斷流動(dòng)、頻繁更新的。靜態(tài)的計(jì)算框架不可能滿足各類業(yè)務(wù)場(chǎng)景的需求,這也催化了圖數(shù)據(jù)庫(kù)的不斷迭代,從以O(shè)LAP為主的場(chǎng)景開(kāi)始,直至發(fā)展到可以實(shí)現(xiàn)OLTP類型的實(shí)時(shí)、動(dòng)態(tài)數(shù)據(jù)處理。
另一方面,由于歷史原因,圖計(jì)算框架所面對(duì)的數(shù)據(jù)集通常都是一些路網(wǎng)數(shù)據(jù)、社交網(wǎng)絡(luò)數(shù)據(jù)。在社交網(wǎng)絡(luò)中的關(guān)系類型非常簡(jiǎn)單(例如:關(guān)注),任何兩個(gè)用戶間只存在一條邊,這種圖也稱為單邊圖(simple graph),而在金融交易網(wǎng)絡(luò)中,兩個(gè)賬戶之間的轉(zhuǎn)賬關(guān)系可以形成非常多的邊(每一條邊代表一筆交易),這種圖稱為多邊圖(multi-graph)。顯然,用單邊圖來(lái)表達(dá)多邊圖會(huì)造成信息缺失,或者通過(guò)增加大量點(diǎn)、邊來(lái)實(shí)現(xiàn)從而達(dá)到同樣的效果(得不償失,且會(huì)造成圖上處理效率低下)。
再者,圖計(jì)算框架一般只關(guān)注圖本身的拓?fù)浣Y(jié)構(gòu),并不需要理會(huì)圖上的點(diǎn)和邊的復(fù)雜屬性問(wèn)題,而這對(duì)于圖數(shù)據(jù)庫(kù)而言則是必須關(guān)注的。
圖計(jì)算與圖數(shù)據(jù)庫(kù)的另外兩個(gè)差異點(diǎn)如下:
1)圖計(jì)算框架中能提供的算法一般都比較簡(jiǎn)單,換言之,在圖中的處理深度都比較淺,例如PageRank、LPA標(biāo)簽傳播、聯(lián)通分量、三角形計(jì)數(shù)等算法,圖計(jì)算框架可能會(huì)面向海量的數(shù)據(jù),并且在高度分布式的集群框架上運(yùn)行,但是每個(gè)算法的復(fù)雜度并不高。圖數(shù)據(jù)庫(kù)所面對(duì)的查詢復(fù)雜度、算法豐富度遠(yuǎn)超圖計(jì)算框架,例如5層以上的深度路徑查詢、K鄰查詢、復(fù)雜的隨機(jī)游走算法、大圖上的魯汶社區(qū)識(shí)別算法、圖嵌入算法、復(fù)雜業(yè)務(wù)邏輯的實(shí)現(xiàn)與支持等。
2)圖計(jì)算框架的運(yùn)行接口通常是API調(diào)用,而圖數(shù)據(jù)庫(kù)則需要提供更豐富的編程接口,例如API、各種語(yǔ)言的SDK,可視化的圖數(shù)據(jù)庫(kù)管理及操作界面,以及最重要的圖查詢語(yǔ)言。熟悉關(guān)系型數(shù)據(jù)庫(kù)的讀者一定不會(huì)對(duì)SQL陌生,而圖數(shù)據(jù)庫(kù)對(duì)應(yīng)的查詢語(yǔ)言是GQL,通過(guò)GQL可以實(shí)現(xiàn)復(fù)雜的查詢、計(jì)算、算法調(diào)用和業(yè)務(wù)邏輯。
圖計(jì)算與圖數(shù)據(jù)庫(kù)的差異梳理見(jiàn)表1。
表1 圖計(jì)算與圖數(shù)據(jù)庫(kù)的差異
通過(guò)本文的背景介紹,希望讀者能夠做好準(zhǔn)備,更好地進(jìn)入圖數(shù)據(jù)庫(kù)的世界。
本文摘編于《圖數(shù)據(jù)庫(kù)原理、架構(gòu)與應(yīng)用》,經(jīng)出版方授權(quán)發(fā)布。(書號(hào):9787111708100)轉(zhuǎn)載請(qǐng)保留文章來(lái)源。?