Clojure is a Foreign Country: Combining Datomic with Scala
summary
A Scala web service uses Datomic with Cassandra as storage, Play framework for the API and Apache Artemis for messaging, and reports that core Datomic features—Datomic with Cassandra and transactor, reified transactions for built-in auditing and time-travel/speculative DB via with-db—work well: audit metadata is stored as entities, historic queries and speculative transactions catch uniqueness errors before the transactor, and read scaling holds. Pain points include using DataMisa’s Scala macros which block truly dynamic queries at runtime and the ORM-ish mapping to case classes that breaks laziness, sparse-data flexibility and time-travel unless extra migration logic is added.
AI-written summary · about
chapters (24)
- 0:00Intro
- 0:25a foreign Country
- 1:03The Problem Space
- 2:59The Stack
- 3:59Outside
- 5:41Using Datomic From Scala
- 6:44Datomisca
- 8:00Molecule
- 8:47History
- 10:28Time Travel
- 13:17Audit
- 14:52Friction
- 15:02Dynamic Queries
- 16:10ORMification
- 17:21Domain-Specific Types
- 17:55Schemas and Conversion
- 19:52Trade-offs
- 20:35Modular Entities
- 21:33Sparse Data
- 24:06Ordering
- 24:19Transaction Functions
- 25:26Cross-Pollination
- 27:47Niklas Luhmann
- 30:21Foreignness








