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

在源代码管理中管理我的数据库

  •  8
  • JasCav  · 技术社区  · 15 年前

    由于我正在处理一个新的数据库项目(在VS2008中),而且我从未从头开发过数据库,所以我立即开始研究如何在源代码管理中管理数据库(在本例中是Subversion)。

    我发现了一些关于SO的信息,包括这篇文章: Keeping development databases in multiple environments in sync . One of the answers in particular 指向一些链接,这些链接都有好的、有用的信息。

    我正在读一本书 series of posts 作者K.Scott Allen,描述了他如何管理数据库更改。从我的阅读中(请原谅我这个问题的不合时宜),似乎数据库本身从未被检入存储库。相反,可以构建数据库的脚本以及测试数据(也由脚本填充)将被检入存储库。最终,这意味着,当开发人员测试他或她的应用程序时,这些脚本(构建过程的一部分)将运行。这可以确保数据库是最新的,但也可以从每个开发人员的计算机本地运行。

    这对我来说是有意义的(如果我确实读得对的话)。但是,如果我遗漏了一些东西,我会感谢您的纠正或额外的指导。另外,我想问的另一个问题——这是否也意味着我应该 不是 签入 中密度纤维板 低密度脂蛋白 从Visual Studio创建的文件?

    感谢您的帮助和其他见解。永远感激。

    5 回复  |  直到 13 年前
        1
  •  6
  •   HLGEM    15 年前

    这是正确的,您应该签入脚本,而不是数据库文件本身。

    我不喜欢从测试数据构建数据,除非数据本身会模拟生产数据的大小(或者,在新数据库的情况下,是预期的)。为什么?因为在有100条记录的表上编写代码并不能告诉您当您有10000000条记录时,它是否会及时运行。我有太多的错误的设计选择来自那些认为小数据集可以用于开发的人。

    在这里,我们不允许开发人员在他们的盒子上有一个单独的数据库(这通常限制了数据库不作为附加到SAN的服务器的virture所能达到的大小),相反,他们必须与从prod定期刷新(然后运行所有新开发人员脚本)的开发人员数据库一起工作,以保持数据的正确大小。我认为您的dev-datbase环境尽可能地与prod匹配是很重要的,包括设备配置、数据库大小等。没有什么比花很长时间开发在prod上根本不起作用的东西更让人沮丧的了,也没有什么比花很长时间开发在prod上更让人沮丧的了,因为它会使系统速度过慢。

    现在从我的肥皂盒上跳下来。

        2
  •  2
  •   Dori Nimit Parekh    14 年前

    签入脚本是个好主意,因为源代码控制最适合处理文本文件,而不是二进制文件。脚本文件中的差异可以作为与数据库更改相关的其余代码更改的一部分轻松查看。除了检入数据库脚本之外,我们还检入数据库模式快照。此数据库架构快照允许我们验证生产中的架构是否与产品给定版本的预期架构匹配。此外,数据库模式快照是使用纯文本编辑器搜索列和表的简便方法。

        3
  •  1
  •   MaxGuernseyIII    15 年前

    我使用Dataconstructor,但因为我写了它而有偏见。

        4
  •  0
  •   SQLDev    15 年前
        5
  •  0
  •   AWhitford    13 年前

    你可以使用像这样的工具 Liquibase 管理数据库脚本。它实际上是一个数据库升级框架,因此它将跟踪已经执行的步骤,因此当您想要升级生产时,例如,它只执行新的步骤。