陳德莉
上海煙草集團(tuán)有限責(zé)任公司,信息中心上海,上海長(zhǎng)陽(yáng)路717號(hào) 200082
隨著煙草行業(yè)信息化發(fā)展的不斷深入,上海煙草數(shù)據(jù)中心的數(shù)據(jù)倉(cāng)庫(kù)逐年積累的數(shù)據(jù)不斷增多,在國(guó)家局煙草專賣(mài)局推出下行數(shù)據(jù)之后,上海煙草數(shù)據(jù)中心接入物流打掃碼數(shù)據(jù)、零售戶訂單數(shù)據(jù),社會(huì)庫(kù)存數(shù)據(jù)等,其中零售戶訂單數(shù)據(jù)的數(shù)據(jù)量逐年增多,逐步達(dá)到10TB以上,難以保障原有的數(shù)據(jù)加工、數(shù)據(jù)更新等數(shù)據(jù)處理性能?;谏鲜霰尘埃芯坎⑻岢隽肆闶蹜魯?shù)據(jù)處理性能優(yōu)化方法。
目前,處理海量數(shù)據(jù)的軟件產(chǎn)品分為兩類,一類是基于大規(guī)模并行處理(MPP)架構(gòu)的關(guān)系型數(shù)據(jù)庫(kù);另一類是基于Hadoop平臺(tái)的軟件產(chǎn)品。MPP(Massively Parallel Processing),即大規(guī)模并行處理,在數(shù)據(jù)庫(kù)非共享集群中,每個(gè)節(jié)點(diǎn)都有獨(dú)立的磁盤(pán)存儲(chǔ)系統(tǒng)和內(nèi)存系統(tǒng),業(yè)務(wù)數(shù)據(jù)根據(jù)數(shù)據(jù)庫(kù)模型和應(yīng)用特點(diǎn)劃分到各個(gè)節(jié)點(diǎn)上,每臺(tái)數(shù)據(jù)節(jié)點(diǎn)通過(guò)專用網(wǎng)絡(luò)或者商業(yè)通用網(wǎng)絡(luò)互相連接,彼此協(xié)同計(jì)算,作為整體提供數(shù)據(jù)庫(kù)服務(wù)。非共享數(shù)據(jù)庫(kù)集群有完全的可伸縮性、高可用、高性能、優(yōu)秀的性價(jià)比、資源共享等優(yōu)勢(shì)。MPP采用無(wú)共享資源結(jié)構(gòu),優(yōu)勢(shì)體現(xiàn)在大規(guī)模存并行計(jì)算上[1-3]。Hadoop分布式文件系統(tǒng)(HDFS)是運(yùn)行在通用硬件上的分布式文件系統(tǒng),它可提供一個(gè)高度容錯(cuò)性和高吞吐量的海量數(shù)據(jù)存儲(chǔ)解決方案[2]。通過(guò)對(duì)這兩種軟件產(chǎn)品的評(píng)估,并基于現(xiàn)有關(guān)系型數(shù)據(jù)庫(kù)的運(yùn)行環(huán)境,決定引入MPP架構(gòu)的關(guān)系型數(shù)據(jù)庫(kù):一方面可以通過(guò)改變數(shù)據(jù)庫(kù)的架構(gòu)提升數(shù)據(jù)處理性能;另一方面,可以不改變現(xiàn)有數(shù)據(jù)庫(kù)產(chǎn)品以及相關(guān)技術(shù)降低性能優(yōu)化造成的影響程度,以最小的投入完成性能提升[3]。在升級(jí)數(shù)據(jù)庫(kù)架構(gòu)之后,對(duì)現(xiàn)有的數(shù)據(jù)架構(gòu)做了進(jìn)一步的優(yōu)化,主要包括了數(shù)據(jù)物理模型和數(shù)據(jù)處理兩方面。
圖1 上海煙草數(shù)據(jù)中心零售戶訂單數(shù)據(jù)架構(gòu)現(xiàn)狀Fig.1 Current architecture of retail order database of Shanghai tobacco data center
上海煙草數(shù)據(jù)中心零售戶訂單數(shù)據(jù)庫(kù)架構(gòu)如圖1所示:零售戶訂單數(shù)據(jù)存儲(chǔ)在一臺(tái)DB2單機(jī)數(shù)據(jù)庫(kù)中,數(shù)據(jù)以分區(qū)表的方式存儲(chǔ),每個(gè)月作為一個(gè)數(shù)據(jù)分區(qū),每個(gè)分區(qū)的數(shù)據(jù)分別存儲(chǔ)在不同的表空間上。
零售戶訂單數(shù)據(jù)的應(yīng)用主要是統(tǒng)計(jì)若干零售戶訂單指標(biāo)用于一些分析型報(bào)表,指標(biāo)包括零售戶需求量和訂單量、三維五率、零售戶個(gè)數(shù)等。零售戶訂單數(shù)據(jù)處理的業(yè)務(wù)流程如圖2所示:
圖2 上海煙草數(shù)據(jù)中心零售戶訂單數(shù)據(jù)處理業(yè)務(wù)流程Fig.2 Retail order data processing flow of Shanghai tobacco data center
零售戶訂單數(shù)據(jù)分為三層,第一層是零售戶訂單原始數(shù)據(jù),該層數(shù)據(jù)為零售戶訂單原始數(shù)據(jù),通過(guò)國(guó)家局零售戶訂單數(shù)據(jù)下行到數(shù)據(jù)中心,該層數(shù)據(jù)加工不對(duì)數(shù)據(jù)做任何的轉(zhuǎn)換,是國(guó)家局零售戶訂單數(shù)據(jù)的拷貝副本;第二層是零售戶訂單多維模型數(shù)據(jù),該層數(shù)據(jù)由原始數(shù)據(jù)通過(guò)數(shù)據(jù)清洗、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)裝載等數(shù)據(jù)處理之后生成。數(shù)據(jù)清洗是指清洗原始數(shù)據(jù)中的臟數(shù)據(jù),數(shù)據(jù)轉(zhuǎn)換是指將原始數(shù)據(jù)轉(zhuǎn)換為星型或者雪花型模型數(shù)據(jù);第三層是零售戶訂單指標(biāo)數(shù)據(jù),該層數(shù)據(jù)由多維模型數(shù)據(jù)計(jì)算生成,用于各類報(bào)表和應(yīng)用。
根據(jù)統(tǒng)計(jì)每個(gè)數(shù)據(jù)處理環(huán)節(jié)的耗時(shí),上海煙草數(shù)據(jù)中心處理零售戶訂單數(shù)據(jù)的性能瓶頸主要在于數(shù)據(jù)匯總。原始訂單數(shù)據(jù)的時(shí)間細(xì)粒度為“日”,平均每天的數(shù)據(jù)量為800萬(wàn)條,通常都需要計(jì)算某段周期的數(shù)據(jù),例如周訂單量、月訂單量、月零售戶個(gè)數(shù)、三個(gè)月零售戶個(gè)數(shù)、年零售戶個(gè)數(shù)等,這些數(shù)據(jù)匯總處理耗用大量的時(shí)間。其中,統(tǒng)計(jì)零售戶個(gè)數(shù)耗時(shí)最長(zhǎng),零售戶個(gè)數(shù)指標(biāo)的統(tǒng)計(jì)口徑為:周期內(nèi)有訂單量的零售戶數(shù)量。計(jì)算零售戶指標(biāo)的耗時(shí)如下:
表1 計(jì)算零售戶指標(biāo)耗時(shí)情況Tab.1 Time consuming for calculating retailer indexes
通過(guò)分析上述性能問(wèn)題,發(fā)現(xiàn)統(tǒng)計(jì)零售戶訂單數(shù)據(jù)的性能瓶頸主要在于數(shù)據(jù)匯總環(huán)節(jié)?,F(xiàn)有煙草零售戶訂單數(shù)據(jù)部署在一臺(tái)單機(jī)DB2數(shù)據(jù)庫(kù)上,若要提升數(shù)據(jù)處理性能,使得計(jì)算時(shí)間能夠減少至60分鐘以內(nèi),在硬件方面,升級(jí)單機(jī)服務(wù)器硬件資源已經(jīng)意義不大,需要使用支持并行處理的海量數(shù)據(jù)處理產(chǎn)品,橫向擴(kuò)展硬件資源,提升數(shù)據(jù)處理并行度。為了驗(yàn)證其可行性,將若干年份的煙草零售戶訂單數(shù)據(jù)遷移到MPP架構(gòu)的DB2數(shù)據(jù)庫(kù)以及Hadoop平臺(tái)的HIVE中,測(cè)試兩個(gè)平臺(tái)下匯總1年煙草零售戶訂單數(shù)據(jù)的性能,發(fā)現(xiàn)兩者的數(shù)據(jù)匯總性能相對(duì)于現(xiàn)單機(jī)數(shù)據(jù)庫(kù)平臺(tái)均提升,運(yùn)行耗時(shí)如表2所示。
根據(jù)上述測(cè)試,引入海量數(shù)據(jù)處理產(chǎn)品提升零售戶訂單數(shù)據(jù)的處理性能是可行的。此外,目前的數(shù)據(jù)處理效率也并非達(dá)到最優(yōu)在數(shù)據(jù)處理業(yè)務(wù)方面,從多維模型數(shù)據(jù)直接計(jì)算各周期的指標(biāo)數(shù)據(jù),會(huì)存在部分?jǐn)?shù)據(jù)重復(fù)匯總的情況,例如月零售戶指標(biāo)與近3個(gè)月零售戶指標(biāo),月度數(shù)據(jù)是重復(fù)匯總的。因此還需要優(yōu)化現(xiàn)有數(shù)據(jù)架構(gòu),包括數(shù)據(jù)物理模型,數(shù)據(jù)處理業(yè)務(wù)流程等,以此提升數(shù)據(jù)處理效率。
表2 在DB2 MPP數(shù)據(jù)庫(kù)、Hadoop平臺(tái)、DB2單機(jī)數(shù)據(jù)庫(kù)下匯總1年零售戶訂單數(shù)據(jù)Tab.2 Performances of DB2 MPP, Hadoop and DB2 for summing 1-year retailer order data
目前,基于大規(guī)模并行處理(MPP)技術(shù)處理海量數(shù)據(jù)的軟件產(chǎn)品分為兩類,一類是基于大規(guī)模并行處理(MPP)架構(gòu)的關(guān)系型數(shù)據(jù)庫(kù);另一類是基于Hadoop平臺(tái)的軟件產(chǎn)品。上海煙草集團(tuán)數(shù)據(jù)中心列舉了若干評(píng)估項(xiàng)對(duì)兩類產(chǎn)品進(jìn)行評(píng)估,評(píng)估項(xiàng)列表如下所示:
表3 海量數(shù)據(jù)處理產(chǎn)品選型評(píng)估項(xiàng)列表Tab.3 List of evaluation for massive data processing products
根據(jù)評(píng)估結(jié)果,決定采用基于大規(guī)模并行處理(MPP)架構(gòu)的關(guān)系型數(shù)據(jù)庫(kù)作為處理的煙草行業(yè)訂單數(shù)據(jù)的平臺(tái),提升處理性能。針對(duì)單機(jī)數(shù)據(jù)庫(kù)在處理海量數(shù)據(jù)時(shí)的性能問(wèn)題,重構(gòu)數(shù)據(jù)庫(kù)架構(gòu)為大規(guī)模并行處理MPP架構(gòu),以并行處理的方式計(jì)算煙草零售戶訂單數(shù)據(jù)相關(guān)計(jì)量指標(biāo),提升數(shù)據(jù)處理性能。簡(jiǎn)單來(lái)說(shuō),MPP是將任務(wù)并行的分散到多個(gè)服務(wù)器和節(jié)點(diǎn)上,在每個(gè)節(jié)點(diǎn)上計(jì)算完成后,將各自部分的結(jié)果匯總在一起得到最終的結(jié)果??傮w架構(gòu)如圖3所示:
圖3 大規(guī)模并行處理總體架構(gòu)Fig .3 Massive parallel processing (MPP) architecture
根據(jù)上述大規(guī)模并行處理MPP數(shù)據(jù)庫(kù)架構(gòu),在數(shù)據(jù)中心增設(shè)以大規(guī)模并行處理MPP為架構(gòu)的數(shù)據(jù)庫(kù),用于存儲(chǔ)和處理煙草零售戶訂單數(shù)據(jù)。MPP數(shù)據(jù)庫(kù)中的訂單數(shù)據(jù)均勻的分布在每個(gè)處理節(jié)點(diǎn)的磁盤(pán)上,獨(dú)享每個(gè)處理節(jié)點(diǎn)的硬件資源,在處理數(shù)據(jù)時(shí),每個(gè)節(jié)點(diǎn)并行計(jì)算,達(dá)到提升性能的目的。
上海煙草數(shù)據(jù)中心配置5臺(tái)服務(wù)器用于部署MPP數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)平臺(tái)為IBM DB2。其中,1臺(tái)服務(wù)器作為主節(jié)點(diǎn),用于數(shù)據(jù)庫(kù)軟件安裝和處理節(jié)點(diǎn)之間的通信,4臺(tái)服務(wù)器作為處理節(jié)點(diǎn),用于數(shù)據(jù)存儲(chǔ)和計(jì)算。其硬件配置如下:
表4 上海煙草數(shù)據(jù)中心MPP數(shù)據(jù)庫(kù)硬件配置Tab.4 MPP hardware configuration of Shanghai tobacco data center
以MPP架構(gòu)安裝DB2數(shù)據(jù)庫(kù)的實(shí)現(xiàn)過(guò)程如下:
(1)數(shù)據(jù)庫(kù)安裝
在主節(jié)點(diǎn)安裝數(shù)據(jù)庫(kù)軟件,設(shè)置與各處理節(jié)點(diǎn)間的無(wú)密碼通信,在每個(gè)器節(jié)點(diǎn)配置通信端口,并為主節(jié)點(diǎn)和處理節(jié)點(diǎn)配置數(shù)據(jù)庫(kù)分區(qū),實(shí)現(xiàn)以MPP架構(gòu)安裝DB2數(shù)據(jù)庫(kù)。
(2)處理節(jié)點(diǎn)上的磁盤(pán)劃分
處理節(jié)點(diǎn)用于存儲(chǔ)和處理零售戶訂單數(shù)據(jù),可以在每個(gè)處理節(jié)點(diǎn)中創(chuàng)建若干個(gè)容量相同的磁盤(pán)分區(qū),提升每個(gè)節(jié)點(diǎn)的IO并行度。
(3)數(shù)據(jù)庫(kù)表空間創(chuàng)建
為數(shù)據(jù)庫(kù)設(shè)置合理的緩沖池,分區(qū)組;可以將磁盤(pán)分區(qū)作為存儲(chǔ)器添加到數(shù)據(jù)庫(kù)并創(chuàng)建數(shù)據(jù)庫(kù)自動(dòng)管理的大型表空間和臨時(shí)表空間,以此提升表空間性能。
(4)優(yōu)化數(shù)據(jù)庫(kù)參數(shù)
調(diào)整數(shù)據(jù)庫(kù)性能參數(shù)優(yōu)化性能,參數(shù)包括:應(yīng)用堆大小、最大請(qǐng)求IO數(shù)量、排序堆、索引掃描速度、最大并行度、通信緩沖池大小、最大文件打開(kāi)數(shù)量、應(yīng)用程序堆大小等。
在數(shù)據(jù)庫(kù)架構(gòu)升級(jí)成大規(guī)模并行處理(MPP)架構(gòu)后,原先的數(shù)據(jù)架構(gòu)也需要做相應(yīng)的優(yōu)化,主要體現(xiàn)在數(shù)據(jù)物理模型和數(shù)據(jù)處理流程兩個(gè)方面。
4.1.1 數(shù)據(jù)物理模型優(yōu)化設(shè)計(jì)
(1)分區(qū)鍵設(shè)計(jì)
在大規(guī)模并行處理MPP架構(gòu)模式下,任何資源都是非共享的,也包括了磁盤(pán)非共享,數(shù)據(jù)在存儲(chǔ)時(shí)必須均勻的分布到各處理節(jié)點(diǎn)的磁盤(pán)上,否則各處理節(jié)點(diǎn)處理的數(shù)據(jù)量不同,導(dǎo)致各節(jié)點(diǎn)處理耗時(shí)不同??梢允褂霉7植嫉姆绞剑蓴?shù)據(jù)庫(kù)將數(shù)據(jù)鍵的值映射成哈希值,均勻存儲(chǔ)到每個(gè)處理節(jié)點(diǎn)。設(shè)計(jì)數(shù)據(jù)庫(kù)分區(qū)的基本原則是:將數(shù)據(jù)量大的表分布在所有分區(qū)上提高并行處理能力;將數(shù)據(jù)量小的表放置在單一分區(qū)上;減少分區(qū)間的通信[4]。
圖4 MPP數(shù)據(jù)庫(kù)均勻分布數(shù)據(jù)原理Fig.4 Data allocation mode of MPP database
數(shù)據(jù)分區(qū)鍵可以是一個(gè)字段,也可以是多個(gè)字段,數(shù)據(jù)分區(qū)鍵的值需要滿足數(shù)量多,分布廣的特點(diǎn),以確保數(shù)據(jù)可以均勻分布到每個(gè)處理節(jié)點(diǎn)。
(2)數(shù)據(jù)表分區(qū)設(shè)計(jì)
對(duì)于海量結(jié)構(gòu)化數(shù)據(jù),可以設(shè)置數(shù)據(jù)分區(qū)表提升數(shù)據(jù)訪問(wèn)性能。表在數(shù)據(jù)庫(kù)中是一個(gè)邏輯的概念,數(shù)據(jù)分區(qū)表可以視作一個(gè)包含了多個(gè)子表的表簇[5],當(dāng)存儲(chǔ)海量結(jié)構(gòu)化數(shù)據(jù)時(shí),可以設(shè)置數(shù)據(jù)分布表,數(shù)據(jù)被拆分為若干個(gè)部分,分別存儲(chǔ)到數(shù)據(jù)分區(qū)表中的每一個(gè)子表,減少不必要的數(shù)據(jù)訪問(wèn)。
當(dāng)設(shè)置數(shù)據(jù)分區(qū)表時(shí),需要明確指定表分區(qū)鍵以及鍵值范圍,表分區(qū)鍵以及鍵值的范圍可以根據(jù)具體的數(shù)據(jù)使用情況而定,一般時(shí)間序列的數(shù)據(jù)以日期字段作為數(shù)據(jù)表分區(qū)鍵,按月、季、年等周期分區(qū)。
(3)數(shù)據(jù)索引設(shè)計(jì)
在大規(guī)模并行處理(MPP)數(shù)據(jù)庫(kù)中對(duì)表中的字段設(shè)置分區(qū)索引,提升數(shù)據(jù)查詢性能;除此之外,還可以使用多維聚簇分區(qū)索引(MDC),MDC在物理上按照某個(gè)或者某幾個(gè)字段進(jìn)行群集,采用了“BLOCK”來(lái)進(jìn)行索引的組織,一個(gè)BLOCK會(huì)包含很多條傳統(tǒng)索引機(jī)制所采用的“行”記錄,因而提高了索引的粒度。使得索引的定位變得更快。
4.1.2 數(shù)據(jù)處理流程優(yōu)化設(shè)計(jì)
目前數(shù)據(jù)處理過(guò)程中存在重復(fù)匯總數(shù)據(jù)的情況也影響了性能,MPP數(shù)據(jù)庫(kù)提升數(shù)據(jù)處理并行度,而優(yōu)化原有的數(shù)據(jù)處理業(yè)務(wù)層次,減少大批量數(shù)據(jù)重復(fù)匯總則可以提升數(shù)據(jù)處理效率。在多維模型數(shù)據(jù)層和指標(biāo)數(shù)據(jù)層之間添加一個(gè)中間層,中間層的數(shù)據(jù)按時(shí)間周期匯總。通過(guò)拆解各指標(biāo)數(shù)據(jù)的計(jì)算過(guò)程,提煉其中重復(fù)匯總的數(shù)據(jù),將這些數(shù)據(jù)納入中間層做統(tǒng)一匯總,在指標(biāo)數(shù)據(jù)計(jì)算時(shí),直接提取已匯總的數(shù)據(jù)計(jì)算,提升計(jì)算效率。
中間層可以視為指標(biāo)數(shù)據(jù)的預(yù)處理層,由于在計(jì)算指標(biāo)數(shù)據(jù)時(shí),通常的統(tǒng)計(jì)周期為周、月、季、年等。中間層可以充分利用MPP數(shù)據(jù)庫(kù)大規(guī)模并行處理的性能優(yōu)勢(shì),預(yù)先按時(shí)間周期快速匯總數(shù)據(jù),縮小了在指標(biāo)計(jì)算時(shí)的數(shù)據(jù)規(guī)模,提升處理性能;對(duì)于個(gè)別無(wú)法使用中間層數(shù)據(jù)計(jì)算的指標(biāo),也可直接使用多維模型數(shù)據(jù)層的數(shù)據(jù)計(jì)算。
圖5 數(shù)據(jù)處理流程優(yōu)化設(shè)計(jì)Fig.5 Optimization of data processing flow
4.2.1 數(shù)據(jù)物理模型優(yōu)化實(shí)現(xiàn)
零售戶訂單數(shù)據(jù)中涉及的業(yè)務(wù)數(shù)據(jù)主要為零售戶信息和卷煙訂單信息。其中零售戶信息包括零售戶號(hào)、地區(qū)、城鄉(xiāng)分類、經(jīng)營(yíng)業(yè)態(tài)、經(jīng)營(yíng)規(guī)模;訂單信息包括:訂單號(hào)、賣(mài)出方、卷煙條碼、需求量、訂單量、訂單金額。
(1)分區(qū)鍵設(shè)定
在MPP數(shù)據(jù)庫(kù)中零售戶訂單數(shù)據(jù)的分區(qū)鍵設(shè)為[訂單號(hào),卷煙條碼],訂單號(hào)和卷煙條碼其兩者的組合滿足數(shù)量多,分布廣的特點(diǎn),是合適的分區(qū)鍵。
(2)數(shù)據(jù)表分區(qū)設(shè)定
以數(shù)據(jù)的業(yè)務(wù)日期為表分區(qū)鍵按月分區(qū)數(shù)據(jù)。大部分零售戶訂單數(shù)據(jù)涉及的統(tǒng)計(jì)指標(biāo)以月為周期,按月分區(qū)數(shù)據(jù),可以有效提升數(shù)據(jù)訪問(wèn)性能。
(3)數(shù)據(jù)索引設(shè)定
設(shè)置[賣(mài)出方]、[零售戶號(hào)]、[卷煙條碼]、[地區(qū)]字段的分區(qū)索引,提升這些字段與維度表關(guān)聯(lián)的性能;設(shè)置[業(yè)務(wù)日期,地區(qū)編碼]字段為多維聚簇分區(qū)索引(MDC),使相同鍵值的數(shù)據(jù)在物理上存儲(chǔ)在相鄰的數(shù)據(jù)塊,提升數(shù)據(jù)讀取性能。
4.2.2 數(shù)據(jù)處理流程優(yōu)化實(shí)現(xiàn)
在統(tǒng)計(jì)煙草零售戶訂單數(shù)據(jù)相關(guān)的指標(biāo)前,預(yù)先以周、月等時(shí)間周期維度以及組織機(jī)構(gòu)、地區(qū)等維度匯總訂單量、需求量、零售戶數(shù)等度量作為煙草零售戶訂單中間層數(shù)據(jù),部署在MPP數(shù)據(jù)庫(kù)上,縮小統(tǒng)計(jì)最終指標(biāo)的數(shù)據(jù)源的數(shù)據(jù)量,以此提升數(shù)據(jù)處理性能。計(jì)算后的指標(biāo)數(shù)據(jù)其數(shù)據(jù)量已經(jīng)減少,以單機(jī)數(shù)據(jù)庫(kù)的方式存儲(chǔ),提供各數(shù)據(jù)集市和應(yīng)用系統(tǒng)使用。數(shù)據(jù)量對(duì)比如下所示:
表5 1年煙草零售戶訂單數(shù)據(jù)在預(yù)處理前與預(yù)處理后的數(shù)據(jù)量Tab.5 Amount of 1-year retail order data before and after pretreatment
在完成上述優(yōu)化后,將單機(jī)數(shù)據(jù)庫(kù)中的零售戶訂單多維模型數(shù)據(jù)同步到MPP架構(gòu)數(shù)據(jù)庫(kù),并初始化中間層匯總數(shù)據(jù),統(tǒng)計(jì)從零售戶訂單多維模型數(shù)據(jù)處理成為指標(biāo)數(shù)據(jù)的運(yùn)行耗時(shí),驗(yàn)證零售戶數(shù)指標(biāo)計(jì)算性能。分別統(tǒng)計(jì)優(yōu)化前在單機(jī)數(shù)據(jù)庫(kù)上使用原有業(yè)務(wù)處理流程的運(yùn)行耗時(shí)和在MPP數(shù)據(jù)庫(kù)上使用優(yōu)化后業(yè)務(wù)處理流程的運(yùn)行耗時(shí)(兩者均計(jì)算1年的零售戶訂單量數(shù)據(jù)),其計(jì)算耗時(shí)如下:
表6 優(yōu)化前單機(jī)數(shù)據(jù)庫(kù)與優(yōu)化后MPP數(shù)據(jù)庫(kù)計(jì)算零售戶指標(biāo)耗時(shí)Tab.6 Time consuming of calculating retailer indexes before and after optimization
對(duì)比優(yōu)化前后的數(shù)據(jù)同時(shí)耗時(shí),優(yōu)化后的性能提升90%以上,優(yōu)化效果顯著。
本文針對(duì)上海煙草數(shù)據(jù)中心零售戶訂單數(shù)據(jù)處理性能問(wèn)題進(jìn)行了全面的分析和研究,給出了優(yōu)化方法,主要在數(shù)據(jù)庫(kù)架構(gòu)和數(shù)據(jù)處理業(yè)務(wù)兩個(gè)方面,從實(shí)施過(guò)程和驗(yàn)證的結(jié)果來(lái)看,解決了上海煙草數(shù)據(jù)中心零售戶訂單數(shù)據(jù)處理性能問(wèn)題。
通過(guò)上述的優(yōu)化實(shí)施和驗(yàn)證,在煙草零售戶訂單數(shù)據(jù)處理方面取得了一定效果并積累的較多的實(shí)施經(jīng)驗(yàn),后續(xù)將在以下幾個(gè)方面繼續(xù)優(yōu)化和完善:
(1)基于已有的MPP數(shù)據(jù)庫(kù)架構(gòu),增加若干數(shù)據(jù)庫(kù)節(jié)點(diǎn),測(cè)試性能提升與數(shù)據(jù)庫(kù)節(jié)點(diǎn)的數(shù)量關(guān)系,計(jì)算最優(yōu)節(jié)點(diǎn)數(shù)。
(2)進(jìn)一步研究和優(yōu)化數(shù)據(jù)處理業(yè)務(wù),提升零售戶訂單處理性能。
(3)基于上述研究成果,在上海煙草數(shù)據(jù)中心內(nèi)形成統(tǒng)一的海量數(shù)據(jù)處理技術(shù)標(biāo)準(zhǔn)。