圖形數(shù)據(jù)庫中的分布和劃分
什么是分布式系統(tǒng)?
通常,一個分布式的計算機系統(tǒng)是一組計算機程序,它們在多個獨立的服務器上協(xié)同工作,以實現(xiàn)一個共同的目標。那些服務器指的是那些商用服務器而不是大型機。這里用于跨服務器協(xié)作的硬件大多基于以太網(wǎng)設備或更高端的RMDA設備。
為什么我們需要一個分布式系統(tǒng)?
構建分布式系統(tǒng)的主要原因是用軟件技術和廉價的硬件設備取代昂貴的硬件設備的成本。尤其是在大多數(shù)私有服務器機房,不公共云或者超算條件下,采購成本是商業(yè)決策的重要依據(jù)。
除了降低成本,分布式技術的另一個好處是它的可伸縮性。通過將幾個服務器添加到原始數(shù)量的服務器上,然后結合分布式系統(tǒng)的調度和分發(fā)能力,新的服務器可以用于提供額外的服務。
與購買同等數(shù)量的更多服務器或購買更高配置的服務器相比,分布式技術允許您按需購買服務器,這降低了過度配置的風險,并提高了硬件資源的利用率。
分布式系統(tǒng)的基本問題
在分布式技術中,由于數(shù)據(jù)存儲和計算需要在多個獨立的服務器上實現(xiàn),因此必須涉及一系列底層技術。在本文中,我們只討論兩個問題:一個是數(shù)據(jù)拷貝或副本問題,另一個是如何將大數(shù)據(jù)的存儲和計算分布到獨立的服務器上。
數(shù)據(jù)副本的問題
商用服務器的硬件可靠性和維護遠低于大型機。因為大型機房幾乎每小時都會發(fā)生網(wǎng)線松動、硬盤損壞、斷電等情況。解決或避免這些硬件問題是分布式軟件系統(tǒng)的一個基本問題。一種常見的解決方案是在多臺服務器上復制數(shù)據(jù)。一旦一些數(shù)據(jù)副本丟失,系統(tǒng)仍然可以通過使用剩余的數(shù)據(jù)副本來提供服務。
更重要的是,當系統(tǒng)的訪問負載過大時,系統(tǒng)還可以通過添加更多副本來提供更多服務。此外,還需要一些技術來保證數(shù)據(jù)副本之間的一致性;也就是說,不同服務器上的每個副本的數(shù)據(jù)是相同的。對于圖形數(shù)據(jù)庫數(shù)據(jù)復制問題也存在。解決這個問題的方法類似于解決關系數(shù)據(jù)庫或大數(shù)據(jù)系統(tǒng)中數(shù)據(jù)副本問題的方法。
數(shù)據(jù)劃分的問題
單個服務器的硬件、內存和CPU是有限的。如果數(shù)據(jù)太大,不可能將所有數(shù)據(jù)存儲在一臺服務器上。因此,TB級甚至PB級的數(shù)據(jù)必須分布到多個服務器上,我們稱這個過程為數(shù)據(jù)分區(qū)。當請求訪問多個數(shù)據(jù)分區(qū)時,分布式系統(tǒng)需要將請求分發(fā)到每個正確的數(shù)據(jù)分區(qū),然后組合結果。
圖數(shù)據(jù)庫中的數(shù)據(jù)劃分問題:圖劃分
在圖形數(shù)據(jù)庫,分布過程被形象地稱為圖劃分。一個大圖被分割成多個小圖,每個小圖的存儲和計算都存儲在不同的服務器上.
與關系數(shù)據(jù)庫和大數(shù)據(jù)系統(tǒng)中的劃分問題相比,圖劃分問題更值得特別關注。
我們來看一個靜態(tài)的圖結構,比如CiteSeer數(shù)據(jù)集,這是一個科學論文的引用網(wǎng)絡,由3312篇論文以及它們之間的引用組成。它是一個小規(guī)模數(shù)據(jù)集,可以存儲在一臺服務器上。
Twitter 2010數(shù)據(jù)集是Twitter用戶的社交網(wǎng)絡,由1271萬個頂點和2.3億條邊組成。在2022年生產(chǎn)的單個主流服務器上存儲這個數(shù)據(jù)集相對容易。但是,要做到這一點,可能需要購買十年前生產(chǎn)的非常昂貴的高端服務器。
然而,WDC (Web Data Commons)數(shù)據(jù)集包含17億個頂點和640億條邊。在當前的主流服務器上很難或者不可能存儲如此大規(guī)模的數(shù)據(jù)集。
另一方面,由于人類的數(shù)據(jù)增長速度快于摩爾定律,并且數(shù)據(jù)之間的連接或關系的數(shù)量以指數(shù)形式高于數(shù)據(jù)產(chǎn)生的速度,因此數(shù)據(jù)劃分問題似乎是圖數(shù)據(jù)庫系統(tǒng)不可避免的問題。但這聽起來與主流分布式技術中數(shù)據(jù)的分區(qū)或散列方式?jīng)]有什么不同。畢竟數(shù)據(jù)被分割成多個大數(shù)據(jù)系統(tǒng)。
等等,劃分一個圖有那么容易嗎?
不,不是的。在圖數(shù)據(jù)庫領域,圖劃分問題是技術、產(chǎn)品和工程之間的權衡。
圖劃分面臨的三個問題
第一個問題:應該分割什么?在大數(shù)據(jù)或關系數(shù)據(jù)庫系統(tǒng)中,基于行的分區(qū)或基于列的分區(qū)是基于記錄或字段執(zhí)行的,或者是基于數(shù)據(jù)id執(zhí)行的分區(qū),這在語義和技術上是直觀的。然而,圖數(shù)據(jù)結構的強連通性使得對圖數(shù)據(jù)進行劃分變得困難。一個頂點可以通過多條邊連接到許多其他頂點,并且其他頂點也可以通過它們的相鄰邊連接到許多其他頂點。這就像網(wǎng)頁幾乎是相互鏈接的一樣。那么對于一個圖數(shù)據(jù)庫,應該劃分什么才能使語義直觀自然呢?(在RDBMS中,這相當于當表中有大量外鍵時,如何對數(shù)據(jù)進行分區(qū)。)當然,也存在一些自然的語義劃分方法。例如,在新冠肺炎疫情下,各種毒株在中國和其他國家的傳播鏈是兩種不同的網(wǎng)絡結構。
然后,引入第二個問題。
第二個問題:就是數(shù)據(jù)分區(qū)后如何保證每個分區(qū)的數(shù)據(jù)大致平衡。自然形成的圖符合20%的少數(shù)頂點與其他80%的頂點相連的冪律,這些少數(shù)頂點稱為超級節(jié)點或密集節(jié)點。這意味著少數(shù)頂點與大多數(shù)其他頂點相關聯(lián)。因此,可以預期,包含超級節(jié)點的分區(qū)的負載和熱點比包含其他頂點的其他分區(qū)的負載和熱點高得多。
上圖展示了互聯(lián)網(wǎng)上網(wǎng)站超鏈接形成的聯(lián)想網(wǎng)絡的視覺效果,其中超級網(wǎng)站(節(jié)點)可見。
第三個問題:當原有的劃分方法隨著圖網(wǎng)絡的增長而逐漸過時,圖的分布和連接模式發(fā)生變化時,如何評價和進行重新劃分?下圖顯示了人腦中860億個神經(jīng)元之間連接的視覺效果。隨著學習、鍛煉、睡眠和衰老,神經(jīng)元連接每周都在不斷變化。原來的劃分方式可能根本跟不上變化。
當然還有很多其他細節(jié)需要考慮。在本文中,我們盡量避免使用太多的技術術語。
不幸的是,從技術角度來看,沒有解決圖劃分問題的靈丹妙藥,每個產(chǎn)品都必須做出權衡。
這對于第三個問題,解決方案是使用細粒度的分區(qū)方法,以便可以執(zhí)行某些分區(qū)的向外擴展。