Fetching from the wire…
Public story · 2026-07-27 · high
Samokhvalov built it as a hand-drawn model, not a real Postgres emulator, and it hit 888 points on Hacker News.
Why now: PGSimCity had reached 888 points on Hacker News as of July 27.
Nikolay Samokhvalov built PGSimCity, a walkable 3D model of Postgres internals, and it hit 888 points on Hacker News. It's aimed at engineers who run Postgres without ever operating a database. They're the ones who get paged when a checkpoint spikes latency, with no idea why.
The city's central plaza is shared_buffers: 1,024 individual page frames laid out as plots. Each plot's height tracks its clock-sweep usage count, its color shows the buffer's true state. Walk east and you hit an amber district, the WAL.
Below the plaza sits a pit, the data directory, where heap files visibly grow as you bloat them. A standby server sits south of the city, replaying whatever the primary sends. Always a step behind.
None of it runs real Postgres code, and Samokhvalov says so directly. It's a hand-written model, not an emulator. That's a real limit: nothing here proves the numbers match what happens under production load.
I like that he's upfront about it. My take: this will teach checkpoint latency and buffer eviction faster than the official docs ever have. It shows a heap file actually swell instead of describing a page write. If it ends up bookmarked in onboarding docs at a company running Postgres at scale, that bet pays off.
Each link below shares sources, entities, or timing with this story.
Shared entities / Earlier coverage
Both cover Built, Postgres; earlier Built coverage from 2026-07-23.
Shared entity: Postgres / Earlier coverage / Tension / Downstream implication
Both cover Postgres; earlier Postgres coverage from 2026-07-22; pushes against this story (against).
Shared entity: Built / Earlier coverage / Tension
Both cover Built; earlier Built coverage from 2026-07-15; pushes against this story (but).
Both cover Built; earlier Built coverage from 2026-06-18; pushes against this story (but).
Both cover Built; earlier Built coverage from 2026-04-16; pushes against this story (vs).
Both cover Built; earlier Built coverage from 2026-03-17; pushes against this story (vs).
Both cover Built; earlier Built coverage from 2026-03-16; pushes against this story (vs).
Both cover Built; earlier Built coverage from 2026-03-08; pushes against this story (vs).