database - 维护开发数据库的建议

标签 database replication

现在,开发人员都有一个带有生产数据库快照的本地开发环境 - 他们可以扭曲、搅动和破坏数据,而不会影响除他们自己以外的任何人。

这些快照开始变大,导入它们的数据开始需要将近一个小时。

在维护开发数据方面有更好的建议吗?可以将开发数据拆开以进行潜在更改,然后如果更改想法不好等则需要将其放回原处。

最佳答案

我尝试使用以下方法:

开发人员在版本控制中维护一个基线脚本,并从头开始设置数据库架构。它会创建模式,就像它存在于生产数据库中一样。

他们还维护一个“脚本”来设置测试数据。这个“脚本”实际上使用了生产类,有时还使用了一点 DSL。为了合理快速,脚本只生成最少的测试数据。我建议将其作为完成定义的一部分,以便为任何新功能构建创建一些测试日期。

开发人员可以在他们的数据库(或数据库架构)上随意运行这些脚本。第一个脚本还用作运行自动数据库测试的基础。

开发人员完成的任何工作的结果都是迁移脚本。即可以应用于生产数据库以使其达到新的所需状态的脚本,包括数据更新。

这些迁移可以在生产数据库的快照上进行测试。生产数据库的快照也用于运行负载和性能测试。

我仅针对快照使用数据库特定工具。大多数其他内容都是用主要编程语言(对我来说是 java)编写的,因此开发人员使用起来很舒服。

我经常遇到对这种方法的抵制(“脚本太多”、“数据库太多”、“我不想使用版本控制,因为我的数据库建模工具不支持它”)。但是除了大量的手动工作之外,我真的看不到替代方案。

关于database - 维护开发数据库的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11954663/

相关文章:

sql-server - 为什么 SQL Server 不允许在配置后恰好删除分发服务器?

mysql - 在ansible中创建具有mysql角色的复制用户时出错

MySQL 二进制日志复制 : Can it be set to ignore errors?

database - 对象数据库的优点和缺点是什么?

c# - 将枚举存储到数据库的平滑方法

sql - 如何将 SQL 查询的 xml 输出转换为 varchar 输出

replication - 使用 DevExpress XPO 写入一个数据库,同时从另一个数据库读取

php - 两种方式mysql数据库同步

mysql - SQL IfNull() 函数无法识别空字符串

python - 将 python 列表存储到数据库的最佳方法?