我在stack overflow上搜寻了这个问题,但是没有找到有关此的任何问题。
我是Liquibase
的新手,想要学习:
- 为什么要使用
Liquibase
? - 在项目中应该在什么情况下使用
Liquibase
?
我知道这是为了将所有数据库更改保存在一个地方,但是可以通过在某些存储库系统中创建简单的SQL
文件并随时间更新来完成类似的操作。
我看到liquibase在修改模式时可以让开发人员遵循规范。你不能直接覆盖其他开发人员的更改并执行。相反,你需要创建自己的changeset并将其添加到要执行的变更序列的末尾。这还可以清楚地了解每个更改是何时发生以及由谁引入。
这是一种非常“版本化”的模式维护方法。
对于初学者来说,这似乎会增加“不必要的工作”。
如果你在开发、质量保证和生产中有多个数据库实例,并且希望有一个工具可以自动跟踪更改历史并智能地应用更改(应用当前模式和最终模式的差异),那么像Liquibase或Flyway这样的工具将非常有用。
我认为在这个话题中加入进化式数据库设计的概念是很好的。
在过去的十年中,我们开发和完善了许多技术,使得数据库设计可以随着应用程序的开发而不断演变。这对于敏捷方法来说是非常重要的能力。这些技术依赖于将持续集成和自动化重构应用于数据库开发,并与数据库管理员和应用程序开发人员之间的紧密协作相结合。这些技术适用于预生产和发布系统,在绿地项目以及遗留系统中都可以使用。
这里是Martin Fowler的进化式数据库设计https://martinfowler.com/articles/evodb.html的参考资料。
这是一种不同的创建数据库设计的方法,这就是Liquibase和Flyway的原因。
在观察了Liquibase被合并到一个中大型项目中的许多月后,我提出这样的观察:开发人员必须为Liquibase服务,而不是相反。我理解使用情况,但没有看到我们的开发过程有任何定性的改进。我们的现实是,Liquibase给我们的开发团队带来了构建错误等问题。小的更改会带来很大的麻烦。我尊重地不建议使用它。