云計算為公共服務提供了新的基礎設施平臺,其強調在虛擬化環境中運行大規模計算的伸縮性和可用性。隨著云計算理論的發展,公有云計算和面向虛擬組織內部的私有云計算成為兩種不同的應用范疇,目前企業級應用更關注的是私有云,其后臺云存儲設備中數據庫數據查詢反應速率的高低,是體現企業私有云技術可擴展性和高效性的重要指標之一,早期的云計算側重于互聯網應用,企業級應用較少。隨著企業私有云概念的發展,傳統的企業級應用從數據中心到中間件、編程模式、數據存儲方式都在向云計算平臺遷移,大量的企業級關系型數據庫遷移到云中將是未來一段時間內云計算技術發展的趨勢,與分布式數據庫中遇到的問題相類似,關系數據庫的ACID特性將使得云中的數據庫部分操作性能降低,從企業級應用的數據管理的特性而言,增、刪、改、查4個基本操作中,查詢的使用頻率更為顯著,在企業云存儲環境下對查詢命令的處理變得至關重要,如何在降低數據傳輸率的情況下同時滿足數據多表之間的依賴性成為必須考慮的關鍵因素,本文通過分析企業云服務的3層架構,在綜合考慮關鍵因素的情況下,對云存儲中心用戶查詢操作執行情況提出一種支持實際應用的分布方案。
1 相關研究背景
1.1企業私有云背景
企業私有云是在企業內部構建的,基于企業內部動態業務變化的需要,對數據和服務設置安全有效控制,為企業內部業務實施提供服務平臺,其基礎設施可設立在企業內部或主機托管場所,它能夠為企業節省信息化開銷,具有靈活性和安全性的特點,是目前企業信息化的發展方向,由于企業私有云數據中心大部分的數據庫命令操作是數據查詢,本文將從數據查詢操作來定義數據分布策略。
1.2企業私有云存儲中心數據管理架構
在文獻[6]的基礎上,本文提出了一種企業私有云存儲中心數據管理架構。企業云計算存儲中心不同于分布式架構下的數據中心,它提供公共平臺(PAAS)業務的數據查詢工作,調用虛擬化操作系統管理下的數據存儲層服務。在本文的研究中,將企業私有云數據管理架構分為3層:1)企業云服務器層;2)數據節點層;3)查詢結果匯總器層。執行時用戶通過SQL命令訪問企業私有云數據中心管理系統,SQL命令在企業云服務器層被預處理成若干子查詢命令,然后根據數據分布策略將各子查詢命令發送到數據節點DN1,DN2,?,DNN,各節點交互執行命令,最后由查詢結果匯總器返回查詢結果給用戶,具體流程如圖1所示:
圖1 企業私有云層次結構
1.3數據分布策略
在分布式數據庫、并行數據庫等的研究中已經提出了多種數據分布策略,主要可以分為集中分布、水平分布、垂直分布以及混合分布等。集中分布是指數據庫表傘部內容集中存儲在數據節點,典型的算法有Together;水平分布可視為一種選擇操作,將關系的元組劃分成不同的子集(通常為不相交的子集),分布到不同的節點,比較典型的水平分布有RoundRobin;垂直分布可視為一種投影操作,從屬性出發,將關系的屬性集劃分為不同的子集并分布到不同的節點;混合操作介于水平和垂直分布之間。當前實際應用水平分布比較多,具有很好的適應性,云計算的特性之一是針對海量數據的處理,企業級應用中不斷產生大量的數據,并且涉及到大量的數據更新,水平分布的處理上將產生一定的數據一致性問題及分布的迭代問題,基于此項考慮,本文的研究中采用混合分布作為出發點,并且假定不同的子集中的屬性可以冗余,即存儲在不同數據節點的數據存在重復,在此假設下,對不同數據節點承載能力的考慮成為研究的重要關注點。
2 云存儲數據節點分布策略(CSND)
2.1策略需考慮因素
在研究文獻中常見的數據分布思想是自上而下,即從客戶的SQL命令開始分析,將SQL分成若干個子命令再分布到數據節點,執行子查詢操作,在設計的過程中沒有考慮到數據節點本身的執行能力.本文結合自上而下和自下而上兩種分布思想,從客戶輸入的SQL命令和數據節點的承載能力同時著手,綜合考慮數據查詢子命令的分布策略。該策略主要從以下3個方面考慮:
2.1.1 SQL查詢命令的執行范圍
確定SQL查詢命令的執行范圍對企業云服務器分配處理客戶指令有重要意義。若查詢是在單表中,則只需分配SQL子命令在含有這一個表的數據節點;如果是多表聯接操作,要先確定是否有數據節點同時存有這兩個表資源,如果沒有,則需要判斷操作是如何確定那兩個數據節點分配子命令,然后進行分別查詢。
2.1.2最近時間周期的查詢次數
統計在規定的查詢周期內被訪問的表的次數,形成表查詢矩陣,確定單表被查詢次數和多表同時被查詢次數。與此同時,設定頻度閾值,對查詢次數超過閾值的表進行標記處理,在分配數據節點時使其具有優先分配權。
2.1.3數據節點的命令處理能力
假設每個數據節點都具有數據存儲和執行查詢命令的功能,其存儲和執行能力的權值可以確定其功能的優劣,在企業云服務器分配子查詢命令時根據數據節點情況分配。本文設定數據節點權值等級計算如式(1)所示,其中數據節點的處理能力是根據系統資源量確定。
1evel1為節點最優狀態,level2為節點正常狀態,分布策略將根據節點能力分配子查詢;level3為警告狀態,分布策略將拒絕分配子查詢給節點。實驗指標采用木桶原理,例如:存儲能力符合一級指標,查詢能力符合二級指標,則此數據節點為二級指標。
2.2策略基本思想
從2.1節可以看出,要改善系統響應效率,提高系統查詢性能,需合理分配每個數據節點子查詢,將可能出現連接的表中的屬性進行同節點存放,這樣在減少數據傳輸時間的同時提高整個查詢周期時間。本文假定企業云服務器將查詢命令進行分解時,子命令中最多出現兩個數據表連接,其他復雜連接暫不考慮。算法所需參數設置如表1所示:
表1 系統參數列表
下面假設系統已有資源及系統參數設置如下:
1)企業私有云中數據節點DN1,DN2,?,DNN;
2)此處為數據節點的能力權值DNC。,DNC。,DNC3;
3)查詢命令統計周期
2.3算法整體流程
當企業云服務器接收到用戶的數據查詢命令時,算法開始執行。首先,生成數據庫表查詢矩陣(執行算法1得到),生成分布策略(執行算法2得到),生成分配策略(執行算法3得到);然后,企業云服務器根據分配策略將數據查詢命令分配給數據節點,各數據節點執行查詢子命令,并將結果傳給查詢結果匯總器;最后,查詢結果匯總器將結果信息傳給用戶。
2.4算法模型及實現
算法1.SQL查詢命令的執行范圍統計和查詢次數統計。
本算法假設數據庫中每兩個表之間都可能發生連接操作,根據子查詢涉及的數據表在數據節點中被訪問的次數,統計形成數據表查詢矩陣TaInqMatrixI-M][M+1],矩陣的行和列是數據表的別名。如果是相同的別名,代表此查詢為單表查詢;如果是不同的別名,代表查詢為兩表連接查詢.例如:TaInqMatrix[1][1]的值代表別名為1的表在某個T周期進行的查詢次數,TaInqMatrix EliE2]的值代表連接別名為1,2的表示在某個T周期的查詢次數。
在執行過算法1后,形成了TaInqMatrix[M][M+1]矩陣,并在第M+1列統計了每個數據表的在某一個T周期的總查詢次數。接下來算法2將根據此矩陣的值是否超過規定閾值(根據系統運行情況設置),按查詢的連接表優先原則把表別名組放入到分布隊列中。在算法執行結束,將形成丁周期內的查詢分布隊列。算法的執行以tablePair.next()和singleTable.next()函數來分別獲取下一個連接操作的表別名組值和單表操作的數據表別名值,具體算法如下:
算法2.形成分布隊列。
算法3輸出為分布策略,制定本策略主要考慮因素如下:
1)數據節點當前狀態
由于數據節點的當前執行能力會根據設定的指標值,定期被標記。所以在算法3執行結束后要修改數據節點的當前狀態。Dn.queryActual表示節點的當前執行能力函數,在數據節點得到一次子查詢分配后,Dn.queryActual執行加操作,這樣下一輪統計中,數據節點剩余執行能力等級狀態會保持更新。
2)分布策略考慮數據節點當前的存儲情況
如果當前的子查詢命令涉及到了兩表連接的狀況,首先從數據分布隊列中取出數據表別名值,然后從當前數據節點中遍歷查詢存儲有這兩個數據表的節點,通過函數getFromDN()形成list()隊列,再逐個判斷數據節點狀態,分配子查詢。
3分析實驗
本文的數據分布策略考慮了用戶sQL查詢命令的分配和數據節點的處理能力兩個方面的因素,形成了云計算環境下云存儲中心數據分布策略。算法執行結束企業云服務器可根據DNplan來進行SQL子命令的分配,提高了分配的適應性,策略的改進體現在以下兩個方面:
1)改變了節點分配不考慮數據節點處理能力,只關注自上而下分解的分配思想;
2)根據節點的處理能力,分配多表到一個數據節點,考慮了數據庫連接查詢的情況。
由于構建企業私有云項目還未滿足實驗需求,因此實驗設計使用一臺PC作為企業云服務器(2.0 GCPU,4GB內存,Ubuntu操作系統),另外使用3臺PC作為數據存儲節點(一臺為2.0 G CPU,2 GB內存,Ubuntu操作系統,另外兩臺為1.0G CPU,1GB內存,Ubuntu操作系統).關于3.1.3節提到的數據節點權值等級設置,本實驗擬設3級標準具體指標如表2所示:
表2數據節點3級權值標準
實驗開始時,主服務器計算節點的指標等級確定后,將sQL分解成子命令,按CSND策略進行數據分布。待數據分布完成后,在主服務器上進行查詢和匯總,比較數據分布策略在I不同數據量時數據庫的查詢響應時間。實驗中對比了集中存儲(together)、輪轉劃分(round robin)和數據節點分布劃分(CSND)。結果如圖2、圖3所示。圖中橫軸為數據節點單表查詢的數據量,以100M為單位;縱軸為查詢響應時間,以ms為單位。
從圖2中可以明顯看出,CSND分布策略對于數據節點單表查詢的反應優于Together和RoundRobin分布策略,根據數據量的增加,這種優勢更為明顯。
圖2數據節點單表查詢時間統計圖
圖3數據節點多表查詢時間統計圖
根據數據節點的處理能力分,配的各數據節點單表查詢命令,無需在系統內進行數據傳輸,只需訪問單個數據節點,大大節省了系統響應時間。實驗結論:改變后的策略具有良好的適應性,能夠改善云計算系統的SQL用戶查詢環境。
單表查詢能力的快慢是企業云計算響應時間的重要測量指標。CSND分布策略為企業云計算數據處理減少了響應時間。
從圖3可以看出,在進行數據節點多表查詢時,仍是CSND分布策略占優勢,多表查詢數據量的增加優勢越來越明顯。實驗結論:對于多表查詢CSND分布策略,充分考慮數據節點數據表的分布情況,更大地減少了數據傳輸,數據表投影、選擇等操作的反應時間。
4 相關研究現狀
關于數據分布策略國內外有許多學者對此進行了研究。早期的數據分布策略較多的成果是在分布式和網格環境下按哈希、范圍、輪轉進行劃分的,后期進行一定的改進。其中,按分配的思想進行分類,采用自上而下分配策略的有:左利云等人從數據庫連續讀取特性人手,解決了云計算中有部分系統資源閑置的問題;文獻[12]考慮了在多數據中心環境的多表連接查詢,如何提高數據庫系統性能的數據分布策略。
在云計算的數據分布策略上,文獻E12]提出了一種面向查詢數據庫數據分布策略,作者的研究思路對我們有一定的啟發,但是采用的是自上而下的單一水平分布的基本策略,沒有考慮數據節點的承載能力;文獻研究的是社區云環境下的數據分布及搜索策略,社區云本質上是企業私有云的一種表現形式,作者的研究點立足于SaaS層面的業務數據搜索,以云中服務節點的Web服務為數據對象,討論虛擬化數據搜索服務的實現方法;文獻[14]考慮了數據存儲節點的承載能力問題,對異構集群中根據不同節點計算權值進行了非均勻的數據劃分,并對傳統的Range水平分布進行了改進。
本文提出的是在垂直、非均勻分布的基礎上,針對關系數據庫SQL查詢操作設計的一種新的數據分布思想,考慮了自上而下和自下而上的結合式分配策略。通過分析數據節點的處理能力,為子查詢命令分配作參考。實驗證明,這種策略具有更高的適應性,明顯提高查詢操作的響應速率。
5 總結
本文從企業私有云的環境出發,以垂直非均勻分布為基礎,考慮了云計算節點承載能力權值,設計了一個綜合考慮自上而下和自下而上的面向云存儲應用的數據分布策略,根據企業云存儲中心的實際應用模式進行數據分布,根據應用頻率分布數據表到各個數據節點上,同時為了滿足數據節點的執行能力,將根據訪問頻率搭配數據節點的能力。通過分析及試驗結果證明,本文的數據分布策略可以明顯減少數據庫查詢響應時間,有效提高企業私有云訪問效率。
下一步工作的重點在于研究可能產生的數據傾斜解決辦法及訪問熱點的數據遷移算法等。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.vmgcyvh.cn/
本文標題:一種面向企業私有云的數據分布策略
本文網址:http://www.vmgcyvh.cn/html/consultation/1083948162.html