gpt4 book ai didi

database - 鉴于我必须自己编写迁移脚本,Flyway 提供什么值(value)?

转载 作者:搜寻专家 更新时间:2023-10-30 23:39:19 24 4
gpt4 key购买 nike

在我的情况下,我使用生成 SQL 语句的工具来包含所有数据库初始化/创建语句。 Flyway 如何提供超出我的工具所能提供的值(value)?我为什么要关心编写手动编码的迁移脚本以使用 Flyway?

最佳答案

上面的问题混合了两个应该分开的东西:数据库创建的概念和迁移的概念。

数据库创建

给定一个完整的数据库和一个空的数据库,您可以使用许多工具来生成重建完整数据库所需的脚本。用 Flyway 术语来说,你只是创建了一个基线。这根本不是迁移的概念。当然,给定一个 V2.0 数据库,您可以看到任何 V1.0 数据库,将其删除,然后安装 V2.0 数据库,但现在您已经丢失了数据。

迁移

给定一个完整的数据库V2.0和一个V1.0的旧数据库,你想让V1.0的数据库“升级”到V2.0。在数据库世界中,这称为迁移,因为现有的 1.0 数据需要重新排列以使其适用于 V2.0。现在您需要一个不仅可以创建/更改表的脚本,还需要一个执行一些 ETL 的脚本(提取数据,转换数据以便能够加载到新表结构中,将旧数据库更改为新表结构,然后将数据加载到数据库中)。这可能是微不足道的,也可能不是微不足道的,具体取决于。您构建脚本来执行此操作,Flyway 将管理执行该脚本。

飞行路线

Flyway 支持以下功能:

  • 迁移脚本成为软件 Assets 的一部分。它们是版本化的,因此可以在源代码控制中维护基线/迁移脚本,使迁移成为可重复的功能,而不是“一次性”脚本编写工作。
  • Flyway 在它使用的每个数据库中维护一个元表,因此它知道应用了哪些脚本
  • Flyway 可以以完全自动化的方式应用迁移,消除手动执行错误
  • Flyway 支持将迁移脚本的创建作为开发的一部分(例如测试驱动开发使单元测试创​​建成为开发的一个组成部分),以便您的所有数据库开发都以迁移脚本的形式进行捕获(而不是将迁移脚本构建为作为“一次性”迁移的一部分需要。
  • 使用 Flyway 通过单个命令在几秒钟内更新应用程序的任何先前版本时很常见。它变得如此简单,以至于从旧数据库迁移到新版本的压力消失了,现在,数据库的演变变得简单和平常。

要很好地使用 Flyway,它需要改变您的工作流程:每次在您的开发人员数据库中进行更改时,将更改放入迁移脚本中,以便您可以针对世界上所有旧的数据库版本执行这些更改。这些脚本被 checkin 您的应用程序的源代码中,使迁移成为您软件 Assets 的一等公民,就像任何其他功能一样。

关于database - 鉴于我必须自己编写迁移脚本,Flyway 提供什么值(value)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37007987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com