已部署的Web应用程序中数据库更改的最佳实践

Jim*_*Jim 2 java database tomcat design-patterns java-ee

我试图找到一个标准方法来解决我遇到的以下问题.
我有一个部署在容器(特别是Tomcat)中的Web应用程序,它使用数据库来实现其功能(在我的情况下,它是一个文件模式的SQL数据库,因此没有后端SQL服务器).

我感兴趣的是当数据库模式发生变化(新表/新列,删除列等)时,在我的Web应用程序的较新版本上处理数据库的各种更改的最佳方法是什么.
即我如何处理升级到我的Web应用程序的新版本的情况,并仍然保留旧数据库中的旧数据(最好的(自动?无缝?少手动?)方式).

我认为这不是一个罕见的案例,所以我相信我可以遵循一些最佳实践.
谁可以帮我这个事?

Tom*_*icz 5

最近我们发现了Flyway - 它工作得非常好,并且包含了数据库模式更改的版本控制(纯SQL脚本).

显然这个话题要广泛得多.例如,当应用程序的旧版本和新版本都应该在更新的架构中完美运行时,您需要格外小心.此外,您应该考虑回滚策略(当升级不能正常工作或者您希望降级应用程序时) - 有时它就像删除添加的对象(表,列)一样简单,但是当您的脚本删除某些内容时,回滚应该还原它们.