DTS开发记录(序)
?目前手頭上正在負責(zé)一個DTS(這里的DTS是Data Transfer System的縮寫)系統(tǒng)的開發(fā),我打算寫一系列的文章來記錄這個開發(fā)的全過程,這個記錄可以說是實時的--每當(dāng)遇到一個重要問題或解決一個重要問題,我將記錄之。侯捷老師說,“發(fā)表是最好的記憶”,這一系列的文章除了權(quán)作筆記外,也希望能對后來者有所參考。
????
??? 在開發(fā)任何系統(tǒng)之前,我們都需要弄清楚,這個系統(tǒng)是用來干什么的?主要職責(zé)是什么?這些需要通過需求分析得到。DTS是一個工具軟件,幾乎不涉及業(yè)務(wù),所以其功能目標(biāo)還是比較單純的。我們都知道,DTS用于在兩個數(shù)據(jù)庫之間導(dǎo)入導(dǎo)出數(shù)據(jù),參與數(shù)據(jù)傳遞的兩個表(源表與目標(biāo)表)的結(jié)構(gòu)可能是完全不同的,但是它們之間的列與列可能存在映射關(guān)系(有的列映射可能很復(fù)雜,比如會涉及類型轉(zhuǎn)換、列合并、列分裂、轉(zhuǎn)換表達式等),DTS可以基于建立好的映射關(guān)系,將數(shù)據(jù)從源表向目標(biāo)表傳遞。我大致總結(jié)了一下,DTS系統(tǒng)的主要功能包括:
(1)獨立于數(shù)據(jù)庫類型,或者說完全支持異構(gòu)數(shù)據(jù)庫之間的傳遞。(如果有新的數(shù)據(jù)庫類型,則只需要添加對應(yīng)的適配器插件即可)
(2)提供可視化的工具,能建立(或修改)源表結(jié)構(gòu)與目的表結(jié)構(gòu)之間的匹配映射關(guān)系(映射關(guān)系可以保存、加載)
(3)驗證表結(jié)構(gòu)映射關(guān)系的完整性、正確性
(4)基于正確完整的結(jié)構(gòu)映射關(guān)系,可以實現(xiàn)數(shù)據(jù)從源表到目的表的導(dǎo)出和增量導(dǎo)出(暫停/繼續(xù)功能、日志記錄功能)
(5)能實現(xiàn)將源表中的某列依據(jù)指定的規(guī)則分裂成目的表中的多列。
(6)能實現(xiàn)將源表中的多列依據(jù)指定的規(guī)則合并成目的表中的一列。
(7)能將源列經(jīng)過一定的變換(如參與某個表達式的計算得到的結(jié)果)映射到目標(biāo)列。
(8)如果將源表替換為臨時視圖,仍能實現(xiàn)上述功能。(使用臨時視圖是為了解決多個源表對應(yīng)一個目的表的問題)
(9)記錄導(dǎo)出失敗的數(shù)據(jù),并能依據(jù)這些記錄,對失敗的數(shù)據(jù)進行重新導(dǎo)出。
(10)定時運行數(shù)據(jù)導(dǎo)出任務(wù)。
????就目前我所了解的,這個系統(tǒng)的難點在于以下幾個方面:
(1)獨立于數(shù)據(jù)庫類型是一個挑戰(zhàn)!不同類型的數(shù)據(jù)庫雖然都支持標(biāo)準(zhǔn)的SQL語句,但是它們之間的差異還是巨大的,比如,每種類型的數(shù)據(jù)庫都有自己的數(shù)據(jù)類型;每種類型的數(shù)據(jù)庫都有不相同的擴展;對于同一個任務(wù)(比如分頁),針對不同類型的數(shù)據(jù)庫都有不同的實現(xiàn)方式,等等。
(2)增量導(dǎo)出是另一個難點。如果已經(jīng)導(dǎo)出過的數(shù)據(jù)發(fā)生的變化(更新、刪除),由于我們不能修改數(shù)據(jù)源添加觸發(fā)器,所以我們的系統(tǒng)接收不到這些事件,如何同步這些已經(jīng)導(dǎo)出過的數(shù)據(jù)需要一種策略。
(3)列合并的合并表達式的驗證都不簡單。而且還要看你對表達式的支持需要到達什么樣的級別,比如加減乘除、指數(shù)、對數(shù)、笛卡兒運算等等。
(4)對不滿足轉(zhuǎn)換規(guī)則的源數(shù)據(jù)項的處理。也許不同的任務(wù)對這樣的源數(shù)據(jù)項的處理要求是不一樣的,系統(tǒng)必須支持用戶對處理方式的選擇。
??? 還有很多難點可能還沒有遇到,也可能還有很多需求沒有整理進來,這些會在構(gòu)建系統(tǒng)的過程中逐步挖掘或發(fā)現(xiàn),到時我會將它們列舉在這里。
??? 下面一篇文章,我將介紹這個DTS系統(tǒng)的主要結(jié)構(gòu)。
轉(zhuǎn)載于:https://www.cnblogs.com/Nina-piaoye/archive/2006/06/29/438409.html
總結(jié)
以上是生活随笔為你收集整理的DTS开发记录(序)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [原]当你用%查不到记录的时候怎么办?
- 下一篇: 现在股市里人人都在赚钱!!到底谁在亏钱?