背景
这是一篇老文章,希望对大家还有帮助
PowerDesigner:
- PowerDesigner是一款功能强大的数据库设计工具,提供了完整的建模解决方案,支持从概念数据模型到物理数据模型的转换,以及生成数据库脚本和执行逆向工程等功能。
数据库持续集成:
- 数据库持续集成是一种将数据库更改与软件开发流程中的持续集成(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
GitLab Community Edition 11.4.3 对应仓库下Integration配置Webhooks
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。流程包括:
- 使用PowerDesigner的PDM模型文件自动生成T-SQL脚本、测试数据TESTSQL脚本以及HTML报告。
- 编写VBS脚本(generat.vbs)以自动化生成数据库脚本、测试数据脚本和HTML报告。
- 编写批处理脚本(gg.bat)进行SQL脚本的预处理、后处理以及数据库更新。
- 使用另一个批处理文件(dbrun.bat)将SQL脚本执行于目标数据库。
- 在Git中管理PDM模型文件,通过GitLab的Web UI进行文件更新,并利用Git的版本历史功能。
- 在GitLab提交更新后,触发Jenkins的持续集成操作,Jenkins需安装GitLab Hook和GitLab插件。
- 构建数据库模型的静态HTML站点,使用Nginx进行配置和访问控制,最终可以通过指定URL访问生成的HTML报告。
基于PowerDesigner的数据库持续集成优势
提高开发效率:
- 通过自动化脚本管理和版本控制,减少了手动操作的时间和错误率。
- 自动化测试确保了每次变更的质量,减少了回归测试的工作量。
确保一致性:
- 数据库变更通过版本控制系统进行管理,确保了开发环境、测试环境和生产环境的一致性。
- 自动化执行和测试确保了每次构建后的数据库状态与代码库一致。
可追溯性:
- 所有的数据库变更都有详细的记录,可以回溯到每次修改的具体原因和内容。
- 这有助于在出现问题时快速定位和解决。
团队协作:
- 版本控制系统和自动化工具支持团队成员之间的协作和冲突解决。
- 定期的团队会议和文档管理有助于保持信息透明和共享。
所以,基于PowerDesigner工具的数据库持续集成是一种高效、可靠和可追溯的数据库管理实践。它通过将数据库更改与软件开发流程中的持续集成无缝集成,提高了开发效率、确保了数据库与应用程序的一致性和稳定性。
今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,信息安全,团队建设 有参考作用 , 您可能感兴趣的文章:
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变
如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:
作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 如何基于DeepSeek开展AI项目
2015-12-06 某大型电商云平台实践
2014-12-06 Asp.net SignalR 实现服务端消息推送到Web端
2008-12-06 Exchange Sever 2007 部门共享日历的实现