第一篇:教學管理數(shù)據(jù)倉庫中ETL的實現(xiàn)
龍源期刊網(wǎng) http://004km.cn 教學管理數(shù)據(jù)倉庫中ETL的實現(xiàn)
作者:占小憶
來源:《科技創(chuàng)新導報》2011年第16期
摘 要:ETL 工具從異構(gòu)數(shù)據(jù)源抽取數(shù)據(jù),并將數(shù)據(jù)清洗,規(guī)范化后裝載到數(shù)據(jù)倉庫。文章從前期的數(shù)據(jù)理解階段入手,分別討論了數(shù)據(jù)的抽取、清洗轉(zhuǎn)換、裝載等不同階段需要考慮的設(shè)計問題及相應(yīng)的解決方案。提出了以數(shù)據(jù)理解為根基,以清洗轉(zhuǎn)換為中心的設(shè)計思想,并給出成績管理模塊的具體實施步驟。
關(guān)鍵詞:ETL數(shù)據(jù)倉庫數(shù)據(jù)抽取數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)加載
中圖分類號:TP311.13 文獻標識碼:A 文章編號:1674-098X(2011)06(a)-0017-02 1 ETL的具體實現(xiàn)
ETL具有以下兩個主要特點:①數(shù)據(jù)同步;②數(shù)據(jù)的成批操作。數(shù)據(jù)倉庫中的數(shù)據(jù)來源于教師、學生資料、學生考試成績等等,其中一些數(shù)據(jù)存儲在SQLServer、Foxpro等數(shù)據(jù)庫中,還有一些以文本、word和excel方式存儲于文件中,這些數(shù)據(jù)是異構(gòu)數(shù)據(jù),需要進一步處理后,才能加載到數(shù)據(jù)倉庫中。本系統(tǒng)運用SQL Server2000提供的DTS(數(shù)據(jù)轉(zhuǎn)換服務(wù))工具,實現(xiàn)從不同的數(shù)據(jù)源中轉(zhuǎn)換數(shù)據(jù)以創(chuàng)建數(shù)據(jù)倉庫。1.1 數(shù)據(jù)抽取
源數(shù)據(jù)庫的所有細節(jié)數(shù)據(jù)對于數(shù)據(jù)倉庫的主題域并不是都有用的,必須根據(jù)已確定主題的需要,從原有操作型數(shù)據(jù)庫中抽取相關(guān)數(shù)據(jù)到數(shù)據(jù)倉庫。一般在設(shè)計數(shù)據(jù)抽取時要考慮以下幾個方面:源數(shù)據(jù)庫和目標數(shù)據(jù)庫各自的數(shù)據(jù)庫格式是否一致?從源數(shù)據(jù)庫中要訪問哪些文件和表?從源數(shù)據(jù)庫中可以提取哪些字段,抽取記錄的條件是什么?目標數(shù)據(jù)庫中的表結(jié)構(gòu)是什么?應(yīng)當按照什么時間間隔來重復抽取表,定期更新數(shù)據(jù)倉庫等?大型數(shù)據(jù)抽取工作可有專門的數(shù)據(jù)處理工具來完成。如果有少量數(shù)據(jù)格式,也可有專業(yè)人員編寫抽取程序來完成數(shù)據(jù)抽取工作。
1.2 數(shù)據(jù)轉(zhuǎn)換
該數(shù)據(jù)倉庫中的數(shù)據(jù)來自一個或多個異構(gòu)的數(shù)據(jù)庫系統(tǒng),這些數(shù)據(jù)源之間往往存在著不一致的問題,如不一致的字段長度、不一致的賦值等。數(shù)據(jù)不一致會嚴重影響數(shù)據(jù)倉庫的數(shù)據(jù)質(zhì)量。數(shù)據(jù)轉(zhuǎn)換就是處理這些不一致性的過程。
(1)統(tǒng)一數(shù)據(jù)名稱及格式。由于不同數(shù)據(jù)源數(shù)據(jù)明明及定義沒有統(tǒng)一的標準,因此在源數(shù)據(jù)載入數(shù)據(jù)倉庫之前必須對各個數(shù)據(jù)源的數(shù)據(jù)名稱及格式進行統(tǒng)一。要處理的內(nèi)容如下:大小寫字母和文本全部轉(zhuǎn)換為統(tǒng)一格式;從定點的十進制數(shù)據(jù)到浮點式二進制數(shù)據(jù)的格式數(shù)值數(shù)據(jù)均
龍源期刊網(wǎng) http://004km.cn 須轉(zhuǎn)換為一致類型;統(tǒng)一書寫格式。如常見的日期格式(DD/MM/YY,MM/DD/YY,YY/MM/DD等)必須被轉(zhuǎn)換為同樣的形式。
(2)創(chuàng)建新的數(shù)據(jù)邏輯視圖。數(shù)據(jù)倉庫中存在著源數(shù)據(jù)庫可能不存在的數(shù)據(jù),比如學生成績的平均分,通過人數(shù)等,因此還需要進行一下轉(zhuǎn)換:把一個字段的各個部分隔成兩個或多個字段;把一個記錄的兩個或多個字段組合成一個字段;把來自多個記錄的字段結(jié)合成一個記錄;增加一個新字段用來存儲匯總記錄;為了多維分析的方便,在導入數(shù)據(jù)時也常通過Case語句和Convert函數(shù)來進行簡單的數(shù)據(jù)轉(zhuǎn)換。其他設(shè)計復雜的轉(zhuǎn)換需要單獨編寫轉(zhuǎn)換函數(shù)來實現(xiàn)。1.3 數(shù)據(jù)清洗
數(shù)據(jù)清洗的任務(wù)實際上就是過濾不符合要求的數(shù)據(jù),將過濾的結(jié)果交給業(yè)務(wù)主管部門,由業(yè)務(wù)單位確認應(yīng)該過濾掉或是修正之后再進行抽取。不符合要求的數(shù)據(jù)主要是有以下幾種:數(shù)據(jù)源中丟失數(shù)據(jù)、數(shù)據(jù)源中有錯誤數(shù)據(jù)、兩個或多個數(shù)據(jù)源中的數(shù)據(jù)不一致或發(fā)生沖突。(1)對于數(shù)據(jù)的遺漏值和不規(guī)范值的處理,例如如生源地區(qū),學生在網(wǎng)上自主錄入的字段,有些學生不遵守錄入規(guī)則,導致該字段出現(xiàn)空值和不規(guī)則值。對于這一類數(shù)據(jù),可以利用系統(tǒng)的數(shù)據(jù)篩選功能將空值和不規(guī)則的值篩選出來加以手工修正。
(2)對于數(shù)據(jù)雜質(zhì)和不一致的數(shù)據(jù)應(yīng)視情況區(qū)別對待,不能一律刪除。例如學期成績,應(yīng)當查詢該生當前學期每門課程的成績,從而來計算學期平均成績,如果該生當前學期有部分課程成績?yōu)榭?則認定該生缺考以零值計算這些課程;如果全部課程成績都為空的話,則認定該學生學業(yè)發(fā)生變更,直接刪除這些數(shù)據(jù)。
(3)實現(xiàn)數(shù)據(jù)一致性,如:匯總后的學生信息表和學生成績表中學生人數(shù)不同,即一張表中的學生記錄在另一張表中沒有對應(yīng)學生的數(shù)據(jù),這將對日后的數(shù)據(jù)分析產(chǎn)生相當大的影響。為了兩張表所描述的學生統(tǒng)一起來,查詢并刪除這些記錄。1.4 數(shù)據(jù)匯總
源數(shù)據(jù)庫中的細節(jié)數(shù)據(jù)進入數(shù)據(jù)倉庫后,還需要將這些數(shù)據(jù)在各種層次結(jié)構(gòu)上進行匯總。例如,教學管理數(shù)據(jù)倉庫中存儲的細節(jié)數(shù)據(jù)時每個學生每門課考試的考試成績,由于時間維為學期、學年兩個層次。教師要對大面積的基礎(chǔ)課的學生成績作趨勢分析時,可能要獲取每門基礎(chǔ)課程的每學期、每學年的各個年級,各個學生的成績值時,就必須分別在時間維的學期、學年這兩個層次結(jié)構(gòu)上對細節(jié)數(shù)據(jù)進行匯總。為了提高數(shù)據(jù)倉庫的查詢效率,我們往往要將這些匯總數(shù)據(jù)存儲到數(shù)據(jù)倉庫中。根據(jù)匯總級別不同可分為輕度匯總數(shù)據(jù)和高度匯總數(shù)據(jù)。1.5 數(shù)據(jù)加載
數(shù)據(jù)加載就是將從源應(yīng)用系統(tǒng)中抽取、轉(zhuǎn)換后的數(shù)據(jù)加載到數(shù)據(jù)倉庫系統(tǒng)中。教學管理數(shù)據(jù)倉庫中,主要采用以下幾種方法加載數(shù)據(jù):(1)數(shù)據(jù)結(jié)構(gòu)相匹配的SQL Server關(guān)系表,用SQL
龍源期刊網(wǎng) http://004km.cn insert語句加載;(2)存儲于異構(gòu)數(shù)據(jù)源的數(shù)據(jù),如FoxPro關(guān)系數(shù)據(jù)庫,excel文件等,可以通過SQL Server的DTS來實現(xiàn)加載。(3)對需要調(diào)整的數(shù)據(jù),經(jīng)程序重整后轉(zhuǎn)變?yōu)楣潭ǜ袷降奈谋疚募?再導入數(shù)據(jù)倉庫。(4)對少量的數(shù)據(jù),利用手工錄入。
分析數(shù)據(jù)裝載進數(shù)據(jù)倉庫中以后,還需要驗證事實表與相關(guān)維表的引用完整性,確保所有事實表中的記錄都與維表中的適當記錄相關(guān)。但維表中的每條記錄不一定要與事實表中的數(shù)據(jù)相關(guān)。
ETL工具選擇原則
目前已有眾多廠商推出數(shù)據(jù)倉庫產(chǎn)品。IBM、Sybase、Oracle、CA、SAS、NCR、Microsoft等公司已相繼推出了自己的數(shù)據(jù)倉庫解決方案,它們的ETL工具也都各有其優(yōu)勢和不足。在選擇ETL工具時我們必須遵守以下原則:可以支持多種平臺,支持多種數(shù)據(jù)庫;可以支持多種數(shù)據(jù)源,如 DBMS、電子表格、平面文件;具有規(guī)范的數(shù)據(jù)訪問接口;工具生成的代碼必須是在開發(fā)環(huán)境中可維護的;具有靈活的可編程性和調(diào)用外部程序的功能;能只抽取滿足指定條件的數(shù)據(jù)和源數(shù)據(jù)的指定部分;具有直觀的視圖、靈活的配置,能自動調(diào)用以定期實現(xiàn)管理工作;能在抽取過程中進行數(shù)據(jù)類型轉(zhuǎn)換和字符集轉(zhuǎn)換并能計算生成衍生的字段。3 教學管理系統(tǒng)中ETL的實現(xiàn)
本教學管理系統(tǒng)的主題主要有三個方面:學生成績管理、學生就業(yè)管理、教師科研管理。根據(jù)以上需求建立教學管理數(shù)據(jù)倉庫,在經(jīng)過總體需求分析后,建立了數(shù)據(jù)倉庫的邏輯模型和物理模型,基本確定了數(shù)據(jù)倉庫中事實表和維表的結(jié)構(gòu)。下面的工作就是將原 MIS系統(tǒng)中的相關(guān)數(shù)據(jù)轉(zhuǎn)移到數(shù)據(jù)倉庫的事實表和維表中。主要包括:確定數(shù)據(jù)源、指定數(shù)據(jù)目的地以及操縱和轉(zhuǎn)換從數(shù)據(jù)源到數(shù)據(jù)目的地的數(shù)據(jù)?,F(xiàn)在各大廠商提出的數(shù)據(jù)倉庫的解決方案中都提供了 ETL工具,在眾多產(chǎn)品中,一致認為 DTS是系統(tǒng)最易使用、擴展性最好、編程效率最高的數(shù)據(jù)抽取工具。
(1)DTS可以自動或交互地從多個異構(gòu)數(shù)據(jù)源向數(shù)據(jù)倉庫裝入數(shù)據(jù);(2)DTS支持快速的非記錄的塊拷貝程序向 SQL Server數(shù)據(jù)庫插入數(shù)據(jù)。這是目前為止將大量的數(shù)據(jù)移動到SQL Server表中最快的方法;(3)DTS基于OLE DB接口能夠在關(guān)系數(shù)據(jù)源、非關(guān)系數(shù)據(jù)源以及ODBC數(shù)據(jù)源之間進行轉(zhuǎn)移數(shù)據(jù);(4)DTS支持使用VBScript或 JavaScript等腳本語言創(chuàng)建自定義的轉(zhuǎn)換腳本。也允許使用編程語言(如Visual Basic或Visual C++)編寫自定義的組件,能夠在轉(zhuǎn)換中對數(shù)據(jù)進行各種操作;(5)DTS同SQL Server 2000結(jié)合緊密,可以自動調(diào)度導入或操作任務(wù),也可以使用SQL代理服務(wù)來進行調(diào)度。
因此在本系統(tǒng)中選用 Microsoft的 DTS作為ET L工具。DTS主要的功能有導入和導出數(shù)據(jù)、變換數(shù)據(jù)和傳送數(shù)據(jù)庫對象。
龍源期刊網(wǎng) http://004km.cn DTS允許在一個過程中完成導入、導出和變換數(shù)據(jù)。這個過程的定義可以保存在包當中。DTS包含三種類型對象:連接對象、任務(wù)對象和步驟對象。連接對象定義數(shù)據(jù)源的連接,即與轉(zhuǎn)換的源和目標的連接;任務(wù)對象定義了包中的動作,例如執(zhí)行 SQL語句、拷貝一個表的內(nèi)容或執(zhí)行一段腳本;步驟對象定義任務(wù)對象的執(zhí)行的順序。定義包有三種方式:使用 DTS設(shè)計器(DTS Designer)、DTS導入和導出向?qū)?、DTS編程接口。DTS設(shè)計器定義包。包可以三種方式保存:基于COM的文件、MS SQL Server的msdb數(shù)據(jù)庫、作為外部Visual Basic文件。在本系統(tǒng)中我們用SQL語言和VBScript腳本語言對加載過程進行編程控制,以正確完成加載任務(wù)。對所定義的包保存在msdb數(shù)據(jù)庫中。DTS組件在定義數(shù)據(jù)源和目的連接以后,可以在兩者之間進行數(shù)據(jù)轉(zhuǎn)換。這是數(shù)據(jù)轉(zhuǎn)移的主要階段。DTS既可以復制整個表和視圖,又可以復制特定SQL語句返回的數(shù)據(jù),還可以針對源和目的都是 SQL數(shù)據(jù)庫時,復制所有數(shù)據(jù)庫對象和數(shù)據(jù)。對事實表的轉(zhuǎn)換任務(wù)如下:由于事實表的字段全部來自原管理系統(tǒng)中的成績表,只是字段名稱不同,所以用SQL查詢語句即可:select ts.學號,ts.教師編號as教師號,ts.課程編號as課程號,ts.成績,ts.考試時間 from教學成績表ts 查詢語句編寫完成并分析有效以后,需要對目標數(shù)據(jù)庫的表進行選擇,在目的選項卡中單擊“創(chuàng)建”按鈕,填入事實表名scores fact和新增字段“學期編號”即可完成后如圖1 最后是對應(yīng)字段的映射處理,在轉(zhuǎn)換選項卡中只要進行字段一對一的復制即可(除學期編號字段外),如圖2。
由于“學期編號”字段在源成績表中只有考試時間,所以需要把考試時間按照一定的規(guī)則轉(zhuǎn)換成“學期編號”,在此選擇“VB Script Language”語言將源腳本替換為如下腳本。Function Main()if year(DTSSource(“考試時間”))=2006 and month(DTSSource(“考試時間”))>=9 then DTSDestination(“學期編號”)=“2006200701” end if if year(DTSSource(“考試時間”))=2007 and month(DTSSource(“考試時間”))DTSDestination(“學期編號”)=“2006200702” end if if year(DTSSource(“考試時間”))=2007 and month(DTSSource(“考試時間”))>=9 then DTSDestination(“學期編號”)=“2007200801” end if
龍源期刊網(wǎng) http://004km.cn if year(DTSSource(“考試時間”))=2008 and month(DTSSource(“考試時間”))DTSDestination(“學期編號”)=“2007200802” end if if year(DTSSource(“考試時間”))=2008 and month(DTSSource(“考試時間”))>=9 then DTSDestination(“學期編號”)=“2008200901” end if if year(DTSSource(“考試時間”))=2009 and month(DTSSource(“考試時間”))DTSDestination(“學期編號”)=“2008200902” end if Main=DTSTransformStat_OK End Function 各維表的轉(zhuǎn)換過程與此類似,只是在進行學期維表的轉(zhuǎn)換時,由于學期維表中的“學年”“學期”字段都來自于原操作型數(shù)據(jù)庫成績表的“考試時間”字段,轉(zhuǎn)換方法同“學期編號”字段通過ActiveX腳本對數(shù)據(jù)進行一些編程的轉(zhuǎn)換才能實現(xiàn),在此就不敘述了。
事實表和各個維表轉(zhuǎn)換好以后,執(zhí)行這個定義好的DTS轉(zhuǎn)換任務(wù),數(shù)據(jù)將會按照設(shè)定步驟和規(guī)則導入數(shù)據(jù)倉庫維表和事實表中,從而完成了數(shù)據(jù)倉庫的數(shù)據(jù)轉(zhuǎn)載任務(wù)。同時還可以設(shè)置DTS包,將原操作型數(shù)據(jù)庫中變動數(shù)據(jù)定期自動地更新到數(shù)據(jù)倉庫中。4 結(jié)語
ETL是數(shù)據(jù)倉庫開發(fā)項目的關(guān)鍵部分,也是一個長期的過程,同時這部分的工作直接關(guān)系數(shù)據(jù)倉庫中數(shù)據(jù)的質(zhì)量,從而影響到?jīng)Q策分析的結(jié)果和質(zhì)量。在ETL過程中的每一步都會發(fā)現(xiàn)大量的問題,有些可以直接解決,有些則需要回溯到前一個甚至幾個過程。通常情況下,每次對 ETL過程的修改都需要重新運行整個ETL過程并對結(jié)果進行驗證。這樣一來,開發(fā)整個ETL過程的所需的時間必然很長。因此,只有認真、仔細地設(shè)計ETL過程中的每一步,盡量使得 ETL過程每一步的運行效率更高、結(jié)果更準確同時更容易修改,才能有效保證整個項目的最終成功。
參考文獻
龍源期刊網(wǎng) http://004km.cn [1] W.H.I nmon,Building the data bridge,the ten critical success fact ors ofbuilding a data warehouse.DataBase Pr ogramming&Design.1992(11):70~73.[2] W.H.I nmon等著,王志海等譯,數(shù)據(jù)倉庫1第二版[M],北京:機械工業(yè)出版社, 20001.[3] 張寧、賈自艷、史忠植,“數(shù)據(jù)倉庫中ET L技術(shù)的研究”[J],計算機工程與應(yīng)用,2002(24):213~216.[4] 沙笑笑,等.DTS工具在建立數(shù)據(jù)倉庫過程中的應(yīng)用[J].科技創(chuàng)新導報,2008,10:26.
第二篇:ETL學習心得:探求數(shù)據(jù)倉庫關(guān)鍵環(huán)節(jié)ETL的本質(zhì)
做數(shù)據(jù)倉庫系統(tǒng),ETL是關(guān)鍵的一環(huán)。說大了,ETL是數(shù)據(jù)整合解決方案,說小了,就是倒數(shù)據(jù)的工具?;貞浺幌鹿ぷ鬟@么些年來,處理數(shù)據(jù)遷移、轉(zhuǎn)換的工作倒還真的不少。但是那些工作基本上是一次性工作或者很小數(shù)據(jù)量,使用access、DTS或是自己編個小程序搞定。可是在數(shù)據(jù)倉庫系統(tǒng)中,ETL上升到了一定的理論高度,和原來小打小鬧的工具使用不同了。究竟什么不同,從名字上就可以看到,人家已經(jīng)將倒數(shù)據(jù)的過程分成3個步驟,E、T、L分別代表抽取、轉(zhuǎn)換和裝載。
其實ETL過程就是數(shù)據(jù)流動的過程,從不同的數(shù)據(jù)源流向不同的目標數(shù)據(jù)。但在數(shù)據(jù)倉庫中,ETL有幾個特點,一是數(shù)據(jù)同步,它不是一次性倒完數(shù)據(jù)就拉到,它是經(jīng)常性的活動,按照固定周期運行的,甚至現(xiàn)在還有人提出了實時ETL的概念。二是數(shù)據(jù)量,一般都是巨大的,值得你將數(shù)據(jù)流動的過程拆分成E、T和L。
現(xiàn)在有很多成熟的工具提供ETL功能,例如datastage、powermart等,且不說他們的好壞。從應(yīng)用角度來說,ETL的過程其實不是非常復雜,這些工具給數(shù)據(jù)倉庫工程帶來和很大的便利性,特別是開發(fā)的便利和維護的便利。但另一方面,開發(fā)人員容易迷失在這些工具中。舉個例子,VB是一種非常簡單的語言并且也是非常易用的編程工具,上手特別快,但是真正VB的高手有多少?微軟設(shè)計的產(chǎn)品通常有個原則是“將使用者當作傻瓜”,在這個原則下,微軟的東西確實非常好用,但是對于開發(fā)者,如果你自己也將自己當作傻瓜,那就真的傻了。ETL工具也是一樣,這些工具為我們提供圖形化界面,讓我們將主要的精力放在規(guī)則上,以期提高開發(fā)效率。從使用效果來說,確實使用這些工具能夠非??焖俚貥?gòu)建一個job來處理某個數(shù)據(jù),不過從整體來看,并不見得他的整體效率會高多少。問題主要不是出在工具上,而是在設(shè)計、開發(fā)人員上。他們迷失在工具中,沒有去探求ETL的本質(zhì)。
可以說這些工具應(yīng)用了這么長時間,在這么多項目、環(huán)境中應(yīng)用,它必然有它成功之處,它必定體現(xiàn)了ETL的本質(zhì)。如果我們不透過表面這些工具的簡單使用去看它背后蘊涵的思想,最終我們作出來的東西也就是一個個獨立的job,將他們整合起來仍然有巨大的工作量。大家都知道“理論與實踐相結(jié)合”,如果在一個領(lǐng)域有所超越,必須要在理論水平上達到一定的高度
探求ETL本質(zhì)之一
ETL的過程就是數(shù)據(jù)流動的過程,從不同異構(gòu)數(shù)據(jù)源流向統(tǒng)一的目標數(shù)據(jù)。其間,數(shù)據(jù)的抽取、清洗、轉(zhuǎn)換和裝載形成串行或并行的過程。ETL的核心還是在于T這個過程,也就是轉(zhuǎn)換,而抽取和裝載一般可以作為轉(zhuǎn)換的輸入和輸出,或者,它們作為一個單獨的部件,其復雜度沒有轉(zhuǎn)換部件高。和OLTP系統(tǒng)中不同,那里充滿這單條記錄的insert、update和select等操作,ETL過程一般都是批量操作,例如它的裝載多采用批量裝載工具,一般都是DBMS系統(tǒng)自身附帶的工具,例如Oracle SQLLoader和DB2的autoloader等。
ETL本身有一些特點,在一些工具中都有體現(xiàn),下面以datastage和powermart舉例來說。
1、靜態(tài)的ETL單元和動態(tài)的ETL單元實例;一次轉(zhuǎn)換指明了某種格式的數(shù)據(jù)如何格式化成另一種格式的數(shù)據(jù),對于數(shù)據(jù)源的物理形式在設(shè)計時可以不用指定,它可以在運行時,當這個ETL單元創(chuàng)建一個實例時才指定。對于靜態(tài)和動態(tài)的ETL單元,Datastage沒有嚴格區(qū)分,它的一個Job就是實現(xiàn)這個功能,在早期版本,一個Job同時不能運行兩次,所以一個Job相當于一個實例,在后期版本,它支持multiple instances,而且還不是默認選項。Powermart中將這兩個概念加以區(qū)分,靜態(tài)的叫做Mapping,動態(tài)運行時叫做Session。
2、ETL元數(shù)據(jù);元數(shù)據(jù)是描述數(shù)據(jù)的數(shù)據(jù),他的含義非常廣泛,這里僅指ETL的元數(shù)據(jù)。主要包括每次轉(zhuǎn)換前后的數(shù)據(jù)結(jié)構(gòu)和轉(zhuǎn)換的規(guī)則。ETL元數(shù)據(jù)還包括形式參數(shù)的管理,形式參數(shù)的ETL單元定義的參數(shù),相對還有實參,它是運行時指定的參數(shù),實參不在元數(shù)據(jù)管理范圍之內(nèi)。
3、數(shù)據(jù)流程的控制;要有可視化的流程編輯工具,提供流程定義和流程監(jiān)控功能。流程調(diào)度的最小單位是ETL單元實例,ETL單元是不能在細分的ETL過程,當然這由開發(fā)者來控制,例如可以將抽取、轉(zhuǎn)換放在一個ETL單元中,那樣這個抽取和轉(zhuǎn)換只能同時運行,而如果將他們分作兩個單元,可以分別運行,這有利于錯誤恢復操作。當然,ETL單元究竟應(yīng)該細分到什么程度應(yīng)該依據(jù)具體應(yīng)用來看,目前還沒有找到很好的細分策略。比如,我們可以規(guī)定將裝載一個表的功能作為一個ETL單元,但是不可否認,這樣的ETL單元之間會有很多共同的操作,例如兩個單元共用一個Hash表,要將這個Hash表裝入內(nèi)存兩次。
4、轉(zhuǎn)換規(guī)則的定義方法;提供函數(shù)集提供常用規(guī)則方法,提供規(guī)則定義語言描述規(guī)則。
5、對數(shù)據(jù)的快速索引;一般都是利用Hash技術(shù),將參照關(guān)系表提前裝入內(nèi)存,在轉(zhuǎn)換時查找這個hash表。Datastage中有Hash文件技術(shù),Powermart也有類似的Lookup功能。
探求ETL本質(zhì)之二(分類)
昨在IT-Director上閱讀一篇報告,關(guān)于ETL產(chǎn)品分類的。一般來說,我們眼中的ETL工具都是價格昂貴,能夠處理海量數(shù)據(jù)的家伙,但是這是其中的一種。它可以分成4種,針對不同的需求,主要是從轉(zhuǎn)換規(guī)則的復雜度和數(shù)據(jù)量大小來看。它們包括
1、交互式運行環(huán)境,你可以指定數(shù)據(jù)源、目標數(shù)據(jù),指定規(guī)則,立馬ETL。這種交互式的操作無疑非常方便,但是只能適合小數(shù)據(jù)量和復雜度不高的ETL過程,因為一旦規(guī)則復雜了,可能需要語言級的描述,不能簡簡單單拖拖拽拽就可以的。還有數(shù)據(jù)量的問題,這種交互式必然建立在解釋型語言基礎(chǔ)上,另外他的靈活性必然要犧牲一定的性能為代價。所以如果要處理海量數(shù)據(jù)的話,每次讀取一條記錄,每次對規(guī)則進行解釋執(zhí)行,每次在寫入一條記錄,這對性能影響是非常大的。
2、專門編碼型的,它提供了一個基于某種語言的程序框架,你可以不必將編程精力放在一些周邊的功能上,例如讀文件功能、寫http://rad.17luntan.com/ClickPortal/W...&alliedsiteid=0“);” onmouseout=“isShowAds = false;isShowAds2 = false;”>數(shù)據(jù)庫的功能,而將精力主要放在規(guī)則的實現(xiàn)上面。這種近似手工代碼的性能肯定是沒話說,除非你的編程技巧不過關(guān)(這也是不可忽視的因素之一)。對于處理大數(shù)據(jù)量,處理復雜轉(zhuǎn)換邏輯,這種方式的ETL實現(xiàn)是非常直觀的。
3、代碼生成器型的,它就像是一個ETL代碼生成器,提供簡單的圖形化界面操作,讓你拖拖拽拽將轉(zhuǎn)換規(guī)則都設(shè)定好,其實他的后臺都是生成基于某種語言的程序,要運行這個ETL過程,必須要編譯才行。Datastage就是類似這樣的產(chǎn)品,設(shè)計好的job必須要編譯,這避免了每次轉(zhuǎn)換的解釋執(zhí)行,但是不知道它生成的中間語言是什么。以前我設(shè)計的ETL工具大挪移其實也是歸屬于這一類,它提供了界面讓用戶編寫規(guī)則,最后生成C++語言,編譯后即可運行。這類工具的特點就是要在界面上下狠功夫,必須讓用戶輕松定義一個ETL過程,提供豐富的插件來完成讀、寫和轉(zhuǎn)換函數(shù)。大挪移在這方面就太弱了,規(guī)則必須手寫,而且要寫成標準c++語法,這未免還是有點難為最終用戶了,還不如做成一個專業(yè)編碼型的產(chǎn)品呢。另外一點,這類工具必須提供面向?qū)<覒?yīng)用的功能,因為它不可能考慮到所有的轉(zhuǎn)換規(guī)則和所有的讀寫,一方面提供插件接口來讓第三方編寫特定的插件,另一方面還有提供特定語言來實現(xiàn)高級功能。例如Datastage提供一種類Basic的語言,不過他的Job的腳本化實現(xiàn)好像就做的不太好,只能手工繪制job,而不能編程實現(xiàn)Job。
4、最后還有一種類型叫做數(shù)據(jù)集線器,顧名思義,他就是像Hub一樣地工作。將這種類型分出來和上面幾種分類在標準上有所差異,上面三種更多指ETL實現(xiàn)的方法,此類主要從數(shù)據(jù)處理角度。目前有一些產(chǎn)品屬于EAI(Enterprise Application Integration),它的數(shù)據(jù)集成主要是一種準實時性。所以這類產(chǎn)品就像Hub一樣,不斷接收各種異構(gòu)數(shù)據(jù)源來的數(shù)據(jù),經(jīng)過處理,在實施發(fā)送到不同的目標數(shù)據(jù)中去。
雖然,這些類看似各又千秋,特別在BI項目中,面對海量數(shù)據(jù)的ETL時,中間兩種的選擇就開始了,在選擇過程中,必須要考慮到開發(fā)效率、維護方面、性能、學習曲線、人員技能等各方面因素,當然還有最重要也是最現(xiàn)實的因素就是客戶的意象。
探求ETL本質(zhì)之三(轉(zhuǎn)換)
ETL探求之一中提到,ETL過程最復雜的部分就是T,這個轉(zhuǎn)換過程,T過程究竟有哪些類型呢?
一、宏觀輸入輸出
從對數(shù)據(jù)源的整個宏觀處理分,看看一個ETL過程的輸入輸出,可以分成下面幾類:
1、大小交,這種處理在數(shù)據(jù)清洗過程是常見了,例如從數(shù)據(jù)源到ODS階段,如果數(shù)據(jù)倉庫采用維度建模,而且維度基本采用代理鍵的話,必然存在代碼到此鍵值的轉(zhuǎn)換。如果用SQL實現(xiàn),必然需要將一個大表和一堆小表都Join起來,當然如果使用ETL工具的話,一般都是先將小表讀入內(nèi)存中再處理。這種情況,輸出數(shù)據(jù)的粒度和大表一樣。
2、大大交,大表和大表之間關(guān)聯(lián)也是一個重要的課題,當然其中要有一個主表,在邏輯上,應(yīng)當是主表Left Join輔表。大表之間的關(guān)聯(lián)存在最大的問題就是性能和穩(wěn)定性,對于海量數(shù)據(jù)來說,必須有優(yōu)化的方法來處理他們的關(guān)聯(lián),另外,對于大數(shù)據(jù)的處理無疑會占用太多的系統(tǒng)資源,出錯的幾率非常大,如何做到有效錯誤恢復也是個問題。對于這種情況,我們建議還是盡量將大表拆分成適度的稍小一點的表,形成大小交的類型。這類情況的輸出數(shù)據(jù)粒度和主表一樣。
3、站著進來,躺著出去。事務(wù)系統(tǒng)中為了提高系統(tǒng)靈活性和擴展性,很多信息放在代碼表中維護,所以它的“事實表”就是一種窄表,而在數(shù)據(jù)倉庫中,通常要進行寬化,從行變成列,所以稱這種處理情況叫做“站著進來,躺著出去”。大家對Decode肯定不陌生,這是進行寬表化常見的手段之一。窄表變寬表的過程主要體現(xiàn)在對窄表中那個代碼字段的操作。這種情況,窄表是輸入,寬表是輸出,寬表的粒度必定要比窄表粗一些,就粗在那個代碼字段上。
4、聚集。數(shù)據(jù)倉庫中重要的任務(wù)就是沉淀數(shù)據(jù),聚集是必不可少的操作,它是粗化數(shù)據(jù)粒度的過程。聚集本身其實很簡單,就是類似SQL中Group by的操作,選取特定字段(維度),對度量字段再使用某種聚集函數(shù)。但是對于大數(shù)據(jù)量情況下,聚集算法的優(yōu)化仍是探究的一個課題。例如是直接使用SQL的Group by,還是先排序,在處理。
二、微觀規(guī)則
從數(shù)據(jù)的轉(zhuǎn)換的微觀細節(jié)分,可以分成下面的幾個基本類型,當然還有一些復雜的組合情況,例如先運算,在參照轉(zhuǎn)換的規(guī)則,這種基于基本類型組合的情況就不在此列了。ETL的規(guī)則是依賴目標數(shù)據(jù)的,目標數(shù)據(jù)有多少字段,就有多少條規(guī)則。
1、直接映射,原來是什么就是什么,原封不動照搬過來,對這樣的規(guī)則,如果數(shù)據(jù)源字段和目標字段長度或精度不符,需要特別注意看是否真的可以直接映射還是需要做一些簡單運算。
2、字段運算,數(shù)據(jù)源的一個或多個字段進行數(shù)學運算得到的目標字段,這種規(guī)則一般對數(shù)值型字段而言。
3、參照轉(zhuǎn)換,在轉(zhuǎn)換中通常要用數(shù)據(jù)源的一個或多個字段作為Key,去一個關(guān)聯(lián)數(shù)組中去搜索特定值,而且應(yīng)該只能得到唯一值。這個關(guān)聯(lián)數(shù)組使用Hash算法實現(xiàn)是比較合適也是最常見的,在整個ETL開始之前,它就裝入內(nèi)存,對性能提高的幫助非常大。
4、字符串處理,從數(shù)據(jù)源某個字符串字段中經(jīng)??梢垣@取特定信息,例如身份證號。而且,經(jīng)常會有數(shù)值型值以字符串形式體現(xiàn)。對字符串的操作通常有類型轉(zhuǎn)換、字符串截取等。但是由于字符類型字段的隨意性也造成了臟數(shù)據(jù)的隱患,所以在處理這種規(guī)則的時候,一定要加上異常處理。
5、空值判斷,對于空值的處理是數(shù)據(jù)倉庫中一個常見問題,是將它作為臟數(shù)據(jù)還是作為特定一種維成員?這恐怕還要看應(yīng)用的情況,也是需要進一步探求的。但是無論怎樣,對于可能有NULL值的字段,不要采用“直接映射”的規(guī)則類型,必須對空值進行判斷,目前我們的建議是將它轉(zhuǎn)換成特定的值。
6、日期轉(zhuǎn)換,在數(shù)據(jù)倉庫中日期值一般都會有特定的,不同于日期類型值的表示方法,例如使用8位整型20040801表示日期。而在數(shù)據(jù)源中,這種字段基本都是日期類型的,所以對于這樣的規(guī)則,需要一些共通函數(shù)來處理將日期轉(zhuǎn)換為8位日期值、6位月份值等。
7、日期運算,基于日期,我們通常會計算日差、月差、時長等。一般數(shù)據(jù)庫提供的日期運算函數(shù)都是基于日期型的,而在數(shù)據(jù)倉庫中采用特定類型來表示日期的話,必須有一套自己的日期運算函數(shù)集。
8、聚集運算,對于事實表中的度量字段,他們通常是通過數(shù)據(jù)源一個或多個字段運用聚集函數(shù)得來的,這些聚集函數(shù)為SQL標準中,包括sum,count,avg,min,max。
9、既定取值,這種規(guī)則和以上各種類型規(guī)則的差別就在于它不依賴于數(shù)據(jù)源字段,對目標字段取一個固定的或是依賴系統(tǒng)的值。
探求ETL本質(zhì)之四(數(shù)據(jù)質(zhì)量)
“不要絕對的數(shù)據(jù)準確,但要知道為什么不準確?!?/p>
這是我們在構(gòu)建BI系統(tǒng)是對數(shù)據(jù)準確性的要求。確實,對絕對的數(shù)據(jù)準確誰也沒有把握,不僅是系統(tǒng)集成商,包括客戶也是無法確定。準確的東西需要一個標準,但首先要保證這個標準是準確的,至少現(xiàn)在還沒有這樣一個標準??蛻魰岢鲆粋€相對標準,例如將你的OLAP數(shù)據(jù)結(jié)果和報表結(jié)果對比。雖然這是一種不太公平的比較,你也只好認了吧。
首先在數(shù)據(jù)源那里,已經(jīng)很難保證數(shù)據(jù)質(zhì)量了,這一點也是事實。在這一層有哪些可能原因?qū)е聰?shù)據(jù)質(zhì)量問題?可以分為下面幾類:
1、數(shù)據(jù)格式錯誤,例如缺失數(shù)據(jù)、數(shù)據(jù)值超出范圍或是數(shù)據(jù)格式非法等。要知道對于同樣處理大數(shù)據(jù)量的數(shù)據(jù)源系統(tǒng),他們通常會舍棄一些數(shù)據(jù)庫自身的檢查機制,例如字段約束等。他們盡可能將數(shù)據(jù)檢查在入庫前保證,但是這一點是很難確保的。這類情況諸如身份證號碼、手機號、非日期類型的日期字段等。
2、數(shù)據(jù)一致性,同樣,數(shù)據(jù)源系統(tǒng)為了性能的考慮,會在一定程度上舍棄外鍵約束,這通常會導致數(shù)據(jù)不一致。例如在帳務(wù)表中會出現(xiàn)一個用戶表中沒有的用戶ID,在例如有些代碼在代碼表中找不到等。
3、業(yè)務(wù)邏輯的合理性,這一點很難說對與錯。通常,數(shù)據(jù)源系統(tǒng)的設(shè)計并不是非常嚴謹,例如讓用戶開戶日期晚于用戶銷戶日期都是有可能發(fā)生的,一個用戶表中存在多個用戶ID也是有可能發(fā)生的。對這種情況,有什么辦法嗎?
構(gòu)建一個BI系統(tǒng),要做到完全理解數(shù)據(jù)源系統(tǒng)根本就是不可能的。特別是數(shù)據(jù)源系統(tǒng)在交付后,有更多維護人員的即興發(fā)揮,那更是要花大量的時間去尋找原因。以前曾經(jīng)爭辯過設(shè)計人員對規(guī)則描述的問題,有人提出要在ETL開始之前務(wù)必將所有的規(guī)則弄得一清二楚。我并不同意這樣的意見,倒是認為在ETL過程要有處理這些質(zhì)量有問題數(shù)據(jù)的保證。一定要正面這些臟數(shù)據(jù),是丟棄還是處理,無法逃避。如果沒有質(zhì)量保證,那么在這個過程中,錯誤會逐漸放大,拋開數(shù)據(jù)源質(zhì)量問題,我們再來看看ETL過程中哪些因素對數(shù)據(jù)準確性產(chǎn)生重大影響。
1、規(guī)則描述錯誤。上面提到對設(shè)計人員對數(shù)據(jù)源系統(tǒng)理解的不充分,導致規(guī)則理解錯誤,這是一方面。另一方面,是規(guī)則的描述,如果無二義性地描述規(guī)則也是要探求的一個課題。規(guī)則是依附于目標字段的,在探求之三中,提到規(guī)則的分類。但是規(guī)則總不能總是用文字描述,必須有嚴格的數(shù)學表達方式。我甚至想過,如果設(shè)計人員能夠使用某種規(guī)則語言來描述,那么我們的ETL單元就可以自動生成、同步,省去很多手工操作了。
2、ETL開發(fā)錯誤。即時規(guī)則很明確,ETL開發(fā)的過程中也會發(fā)生一些錯誤,例如邏輯錯誤、書寫錯誤等。例如對于一個分段值,開區(qū)間閉區(qū)間是需要指定的,但是常常開發(fā)人員沒注意,一個大于等于號寫成大于號就導致數(shù)據(jù)錯誤。
3、人為處理錯誤。在整體ETL流程沒有完成之前,為了圖省事,通常會手工運行ETL過程,這其中一個重大的問題就是你不會按照正常流程去運行了,而是按照自己的理解去運行,發(fā)生的錯誤可能是誤刪了數(shù)據(jù)、重復裝載數(shù)據(jù)等。
探求ETL本質(zhì)之五(質(zhì)量保證)
上回提到ETL數(shù)據(jù)質(zhì)量問題,這是無法根治的,只能采取特定的手段去盡量避免,而且必須要定義出度量方法來衡量數(shù)據(jù)的質(zhì)量是好還是壞。對于數(shù)據(jù)源的質(zhì)量,客戶對此應(yīng)該更加關(guān)心,如果在這個源頭不能保證比較干凈的數(shù)據(jù),那么后面的分析功能的可信度也都成問題。數(shù)據(jù)源系統(tǒng)也在不斷進化過程中,客戶的操作也在逐漸規(guī)范中,BI系統(tǒng)也同樣如此。本文探討一下對數(shù)據(jù)源質(zhì)量和ETL處理質(zhì)量的應(yīng)對方法。
如何應(yīng)對數(shù)據(jù)源的質(zhì)量問題?記得在onteldatastage列表中也討論過一個話題-“-1的處理”,在數(shù)據(jù)倉庫模型維表中,通常有一條-1記錄,表示“未知”,這個未知含義可廣了,任何可能出錯的數(shù)據(jù),NULL數(shù)據(jù)甚至是規(guī)則沒有涵蓋到的數(shù)據(jù),都轉(zhuǎn)成-1。這是一種處理臟數(shù)據(jù)的方法,但這也是一種掩蓋事實的方法。就好像寫一個函數(shù)FileOpen(filename),返回一個錯誤碼,當然,你可以只返回一種錯誤碼,如-1,但這是一種不好的設(shè)計,對于調(diào)用者來說,他需要依據(jù)這個錯誤碼進行某些判斷,例如是文件不存在,還是讀取權(quán)限不夠,都有相應(yīng)的處理邏輯。數(shù)據(jù)倉庫中也是一樣,所以,建議將不同的數(shù)據(jù)質(zhì)量類型處理結(jié)果分別轉(zhuǎn)換成不同的值,譬如,在轉(zhuǎn)換后,-1表示參照不上,-2表示NULL數(shù)據(jù)等。不過這僅僅對付了上回提到的第一類錯誤,數(shù)據(jù)格式錯誤。對于數(shù)據(jù)一致性和業(yè)務(wù)邏輯合理性問題,這仍有待探求。但這里有一個原則就是“必須在數(shù)據(jù)倉庫中反應(yīng)數(shù)據(jù)源的質(zhì)量”。
對于ETL過程中產(chǎn)生的質(zhì)量問題,必須有保障手段。從以往的經(jīng)驗看,沒有保障手段給實施人員帶來麻煩重重。實施人員對于反復裝載數(shù)據(jù)一定不會陌生,甚至是最后數(shù)據(jù)留到最后的Cube,才發(fā)現(xiàn)了第一步ETL其實已經(jīng)錯了。這個保障手段就是數(shù)據(jù)驗證機制,當然,它的目的是能夠在ETL過程中監(jiān)控數(shù)據(jù)質(zhì)量,產(chǎn)生報警。這個模塊要將實施人員當作是最終用戶,可以說他們是數(shù)據(jù)驗證機制的直接收益者。
首先,必須有一個對質(zhì)量的度量方法,什么是高質(zhì)什么是低質(zhì),不能靠感官感覺,但這卻是在沒有度量方法條件下通常的做法。那經(jīng)營分析系統(tǒng)來說,聯(lián)通總部曾提出測試規(guī)范,這其實就是一種度量方法,例如指標的誤差范圍不能高于5%等,對系統(tǒng)本身來說其實必須要有這樣的度量方法,先不要說這個度量方法是否科學。對于ETL數(shù)據(jù)處理質(zhì)量,他的度量方法應(yīng)該比聯(lián)通總部測試規(guī)范定義的方法更要嚴格,因為他更多將BI系統(tǒng)看作一個黑盒子,從數(shù)據(jù)源到展現(xiàn)的數(shù)據(jù)誤差允許一定的誤差。而ETL數(shù)據(jù)處理質(zhì)量度量是一種白盒的度量,要注重每一步過程。因此理論上,要求輸入輸出的指標應(yīng)該完全一致。但是我們必須正面完全一致只是理想,對于有誤差的數(shù)據(jù),必須找到原因。
在質(zhì)量度量方法的前提下,就可以建立一個數(shù)據(jù)驗證框架。此框架依據(jù)總量、分量數(shù)據(jù)稽核方法,該方法在高的《數(shù)據(jù)倉庫中的數(shù)據(jù)稽核技術(shù)》一文中已經(jīng)指出。作為補充,下面提出幾點功能上的建議:
1、提供前端。將開發(fā)實施人員當作用戶,同樣也要為之提供友好的用戶界面?!痘思夹g(shù)》一文中指出測試報告的形式,這種形式還是要依賴人為判斷,在一堆數(shù)據(jù)中去找規(guī)律。到不如用OLAP的方式提供界面,不光是加上測試統(tǒng)計出來的指標結(jié)果,并且配合度量方法的計算。例如誤差率,對于誤差率為大于0的指標,就要好好查一下原因了。
2、提供框架。數(shù)據(jù)驗證不是一次性工作,而是每次ETL過程中都必須做的。因此,必須有一個框架,自動化驗證過程,并提供擴展手段,讓實施人員能夠增加驗證范圍。有了這樣一個框架,其實它起到規(guī)范化操作的作用,開發(fā)實施人員可以將主要精力放在驗證腳本的編寫上,而不必過多關(guān)注驗證如何融合到流程中,如何展現(xiàn)等工作。為此,要設(shè)計一套表,類似于DM表,每次驗證結(jié)果數(shù)據(jù)都記錄其中,并且自動觸發(fā)多維分析的數(shù)據(jù)裝載、發(fā)布等。這樣,實施人員可以在每次裝載,甚至在流程過程中就可以觀察數(shù)據(jù)的誤差率。特別是,如果數(shù)據(jù)倉庫的模型能夠統(tǒng)一起來,甚至數(shù)據(jù)驗證腳本都可以確定下來,剩下的就是規(guī)范流程了。
3、規(guī)范流程。上回提到有一種ETL數(shù)據(jù)質(zhì)量問題是由于人工處理導致的,其中最主要原因還是流程不規(guī)范。開發(fā)實施人員運行單獨一個ETL單元是很方便的,雖然以前曾建議一個ETL單元必須是“可重入”的,這能夠解決誤刪數(shù)據(jù),重復裝載數(shù)據(jù)問題。但要記住數(shù)據(jù)驗證也是在流程當中,要讓數(shù)據(jù)驗證能夠日常運作,就不要讓實施者感覺到他的存在??偟膩碚f,規(guī)范流程是提高實施效率的關(guān)鍵工作,這也是以后要繼續(xù)探求的。
探求ETL本質(zhì)之六(元數(shù)據(jù)漫談)
對于元數(shù)據(jù)(Metadata)的定義到目前為止沒有什么特別精彩的,這個概念非常廣,一般都是這樣定義,“元數(shù)據(jù)是描述數(shù)據(jù)的數(shù)據(jù)(Data about Data)”,這造成一種遞歸定義,就像問小強住在哪里,答,在旺財隔壁。按照這樣的定義,元數(shù)據(jù)所描述的數(shù)據(jù)是什么呢?還是元數(shù)據(jù)。這樣就可能有元元元...元數(shù)據(jù)。我還聽說過一種對元數(shù)據(jù),如果說數(shù)據(jù)是一抽屜檔案,那么元數(shù)據(jù)就是分類標簽。那它和索引有什么區(qū)別?
元數(shù)據(jù)體現(xiàn)是一種抽象,哲學家從古至今都在抽象這個世界,力圖找到世界的本質(zhì)。抽象不是一層關(guān)系,它是一種逐步由具體到一般的過程。例如我->男人->人->哺乳動物->生物這就是一個抽象過程,你要是在軟件業(yè)混會發(fā)現(xiàn)這個例子很常見,面向?qū)ο蠓椒ň褪沁@樣一種抽象過程。它對世界中的事物、過程進行抽象,使用面向?qū)ο蠓椒?,?gòu)建一套對象模型。同樣在面向?qū)ο蠓椒ㄖ?,類是對象的抽象,接口又是對類的抽象。因此,我認為可以將“元”和“抽象”換一下,叫抽象數(shù)據(jù)是不是好理解一些。常聽到這樣的話,“xx領(lǐng)導的講話高屋建瓴,給我們后面的工作指引的清晰的方向”,這個成語“高屋建瓴”,站在10樓往下到水,居高臨下,能砸死人,這是指站在一定的高度看待事物,這個一定的高度就是指他有夠“元”。在設(shè)計模式中,強調(diào)要對接口編程,就是說你不要處理這類對象和那類對象的交互,而要處理這個接口和那個接口的交互,先別管他們內(nèi)部是怎么干的。
元數(shù)據(jù)存在的意義也在于此,雖然上面說了一通都撤到哲學上去,但這個詞必須還是要結(jié)合軟件設(shè)計中看,我不知道在別的領(lǐng)域是不是存在Metadata這樣的叫法,雖然我相信別的領(lǐng)域必然有類似的東東。元數(shù)據(jù)的存在就是要做到在更高抽象一層設(shè)計軟件。這肯定有好處,什么靈活性啊,擴展性啊,可維護性啊,都能得到提高,而且架構(gòu)清晰,只是彎彎太多,要是從下往上看,太復雜了。很早以前,我曾看過backorifice的代碼,我靠,一個簡單的功能,從這個類轉(zhuǎn)到父類,又轉(zhuǎn)到父類,很不理解,為什么一個簡單的功能不在一個類的方法中實現(xiàn)就拉到了呢?現(xiàn)在想想,還真不能這樣,這雖然使代碼容易看懂了,但是結(jié)構(gòu)確實混亂的,那他只能干現(xiàn)在的事,如果有什么功能擴展,這些代碼就廢了。
我從98年剛工作時就開始接觸元數(shù)據(jù)的概念,當時叫做元數(shù)據(jù)驅(qū)動的系統(tǒng)架構(gòu),后來在QiDSS中也用到這個概念構(gòu)建QiNavigator,但是現(xiàn)在覺得元數(shù)據(jù)也沒啥,不就是建一堆表描述界面的元素,再利用這些數(shù)據(jù)自動生成界面嗎。到了數(shù)據(jù)倉庫系統(tǒng)中,這個概念更強了,是數(shù)據(jù)倉庫中一個重要的部分。但是至今,我還是認為這個概念過于玄乎,看不到實際的東西,市面上有一些元數(shù)據(jù)管理的東西,但是從應(yīng)用情況就得知,用的不多。之所以玄乎,就是因為抽象層次沒有分清楚,關(guān)鍵就是對于元數(shù)據(jù)的分類(這種分類就是一種抽象過程)和元數(shù)據(jù)的使用。你可以將元數(shù)據(jù)抽象成0和1,但是那樣對你的業(yè)務(wù)有用嗎?必須還得抽象到適合的程度,最后問題還是“度”。
數(shù)據(jù)倉庫系統(tǒng)的元數(shù)據(jù)作用如何?還不就是使系統(tǒng)自動運轉(zhuǎn),易于管理嗎?要做到這一步,可沒必要將系統(tǒng)抽象到太極、兩儀、八卦之類的,業(yè)界也曾定義過一些元數(shù)據(jù)規(guī)范,向CWM、XMI等等,可以借鑒,不過俺對此也是不精通的說,以后再說
第三篇:中外合作辦學中教學管理系統(tǒng)的設(shè)計與實現(xiàn)論文
摘要:中法合作辦學項目是我校中外合作辦學項目的重要組成部分。針對中外合作辦學項目的特點和具體要求,開發(fā)了一個獨立的教學管理系統(tǒng),實現(xiàn)了中外雙方教學計劃的管理、教學安排、電子校歷和課程查詢等功能,提高了項目的管理效率。
關(guān)鍵詞:中外合作辦學;教學管理;管理系統(tǒng)一、引言
中外合作辦學是我國為了適應(yīng)經(jīng)濟全球化發(fā)展的需要,積極引進國外優(yōu)質(zhì)教育資源,在辦學模式和人才培養(yǎng)等方面進行大膽探索和創(chuàng)新的嶄新的辦學體系[1,2]。中法合作辦學項目是我校中外合作辦學項目的重要組成部分,由于中法雙方在教學模式、教學計劃和教學安排上存在很大差異,目前我校的教務(wù)管理系統(tǒng)還不能適應(yīng)合作辦學的管理要求,除了一些必要的系統(tǒng)自動化操作外,在項目的管理過程中,仍然需要花大量的時間進行手工勞動(比如法方課程統(tǒng)計轉(zhuǎn)換,電子校歷的設(shè)計等等),而且每年的工作重復性很高,出錯多,不利于信息管理、信息匯總和信息統(tǒng)計工作,對合作辦學項目的良性發(fā)展產(chǎn)生了一定的掣肘。雖然市場上存在一些中外合作辦學項目的教學管理系統(tǒng)軟件,但是每個學校在中外合作辦學項目上的管理模式是不同的,我校中法合作辦學項目中的課程幾乎全部都是從法方院校引進,因此自主設(shè)計開發(fā)了一個適合我校項目特點的教學管理系統(tǒng)。
二、系統(tǒng)設(shè)計
本系統(tǒng)既可以使用公共的數(shù)據(jù)庫服務(wù)器,也可以使用本地數(shù)據(jù)庫服務(wù)器,采用的主要開發(fā)工具和技術(shù)包括Java[3]、Eclipse[4]和MySQL[5]。
(一)總體設(shè)計中法合作辦學教學管理系統(tǒng)主要涉及兩大類功能:法方教學計劃導入、轉(zhuǎn)換和電子校歷生成功能?;诖耍鞠到y(tǒng)的主要功能包含如下幾方面:1.用戶登錄注冊功能。主要功能有:用戶登錄、新用戶注冊和用戶密碼找回。2.用戶管理功能。主要功能有:用戶密碼修改和注冊密鑰修改。3.教學計劃的導入與轉(zhuǎn)換功能。主要功能有:中方教學計劃導入和刪除,法方教學計劃導入和刪除以及法方教學計劃轉(zhuǎn)換。4.電子校歷的生成功能。主要功能有:法方校歷文件導入及刪除,電子校歷生成。5.課程查詢功能。主要功能有:按照年份和授課方查詢法方教學計劃里課程信息;按照年份和具體日期查詢當天具體的排課信息。6.打印功能。本系統(tǒng)的打印功能主要用于打印在教學計劃功能模塊轉(zhuǎn)換而得的中方教學計劃和在電子校歷功能模塊生成的電子校歷。系統(tǒng)總體功能結(jié)構(gòu)如圖1所示。
(二)數(shù)據(jù)庫設(shè)計本系統(tǒng)數(shù)據(jù)庫主要包含6張表,分別是:1.用戶表1:用戶表1里存儲的是操作用戶和查看用戶這兩種用戶的信息。當有新用戶注冊時便會在這個表中添加一條用戶信息。2.用戶表2:用戶表2里存儲的是超級用戶的信息,由于超級用戶只有一個,所以表里只有一條數(shù)據(jù),在系統(tǒng)使用前已經(jīng)存儲在數(shù)據(jù)庫里了。3.用戶表3:用戶表3里存儲的是系統(tǒng)記住的登錄用戶。本系統(tǒng)只能記住一個用戶名,因此此表里只有一條數(shù)據(jù),每當插入一條新的數(shù)據(jù),必須先刪除原來的數(shù)據(jù)。4.中方教學計劃表:中方教學計劃表存儲的是往年的中方教學計劃定稿(excel文件)中的課程信息(中方模式下的課程描述),當有新的中方教學計劃定稿導入時,系統(tǒng)會把該教學計劃中的所有課程信息添加到該表中(一門課為一個信息對象)。5.法方教學計劃表:法方教學計劃表存儲的是最新一年法方發(fā)送過來的教學計劃文件(excel文件)中的課程信息,當有新的法方教學計劃導入時,系統(tǒng)會把該教學計劃中的所有課程信息添加到該表中(一門課為一個信息對象)。6.法方校歷信息表:法方校歷信息表存儲的是法方發(fā)送過來的校歷文件(excel文件),當有新的法方校歷文件導入時,系統(tǒng)會把該校歷文件中排課信息添加到該表中,每天的排課信息為一個信息對象。
三、系統(tǒng)實現(xiàn)
本小節(jié)以教學計劃管理模塊中的一個子模塊的導入法方教學計劃為例,介紹其具體實現(xiàn)過程。1.首先,彈出輸入框,選擇需要輸入的法方教學計劃的年份。2.選擇好年份(如12-13)后,彈出文件選擇對話框,選擇需要導入的法方教學計劃文件。3.導入成功后,在其他功能界面顯示區(qū)域顯示法方教學計劃文件的內(nèi)容。
四、結(jié)束語
為了提高我校中法合作辦學項目的管理水平,節(jié)約更多的時間讓教師專注于教學本身,我們設(shè)計并實現(xiàn)了這個教學管理系統(tǒng)。主要實現(xiàn)了中法雙方教學計劃轉(zhuǎn)換和電子校歷生成的功能,并在這兩大類核心功能的基礎(chǔ)上添加了系統(tǒng)登陸注冊模塊功能、用戶管理模塊功能、查詢模塊功能和打印功能。本系統(tǒng)投入使用后,顯著減少了中法班教師的工作量,很大程度上提高了工作效率。
參考文獻:
[1]中華人民共和國中外合作辦學條例[N].中國教育報,2003-04-05.[2]蘇健.中外合作辦學模式下輔導員工作創(chuàng)新研究[J].成人教育,2011,08(10).[3]HerbertSchildt著.張良華,吳明飛譯.TheCompleteRefer-enceSeventhEdition[M].北京:電子工業(yè)出版社,2008.[4]吳越勝,李新磊.Eclipse3.0程序開發(fā)技術(shù)詳解[M].北京:清華大學出版社,2010.[5]王志剛,江友華.MySql高效編程[M].北京:人民郵電出版社,2012.
第四篇:突出教學管理特色 實現(xiàn)教學質(zhì)量提升
突出教學管理特色
實現(xiàn)教學質(zhì)量提升
各位領(lǐng)導、各位同行:
大家好!下八廟鎮(zhèn)中心小學教育教學管理情況,我從三個方面發(fā)言:
一、指導教學管理有主見,不搞人云亦云
針對教育教學管理,文件、意見、辦法不斷出新,學校無所適從,教師應(yīng)接不暇的現(xiàn)狀。我校堅持從學校實際出發(fā)按教育規(guī)律辦,以“創(chuàng)設(shè)清靜和諧的育人氛圍,做適合兒童身心健康發(fā)展的科學教育”的辦學理念,努力在推進課改的進程中,謀求學校的健康發(fā)展。初步實現(xiàn)了班子、教師、學生、師生之間的和諧。
認真按部門要求做好教學的“認真”工作,其教學“認真”,做到教學過程有“據(jù)”可查,教學效果有“數(shù)”可證。
積極而認真地開展“每天五分鐘”學校特色活動(即行為、禮儀、習慣教育),通過“學生在校一日成功活動” 予以拓展延伸(即:認真學習,按時作息,完成當天學業(yè)。堅持鍛煉,每天健康活動不低于1小時。熱愛集體,樂意幫助他人。善待自己,保持快樂心情。懂得禮貌,語言文明,舉止端莊。愛護環(huán)境,有良好的個人行為習慣),作為對學生素質(zhì)教育的突破口。由于學校持之以恒地開展活動,良好的行為習慣得到培養(yǎng),學習方法得到改善,學習效果明顯提高。
二、開展教學管理活動有特色,倡導素質(zhì)提高
1、師培師訓的安排與管理 教師是“教育事業(yè)的第一資源”。為了培養(yǎng)教師,我們在資金緊缺的情況下,積極選派教師參與省、市、區(qū)級學科教學研討會學習培訓和班主任工作研討培訓,通過目睹外地優(yōu)美的育人環(huán)境,先進的辦學理念,良好的教育氛圍,大師的教學風范,拓寬了教師的視野,激發(fā)了教師參與教學改革的熱情。而對于參加外出培訓的教師,學校要求學習有筆記、有培訓的學時證明、有合格證方能報銷差旅。必要時,學習回來后要向全體教師作專題匯報或上學習實踐匯報課。
2、教研工作的開展與管理
學校定于間周分別為語文、數(shù)學、綜合科教研組教研活動時間,在教研組長的組織下,認真學習和理解《課標》、《綱要》,研究如何在教育教學實踐活動中實施新的教育理念,在時間上予以保證。每位教師必須征訂《四川教育》,幾年來學校為教師添置了一些優(yōu)秀教育專家的相關(guān)資料,如魏書生的各類講座、《教師10個怎么辦》系列叢書、《創(chuàng)新教法與經(jīng)典案例》解說等資料,微機室分年級組配置了電腦,隨時可供教師學習運用遠程教育資源(含基礎(chǔ)教育資源)、查閱資料等,這樣為教師的教研學習在條件上給予了保證。分年級組開展組內(nèi)教研,堅持隨堂聽課(學校內(nèi)部管理制定有《年級組內(nèi)隨堂聽課、評課制度》),“述二評二”活動,且規(guī)定每學期每位教師要上一堂研究課,相互研究教材、探討教法,總結(jié)教學得失。每學期每位教師結(jié)合教學實踐活動,撰寫至少一篇教學心得或論文。近幾年來,我校堅持了以教研促教改,以教改促教學質(zhì)量的穩(wěn)步提升,取得了一定的成效。
3、教學活動的開展與管理
在教學活動中,要求以學生的需要結(jié)合教材定教師的教法,以學生的學習效果評定教師教的效果,教學活動以學生為主體,充分展示學生主動參與學習的過程,積極培養(yǎng)學生大膽實踐、勇于探索創(chuàng)新的能力。
4.教學質(zhì)量的管理與要求
為了穩(wěn)步提高課堂教學質(zhì)量,促進教師的有序競爭,學校建立了教學質(zhì)量問責制度,對各年級各學科教學成績(兩分,三率)列年級末位的,且與上學期比較與第一名班平拉大距離3分或3分以上的,教學考核成績計0分,并予以特別公示。任課教師還要寫出書面問責材料存檔,同時可能要面對換崗調(diào)位的處理。
5、學習活動的開展與要求
學習習慣的培養(yǎng)非常重要,它不僅能夠幫助學生提高學習成績,更重要的是對學習思維和性格的影響起著潛移默化的作用。學生良好習慣的養(yǎng)成,直接影響學習的能力和發(fā)展水平。結(jié)合學校實際情況,提出如下要求:
(一)創(chuàng)新思路,加大學生習慣培養(yǎng)力度。學校高度重視,制定切實可行的措施將學生學習習慣培養(yǎng)工作落到實處。一是制定習慣養(yǎng)成的規(guī)劃和保證措施,二是作為學校教學常規(guī)工作中的一個重要方面加以落實,三是通過科研的方法將習慣養(yǎng)成中難以落實的問題進行研究解決,四是通過檢查和評比促進習慣養(yǎng)成工作的落實。教科室、政教處將把學生學習習慣培養(yǎng)工作作為一項長期的工程常抓不懈,2010年作為教研工作的重點,搞好落實和檢查。
(二)在教學過程中關(guān)注學生良好學習習慣的培養(yǎng)。學生的學習習慣是在教師的要求或模仿他人情況下形成。樹立一些貼近學生學習生活的榜樣,對學生的每一點良好行為,教師要及時給予表揚,要在班上營造一種“比學趕幫”的良好氛圍。同時教師要注重自己的言行,做學生的表率。
(三)齊抓共管,形成合力。培養(yǎng)學生良好的學習習慣是一個系統(tǒng)工程,需要構(gòu)建社會、家庭、學?!叭灰惑w”的教育網(wǎng)絡(luò),形成教育合力。教師要經(jīng)常進行家訪,及時與家長溝通,了解學生在家的學習行為,及時得到反饋信息,對學生的不良行為及時糾正,把讓孩子養(yǎng)成不良習慣的機會減到最少。在學校里,學生學習習慣的培養(yǎng)需要全體教師一起抓,共同訓練和培養(yǎng)。對班級中學生學習上的一些不良現(xiàn)象,每個教師都有責任、有義務(wù)進行管理、教育、引導和訓練。
(四)持之以恒,常抓不懈。良好的學習習慣培養(yǎng)不是一朝一夕之功。因此,教師要立足于本職工作,腳踏實地地去做。要在班級中制訂相應(yīng)的措施,如:實行專人監(jiān)督檢查、開展各種形式的學習習慣競賽、評出學習習慣優(yōu)秀學生樹立榜樣、家校聯(lián)系努力轉(zhuǎn)化學習習慣不良學生等等。
(五)突出重點,彰顯特色。
①活動習慣的養(yǎng)成。依據(jù)學生個人興趣及特長,積極參加興趣小組活動,培養(yǎng)興趣愛好,發(fā)展?jié)撃?,張揚個性,提高自身綜合素質(zhì)。
②探究習慣的養(yǎng)成。培養(yǎng)學生獨立思考、細心觀察的能力,善于質(zhì)疑,勇于實踐,形成主動探索的習慣。
三.落實教學管理過程有力度,堅持逗硬獎懲。1.教學常規(guī)檢查不走過場。
各年級組長負責本年級組各學科各教師的教育教學情況的了解掌握,有問題及時指出,共同監(jiān)督、共同發(fā)展。學校各部門定時或不定時地對教師的教育教學工作進行檢查,掛包領(lǐng)導平時深入年級組內(nèi)了解教育教學情況,學校教導處、政教處、教科室、少先隊對各年級組的督查,都有文字資料,各種資料作為教師績效考核的依據(jù),有效地杜絕了管理應(yīng)付和應(yīng)付檢查等現(xiàn)象。
2.教學質(zhì)量檢測分析有深度。
期中、期末的成績檢測,嚴格逗硬,認真把好監(jiān)考,閱卷,成績評定各關(guān)。由年級組準確算出各學課的得分,學校復核后,進行對教師教育教學的評定,成績檢測分析到班,到學科,到人。整個過程公正透明,教師對結(jié)果一目了然。
3.效能綜合考評有力度。
學校內(nèi)部管理制定規(guī)定:各項考核分數(shù)總和作為教師考核的主要參數(shù)。
(一)、獎勵性績效實施原則(多勞多酬,優(yōu)教優(yōu)酬;科學精細,合法合規(guī))。
(二)、獎勵性績效分配比例
班主任及管理崗位津貼占獎勵性績效的15%,課時津貼占35%,教育教學成果獎勵等項目占50%. 課時補貼按任課時數(shù)與所教人數(shù)相結(jié)合進行量化。
教育教學成果獎勵,考核項目及比例(師德師風5%,教學教研15%,教學成績檢測15%,教師出勤10%,后勤管理5%)。
教學成績考核:按學生學期成績檢測的“四率”得分進行計算(均使用調(diào)整系數(shù))。按學期計算教學成績,考核列年級最后一名,并與上學期的考核比較,與第一名科平均距離拉大至3分或以上的(或?qū)W名次下滑至倒數(shù)第一名且平均分拉大至3分者),在編教師此項考核不計分,并寫出書面的整改提高措施,自聘人員予以解聘。接班時處于末位,考核時差距縮小,享受該年級最高得分。(“四率”中差生的轉(zhuǎn)化率及差生增長率重復計算到學生個人),本學期新入學的差生不納入計算。
六年級或抽考年級名列片區(qū)前三名的,任教考試科目的教師可集體外出學習考察,若同學期進行評比兩個以上的年級前三名中名次靠前的參加學習考察。(其中某單科的綜合評比列片區(qū)倒數(shù)第一名,該科的最后一名教師不得參與外出考察),若缺席者學校將不給補助,但可自愿由本校內(nèi)教師替代。
我校的教育教學工作在上級領(lǐng)導的關(guān)心下,學校領(lǐng)導的具體安排下,在廣大一線教師的共同努力下,近幾年來教學質(zhì)量有了提升,我們自信,下八廟小學的教育事業(yè)能更加健康地持續(xù)地發(fā)展。
謝謝大家!
第五篇:高職常規(guī)教學管理設(shè)計與實現(xiàn)論文
摘要:高職常規(guī)教學管理主要包括教學督導管理、教師課程管理、教師課堂管理等。在加強常規(guī)教學管理過程中,主要存在消息滯后導致無法及時處理的問題,如教師申請調(diào)停課,教學督導卻無法及時掌握;學生考勤異常,到每周統(tǒng)計時間才能匯總,原來的手動操作、單機操作不能適應(yīng)消息及時告知的形勢需要。文章通過研究高職常規(guī)教學管理信息系統(tǒng)的設(shè)計與實現(xiàn),使用釘釘微應(yīng)用的策略,簡化流程,在線實現(xiàn)教師調(diào)停課審核、教學考勤、督導聽課等任務(wù),將線上與線下結(jié)合,在任課教師、教學督導、輔導員相互之間建立有機聯(lián)系,及時將課堂異常情況告知匯總給相關(guān)人,并及時處理,大大提高了管理效率。
關(guān)鍵詞:常規(guī)教學管理;課堂異常;教學督導;學生考勤;釘釘微應(yīng)用
隨著互聯(lián)網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,職業(yè)教育在校生規(guī)模不斷擴大以及多校區(qū)辦學的普遍化,為保障教學質(zhì)量不斷提高,優(yōu)化管理效能,激發(fā)發(fā)展?jié)摿?,高職院校的常?guī)教學管理規(guī)范化、信息化已經(jīng)成為互聯(lián)網(wǎng)+教育的必然發(fā)展趨勢[1]。對于教務(wù)職能部門和二級院系來講,常規(guī)教學管理是教務(wù)教學管理最為繁雜的部分,主要管理教學過程中出現(xiàn)的突發(fā)性、無序性的異常變動,常規(guī)任務(wù)實施過程催辦監(jiān)督等,需要耗費大量的人力、物力,效率低下,且辦理程序繁瑣、溝通渠道不暢、互動性差,一定程度上分散了教師的精力,得不到廣大師生員工的理解,也存在信息化程度低、手工或單機操作、消息零散、不方便及時匯總和查閱等缺陷[2]。
1系統(tǒng)設(shè)計的原則
1.1線上線下結(jié)合的原則
按照規(guī)范管理要求,每一項活動需要有相應(yīng)的材料支持、單據(jù)證明等,用于備案備查,信息化并不是要取代線下的流程材料、單據(jù)等。因此,一般需要下載打印單據(jù)、材料等,手工填寫后用手機拍照作為附件上傳留存,對流程化的管理實現(xiàn)了信息化,從而兼顧了線上流程的便捷性,也保障了管理的規(guī)范化要求。
1.2便捷性原則
教師應(yīng)該能夠通過移動智能設(shè)備,如手機、平板等,在任何有網(wǎng)絡(luò)的地方實現(xiàn)申請。APP應(yīng)用需要支持主流的Android和iOS平臺,支持在PC上的后臺管理,實現(xiàn)更加復雜的管理統(tǒng)計任務(wù)。
1.3開放定制原則
教學管理任務(wù)流程繁雜,信息應(yīng)該具備一定的開放性,能通過一定的方式進行擴展。
2基于釘釘微應(yīng)用的系統(tǒng)設(shè)計和實現(xiàn)
2.1系統(tǒng)功能模塊
目前主要通過微應(yīng)用+模板定制的方式來實現(xiàn)常規(guī)教學管理,功能模塊結(jié)構(gòu)如圖1所示。
2.2模塊實現(xiàn)
2.2.1教師調(diào)停課模塊
通過釘釘提供的模板定制功能,設(shè)計實現(xiàn)系部教師調(diào)課備案功能模塊,主要用于教師填寫調(diào)停課信息和事由等。模塊本身指定了教學主管副主任作為“審批人”,利用“抄送人”字段將審批結(jié)果轉(zhuǎn)發(fā)給院系督導組、教務(wù)處指定成員。教師調(diào)課審批備案表單如圖2所示。
2.2.2教師的班級考勤模塊
在高職院校中,對學生課堂考勤是維持課堂紀律、保障教學質(zhì)量、保護學生安全的重要方式。原則上,每堂課教師都需要考勤,并將考勤情況作為過程性考核的一個指標,對曠課缺勤的學生需要及時通告學務(wù)管理人員和輔導員,輔導員需要及時檢查學生狀況,及時跟進,了解原因,如圖3所示。
2.2.3教師聽課模塊
為規(guī)范教師聽課,促進教師業(yè)務(wù)交流,常規(guī)教學管理中對聽課進行規(guī)范,每位教師持有一本聽課記錄本,聽課時需用釘釘現(xiàn)場拍照作為附件上傳,將聽課記錄本的評價頁面拍照上傳,督導組干事從后臺對教師提交的聽課單進行統(tǒng)計和匯總。
參考文獻
[1]鄧阿琴,梁稱福,徐一斐.基于世界大學城的高職日常教學管理平臺搭建—以湖南環(huán)境生物職業(yè)技術(shù)學院為例[J].當代教育實踐與教學研究,2015(4):272-274.[2]鄒賢良.Web條件下多校區(qū)常規(guī)教學管理模式探討[J].武漢交通職業(yè)學院學報,2005(4):48-50.