在设计数据库以使用MVCC(多版本并发控制)时,您可以使用类似"IsLatest"的布尔字段或整数"VersionId"创建表,并且您永远不会进行任何更新,只会在事情发生变化时插入新记录.
MVCC为需要详细历史记录的应用程序提供自动审计,并且还减轻了数据库对更新锁的压力.缺点是,由于获得最新版本所需的额外条款,它会使您的数据大小更大并减慢选择速度.它还使外键更复杂.
(请注意,我不是在讨论SQL Server的快照隔离级别等RDBMS中的本机MVCC支持)
这已在Stack Overflow上的其他帖子中讨论过.[todo - 链接]
我想知道,哪些流行的实体/ ORM框架(Linq to Sql,ADO.NET EF,Hibernate等)可以干净地支持这种类型的设计?这是对典型ActiveRecord设计模式的重大改变,因此我不确定那里的大多数工具是否可以帮助那些决定使用他们的数据模型走这条路线的人.我对如何处理外键特别感兴趣,因为我甚至不确定将数据建模为支持MVCC的最佳方法.