越來越火的圖資料庫到底能做什麼?

【CSDN 編者按】圖資料庫像新一代的關係型資料庫,取代傳統關係型資料庫在諸多領域大展拳腳、高歌猛進。圖資料庫較傳統關係型資料庫有何優勢?適用於哪些技術領域?未來是何態勢,有何機遇?《新程式設計師002》特邀Neo4j亞太地區售前和技術總監俞方樺為大家解讀圖資料庫。

作者 | 俞方樺 責編 | 張紅月

出品 | 《新程式設計師》編輯部

隨著大資料時代的到來,傳統的關係型資料庫由於其在資料建模和儲存方面的限制,變得越來越難以滿足大量頻繁變化的需求。關係型資料庫,儘管其名稱中有「關係」這個詞,卻並不擅長處理複雜關係的查詢和分析。另外,關係型資料庫也缺乏在多伺服器之上進行水平擴展的能力。基於此,一類非關係型資料庫,統稱「NoSQL」儲存應運而生,並且很快得到廣泛研究和應用。NoSQL(Not Only SQL,非關係型資料庫)是一類範圍廣泛、類型多樣的資料持久化解決方案。它們不遵循關係型資料庫模型,也不使用SQL作為查詢語言。其資料儲存不需要固定的表格模式,也經常會避免使用SQL的JOIN操作,一般都有水平可擴展的特徵。

簡言之,NoSQL資料庫可以按照它們的資料儲存模型分4類:

  • 鍵值儲存庫(Key-Value-stores)

  • 列儲存 (Column-based-stores)

  • 文件庫(Document-stores)

  • 圖資料庫(Graph Database)

從DB-Engines發佈的資料庫技術類別變化趨勢圖(見圖1)中,不難看出圖資料庫在近十年受到廣泛關注、是發展趨勢最迅猛的資料庫類型。

圖1 資料庫技術發展趨勢(截至2021年6月)來源:DB-Engines

那麼,到底什麼是「圖資料庫」?相比關係型資料庫,圖資料庫又有哪些優勢呢?

本文節選自

本文節選自《新程式設計師002:新資料庫時代&軟體定義汽車》

圖資料庫與關係型資料庫的比較

圖資料庫(Graph Database)是指以圖表示、儲存和查詢資料的一類資料庫。這裡的「圖」,與圖片、圖形、圖表等沒有關係,而是基於數學領域的「圖論」概念,通常用來描述某些事物之間的某種特定關係。比如在我們的日常生活中:

  • 社交網路是圖。每個社交網路的參與者是節點,我們在社交網路中的互動,例如「加好友」「點贊」就是連接節點的邊。

  • 城市交通是圖。每個路口、門牌號、公交站點等都是節點,街道或者公交線路是邊,將可以到達的地方連接起來。

  • 知識也是圖。每個名稱、概念、人物、事件等都是節點,而類屬關係、分類關係、因果關係等是邊,將節點連接起來,形成龐大、豐富並且隨時在演變的知識圖譜。

可以說,「圖無處不在」(Graphs are everywhere),也正因如此,傳統關係型資料庫不擅長處理關係的問題,能夠被圖資料庫很好地解決,圖資料庫正是為解決這一問題而生。

其實,在某些方面,圖資料庫就像新一代的關係資料庫,區別在於圖資料庫不僅儲存實體,還儲存實體之間的關係。關係型資料庫通過「主鍵-外來鍵」表示隱含的「關係」連接,但實際上這裡的「關係」是關係代數中的概念,與我們現實世界中的「關係」不同。

通過將關係預先物理儲存在資料庫中(我們稱之為「原生」),圖資料庫將查詢性能由原先的數分鐘提高到數毫秒,特別是對於JOIN頻繁查詢,這種優勢更加明顯。圖2中比較了在社交網路資料集上搜尋朋友圈的查詢,在原生的圖資料庫和關係資料庫的查詢執行效率。顯然,使用圖資料庫比使用傳統關係資料庫效率有極大提升。

圖2 比較圖資料庫和關係資料庫的查詢性能

