Dbdeploy
需求——
数据库版本化与代码版本化的区别在于数据库中的生产数据是现场(即用户)创造的,当我们的表结构发生改变时,不能直接用drop table然后再create table,因为这样会导致生产数据丢失。而代码则完全由开发人员创造,可以用完全覆盖的方式升级。由于这点不同,致使数据库在版本化的过程中必然要采用与代码不同的方法。
功能——
完成数据库结构版本化,方便回滚,也可以完成数据库数据的回滚,但是一般不使用。在项目开发过程中,不断验证数据库脚本的正确性,在项目部署之初,可以方便的部署数据库。
原理——
在已存在一张user表,包含字段ID和NAME的情况下,需要添加新的ADDRESS字段,
全量脚本
create table user{
ID VARCHAR(18) not null,
NAME VARCHAR(60) not null,
ADDRESS VARCHAR(80) not null
};
增量脚本
alter table user add ADDRESS VARCHAR(80) null
update user set ADDRESS=’地址’
alter table user modify ADDRESS VARCHAR(80) not null
这是普通的增量脚本,dbdeploy的工作是使用增量脚本完成对数据库结构的变更,增量脚本格式
1 create users table.sql
数据库中有一张changLog表,记录版本号,从而使dbdeploy知道哪些增量脚本已经提交到数据库
在跟乔老板聊过后,发现dbdeploy的增量脚本中是需要写——有待验证
alter table user add ADDRESS VARCHAR(80) not null;
alter table user drop COLUMN ADDRESS //此句供dbdeploy回滚使用
并且表结构的变更,对表数据的影响有限,表中数据总量不会发生变化,字段可能发生变化。
每次对ddl的修改都使用增量脚本的方式,记录数据库结构的变化
优点——
1. 方便自动构建部署,满足了包括db在内的所有代码可以进行持续集成和顺利迁移
2. 在数据库版本的不断升级过程中,不断验证脚本的正确性
缺点——
1. 需要在数据中添加changelog表,不是完全的自动化
分享到:
相关推荐
Java开发案例-springboot-27-整合Flyway实现数据库版本控制-源代码+文档.rar Java开发案例-springboot-27-整合Flyway实现数据库版本控制-源代码+文档.rar Java开发案例-springboot-27-整合Flyway实现数据库版本控制-...
xxl-job适配了postgresql数据库,xxl-job版本是2.4.1,修改了官方的源代码。同时支持mysql和postgresql两种数据库,根据配置文件选择数据库,文件里面包含了两种数据库的建库脚本。
SQL Server 数据库技术---基础篇(T-SQL基础、数据库...异步应用程序平台、空间数据类型跨实例链接、数据库管理自动化、商务智能) 、数据库性能优化(数据库存储与索引、数据查询、事务处理、数据库系统调优 工具)
- 软件配置:Windows 2000或更高版本操作系统,Microsoft Access 2000数据库,Visual C++开发环境。 - 硬件配置:Pentium II 266或更高CPU,64MB以上内存,2GB以上硬盘空间,VGA或更高分辨率显示器。 3. 关键问题...
一种去中心化的数据库---区块链PPT精品课件(国科大数据库新技术).pptx
PG-13.7 数据库安装包 postgresql-13.7-1-windows-x64.exe 官方下载的安装包 windows下 直接安装即可
DBeaver好用免费开源的的数据库管理工具-dbeaver-ce-23.3.0-win32.win32.x86_64.zip版本dbeaver-ce-23.3.0-win32.win32.x86_64.zipDBeaver是免费和开源(GPL)为开发人员和数据库管理员通用数据库工具。1.它支持任何...
1. **下载数据库脚本**:提供的压缩包中应该包含了XXL-JOB针对达梦数据库的初始化脚本。这些脚本用于创建XXL-JOB所需的表结构和索引,例如`xxl_job_info`(任务信息表)、`xxl_job_log`(任务日志表)等。请根据实际...
SpringBoot 集成 MyBatis-Plus 实现国产数据库适配 MyBatis-Plus 是一款在 MyBatis 的基础上进行扩展的开源工具包,只做增强不做改变,引入 MyBatis-Plus 不会对您现有的 Mybatis 构架产生任何影响。MyBatis-Plus ...
1. **初始化数据库**:在应用程序的Application类中,创建并获取`OpenHelper`实例,然后通过`OpenHelper.getWritableDb()`打开数据库。 2. **操作数据**: - 插入数据:调用DAO的`insert()`方法。 - 查询数据:...
掌握ThinkPHP5.0数据库和模型-离线版(官方).chm 掌握ThinkPHP5.0数据库和模型-离线版(官方).chm
标题中的“21-08-04_FMDemo(003_使用NopDbStartup定义在MicrosoftSQLServer中自动生成相应的数据库-表-字段-约束规则)”指的是一个示例项目,它演示了如何在nopCommerce 4.40.3版本中使用FluentMigrator库来创建和...
ER图(实体关系图)是数据库设计的可视化工具,`ER图.bmp`展示了系统中各个实体(如员工、部门、工资等)之间的关系。通过这个图,我们可以理解数据模型的结构,以及实体间的关联。`数据库实验报告.doc`提供了关于...
1. DBCA(Database Configuration Assistant)是Oracle提供的图形化工具,用于简化数据库的创建、配置和删除过程。通过DBCA,用户可以定制数据库的各个选项,例如数据库类型、存储参数、安全设置等。它还允许用户...
mongodb数据库客户端Studio-3T,Mac版本2022.05
数据库课程设计-基于的个性化购物平台的建表语句.sql
Verizon数据泄露调查报告 瑞典数据泄露事件 数据冰山 数据孤岛 数据流程 ...数据库虚拟化-DBhypervisor 数据库虚拟化-DBplayer 数据库虚拟化-DBmasker 数据库虚拟化-DBrecorder 数据库虚拟化-效果 总结
- 安装完成后需初始化数据库,并创建数据库实例。 6. **初始化数据库** - 选择数据库模板,如一般用途。 - 指定数据库安装目录,通常位于`/home/dmdba/dmdbms/data`。 - 设置数据库标识,包括数据库和实例名称...