我的应用程序中有一些实体类。我想将所有更改保存到历史记录表中的这些实体和一些发生的事件。问题是实体类是不同的,建立在不同的原语和不同的关系之间。设计模式适合许多实体历史?
例如在购物应用程序中可以有:用户,物品,交易,手表。我希望能够表现出一定的活动日志的用户是这样的:
- 16:00您已经在事务2468购买“指环王”,
- 15:30您已经添加了“霍比特人“到您的监视列表中,
- 15:00观看项目的”Silmarillion“已将价格从15降至12,50欧元,
- 14:30您已将名称从”Tomasz“更改为”Tom“。
有参与此日志很多东西:
- 新的交易实体2468与物品“魔戒”,与项目“霍比特人”和我的帐户链接
- 新观察实体,
- 更新的项目价格(但是旧价格和新价格都存储),
- 已更新用户名(包括旧的和新的存储的)。
我的主要问题是如何跟踪这些数据?
- 我应该拥有许多与许多实体表一样多的表来保持其更改吗? UserVersions,ItemVersions等?
- 我应该查询所有版本表,加入并排序结果来生成这个日志?
- 或者也许应该有一个表版本与列“实体”,“OldValue”,“NewValue” - 约束和外键?这不是太肮脏的解决方案吗?
- 是否有这样的设计模式?
- 最后如果你知道 - Facebook如何做到这一点? :)
谢谢你,我认为你的答案现在是最完整的,它链接到许多相关的资料来源,并提供进一步的解释。 –
参见http://cqrsinfo.com/documents/ –