Peter Bell discusses the trends in databases. As he sees it, immutable data storage, such as Datomic, is the future of databases, and graph databases, such as Neo4j, are the present. There is also a trend toward polyglot persistence – using 2-3 different data stores for one system.
Immutable data storage addresses the issues of locking and concurrency when variables are accessible in many places.
Datomic is primarily designed for JVM languages, so it’s easier to work with if you use JRuby.
The biggest advantages of immutability are:
1. You may have questions later on that you hadn’t anticipated – having access to the old data will enable you to answer those questions.
2. It gives you more useful information to work with if you have records of what was changed and when.
Immutable storage is most useful in domains where information is being updated and you may care about historic versions e.g. audit logs, content management systems, ecommerce. There may be issues using immutable storage with anything that is incredibly quickly updating. In this case, you want to think carefully about whether to use Datomic or Cassandra.
Graph databases, such as Neo4j, offer an opportunity to get more business actionable information from the data we’re storing. These are structured for the domains we are more commonly using now and are more widely useful than you may initially assume.
Peter recommends getting familiar with immutable storage and graph databases in non-mission-critical projects when you have time to work through the surprises that come up when working with any new technology. Additionally, learning new concepts enables you to improve the way you program with the tools you already have.