HomeComputer ScienceZero-Downtime Data Migration: Backfill Race Diagram

Zero-Downtime Data Migration: Backfill Race Diagram

Interactive 2D expand-contract database migration diagram: watch dual-writes and a live backfill worker move 160 records between an old store grid and a new store grid, tune the read-to-commit race window directly, and compare an optimistic CAS strategy against a naive blind-overwrite strategy that silently loses data — with a live lag/conflict history chart.

Computer Science2DModerate60 FPS📱 Mobile-adapted⇄ 3D version
2d-mobile-app-migration-strategies ↗ Open standalone

Mobile and web backends rarely migrate a database in one atomic step — instead they run the “expand–contract” pattern: add the new store, dual-write to both, backfill the history, verify, then cut over. This 2D diagram renders 160 live records as two grids of cells — an old store and a new one — and runs a real backfill worker between them while simulated traffic keeps writing, with copies drawn as arcing dots between the grids. Switch between an optimistic compare-and-swap backfill strategy, which self-heals by retrying any record a write raced against, and a naive blind-overwrite strategy, which silently loses the newer value and flashes a real conflict. Tune the write rate, backfill rate and the exact read-to-commit race window to open or close the race, and watch the live lag/retry/conflict history chart respond underneath the grid. Drag the grid to pan and scroll to zoom.

⚙ Under the hood

Interactive 2D expand-contract database migration diagram: watch dual-writes and a live backfill worker move 160 records between an old store grid and a new store grid, tune the read-to-commit race window directly, and compare an optimistic CAS strategy against a naive blind-overwrite strategy that silently loses data — with a live lag/conflict history chart.

database migrationexpand-contractdual-writebackfilldistributed systemsconsistencyrace condition

2D · HTML5 Canvas 2D · 60 FPS target · runs fully client-side, no install

What did you find?

Add reproduction steps (optional)