Bitemporality is a technique for modeling time in databases and data structures such that…
- The state at any point in history can be recovered
- Alternative timelines can be forked
It’s basically time travel! Some Merkle-DAGs, if structured properly, can have this property
Datalog
We can make Datalog fact stores bitemporal if we represent Datalog facts as 4-tuples: (entity, attribute, value, causality)
Time travel and conflict resolution mean recomputing views from arbitrary points. How do we avoid starting from the beginning? This is where incremental view maintenance comes in