What is Datomic?
Datomic is a new database system that simplifies the database by separating transactions process, storage and queries, and adopting a simple data model based on facts.
How does it differ from RDBMS?
The primary difference is in the separation of transactions/storage/query. Datomic's data model is based upon a universal primitive relation, of datoms, rather than an arbitrary set of named relations. And the query model, while relational, is based upon Datalog, not SQL. Datomic has weaker constraint capabilities than some RDBMS, but more flexible data modeling. It shares ACID transactions and arbitrary joins.
How does it differ from NoSQL?
Most NoSQL databases drop arbitrary transaction and join capability, and adopt sharding and eventual consistency, in an attempt to deliver arbitrarily scalable writes and reads. They also often have data models not supported by relational logic. Datomic trades off arbitrary write scalability to retain arbitrary transactions and joins, and has a strong data and query model, with arbitrary read and query scaling.
How does Datomic utilize storage engines?
Datomic doesn't manipulate file systems directly. It relies on external storage servers (e.g. SQL) or services (e.g. DynamoDB or key/value stores). It treats them much the same way a traditional database treats a file system, to store blocks representing nodes of its indexes. Datomic does not store items at the datom granularity in storage, it does all of the 'database' representation itself.
How does Datomic provide ACID guarantees?
The transactor serializes all transactions, and each transaction runs against a stable view of the database, and succeed or fail in their entirety. Transactions are not acknowledged until after they are logged in storage. Atomic read/modify/write operations can be performed by database functions, which run on the transactor within the transaction. Note that Datomic can provide ACID guarantees without utilizing read-transactions, nor read locks, due to the presentation to the query engine(s) of the database as an immutable value.
Is Datomic just for JVM languages?
Although the Datomic Peer library runs in the JVM, the Datomic Client library provides a lightweight interface to the Datomic Peer Server and can support any language. Cognitect currently provides a Datomic Client library for Clojure, and a Java Client library is forthcoming.
What is the difference between Peers and Clients?
Datomic provides both an in-process peer library and a lightweight client library. If you are trying Datomic for the first time, we recommend that you begin with a client library. A detailed discussion of the differences between Peers and Clients can be found here.
When is Datomic not a good fit?
Datomic is not a good fit if you need unlimited write scalability, or have data with a high update churn rate (e.g. counters). At present, Datomic does not have support for BLOBs.
How do I get started with Datomic?
You can start with Datomic Pro Starter Edition and follow along with the Getting Started Guide.
What are the Datomic editions?
Datomic comes in three editions - Datomic Starter, Datomic Pro, and Datomic Enterprise. Datomic Starter Edition enables small production deployments at no cost. Datomic Pro provides ongoing maintenance (software updates) as well as online support. Datomic Enterprise provides 24x7 production support, custom license terms, and integration support. You can read more about the editions here.
If I build a system on Datomic Starter Edition, can I move it to Datomic Pro?
Yes! They are completely API compatible. Just change your license key and restart the transactor.
What is different about the new licensing model?
As of November 28, 2016 , Datomic is no longer licensed on a per-peer basis. All licenses are now permitted to deploy an unlimited number of peers and or clients in whatever configuration is desired. We feel that this change, along with the release of the Datomic Client Library, better supports modern flexible software architectures and removes an obstruction to deploying Datomic in service-oriented systems. In addition, the Datomic pricing model has been greatly simplified to provide a clear expectation of the cost to maintain a long-term production Datomic system.
What happens to legacy storages?
The supported list of Datomic storage engines can be found in the Documentation.
Riak, Couchbase, and Infinispan are now considered legacy Datomic storage engines. We will continue to provide support for legacy storages for enterprise customers.
Scale, Availability and Durability
How does Datomic handle consistency, availability and scale?
Because Datomic separates the handling of transaction processing and query/read, it can make independent choices for each facility. Transactions favor consistency over availability, and the loss of a transactor will require traditional failover approaches. Queries and reads, however, are serviced by the independent and scalable Datomic Peers. And, since the data segments stored by Datomic in the storage service are immutable, they are always consistent. Thus, Datomic is well suited for applications that require write consistency and read scalability.
How does the transactor affect scalability?
The transactor does limit write scaling. However, compared to a typical database server, the transactor doesn't have to handle all the other work normally done by a server (servicing queries and reads, locking, disk sync etc), and many workloads will be supported by this configuration. Datomic doesn’t target the very highest write volumes, as those workloads require different tradeoffs (one or more of: a loss of transactions, queries, or consistency, and/or the need to shard).
Is the transactor a single point of failure?
No. Multiple transactors can be run in standby mode in a single auto-scaling group, each ready to take over in the case of a failing transactor. At no point can data be lost, as no transactions are acknowledged unless written through to the storage service.
How much does Datomic Pro Edition cost?
Datomic Pro costs $5,000 per system for a perpetual license and 12 months of maintenance. Ongoing maintenance renewal fees are $5,000 per system per year and provide access to the latest versions of Datomic and online support. Once you've purchased a license, you will receive a license key by email. You can get the full details on the Get Datomic page.
Do I have to pay more for development and testing use?
No. The Datomic license provides unlimited development and testing use (i.e. non-production systems). You can use your production license key on your development and testing systems.
Can I evaluate Datomic Pro for free before purchasing?
Yes, you can get Datomic Pro Starter Edition to develop and release your application prior to purchasing a license.