Many years ago around 2008, I worked onsite in one of client sites. When I looked at the database model, I found something interested.

There were no delete operations allowed in the database model, and records were saved / presented in the layers. Delete and update commands were translated to insert new records operations. In addition, the change requests themselves and associated data were saved to other tables as the actions.

I immediately realized this was a great idea for recording-keeping, and the auditors like it. I called it snapshot design at that time. My ex-boss told me he continued to refine / design this model himself over the course of 16 years, finally reached this model, and he didn’t know how to describe it. However, he was very happy and liked the term snapshot design. Both of us didn’t realize it was one variation of Event Sourcing pattern.

Later I went on and designed / implemented two enterprise business applications using this pattern. Of course, I added my own flavors to improve the design.

I watched Uncle Bob’s Clean Architecture on YouTube one month ago. He mentioned this Event Sourcing pattern. I dived in and found what Event Sourcing was.


  1. Event Sourcing pattern on MSDN
  2. Martin Fowler’s article on Event Sourcing