Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introducing Datomic

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Introducing Datomic

Presented at the Brisbane NoSQL group

Avatar for lachlanroche

lachlanroche

October 30, 2014
Tweet

More Decks by lachlanroche

Other Decks in Programming

Transcript

  1. 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)
  2. Transactor • Transactor is a process • Single Transactor in

    a system • Processes transactions • Serialized transaction processing • ACID
  3. Storage service • Stores immutable values • Dynamo DB, Riak,

    Cassandra, Couchbase, Infinispan, SQL • Memcached support
  4. 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
  5. Datom • {entity, attribute, value, transaction} • Attribute definition is

    the only schema • Attributes have type, name, cardinality
  6. 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
  7. Querying • Datalog • Implicit joins • Queries can include

    arbitrary functions from your application • Queries can run on db, or application data, or a mix