DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

Datomic


Datomic is a proprietary database management system. It is an operational DBMS, in other words, it allows updates in real time. Instead of assigning and overwriting values into named attributes, Datomic keeps track of all immutable facts over time, which sets Datomic apart because previous states can be accessed easily. Datomic is also a distributional DBMS, which provides horizontal read scalability. Therefore, Datomic is a good fit for storing a history of valuable records that requires operational flexibility and read scalability.[04][05]

In addition, Datomic Cloud is built for AWS integration and is a quicker and easier way to access Datomic on AWS.

Database Entry

Datomic


Datomic is a proprietary database management system. It is an operational DBMS, in other words, it allows updates in real time. Instead of assigning and overwriting values into named attributes, Datomic keeps track of all immutable facts over time, which sets Datomic apart because previous states can be accessed easily. Datomic is also a distributional DBMS, which provides horizontal read scalability. Therefore, Datomic is a good fit for storing a history of valuable records that requires operational flexibility and read scalability.

In addition, Datomic Cloud is built for AWS integration and is a quicker and easier way to access Datomic on AWS.[04][05]

History[06]


Early March 2012, the Relevance team (later joined with Metadata to form Cognitect) around Rich Hickey released Datomic, which they have started to work on since 2010.

Compression[07]


Index trees contain "segments," arrays of datoms that are serialized and then compressed with zip. Compression allows more efficient caching and storage.

Data Model[08][07]


Datomic stores immutable facts as datoms over time. A datom follows the form of (entity, attribute, value, time).

Foreign Keys


Indexes[07][09]


Datomic indexes are covering indexes. In other words, instead of storing reference to data in the index, Datomic directly reads data from index.

Isolation Levels[10]


There is only one thread responsible for writing transactions, so transactions are always serializable.

Query Compilation


Query Interface[11]


Datomic's query interface is an extension from Datalog. The main difference is that Datalog systems usually have a global fact database and a set of rules, but Datomic Datalog could take multiple databases and sets of rules.

Storage Architecture


Storage Model[12]


Datomic treats storage as a service, which means that Datomic only provides the ways to access underlying storage, but doesn't provide the actual storage.

Stored Procedures[13]


Stored procedures are represented as "transaction functions" in Datomic.

System Architecture[12]


Each "peer" in Datomic that communicates with storage services and transactors has its own cache.

Views


Compatible Systems
Eva Eva

Citations

13 sources
  1. Datomic - Overview datomic.com
  2. Introduction | Datomic datomic.com
  3. Datomic - Wikipedia wikipedia.org
  4. https://docs.datomic.com/on-prem/getting-started/brief-overview.html datomic.com Dead — Check Archive
  5. Datomic - Overview datomic.com
  6. Rich Hickey's Datomic embraces Cloud, intelligent Applications and Consistency - InfoQ infoq.com
  7. Unofficial guide to Datomic internals @ tonsky.me tonsky.me
  8. https://docs.datomic.com/on-prem/architecture.html datomic.com Dead — Check Archive
  9. Datomic Data Model | Datomic datomic.com
  10. https://docs.datomic.com/on-prem/acid.html datomic.com Dead — Check Archive
  11. https://docs.datomic.com/on-prem/query.html datomic.com Dead — Check Archive
  12. Datomic Cloud Architecture | Datomic datomic.com
  13. https://docs.datomic.com/on-prem/database-functions.html#transaction-functions datomic.com Dead — Check Archive
Revision #5 Last Updated: