則庫。在進(jìn)行多種數(shù)據(jù)庫操作過程中,為保證規(guī)則 中表名、字段名、字段類型的一致性,滿足數(shù)據(jù)的約束條件,經(jīng)可視化編輯建立的抽取規(guī)則, 需要進(jìn)行語法分析和校驗(yàn),以避免人為錯(cuò)誤,保證數(shù)據(jù)抽取的正確執(zhí)行。
[0063] 數(shù)據(jù)ETL的執(zhí)行分成4個(gè)部分:①連接到數(shù)據(jù)源;②根據(jù)抽取規(guī)則解析SQL語句, 并利用執(zhí)行優(yōu)化規(guī)則優(yōu)化被解析之后的SQL語句,從源數(shù)據(jù)庫的一個(gè)或多個(gè)數(shù)據(jù)表中,查 詢得到中間結(jié)果數(shù)據(jù);③轉(zhuǎn)換處理中間結(jié)果數(shù)據(jù),得到結(jié)果數(shù)據(jù);④結(jié)果數(shù)據(jù)加載(存儲(chǔ)) 到目標(biāo)數(shù)據(jù)庫的目標(biāo)表中。由此可見,數(shù)據(jù)ETL包含了執(zhí)行數(shù)據(jù)抽取工作所需的完整信息, 包括源數(shù)據(jù)庫、源數(shù)據(jù)表、抽取及執(zhí)行優(yōu)化規(guī)則、轉(zhuǎn)換規(guī)則、目標(biāo)數(shù)據(jù)庫、目標(biāo)數(shù)據(jù)表等。
[0064] 本發(fā)明的每個(gè)層次實(shí)現(xiàn)不同的功能,以下為具體描述:
[0065] 1)平臺(tái)層
[0066] 包括各種需要通過多數(shù)據(jù)庫系統(tǒng)層對(duì)外接口訪問集成信息的應(yīng)用。平臺(tái)層包含 硬件信息、操作系統(tǒng)、數(shù)據(jù)庫和通信協(xié)議的配置接口,硬件平臺(tái)主要有小型機(jī)、微機(jī)服務(wù)器, 操作系統(tǒng)有 Windows、Unix、AIX 等,數(shù)據(jù)庫有 Oracle、DB2、SQLSERVER、SYBASE,通過統(tǒng)一配 置接口,實(shí)現(xiàn)應(yīng)用系統(tǒng)的無縫集成,對(duì)于其他應(yīng)用層而言,訪問數(shù)據(jù)庫調(diào)用平臺(tái)層提供的接 口,就好像在訪問一個(gè)數(shù)據(jù)庫一樣,達(dá)到同時(shí)訪問多個(gè)數(shù)據(jù)庫中數(shù)據(jù)的作用。
[0067] 2)語義層
[0068] 語義層實(shí)現(xiàn)包括查詢編譯器和執(zhí)行引擎的構(gòu)建,不同的數(shù)據(jù)源查詢語句不同,根 據(jù)數(shù)據(jù)源特性,確定語義,并進(jìn)行解析、優(yōu)化、執(zhí)行。
[0069] 3)數(shù)據(jù)庫管理系統(tǒng)層
[0070] 利用提供的圖形化界面進(jìn)行數(shù)據(jù),數(shù)據(jù)表以及字段的配置,包括數(shù)據(jù)庫及數(shù)據(jù)表 配置,服務(wù)配置主要包括服務(wù)地址更新和數(shù)據(jù)庫連接更新。
[0071] 4) ETL 規(guī)則庫
[0072] 首先根據(jù)數(shù)據(jù)源不同,確定不同的ETL規(guī)則類,其次針對(duì)具體的數(shù)據(jù)源,制定ETL 規(guī)則,實(shí)現(xiàn)規(guī)則庫的構(gòu)建。規(guī)則庫是用來定義和存儲(chǔ)數(shù)據(jù)抽取、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)加載規(guī)則 的。
[0073] 如圖2所示:
[0074] STEPl :獲取并解析源數(shù)據(jù)庫連接字符串;數(shù)據(jù)源包括EXCEL數(shù)據(jù)源、平面文件數(shù) 據(jù)源、關(guān)系數(shù)據(jù)庫數(shù)據(jù)源等,其中關(guān)系數(shù)據(jù)庫數(shù)據(jù)源包括〇racle、Sql SerVer、DB2等。數(shù)據(jù) 源連接字符串需要確認(rèn)以下字段,以O(shè)racle為例,包括:服務(wù)器名稱、數(shù)據(jù)庫名稱、用戶、密 碼等。
[0075] STEP2 :獲取并解析目標(biāo)數(shù)據(jù)庫連接字符串;目標(biāo)數(shù)據(jù)庫種類和數(shù)據(jù)源種類相同, 連接字符串字段信息基本相同。假定目標(biāo)數(shù)據(jù)庫為Sql Server。
[0076] STEP3 :通過圖形化配置界面進(jìn)行數(shù)據(jù)庫,表名,字段的配置;以單個(gè)數(shù)據(jù)源為例:
[0077] 數(shù)據(jù)源(Oracle)源表數(shù)據(jù)字典如表1所示,源表如表2所示:
[0078] 表 1
[0079]
[0080]
[0081]
[0082] 目標(biāo)數(shù)據(jù)庫(Sql Server)目標(biāo)表數(shù)據(jù)字典如表3所示:
[0083] 表 3
[0084]
[0085] 定義字段匹配規(guī)則如表4所示:
[0086] 表 4
[0087]
[0088] 數(shù)據(jù)類型轉(zhuǎn)換分析如表5所示:
[0089] 表 5
[0090]
[0091] 定義值轉(zhuǎn)換規(guī)則如表6所示:
[0092] 表 6
[0093]
[0094] 定義數(shù)據(jù)類型轉(zhuǎn)換規(guī)則如表7所示:
[0095] 表 7
[0096]
[0097] 定義數(shù)據(jù)拆分規(guī)則:
[0098] 1)加載目標(biāo)數(shù)據(jù)庫。
[0099] 2)定義拆分規(guī)則:在目標(biāo)數(shù)據(jù)庫中已存在記錄,表示為Conditionl ;在目標(biāo)數(shù)據(jù) 庫中為存在記錄,表示為Condition〗。
[0100] 3)定義Conditionl,規(guī)則處理方法。
[0101] 4)定義Conditon2,規(guī)則處理方法。
[0102] STEP4 :判斷源數(shù)據(jù)庫和目標(biāo)庫的數(shù)據(jù)庫類型,并進(jìn)行ETL規(guī)則庫匹配;
[0103] STEP5 :連接數(shù)據(jù)源與目標(biāo)數(shù)據(jù)庫;
[0104] STEP6 :解析ETL抽取規(guī)則字符串,得到數(shù)據(jù)源表的SQL語句;
[0105] STEP7 :啟動(dòng)查詢編譯器,處理SQL語句并驗(yàn)證是否存在沖突與錯(cuò)誤;
[0106] STEPS :啟動(dòng)優(yōu)化引擎(即查詢編譯器),根據(jù)ETL規(guī)則庫匹配的結(jié)果對(duì)SQL語句進(jìn) 行優(yōu)化;
[0107] STEP9 :啟動(dòng)執(zhí)行引擎,調(diào)用平臺(tái)層提供的API,執(zhí)行優(yōu)化后的SQL語句;
[0108] STEPlO :獲得多數(shù)據(jù)庫ETL數(shù)據(jù),存入數(shù)據(jù)緩沖區(qū);
[0109] STEPll :根據(jù)ETL規(guī)則引擎,整理數(shù)據(jù)緩沖區(qū)存入的數(shù)據(jù),并注入到目標(biāo)表;
[0110] STEP12 :驗(yàn)證注入是否有效,并提示。
[0111] 本發(fā)明已經(jīng)成功應(yīng)用于多種類別的信息系統(tǒng)集成中,比如制造執(zhí)行系統(tǒng)、財(cái)務(wù)系 統(tǒng)、集控系統(tǒng)等,通過本發(fā)明的應(yīng)用,也極大地提高了多數(shù)據(jù)庫集成的便捷性和穩(wěn)定性。
【主權(quán)項(xiàng)】
1. 可視化多數(shù)據(jù)庫ETL集成方法,其特征在于包括以下步驟: 連接源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫;通過源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的ETL匹配,得到源數(shù)據(jù)庫 的源表的SQL語句; 對(duì)SQL語句進(jìn)行優(yōu)化并執(zhí)行、得到多個(gè)源數(shù)據(jù)庫的ETL數(shù)據(jù)并注入到目標(biāo)數(shù)據(jù)庫的目 標(biāo)表。2. 根據(jù)權(quán)利要求1所述的可視化多數(shù)據(jù)庫ETL集成方法,其特征在于,所述通過源數(shù)據(jù) 庫和目標(biāo)數(shù)據(jù)庫的ETL匹配,得到源數(shù)據(jù)庫的源表的SQL語句包括以下步驟: 配置源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫及表名、字段,并判斷源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)庫類 型; 根據(jù)源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)庫類型確定不同的ETL規(guī)則類,再根據(jù)源數(shù)據(jù)庫的 源表通過ETL規(guī)則類得到源表的SQL語句。3. 根據(jù)權(quán)利要求1所述的可視化多數(shù)據(jù)庫ETL集成方法,其特征在于,所述對(duì)SQL語句 進(jìn)行優(yōu)化并執(zhí)行、得到多個(gè)源數(shù)據(jù)庫的ETL數(shù)據(jù)并注入到目標(biāo)數(shù)據(jù)庫的目標(biāo)表包括以下步 驟: 處理SQL語句并根據(jù)ETL規(guī)則庫匹配的結(jié)果對(duì)SQL語句進(jìn)行優(yōu)化; 調(diào)用平臺(tái)層提供的API,執(zhí)行優(yōu)化后的SQL語句得到ETL數(shù)據(jù)并存入數(shù)據(jù)緩沖區(qū),根據(jù)ETL規(guī)則庫將ETL數(shù)據(jù)注入目標(biāo)庫的目標(biāo)表。4. 根據(jù)權(quán)利要求1所述的可視化多數(shù)據(jù)庫ETL集成方法,其特征在于,所述處理SQL語 句并根據(jù)ETL規(guī)則庫匹配的結(jié)果對(duì)SQL語句進(jìn)行優(yōu)化包括以下步驟: 將SQL語句建立一個(gè)樹結(jié)構(gòu);對(duì)樹結(jié)構(gòu)的每一節(jié)點(diǎn)進(jìn)行語義檢查,并進(jìn)行結(jié)構(gòu)轉(zhuǎn)換,將 分析樹轉(zhuǎn)換為表示最初的查詢計(jì)劃的代數(shù)操作符樹;將代數(shù)操作符樹轉(zhuǎn)換為執(zhí)行速度最快 的SQL序列。5. 可視化多數(shù)據(jù)庫ETL集成系統(tǒng),其特征在于包括: 數(shù)據(jù)庫管理系統(tǒng)層:連接源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫;通過源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的ETL匹配,得到源數(shù)據(jù)庫的源表的SQL語句; 語義層:對(duì)SQL語句進(jìn)行優(yōu)化并執(zhí)行、得到多個(gè)源數(shù)據(jù)庫的ETL數(shù)據(jù)并注入到目標(biāo)數(shù)據(jù) 庫的目標(biāo)表。6. 根據(jù)權(quán)利要求5所述的可視化多數(shù)據(jù)庫ETL集成系統(tǒng),其特征在于,所述數(shù)據(jù)庫管理 系統(tǒng)層包括: 圖形化配置界面:配置源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫及表名、字段,并判斷源數(shù)據(jù)庫和目標(biāo)數(shù) 據(jù)庫的數(shù)據(jù)庫類型; ETL規(guī)則庫:根據(jù)源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)庫類型確定不同的ETL規(guī)則類,再根據(jù) 源數(shù)據(jù)庫的源表通過ETL規(guī)則類得到SQL語句。7. 根據(jù)權(quán)利要求5所述的可視化多數(shù)據(jù)庫ETL集成系統(tǒng),其特征在于所述語義層包 括: 查詢編譯器:處理SQL語句并根據(jù)ETL規(guī)則庫匹配的結(jié)果對(duì)SQL語句進(jìn)行優(yōu)化; 執(zhí)行引擎:調(diào)用平臺(tái)層提供的API,執(zhí)行優(yōu)化后的SQL語句得到ETL數(shù)據(jù)并存入數(shù)據(jù)緩 沖區(qū),根據(jù)ETL規(guī)則庫將ETL數(shù)據(jù)注入目標(biāo)庫的目標(biāo)表。8. 根據(jù)權(quán)利要求1所述的可視化多數(shù)據(jù)庫ETL集成系統(tǒng),其特征在于所述查詢編譯器 包括: 查詢分析器:將SQL語句建立一個(gè)樹結(jié)構(gòu); 查詢預(yù)處理器:對(duì)樹結(jié)構(gòu)的每一節(jié)點(diǎn)進(jìn)行語義檢查,并對(duì)樹結(jié)構(gòu)的每一節(jié)點(diǎn)進(jìn)行語義 檢查,并進(jìn)行結(jié)構(gòu)轉(zhuǎn)換,將分析樹轉(zhuǎn)換為表示最初的查詢計(jì)劃的代數(shù)操作符樹; 查詢優(yōu)化器:將代數(shù)操作符樹轉(zhuǎn)換為執(zhí)行速度最快的SOL序列。
【專利摘要】本發(fā)明提供了可視化多數(shù)據(jù)庫ETL集成方法和系統(tǒng),方法包括以下步驟:連接源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫;通過源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的ETL匹配,得到源數(shù)據(jù)庫的源表的SQL語句;對(duì)SQL語句進(jìn)行優(yōu)化并執(zhí)行、得到多個(gè)源數(shù)據(jù)庫的ETL數(shù)據(jù)并注入到目標(biāo)數(shù)據(jù)庫的目標(biāo)表。系統(tǒng)包括數(shù)據(jù)庫管理系統(tǒng)層:連接源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫;通過源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫的ETL匹配,得到源數(shù)據(jù)庫的源表的SQL語句;語義層:對(duì)SQL語句進(jìn)行優(yōu)化并執(zhí)行、得到多個(gè)源數(shù)據(jù)庫的ETL數(shù)據(jù)并注入到目標(biāo)數(shù)據(jù)庫的目標(biāo)表。本發(fā)明降低多數(shù)據(jù)庫集成的復(fù)雜程度,提高數(shù)據(jù)庫集成的效率,降低數(shù)據(jù)庫集成的風(fēng)險(xiǎn)。
【IPC分類】G06F17/30
【公開號(hào)】CN104915341
【申請(qǐng)?zhí)枴緾N201410086142
【發(fā)明人】王巍, 宋宏, 呂希勝, 劉昶, 原文斌, 姚麗麗
【申請(qǐng)人】中國科學(xué)院沈陽自動(dòng)化研究所
【公開日】2015年9月16日
【申請(qǐng)日】2014年3月10日