11. Benefits
• Separating reads and writes
• applications only read from storage
• transactor
• handles transactions
• provides consistency
• reflects changes to peers
12. Benefits
• Integrated data distribution
• built-in in-memory caches
• self-tunes to working set
• automatic
13. Benefits
• Peers each have a query engine
• Datalog
• simple rules and data patterns
• declarative: implicit joins
• declarative: meaning is evident
• locality: datomic db and app data
16. Data model
• Immutable data
• remember everything
• things don’t actually “change”
• audit everything
• automatic
17. Data model
• Facts-oriented (vs. PLOP)
• Atomic Data
• datoms
• entity, attribute, value, transaction
• Not embedded into strucures
18. Data model
• Minimal Schema
• at the datom level
• directly supports cardinality
• avoid rigidity
• even other “schema-free” documents
impose their structure into apps
• Hickey:“nothing pivots like a datom”
19. Programming model
• Peer embedded in your application
• Pulls indexes or data segments as needed
• Caches locally, gets updates from transactor
20. Programming model
• No strings-based query language
• Data-structure-driven
• Lists and maps
• Easy to generate and test
21. Programming model
• Transactional
• Totally ordered
• First class: peers get a queue of all transactions
• Can use them in queries
• Facilitates event-driven triggers without polling
• Annotated transactions
22. Programming model
• Datalog
• deductive query system
• facts = datomic db
• can also include other app data
• extensible through custom functions that
queries can use
23. Programming model
• Consistent
• without impeding other threads or peers
• reads/queries without transactions
• through immutability
• db as a value
27. The so-what
• Local query power
• each peer has full query engine
• the db is effectively local
• isolation from others:
• e.g. - analytics usage won’t bog down
transaction processing
28. The so-what
• Multiple storage choices
• in-memory for developing, unit-testing
• RDBMS backend possible (behind firewall,
etc)
• Distributed storage services for
redundancy and unlimited read scaling
• backup/restore tools available
29. The so-what
• Integrated mem-cache support
• local caches can be backed by OTS mem-
cache cluster
• datomic is a “good citizen” user
38. demonic
• datomic helper
• work at the data-structure level
• supports graphs: nested maps
• only writes dirty data
• “demarcations” as “batched datomic
transactions”
• unit-testing support