文章詳情頁
使用 DB2 Change Management Expert 進(jìn)行數(shù)據(jù)庫版本控制(1)
瀏覽:4日期:2023-11-11 11:48:45
本文示例源代碼或素材下載 您是否有過想知道數(shù)據(jù)庫何時(shí)被更改的經(jīng)歷?有了 IBM® DB2® Change Management Expert,您將不再有疑問!該工具可以幫助您跟蹤變更,與其他小組成員合作無間,逆轉(zhuǎn)或者撤消變更,以及審計(jì)對(duì)數(shù)據(jù)庫作出的任何變更。本文描述這樣一個(gè)場(chǎng)景:DBA 所在公司使用 DB2 Change Management Expert 和 Eclipse Team 項(xiàng)目來增強(qiáng)協(xié)作和確保一致的審計(jì)路徑。您將學(xué)習(xí)連接到庫控制系統(tǒng)并將變更治理項(xiàng)目、模型和腳本保存到庫控制中,以及審計(jì)變更。而且,還將發(fā)現(xiàn)如何從庫控制中檢索變更,以及使用部署腳本撤消變更。簡介數(shù)據(jù)庫的維護(hù)不外乎變更 二字。假如您的目標(biāo)是保證質(zhì)量,那么就需要治理變更。您需要確保數(shù)據(jù)庫應(yīng)用程序按預(yù)期運(yùn)行,變更能夠順利進(jìn)行,并且,假如出現(xiàn)錯(cuò)誤,可以調(diào)查問題。雖然數(shù)據(jù)庫可以用日志記錄某些活動(dòng),但是日志比較難于分析。最后,日志只能提供對(duì)數(shù)據(jù)庫變更的一個(gè)不完整的描述。那么,為什么不借助軟件開發(fā)中的技術(shù)呢?在軟件開發(fā)中,跟蹤變更的傳統(tǒng)方法是使用某種類型的變更治理系統(tǒng)、過程或工具。這種方法有很多名稱:配置治理、變更治理、源代碼控制、庫控制、版本控制等等。對(duì)于本文,我們使用術(shù)語版本控制。不管是對(duì)于應(yīng)用程序還是對(duì)于產(chǎn)品代碼本身,變更治理的過程都相當(dāng)成熟。大多數(shù)程序員都熟悉對(duì)代碼進(jìn)行簽入和簽出操作,并知道什么版本與哪個(gè)軟件發(fā)行版是對(duì)應(yīng)的。但是,應(yīng)用程序開發(fā)周期中扮演其它角色的人清楚這些因素的重要性嗎?他們使用版本控制工具嗎?架構(gòu)師的設(shè)計(jì)、項(xiàng)目經(jīng)理的計(jì)劃、編程人員的文檔以及測(cè)試人員的場(chǎng)景和結(jié)果又如何呢?數(shù)據(jù)庫治理員呢?應(yīng)用程序可不僅僅是代碼。組成一個(gè)發(fā)行版的所有部分都應(yīng)該在一起。作為應(yīng)用程序一部分的任何對(duì)象都可以、也應(yīng)該成為版本控制工具或過程的一部分。 123456789下一頁 總體過程下面的圖顯示了使用 DB2 Change Management Expert 和版本控制系統(tǒng)更改一個(gè)數(shù)據(jù)庫的總體過程:圖 1. 使用 DB2 Change Management Expert 更改一個(gè)數(shù)據(jù)庫的總體過程
DB2 Change Management Expert 與 EclipseDB2 Change Management Expert 是一個(gè)工具,它可以幫助 DBA 跟蹤變更,與作出不同變更的其它 DBA 協(xié)作,審計(jì)和治理那些變更的歷史,并逆轉(zhuǎn)或撤銷不再需要的變更。DB2 Change Management Expert 是基于 Eclipse 的工具。Eclipse 是用于交付胖客戶機(jī)應(yīng)用程序的一種與平臺(tái)無關(guān)的開源軟件框架。Eclipse 平臺(tái)使其它工具開發(fā)人員可以輕松地構(gòu)建和交付集成的工具。該框架被用于開發(fā)用于 DB2 Change Management Expert 的集成開發(fā)環(huán)境(IDE)。欲了解關(guān)于 Eclipse 平臺(tái)的更多信息,請(qǐng)參閱本文的 參考資料 小節(jié)。DB2 Change Management Expert 中的一個(gè)成功的版本控制過程包括使用 Eclipse Team 功能。Eclipse Team 集成是 DB2 Change Management Expert 版本控制功能的要害組成部分。Eclipse Team 組件提供了一種機(jī)制,答應(yīng)儲(chǔ)存庫工具將它們的儲(chǔ)存庫解決方案的完整的、豐富的功能集成到 Eclipse 工作臺(tái)中。本文中的例子例釋了 Eclipse Team 功能。欲了解關(guān)于 Eclipse Team 的更多信息,請(qǐng)參閱本文的 參考資料 小節(jié)。當(dāng)數(shù)據(jù)庫被更改后,DB2 Change Management Expert 項(xiàng)目(包括它所包含的所有資源)應(yīng)該被注冊(cè)到版本控制中,并被賦予一個(gè)標(biāo)記或標(biāo)簽。還可以使用 Eclipse Team 功能歸檔 DB2 Change Management Expert 項(xiàng)目。為了跟蹤變更,應(yīng)該先歸檔項(xiàng)目。可以在變更開發(fā)的過程中,在部署任何變更之前進(jìn)行歸檔。這樣一來,就可以引入迭代,其它團(tuán)隊(duì)成員或 DBA 可以參與進(jìn)來并提供變更,其他人則可以查看和修改已經(jīng)作出的變更。 上一頁123456789下一頁 Data Design Projects、數(shù)據(jù)庫與版本控制之間的關(guān)系可以以不同的方式使用版本控制來治理數(shù)據(jù)庫變更項(xiàng)目。可以使用正式的或非正式的版本控制系統(tǒng)。版本控制系統(tǒng)可以像計(jì)算機(jī)上的文件系統(tǒng)一樣簡單,也可以像 Concurrent Visioning System (CVS) 或 IBM Rational Clear Case 一樣全面。對(duì)于大多數(shù)示例,本文使用 CVS。DB2 Change Management Expert 通過項(xiàng)目將需要作出變更的不同資源組織在一起。一個(gè)數(shù)據(jù)設(shè)計(jì)項(xiàng)目通常跟蹤一個(gè)數(shù)據(jù)庫的生命周期。通過使用 Eclipse team 功能,可以共享項(xiàng)目,以便多個(gè) DBA 共同應(yīng)對(duì)變更。Data Design Projects 在特定的時(shí)間點(diǎn)上表示變更。一旦變更被部署,則資源通常被提交到版本控制系統(tǒng),并被賦予一個(gè)標(biāo)記或標(biāo)簽。可以使用標(biāo)記或標(biāo)簽返回到變更保存點(diǎn),以撤銷變更,或者審計(jì)特定的變更。在更復(fù)雜的數(shù)據(jù)庫中,可以使用 Data Design Project 來治理一個(gè)特定數(shù)據(jù)庫應(yīng)用程序的生命周期。在某些公司,表或模式被拆分開來,由特定的 DBA 或 DBA 團(tuán)隊(duì)治理。可以使用 Data Design Projects 來匹配這些環(huán)境。因此,可以將一個(gè)數(shù)據(jù)庫拆分開,由數(shù)個(gè) Data Design Projects 來治理。假如一個(gè)主數(shù)據(jù)庫有多個(gè)副本,則可以使用一個(gè) Data Design Project 來治理這些數(shù)據(jù)庫。這就是所謂的多重配置(multiple provisioning),即首先為一個(gè)數(shù)據(jù)庫構(gòu)造變更,然后將其部署到多個(gè)數(shù)據(jù)庫。插入到 Eclipse 中的版本控制系統(tǒng),例如 CVS 或 IBM Rational Clear Case,提供了與 DB2 Change Management Expert 的最佳集成。但是,由于 DB2 Change Management Expert 將所有數(shù)據(jù)文件和文件夾存儲(chǔ)在本地文件系統(tǒng)上,甚至可以使用未與 Eclipse 集成的版本控制系統(tǒng)來治理 DB2 Change Management Expert 資源。還可以在沒有正式的版本控制系統(tǒng)的情況下治理變更。本文在 如何在不使用版本控制系統(tǒng)的情況下使用 DB2 Change Management Expert 小節(jié)對(duì)這種情況作了描述。 上一頁123456789下一頁 結(jié)合使用版本控制系統(tǒng)和 DB2 Change Management Expert這個(gè)示例演示如何使用版本控制審計(jì)變更,以及協(xié)調(diào)由不同 DBA 做出的變更。示例中的圖顯示了使用 DB2 V9 情況下的 DB2 Change Management Expert。示例被分為以下四個(gè)部分:Jaya 對(duì)數(shù)據(jù)庫做出一個(gè)更改。Jaya 通過將項(xiàng)目提交到版本控制系統(tǒng)與他人共享項(xiàng)目。Eric 鎖定項(xiàng)目,并做出其他更改。Jaya 不喜歡 Eric 做出的更改,并逆轉(zhuǎn)這些更改。注重:本場(chǎng)景使用 CMEDEMO 數(shù)據(jù)庫。可以從本文的 下載 小節(jié)下載 sample01.zip 文件,并將其解壓到一個(gè)本地目錄,以安裝用于創(chuàng)建和設(shè)置該數(shù)據(jù)庫的 DDL(CreateCMEDEMO.chx)。下面是設(shè)置該數(shù)據(jù)庫的步驟:選擇 File -> New -> Data Design Project,創(chuàng)建一個(gè) Data Design Project,并將該項(xiàng)目命名為 test。圖 2. New Data Design Project在 DB2 Change Management Expert 的 Data Project Explorer 視圖中,將 CreateCMEDEMO.chx 文件導(dǎo)入到 test 項(xiàng)目中。展開 CMEDEMO 項(xiàng)目中的 SQL Scripts 文件夾的內(nèi)容,右鍵單擊 CreateCMEDEMO.chx 文件,并選擇 Run SQL。確認(rèn)選擇了適當(dāng)?shù)臄?shù)據(jù)庫版本。輸入用戶名和密碼,不選擇復(fù)選框 Create Deployment Project and Script file,然后單擊 Finish。在 Database Explorer 視圖中,確認(rèn) CMEDEMO 數(shù)據(jù)庫已經(jīng)被創(chuàng)建,并且存在一個(gè)連接。現(xiàn)在可以繼續(xù)完成本文中的所有步驟。第 1 部分。DBA Jaya 對(duì)數(shù)據(jù)庫做出更改。和 Jaya 一樣,您將完成以下步驟:創(chuàng)建一個(gè)名為 TestAudit 的新的部署腳本。部署腳本是一種 DB2 Change Management Expert 資源,用于跟蹤變更治理過程。可以在 New Deployment Script 向?qū)е兄付ū桓牡臄?shù)據(jù)庫的位置和名稱。這里將為指定的數(shù)據(jù)庫創(chuàng)建兩個(gè)模型。一個(gè)模型是基本模型,表示數(shù)據(jù)庫的當(dāng)前狀態(tài),另一個(gè)模型是目標(biāo)模型,可以通過編輯該模型來定義新的變更。 上一頁123456789下一頁 對(duì)目標(biāo)模型做出更改。例如,為 CL_SCHED 表創(chuàng)建一個(gè)名為 LOCATION 的 CHAR(128) 類型的新列。可以在屬性視圖中添加這個(gè)新列。做出更改后,保存模型。圖 3. CL_SCHED 表中的數(shù)據(jù)列 'LOCATION'打開該部署腳本。為了生成變更命令,在 Outline 視圖中右鍵單擊 Change Commands,選擇 Generate Change Commands。這時(shí)彈出 Generate Change Commands 向?qū)А3俗兏钔猓撓驅(qū)н€創(chuàng)建數(shù)據(jù)保留(data-preservation)命令。這里必須為部署時(shí)生成的數(shù)據(jù)文件指定文件系統(tǒng)上的一個(gè)位置。通過在向?qū)е羞x擇 auto-cast,可以解決任何導(dǎo)入與導(dǎo)出列數(shù)據(jù)類型的沖突。圖 4. Generate Change Commands 向?qū)傻淖兏钋鍐蔚?2 部分。Jaya 做出的變更就此完成,現(xiàn)在她可以將項(xiàng)目添加到版本控制系統(tǒng)中,從而共享項(xiàng)目。之后,可以從版本控制系統(tǒng)中提取變更,并用于繼續(xù)變更治理過程。必要時(shí),其他治理員也可以審計(jì)變更。這樣很輕易組合和協(xié)調(diào)兩個(gè)甚至更多 DBA 做出的變更。這個(gè)例子中使用 CVS 作為版本控制系統(tǒng)。安裝 CVS Server,并設(shè)置一個(gè)儲(chǔ)存庫。在 DB2 Change Management Expert 中,打開 CVS Repository Exploring 透視圖。該透視圖包括一個(gè)名為 CVS Repositories 的視圖,在這里可以添加多個(gè)不同的儲(chǔ)存庫位置。為了添加 DB2 Change Management Expert Data Design Project 的儲(chǔ)存庫位置,在該視圖中單擊右鍵,選擇 New -> Repository。這時(shí)顯示以下對(duì)話框: 上一頁123456789下一頁 圖 5. Add CVS Repository 對(duì)話框在所需字段內(nèi)輸入信息,然后選擇 Finish。您將看到添加到 CVS Repository 視圖中的儲(chǔ)存庫。圖 6. Repository Exploring 視圖,包含新的儲(chǔ)存庫位置可以進(jìn)行下拉操作,瀏覽該儲(chǔ)存庫中的內(nèi)容。切換回 Data 透視圖。選擇要注冊(cè)到 CVS 中的項(xiàng)目,在該項(xiàng)目上單擊右鍵,選擇 Team -> Share Project。這時(shí)彈出 Share Project 向?qū)АD 7. Share Project 向?qū)нx擇已有的儲(chǔ)存庫位置(在上一步中已經(jīng)添加)。接受所有默認(rèn)設(shè)置,單擊 Finish。 記住:可以簽入所有 ASCII 類型的 DB2 Change Management Expert 資源。 任何被答應(yīng)訪問這個(gè)特定儲(chǔ)存庫位置的 DBA 現(xiàn)在都可以打開和查看該項(xiàng)目,并且可以做出更改。第 3 部分。 另一個(gè) DBA Eric 可以打開該項(xiàng)目,并做出其它更改。Eric 完成以下步驟:打開 CVS Repository Exploring 透視圖。在 CVS Repository 視圖中選擇該項(xiàng)目,單擊右鍵,并選擇 Check Out。這將在當(dāng)前工作區(qū)中創(chuàng)建該項(xiàng)目的一個(gè)副本。現(xiàn)在可以修改該項(xiàng)目和任何相關(guān)的文件。編輯目標(biāo)模型。將 EMP_PHOTO table 拖入到模型中,重新生成變更命令。可以參考第 1 部分中的步驟。完成更改后,查看數(shù)據(jù)庫模型。假如該模型沒有達(dá)到預(yù)期的結(jié)果,則可以通過恢復(fù)到 Jaya 創(chuàng)建的版本,撤消新的更改。為了撤消更改,在 Data Project Explorer 中右鍵單擊該項(xiàng)目(或該項(xiàng)目中的某個(gè)資源),選擇 Replace With -> Latest from Head。這一步將 EMP_PHOTO 表添加回目標(biāo)模型。 注重:對(duì) EMP_PHOTO 表做出的新更改是本地的,只有在顯式地提交之后才會(huì)被注冊(cè)到 CVS 中。 上一頁123456789下一頁 在物理數(shù)據(jù)庫編輯器中,打開目標(biāo)模型,再次修改它。下面是可以對(duì)模型做出的更改的一個(gè)例子。更改完成之后,保存模型,并重新生成變更命令。此外還將生成撤消命令:添加一個(gè)名為 COMPLETION_CODE 的新表,表中列 CODE 的數(shù)據(jù)類型為 INTEGER,列 DESC 的數(shù)據(jù)類型為 VARCHAR(128)。將列 CODE 設(shè)為表 COMPLETION_CODE 的主鍵。將一個(gè)類型為 INTEGER、名為 CODE 的新列添加到 PROJECT TABLE 表中。將 PROJECT 表的 CODE 列定義為 nullable。創(chuàng)建 PROJECT 表中列 CODE 與 COMPLETION_CODE 表中主鍵列 CODE 之間的外鍵關(guān)系。選擇 Deploy Changes 將更改部署到目標(biāo)數(shù)據(jù)庫。 注重: 當(dāng)在 DB2 Change Management Expert 中部署時(shí),更改被記錄到工作區(qū)中的一個(gè)部署日志文件中。這個(gè)部署日志文件也應(yīng)該與 test 項(xiàng)目一起注冊(cè)到 CVS 中。更改將沿著 Deployment Script Editor 概述頁面指定的連接部署。假如工作區(qū)內(nèi)不存在連接,則必須創(chuàng)建一個(gè)與目標(biāo)數(shù)據(jù)庫同名的連接。為此可以從 Database Explorer 視圖中選擇 Connections -> New Connection。圖 8. New Connection 向?qū)нx擇 Team -> Commit 將更改注冊(cè)到 CVS 中。現(xiàn)在整個(gè)團(tuán)隊(duì)可以查看 Jaya 和 Eric 做出的更改。第 4 部分。第一個(gè) DBA Jaya 打開項(xiàng)目,并查看 Eric 做出的更改。假如 Jaya 想要撤消 Eric 對(duì)數(shù)據(jù)庫部署的更改,則可以執(zhí)行以下步驟:打開部署腳本,并在 Deployment Script Editor 的 Undo Changes 標(biāo)簽頁上選擇 Deploy Undo Commands。要么重置部署腳本,重新開始變更過程,要么再次修改模型,以生成她想要部署的變更命令。 上一頁123456789下一頁 可以通過打開部署腳本并單擊 deployment script editor 的菜單項(xiàng)重置部署腳本。選擇 Deploy -> Reset。這樣將啟動(dòng)一個(gè)向?qū)В撓驅(qū)椭刂貌渴鹉_本。如何在不使用版本控制系統(tǒng)的情況下使用 DB2 Change Management Expert假如不能使用一個(gè)版本控制系統(tǒng),是否仍然可以使用 DB2 Change Management Expert?當(dāng)然!但是,出于審計(jì)和跟蹤的目的,可能仍然需要遵從某些控制,那么,假如 DB2 變更都存儲(chǔ)在 DB2 Change Management Expert 中,則應(yīng)該如何做呢?Data Project 信息存儲(chǔ)在一開始定義的 DB2 Change Management Expert Workspace 中。工作區(qū)是本地磁盤上的一組目錄,因此可以將那些文件保存在一起,作為該版本的文件集。我們使用本文中的示例,但是假設(shè)您沒有版本控制系統(tǒng)。使用儲(chǔ)存庫存儲(chǔ)變更的一個(gè)好處是工作區(qū)可以使用大量的變更歷史。出于審計(jì)的目的,或者為了撤消一次變更,可能需要這些歷史。假如只處理項(xiàng)目文件本身,那么就需要由您來跟蹤發(fā)生了什么變更,以及是誰做出的變更。可以與其他用戶共享整個(gè)工作區(qū)嗎?從技術(shù)上講,是這樣的,可以共享整個(gè)工作區(qū),例如在一個(gè)共享驅(qū)動(dòng)器上。但是,假如在其他人已打開工作區(qū)的時(shí)候嘗試打開工作區(qū),就會(huì)收到一條錯(cuò)誤消息,說該文件已經(jīng)在使用。共享工作區(qū)的另一個(gè)缺點(diǎn)是所有設(shè)置也隨之被共享,所以假如其他人更改設(shè)置的話,就可能丟失定制。所以不建議共享工作區(qū)。如何在多個(gè) DBA 之間共享文件?有一些方法可以共享項(xiàng)目文件。本文使用的、也是最簡單的方法是將整個(gè)項(xiàng)目導(dǎo)出為一個(gè)歸檔文件(ZIP 文件),讓其他用戶將項(xiàng)目導(dǎo)入到他們的工作區(qū)中。 遵循上述場(chǎng)景之后(Jaya 和 Eric 完成某些數(shù)據(jù)庫變更),當(dāng)生成所有變更命令之后,Jaya 現(xiàn)在處在第 1 部分的最后位置。Jaya 現(xiàn)在不是將文件注冊(cè)到版本控制中,而是需要保護(hù)更改,使之可以被正在處理該項(xiàng)目的另一個(gè) DBA 使用。Jaya 執(zhí)行以下步驟: 上一頁123456789下一頁 選擇項(xiàng)目,然后選擇 File -> Export,打開 Export 對(duì)話框。展開 General 文件夾,選擇 Archive File 并單擊 Next。在接下來的屏幕上,選擇項(xiàng)目、輸出文件位置、文件名和格式(ZIP 或 TAR),然后單擊 Finish。這樣將在磁盤上創(chuàng)建 ZIP 文件。Jaya 可以離開 DB2 Change Management Expert,使導(dǎo)出的 ZIP 文件可以被 Eric 使用。Eric 現(xiàn)在需要處理該項(xiàng)目。Eric 不是從 CVS 中讀出它,而是必須手動(dòng)地將那個(gè)項(xiàng)目導(dǎo)入他的工作區(qū)中。Eric 執(zhí)行以下步驟:在工作區(qū)中,選擇 File -> Import。展開 General 文件夾并選擇 Existing Projects into Workspace。使用 Select archive file 瀏覽至 Jaya 導(dǎo)出的歸檔文件的位置。那個(gè)歸檔文件中的項(xiàng)目將出現(xiàn)在 Projects 列表框中。選擇項(xiàng)目并單擊 Finish。現(xiàn)在,項(xiàng)目就處在 Eric 的工作區(qū)中,他可以繼續(xù)第 3 部分中描述的變更。當(dāng) Eric 做出更改并生成 DDL 時(shí),部署腳本同時(shí)包含來自 Jaya 和 Eric(Eric 可能已經(jīng)刪除或修改了 Jaya 的更改,但是這里沒有)。在第 3 部分中,Eric 刪除一個(gè)表,但是后來改變了主意,并返回到 CVS 中項(xiàng)目的版本。假如不使用版本控制系統(tǒng),如何可以做到這一點(diǎn)?在 CME 中,有些本地歷史存在于工作區(qū)中。在這個(gè)特定的場(chǎng)景中,Eric 可以繼續(xù)從目標(biāo)模型中刪除 EMP_PHOTO 表,然后通過從 Data Project Explorer 視圖中右鍵單擊目標(biāo)模型并選擇 Replace with Local History 將其放回模型中。Eric 可以逆轉(zhuǎn)之前的更改。但并不是所有情況下都能這樣,而是只有在工作區(qū)中才能這樣。也就是說,Eric 和 Jaya 不能相互逆轉(zhuǎn)對(duì)方的更改。在第 4 部分中,當(dāng) Eric 將項(xiàng)目導(dǎo)出到一個(gè)歸檔文件(ZIP/TAR)之后,Jaya 可以將項(xiàng)目導(dǎo)回到工作區(qū)中。Jaya 應(yīng)該從工作區(qū)中刪除已有的項(xiàng)目,并導(dǎo)入 Eric 做出的新的項(xiàng)目歸檔。這個(gè)項(xiàng)目將包含從第 1 部分到第 3 部分的所有變更。但是,Jaya 不能訪問關(guān)于 Eric 做出的變更的任何本地歷史,所以要恢復(fù)到之前的變更就變得更困難。從這個(gè)場(chǎng)景可以看出,當(dāng)進(jìn)行團(tuán)隊(duì)協(xié)作時(shí),版本控制系統(tǒng)是多么的重要。通過整個(gè)項(xiàng)目文件共享變更的另一種方法是共享各個(gè)模型或部署腳本,并使用 DB2 Change Management Expert 合并和遷移特性集成變更。這種方法要求更多地注重細(xì)節(jié),但是當(dāng)處理多個(gè)變更或者更復(fù)雜的變更時(shí),可以提供更多的靈活性。不管使用何種方法,都不能獲得比版本控制系統(tǒng)所提供的更豐富的歷史功能。結(jié)束語結(jié)合使用版本控制系統(tǒng)和 DB2 Change Management Expert,可以為治理業(yè)務(wù)需求提供一個(gè)強(qiáng)制性的資源。使用這兩種工具有助于順利完成對(duì)應(yīng)用程序開發(fā)周期中涉及的所有變更的跟蹤。即使沒有版本控制系統(tǒng),通過使用 DB2 Change Management Expert 和一個(gè)規(guī)劃良好的系統(tǒng),也仍然可以獲得上述好處。希望本文能夠鼓勵(lì)您進(jìn)一步探索 DB2 Change Management Expert 如何滿足您的要求。 上一頁123456789

標(biāo)簽:
DB2
數(shù)據(jù)庫
排行榜
