PowerDesigner下PDM自動化資料庫物理設計版本持續整合解決方案

PetterLiu發表於2024-12-06

image

背景

這是一篇老文章,希望對大家還有幫助

  1. PowerDesigner

    • PowerDesigner是一款功能強大的資料庫設計工具,提供了完整的建模解決方案,支援從概念資料模型到物理資料模型的轉換,以及生成資料庫指令碼和執行逆向工程等功能。
  2. 資料庫持續整合

    • 資料庫持續整合是一種將資料庫更改與軟體開發流程中的持續整合(CI)無縫整合的實踐。它透過自動化指令碼管理資料庫變更、採用版本控制系統、執行自動化測試、使用遷移工具等手段,確保資料庫與應用程式的同步和一致性。
    • 版本控制:
      將PowerDesigner生成的PDM檔案和相關資料庫變更指令碼納入版本控制系統(如Git)。使用版本控制系統跟蹤資料庫的所有變更,並允許團隊成員之間的協作和衝突解決。
      自動化指令碼管理:
      在PowerDesigner中編寫資料庫變更指令碼,每次變更都記錄在一個新的指令碼檔案中。這些指令碼在CI/CD流水線中自動執行,確保每次構建後的資料庫狀態與程式碼庫一致。

PDM自動生成SQL

  • 正向工程

    • Power Designer中,透過正向工程可以將PDM自動生成SQL指令碼,進而在資料庫中執行這些指令碼以建立表、檢視、索引等資料庫物件。
    • 具體步驟包括:選擇“Database”->“Database Generation”或者使用快捷鍵CTRL+G開啟生成對話方塊,進行相關設定(如生成指令碼的儲存目錄、指令碼名、生成方式等),然後點選“OK”即可生成SQL指令碼。
    • 在生成SQL指令碼時,可以選擇生成單個指令碼檔案或多個指令碼檔案,還可以選擇是否檢查模型、是否自動歸檔等選項。
    • 另外,如果需要直接將PDM生成到資料庫中,可以選擇“Direct generation”方式,並配置資料庫連線,然後執行生成操作。
  • 注意事項

    • 在生成SQL指令碼之前,確保PDM已經正確設計並驗證了模型的完整性。
    • 在配置資料庫連線時,需要選擇正確的資料庫驅動和填寫正確的連線資訊。
    • 在生成SQL指令碼時,注意選擇正確的生成方式和選項,以避免生成錯誤的指令碼或執行不必要的操作。

資料庫的持續整合

Power Designer的物理資料模型(Physical Data Model)PDM,提供了系統初始設計所需要的基礎元素,以及相關元素之間的關係;資料庫的物理設計階段必須在此基礎上進行詳細的後臺設計,包括資料庫的儲存過程、操作、觸發、檢視和索引表等

相關Related工具: PowerDesigner, Mysql, Jenkins, GitLab , Nginx, Batchfiles

1. PDM模型檔案自動生成T-SQL指令碼與測試資料TESTSQL指令碼的批處理編寫

2. PDM模型檔案自動生成HTML報告編寫 generat.vbs,以下以fc_server.pdm檔案為例

Option Explicit

InteractiveMode = im_Batch ' Avoid displaying generate window

Const GenDir = "D:\tmp\aa\"

Const Modelfile = "D:\tmp\aa\fc_server.pdm"

Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")

Start

Sub Start()

dim pModel : Set pModel = OpenModel(Modelfile)

InteractiveMode = im_Batch ' Avoid displaying generate window

If (pModel is Nothing) then

Output "Unable to open the model"

Exit Sub

End if

GenerateDatabaseScripts pModel

GenerateTestDataScript pModel

GenerateAllReportsInModel pModel

End Sub

Sub GenerateDatabaseScripts(pModel)

Dim pOpts : Set pOpts = pModel.GetPackageOptions()

InteractiveMode = im_Batch ' Avoid displaying generate window

' set generation options using model package options

pOpts.GenerateODBC = False ' Force sql script generation rather than

' ODBC

pOpts.GenerationPathName = GenDir ' Define generation directory

pOpts.GenerationScriptName = "fc_server.sql" ' Define sql file name

pModel.GenerateDatabase ' Launch the Generate Database feature

End Sub

Sub GenerateTestDataScript(pModel)

Dim pOpts : Set pOpts = pModel.GetPackageOptions()

InteractiveMode = im_Batch ' Avoid displaying generate window

' set generation options using model package options

pOpts.TestDataGenerationByODBC = False ' Force sql script generation rather than ODBC

pOpts.TestDataGenerationDeleteOldData = False

pOpts.TestDataGenerationPathName = GenDir

pOpts.TestDataGenerationScriptName = "fc_serverTest.sql"

pModel.GenerateTestData ' Launch the Generate Test Data feature

End Sub

Sub GenerateAllReportsInModel(pModel)

Dim m

Dim r

Dim filename

set m = pModel

For each r in m.Reports

filename = GenDir & "html\fc_server" & ".htm"

