我们有一个应用程序,即公开RESTful web服务,我们的目标是将该应用程序部署在云中。我们需要在云中的某个数据库实例上为应用程序一次性设置一个数据库模式。有人能告诉我,将迁移与liquibase一起用于一次性数据库模式设置是否是一种好方法吗。我们将使用alter脚本,以防在未来的版本中需要修改DDL。
如果我错了,有人会阻止我,但你的应用程序将被部署在云上,这只意味着它将位于外部公司托管的虚拟服务器上,在你提出问题的情况下,不要冒险。
所以问题是"数据库版本系统Liquibase在一个目标稳定的数据库上值得吗"。
从绝对意义上讲,这可能被认为是过度使用,许多大公司仍然使用裸sql脚本来管理数据库模式的演变。您可以简单地导出开发数据库的最终构建脚本并使用它
但既然你知道Liquibase,开销就相当便宜,如果你后来碰巧不得不修改tour shema,那么使用的舒适性很重要。
所以,是的,我认为这是一个非常好的实践(比在生产服务器问题的压力下手动应用脚本更安全),它需要花费一到两个小时(如果你知道如何使用该工具),并且在处理生产数据库的热修复时可以节省几十个小时。
我假设您将在多个地方部署此应用程序-不仅是云中的生产,还有开发服务器、测试服务器、暂存等。如果这是真的,那么在我看来,您肯定希望有一个关于如何更改数据库模式的过程。
对我来说,在我20多年的软件开发过程中,我看到了一些我现在使用的东西,这些东西在我开始时并不常用,但现在已经成为我工作的任何项目的"基线"实践。是的,我过去在没有源代码控制的情况下工作,但现在这是绝对必须的。我过去常常在没有测试的情况下编写软件,但现在不行了。我过去的工作没有持续的集成,但这是我认为必须的另一种实践。我的必备清单中最近添加的是某种自动化的数据库迁移过程。
此外,由于Liquibase是Dropwizard内置的,我看不出有任何理由不使用它。