Event Sourcing as replacement for CRUD

Event Sourcing as replacement for CRUD

Submitted by Jitesh Doshi on Mon, 10/03/2016 - 12:25

Most developers are familiar with CRUD (create-read-update-delete) model of data storage in business applications. It is a simple model that has served us well so far. But the problem with CRUD is that it allows users (or developers) to modify history (change past). That might be okay for some applications (a discussion board, say), but not for all, such as financial accounting. In this article is a very gentle introduction to an alternative model, Event Sourcing. There are more detailed introductions elsewhere, but they may not be as gentle (Subjective, I know).

For example, one of SpinSpire's financial clients has an application that currently uses CRUD model for accounting financial transactions. The problem is that the application allows users to go back and adjust (modify) financial transactions that have already happened, reconciled and reported to the relevant authorities (regulators). So, in effect, you're changing the past. Now, you may say, that "Hey, we need to be able to update the data as new and more accurate information becomes available!". True. But the right way would be if the database had two entries - one entered originally, and another one entered later that adds the adjustment amount. And both the entries have separate timestamps on them. So if you queried the database with an "as-of" time, you'll get one answer before the second entry, and a different answer after it.

The above is what Event Sourcing (ES) accomplishes. In CRUD, the database simply stores that transaction amounts as they stand now. But in ES, the database is a journal of transaction entries with a timestamp that can be sequenced up to any "as-of" time to reflect the situation as it was at that time. Implementing this (ES) is not easy. But for mission-critical systems where historical accuracy is paramount, there's much of an alternative.

In a later update, I'll try to go into the details of ES and how to implement it. In the meanwhile, checkout some of the resources below ...

Jitesh Doshi

Profile picture for user Jitesh Doshi
Managing Partner & CTO
  • A seasoned technology entrepreneur and enthusiast
  • A regular speaker at industry conferences and universities
  • Host and organizer of technology user groups
  • Active in management of non-profit organizations serving the local community
  • Leader and contributor for multiple open-source projects
  • Expert in cloud, application integration, web and mobile technologies
  • Author of open-source projects, including on Drupal.org - Popular Tags and PRLP.
  • Developed several highly successful software platforms and frameworks for clients