Earlier quoted context omitted.
> Immutable database? That doesn't make sense. If you can't mutate it, how do you write to it? How do you update records in it? You don't write to the database, you perform an operation that takes a database and a write request and returns a new database. Same with updates. Essentially, the kind of things you think of as "mutating" operations have a signature of, in Haskell-ish notation: db -> operation -> db
That's how every langauge with immutable data structures works. What makes this one special?
With datomic you are just adding a new fact. My address is now x. This has a lot of nice properties. I can now easily write a query to tell me your previous 5 addresses, rolling back is easy, you can get amazing and scalable read performance, etc etc
In the past we have either had to hand roll our own features (e.g. Have a table of past addresses, or add date columns to specific tables) or rely on error prone/brittle techniques like using audit tables, source control, or transaction logs.
Datomic makes it easy!