Database 数据库的SCM

Database 数据库的SCM,database,version-control,Database,Version Control,对于数据驱动方法,例如游戏,进入数据库的数据是项目(通用)源代码的一部分。版本控制数据库内容的最佳策略是什么?注意:不是模式。它需要具有SCM的所有属性,如回滚和分支。保存内容的简单文本文件可以很好地进行版本控制。选择一种易于读写的格式,如果您没有500列或类似的列,逗号分隔的格式最简单 但这就留下了加载它的问题。如果情况简单,升级/安装脚本可以截断源表并重新加载。如果由于外键的原因,这样做不好,那么您必须编写一个小例程,逐行遍历文本文件,插入新值,并可能覆盖更改的值。看一看 DataGrove

对于数据驱动方法,例如游戏,进入数据库的数据是项目(通用)源代码的一部分。版本控制数据库内容的最佳策略是什么?注意:不是模式。它需要具有SCM的所有属性,如回滚和分支。

保存内容的简单文本文件可以很好地进行版本控制。选择一种易于读写的格式,如果您没有500列或类似的列,逗号分隔的格式最简单

但这就留下了加载它的问题。如果情况简单,升级/安装脚本可以截断源表并重新加载。如果由于外键的原因,这样做不好,那么您必须编写一个小例程,逐行遍历文本文件,插入新值,并可能覆盖更改的值。

看一看


DataGrove在数据库上为您提供SCM的全部功能。它允许您保存整个数据库的版本(数据+模式),与源代码管理集成,甚至在单元测试后自动回滚数据库。如果加载旧版本的DB,它将自动创建DB版本树的分支。您甚至可以同时加载两个不同的版本(它会创建虚拟克隆),而不会占用更多空间。

您是否查看了前面关于此主题的问题,即?具体来说,它指出了SCM与备份的优缺点。如果您想要的是SCM的所有属性,那么只需使用SCM,除非它处理这种情况非常糟糕,否则只需使用您现有的SCM,这样您就不必在同一个项目中使用2。您阅读了我的问题吗?在这种情况下,数据库的内容在语义上是源代码的一部分。您没有说明是什么使您的问题实例与其他问题的实例不同(当然,它在语义上是源代码的一部分),或者您不想只使用现有SCM的原因。如果它在语义上是源代码的一部分,并且您需要SCM的所有属性,那么解决方案似乎非常明显。无论如何,我联系到的Ry4an的答案有一些有用的观察结果,说明为什么不是所有正常的SCM能力在这种情况下都有用。