代码之家  ›  专栏  ›  技术社区  ›  Craig

根据代码版本测试和管理数据库版本

  •  7
  • Craig  · 技术社区  · 16 年前

    在开发应用程序时,不可避免地会弹出数据库更改。我发现的诀窍是让你的数据库构建与你的代码保持一致。过去,我添加了一个构建步骤,对目标数据库执行SQL脚本,但这很危险,因为你可能会无意中添加虚假数据,甚至更糟。

    我的问题是,保持数据库与代码同步的技巧和窍门是什么?当你回滚代码时呢?分支?

    7 回复  |  直到 16 年前
        1
  •  3
  •   Josh    16 年前

    数据库中嵌入的版本号很有帮助。您有两个选择,一是将值嵌入到可以查询的表中(允许对多个项目进行版本控制),二是拥有一个可以测试的明确命名的对象(如表或其他类似对象)。

    当您发布到生产环境时,您是否有在发生意外灾难时的回滚计划?如果是这样,这是模式回滚脚本的应用程序吗?使用回滚脚本将数据库回滚到以前的代码版本。

        2
  •  1
  •   Craig Walker    16 年前

    您应该能够从头开始创建数据库,使其处于已知状态。

    虽然能够这样做是有帮助的(特别是在新项目的早期阶段),但许多(大多数?)数据库很快就会变得太大,无法实现。此外,如果您有任何BLOB,那么在为整个数据库生成SQL脚本时将遇到问题。

    我肯定对某种DB版本控制系统感兴趣,但我还没有找到任何东西。所以,你会得到我的投票,而不是一个解决方案。P

        3
  •  1
  •   Community CDub    8 年前

    你真的希望能够使用一台干净的机器,从源代码管理中获取最新版本,一步构建,一步运行所有测试。这样做会让你更快地开发出好的软件。

    就像 external libraries ,数据库配置也必须在源代码管理中。

    请注意,我并不是说你所有的实时数据库 所容纳之物 应该处于相同的源代码管理中,刚好达到干净的状态。(不过,请备份数据库内容!)

        4
  •  1
  •   Andrew Swan    15 年前

    在版本控制的文本文件中定义模式对象和引用数据。例如,您可以在中定义模式 Torque 格式和数据 DBUnit 格式(两者都使用XML)。然后,您可以使用工具(我们自己编写的)生成DDL和DML,将您从应用程序的一个版本带到另一个版本。我们的工具可以将以下任一内容作为输入:(a)前一版本的模式和;数据XML文件或(b)现有数据库,因此您始终能够将任何状态的数据库转换为正确的状态。

        5
  •  0
  •   mk.    16 年前

    我喜欢Django的方式。你构建模型,当你运行一个syncdb时,它会应用你创建的模型。如果你添加了一个模型,你只需要再次运行syncdb。每次推送时,您的构建脚本都很容易执行。

    当你需要更改已经制作好的表格时,问题就来了。我认为syncdb无法处理这个问题。这将需要您进入并手动添加表,并向模型添加属性。您可能希望对alter语句进行版本转换。不过,这些模型始终处于版本控制之下,因此如果需要,您可以在不运行sql脚本的情况下在新的机器上启动并运行数据库模式。另一个问题是跟踪数据库中始终需要的静态数据。

    Rails迁移脚本也很不错。

    DB版本控制系统会很棒,但我真的不知道这样的东西。

        6
  •  0
  •   Iain Holder    16 年前

    虽然能够这样做是有帮助的(特别是在新项目的早期阶段),但许多(大多数?)数据库很快就会变得太大,无法实现。此外,如果您有任何BLOB,那么在为整个数据库生成SQL脚本时将遇到问题。

    备份和压缩可以帮助你做到这一点。抱歉,没有任何理由不能获得一组好的数据来进行开发。即使它只是一个子集。

        7
  •  0
  •   Christophe Fondacci    14 年前

    将数据库开发置于版本控制之下。我建议你看看neXtep设计师: http://www.nextep-softwares.com/wiki

    它是一个免费的GPL产品,通过将版本信息与SQL生成引擎连接,提供了一种全新的数据库开发和部署方法,SQL生成引擎可以自动计算将数据库的任何版本升级到另一个版本所需的任何升级脚本。任何现有的数据库都可以通过反向同步进行版本控制。

    它目前支持Oracle、MySql和PostgreSql。DB2支持正在开发中。它是一个功能齐全的数据库开发环境,您始终可以在其中处理存储库中的版本控制元素。您可以在开发过程中通过简单的同步发布更新,并且可以生成可导出的数据库交付,您可以通过独立的安装程序在任何目标数据库上执行这些交付,该安装程序验证版本、执行结构检查并应用升级脚本。

    IDE还为您提供SQL编辑器、依赖关系管理、对模块化数据库模型组件的支持、数据模型图、SQL客户端等等。

    所有的文档和概念都可以在维基中找到。

    推荐文章