Datomic updates in production systems face a choice: take advantage of dead-simple reads with snapshot isolation in application code, or shove business logic into the serial transactions for foolproof consistency.
The first option is good enough for many applications – until it bites you back and you end up charging your customers doubled fees. The second option is as safe as it gets – until you hit a scale of millions of customers and the transactor cannot keep up.
In this talk, you will learn a few techniques we use in production to navigate this tradeoff and ensure consistency between the snapshot and the transactional levels.