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