Datomic




                 JP Erkelens
                 @jperkelens
 Http://github.com/jperkelens
Disclaimer!!
Nearly everything that follows is cribbed from the
 datomic website: www.datomic.com
Rationale

    Database design conventions were created
    when memory and disk space was limited and
    expensive

    Place-oriented programming

    Records should not be erased when new ones
    are made
Classic DB Architecture
Datomic Architecture
Peers

    Library embedded in app

    Submits transactions to transactor

    Handles query/caching/data access
Transactors

    Process transactions serially

    Transmit changes

    Index in background
Consequences

    Reads never lock out writes

    Each peer has own cache

    Higher memory footprint/quicker responses
Data Model


    Data is immutable
    
        How? Time.

    Datom
    
        Consists of entity/attr/value/transaction
    
        We don't update records or documents
    
        We add/remove datoms

    Minimal Schema
Programming Model - Queries

    The Peer pulls data from storage as needed
    and caches

    It receives updates from the transactor

    Queries run from a merged view of the two

    After a while minimal network activity is needed

    No strings! (Maps and vectors)

    Query language – Datalog.

    Implicit joins
Programming Model – Time


    Apps always work on a consistent snapshot of
    the database

    Queries are applied to values of the database
    in time, or windows
DEEEEEMMMOOOO!!!
Additional Resources
  
      Www.datomic.com
  
      Http://github.com/limadelic/datomic
  
      https://github.com/gns24/pydatomic

Datomic

  • 1.
    Datomic JP Erkelens @jperkelens Http://github.com/jperkelens
  • 2.
    Disclaimer!! Nearly everything thatfollows is cribbed from the datomic website: www.datomic.com
  • 3.
    Rationale  Database design conventions were created when memory and disk space was limited and expensive  Place-oriented programming  Records should not be erased when new ones are made
  • 4.
  • 5.
  • 6.
    Peers  Library embedded in app  Submits transactions to transactor  Handles query/caching/data access
  • 7.
    Transactors  Process transactions serially  Transmit changes  Index in background
  • 8.
    Consequences  Reads never lock out writes  Each peer has own cache  Higher memory footprint/quicker responses
  • 9.
    Data Model  Data is immutable  How? Time.  Datom  Consists of entity/attr/value/transaction  We don't update records or documents  We add/remove datoms  Minimal Schema
  • 10.
    Programming Model -Queries  The Peer pulls data from storage as needed and caches  It receives updates from the transactor  Queries run from a merged view of the two  After a while minimal network activity is needed  No strings! (Maps and vectors)  Query language – Datalog.  Implicit joins
  • 11.
    Programming Model –Time  Apps always work on a consistent snapshot of the database  Queries are applied to values of the database in time, or windows
  • 12.
    DEEEEEMMMOOOO!!! Additional Resources  Www.datomic.com  Http://github.com/limadelic/datomic  https://github.com/gns24/pydatomic