Debates about which database to use – and now even which *type* of database to use – are common. But what if you didn’t even need a database? Martin Fowler makes that case in this post. He suggests that “memory images,” which use event sourcing to create persistent stores of applications states, could be used as an alternative. Like version control systems, memory images use event sourcing to log changes to an application.
By using memory images, application states could be stored in-memory instead of on disk, which would speed-up performance. If the instance crashes, the state can be restored from a snap-shot. Further performance boosts would be seen from a reduction of I/O and other overhead associated with communicating with a database server.
There are drawbacks – Fowler mentions support for concurrency as one. But he points LMAX, a high performance trading system, as an example of a system using memory images for persistence.
Social media, mobile and big data are changing the requirements of databases, and NoSQL is changing what we see as possible and desirable in a database. Meanwhile, the amount of server RAM available for applications continues to grow, making in-memory analytics more practical. It’s not surprising then to see novel approaches that challenge conventional assumptions about how to deal with data.
Markus Winand made the case earlier this year that the version control system Git is actually a NoSQL datastore. The blog engine Wheat actually uses Git as a backend, and a database system called Prophet has been built on Git. This is obviously different from what Fowler is talking about, but it’s an interesting approach.
Other approaches to using very non-traditional datastores include using the Solr open source search engine as a middleware systems for content management. RedMonk ran an interview with Shantanu Deo of AT&T, who did just this.
In short, new approaches are emerging and it pays to evaluate alternative approaches whens starting new IT projects.
Photo by Jannis Andrija Schnitzer