~/talk

Real-World Datomic: An Experience Report

Talkat Strange Loop 2013 · 2013-09-18..09-20· [databases]
links:none on file
slides:none on file

Experience report on using Datomic to index 250 million event datums stored on DynamoDB and served with a transactor that assigns t values and partitioned entity ids. The concrete surprises: queries over EAVT/AEVT/VAET alone miss a 100 ms SLA, so the system builds in-memory summaries by scanning indexes with seek-datums and fabricating start ids with ntid, partitioning by event type, and caching day-by-day counts. The lesson is which indexes, cardinalities, and ref reverse indexes actually make or break real performance.

AI-written summary · about

  1. 0:00Intro
  2. 1:43The Problem • Provide a summary of sales funnel events for Room Key • Users move through the website impression - hotel details - lead - booking . Want per-day event counts by hotel & event type
  3. 3:55Datomic's Architecture
  4. 5:53Datomic's Data Model
  5. 10:23Capturing Events - Schema Type Qualifiers
  6. 13:40Capturing Events - Example
  7. 15:50Capturing Events - Refs
  8. 16:49Storing and Retrieving Data in Datomic • One or more EAV tuples submitted to the transactor All are given the same value . Datoms written transactionally to the log . All datoms also stored redundantly in the indexes
  9. 21:53EAVT and AEVT
  10. 23:59Capturing Events - EAVT
  11. 25:09AVET and VAET
  12. 26:59Index Storage and Retrieval . Datoms are stored in compressed chunks called segments • Segments are stored as a tree • Segments are immutable once written • Each transaction conceptually creates a new root
  13. 28:49Indexing - Append
  14. 32:29Anatomy of an Entity ID
  15. 34:55A Change In Approach
  16. 37:32The Code
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.