圖2 比較圖資料庫和關係資料庫的查詢性能

作為NoSQL資料庫的一種,圖資料庫通常不需要先定義嚴格的資料模式,以及強制的欄位類型,這使其在處理結構化和半結構化的資料時同樣得心應手。

除了儲存和查詢效率方面的優勢,圖資料庫也擁有更加豐富的分析能力,我們通過比較這四類主要的非關係型資料庫特點(見表1),就可以得知。

表1 四類主要非關係型資料庫特點

圖資料庫的主要技術領域

既然圖資料庫有諸多優勢且發展迅速,那它主要涉及哪些技術領域呢?我們用圖3來描述。具體來講,圖資料庫的主要技術領域包括儲存模式、圖模型、圖查詢語言、圖分析以及圖視覺化。

儲存模式

儲存模式

原生圖vs非原生圖

圖資料庫以節點和邊來對現實世界進行資料建模。對於實際的底層物理儲存技術,目前主流有兩大類方法:

  • 原生(Native),即按照節點、邊和屬性組織資料儲存。典型代表有Neo4j、JanusGraph、TigerGraph等。

  • 非原生,使用其他儲存類型。例如基於列式儲存的DataStax、基於鍵值對的OrientDB以及基於文件的MongoDB。部分關係型資料庫也在關係儲存之上提供類似圖的操作。

有的圖計算平臺底層支持各類儲存技術,包括圖儲存,稱作「多模式」,例如百度HugeGraph。

原生的圖儲存由於針對圖資料和圖操作的特點進行了最佳化,並且從物理儲存到記憶體中的圖處理,都採用一致的模型而無需進行「模式轉換」,在大資料量、深度複雜查詢以及高併發情況下,性能普遍優於非原生的圖儲存。

圖的分散式儲存

為了支持大規模的圖儲存和查詢,需要對圖進行分散式儲存。這裡有兩類分散式的實現方法:

1、分片(Sharding)。分片就是根據某一原則(例如根據節點的ID隨機分佈)將資料分佈儲存在多個儲存實例中。根據切分規則,又可以分為:

  • 按點切分。每條邊只保存一次,並且出現在同一個分區上。如果處於不同分區的兩條邊有共同的點,那麼點會在各自的分區中複製。這樣,鄰居多的點(繁忙節點)會被分發到多個分區上,增加了儲存空間,並且有可能產生同步問題。這種方法的好處是減少了網路通訊。

  • 按邊切分。通過邊切分之後,頂點只保存一次,切斷的邊會打斷保存在不同分區上。在基於邊的操作時,對於兩個頂點分到兩個不同分區的邊來說,需要通過網路傳輸資料。這增加了網路傳輸的資料量,但好處是節約了儲存空間。

出於最佳化性能的考慮,目前按點切分的分散式圖更加常見。

2、分庫(Partitioning)。由於現實世界中的圖往往遵循「冪律分佈」,即少數節點擁有大量的邊,而多數節點擁有很少的邊。分片儲存不可避免地會造成大量資料冗餘複製,或增加分區間網路通訊的負擔。因此,另外一種分散式的方法是分庫。這是藉助圖建模的方法,將節點按照業務需求、根據查詢類型分佈在不同庫中,是最小化跨庫的網路傳輸。不同庫中的資料則通過聯邦式查詢(Federated Query)實現。

圖模型

在基於圖的資料模型中,最常見的兩種方法是資源描述框架(Resource Description Framework,RDF)和標籤屬性圖(Labelled Property Graph,LPG)。

RDF

RDF是W3C組織指定的標準,它使用Web識別符號(URI)來標識事物,並通過屬性和屬性值來描述資源。根據RDF的定義:

  • 資源是可擁有URI的任何事物,比如 “http://www.w3school.com.cn/rdf”;

  • 屬性是擁有名稱的資源,比如”author”或”homepage”;

  • 屬性值是某個屬性的值,比如”David”或”http://www.w3school.com.cn”(請注意一個屬性值可以是另外一個資源)。

我們來看看RDF是怎樣描述 「西湖是位於杭州的一個旅遊景點」這個事實的(見圖4)。

