概述
將數據庫變更管理過程想象成一套彼此相連的拼圖。一塊拼圖是數據建模,另一塊是數據庫更改。我們將展示 IBM 為將這兩塊結合在一起而提供的解決方案。IBM DB2 Change Management Expert for Linux®, UNIX®, and Windows® 是一款新的數據庫變更管理工具。它可以單獨使用,也可以與 IBM Rational Data Architect 結合使用,後者是用於企業數據建模和集成設計的工具。在物理數據模型方面,這兩種工具使用相同的語言,因而可以集成從設計和建模到數據庫變更管理的過程。 物理數據模型使數據架構師、開發人員和數據庫管理員面對同一個頁面,而不必在個人與小組之間來回轉換更改。
DB2 Change Management Expert 和 Rational Data Architect 都使用 Eclipse 框架。同時使用這兩個產品的團隊可以利用 Eclipse Team 組件來控制信息流。而且,Rational Data Architect 和 DB2 Change Management Expert 可以同時出現在同一個 Eclipse 框架中(也就是說,通過 “shared shell” 安裝)。在一人扮演多個角色的情況下,shared shell 可以提供一個單獨的用戶界面。
場景概述
本文通過一個場景來闡釋客戶如何使用這兩種產品。我們將以一家虛構的公司 JK Enterprises 作為示例客戶。JK Enterprises 已經開始使用 DB2 Change Management Expert 和 Rational Data Architect。JK Enterprises 的數據建模師 Tom 正在使用 Rational Data Architect,而身為公司 DBA 的 Eric 正在使用 DB2 Change Management Expert。但是請注意,在某些較小的工作室,可能一個人同時使用這兩個工具。
假設由於 JK Enterprises 的業務需求,他們需要為他們的項目添加完成碼。他們需要對數據庫加以更改,添加一個完成碼表,但是他們還希望在邏輯模型中反映這一更改。由於不確定邏輯模型是否是最新的,因此他們選擇首先根據生產數據庫創建一個物理模型。Eric 將在 DB2 CME 中創建這個物理模型,並將它發送給 Tom。然後,Tom 使用 Rational Data Architect 將這個物理模型轉換為一個邏輯模型,並確定完成碼實體、所需的關系和屬性。然後,通過與 Eric 協商,他在 Rational Data Architect 中將這個邏輯模型轉換成一個物理模型。然後,Eric 在 DB2 Change Management Expert 中使用這個更新後的物理模型,並將變更遷移到一個測試數據庫中。
圖 1. 場景概述
本場景分為以下 3 個主要部分:
Eric 使用 DB2 Change Management Expert 為 HR 數據庫 創建物理模型。
Tom 使用 Rational Data Architect 將物理模型轉換為邏輯模型,並對邏輯模型作出更改。
Eric 使用 DB2 Change Management Expert 將 Tom 作出的更改遷移至 HR 數據庫。
如果您具有以下先決條件,那麼可以通過完成以下小節中的步驟,嘗試這些步驟。
先決條件
本場景使用 DB2 Change Management Expert Version 1.1 和 Rational Data Architect 7.0。假設數據庫管理員已經在計算機上安裝了 DB2 Change Management Expert,並且數據架構師已經在計算機上安裝了 Rational Data Architect。(或者,如果一個人既是數據庫管理員又是數據架構師,那麼應該在同一台計算機上同時安裝這兩個工具。)
此外,必須在 DB2 Universal Database™ V8 (DB2 UDB) 或 DB2 V9 數據庫中創建 JK Enterprises 的 HR 數據庫。可以使用 DB2 Change Management Expert 來創建這個數據庫。完成以下步驟,以創建並填充該數據庫:
下載 CMERDADemo.zip package 到一個臨時目錄中。解壓這個包。
使用 DB2 Change Management Expert 創建一個新的數據設計項目。
將 createCMERDADemo.chx 從臨時目錄復制到剛才創建的數據設計項目中的 SQL Scripts 文件夾中。
展開 SQL Scripts 文件夾。
右鍵單擊 createCMERDADemo.chx 文件,然後單擊 Run SQL。這時會彈出 Deploy Change Commands 向導。
完成 Deploy Change Commands 向導中的步驟,創建和填充 HR 數據庫:
確保選擇了適當的數據庫版本。
輸入用戶名和密碼。
不選 “Create Deployment Project and Script file" 復選框,單擊 Finish。
場景步驟
A 部分:創建 HR 數據庫的物理模型
在本場景的第一部分,Eric(數據庫管理員)創建一個新的部署腳本,它是跟蹤變更管理進程的一個 DB2 Change Management Expert 資源。當他為 HR 數據庫創建部署腳本時,會創建該數據庫的兩個物理模型。一個模型是基本模型,表示數據庫的當前狀態。第二個模型是目標模型,您要編輯這個模型,以指定更改後數據庫的樣子。
Eric 會將基本模型發送給 Tom。之後,Eric 將 Tom 在本場景第二部分作出的更改應用到目標模型。
和 Eric 一樣,您將完成以下步驟來創建部署腳本和物理模型。
從主菜單欄中,單擊 File --> New --> Deployment Script。這時會彈出 Deployment Script 向導。
完成 Deployment Script 向導中的步驟:
輸入 "CMERDADemo" 作為項目名稱,然後輸入 "CMERDADemo_HR" 作為部署腳本的名稱。單擊 Next。
選擇 Use Existing Connection,然後選擇 JKENT。 單擊 Next。
輸入用戶 ID 和密碼。單擊 Next。
選擇 HR 作為模式。單擊 Next。
確認選擇了所有元素。單擊 Next。
確認將用於 HR 模式的基本模型和目標模型的默認名稱。單擊 Next。 在這個場景中,默認名稱為 CMERDADemo_HR_base.dbm 和 CMERDADemo_HR_target.dbm。
確認 Options 頁面上沒有選中任何復選框。單擊 Finish。
DB2 Change Management Experts 創建部署腳本和 HR 模式的基本模型及目標模型。圖 2 展示了當展開 Data Models 和 SQL Scripts 文件夾時出現的這些模型和腳本:
圖 2. Data Project Explorer
此時,通過電子郵件將基本模型發送給 Tom,Tom 是數據建模師和數據架構師,他那裡有 Rational Data Architect。或者,也可以將它注冊到一個版本控制系統中,這樣 Tom 就可以通過 Rational Data Architect 在那裡查看它。
B 部分:將物理模型轉換成邏輯模型,並更改邏輯模型
在本場景的第二部分中,Tom 將從 Eric 那裡收到的 HR 數據庫的物理模型添加到一個數據設計項目中。他將該物理模型轉換成一個邏輯模型,然後使用一個數據圖對邏輯模型作出以下更改:
添加一個新實體 COMPLETION_CODES,該實體有兩個屬性:COMP_CODE 和 DESCRIPTION。
添加一個新屬性 COMP_CODE 到 PROJECT 實體中。
創建 COMPLETION_CODES 與 PROJECT 實體之間的一個外鍵關系,其中 COMPLETION_CODES 為父實體。
刪除 ORGANIZATION 實體的 DEPTNAME 屬性,因為 ORGANIZATION 中的 DEPTNAME 與 DEPARTMENT 實體中的 DEPTNAME 是重復的。
對邏輯模型作出更改後,Tom 將邏輯模型轉換成一個物理模型,並將這個有更改的物理模型發送給 Eric。
和 Tom 一樣,您將完成以下步驟:
啟動 Rational Data Architect。
確認進行了偏好設置,以去掉模型轉換期間作為邏輯數據類型的 ROWID 與作為物理數據類型的 CHAR 之間的數據映射。為了檢查偏好設置,完成以下步驟:
單擊 Window --> Preferences,以顯示 Preferences 窗口。
單擊 Data --> Transform --> Data Type Markup,以顯示 Data Type Map。
如果有一行中 Logical Data Type 為 ROWID,則刪除該行。
單擊 OK。
復制 Eric 通過電子郵件發來的物理模型,將其粘貼到一個數據設計項目中。
完成以下步驟,將物理模型轉換成邏輯模型:
在 Data Project Explorer 中,在數據設計項目的 Data Models 文件夾下,選擇物理模型 CMERDADemo_HR_base.dbm,然後從主菜單欄中單擊 Data --> Transform --> Logical Data Model。這時會彈出 Transform to Logical Data Model 向導。
完成向導中的步驟:
在 Target Logical Model 頁面上,單擊 Create new model,然後單擊 Next。
在 Logical Data Model File 頁面上,接受用於邏輯模型的默認數據設計項目和邏輯模型的默認名稱。單擊 Next。
在 Options 頁面上,指定 "HR" 作為包名。單擊 Next。
在 Output 頁面上,可以看到物理模型已經被轉換成邏輯模型,單擊 Finish 保存邏輯模型。
這時彈出 Logical Data Model Editor,其中顯示關於該邏輯模型的信息。 邏輯模型 CMEDEMO_HR_base.ldm 創建成功,並出現在 Data Models 文件夾中,如圖 3 所示:
圖 3. Data Project Explorer
為邏輯模型創建一個數據圖。您將使用數據圖對邏輯模型進行更改。
Data Models 文件夾中的邏輯模型 CMERDADemo_HR_base.ldm。
右鍵單擊 Diagrams(在 HR 下),然後單擊 New OvervIEw Diagram。
選擇 HR 模式,以包括所有相應的元素,然後單擊 OK。 該圖在 Data Diagram Editor 中打開,如圖 4 所示:
圖 4. HR 模式的實體圖
將用於完成碼的一個名為 COMPLETION_CODES 的實體添加到模型中。
右鍵單擊 Data Diagram Editor 的背景,然後單擊 Add Data Object -> Entity。這樣將添加一個實體到實體圖中。
在 PropertIEs 視圖中,單擊 General 標簽頁。將實體重新命名為 COMPLETION_CODES。
單擊 Attributes 標簽頁,然後使用 New 按鈕添加兩個新的屬性。將第一個屬性重新命名為 COMP_CODE,指定它為主鍵,並確保它的數據類型為 CHAR(5)。將第二個屬性重新命名為 DESCRIPTION,將它的數據類型改為 VARCHAR(1024)。
圖 5 顯示了在作出這些更改後 Data Diagram Editor 和 PropertIEs 視圖的樣子:
圖 5. HR 模式的實體圖
創建 COMPLETION_CODES 與 PROJECT 之間的一個外鍵關系,其中 COMPLETION_CODES 是父實體,PROJECT 是子實體。
從 Data Diagram Editor 中的 Palette 中,選擇 Data --> Non-Identifying Optional。然後選擇作為主鍵和父實體的 COMPLETION_CODES 實體,將其拖放到作為子實體的 PROJECT 實體上。
PROJECT 中自動創建一個外鍵屬性 COMP_CODE。
從 ORGANIZATION 實體中去掉 DEPTNAME 屬性。
選擇 ORGANIZATION 實體。
在 PropertIEs 視圖中,單擊 Attributes 標簽頁。 選擇 DEPTNAME,然後單擊 Delete 按鈕刪除它。
保存對模型的所有更改。
將邏輯模型 CMERDADemo_HR_base.ldm 轉換成一個名為 CMERDADemo_HR_changes.dbm 的物理模型。
在 Data Project Explorer 中,進入邏輯模型所在的 Data Models 文件夾。
選擇邏輯模型 CMERDADemo_base.ldm,然後單擊 Data --> Physical Data Model。這時彈出 Transform to Physical Data Model 向導。
完成 Transform to Physical Data Model 向導中的步驟:
單擊 Create New Model,然後單擊 Next。
在 Physical Data Model File 頁面上,接受數據設計項目的默認值,指定 CMERDADemo_HR_changes 作為物理模型的名稱,指定數據庫類型。單擊 Next。
在 Options 頁面上,檢查用於轉換的選項。確保 HR 被指定為模式名稱。單擊 Next。
單擊 Finish 保存物理數據模型。
此時,將有更改的物理模型通過電子郵件發回給數據庫管理員 Eric。或者,也可以將它注冊到版本控制系統中,以便 Eric 通過 DB2 Change Management Expert 在那裡查看它。
C 部分:將發回的更改應用到 HR 數據庫上
在本場景的最後一部分,Eric 將 Tom 發回的對物理數據模型的更改遷移到 HR 數據庫的目標模型上。之後,Eric 生成將這些更改應用到實際的 HR 數據庫時所需的更改命令,並將更改命令部署到數據庫。
和 Eric 一樣,您將完成以下步驟:
啟動 DB2 Change Management Expert。
復制 Tom 發回的物理數據模型(CMERDADemo_HR_changes.dbm),在 Data Project Explorer 中將其粘貼到 CMERDADemo 數據設計項目的 Data Models 文件夾中。
右鍵單擊 SQL Scripts 文件夾中的 CMERDADemo_HR.deployXML,打開部署腳本。Deployment Script Editor 中顯示部署腳本。
圖 6 顯示了 Deployment Script Editor:
圖 6. Deployment Script Editor
將 Tom 發回的物理數據模型(CMERDADemo_HR_changes.dbm)中的更改遷移到 HR 數據庫的目標模型(CMERDADemo_HR_Target.dbm)上:
單擊 Deployment Script Editor 的 Data Models 標簽頁,在 Data Models 頁面上,單擊 Add。
在 Source Models selection 對話框中,通過下鑽選擇有更改的模型(CMERDADemo_HR_changes.dbm),然後單擊 OK。該模型顯示在 Define Source Models 字段中,如圖 7 所示:
圖 7. Data Models 頁面
選擇該模型,然後單擊 Migrate。這時彈出 Comparison Editor,其左側是有更改的模型,右側是 HR 目標模型。
使用工具條中的向下箭頭,在這兩個模型中的各個差別之間進行切換。
在這個演示中,Comparison Editor 表明要遷移的變更是從 ORGANIZATION 表中刪除 DEPTNAME 列,在 PROJECT 表中添加新的外鍵 COMPLETION_CODE_PROJ_FK,以及增加新表 COMPLETION_CODES。
當轉移外鍵時,外鍵列 COMP_CODE 將被自動轉移。如果在轉移 COMPLETION_CODES 表之前轉移 PROJECT 中的外鍵,則 COMPLETION_CODES 表將被自動轉移。
當選中差別時,單擊向右箭頭,將這些更改轉移或應用到目標 HR 模型上。
單擊 File --> Save 保存所有更改。
關閉 Comparison Editor。
單擊 Problems 視圖,更正目標 HR 模型的所有錯誤。
DB2 UDB V8.2 用戶注意:您將收到錯誤消息,說 Rational Data Architect 為新的主鍵和外鍵創建的標識符太長。在 DB2 V8.2 中,這些標識符不能超過 18 個字符。圖 8 顯示了一個例子:
圖 8. Problems 視圖
為了檢查和修正這種錯誤:
為了使 Problems 視圖中顯示的問題僅限於所選擇的元素(目標 HR 模型),單擊 Filters 圖標( ), 單擊 On selected element only,然後單擊 OK。
雙擊顯示的第一個錯誤。單擊 PropertIEs 標簽頁,將主鍵的名稱改為 COMP_CODES_PK。
單擊 Problems 視圖,然後雙擊顯示第二個錯誤。單擊 PropertIEs 標簽頁,將外鍵的名稱改為 COMP_PROJ_FK。
保存對目標模型的更改。
再次單擊 Problems 視圖,確認錯誤已修正。
生成更改命令,以實現這些更改。單擊 Deployment Script Editor 的 Change Commands 標簽頁,然後在 Change Commands 頁面上單擊 Generate Change Commands。這時彈出 Generate Change Commands 向導。
在該向導中完成以下步驟:
在 DDL Generation Options 頁面上,確認將作出正確的更改。確保 Enable Undo 復選框被選中,以生成必要時用於撤銷更改的命令。單擊 Next。
在 User Information 頁面上,指定用戶 ID 和密碼。單擊 Next。
在 Specify File Information 頁面上,為導出和導入命令指定一個數據文件位置。這裡必須指定完整的路徑。指定數據文件格式,接受默認的導出和導入文件名。單擊 Next。
Mapping Table 頁面上顯示應該從中導出數據然後再導入數據的表。單擊 Next。
在本場景中,為了刪除 ORGANIZATION 表中的 DEPTNAME 列,需要先導出數據,以確保數據不會丟失。通過使用 DB2 Change Management Expert,可以導出數據,刪除表,重新創建一個新表,然後將數據導入到那個新表。還可以使用一個文件,將數據從該文件中導入到新表中。
在 Customize Export Commands 頁面上,單擊 Default Query,確保要刪除的列 DEPTNAME 不在 SELECT 列表中。單擊 Next。
在 Customize Import Commands 頁面上,檢查導出列與 ORGANIZATION 表的導入列之間的映射。單擊 Next。
在 DB2 Maintenance Command 頁面上,檢查是否要生成用於保留對象上的授權、重新綁定包、生成 runstats 或者刷新包緩存的命令。默認情況下沒有選擇任何選項。
如果選擇重新綁定包,則在 Select Schema 頁面上,需要為之重新綁定包的模式被默認選中。
在 Merge Change commands 頁面上,單擊 Next。
單擊 Finish 生成更改命令。可以在 Deployment Script Editor 的 Change Commands 頁面上查看生成的更改命令。
將更改部署到 HR 數據庫中。在 Deployment Script Editor 的 Change Command 頁面上,單擊 Deploy Changes to the Target Database。這時彈出 Deploy Change Commands 向導。
完成 Deploy Change Commands 向導中的步驟。
在 Deploy Steps 頁面上,輸入用戶 ID 和密碼。選中復選框。單擊 Next。
在 Check Base Model 頁面上,單擊 Next。
在 Change Commands 頁面上,查看將被部署到數據庫上的更改命令。單擊 Finish。
Data Output 視圖中包含對 HR 數據庫作出的更改的狀態。
結束語
本文演示了一個關於客戶如何同時使用 DB2 Change Management Expert 和 Rational Data Architect 的場景。這兩種工具之間可以共享相同的物理模型,從而允許從設計和建模到數據庫變更管理的集成過程。這個逐步教程應該可以幫助新用戶學會同時使用這兩種工具。