Datomic On-Prem FAQ

General

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.

Getting Started

How do I get started using Datomic?

You can start with Datomic Pro Starter Edition and follow along with the Getting Started Guide.

Editions

What are the Datomic editions?

Datomic On-Prem 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 does a paid Datomic license get me?

All Datomic On-Prem licenses are permitted to deploy an unlimited number of peers and or clients in whatever configuration is desired. The yearly maintenance renewal provides access to new releases of Datomic as well as access to the Support ticketing system.

What about Datomic Cloud?

Datomic Cloud is the recommended approach for new development on AWS. See the Moving To Cloud guide for more information on the similarities and differences between Datomic Cloud and Datomic On-Prem.

Supported Storages

What storage engines does Datomic On-Prem support?

The supported list of Datomic storage engines can be found in the Documentation.

What happens to legacy storages?

Riak, Couchbase, and Infinispan are considered legacy Datomic storage engines. We provide support for legacy storages for enterprise customers only.

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.

Pricing

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.

Feature Requests

What about feature X?

We are eager to learn about your use of Datomic, and what could make it better. With a Receptive.io account you can propose and vote for feature requests.

When will feature X be available?

We prefer not to discuss new features prior to their public release.

Where can I find out about new features?

You can see release announcements on the Datomic Forum or by following the Datomic Team on Twitter (@datomic_team).