我们正处于在 SQL 2008 R2 上构建大型 C# MVC2 应用程序(我们还采用 Sharp 架构和 Nhibernate 作为生态系统的一部分)的早期阶段,其中一个要求是在给定的时间内可以访问所有数据库行版本。历史。
我们尝试过类似以下布局的想法:
id (PK)
记录ID
版本号
对记录的每次编辑都会导致使用相同的 recordId 和递增的 versionId 创建新记录。然后,记录显示将通过 SELECT ... WHERE recordId = X AND versionId = MAX(versionId) 的方式完成
对每个事务进行快照是行不通的(太多?并且无法从应用程序内轻松访问)。
但我们很好奇还有哪些其他实现已成功尝试,或者我们的提案存在潜在问题。
您似乎在暗指临时表。三种方法:
有效状态表:附加两个“时间戳”列(例如类型DATETIME
),一个指定该行何时生效,一个指定该行何时停止有效,中间时间为该行的有效期
交易时间状态表:将每一行与该行在受监控表中存在的时间段相关联,从而允许重建受监控表在任何先前时间点的状态。
双时态表:捕获有效时间和交易时间,同时记录企业的历史,同时还捕获该历史记录的更改顺序。
Source: 使用 SQL 开发面向时间的数据库应用程序 (Richard T Snodgrass) http://www.cs.arizona.edu/people/rts/tdbbook.pdf.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)