我主要在商业应用程序开发和配置管理方面工作过。你的问题代表了这种环境中的挑战;当您升级例如Microsoft Word时,您不需要立即将所有文档从doc更改为docx。而文件甚至有一个更简单的结构完整的关系数据库。
并非如此用于商业应用;用户跳过版本,使数据模型未经授权的更改和系统需要保持运行,并提供正确的数字...
我们用我们自己的应用程序(最大的是像600个表)自主研发的CASE工具其中包括分支/合并,但该方法也可以手动完成。
版本的数据模型
的数据模型可以在一个结构化的方式写下来。例如,作为表格内容(CSV将被加载到具有元数据的表格中)或作为检测正在使用的版本的代码,并且在丢失时添加列和表格,包括非平凡的迁移。
这甚至允许多个用户同时更改数据模型。
当您使用自动检测(例如,我们使用名为“verify_column”而不是“add_column”的调用)时,甚至可以平滑迁移,而无需考虑客户开始升级的版本号。这样的过程分析要更改的表并在列丢失时发布正确的DDL,例如alter table t1 add col1 number not null
,或者当列已存在但可为空时发布alter table t1 modify col1 not null
。
对于Oracle和SQL Server,我可以为您提供几个示例过程。在MySQL中,我将使用客户端语言对其进行编码,最好是独立于操作系统的,以允许安装在Windows和Linux上运行。当你有这方面的经验时,也许使用Apache Ant。
类别'S'(种子数据)表的内容被置于版本控制之下。我们通常在我们的案例工具中将这些注册为元数据,然后将其命名为“数据集”,但您也可以使用Microsoft Excel甚至代码。
例如,在Excel中,您将拥有种子数据行的列表。在列A中,您可以输入一个Excel函数,如=B..&"|"&C..& "|" & ...
,它将所有内容连接起来,并使其适合通过加载器工具进行加载。
例如,在代码中,你可能有这样一个电话:
verifySeed('TABLE_A', 'CODE', 'VALUE')
的Excel是一个有点难以版本控制,允许多个用户在同一时间更改的内容下带来。代码的方法非常简单。
请记住还要添加功能来删除废弃的种子数据。例如,通过明确列出废弃的种子数据或自动删除表中存在但上次安装未触及的所有种子数据。
这可能对你很有趣:http://stackoverflow.com/questions/6409204/database-migrations-in-a-complex-branching-system –
hi @Stevie G有没有任何答案可以帮助你解决你的问题?如果没有,请添加什么不成功的问题。当答案对您有帮助时,您是否可以通过点击旁边的空心绿色复选标记来接受它? –