我不知道是否有特定的名称,但我正在设计一个由数据库支持的应用程序,其中行必须是不可变的(不确定该术语是否适用于此处,但它最接近于描述我需要的)。也就是说,不是改变存储在一行中的数据,而是插入具有相同id
但是不同主键的新行。将存储一些带有行的元数据,这些元数据将指示哪个是id
的最新行,以及具有该id
的记录是否已被“删除”。我想使用ORM,我可以使用普通insert
,update
,delete
语句,但会在后台执行所有操作。由于我不知道使用什么术语,我很难找到一个使用伟大的,无所不知的谷歌的解决方案。这样的ORM是存在的,还是我必须构建一个/修改现有的ORM?任何提示都表示赞赏。
答案 0 :(得分:1)
您可以使用任何支持存储过程的ORM,然后编写sprocs来执行更新。
答案 1 :(得分:1)
您可能正在寻找的是一种时态数据库模式,保存每个项目会创建一个新版本。时态数据库背后的想法是,您可以在给定日期静态查询数据。
答案 2 :(得分:0)
也许这可能是解决方案?
答案 3 :(得分:0)
您所寻找的术语通常称为写时复制。
具有讽刺意味的是,Postgresql(MVCC)和SqlServer(Snapshot)等许多数据库都采用某种形式的 COW ,但出于性能和ACID的原因。
从我收集的内容中你可能正在寻找版本控制特性,虽然我不知道任何支持这种行为的ORM或RDBMS,但有许多内容存储库可以做到。一个例子是JCR实现(JSR 170),例如JackRabbit。
否则,我建议您查看使用RDBMS的Wiki软件是如何工作的(通常是带有id和version列的两列索引)。