在软件开发生命周期中升级生产数据库

Dav*_*vis 1 postgresql ddl upgrade

背景

使用 Oracle,有许多工具可以帮助将开发更改迁移和应用到生产环境中(例如Embarcadero Change Manager)。这些工具可以配置为在几乎不需要人工干预的情况下执行任何数据库 DDL 升级。

问题

我有运行 PostgreSQL 9.x 的开发和生产服务器。在将数据库 DDL 初始部署到生产服务器后,我将继续对开发数据库进行更改。这些更改将包括对存储过程的错误修复、对表的更改、附加序列、新视图、更多类型、更多表等。

以自动方式(或几乎自动)升级/迁移生产 PostgreSQL 数据库应用程序的 DDL 以使其在开发中进行新更改的步骤是什么?

有关的

谢谢!

a_h*_*ame 5

建议

永远不要手动应用数据库更改;使用版本控制系统 (VCS) 中的脚本。

初始部署后,将“delta”脚本存储在 VCS 中。升级时,应用所有丢失的脚本。跟踪已应用的脚本是一个标准问题。

解决方案

有一些工具可以自动执行此任务,包括:

Liquibase

我们对Liquibase非常满意,它将架构定义存储在 XML 文件中。然后命令行工具将“更改日志”应用到数据库。变更日志可以应用于所有环境:开发、测试、登台、生产、持续构建等。

飞道

还可以考虑Flyway,它使用具有命名约定的 SQL 文本文件。

其他注意事项

Liquibase 和 Flyway 的缺点是您基本上管理增量脚本。如果需要从头开始创建数据库,则需要按顺序运行所有更改。

数据建模工具

使用 ER 建模工具记录您的数据模型,例如:

  • 数据库架构
  • TOAD 数据建模器
  • 埃尔文

我们使用宏将基于 TOAD 的模型转换为 Liquibase 变更日志。这意味着我们可以从我们的模型文档以及用于维护现有安装的增量 (Liquibase) 脚本中“从头开始”重新创建数据库。