使用Symfony2进行多版本并发控制?

时间:2013-10-17 12:43:03

标签: symfony mvcc

我们希望为Symfony2 webapp实现Multiversion concurrency control

这意味着在任何事件中,都不会对数据库执行UPDATE,而只会执行INSERT。由于我没有找到Symfony2对此要求的任何原生支持,我决定如何手动实现。

除了每个实体的常规ID(主键)(例如User)之外,我们还添加了另一个实体属性,例如另一个userID。因此,对于用户属性的每次更改,我们只能INSERT用户的另一行,然后有另一行ID,但相同的userID

然后,可以始终通过特定的附加实体ID来识别实体。

但是这个解决方案存在一些问题:常规实体ID是主键,因此是该实体的所有关系的标识符。也可以尝试创建组合主键(例如IDtimestamp,或IDentityID,但Symfony2 / Doctrine2不构建为支持组合主键

那么你将如何在Symfony2 / Doctrine2中实现MVCC呢?你看到了解决这个问题的方法吗?或者,您是否建议使用单独的历史记录表来跟踪所有更改?

0 个答案:

没有答案