场景:
我目前正在开发一个基于桌面的应用程序,涉及多个独立的生产站点,每个站点都有自己的服务器,数据库和本地客户端。
该软件经历连续的自动更新,作为这些更新的一部分,每个生产站点的数据库(postgresql)将需要进行模式迁移(同时在迁移期间维护现有数据的持久性/转换)。
手动访问客户端计算机(例如SSH /远程桌面)以运行脚本/执行更新不是一种选择。客户端需要在检查,下载和安装更新时自给自足。
问题:
我一直在寻找几个月,除了编写SQL脚本和使用单独的服务一个接一个地运行它或使用更新的应用程序来运行它之外,还没有合适的选择。
题:
您建议哪些工具适合此方案以简化迁移过程?
在进行数据库迁移时运行SQL脚本通常是一种公认的做法。像ActiveRecord这样的工具(在ruby世界中)提供了一个中间层(DSL),但实际上是围绕SQL的包装器。
有一个很好的理由 - 迁移是在SQL服务器上进行的操作,而在SQL服务器中操作表的唯一严格定义的接口是特定RDBMS服务器正在使用的PL / SQL语言语言。
这意味着,如果SQL脚本是可接受的迁移选项(在团队知道的情况下可以接受,没有人反对这一点,等等),您应该使用它们。
为了使任务更容易(ruby的方式)你可以看看:http://migrate4j.sourceforge.net/
他们将工具描述为The initial intent of migrate4j was to make a Java version of Ruby's db:migrate.
但这不是一个基本要求。