圖4 RDF舉例

圖4 RDF舉例

RDF圖的查詢語言是SPARQL。如果要詢問「位於杭州的旅遊節點有哪些?」,使用SPARQL的查詢如下:

    PREFIX ns: SELECT ?placeWHERE {?place ns:地理位置 ns:杭州 .?place ns:實例 ns:旅遊景點 .}

    LPG

    在LPG屬性圖模型中,資料對象被表示成節點(擁有一個或多個標籤)、關係和屬性。我們用下面的例子來說明(見圖5)。

    圖5 關於電影的個人偏好的屬性圖

    圖5 關於電影的個人偏好的屬性圖

    在圖5中:

    • 節點/頂點是事物(Object)或者實體(Entity)的抽象,可以是「人」「導演」「電影」「演員」等抽象。節點可以擁有一個或多個標籤,例如代表「張藝謀」的節點可以有「個人」「導演」「演員」等標籤。

    • 節點的屬性。節點的屬性為節點提供豐富的語義,根據頂點代表的類型不同,每個頂點可以有不同的屬性,比如以「人」作為頂點,屬性可以是「姓名」「性別」等。

    • 邊/關係。邊連接兩個節點或同一個節點(指向自己的邊),邊可以有向或無向。邊可以有類型,比如連接「李連杰」和「英雄」的邊的類型是「主演」。

    • 邊的屬性。和頂點的屬性類似,每條邊上也可以有屬性。比如連接「李連杰」和「英雄」的邊有屬性「角色」,其值是「無名」。

    相比RDF,LPG由於可以在節點和邊上定義豐富的屬性,更加易於我們理解,建模也更加靈活。

    圖查詢語言

    應該說,關係型資料庫在過去半個世紀的成功離不開SQL查詢語言標準化。目前,圖查詢語言的標準化(GQL)工作還在進行當中,其核心語法和特性基於Neo4j的Cypher、Oracle的PGQL和GCORE框架。

    從查詢語言本身來說,主要有兩類:

    • 聲明型(Declarative)。聲明型查詢語言只要求使用者描述要實現的目標,由查詢引擎分析查詢語句、生成查詢計劃然後執行。SQL是聲明型查詢語言。在圖資料庫領域,Cypher是最流行的聲明型查詢語言。

    • 命令型(Imperative)。命令型查詢語言要求使用者描述具體執行的操作步驟,然後由資料庫執行。在圖資料庫領域,Gremlin是最流行的(近似)命令型的查詢語言。

    從未來的發展趨勢來看,聲明型查詢語言由於其易於理解、學習門檻低、便於推廣等特性,將成為主流的圖查詢語言。智慧、最佳化的查詢執行引擎將成為衡量圖資料庫技術優勢的關鍵。

    圖分析

    在電腦科學領域,圖演算法是一個重要的演算法類別,經常用於解決複雜的問題。大家應該還能記得在《資料結構》或者軟體開發相關課程中都會學到的「樹的遍歷」(前序、中序、後序等),這就是典型的圖演算法。部分成熟的圖資料庫內建了這些圖演算法,以提供對圖資料的高級分析功能。

    最短路徑搜尋

    最短路徑是圖計算中一類最常見的問題,通常見於解決下面的應用場景:

    • 在兩個地理位置之間尋找導航路徑;

    • 在社交網路分析中,計算人們之間相隔的距離,「最短」則基於路徑上邊的距離和成本,例如:最少跳轉次數;

    • Dijkstra演算法:邊帶權重的最短路徑;

    • A*演算法:基於啟發式規則的最短路徑;

    • k條最短路徑。

    計算範圍則包括:

    • 節點對之間;

    • 單一起點到圖中其他所有節點;

    • 全圖中所有節點對之間。

    除此之外,最小生成樹、隨機遊走等圖遍歷演算法也屬於這一類。

    社團檢測

    「物以類聚,人以群分」,這句話非常形象地描述了網路的一個重要特徵:聚集成群。群也稱作「社區」「團體」「群組」。社區的形成和演變是圖分析和研究的又一個重要領域,因為它幫助我們理解和評估群體行為、研究新興現象。

    社區檢測演算法就是在圖中對節點進行分組和集合(見圖6):在同一集合中的節點之間的邊(代表互動/連接)比分屬不同集合的節點之間更多。從這一意義上,我們認為它們有更多共同點。社區檢測可以揭示節點集群、隔離的群組和網路結構。在社交網路分析中,這種資訊有助於推斷擁有共同興趣的人群。在產品推薦中,可以用來發現相似產品。在自然語言處理/理解中(NLP/NLU),可以用來對文字內容自動分類。社區檢測演算法還用於生成網路的視覺化展現。

    圖6 圖中節點之間邊的密集程度反映了節點之間的相關性

    有助於推斷擁有共同興趣的人群。在產品推薦中,可以用來發現相似產品。在自然語言處理/理解中(NLP/NLU),可以用來對文字內容自動分類。社區檢測演算法還用於生成網路的視覺化展現。

    中心性演算法

    在圖論和網路分析中,中心性指標識別圖中最重要的頂點。其應用廣泛,包括識別社交網路中最有影響力的人、網際網路或城市網路中的關鍵基礎設施節點,以及疾病的超級傳播者。

    最成功的中心度演算法當屬「頁面排行」(PageRank)。這是谷歌搜尋引擎背後的網頁排序演算法的核心。頁面排行除了計算頁面本身的連接,同時評估連結到它的其他頁面的影響力。頁面的重要性越高,資訊來源的可靠度也越高。應用到社交網路中,這一方法可以簡單地解釋成「認識我的人越重要,我也越重要」。是不是挺有道理?

    相似度演算法

    相似度描述兩個節點以及更加複雜的子圖結構是否在何等程度上屬於同一類別,或者有多相似。

    圖/網路相似性度量有三種基本方法:

    • 結構等價(Structural Equivalence);

    • 自同構等價(Automorphic Equivalence);

    • 正則等價(Regular Equivalence)。

    還有一類是先將節點轉換成N維向量(x 1,x 2,…x n)並「投射」到一個N維空間中,然後計算節點之間的夾角或者距離來衡量相似度。這個轉換的方法叫作「嵌入」(Embedding),轉換的過程叫作「圖的表示」,如果是由演算法自動得到最佳的轉換結果,那麼該過程叫作「圖的表示學習」。基於圖的學習是近年來在人工智慧領域非常熱門的一個方向,被廣泛應用到欺詐檢測、智慧推薦、自然語言處理等多個領域。

    圖視覺化

    「一圖勝萬言」這句話是對圖視覺化最恰當的描述。圖視覺化直觀、智慧地展現資料之間的結構和關聯,能看到從前在表格或者圖表中看不到的內容。

    2019年,當新冠病毒開始在全球肆虐時,來自Neo4j圖資料庫社區的一群成員集成了多個異構生物醫學和環境資料集(https://github.com/covid-19-net/covid-19-community),建立了關於新冠病毒的知識圖譜,以幫助研究人員分析宿主、病原體、環境和病毒之間的相互作用。圖7是該知識圖譜的部分視覺化結果,圖中最左邊的部分是病毒暴發的地理位置子圖,包含國家、地區、城市;中間綠色的部分是流行病學子圖,包括有關病毒株、病原體和宿主生物的資訊,病例和菌株分別與報告和發現它們的位置相關聯;右邊紫色的部分是生物學子圖,代表生物體、基因組、染色體、變異體等等。

    圖7 新冠病毒知識圖譜

    圖7 新冠病毒知識圖譜

    圖資料的視覺化建立了關於事物之間關聯的最直觀的展現,並且使得原本並不明顯、甚至於淹沒在資料汪洋中的重要特徵得以顯現出來,成為新的認知。

    圖資料庫的未來展望

    在圖資料庫出現並興起的十餘年間,它在各個領域都得到了成功的應用,並且產生了眾多創新性的解決方案。

    在社交平臺的「網路水軍」識別方面,通過分析使用者的關係圖特徵、結合傳統的基於使用者行為和使用者內容的發現方法,可以有效提高預測的準確性和魯棒性。

    在金融領域,圖和圖分析幫助機構更高效地發現異常的關聯交易,以贏得反洗錢戰爭。

    在電力、電信行業,圖資料庫幫助管理複雜龐大的設備和線路網路,並及時為故障分析根源、估算影響。

    在製造、科研、醫藥等領域,圖資料庫廣泛用於儲存和查詢知識圖譜,成為大資料管理、資料分析和價值挖掘乃至人工智慧技術領域的重要支撐。

    在可預見的未來內,圖資料庫與人工智慧技術的結合應用將會帶來更多創新和飛躍。圖資料庫至少能在以下四個領域幫助提升AI能力。

    第一,知識圖譜,它為決策支持提供領域相關知識/上下文,並且幫助確保答適合於該特定情況。

    第二,圖提供更高的處理效率,因此藉助圖來最佳化模型並加速學習過程,可以有效地增強機器學習的效率。

    第三,基於資料關係的特徵提取分析可以識別資料中最具預測性的元素。基於資料中發現的強特徵所建立的預測模型擁有更高的準確性。

    第四,圖提供了一種保證AI決策透明度的方法,這使得通過AI得到的結論更加具有可解釋性。AI和機器學習具有很大的應用潛力,而圖解鎖了這種潛力。這是因為圖資料庫技術支持領域相關知識和關聯資料,使AI變得更廣泛適用。

    除此以外,近年來,雲端部署的圖資料庫(SaaS/DaaS)成為了又一個發展趨勢。國內的眾多大廠紛紛推出自研的雲端圖資料庫產品,例如百度的HugeGraph、阿里的GDB、騰訊的TGDB、華為的GES圖計算引擎。

    就總體趨勢而言,我們能夠預見,大資料時代,資料缺失不再是最大的挑戰,我們渴求的是挖掘資料價值的能力,而資料的價值很大一部分在於資料之間的關聯。圖資料庫和圖分析作為處理關聯資料最有效的技術和方法,一定會繼續大放異彩,書寫資料庫應用的新篇章。

    作者簡介:

    Neo4j亞太地區售前和技術總監,有二十餘年IT從業經驗。PMP、IEEE和ACS會員,PMP認證專家、歐盟GDPR認證專家、Neo4j資料庫和圖資料科學認證專家,並擁有金融市場(投資和交易)高級學位。

    《新程式設計師001-004》已全面上市

    掃描下方二維碼或點選進入立即訂閱

    掃描下方二維碼或點選進入立即訂閱

    相關文章

    越來越火的圖資料庫到底能做什麼?

    越來越火的圖資料庫到底能做什麼?

    【CSDN 編者按】圖資料庫像新一代的關係型資料庫,取代傳統關係型資料庫在諸多領域大展拳腳、高歌猛進。圖資料庫較傳統關係型資料庫有何優勢?適...

    最強 AI ChatGPT 真要取代程式設計師?

    最強 AI ChatGPT 真要取代程式設計師?

    【CSDN 編者按】ChatGPT 一出,「程式設計師要失業了」、「程式設計師要下崗了」之聲不絕於耳,引得程式設計師們不由得一陣驚慌,最強 ...

    InsCode:下一代應用開發平臺?

    InsCode:下一代應用開發平臺?

    作者 | Aresn 責編 | 夏萌 對於一些初、中級程式設計師,想開發並部署一個中小應用(如開源項目的文件、個人部落格、個人網站、線上簡歷...

    中國資料庫的諸神之戰

    中國資料庫的諸神之戰

    作者 | 唐小引 出品 | 《新程式設計師》編輯部 「現在的資料庫產品實在是太多了!」 前幾天,我和深耕資料庫/大資料近 30 年的盧東明老...

    雲原生時代的DevOps平臺設計之道

    雲原生時代的DevOps平臺設計之道

    【CSDN 編者按】雲原生時代,開發和運維的分工愈加分明,運維人員通過建設並維護一套 IaaS 雲平臺,將計算資源進行池化。開發人員按需申請...