The Components of Datomic
The Peer Library
The peer library gets embedded in your application server(s). It is the gateway to the rest of the database, submitting transactions and accepting changes from the transactor. It also provides data access, caching and query capability. It contains all the communication components needed for connecting to the transactor and storage services, as well as Datalog and other facilities for managing your data.
The peer library can act in standalone mode, using an in-memory database as a stand-in for the other components:
The transactor is a process that accepts transactions and coordinates change, and is needed whenever you want a system comprised of more than a single peer, or one that leverages a storage service. It can be run as a stand-alone process, or you can run our prebuilt AMI on EC2. With a transactor in play, the system can run in one of several storage modes. The simplest mode is called dev mode (and, in the Free edition, free mode), and leverages built-in storage capabilities of the transactor. It is intended for small-scale development and testing:
The Storage Service
When you are ready for higher performance and scalability, you will integrate a storage service (available in Pro Edition only). A storage 'service' can be anything from a SQL database, to a key/value store, to a true service like Amazon's DynamoDB. You will still use the peer library described above, but will configure it and the transactor to use one of the external storage protocols. The currently supported protocols are ddb, backed by a DynamoDB table, riak backed by a Riak cluster, couchbase backed by a Couchbase cluster, inf, backed by an Infinispan memory cluster, or sql, backed by a SQL database (like PostgreSQL).
When using EC2 you can use our prebuilt Amazon AMI transactor. You will need an Amazon AWS account. Our tools will help you configure users, security groups, auto-scaling, metrics, cloud-formation and other details of AWS.
When using Riak, Couchbase, Infinispan or SQL, you will need to stand up the storage system/server yourself, with scripts we provide to help you with e.g. installing the schemas Datomic requires.
Integrated memcached Support
Another feature of the Pro Edition is optional memcached support. Simply configure the transactor and peers with your memcached servers and they will be transparently utilized as a distributed backing cache for data segments.
You can move an application from the memory database, to dev mode, to a storage-service based configuration with a switch of the connection string on the peers and a properties file on the transactor. All are fully API-compatible. You can move databases between storages with the backup/restore facilities.