r.GenerateHTML (filename)

Next

End Sub



3. 預處理SQL指令碼,後處理SQLj腳步,批處理指令碼gg.bat,資料庫更新最新版本SQL指令碼

"D:\Program Files\SAP\PowerDesigner 16\PdShell16.exe" -X generat.vbs copy before.sql + fc_server.sql+ after.sql dbinit.sql

before.sql 是前置SQL

after.sql 是後置sql

dbinit.sql 是初始化SQL

4. 執行SQL指令碼於目標資料庫的批處理檔案 dbrun.bat

@echo off

mysql --host=localhost --user=root --password=root --database=fc_server < dbinit.sql

5. PDM模型檔案在GIT版本管理方式

PDM模型檔案,如需要更新PDM模型檔案請使用GitLab Web版的UI前端操作的Replace原始檔案, 檔名必須是fc_server.pdm ,git自己有版本控制歷史

6. 提交更新後Gitlab觸發Jenkins 持續整合生成操作

相關資料庫模型變更後,提交git commit後,觸發webhook,自動更新 HTML版資料庫文件

Jenkins 2.121.1 安裝外掛

GitLab Hook Plugin

GitLab Plugin

clipboard

GitLab Community Edition 11.4.3 對應倉庫下Integration配置Webhooks

clipboard

7. 構建資料庫模型的靜態頁面HTML站點

資料庫模型可以直接生成html到檔案,我們可以配置自動打包生成HTML釋出到nginx伺服器

nginx下載安裝解壓,修到配置檔案對應埠, 移動html文件到對應目錄,如

server {

listen 801;

server_name localhost;

location / {

root html;

index index.html index.htm;

}

}

最終可以直接訪問 http://192.168.11.138:801/fc_server.htm

也可以基於Nignx實現basic auth,實現授權訪問


總結

本文介紹資料庫的持續整合流程,主要使用了PowerDesigner的物理資料模型(PDM)作為基礎,並涉及了多個相關工具如Mysql、Jenkins、GitLab、Nginx和Batchfiles。流程包括:

  1. 使用PowerDesigner的PDM模型檔案自動生成T-SQL指令碼、測試資料TESTSQL指令碼以及HTML報告。
  2. 編寫VBS指令碼(generat.vbs)以自動化生成資料庫指令碼、測試資料指令碼和HTML報告。
  3. 編寫批處理指令碼(gg.bat)進行SQL指令碼的預處理、後處理以及資料庫更新。
  4. 使用另一個批處理檔案(dbrun.bat)將SQL指令碼執行於目標資料庫。
  5. 在Git中管理PDM模型檔案,透過GitLab的Web UI進行檔案更新,並利用Git的版本歷史功能。
  6. 在GitLab提交更新後,觸發Jenkins的持續整合操作,Jenkins需安裝GitLab Hook和GitLab外掛。
  7. 構建資料庫模型的靜態HTML站點,使用Nginx進行配置和訪問控制,最終可以透過指定URL訪問生成的HTML報告。
基於PowerDesigner的資料庫持續整合優勢
  1. 提高開發效率

    • 透過自動化指令碼管理和版本控制,減少了手動操作的時間和錯誤率。
    • 自動化測試確保了每次變更的質量,減少了迴歸測試的工作量。
  2. 確保一致性

    • 資料庫變更透過版本控制系統進行管理,確保了開發環境、測試環境和生產環境的一致性。
    • 自動化執行和測試確保了每次構建後的資料庫狀態與程式碼庫一致。
  3. 可追溯性

    • 所有的資料庫變更都有詳細的記錄,可以回溯到每次修改的具體原因和內容。
    • 這有助於在出現問題時快速定位和解決。
  4. 團隊協作

    • 版本控制系統和自動化工具支援團隊成員之間的協作和衝突解決。
    • 定期的團隊會議和文件管理有助於保持資訊透明和共享。

所以,基於PowerDesigner工具的資料庫持續整合是一種高效、可靠和可追溯的資料庫管理實踐。它透過將資料庫更改與軟體開發流程中的持續整合無縫整合,提高了開發效率、確保了資料庫與應用程式的一致性和穩定性。


今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 專案管理, 產品管理,資訊保安,團隊建設 有參考作用 , 您可能感興趣的文章:
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
影片直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續整合/CD
網際網路電商購物車架構演變案例
網際網路業務場景下訊息佇列架構
網際網路高效研發團隊管理演進之一
訊息系統架構設計演進
網際網路電商搜尋架構演化之一
企業資訊化與軟體工程的迷思
企業專案化管理介紹
軟體專案成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
專案管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
網際網路資料庫架構設計思路
IT基礎架構規劃方案一(網路系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之效能實時度量系統演變

如有想了解更多軟體設計與架構, 系統IT,企業資訊化, 團隊管理 資訊,請關注我的微信訂閱號:

image_thumb2_thumb_thumb_thumb_thumb[1]

作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。 該文章也同時釋出在我的獨立部落格中-Petter Liu Blog。

相關文章