【问题标题】:Whats the best build system for building a database?构建数据库的最佳构建系统是什么?
【发布时间】:2009-01-28 11:38:32
【问题描述】:

这是我偶尔会遇到的问题,但尚未找到令我满意的答案。我正在寻找一个可以很好地构建数据库的构建系统——它以正确的用户和正确的顺序在正确的数据库实例中运行所有 SQL 文件,并正确处理依赖关系等。

我有一个系统,我使用 Gnu Make 一起破解了它,它可以工作,但它不是特别灵活,坦率地说,在某些情况下使用起来有点痛苦。我也考虑过研究 SCons 和 CMake 之类的东西,但我不知道它们可能会好多少,或者是否已经存在更好的系统......

【问题讨论】:

  • 哪个数据库平台? MySQL、MSSQL、Postgres、Oracle 还是其他?
  • Postgres 主要是为了我自己,但更多的是出于普遍的好奇心,这就是我将其保持打开状态的原因。

标签: sql database build-process


【解决方案1】:

只是一个以正确顺序运行所有创建语句和导入的 shell 脚本。您可能还会发现migrations(带有导轨)很有趣。它提供了一个类似make 的基础架构,让您可以维护一个数据库,该数据库的结构随着时间的推移而发展。

假设您在某个表中添加了一个新列。在迁移中,您将编写一个 sn-p 代码,其中描述了添加列以及回滚更改的要求,以便您可以自动切换到不同版本的架构。

虽然我不太喜欢与 rails 紧密集成,但它背后的原理非常有趣。

【讨论】:

  • 我认为更公平的说法是 Rails(在某种程度上)与 ActiveRecord 紧密集成。不完全是,其他的ORM也是可以的,Rails3/Merb2会大大打开空间。 ActiveRecord 可以非常舒适地单独使用。
  • 你说的完全正确。我想我的意思是您不会使用它来管理没有 ruby​​/活动记录/rails 依赖项的数据库模式。我希望看到像工具这样的“通用”迁移。这听起来有点像发帖人在问什么。
  • 我一直在和他们一起玩,迁移似乎是一种非常聪明的处理方式。现在也可以忽略与它捆绑在一起的其余 Rails 内容:)
  • 我否决了这个答案,因为它是一个带有命令的 shell 脚本,用于小型数据库,但不能很好地扩展。迁移看起来像应用到现有项目的大量开销......还有其他竞争者吗?
【解决方案2】:

对于 SQL Server,我只使用带有 SQLCMD.EXE 的批处理文件和一堆 .SQL 文件。它并不完美,但似乎有效。

【讨论】:

    【解决方案3】:

    对于我的数据库,我使用 Migrator.NET 这是一个 .NET 框架,允许您在定义 DDL 语句的位置创建类。 该框架带有一个命令行工具,您可以使用该工具以正确的顺序执行“迁移”。 它还有一个 msbuild - 任务,因此您也可以将它集成到持续集成构建中。

    【讨论】:

      【解决方案4】:

      首先导出描述所有表、视图、源代码的完整 DDL 文件
      (过程、函数、包)、序列和数据库模式的授权


      Is there a tool to generate a full database DDL for SQL Server? What about Postgres and MySQL?

      我创建了一个数据库构建系统(一部分是 SQL 解析器,一部分是 make 文件)来使用 python 将这些文件放在一个数据库创建脚本中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-01
        • 1970-01-01
        • 2010-09-22
        • 1970-01-01
        • 2010-12-28
        相关资源
        最近更新 更多