这是一个飞行路线用例吗?



我已经向客户交付了产品。现在我已经升级了产品,其中包括对数据库的更改。

客户想要升级产品。现在,Flyway 将帮助将客户数据从旧版本迁移到新版本。如果这是一个有效的用例,请告诉我。飞行路线文档仅讨论其在开发过程中的使用。

Flyway 允许您通过按定义的顺序运行一组脚本来更改数据库。这些脚本称为"迁移",因为它们允许您将数据库从一个版本"迁移"到另一个版本。

这个想法是您可以从一个空数据库开始,每个迁移脚本将依次将该数据库从空数据库提升到当前版本。但是,也可以通过创建"基线"迁移从现有数据库开始。

正如SudhirR所说,Flyway的主要用例是定义模式更改。但是,完全可以更改数据。由于 Flyway 只是运行普通 SQL,原则上几乎您可以在 SQL 脚本中执行的任何事情也可以在 Flyway 迁移中执行。

在您描述的情况下,应该可以使用 Flyway 迁移客户数据库。您可以采取的步骤是:

  • 生成一个 sql 脚本,其中包含生产数据库的整个 DDL(包括索引、触发器、过程等(。为此,您需要为数据库中存在的所有引用数据添加插入语句。
  • 将此脚本保存在您的 Flyway 项目中,类似于"V1__base_version.sql">
  • 对生产数据库运行flyway baseline命令
    • 这将设置您的生产数据库以用于 Flyway
  • 添加新的迁移脚本以将客户的数据迁移到新版本 例如创建新表,将数据从旧表
    • 复制到新表,删除旧表
  • 运行flyway migrate以升级生产

这些步骤改编自此处的飞行路线文档页面。

当然,在对生产运行任何内容之前,您应该阅读 Flyway 文档并在一次性数据库上手动测试。但是,我认为原则上Flyway可能非常适合您的用例。

Flyway 应该用于模式迁移和任何参考数据(系统/应用程序正常运行所需的基本数据(。

放置特定于客户端的数据迁移将不是一个用例。但是,如果可以通过不使用 ID 而是使用名称或类型来"通用"表示数据迁移,则它可能成为候选项。这意味着,如果您能够以可应用于所有客户端的方式编写迁移,那么这就是将其作为飞行路线迁移的用例。

否则,数据迁移将在流程之外以其他方式应用,例如请求对数据库的特殊访问权限或让管理数据库的某个团队应用脚本。

如果您经常进行自定义数据修改,那么我会说 SDLC 的其他区域出了问题,您可能需要增加测试,以便错误不会首先弄乱数据。

最新更新