在生产中重构数据库的最佳实践?

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] 等工具可以在这里为您提供帮助。

【讨论】:

我已经知道重构技术了。我关心的是“如何处理重构导致的数据迁移”,而不是如何处理重构本身。这本书和它的网站参考都在我的书架上……但它们并不关注“重构后”发生的数据迁移问题

以上是关于在生产中重构数据库的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章

机器学习应用设计阶段的 10 个陷阱和 11 个最佳实践

SpringBoot 生产中 16 条最佳实践

SpringBoot 生产中 16 条最佳实践

SpringBoot 生产中 16 条最佳实践

从 XIB 中重构控件和功能的最佳实践

生产环境中的 Elasticsearch 配置和最佳实践