首先,让我指出我读过关于数据库版本控制的所有文章,但这不完全是我正在寻找的东西,但我不能提出更好的标题(这里“全部”这个词是关键)。SQL Server中的完整数据库版本
我有一个'编译好的数据库',它包含一个公共交通路线规划器的所有类型的优化记录和统计信息,它是通过另一个数据库中的程序生成的。编译的数据库在活动时不会更改,用户活动监视和缓存除外。有些表格包含2-3万条记录。
一旦输入数据库发生变化,此编译的数据库就会完全更新。因此,任何新的数据库版本都不以任何方式与任何其他以前的版本交互。但是我希望单独存储每个版本,并且如果用户需要,可以从程序中使用它(将它想像为公共交通地图的历史记录)。
唯一合理的方法是简单地为每个版本创建不同的物理数据库,这既不硬也不错,但是我问你是否知道任何机制对完整数据库进行版本控制(而不仅仅是数据库中的部分数据,比如其他职位都在问),目的是使整个事情更加合乎逻辑和干净。
我正在使用SQL Server 2012,但可能在服务器上它将是2008 R2。
如果您想将版本化数据存储在同一个数据库中(并且在每个表中添加VersionID列),请将其忽略掉,因为在一个有2-300,000条记录的表上,有10个版本(这些版本会在少于3个月)将意味着300多万条记录,其中只有30万条将被使用,所以,绝对不会!
VersionID列不会很好,因为推测新版本可能有不同的模式。我可能会像你最初的预感一样使用单独的数据库。 – 2012-08-15 21:00:43
同意模式更改的评论。但为什么你认为有一个版本列(因为大小)是一个问题? – 2012-08-15 21:10:46
仅仅是逆向的,如果模式在数据的不同“版本”之间是相同的,为什么不把它们都放在同一个数据库中呢?你可以使用表分区。哎呀......即使他们有不同的模式,他们也可能都在同一个数据库中,只要有不同的表名即可激活你的辣椒。对您的数据库模型有什么异议? – 2012-08-15 21:28:59