ORM用于非破坏性系统?

时间:2010-08-19 13:36:51

标签: orm immutability

我不知道是否有特定的名称,但我正在设计一个由数据库支持的应用程序,其中行必须是不可变的(不确定该术语是否适用于此处,但它最接近于描述我需要的)。也就是说,不是改变存储在一行中的数据,而是插入具有相同id但是不同主键的新行。将存储一些带有行的元数据,这些元数据将指示哪个是id的最新行,以及具有该id的记录是否已被“删除”。我想使用ORM,我可以使用普通insertupdatedelete语句,但会在后台执行所有操作。由于我不知道使用什么术语,我很难找到一个使用伟大的,无所不知的谷歌的解决方案。这样的ORM是存在的,还是我必须构建一个/修改现有的ORM?任何提示都表示赞赏。

4 个答案:

答案 0 :(得分:1)

您可以使用任何支持存储过程的ORM,然后编写sprocs来执行更新。

答案 1 :(得分:1)

您可能正在寻找的是一种时态数据库模式,保存每个项目会创建一个新版本。时态数据库背后的想法是,您可以在给定日期静态查询数据。

答案 2 :(得分:0)

也许这可能是解决方案?

http://docs.jboss.org/envers/docs/index.html

答案 3 :(得分:0)

您所寻找的术语通常称为写时复制。

具有讽刺意味的是,Postgresql(MVCC)和SqlServer(Snapshot)等许多数据库都采用某种形式的 COW ,但出于性能和ACID的原因。

从我收集的内容中你可能正在寻找版本控制特性,虽然我不知道任何支持这种行为的ORM或RDBMS,但有许多内容存储库可以做到。一个例子是JCR实现(JSR 170),例如JackRabbit

否则,我建议您查看使用RDBMS的Wiki软件是如何工作的(通常是带有id和version列的两列索引)。