sql - 最佳数据库变更控制方法

原文 标签 sql database architecture schema methodology

作为数据库架构师,开发人员和顾问,可以回答许多问题。一个,虽然最近有人问我,但仍然回答不了,但是...

"What is one of, or some of, the best methods or techniques to keep database changes documented, organized, and yet able to roll out effectively either in a single-developer or multi-developer environment."



这可能涉及存储过程和其他对象脚本,但尤其涉及架构-从文档到新的物理更新脚本,再到首次展示,然后再进行全过程。有一些应用程序可以做到这一点,但是需要架构挂钩和开销。我想了解在没有太多第三方介入的情况下使用的技术。

最佳答案

在没有外部工具的帮助下,我看到的最简单的方法是创建一个“模式补丁”。模式补丁只是一个简单的t-sql脚本。在脚本中为模式补丁提供了一个版本号,该版本号存储在数据库的表中以接收更改。

对数据库的任何新更改都涉及创建一个新的模式补丁,然后可以依次运行该补丁,然后将检测数据库当前所处的版本并在其间运行所有模式补丁。然后,使用补丁程序执行的日期/时间更新架构版本表,以存储下次运行。

一本详细介绍此类细节的好书称为Refactoring Databases

如果您希望使用外部工具,则可以查看Ruby's Migrations项目或C#中名为Migrator.NET的类似工具。这些工具通过创建具有“正向”和“向后”迁移的C#类/ ruby 类来工作。这些工具的功能更加丰富,因为它们知道架构补丁中的前进和后退方式。但是,正如您所说,您对外部工具不感兴趣,但是我想无论如何我还是会为其他读者添加的。

相关文章:

php - 防止显示重复的名称或重新输入名称

ios - 图像尺寸优化以减少数据使用量

java - 存储分析信标的最有效方法是什么?

architecture - Web套接字服务器端处理模型

entity-framework - CQRS是否可以替代CRUD?

sql - 简单的SQL查询

sql - 在SRS表达式中使用 'like'

sql - DB2 SYSIBM.SYSTABLES与SYSCAT.TABLES

mysql - 如何为数据库表中的单个用户更新多个记录

mysql - 有没有办法同步2个mysql数据库?