System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及數據庫系統,尤其涉及一種基于方法調用的數據庫存算架構實現系統、方法、設備及存儲介質。
技術介紹
1、數據庫系統的性能和可靠性很大程度上取決于其存儲引擎和計算引擎這兩個核心組件的有效協作。存儲引擎負責數據的持久化存儲和管理,而計算引擎則專注于數據處理任務。這兩種組件的傳統組合方式有兩種主要架構模式:存算一體架構和存算分離架構。
2、存算一體架構是數據庫系統中的經典設計,其中存儲和計算功能在同一進程中集成,這種緊密耦合的方式帶來了低延遲、高數據吞吐量和易于管理的優點。然而,隨著數據規模和計算需求的增長,存算一體架構面臨著水平擴展困難的問題,并且單點故障可能會影響整個系統的可用性和可靠性。為了解決上述問題,存算分離架構將存儲和計算功能解耦并獨立部署,這使得計算資源和存儲資源可以獨立擴展,提高了系統的可伸縮性、可靠性和容錯能力。隨著云計算技術的普及和發展,存算分離架構因其靈活性和高效性已成為數據庫領域的主流發展趨勢之一。
3、當存儲引擎和計算引擎分離后,需要引入一個驅動層(driver)來負責二者之間的數據交互。然而,數據在網絡中的傳輸會增加額外的延遲,這對要求高實時性的應用場景來說是一個挑戰。例如,在圖數據庫中執行鄰接信息查詢時,計算引擎需先獲取初始點的信息進行處理,然后再查詢其鄰接信息。這一過程中,數據需要在計算引擎和存儲引擎之間多次往返傳遞,尤其是當查詢涉及多層鄰接關系時,數據交互量會呈指數級增長,從而顯著增加網絡開銷,導致語句執行成本大幅上升。鑒于此,對于不同的使用場景和數據特性,選擇合適的
4、c/c++因其出色的性能和接近硬件層的特點,被廣泛應用于數據庫系統的存儲引擎開發。相比之下,計算引擎更側重于面向用戶的應用邏輯,與底層操作系統交互較少,因此計算引擎開發過程通常更加專注于并發性、安全性和易用性。基于這些考慮,計算引擎可以使用go語言進行開發。go語言不僅提供了很好的開發效率和很好的代碼維護性,還具備出色的并發處理能力,這使得它成為設計計算引擎的理想選擇之一。例如,分布式鍵值存儲系統etcd、列式數據庫管理系統clickhouse和分布式關系數據庫tidb等項目,在其底層核心模塊采用了c/c++編寫,以確保高性能的數據存儲和檢索;而對于上層計算引擎或輔助模塊,則采用go語言編寫,以實現更高效的開發流程和更佳的維護性。
5、然而,使用c/c++和go開發的存算分離數據庫系統,在進行例如圖數據庫中鄰接查詢等復雜操作時,過多的數據交互代價會導致查詢性能下降。另一方面,單機數據庫系統盡管可以避免此類通信開銷,但仍面臨存算一體架構所帶來的諸多缺點,如擴展性限制和單點故障風險。因此,設計一種既能保持高性能又能有效應對復雜查詢場景的技術方案,對于提高數據庫系統的整體性能和可靠性至關重要。
技術實現思路
1、專利技術目的:本專利技術提供一種基于方法調用的數據庫存算架構實現系統、方法、設備及存儲介質,數據庫架構靈活,數據庫動態的以存算分離或存算一體架構對外提供服務,計算引擎與存儲引擎交互簡單,driver層提供多種方法調用模式服務于數據庫。
2、技術方案:本專利技術所述的一種基于方法調用的數據庫存算架構實現系統,包括:計算引擎和存儲引擎;計算引擎和存儲引擎在同一進程內,屬于存算一體模型,driver層數據交互為cgo本地方法調用;計算引擎和存儲引擎不在同一進程內,屬于存算分離模型,driver層數據交互為rpc遠程方法調用。
3、進一步的,不同的計算引擎上根據數據的具體特征,生成不同的執行計劃,driver層依據執行計劃中的信息選擇不同的方法調用形式。
4、進一步的,具體特征包括數據的規模、表之間的關聯性、數據的分布方式。
5、相應的,一種基于方法調用的數據庫存算架構實現方法,包括如下步驟:
6、步驟1、初始狀態:假設最初創建表a在節點1上,即表a的數據存儲在存儲引擎1中,用戶連接計算引擎1查詢表a的數據,計算引擎1與存儲引擎1部署在同一節點上,因此通過計算引擎1使表a以存算一體的形式對外提供服務;
7、步驟2、數據增長后的轉換:一段時間后,隨著表a的數據量增長到不適合僅存儲在一個存儲引擎上時,對表a進行動態的數據重分布,將表a中的部分數據遷移到存儲引擎2上,此時,表a的數據分布在存儲引擎1和存儲引擎2中;用戶仍然連接計算引擎1查詢表a的數據,計算引擎1通過driver層使用cgo調用方式獲取存儲引擎1上的表a數據,同時通過driver層使用rpc調用方式獲取存儲引擎2上的表a數據;由于計算引擎1與存儲引擎2是存算分離模式的,此時通過計算引擎1使表a以存算分離的形式對外提供服務;
8、步驟3、數據量減少后的反向轉換:相反地,當表a的數據量縮減到一定閾值時,將存儲引擎2上的表a數據重新搬遷到存儲引擎1中,使得表a重新以存算一體的形式對外提供服務;當表a的數據存儲在存儲引擎1中時,只有通過計算引擎1獲取表a的數據時,表a才是存算一體的設計模式;而通過計算引擎3獲取表a的數據時,表a對外呈現的是存算分離的設計模式,proxy代理的轉發應當根據數據特性有選擇性地將語句轉發給執行更加高效的計算引擎。
9、進一步的,當用戶向某個計算引擎發送sql語句以查詢表a的數據時,在生成sql語句的執行計劃樹階段,計算引擎需要根據表a的元數據來確定表a的數據分布情況,并結合計算引擎自身的元數據來決定執行計劃樹中查詢葉子節點的調用模式。
10、進一步的,調用模式分為以下三種:a、存算一體模式:driver層使用cgo調用來查詢本地存儲引擎,這種模式適用于存算一體的情況,即計算引擎和存儲引擎部署在同一節點上;b、存算分離模式:driver層使用rpc調用來查詢遠端存儲引擎,這種模式適用于計算引擎與表a所在的存儲引擎完全分離的情況;c、混合模式:當表a的數據分布在不同的存儲引擎上時,driver層會同時生成cgo和rpc兩種調用方式,在這種情況下,一部分數據通過本地cgo調用訪問,而另一部分則通過遠程rpc調用訪問。
11、相應的,一種基于方法調用的數據庫存算架構實現系統的連接設備,其特征在于,包括:一個或多個處理器;
12、存儲裝置,用于存儲一個或多個程序、用戶數據;
13、當所述一個或多個程序被一個或多個處理器執行,使得所述一個或多個處理器實現如權利要求4至6任一所述的基于方法調用的數據庫存算架構實現方法。
14、相應的,一種基于方法調用的數據庫存算架構實現系統的連接存儲介質,其特征在于,其上存儲有計算機程序,該程序被處理器執行時實現如權利要求4至6中任一所述的基于方法調用的數據庫存算架構實現方法。
15、有益效果:與現有技術相比,本專利技術具有如下顯著優點:數據庫架構靈活,數據庫動本文檔來自技高網...
【技術保護點】
1.一種基于方法調用的數據庫存算架構實現系統,其特征在于,包括:計算引擎和存儲引擎;計算引擎和存儲引擎在同一進程內,屬于存算一體模型,Driver層數據交互為CGO本地方法調用;計算引擎和存儲引擎不在同一進程內,屬于存算分離模型,Driver層數據交互為RPC遠程方法調用。
2.如權利要求1所述的基于方法調用的數據庫存算架構實現系統,其特征在于,不同的計算引擎上根據數據的具體特征,生成不同的執行計劃,Driver層依據執行計劃中的信息選擇不同的方法調用形式。
3.如權利要求1所述的基于方法調用的數據庫存算架構實現系統,其特征在于,具體特征包括數據的規模、表之間的關聯性、數據的分布方式。
4.一種基于如權利要求1所述的基于方法調用的數據庫存算架構實現系統的實現方法,其特征在于,包括如下步驟:
5.如權利要求4所述的基于方法調用的數據庫存算架構實現方法,其特征在于,當用戶向某個計算引擎發送SQL語句以查詢表A的數據時,在生成SQL語句的執行計劃樹階段,計算引擎需要根據表A的元數據來確定表A的數據分布情況,并結合計算引擎自身的元數據來決定
6.如權利要求4所述的基于方法調用的數據庫存算架構實現方法,其特征在于,調用模式分為以下三種:a、存算一體模式:Driver層使用CGO調用來查詢本地存儲引擎,這種模式適用于存算一體的情況,即計算引擎和存儲引擎部署在同一節點上;b、存算分離模式:Driver層使用RPC調用來查詢遠端存儲引擎,這種模式適用于計算引擎與表A所在的存儲引擎完全分離的情況;c、混合模式:當表A的數據分布在不同的存儲引擎上時,Driver層會同時生成CGO和RPC兩種調用方式,在這種情況下,一部分數據通過本地CGO調用訪問,而另一部分則通過遠程RPC調用訪問。
7.一種基于方法調用的數據庫存算架構實現系統的連接設備,其特征在于,包括:一個或多個處理器;
8.一種基于方法調用的數據庫存算架構實現系統的連接存儲介質,其特征在于,其上存儲有計算機程序,該程序被處理器執行時實現如權利要求4至6中任一所述的基于方法調用的數據庫存算架構實現方法。
...【技術特征摘要】
1.一種基于方法調用的數據庫存算架構實現系統,其特征在于,包括:計算引擎和存儲引擎;計算引擎和存儲引擎在同一進程內,屬于存算一體模型,driver層數據交互為cgo本地方法調用;計算引擎和存儲引擎不在同一進程內,屬于存算分離模型,driver層數據交互為rpc遠程方法調用。
2.如權利要求1所述的基于方法調用的數據庫存算架構實現系統,其特征在于,不同的計算引擎上根據數據的具體特征,生成不同的執行計劃,driver層依據執行計劃中的信息選擇不同的方法調用形式。
3.如權利要求1所述的基于方法調用的數據庫存算架構實現系統,其特征在于,具體特征包括數據的規模、表之間的關聯性、數據的分布方式。
4.一種基于如權利要求1所述的基于方法調用的數據庫存算架構實現系統的實現方法,其特征在于,包括如下步驟:
5.如權利要求4所述的基于方法調用的數據庫存算架構實現方法,其特征在于,當用戶向某個計算引擎發送sql語句以查詢表a的數據時,在生成sql語句的執行計劃樹階段,計算引擎需要根據表a的元數據來確定表...
【專利技術屬性】
技術研發人員:于騫,付新,王學海,徐奇,陳天杰,
申請(專利權)人:達夢數據技術江蘇有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。