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)
更多参考,