代码之家  ›  专栏  ›  技术社区  ›  Brandon Montgomery

数据库版本控制-分支切换如何工作?

  •  1
  • Brandon Montgomery  · 技术社区  · 14 年前

    对于那些在开发团队中开发的人来说,这是一个问题,在开发团队中,所有人都有单独的数据库。您正在使用源代码管理和其他工具对数据库进行版本控制,这些工具会自动将dev数据库更新到数据库的最新版本(模式、数据、SP、函数等)。

    好的,太好了!但是等等!如果您是在4.0版本的软件上开发,但现在需要将分支切换到3.2分支来修复错误,该怎么办?到目前为止,模式可能(几乎可以肯定)非常不同。。。

    我想如果您花了额外的精力来编写回滚脚本以及更改脚本,这可能会奏效。但这似乎是一个很大的工作-它真的值得吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Mark    14 年前

    更简单的方法是创建一个新的3.2分支数据库,并在处理3.2分支代码时使用它。在我看来,要求每个开发人员只使用一个数据库是不合理的。

        2
  •  0
  •   DomQ    14 年前

    我假设您将数据库的版本控制为二进制文件?如果您的所有数据库资产都是构造性代码(例如SQL脚本和/或文本数据转储)的形式,那么解决方案很简单,正如Mark所建议的:将这些资产作为开发分支的一部分存储。要在版本3.2上工作,请切换分支,重新运行create脚本和presto,3.2数据库。合并和普通代码一样容易(或者同样痛苦,取决于您选择的版本控制系统)。

    以下是在此模式下工作的一些建议:

    • 如果从文本创建数据库实例的速度太慢,请在共享磁盘卷上创建一个缓存,由所有架构/数据文件的内容(或其MD5和)进行键控。
    • 你提到更改脚本;把它们当作一种负担。虽然您的部署场景可能需要它们(例如,对于希望就地升级的客户),但它们会复制数据库版本历史记录中的信息,而且根据Murphy定律,复制意味着迟早会取消同步。尝试使用“diff”从版本化的数据库资产自动生成更改脚本;或者如果无法实现,则将一些严肃的单元测试用于数据库升级。
    推荐文章