qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          ETL學習筆記之三:MS SQL DTS

              對于MS SQL-Server的DTS,在使用MS SQL-Server2000時,有最基本的接觸,但僅限時簡單的數據導入/導出。當開始了解ETL時,才發現DTS原來就是ETL的應用之一。
              先不談論DTS的好壞,但它至少MS產品的特點,易學,易用。所以,要了解ETL的應用,從DTS開始,在我看來,是個不錯的選擇。我只是學習,所以我沒有能耐去評價它,下面,只能講DTS的功能一一列舉出來,可能這些與SQL-Server的聯機幫助有些重復,但對我來說,是一個加深記憶的方法。

              一:概念 
              自完全不同源的數據析取、轉換并合并到單個或多個目的。主要應用于企業數據倉庫的數據抽取過程,完成從源數據庫/文件到數據倉庫的抽取和轉換過程。 
              看看,這不就是ETL要做的事兒。

              二:特征 
              2.1:基于OLE DB,很方便從不同的數據源復制和轉換數據。 
              是了,MS總是首要支持自已的其它產品,所以,它選擇了最通用的Windows的標準。
              2.2:有圖形化設計器,也可通過編程二次開發。 
              這也是MS的長項,并且能把其它的東西一股腦兒的集成進來。
              2.3:執行效率高于普通ADO(SQL)操作
              據說是這樣地,我做過簡單的比較,確實不是一個數量級,原理呢?估計可能有較多特殊處理,比如批量插入bcp,傳輸前的數據壓縮等技術……,當然,這只是我的猜測。 
              2.4:可調度。 
              這對于Windows系統,那很容易了,可以利用現成的系統級調度。

              三:詳細 
              來說點詳細的東東,當然,這里的詳細并不指全部,實際上,我也只能挑出比較有代表性的功能點列舉一下,要是全部,那還不如抄襲聯機幫助了。

              3.1:包——最小的可調度單元 
              包是基本任務,由工作流連接而成。包可以嵌套(包中的單個任務可以是執行另一個已存在的包)。 
              包是調度的直接管理對象,嵌套包保證包任務的重用。 

              3.2:任務——最小的工作流連接單元 
              分為以下幾種任務: 
              導出和導入數據任務、轉換任務、復制數據庫對象、郵件/消息發送、Transact-SQL 語句或 Microsoft ActiveX® 腳本執行包、采用COM自定義任務。
              其中,最常用的應該是普通轉換任務。這等同于ETL中的T。

              3.3: 數據連接——定義數據源和目的地 
              分為以下幾種: 
               標準數據庫(如 Microsoft SQL Server 2000、Microsoft Access 2000、Oracle、dBase、Paradox);與 ODBC 數據源的 OLE DB 連接;Microsoft Excel 2000 電子表格數據;HTML 源;以及其它 OLE DB 提供程序 
          文件連接數據鏈接連接(比較特殊) 
              注意:SQL-Server作為Windows應用產品,DTS自然也不支持Java。
              對于標準數據庫是最基本的應用,易于實現。文件連接涉及格式定義,還不算復雜。 

              3.4:轉換——數據轉換
              數據轉換,指列進行,有多種方式: 
              3.4.1:簡單復制方式。 
              3.4.2:簡單轉換(如,數據格式化,取字符串子串等……) 
              3.4.3:ActiveX腳本(實際上是vbScript和JavaScript) 
              3.4.4:調用自定的COM對象進行轉換。 
              通常會采用一二方式。如果要將DTS集成到你的應用中,可以第三種方式。 

              3.5:工作流 
              工作流包括成功,失敗,完成。工作流支持腳本控制。可編程控制。 
              工作流方式對于純數據抽取意義不大,但是考慮到任務包含收發郵件,信息,上/下傳文件,那就有必要了。當然,你也可以將這些任務單獨提出到應用端執行,而不采用DTS中的任務。 

              3.6:元數據 
              元數據方式更多的留備擴展,最基礎的應用是用來預定義數據表。

              3.7:數據驅動的查詢任務——(一種特珠的轉換方式)
              一種很特殊的轉換方式,支持參數。這里,單獨把它提出來,因為它不是那么容易理解,我花了一些時間,才將其弄明白。
              3.7.1:根據源數據的特征決定之后的查詢方式(指增,刪,改,查詢操作)。 
              3.7.2:支持參數,參數通過定義綁定表來關聯,通過定義轉換腳本,可以計算出綁定列參數。 
              3.7.3:轉換時可以定義批量處理。 
              3.7.4:轉換支持多階段抽取,可以定義階段代碼,階段分為:行轉換,轉換失敗,插入成功,插入失敗,批處理完成,抽取完成。 
              此種應用異常復雜,應屬高級應用。簡單的看,當轉換任務需要根據數據源來確定動作,這是非常有用的。比如你的應用存在多表存儲,就可能根據表內的時間來確定之后的動作,達到數據分多表存儲的目的。 

              3.8: 查找查詢
              作為轉換數據任務和數據驅動的查詢任務的一種功能。 
              查找查詢使您得以對源和目的之外的其它連接運行查詢和存儲過程。例如,通過使用查找查詢,可以在查詢過程中進行單獨的連接,并在目的表中包括來自連接的數據。 
              作為一種擴充功能,實現更復雜的查詢操作。

              3.9: 多任務支持事務處理 
              除了順序執行,可以進行并行執行步驟,且支持檢查點回滾。 
              當然,任務的事務仍然依賴于數據源所在所據庫是否支持事務。一般情況下,順序執行已經可以滿足抽取需求。

              好了,不管對錯,還是說說我的看法:
              首先:DTS中抽取流程定義比較清晰,數據轉換功能豐富,可視的設計工具強大,有一定的可擴展性(COM定制,腳本支持)。
              但是:但學習下來,隱隱約約覺得它有MS產品的通病,就是大而全,如果進行小型應用的集成,它是很方便和夠用的,但如果要在大型項目中集成DTS,它提供的二次開發方式,就顯得有些散亂,缺少一個總體的框架指導。當然,這可能與它的定位有關。
              對了,我看的SQL-Sever2000的DTS,對于2005,我不知有哪些方面的改進。

          posted on 2011-10-31 11:59 順其自然EVO 閱讀(183) 評論(0)  編輯  收藏

          <2011年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 陕西省| 淮北市| 炎陵县| 南和县| 桐柏县| 固始县| 密山市| 河池市| 科尔| 高碑店市| 文安县| 台中县| 明水县| 佳木斯市| 肇东市| 昌平区| 米泉市| 定安县| 焦作市| 杭州市| 宁陕县| 诸城市| 张北县| 炉霍县| 湘乡市| 隆尧县| 花莲县| 泾源县| 饶平县| 克什克腾旗| 济源市| 阿拉善右旗| 荣成市| 子长县| 昌平区| 武安市| 寿宁县| 大埔县| 且末县| 武山县| 安西县|