邱紅飛,李先緒,黃春光
(中國電信股份有限公司廣東研究院 廣州 510630)
對于數據倉庫而言,隨著企業(yè)數據量的不斷膨脹,存儲成本不斷增加,數據查詢性能不斷降低。增加存儲,對性能已經沒有明顯的提升,卻導致成本直線上升,目前技術體系已經不能滿足要求,必須采取新的解決方案。
針對OLAP設計的云計算數據庫,即具備云計算特征的數據倉庫產品,可以很好地解決這個問題。首先是存儲,云計算數據庫使用shared-nothing架構,不會像shared-disk架構一樣存儲的I/O是瓶頸;其次是普通的服務器性能,已經跟不上數據的增長速度,考慮到造價和技術問題,將多臺普通服務器綜合在一起,從而用少量的金錢實現高性能機器的服務;再次是節(jié)點線性擴展的特性,由一個主節(jié)點協調各個節(jié)點的工作,將存儲和查詢的數據分布到各個節(jié)點的機器上,同時支持線性擴展。目前主流的數據倉庫產品都采用具有這種特征的產品技術架構[1]。
TPC-H(商業(yè)智能計算測試)是數據倉庫產品的重要測試標準之一,主要用來模擬真實的商業(yè)應用環(huán)境。TPC-H評估標準中的數據模型及數據量都不太符合電信OLAP應用要求,且在TPC網站上未查詢到各廠商產品的TPC-H測試結果,因此其性能指標不能作為電信現網應用評估的參考標準。
本文旨在研究數據倉庫產品的測試技術標準和評估方法,并通過對各種類型和商家的產品進行測試和評估,從而建立一套完整的數據倉庫產品的測試標準,能夠衡量不同類型數據倉庫產品的處理能力。
shared-nothing和shared-disk是兩種主要的數據庫技術架構,具體介紹如下。
(1)shared-nothing 架構
shared-nothing架構是一種分布式計算架構,每一個節(jié)點都是獨立、自給的,物理資源不進行共享,整個系統都不存在單點競爭。最特別的是,所有節(jié)點都不互相共享內存及硬盤存儲?;炯軜嬋鐖D1(a)所示,當相關數據量很大而應用代碼并發(fā)量很小時,shared-nothing架構更加適合這種典型的OLAP應用。由于數據非共享,當節(jié)點出現故障時,其他節(jié)點要接管發(fā)生故障的節(jié)點的數據。其主要技術特點是大數據量處理、低并發(fā)、低可用性。目前Teradata、Greenplum、Netezza、Vertical等的數據倉庫產品采用的都是這種技術架構[2]。
圖1 數據庫架構簡析
shared-nothing架構還可以由廉價的普通PC和網絡硬件搭建,Google、Amazon、Yahoo和 MSN都證明了這一點。據報道,Google的搜索支撐集群就是由上萬臺普通的PC充當shared-nothing架構的節(jié)點。
(2)shared-disk 架構
shared-disk架構的每個獨立節(jié)點擁有自己的處理器和內存,這些節(jié)點接入同樣的物理存儲序列,結構如圖1(b)所示。當應用代碼量很大、高并發(fā)、相關數據量比較小時,shared-disk架構更加適合這種典型的OLTP應用。由于數據共享,當節(jié)點出現故障時,可以透明地切換到其他數據庫節(jié)點運行作業(yè)。其主要特點是高并發(fā)、高可用性。目前Exadata提供的一種混合式的數據庫架構,即shared-nothing與shared-disk架構的結合,能有效解決兩者的沖突,吸取兩種架構的長處,既可以滿足OLTP的高并發(fā)、高可用特點,又可以滿足OLAP的大數據量處理要求[2]。
云計算數據庫與傳統數據庫的主要優(yōu)勢在可擴展性上,傳統的數據倉庫采用shared-disk架構,基于令牌傳輸模型的限制,已經不能靠增加節(jié)點數目及存儲提高數據庫的查詢處理能力;shared-nothing架構基于數據切分策略,數據庫的可擴展性隨著節(jié)點增加??偟膩碚f,sharednothing架構相比shared-disk架構,其出色的可擴展性占據了明顯的優(yōu)勢,可以用更多的節(jié)點數支撐很大的數據量處理[1]。
在云計算數據庫產品測試中,除了需要考慮產品的基準測試處理能力外,還需要測試驗證其可擴展性??蓴U展性測試重點考察數據倉庫產品動態(tài)變更集群規(guī)模的能力,并測試系統性能是否隨著集群節(jié)點的擴展而線性擴展。
云計算數據庫產品測試技術標準的目的是全面考察各類數據倉庫產品的功能、性能、可靠性、可擴展性和穩(wěn)定性等。功能測試是按照現網系統實際需求測試數據倉庫產品需滿足的功能點;性能測試在參考現網實際加載、查詢和分析生產過程的基礎上,進行邏輯抽象形成標準性能測試用例;可靠性測試重點考察數據倉庫產品的故障恢復能力,通過模擬不同粒度和不同層面的故障,檢驗產品的高可用性;穩(wěn)定性測試主要驗證數據倉庫產品在大業(yè)務量背景下持續(xù)穩(wěn)定運行的能力。
(1)復雜查詢測試項
數據倉庫在應用過程中經常進行大表關聯和多表關聯查詢操作,但效率很低,不得不進行多表拆分處理,此性能對數據倉庫來說非常重要,通過此項測試,可以評價數據庫多表關聯查詢性能。多維表與事實表的關聯,是數據倉庫中經常用到的操作,該案例測試數據倉庫中多維表與事實表間關聯或連接的速度,提供多張大表(數量級包含億級和千萬級)和部分維表進行關聯查詢,主要測試案例包括以下3種:
·全表掃描;
·大表小表關聯之后匯總,再關聯大表;
·大表與多張小表關聯。
(2)即席查詢測試項
基于已有的數據模型,通常會有一些新的匯總或查詢需求,數據庫不會根據這些新的需求調整相關表的邏輯、物理設計,通常也不會創(chuàng)建新的數據庫對象以適應新的需求。數據庫平臺對這種即席查詢的處理能力,直接影響用戶對系統的評價。
(3)數據導出測試項
數據倉庫中存儲了大量數據,經常需要按照指定格式導出生成文件,提供給外圍系統,數據導出能力也是數據倉庫的重要指標,通過數據導出測試,驗證數據庫的導出能力。
(4)數據加載測試項
數據倉庫構建過程中經常需要把大量的數據文件加載到數據庫中,在數據加載任務較多時,加載性能就會變得比較低下,通過此項測試,了解數據庫在多任務并行加載情況下的效率,主要包括以下3種:
·存量數據裝載能力;
·空表數據裝載能力;
·增量數據裝載能力。
(5)混合負載場景測試項
數據倉庫在數據處理過程中,會同時進行裝載、計算、查詢、導出等綜合操作,通過該項測試,驗證數據倉庫各項操作的綜合處理性能。測試中數據倉庫同時運行下列測試案例:
·多表并發(fā)加載;
·數據導出(多個文件,每個文件大小基本一致);
·復雜數據查詢1(并行20個);
·復雜數據查詢2(并行20個)。
(1)管理負載
數據倉庫需要具備對不同操作類型、應用以及用戶請求進行優(yōu)先級調度的能力,以保證重要的操作類型、應用以及用戶請求能夠獲得更多的系統資源,優(yōu)先完成。本項測試的目的是考查數據倉庫平臺實現資源調度的方式和實現的效果。
(2)高可用測試
主要測試驗證常見故障情況下,數據庫系統的可用性,模擬測試的故障包括網絡連接異常、磁盤機故障、節(jié)點級故障,其中節(jié)點級故障包含管理節(jié)點和計算節(jié)點故障兩類。
(3)可擴展測試
主要通過對數據倉庫計算節(jié)點進行擴展,考察其擴展能力,包括擴展的操作方法、步驟、資源開銷、擴展后的性能增長情況等,同時考察系統對計算節(jié)點進行收縮(減少)的能力。
(4)穩(wěn)定性測試
數據倉庫經常會進行多任務大數據量數據的加載、查詢和計算操作,多任務情況下的穩(wěn)定性對數據倉庫來說也是至關重要的,通過此項測試,驗證數據庫在長時間運行時的穩(wěn)定性。
數據倉庫產品解決方案可分為一體機和軟硬分離兩種。一體機產品集成了服務器、存儲和軟件,以整機形式向客戶交付;軟硬分離產品廠商提供的軟件部署在通用硬件平臺上,其中存儲又分為使用服務器本地存儲和集中陣列存儲兩種。為滿足不同架構數據倉庫產品的測試需求,測試環(huán)境分為如下3種組網部署架構。
·測試環(huán)境1:通用x86架構服務器集群,使用服務器本地硬盤,如圖2所示,適用于支持x86通用硬件shared-nothing架構的MPP(大規(guī)模并行處理)數據倉庫軟件,如Greenplum、HPVertica等技術架構的測試。
圖2 通用x86架構服務器集群測試環(huán)境組網拓撲
·測試環(huán)境2:通用x86架構服務器集群,使用SAN存儲陣列,如圖2所示,適用于支持x86通用硬件shared-disk架構的并行處理數據倉庫軟件,如南大通用Gbase等技術架構的測試。
·測試環(huán)境3:專用數據庫一體機環(huán)境,如圖3所示,如 Teradata、Exadata、Netezza和 PDW 等一體機產品的測試。
圖3 專用數據庫一體機測試環(huán)境組網拓撲
其中,基準測試單元提供功能測試、性能測試、高可用測試、壓力測試;擴展測試單元由基準測試單元的一半硬件配置相同的服務器構成,服務器的數量設定應能充分體現擴展性測試性能差別;接口服務器設備提供原數據文件的存放,可用于直接或者間接的數據加載,目的是提供“性能測試”中“數據加載測試”和“數據導出測試”功能。為保證性能測試中數據加載測試的需求,此設備應提供充分的文件系統的I/O帶寬,建議此服務器使用高速存儲陣列。
由于數據倉庫產品的性能測試指標包含很多項,如數據裝載、復雜數據查詢、混合負載處理能力、數據導出等。由于每個指標都是不可或缺的測試項目,要綜合評定一個數據倉庫產品的處理能力,就要綜合考慮與性能相關的評測指標。本文提出給每個測試項設定指標權重,在權重的基礎上,再把各個測試指標單項累加,從而綜合考慮一個產品的處理能力。
(1)權重的設置
各個性能指標項權重的設置沒有一個固定的標準,可以根據電信的數據倉庫系統在一個月中對各個性能測試項目資源占比負載情況進行大概設置。資源占比是指負載項占用設備處理能力的時間比,可以在服務器后臺通過分析處理進程獲得。只要基本符合現網生產系統的應用情況即可,見表1。
表1 測試項權重設置情況示例
(2)產品的整體處理能力評估方法
在評估中采用百分制表示產品的處理能力,得分設計最高為100分,單項加權計算。
單個測試項評估模型:N單項=Tf/T×n,N總=N單項1+N單項2+N單項3+…,其中,N總為最后得分,n為分值權重;T是整個場景響應時間(根據線性度換算為設備最小配置或節(jié)點的響應時間);Tf指在相同測試環(huán)境下,某廠商能提供的最快響應時間;某些測試項小于或等于電信規(guī)范指標,定義響應時間的得分為滿分。
(3)單個測試項的處理能力評估示例
如“復雜查詢”測試案例的權重為30,查詢響應時間為:產品 1為 4s,產品 2為 5s,產品 3為 3s,則 Tf取 3s,各廠商測試項得分如下。
·產品 1:3/4×5=3.875。
·產品 2:3/5×5=3.2。
·產品 3:3/3×5=5(產品 3 滿分)。
(1)性能基準測試結果
對測試環(huán)境1的通用x86架構服務器集群測試環(huán)境(本地服務器存儲)、測試環(huán)境2的通用x86架構服務器集群(使用SAN存儲陣列)產品和測試環(huán)境3的專用數據庫一體機的某一產品進行性能基準測試,測試結果見表2。
表2 性能基準測試結果示例
在性能基準方面,在測試環(huán)境3中,由于使用專用的一體機,在性能測試中總體處理能力比通用x86架構服務器集群測試環(huán)境有優(yōu)勢。需要說明的是,雖然整體性能出色,但在數據更新、數據裝載和導入方面的性能與通用x86架構服務器集群測試環(huán)境差距不大。
(2)擴展性性能測試結果
以測試環(huán)境1的通用x86架構服務器集群測試環(huán)境為例,進行擴展性性能測試,測試結果如圖4所示。
圖4 擴展性測試結果示例
可以看出,采用shared-nothing架構的系統具有出色的擴展性能,只需要向系統內添加新的普通節(jié)點就能夠實現查詢性能接近線性的有效提升,這種特性能夠幫助數據庫系統較好地適應海量數據分析處理場景下查詢性能要求飛速提升的情況,系統只是根據性能要求添加處理節(jié)點就可以滿足查詢性能提升的要求。需要說明的是,由于數據裝載受限于文件服務器的能力,其性能并沒有線性增加。
TPC-H這一測試標準可以全真模擬商業(yè)應用環(huán)境的性能,在商業(yè)的應用環(huán)境中具有一定的適用性,而電信企業(yè)的數據倉庫系統工作負載類型與商業(yè)應用環(huán)境區(qū)別較大。針對這些問題,設計了測試標準和評估方法,該設計與企業(yè)應用系統相結合并得到應用,具有很高的可靠性和效率。本文希望建立一套完整的云計算數據庫產品測試標準,能夠衡量和評估不同數據倉庫產品的處理能力。
1 龍源.基于shared-nothing的分布式訪問層研究.南京郵電大學碩士學位論文,2009
2 陳全.云計算及其關鍵技術.計算機應用,2009,29(9)
3 張強.云計算時代的軟件復用.電腦知識與應用,2008,4(8)
4 尹國定.云計算——實現概念計算的方法.東南大學學報,2003,4(7)
5 陶彩霞.云計算在電信支撐系統領域的應用分析.電信科學,2010,26(10)
6 張云勇,陳清金.云計算安全關鍵技術分析.電信科學,2010,26(9)
7 詹義,段偉希,胡曉彥.云計算在電信IT支撐系統中的應用.電信科學,2011,27(11)