在生产中重构数据库的最佳实践?
Posted
技术标签:
【中文标题】在生产中重构数据库的最佳实践?【英文标题】:Best practices for refactoring a database in production? 【发布时间】:2012-06-26 03:30:38 【问题描述】:我目前正在开展一个项目,我们的当前版本的产品部署在多个客户站点。更常见的是,我们在我们的开发/测试环境中测试和废弃(a.k.a. refactor :) DB 设计。不可能跟踪数据库的每个增量更改以创建相应的“迁移文件”。现在,当我们对数据库设计(相对稳定)感到满意时,我们需要将生产数据库更新到当前状态。
我们的生产系统不能只发出DROP/CREATE SCHEMA
命令来更新架构(想想可能会丢失的工作,包括我的工作:)所以我们开始编写 mysql 转储或应用程序包装器来备份数据并将其重新输入数据库。相当麻烦,尤其是当多个“客户端”不在同一个数据库版本时。客户端的每个版本都写一个是很麻烦的。
那么,您在生产环境中重构数据库时采用了哪些最佳实践,尤其是当您不能只删除该数据,而是需要重新输入数据并让系统在“停机”一段时间后无缝继续运行时?
p>如果有任何用途,后端是 Java/Restlet 和 MySQL
【问题讨论】:
【参考方案1】:您可以使用Refactoring Databases 一书中描述的数据库重构模式,并查看数据库重构网站http://databaserefactoring.com/。使用迁移方法,您无需删除和创建数据库。 [dbdeploy]、[dbmaintain]、[ibatis migrator]、[liquibase] 等工具可以在这里为您提供帮助。
【讨论】:
我已经知道重构技术了。我关心的是“如何处理重构导致的数据迁移”,而不是如何处理重构本身。这本书和它的网站参考都在我的书架上……但它们并不关注“重构后”发生的数据迁移问题以上是关于在生产中重构数据库的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章