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
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