當圖表的數據集超出您可以在單個ArangoDB實例上托管的限制時,您需要進行擴展。但是,通過集群對圖進行分片會帶來新的問題。使用標準圖時,遍歷可能涉及數據庫服務器之間的許多網絡躍點。隨著邊緣將遍歷帶到不同的機器上,性能會變差。
SmartGraphs和DisjointSmartGraphs 通過優化分片之間的數據分布來解決這個問題,減少需要網絡跳到其他服務器的邊數。
用圖表縮放
ArangoDB的社區版可以在單個實例上處理大型數據集,讓您可以毫無問題地垂直擴展。它還可以處理水平擴展到具有所有三個數據模型的集群。但是,在水平擴展時,您可能會開始遇到性能問題,您可以通過集群對圖進行分片。
想象一個處理大型數據集的圖表,例如您可能在物聯網、金融、通信、醫療保健或基因組學應用程序中找到的數據。數據的自然分布涉及一系列高度互聯的社區,這些社區之間有許多邊緣。
圖1:3臺機器上沒有SmartGraphs的圖形分片
遍歷這種規模的圖可以帶您穿過數十億甚至數萬億個頂點。單臺機器上容納的數據量太多了,每當邊緣將您從一臺機器帶到另一臺機器時,網絡連接上的性能瓶頸。如果第二臺機器上的優勢讓你回到第一臺或第三臺,它會變得更糟。遍歷所需的網絡跳數越多,網絡延遲就越大,與內存計算相比,這可能會變得非常昂貴。最終,性能會下降到不再適合您給定用例的程度。
使用SmartGraphs進行縮放
遍歷分片圖時的性能問題與網絡延遲有關。您的遍歷需要的網絡跳數越多,您從水平擴展中獲得的收益就越少。使用ArangoDB企業版,您可以從SmartGraphs中受益,通過使用應用層的智能解決遍歷的網絡延遲問題。
圖對自己一無所知。但是,您的應用程序對圖表了解很多。在許多數據集中,存在高度互聯的社區,但這些社區之間的聯系很少。例如,涵蓋您的客戶、區域或您在應用程序層組織圖表的任何其他邏輯的集合又可以用于通過集群對圖表進行分片。
SmartGraphs使用應用程序層的智能性來優化它通過集群對數據進行分片的方式。例如,適合您的主要查詢的客戶ID、區域或任何其他邏輯。借助這種智能,您可以將圖表中高度連接的社區分割到特定實例。
圖3:使用ArangoDBSmartGraph 的分片圖
通過優化數據分布,SmartGraphs減少了遍歷所需的網絡跳數。內部測試顯示,在遍歷分片圖時性能提升了40-120倍。
不相交的智能圖
對于某些用例,您可以使用DisjointSmartGraphs 進一步優化。DisjointSmartGraphs是針對必須處理大型分層圖或針對多個客戶圖的整體分析的用例的優化。在這兩種情況下,您的圖形數據集中都有明顯分離的分支。
DisjointSmartGraphs 啟用這些分支的自動分片并禁止連接它們的邊。這允許查詢優化器將整個查詢執行下推到每個DBserver,并大大提高圖查詢的性能,如遍歷、模式匹配、最短和k最短路徑。
ArangoDB企業版用戶現在可以處理完整的新用例或進一步優化當前基于圖形的應用程序。
責任編輯:彭菁
-
服務器
+關注
關注
12文章
9672瀏覽量
87211 -
數據集
+關注
關注
4文章
1222瀏覽量
25263
原文標題:ArangoDB Enterprise:智能圖和分離的智能圖
文章出處:【微信號:哲想軟件,微信公眾號:哲想軟件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論