Database 如何将元数据置于版本控制之下?

Database 如何将元数据置于版本控制之下?,database,version-control,metadata,Database,Version Control,Metadata,我们有一个保存元数据和数据的数据库 我们的元数据由专门的团队使用开发服务器上的Web应用程序生成,是我们应用程序的关键部分 然后客户根据此元数据生成数据 我们已经对数据库模式进行了版本设置,所有模式都已更改。下一步是将元数据置于版本控制之下 原始解决方案 一个简单的解决方案是转储所有元数据,并在生成相应的包之前在版本控制下提交它。因为它是一个垃圾场,所以很容易恢复。但可能有更好的方法,比如增量解决方案(只有版本差异) 文本转储 另一种解决方案是以文本格式(如XML)导出所有元数据表,然后对这些文

我们有一个保存元数据和数据的数据库

我们的元数据由专门的团队使用开发服务器上的Web应用程序生成,是我们应用程序的关键部分

然后客户根据此元数据生成数据

我们已经对数据库模式进行了版本设置,所有模式都已更改。下一步是将元数据置于版本控制之下

原始解决方案 一个简单的解决方案是转储所有元数据,并在生成相应的包之前在版本控制下提交它。因为它是一个垃圾场,所以很容易恢复。但可能有更好的方法,比如增量解决方案(只有版本差异)

文本转储 另一种解决方案是以文本格式(如XML)导出所有元数据表,然后对这些文本文件进行版本设置。但是你必须找到一种方法重新进口它们

那么,元数据是否受版本控制?为什么?如何解决?

非无效解决方案:-

版本控制mata数据生成脚本

即,数据库模式的删除/创建和SQL“插入”都应置于版本控制之下

这种方法的优点是模式和插入脚本实际上是源代码。版本控制系统是为源代码而设计的,因此可以很好地使用这种方法。此外,它几乎是独立的,可以很容易地移植到其他系统


如果您的元数据是交互式开发的,那么有几种实用程序可以让您将数据库导出为插入脚本。

K.Scott Allen有一系列关于此主题的优秀博客文章:


  • 要考虑的东西将是由NabCabelo提供的工具。例如,提供了针对整个数据库模型进行版本控制的能力

    您能说出允许我们将数据库导出为插入脚本的实用程序之一吗?谢谢。每个品牌的数据库都有自己的工具。例如,对于MySQL,它是
    mysqldump
    .TOAD for Oracle,或者是Squirrel SQL for anythis support a JDBC connection。这就是我们要做的,只是我们先编写insert语句,将它们放在版本控制中,然后将它们(遗憾的是不是自动)包含到升级数据库脚本中。使用合并/升级以简化后续更新的额外积分。