重慶出版集團(tuán)有限公司 陳仕達(dá)
目前不少省份的出版發(fā)行集團(tuán),已經(jīng)建立積累了擁有大量出版明細(xì)數(shù)據(jù)的省級(jí)大集中平臺(tái)。為了從海量的明細(xì)數(shù)據(jù)中分析提取出有價(jià)值的信息,一種由ETL(Extract-Transform-Load)技術(shù)來構(gòu)建征管指標(biāo)數(shù)據(jù)集市的解決方案被提出和應(yīng)用。其中ETL 過程完全基于Oracle 自帶功能,并采用了改進(jìn)的ETL 構(gòu)架,增加了臨時(shí)數(shù)據(jù)存儲(chǔ)區(qū),使得ETL 過程高效穩(wěn)定,并減輕了源數(shù)據(jù)庫的壓力。征管指標(biāo)系統(tǒng)的建立,使得出版工作人員能及時(shí)了解圖書狀況。
信息化發(fā)展至今,已取得不少重大成果。廣東省已完成大集中平臺(tái)的建設(shè),該平臺(tái)集成了眾多業(yè)務(wù)管理系統(tǒng),各業(yè)務(wù)系統(tǒng)每天都會(huì)產(chǎn)生海量數(shù)據(jù)。然而,這些數(shù)據(jù)仍只是業(yè)務(wù)層面的數(shù)據(jù),在原有的操作型數(shù)據(jù)庫系統(tǒng)中難以提煉升華為有價(jià)值的信息。為了更好地利用這些業(yè)務(wù)數(shù)據(jù),廣東出版集團(tuán)分析系統(tǒng)應(yīng)用ETL 技術(shù),并根據(jù)工作人員給出的業(yè)務(wù)口徑,將各類業(yè)務(wù)數(shù)據(jù)集中整合,建立征管指標(biāo)數(shù)據(jù)集市,旨在從海量的圖書數(shù)據(jù)提取有價(jià)值的信息,為稅收管理、績(jī)效考核和決策分析等,提供依據(jù)和指導(dǎo)。
特別指標(biāo)是對(duì)圖書關(guān)鍵數(shù)據(jù)的統(tǒng)計(jì)。通過對(duì)圖書業(yè)務(wù)系統(tǒng)數(shù)據(jù)的梳理,統(tǒng)計(jì)其中的關(guān)鍵數(shù)據(jù),形成特別指標(biāo)。這些指標(biāo)可以準(zhǔn)確地反映出當(dāng)前圖書出版管理狀況,所以,這些指標(biāo)既可以給決策者提供決策依據(jù),也可以指導(dǎo)一線工作者完成既定任務(wù),還可以用于績(jī)效考核[1]。
特別指標(biāo)系統(tǒng)的數(shù)據(jù)來源于省級(jí)大集中平臺(tái)數(shù)據(jù)庫,這類數(shù)據(jù)庫的數(shù)據(jù)來源于多個(gè)業(yè)務(wù)管理系統(tǒng),例如,認(rèn)定系統(tǒng)、申報(bào)系統(tǒng)、管理系統(tǒng)等。這類大集中平臺(tái)數(shù)據(jù)庫,屬于一個(gè)操作型數(shù)據(jù)的存儲(chǔ)平臺(tái)(Operational Data Store,ODS),集合了各圖書業(yè)務(wù)系統(tǒng)的明細(xì)數(shù)據(jù)。省級(jí)平臺(tái)數(shù)據(jù)庫每天會(huì)將屬于各市的數(shù)據(jù)下發(fā)到市級(jí)下發(fā)庫中,因此,要想分析地區(qū)的數(shù)據(jù),只需從其下發(fā)庫抽取即可。
數(shù)據(jù)倉庫是面向主題的、集成的、不可更新的(穩(wěn)定性)、不可修改的、隨時(shí)間變化的數(shù)據(jù)集合。
數(shù)據(jù)集市是部門或工作組級(jí)別的數(shù)據(jù)集合,通常只面向特定主題,屬于企業(yè)級(jí)數(shù)據(jù)倉庫的一個(gè)子集,分為獨(dú)立型和從屬型兩種數(shù)據(jù)集市。獨(dú)立型數(shù)據(jù)集市直接從應(yīng)用數(shù)據(jù)庫獲取數(shù)據(jù);從屬型數(shù)據(jù)集市從企業(yè)級(jí)數(shù)據(jù)倉庫或數(shù)據(jù)中心獲取數(shù)據(jù)。從屬型數(shù)據(jù)集市在體系結(jié)構(gòu)上比獨(dú)立型數(shù)據(jù)集市更穩(wěn)定[2]。
特別指標(biāo)數(shù)據(jù)集市具備數(shù)據(jù)倉庫的基本特征。特別指標(biāo)數(shù)據(jù)來源于省級(jí)大集中平臺(tái)數(shù)據(jù)庫,具有較高的可靠性和穩(wěn)定性。特別指標(biāo)系統(tǒng)是由一系列既相互獨(dú)立,又有一定關(guān)聯(lián)且能反映出圖書出版管理狀況組成的評(píng)價(jià)體系。所以,在某種程度上,特別指標(biāo)體系屬于一個(gè)數(shù)據(jù)集市或“小型數(shù)據(jù)倉庫”。
特別指標(biāo)系統(tǒng)作為一個(gè)“小數(shù)據(jù)倉庫”系統(tǒng),基本上包括數(shù)據(jù)源、ETL 模塊、目標(biāo)數(shù)據(jù)倉庫、數(shù)據(jù)前端展示等,其體系結(jié)構(gòu)如圖1 所示。形成數(shù)據(jù)倉庫ETL 的詳細(xì)過程如下文所述。

