strong consistency + horizontal read scalability. Writes are not update-in-place; all data is retained by default. Makes time part of the database itself.
can query the db as-of any given point in time. Since it treats the db as a value, and uses the same persistent data structures as Clojure itself, we can also query the future, by joining arbitrary data to a given db value.
n d ? t i t l e : w h e r e [ ? e : m o v i e / y e a r 1 9 8 7 ] [ ? e : m o v i e / t i t l e ? t i t l e ] ] ) Datomic's datalog queries are just vectors, which means they can be passed around like any other of Clojure's persistent data structures... even from the browser to the server.