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