11 insights after 11 years with the functional database Datomic - Magnar Sveen - NDC Oslo 2024

Learn how Datomic's immutable facts, time-aware data model, ACID transactions, and Datalog queries revolutionize database architecture after 11 years of production use.

Key takeaways
  • Datomic stores data as immutable facts in entity-attribute-value format rather than traditional SQL tables
  • Time is a first-class concept - all data is automatically versioned and you can query the database as it existed at any point in time
  • Facts are never updated or deleted, only new facts are added (with optional retractions), preserving full history
  • Transactions are fully ACID compliant and are themselves entities that can carry metadata about who made changes and why
  • Database reads are highly scalable since clients are peers that query data directly, while writes go through a central transactor
  • Storage is pluggable - can use various backends like DynamoDB, Postgres, Cassandra etc.
  • Data model is flexible - can represent sparse data, graphs and mixed data structures better than rigid SQL tables
  • Designed to work especially well with Clojure but usable from any JVM language
  • Queries use Datalog, a Prolog-inspired declarative query language that enables graph traversal
  • Full history tracking enables better auditing and temporal querying capabilities while maintaining reasonable storage requirements