圖1 征管指標(biāo)系統(tǒng)體系結(jié)構(gòu)Fig.1 System structure of tax collection and management index system
ETL 是數(shù)據(jù)抽取(Extract)、轉(zhuǎn)換(Transform)、裝載(Loading)的三個(gè)過程。ETL 過程是構(gòu)建數(shù)據(jù)倉庫的重要環(huán)節(jié)包括:ETL 引擎首先從數(shù)據(jù)源抽取出所需的數(shù)據(jù),再進(jìn)行數(shù)據(jù)轉(zhuǎn)換與清洗,最后按照預(yù)先定義好的數(shù)據(jù)倉庫模型,將數(shù)據(jù)加載到數(shù)據(jù)倉庫中。這對(duì)數(shù)據(jù)的正確性和分析的時(shí)效性,有著直接影響。簡(jiǎn)單的ETL 體系結(jié)構(gòu)如圖2 所示。

圖2 簡(jiǎn)單的ETL 體系結(jié)構(gòu)Fig.2 Simple ETL architecture
ETL 過程的實(shí)現(xiàn)方式有多種方法,常用的有以下幾種:(1)是借助ETL 工具實(shí)現(xiàn)。常用的ETL 工具有:專業(yè)ETL 廠商的產(chǎn)品包括Ascential 公司的DataStageXE、Data Junction 公司的DataJunction、SAS 公司的Data Builder、Sagent 公司的Solution、Informatica 公司的ArdentDataStage 等,整體數(shù)據(jù)倉庫方案供應(yīng)商的產(chǎn)品包括Oracle 公司的Warehouse Builder、IBM 公司的Visual Warehousing、Micmsoft 公司的DTS 等。借助工具的優(yōu)點(diǎn)是,避免了復(fù)雜的編碼任務(wù),降低了工作難度,但是也存在靈活性差的缺點(diǎn)。(2)是用手工編碼的方式來實(shí)現(xiàn)。該方法的優(yōu)點(diǎn)是,靈活性和運(yùn)行效率都比較高,但是有編碼復(fù)雜、對(duì)技術(shù)要求比較高的缺點(diǎn)。(3)是ETL 工具和編碼相結(jié)合。第三方法兼有前面兩種方法的優(yōu)點(diǎn),能使ETL 的開發(fā)速度和效率得到極大的提高。
選擇何種方法實(shí)現(xiàn)ETL 過程,要根據(jù)項(xiàng)目的具體情況,在既能滿足開發(fā)需求,又能節(jié)約投資成本的基礎(chǔ)上選擇。經(jīng)過多方分析,在該項(xiàng)目的開發(fā)過程中選擇了手工編碼的方法,基于Oracle 11g 數(shù)據(jù)庫平臺(tái)的PL/SQL 語言來實(shí)現(xiàn)ETL 過程,這樣可以最大限度地發(fā)揮Oracle 數(shù)據(jù)庫的性能,并且比商業(yè)ETL 工具平臺(tái)更加靈活和實(shí)用。
根據(jù)項(xiàng)目的實(shí)際情況,這類系統(tǒng)采用了改進(jìn)的ETL 體系結(jié)構(gòu)。在征管指標(biāo)系統(tǒng)中ETL 總的流程圖如圖3 所示。

