A Clojure/Datomic library for idempotently transacting datoms (norms) into your database – be they schema, data, or otherwise.
In the simplest sense, conformity allows you to write migrations and ensure that they run once and only once.
In a more general sense, conformity allows you to declare expectations (in the form of norms) about the state of your database, and enforce those idempotently without repeatedly transacting schema, required data, etc.
Pull is a declarative way to make hierarchical (and possibly nested) selections of information about entities. Pull applies a pattern to a collection of entities, building a map for each entity. Pull is available
- via the standalone pull API Peer | Client
- via the standalone pull-many API in Peer
- as a find specification in query
Welcome! This site is maintained by the Datomic team as an official place for the community to ask questions, request features, and get their problems solved.
Anyone may view the content on this site, but you must have an account to ask questions, provide answers or vote on questions/answers. Authentication is currently done using your GitHub account. Other authentication providers may be added in the future. When you have logged in, please click your user name in the upper right corner and review your profile. If you wish to receive email notifications, please add an email address.
Questions have both categories and tags. Categories (see right sidebar) are a fixed set of Datomic topics. At least a top level category must be selected when asking a question.
There are two special tags:
- problem - describe a problem or question you have
- request - describe a request for enhancement to Datomic
When problems or requests are logged, Datomic developers will assess and create corresponding internal issues for development.
Users may vote on both questions and answers. Votes can help surface the most helpful answers, and may be used to inform decisions about future releases of Datomic.
This document defines the grammar for schema data.
edn is an extensible data notation. A superset of edn is used by Clojure to represent programs, and it is used by Datomic and other applications as a data transfer format. This spec describes edn in isolation from those and other specific use cases, to help facilitate implementation of readers and writers in other languages, and for other uses.
Rich Hickey, the author of Clojure and designer of Datomic, is a software developer with over 30 years of experience in various domains. Rich has worked on scheduling systems, broadcast automation, audio analysis and fingerprinting, database design, yield management, exit poll systems, and machine listening, in a variety of languages.
This keynote was given at Strange Loop 2011, and is perhaps the best known and most highly regarded of Rich's many excellent talks, ushering in a new way to think about the problems of software design and the constant fight against complexity.
The video was recorded at Strange Loop in partnership with InfoQ, who have hosted it on their site since 2011. This version (released 10 years later) is a new edit made from the original HD video and slides, restoring the slide transitions and animations as it was given in 2011.
In this presentation, we explore the concept of knowledge databases, which represent entities and their relationships in a structured and semantic way. By combining this model with immutability—where data is never overwritten, only accumulated—it becomes possible to build systems with a complete, auditable history and native versioning. This approach is particularly powerful in complex ecosystems like Nubank’s, where thousands of microservices interact. We’ll show how modeling these interactions as a knowledge database allows us to uncover patterns, dependencies, and insights that are otherwise hidden, ultimately helping teams understand and evolve the system more safely and intelligently.
Biography
Darlei Soares and João Nascimento are software engineers and data enthusiasts with deep experience in building systems around immutable knowledge databases. Currently part of the engineering team at Nubank, Darlei and João both work on designing and maintaining highly distributed services that leverage Datomic at scale, powering financial operations for millions of customers.
Recorded Nov 13, 2025 at Clojure/Conj 2025 in Charlotte, NC.
This topic documents the data format for Datomic datalog queries and rules. If you want to follow along at a REPL, most of the examples on this page work use the mbrainz-subset database and are in the Day of Datomic Cloud repository.