【发布时间】:2012-10-10 19:59:35
【问题描述】:
在事件存储中存储事件时,事件的存储顺序非常重要,尤其是在稍后投影事件以恢复实体当前状态时。
考虑到它的速度和灵活的模式(通常建议这样做),MongoDB 似乎是持久化事件存储的好选择,但是 MongoDB 中没有事务这样的东西,这意味着不能正确的事件顺序保证。
鉴于这一事实,如果您正在寻找一致的事件存储,您应该不使用 MongoDB,而是坚持使用传统的 RDMS,还是有办法解决这个问题?
【问题讨论】:
-
交易如何保证事件顺序?如果您为每个事件添加时间戳会那不能保证顺序?
-
你读过 MongoDB 中的 Atomic Operations 吗?例如,如果您将
$pushing 事件添加到数组中,则您应该具有一致的顺序。如果您的事件是短暂的,您还可以考虑使用Capped Collection,它按插入顺序维护文档,并具有 FIFO 自动老化功能。另一种选择是考虑sequences。有助于解释您如何对事件进行建模。
标签: mongodb nosql event-sourcing consistency