aboutsummaryrefslogblamecommitdiffstats
path: root/docs/temporal-queries.puml
blob: 7d72ed5cd101fc30b2ac2ee995503d7583196b69 (plain) (tree)




























































                                                          
@startuml temporal-queries
!theme plain
title Temporal Queries with Immutable Database States

database "DB @ t0" as DB0
note bottom of DB0
  hash = abc123...
  timestamp = 2024-01-01 10:00

  relations:
    employee => hash_e0
end note

database "DB @ t1" as DB1
note bottom of DB1
  hash = def456...
  timestamp = 2024-01-01 11:00

  relations:
    employee => hash_e1
end note

database "DB @ t2" as DB2
note bottom of DB2
  hash = ghi789...
  timestamp = 2024-01-01 12:00

  relations:
    employee => hash_e2
end note

database "Current DB" as DB3
note bottom of DB3
  hash = jkl012...
  timestamp = 2024-01-01 13:00

  relations:
    employee => hash_e3
end note

DB0 -right-> DB1: insert tuple
DB1 -right-> DB2: update salary
DB2 -right-> DB3: delete tuple

note top of DB0
  **Time Travel Queries:**

  query_at_time(2024-01-01 10:00)
    → returns DB0

  query_at_time(2024-01-01 12:00)
    → returns DB2

  diff(DB0, DB3)
    → (inserted: [...], deleted: [...], modified: [...])

  history(employee, id: 1)
    → [(t0, state0), (t1, state1), (t2, state2)]
end note

@enduml