Tempo

Click anywhere to begin

Tiger Data

Postgres, built for time.

Tiger Data (formerly Timescale) is PostgreSQL in the cloud, extended with TimescaleDB for time-series data: rows stamped with a time that never stop arriving. A new electricity price every half hour is exactly that shape.

Hypertables

Tables split into chunks by time, so “give me last week” stays fast.

Continuous aggregates

Summary tables that update themselves as new data arrives.

Compression

Squeezes old data to about a tenth of its size.

Forks

A full, writable copy of the whole database, made instantly.

In Tempo

How Tempo uses Tiger Data

01

Tempo's only database

  • grid_raw: two years of Elexon market data, plus every new half-hour
  • forecasts and decisions: 48 rows every half hour
  • Audit results, replay scratch data and the honesty table
Elexon APIDecision engineTiming auditTigerDatagrid_rawforecastsdecisionsauditsbattery_statebacktest_results

02

Hypertables

  • The market data and the decisions log are hypertables
  • A query for last week reads only last week's chunk
  • Every row records when it became available, so no decision sees the future
grid_raw · hypertableWHERE time > now() − 7 daysw−5w−4w−3w−2w−1this weektimeolder chunks are skipped

03

Continuous aggregates

  • Half-hourly, daily and weekly prices, each built on the level below
  • They feed the model's features and the dashboard charts
  • They update themselves as new prices land
grid_rawraw rowsprices_hhper half-hourevery 5 minprices_dailyper UK dayevery 30 minprices_weeklyper UK weekevery hourModel featuresDashboard charts

04

Compression

  • Two years of data would be about 1.2 GB
  • The free tier caps storage at 750 MB
  • Compressed, it fits in roughly 120–250 MB
Raw1.2 GBCompressed≈120–250 MB750 MB free-tier capabout a tenth of the size

05

Forks power the timing audit

  • Click a decision and Tiger forks the live database in about 40 seconds
  • Copy-on-write: only the blocks the replays change are copied
  • Five replays write into one shared fork, never into live
  • The free tier holds only live plus one fork, so our plan of one fork per timeline became one shared fork, identical to the penny
  • The fork is deleted afterwards; only the results are kept
shared blocks, stored oncePrimary (live)block 1block 2block 3block 4Forkready in ~40 sblock 3′only changed blocks are copied
PLANNED · ONE FORK PER TIMELINEPrimaryFork 1Fork 2Fork 3Fork 4Fork 5403 · free service limitNOW · ONE SHARED FORKPrimaryuntouchedFork · 5 timelines in parallel−2−10+1+2