We are pleased to announce today preliminary support for two new storage services for Datomic: Riak and Couchbase.
Riak is an elasticly scalable, distributed, redundant and highly available key-value store in the Dynamo model. It is a great option for Datomic users who want to run such a system system on their own premises (vs e.g. DynamoDB on AWS). Because Riak supports only eventual consistency at this time, a Datomic system running on Riak also utilizes Apache ZooKeeper, a highly-available coordination service. Datomic uses ZooKeeper for transactor failover coordination, and for the handful of keys per database that need to be updated with CAS. The bulk of the data is kept in Riak, immutably, and leverages all of Riak's redundancy and availability characteristics..
Couchbase is an elasticly scalable, distributed and redundant document store. Like Riak, it supports redundant storage. Unlike Riak, it does offer consistency and CAS, trading off for a more conventional availability model, with either manual or automatic failover.
Both solutions are backed with commercial support offerings from the people who make them.
With all three services (Riak, ZooKeeper, Couchbase), Datomic can run on an existing installation alongside other applications without conflict. Thus you can combine your use of Datomic with other uses of the storages, at which they excel. We consider this hybrid use to be highly appealing in practice, as different parts of your applications have different requirements.
As always, you can backup and restore to/from these storages and any other, and switch your application from one storage to another with a change to a different URI.
This makes the set of Datomic storages:
- In-process memory
- Transactor-local dev/free mode
We are very excited about these new options, which greatly expand your choices, especially for non-cloud deployments. Each storage represents different tradeoffs, but what is important is that the choices are yours to make, as you decide what best fits your business and technical requirements.
We look forward to your feedback as we fine tune these integrations for production use.