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