圖3 ETL 總的流程圖Fig.3 ETL general flow chart
數(shù)據(jù)鏈接:源系統(tǒng)數(shù)據(jù)庫和特別指標(biāo)系統(tǒng)數(shù)據(jù)庫都是Oracle 數(shù)據(jù)庫,要想在兩者之間建立連接是相當(dāng)方便的,只需要建一個(gè)公共數(shù)據(jù)庫鏈接(Public Database Link),即可實(shí)現(xiàn)跨平臺(tái)、跨網(wǎng)絡(luò)訪問數(shù)據(jù)。而前臺(tái)展示中采用了通用數(shù)據(jù)接口ODBC 連接[3]。
抽取方式:數(shù)據(jù)抽取有主動(dòng)式和被動(dòng)式兩種。主動(dòng)式是由源系統(tǒng),主動(dòng)將符合雙方定義好的格式數(shù)據(jù)抽取出來。主動(dòng)方式會(huì)對(duì)源系統(tǒng)產(chǎn)生依賴,對(duì)源系統(tǒng)的性能和網(wǎng)絡(luò)有較高要求;被動(dòng)式則是由ETL 引擎直接從數(shù)據(jù)源來獲取數(shù)據(jù),被動(dòng)方式比較獨(dú)立,但是要自己抽取數(shù)據(jù)。在這類系統(tǒng)中,由于沒有權(quán)限對(duì)源數(shù)據(jù)庫部署ETL 抽取策略,只能采用被動(dòng)方式抽取數(shù)據(jù)。
抽取內(nèi)容包括:為了不對(duì)源數(shù)據(jù)業(yè)務(wù)系統(tǒng)產(chǎn)生太大影響,可以將抽取時(shí)間安排在系統(tǒng)處于空閑的時(shí)段,抽取時(shí)就可以只抽取滿足征管指標(biāo)所需要的字段或記錄,而不必采用增量抽取。
抽取時(shí)間的選擇:在這類系統(tǒng)中,由于數(shù)據(jù)源是每天更新一次,所以采用的是基于時(shí)間的方式抽取,每天凌晨四點(diǎn)開始抽取數(shù)據(jù),此時(shí)源數(shù)據(jù)系統(tǒng)正處于空閑狀態(tài)。
特別指標(biāo)系統(tǒng)的數(shù)據(jù),來源于大集中平臺(tái)數(shù)據(jù)庫,這類數(shù)據(jù)庫是一個(gè)操作型數(shù)據(jù)存儲(chǔ),已經(jīng)整合了各個(gè)業(yè)務(wù)系統(tǒng)的數(shù)據(jù),并且對(duì)數(shù)據(jù)有較高的約束,也具有較高的完整性和準(zhǔn)確性。所以抽取過來的數(shù)據(jù)所要做的轉(zhuǎn)換工作并不十分繁重,大部分工作是要將這些小粒度的部門級(jí)細(xì)節(jié)數(shù)據(jù),經(jīng)過整合、轉(zhuǎn)換、清洗加工成特別指標(biāo)系統(tǒng)所需要的數(shù)據(jù)。
每個(gè)特別指標(biāo)數(shù)據(jù)都由一些特定的字段組成,源數(shù)據(jù)經(jīng)過抽取、轉(zhuǎn)換變成特別指標(biāo)數(shù)據(jù)后存在一個(gè)臨時(shí)表中,裝載時(shí)只需將這些數(shù)據(jù)插入到數(shù)據(jù)集市中的固定表即可。在插入數(shù)據(jù)之前,要將當(dāng)月已有的數(shù)據(jù)除去,再插入最新的數(shù)據(jù)。
每個(gè)指標(biāo)的加工過程都相對(duì)獨(dú)立,但有些指標(biāo)的加工過程所要抽取的源數(shù)據(jù),有重疊的地方,這部分重疊的源數(shù)據(jù)則需要采取預(yù)加工處理。所謂預(yù)加工,是指在加工指標(biāo)數(shù)據(jù)之前,先將數(shù)據(jù)抽取到本地?cái)?shù)據(jù)庫,經(jīng)過簡(jiǎn)單的轉(zhuǎn)換后緩存起來,等加工需要用到這些數(shù)據(jù)的指標(biāo)時(shí),直接從預(yù)加工數(shù)據(jù)抽取即可。這樣做的目的是避免重復(fù)抽取,減輕源數(shù)據(jù)系統(tǒng)的壓力,提高征管指標(biāo)系統(tǒng)的效率。
在這類系統(tǒng)中,ETL 過程的設(shè)計(jì)和配置,完全基于Oracle 自帶的功能,主要用到了PL/SQL 存儲(chǔ)過程和調(diào)度作業(yè)(Oracle Scheduler)。
每個(gè)指標(biāo)加工過程和預(yù)加工過程,都由相對(duì)應(yīng)的存儲(chǔ)過程來實(shí)現(xiàn),這些存儲(chǔ)過程都包含了ETL 的抽取、轉(zhuǎn)換與清洗、裝載過程。在指標(biāo)加工存儲(chǔ)過程執(zhí)行之前,先要完成預(yù)加工過程,再將需要重復(fù)抽取的數(shù)據(jù)先抽取到本地。每個(gè)指標(biāo)的加工過程都是相對(duì)獨(dú)立的,所以加工過程既可以采用并行方式,也可以采用串行方式。并行方式加工可以提高效率[4],但會(huì)增加設(shè)計(jì)和實(shí)現(xiàn)的復(fù)雜度;串行方式的優(yōu)點(diǎn)是設(shè)計(jì)和實(shí)現(xiàn)簡(jiǎn)單,但效率略低。由于大部分指標(biāo)的加工計(jì)算量并不是很大,部分指標(biāo)甚至能在十幾秒內(nèi)完成加工,所以在這類系統(tǒng)中采用了串行方式。
通過執(zhí)行JOB_ALL 存儲(chǔ)過程即可完成整個(gè)ETL 過程的執(zhí)行內(nèi)容,因?yàn)樵贘OB_ALL 中定義了各個(gè)指標(biāo)加工和預(yù)加工過程的執(zhí)行順序,并通過JOB_ONE 來調(diào)用各個(gè)存儲(chǔ)過程。JOB_ONE 除了提供調(diào)用接口,還會(huì)對(duì)各個(gè)過程加工情況進(jìn)行監(jiān)控,當(dāng)加工出現(xiàn)異常時(shí),便向異常表插入相關(guān)信息;若加工無異常,則往日志表插入信息,記錄指標(biāo)的加工信息。
在征管指標(biāo)系統(tǒng)中,利用調(diào)度作業(yè)(Oracle Scheduler),通過CREATE_JOB 函數(shù)創(chuàng)建一個(gè)定時(shí)調(diào)度作業(yè),設(shè)置作業(yè)的執(zhí)行時(shí)間為每天四時(shí),執(zhí)行內(nèi)容為JOB_ALL 存儲(chǔ)過程,即可實(shí)現(xiàn)ETL 過程的自動(dòng)調(diào)度。
ETL 技術(shù)在征管指標(biāo)系統(tǒng)上的實(shí)現(xiàn),從應(yīng)用上、數(shù)據(jù)上、功能上以及技術(shù)上滿足了稅務(wù)征管、監(jiān)控、查詢工作的需要以及對(duì)圖書出版分析和決策支持。
這類系統(tǒng)具有以下優(yōu)勢(shì):(1)ETL 過程完全基于Oracle 自有功能實(shí)現(xiàn),未使用任何ETL 軟件工具。商業(yè)ETL 軟件工具具有強(qiáng)大的功能,但收費(fèi)比較高,使用會(huì)給項(xiàng)目增高資金成本;若自行開發(fā)ETL 工具則又會(huì)耗費(fèi)較多的人力成本。這類系統(tǒng)采用Oracle 11g 自有功能實(shí)現(xiàn)了ETL 過程,大大降低了開發(fā)成本。(2)ETL 加工程序完全基于PL/SQL,具有較高的執(zhí)行效率。(3)良好的系統(tǒng)構(gòu)架方便后續(xù)開發(fā)。這類系統(tǒng)采用了三層構(gòu)架,數(shù)據(jù)訪問層(ETL)、業(yè)務(wù)邏輯層和表示層,都具有很好的可擴(kuò)展性,很方便后期向系統(tǒng)增加新的指標(biāo)。(4)權(quán)限劃分滿足不同級(jí)層人員方便使用此類系統(tǒng)。這類系統(tǒng)有市局、縣級(jí)、市下屬分局和縣下屬分局3 個(gè)不同職能范圍人員使用,各級(jí)人員只能看到自己部門所需的數(shù)據(jù)。
特別指標(biāo)分析系統(tǒng)在2018 年10 月開始上線使用,功能逐步得到完善,到目前已經(jīng)運(yùn)行了三年多,未出現(xiàn)異常情況。這類系統(tǒng)的設(shè)計(jì)在滿足需求的條件下,具有原理簡(jiǎn)捷、實(shí)現(xiàn)簡(jiǎn)便、運(yùn)行效率高、開發(fā)成本低等優(yōu)點(diǎn)。但其通用性有待進(jìn)一步提高,能讓ETL 的三個(gè)過程分開進(jìn)行會(huì)更好。