Intro to Datomic
Brisbane NoSQL
Oct 2014
@lachlanroche
Slide 2
Slide 2 text
Architecture
• Peer library
• Transactor
• Storage service
Slide 3
Slide 3 text
Peer library
• Query engine runs in your application
• Data access via Storage Service
• Submits changes to and accepts updates from
Transactor
• API for Clojure and JVM languages
• REST peers (alpha)
Slide 4
Slide 4 text
Transactor
• Transactor is a process
• Single Transactor in a system
• Processes transactions
• Serialized transaction processing
• ACID
Slide 5
Slide 5 text
Storage service
• Stores immutable values
• Dynamo DB, Riak, Cassandra, Couchbase,
Infinispan, SQL
• Memcached support
Slide 6
Slide 6 text
Data model
• Immutable data - facts don’t change
• Atomic data - the datom
• Minimal schema
• Database is a set of datoms, indexed in various
ways
• Database as a value
Slide 7
Slide 7 text
Datom
• {entity, attribute, value, transaction}
• Attribute definition is the only schema
• Attributes have type, name, cardinality
Slide 8
Slide 8 text
Time
• Time is built in
• Transactions are ordered
• Transactions are first class entities
• Can open database at as-at a point in time,
including now, or since a point in time, or for a
window in time
Slide 9
Slide 9 text
Querying
• Datalog
• Implicit joins
• Queries can include arbitrary functions from your
application
• Queries can run on db, or application data, or a
mix