您好,登錄后才能下訂單哦!
怎么利用Neo4j聯(lián)邦實(shí)現(xiàn)LDBC社交網(wǎng)絡(luò)分割,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
Neo4j 4.0發(fā)布了一個(gè)令人興奮新功能:Neo4j聯(lián)邦。Neo4j聯(lián)邦的操作原理從本質(zhì)上講非常簡(jiǎn)單,它提供了一種方式來(lái)執(zhí)行針對(duì)多個(gè)Neo4j數(shù)據(jù)庫(kù)的Cypher查詢。
可以通過(guò)多種方式來(lái)使用此功能,包括跨多個(gè)獨(dú)立數(shù)據(jù)庫(kù)的聯(lián)合查詢與分析,數(shù)據(jù)存儲(chǔ)和處理可以水平擴(kuò)展,也可以進(jìn)行不同的混合部署。
接下來(lái),我們將探討如何使用聯(lián)邦功能來(lái)實(shí)現(xiàn)著名且具有挑戰(zhàn)性的LDBC社交網(wǎng)絡(luò)基準(zhǔn)圖的水平縮放(即分片)。
對(duì)圖數(shù)據(jù)進(jìn)行分片是一個(gè)眾所周知的難題。我們將展示如何使用Neo4j聯(lián)邦實(shí)現(xiàn)分片,Neo4j 聯(lián)邦將分片存儲(chǔ)為獨(dú)立和不相交的圖,這意味著關(guān)系不會(huì)跨越分片。而是使用我們稱為代理節(jié)點(diǎn)并關(guān)聯(lián)ID值的方法對(duì)此類關(guān)系進(jìn)行建模。我們將依賴有關(guān)數(shù)據(jù)模型和將要運(yùn)行的查詢以及要針對(duì)哪些查詢進(jìn)行優(yōu)化的知識(shí),以針對(duì)特定用例創(chuàng)建分片數(shù)據(jù)模型。
最后,我們將通過(guò)比較分片版本和非分片版本之間的查詢時(shí)間和吞吐量,展示聯(lián)邦功能如何提高查詢性能。
LDBC社交網(wǎng)絡(luò)基準(zhǔn)提供了數(shù)據(jù)模型規(guī)范以及數(shù)據(jù)生成器,以及一組查詢規(guī)范。需要注意的是,我們并沒(méi)有使用基準(zhǔn)所指定的基準(zhǔn)工作負(fù)載,而是借用其數(shù)據(jù)模型和查詢來(lái)進(jìn)行另一種演示。該測(cè)試旨在證明分片和非分片配置之間的差異,并探討圖形分片的注意事項(xiàng),而不是提供行業(yè)基準(zhǔn)。
在規(guī)范中可以找到LDBC SNB數(shù)據(jù)模型的完整描述。我們將在此處提供簡(jiǎn)化的概述,并以導(dǎo)入到Neo4j中時(shí)架構(gòu)的外觀表示。
該模型包含一個(gè)由不同的人和他們的友誼關(guān)系組成的圖組件,并構(gòu)成了社交網(wǎng)絡(luò)的核心。就數(shù)據(jù)大小而言,該圖組件的最大部分是留言板組件,該組件為包含帖子和評(píng)論回復(fù)鏈的論壇建模。人們可以通過(guò)多種不同方式與論壇,帖子和評(píng)論相關(guān)聯(lián)。
論壇,帖子和評(píng)論都有標(biāo)簽,每個(gè)人都可以有一組代表其興趣的標(biāo)簽。標(biāo)簽是按類別進(jìn)行分類的。不同的人位于不同國(guó)家(或地區(qū))的城市中,每個(gè)帖子或評(píng)論也在一個(gè)國(guó)家中創(chuàng)建
完整模型包含更多實(shí)體,例如大學(xué),公司和大洲,我們暫時(shí)不在此描述。
分片數(shù)據(jù)模型始終是一個(gè)復(fù)雜的問(wèn)題,沒(méi)有通用的解決方案。確定要“剪切”的關(guān)系不僅取決于模型本身,還取決于數(shù)據(jù)分布和預(yù)期的查詢執(zhí)行模式。
根據(jù)國(guó)家或地區(qū)進(jìn)行分片似乎是自然的選擇。這種分片方案是基于這樣的假設(shè),即用戶更可能會(huì)認(rèn)識(shí)來(lái)自同一國(guó)家的人并與之互動(dòng)。詳細(xì)討論為什么這種分片方案在這種情況下是否是最佳的討論超出了本文的討論范圍。簡(jiǎn)化的解釋是,典型的查詢將不得不在各個(gè)分片之間進(jìn)行過(guò)多的“跳轉(zhuǎn)”。
在考慮了多種選擇之后,我們決定采用以下分片方案。
選擇的分片方案是異構(gòu)的,這意味著并非所有分片都包含相同種類的數(shù)據(jù)。所有個(gè)人和與他們相關(guān)的數(shù)據(jù)都保存在一個(gè)分片 中。論壇,其帖子和評(píng)論分布在其余分片上。地理數(shù)據(jù)和標(biāo)簽結(jié)構(gòu)被復(fù)制到每個(gè)分片上。論壇分片包含簡(jiǎn)化的人員代理節(jié)點(diǎn)表示形式,僅保留其原始id屬性
這種分片方案有兩個(gè)優(yōu)點(diǎn)。首先,它允許有效的查詢?nèi)伺c人之間的關(guān)系,這在許多查詢中至關(guān)重要。其次,由于論壇本質(zhì)上是一片森林,因此它們可以分布在其余分片上,而沒(méi)有最重要的關(guān)系跨越分片邊界。
將所有人放在一個(gè)片上不是問(wèn)題,因?yàn)橄⒑驮u(píng)論要比個(gè)人信息多幾個(gè)數(shù)量級(jí)。從理論上講,如果社交網(wǎng)絡(luò)發(fā)展得飛快,以至于“人物”圖無(wú)法有效地安裝在一臺(tái)機(jī)器上,那么它可能會(huì)被進(jìn)一步分割。
同樣,在所有分片上復(fù)制標(biāo)簽,城市和國(guó)家也不成問(wèn)題,因?yàn)檫@類數(shù)據(jù)非常小且靜態(tài)。
我們?cè)O(shè)計(jì)了許多測(cè)試方案,來(lái)評(píng)估上述分片模型的性能,尤其是針對(duì)非分片模型進(jìn)行了比較,以及隨著分片數(shù)量的增加如何更改性能。此處重點(diǎn)關(guān)注的方案是查看在將數(shù)據(jù)集分配給越來(lái)越多的越來(lái)越小的分片時(shí),讀取性能如何擴(kuò)展。
我們要強(qiáng)調(diào)的是,我們只是借鑒了LDBC社交網(wǎng)絡(luò)基準(zhǔn)測(cè)試的數(shù)據(jù)模型,數(shù)據(jù)生成器和查詢,但是測(cè)試執(zhí)行的目標(biāo)和方法不同。
LDBC SNB指定許多查詢,分為若干類別。我們從“交互式復(fù)雜讀取”類別中選擇了四個(gè)查詢(查詢4,查詢6,查詢7和查詢9),它們代表了該工作負(fù)載,我們將在其上展示我們的結(jié)果。這些查詢的定義可以在LDBC SNB規(guī)范中找到。
這些查詢的聯(lián)邦Cypher實(shí)現(xiàn)可在此處找到。
接下來(lái),我們將分享更多查詢以及其他有趣測(cè)試場(chǎng)景的結(jié)果。
我們的測(cè)試數(shù)據(jù)集是使用LDBC SNB數(shù)據(jù)生成器以比例因子(SF)1000生成的。它包含大約27億個(gè)節(jié)點(diǎn)。數(shù)據(jù)生成器創(chuàng)建的csv文件的大小約為1TB。
我們將生成的數(shù)據(jù)以四種不同的配置導(dǎo)入到Neo4j中
1個(gè)分片(無(wú)代理,整體參考)
10個(gè)分片(1個(gè)人員分片,9個(gè)論壇分片)
20個(gè)分片(1個(gè)人員分片,19個(gè)論壇分片)
40個(gè)分片(1個(gè)人員分片,39個(gè)論壇分片)
這些分片分別部署在各自獨(dú)立的AWS EC2實(shí)例上,并且在這些實(shí)例上運(yùn)行Neo4j 4.0。配置內(nèi)存限制以使所有分片上的總可用量保持恒定,為1800GB。除了內(nèi)存限制,Neo4j實(shí)例具有默認(rèn)設(shè)置。
#分片 | 分片實(shí)例類型 | 內(nèi)存(GB) | |||
總量 | 每個(gè)分片 | 頁(yè)面緩存 | 堆 | ||
1個(gè) | x1.32xlarge(128C,1,952GB) | 1,800 | 1,800 | 1,600 | 200 |
10 | m5d.12xlarge(48C,192GB) | 1,800 | 180 | 160 | 20 |
20 | m5d.8xlarge(32C,128GB) | 1,800 | 90 | 80 | 10 |
40 | m5d.4xlarge(16C,64GB) | 1,800 | 45 | 40 | 5 |
查詢延遲是通過(guò)一次又一次執(zhí)行單個(gè)查詢來(lái)衡量的,同時(shí)記錄從提交到每個(gè)查詢結(jié)果執(zhí)行完畢所消耗的時(shí)間。查詢參數(shù)按照它們?cè)贚DBC參數(shù)文件中出現(xiàn)的順序提供給每個(gè)查詢執(zhí)行。初始的查詢執(zhí)行結(jié)果集被認(rèn)為是“熱數(shù)據(jù)”,并且從統(tǒng)計(jì)信息中排除。聯(lián)邦代理部署在t3.2xlarge類型(8C,32GB)的單個(gè)單獨(dú)實(shí)例上
最大查詢吞吐量是通過(guò)隨著時(shí)間的推移增加并發(fā)發(fā)出的查詢的數(shù)量來(lái)統(tǒng)計(jì)的,直至錯(cuò)誤率或延遲開(kāi)始超出定義的參數(shù)為止。聯(lián)邦代理部署在c5.24xlarge類型(96C,192GB)的單個(gè)單獨(dú)實(shí)例上
這些結(jié)果表明Q06和Q09比Q04和Q07重得多。我們可以看到,隨著分片數(shù)量的增加,繁重的查詢延遲大大減少(請(qǐng)注意,該圖具有對(duì)數(shù)刻度)。對(duì)于較輕的工作負(fù)載,由于通信開(kāi)銷越來(lái)越占主導(dǎo)地位,因此延遲會(huì)按預(yù)期增加。盡管如此,我們?nèi)栽O(shè)法將Q04和Q07的毫秒延遲保持在較低水平。
仔細(xì)研究繁重的查詢,我們發(fā)現(xiàn)Q06在10個(gè)分片上的速度提高了約11倍,在20個(gè)分片上的速度提高了約17倍。這些極好的結(jié)果表明,如果分片數(shù)量合理,聯(lián)邦可以針對(duì)此類工作負(fù)載實(shí)現(xiàn)幾乎線性的加速。在相同的速度下,任何工作負(fù)載都無(wú)法無(wú)限并行化,而在40個(gè)分片上,我們的速度提高了約24倍。這些結(jié)果非常令人鼓舞,表明與聯(lián)邦并行執(zhí)行對(duì)延遲的影響遠(yuǎn)大于通信和協(xié)調(diào)開(kāi)銷。
延遲測(cè)量一次只能運(yùn)行一個(gè)查詢。下圖顯示了并發(fā)吞吐能力,即每秒測(cè)得的最大執(zhí)行查詢數(shù)。
同樣,我們看到了從單個(gè)實(shí)例到10個(gè)分片的驚人性能提升。有趣的是,當(dāng)我們從單個(gè)實(shí)例到10個(gè)分片時(shí),最大吞吐量的增加比添加的處理器核心數(shù)量增加的更多。這可以用以下事實(shí)解釋:使用10臺(tái)計(jì)算機(jī)不僅增加了更多的處理器核心,而且還增加了其他資源,例如總內(nèi)存帶寬。
由于我們沒(méi)有辦法限制分片機(jī)上可用內(nèi)核的數(shù)量以平衡計(jì)算能力總量,因此以下圖顯示了將最大QPS標(biāo)準(zhǔn)化為AWS EC2上整個(gè)設(shè)置的每小時(shí)總成本。
關(guān)于怎么利用Neo4j聯(lián)邦實(shí)現(xiàn)LDBC社交網(wǎng)絡(luò)分割問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。