I haven't used Datomic at all myself, though I was at this event and I found it very appealing.<p>The issue of having an easy audit trail is absolutely <i>critical</i> for many businesses, and is ill-served by most existing databases.<p>This is one thing I liked about CouchDB - CouchDB does not enforce this strictly, the way Datomic does, but the model encourages "append to edit" rather than strict modification. I haven't had the time yet, but I'm excited to check out Datomic specifically for this reason.
From watching the screencasts that Hickey produces for Clojure - he talks about working on a 'Real Time Broadcasting System' (National Election data streaming). It sounds like he spent lots of time thinking about how to guarantee what a real-time system would do when reporting on snapshots data as it was streaming through. The ideas in Clojure and Datomic seem to be the result of that thinking process. (ie in Datomic you have the ability to go back and see what the state of the system was at that point in time. In Datomic the agent model gives you the ability to see the state of a value in the middle of an STM transaction.)
I think this might be good time to mention HiBase and Shades projects and related research for data structures and functional programming environments.<p><a href="http://www.cs.hut.fi/~siva/hibase/" rel="nofollow">http://www.cs.hut.fi/~siva/hibase/</a><p>HiBase was project funded by Nokia. The Goal was to develop a persistent functional programming environment with for telecom environments.<p>The reason why it was functional was the observation that in functional programming environment you can model data as graph where references point only backwards in time. In other words, if you just constantly write your data into the database and have smart GC, you can recover very fast from crashes. Just like telecom environment likes it.<p>The project was canceled, some say for reasons to do with internal company politics, but it showed huge promise. It was already 10X faster than competing commercial databases that were tweaked by their developers to perform well in testing.
Happily using Datomic at work, released a Datomic migration library based on that work recently. (<a href="https://github.com/bitemyapp/brambling/" rel="nofollow">https://github.com/bitemyapp/brambling/</a>)<p>If you have any questions about pros/cons, what it's like to use, operational constraints/tradeoffs, please ask.