Event Sourcing的一个简单介绍。

简单来说,Event Sourcing可以认为是一种不同的(数据库)建模方法,以及由此带来的一系列变化。 相比于“传统的”的建模方法,Event Sourcing不存储对象的当前状态,而是存储导致状态变化的一系列事件(event); 通过apply(回放)所有事件来得到对象的当前状态。

Event Sourcing的好处有:

  • 非常强的可追溯性(traceability)。拥有状态变化的所有历史。
  • 因为数据库的模型和内存对象的模型有着很大的区别,所以也省去了ORM的必要,以及ORM带来的一系列问题。

Event对于数据库而言是写操作,它们对于查询而言并不友好。 可以利用CQRS模式设计相应的read model来满足查询的需求。

Event Sourcing适用于某些场景,比如:

  • accountability/debugability is critical
  • you need version control/undo for data (e. G. Wikis, Google Docs)
  • your business derives value or competitive advantage from event data
  • your domain is inherently event driven (e. G. basketball game tracking)

更多参考,