邵桐 朱明東
摘要:數(shù)據(jù)交換系統(tǒng)是服務(wù)數(shù)據(jù)交換需求的重要工具。在分析數(shù)據(jù)交換過程的基礎(chǔ)上,提煉了異構(gòu)數(shù)據(jù)交換的元數(shù)據(jù)模型,并以這些元數(shù)據(jù)模型為基礎(chǔ),設(shè)計實現(xiàn)了基于元數(shù)據(jù)的數(shù)據(jù)交換系統(tǒng),大大提高了系統(tǒng)的適應(yīng)性、靈活性、通用性和可擴展性,為大規(guī)模數(shù)據(jù)遷移和數(shù)據(jù)集成提供了基礎(chǔ)支撐。
關(guān)鍵詞關(guān)鍵詞:元數(shù)據(jù);數(shù)據(jù)交換;異構(gòu)數(shù)據(jù)
DOIDOI:10.11907/rjdk.161328
中圖分類號:TP392文獻標(biāo)識碼:A文章編號文章編號:16727800(2016)007015803
0引言
隨著信息技術(shù)的發(fā)展,業(yè)務(wù)領(lǐng)域的變化頻率越來越高,業(yè)務(wù)流程再造的速度越來越快,數(shù)據(jù)模型不斷升級,導(dǎo)致數(shù)據(jù)遷移需求不斷增加,跨部門業(yè)務(wù)融合也導(dǎo)致數(shù)據(jù)交換的需求持續(xù)增加。因此,建設(shè)一個數(shù)據(jù)交換平臺迫在眉睫。該平臺不僅可以提供點到點的系統(tǒng)間數(shù)據(jù)交換,還能實現(xiàn)點到面的跨部門、跨業(yè)務(wù)的數(shù)據(jù)集成,對整體數(shù)據(jù)資產(chǎn)提供有力支撐。
目前,主流的數(shù)據(jù)庫產(chǎn)品大多提供了數(shù)據(jù)遷移工具,但這些工具一般只適用于數(shù)據(jù)的導(dǎo)入、導(dǎo)出,并且只能支持一個或幾個特定類型的數(shù)據(jù)庫?,F(xiàn)在的問題是用戶使用的數(shù)據(jù)庫產(chǎn)品種類眾多,比如格式化的數(shù)據(jù)庫有Oracle、SQL Server、DB2、MySQL、Access、Sqlite、達夢、金倉等;半結(jié)構(gòu)化的數(shù)據(jù)格式有xls、csv、json、xml等;NoSQL類型的數(shù)據(jù)庫有MongoDB、Redis、 HBase等。無論是數(shù)據(jù)遷移還是數(shù)據(jù)集成,均需要在它們之間交換共享數(shù)據(jù)。如果工具只支持一對一的數(shù)據(jù)轉(zhuǎn)換,就可能需要開發(fā)、維護、學(xué)習(xí)使用一批這樣的工具。因此一個通用的數(shù)據(jù)交換系統(tǒng)是實現(xiàn)數(shù)據(jù)遷移和數(shù)據(jù)集成重要的基礎(chǔ)工具。
1數(shù)據(jù)交換過程
一個典型的數(shù)據(jù)交換過程包括以下幾個步驟:數(shù)據(jù)抽取、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)加載,為了順利實現(xiàn)數(shù)據(jù)交換,還需要對以上幾個過程加以控制,這就是人們常說的ETL(Extract Transform Load),這里加上了控制(Control),簡稱為ETLC,如圖1所示。
數(shù)據(jù)抽取,就是從數(shù)據(jù)源中獲取數(shù)據(jù)。進行數(shù)據(jù)抽取是進行數(shù)據(jù)交換的首要步驟,它是指從異構(gòu)的數(shù)據(jù)源中獲取需要的數(shù)據(jù)。這里的異構(gòu)數(shù)據(jù)源既包括傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)庫(支持SQL標(biāo)準(zhǔn))、半結(jié)構(gòu)化數(shù)據(jù)文件(如XML文件、JSON文件、XLS文件等),還包括不斷涌現(xiàn)的NoSQL數(shù)據(jù)庫(如:MongoDB、Memcached、HBase等)。建立一個通用的數(shù)據(jù)訪問接口是獲取不同數(shù)據(jù)源數(shù)據(jù)的關(guān)鍵。
數(shù)據(jù)轉(zhuǎn)換,就是根據(jù)目標(biāo)數(shù)據(jù)源的要求轉(zhuǎn)換數(shù)據(jù),實現(xiàn)異構(gòu)數(shù)據(jù)源之間的數(shù)據(jù)轉(zhuǎn)換是進行數(shù)據(jù)交換的重點。完成從異構(gòu)數(shù)據(jù)庫中提取數(shù)據(jù)之后,為了滿足目標(biāo)數(shù)據(jù)庫對數(shù)據(jù)的要求,需要對其進行相應(yīng)的轉(zhuǎn)換。建立一系列數(shù)據(jù)轉(zhuǎn)換規(guī)則是滿足不同數(shù)據(jù)轉(zhuǎn)換要求的關(guān)鍵。
數(shù)據(jù)加載,就是將數(shù)據(jù)加載到目標(biāo)數(shù)據(jù)源。進行數(shù)據(jù)加載是達成數(shù)據(jù)交換目標(biāo)的最后一環(huán),它需要按照事先制定的加載策略,將經(jīng)過轉(zhuǎn)換的、符合要求的數(shù)據(jù)有針對性地加載到目標(biāo)數(shù)據(jù)庫中。
過程控制,就是啟動、記錄數(shù)據(jù)抽取過程。對數(shù)據(jù)交換過程進行控制是數(shù)據(jù)交換的有效保障。針對不同的數(shù)據(jù)交換需求,應(yīng)能夠自動地啟動交換任務(wù),收集、記錄交換過程中的日志和異常信息,為掌握交換事務(wù),及時發(fā)現(xiàn)和處理各種異常提供支撐。
2數(shù)據(jù)交換元數(shù)據(jù)
通過對數(shù)據(jù)交換過程的分析可以看出,進行數(shù)據(jù)交換的基礎(chǔ)是對數(shù)據(jù)源及其映射關(guān)系進行描述,數(shù)據(jù)交換過程需要對數(shù)據(jù)抽取、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)加載、過程控制進行描述。元數(shù)據(jù)是對數(shù)據(jù)資源的規(guī)范化描述,對于數(shù)據(jù)交換過程中涉及到的數(shù)據(jù)源以及交換行為,可以抽象為以下幾類元數(shù)據(jù)。
2.1數(shù)據(jù)源描述元數(shù)據(jù)
數(shù)據(jù)交換實質(zhì)就是數(shù)據(jù)從一個數(shù)據(jù)源通過抽取、轉(zhuǎn)換、加載到另一個數(shù)據(jù)源,因此,數(shù)據(jù)交換的基礎(chǔ)就是要對數(shù)據(jù)源進行詳盡描述。
數(shù)據(jù)源按其類型不同,可概括為結(jié)構(gòu)化數(shù)據(jù)庫、半結(jié)構(gòu)化數(shù)據(jù)文件、NoSQL數(shù)據(jù)庫。無論何種類型的數(shù)據(jù)源,在進行數(shù)據(jù)交換時,首先都要知道如何訪問,這就需要描述數(shù)據(jù)源所屬的數(shù)據(jù)庫類型、數(shù)據(jù)庫版本、數(shù)據(jù)庫名稱、數(shù)據(jù)庫的URL、訪問數(shù)據(jù)庫的用戶名與密碼等信息。
數(shù)據(jù)庫邏輯上是由數(shù)據(jù)表組成,在進行數(shù)據(jù)交換時,要知道需要交換的數(shù)據(jù)在哪張表里,因此需要描述數(shù)據(jù)表信息,包括表的名稱、表的語義描述、表所屬的數(shù)據(jù)庫等。
數(shù)據(jù)表是由一系列字段構(gòu)成的,在進行數(shù)據(jù)交換時,最小的粒度是數(shù)據(jù)從源端的某張表的一個字段至目標(biāo)端一張表的某個字段,因此對表字段的描述至關(guān)重要。字段的描述信息包括:字段的名稱、字段的語義描述、字段所屬的數(shù)據(jù)表、字段類型、字段的約束信息等。
通過以上分析,對數(shù)據(jù)源的描述可以歸納為三元組,記為D(Db,Dt,Df),其中Db為數(shù)據(jù)庫描述信息,Dt為數(shù)據(jù)表的描述,Df為數(shù)據(jù)字段的描述,其邏輯關(guān)系如圖2所示。
2.2數(shù)據(jù)映射元數(shù)據(jù)
數(shù)據(jù)交換是不同數(shù)據(jù)源之間的數(shù)據(jù)轉(zhuǎn)換,最終反映的是數(shù)據(jù)字段之間的映射關(guān)系。對于異構(gòu)數(shù)據(jù)的交換,這種映射關(guān)系不僅包括不同數(shù)據(jù)要素之間的對應(yīng)關(guān)系,還包括字段之間的轉(zhuǎn)換規(guī)則。因此對于數(shù)據(jù)映射的描述,可以用四元組表示,記為R(Rd,Rt,Rf,Rc),其中Rd為源端數(shù)據(jù)源與目標(biāo)端數(shù)據(jù)源的對應(yīng)關(guān)系,Rt為源端數(shù)據(jù)表與目標(biāo)端數(shù)據(jù)表的對應(yīng)關(guān)系,Rf為源端數(shù)據(jù)字段與目標(biāo)端數(shù)據(jù)字段的對應(yīng)關(guān)系,Rc為源端數(shù)據(jù)字段與目標(biāo)端數(shù)據(jù)字段的轉(zhuǎn)換規(guī)則,其邏輯關(guān)系如圖3所示。
2.3交換操作元數(shù)據(jù)
實現(xiàn)異構(gòu)數(shù)據(jù)交換的核心功能是進行ETL,即抽取、轉(zhuǎn)換和加載,為了提高整個ETL過程的可控性、靈活性、通用性,需要對每個操作過程加以控制,因此交換操作元數(shù)據(jù)由數(shù)據(jù)抽取元數(shù)據(jù)、數(shù)據(jù)轉(zhuǎn)換元數(shù)據(jù)、數(shù)據(jù)加載元數(shù)據(jù)和操作控制元數(shù)據(jù)組成。2.3.1數(shù)據(jù)抽取元數(shù)據(jù)
數(shù)據(jù)抽取就是按照事先制定的抽取策略將需要的數(shù)據(jù)從源端數(shù)據(jù)源抽取出來,對于數(shù)據(jù)抽取元數(shù)據(jù)的描述可用三元組表示,記為E(Ed,Es,Ep)。其中Ed為源端數(shù)據(jù)源,包括數(shù)據(jù)源連接信息和結(jié)構(gòu)信息,Es為數(shù)據(jù)抽取范圍,包括需要抽取的表及字段信息的集合和每張表內(nèi)需要抽取的內(nèi)容范圍,Ep為抽取策略,分為手動抽取、定時抽取、準(zhǔn)實時抽取等。2.3.2數(shù)據(jù)轉(zhuǎn)換元數(shù)據(jù)
數(shù)據(jù)轉(zhuǎn)換就是根據(jù)目標(biāo)數(shù)據(jù)結(jié)構(gòu)與源數(shù)據(jù)結(jié)構(gòu)的映射關(guān)系,按照轉(zhuǎn)換規(guī)則,將從源端數(shù)據(jù)庫抽取出來的數(shù)據(jù)轉(zhuǎn)換為與目標(biāo)數(shù)據(jù)庫相適應(yīng)的數(shù)據(jù),描述數(shù)據(jù)轉(zhuǎn)換元數(shù)據(jù)可用四元組表示,記為T(Ts,Td,Te,Tr)。其中Ts為源端數(shù)據(jù)庫,包括數(shù)據(jù)結(jié)構(gòu)信息,Td為目標(biāo)數(shù)據(jù)庫,包括目標(biāo)數(shù)據(jù)庫結(jié)構(gòu)信息,Te為需要轉(zhuǎn)換的數(shù)據(jù),是數(shù)據(jù)抽取結(jié)果的實例,Tr為源端數(shù)據(jù)結(jié)構(gòu)與目標(biāo)端數(shù)據(jù)結(jié)構(gòu)的映射關(guān)系,是數(shù)據(jù)映射的實例。2.3.3數(shù)據(jù)加載元數(shù)據(jù)
數(shù)據(jù)加載就是將特定的、經(jīng)過轉(zhuǎn)換的數(shù)據(jù)加載到目標(biāo)數(shù)據(jù)庫中,描述數(shù)據(jù)加載元數(shù)據(jù)可用三元組表示,記為L(Ld,Lt,Lp)。其中Ld為目標(biāo)數(shù)據(jù)庫,包括數(shù)據(jù)庫連接信息和結(jié)構(gòu)信息,Lt為需要加載的數(shù)據(jù),是數(shù)據(jù)轉(zhuǎn)換結(jié)果的實例,Lp為數(shù)據(jù)加載策略,分為先清空后加載、增量加載、直接追加轉(zhuǎn)載等。2.3.4操作控制元數(shù)據(jù)
數(shù)據(jù)交換需求,可以抽象為一個交換任務(wù),一個交換任務(wù)是由若干個數(shù)據(jù)交換操作過程來實現(xiàn)的,為了使數(shù)據(jù)交換的各部分有機協(xié)調(diào)工作,需要操作元數(shù)據(jù)控制整個數(shù)據(jù)交換過程,描述操作元數(shù)據(jù)可用五元組表示,記為C(Ct,Cd,Cs,Cr,Cl)。Ct為與一次交換任務(wù)相關(guān)的信息,Cd為當(dāng)前交換操作的目標(biāo)數(shù)據(jù)庫,Cs為當(dāng)前交換操作的源數(shù)據(jù)庫,Cr為當(dāng)前交換操作關(guān)聯(lián)的數(shù)據(jù)映射集合,Cl為當(dāng)前交換操作過程產(chǎn)生的日志信息結(jié)合。3設(shè)計實現(xiàn)
3.1系統(tǒng)邏輯
基于以上數(shù)據(jù)交換元數(shù)據(jù),一個通用的數(shù)據(jù)交換系統(tǒng)框架由5層結(jié)構(gòu)組成,分別是數(shù)據(jù)源層、數(shù)據(jù)訪問層、元數(shù)據(jù)層、交換功能層和應(yīng)用層,如圖4所示。
數(shù)據(jù)源層:需要進行數(shù)據(jù)交換的所有數(shù)據(jù)源,能夠支持數(shù)據(jù)源動態(tài)地加入或退出。
數(shù)據(jù)訪問層:功能模塊訪問數(shù)據(jù)源的統(tǒng)一接口,它為上層的功能應(yīng)用屏蔽了異構(gòu)數(shù)據(jù)源訪問差異,其核心是為不同類型的數(shù)據(jù)源建立相應(yīng)的適配器。
元數(shù)據(jù)層:存儲數(shù)據(jù)交換功能的元數(shù)據(jù),它是數(shù)據(jù)交換功能的驅(qū)動源。
交換功能層:由實現(xiàn)數(shù)據(jù)抽取轉(zhuǎn)換的各功能模塊組成,包括數(shù)據(jù)抽取功能、數(shù)據(jù)轉(zhuǎn)換功能、數(shù)據(jù)、數(shù)據(jù)加載功能和過程控制功能等。
應(yīng)用層:提供數(shù)據(jù)源注冊管理、數(shù)據(jù)映射編輯、數(shù)據(jù)交換策略管理、交換任務(wù)管理、交換任務(wù)執(zhí)行、交換日志管理等用戶交互操作界面。
3.2系統(tǒng)應(yīng)用流程
數(shù)據(jù)交換系統(tǒng)應(yīng)用流程包括:
(1)注冊數(shù)據(jù)源。按照數(shù)據(jù)源描述元數(shù)據(jù)的要求,將需要進行數(shù)據(jù)交換的數(shù)據(jù)源加入到交換系統(tǒng)中,詳細描述數(shù)據(jù)源相關(guān)信息,包括連接信息和數(shù)據(jù)結(jié)構(gòu)信息。
(2)編輯數(shù)據(jù)映射。根據(jù)數(shù)據(jù)交換需求,針對參與交換的源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的結(jié)構(gòu)差異,建立字段級數(shù)據(jù)映射關(guān)系,選擇相應(yīng)的數(shù)據(jù)轉(zhuǎn)換函數(shù)。
(3)數(shù)據(jù)交換任務(wù)管理。創(chuàng)建數(shù)據(jù)交換任務(wù),設(shè)置交換策略。選擇源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫,確定任務(wù)啟動方式(手動或自動)、啟動時間、間隔周期等參數(shù);根據(jù)數(shù)據(jù)抽取、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)加載元數(shù)據(jù)要求,描述數(shù)據(jù)抽取范圍、數(shù)據(jù)抽取策略、數(shù)據(jù)加載策略等。
(4)數(shù)據(jù)交換任務(wù)執(zhí)行。根據(jù)交換任務(wù)啟動策略,啟動一個交換任務(wù)。系統(tǒng)完成數(shù)據(jù)抽取、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)加載等動作,并記錄任務(wù)執(zhí)行過程中的相關(guān)日志信息。
(5)數(shù)據(jù)交換日志管理。查看相關(guān)任務(wù)執(zhí)行過程中的日志信息。
4結(jié)語
本文通過分析數(shù)據(jù)交換過程,提煉出數(shù)據(jù)交換的元數(shù)據(jù)模型,基于這些元數(shù)據(jù)模型構(gòu)建了通用的數(shù)據(jù)交換系統(tǒng)。實踐表明,基于元數(shù)據(jù)驅(qū)動的數(shù)據(jù)交換系統(tǒng),屏蔽了異構(gòu)數(shù)據(jù)源的差異,適應(yīng)了數(shù)據(jù)映射規(guī)則的多樣可擴展特性,滿足了交換策略的靈活可定制要求。通過該系統(tǒng),可以集中管理異構(gòu)數(shù)據(jù)源,進行異構(gòu)數(shù)據(jù)之間的轉(zhuǎn)換,具有良好的適應(yīng)性、靈活性、通用性和可擴展性,為進行大規(guī)模的數(shù)據(jù)遷移和數(shù)據(jù)集成提供了基礎(chǔ)支撐。
參考文獻:
張朝暉,徐立臻,董逸生.一種基于SOA的企業(yè)集成平臺[J].計算機工程,2011,37(5):115119.
鄧新莉,張四平,劉 珊,等.基于中間件平臺的異構(gòu)數(shù)據(jù)交換與集成[J].四川兵工學(xué)報 ,2011,32(3):2628.
鄒衛(wèi)國,郭建勝,王毅.基于XML的異構(gòu)數(shù)據(jù)交換研究 [J]. 中國管理信息化,2009,12(24):184189.
王盼卿,劉增良,陶源.基于元數(shù)據(jù)的ETL工具集成研究 [J]. 2009,25(12):5861.
李慶陽,彭宏.面向數(shù)據(jù)質(zhì)量的ETL框架的設(shè)計與實現(xiàn)[J]. 2010,31(9):6670.
責(zé)任編輯(責(zé)任編輯:杜能鋼)