MotherDuck · Practitioner Series
Postgres is full.
When the database that ships your product can't answer questions about it.
Free PDF · 24 pages · A field guide to graduating Postgres for analytics.

Seven signs you've outgrown Postgres for analytics
If this is your week, you've already hit the wall.
These don't show up one at a time. They arrive in sequence, and they all trace back to the same root cause: a row store doing a column store's job.
01Aggregates take minutes, not secondsSUM, COUNT, and GROUP BY force a row store to read every row for every column. A bigger instance buys you months. Indexes buy you nothing.
02The dashboard tab is your #1 complaintSupport tickets mention it. Renewals mention it. The PM has had it on the roadmap three quarters running. It's a revenue problem now.
03Your “analytics replica” is still slowA read replica separates reads from writes, not OLAP from OLTP. Same storage, same planner. The slow queries are just slow on another machine.
04Materialized views are stale or expensiveFast reads until the answer is wrong. Then refresh becomes the bottleneck, and you're running a mini-ETL inside your transactional database.
05Statement timeouts on customer pagesPostgres takes 90 seconds, the API gateway times out at 60, the customer gets a 500 and files a ticket. The bug is in your product now.
06Analytical indexes tax every writeAn index you added for the weekly report is a cost every INSERT pays. They pile up. The bill is invisible until something else slows down.
07ETL is pg_dump piped to psqlOne script. One author, who left in 2023. It runs at 3 AM and mostly works. Nobody wants to touch it.
The fix · chapter 5
You don't have to leave Postgres.
Postgres stays the system of record. The OLAP path moves to a columnar engine built for it, reached over the Postgres wire protocol. Your app never notices the difference. Your dashboards will.
SYSTEM OF RECORD · OLTPPostgresYour app keeps writing and reading hot data here. Nothing changes on the application side.unchanged
scheduled
sync→pg scanner
sync→pg scanner
COLUMNAR ENGINE · OLAPMotherDuckReads one column across millions of rows, not every row. Serverless, so idle costs nothing.483× faster
postgres
wire protocol→same driver
wire protocol→same driver
THE READ PATHYour dashboardsInternal reports and customer-facing analytics. Same SQL, same driver. One config value points the connection at MotherDuck.~200ms
What's inside · 7 chapters
The whole re-route, start to finish. Ship it this week.
01
The growth curveWhy the wall is sudden: the patches stack, then stop working all at once.
02
OLTP vs OLAPRow vs columnar storage, and why no index will ever save an analytical scan.
03
Seven signs you've outgrown itThe symptoms in the wild, ranked by how often they come up in real teams.
04
The patches that don't scaleReplicas, mat views, bigger boxes, Citus, and the ceiling each one hides.
05
What graduating looks likeTwo orthogonal choices: how the data moves, and where the engine lives.
06
The walkthroughA multi-shop e-commerce analytics setup on Next.js + Vercel, end to end.
07
Operating it on day 2Schema drift, cost, security, and observability for a real setup, even a small one.
INCLUDED IN THE GUIDE
A real, runnable reference project, not a brochure.
The walkthrough ships with a full repo (Next.js on Vercel plus managed Postgres, a scheduled MotherDuck Flight, an embedded Dive) so you can clone it and reproduce the 483× benchmark yourself.
From the teams we talked to — real, anonymized
You're not the only one quietly absorbing this.
“Snowflake's too expensive, Postgres is just like not quite enough for where we need to go.
founder · 40-person company
“You've made all these retool dashboards, all these analytics things, all these crazy mat-view cycles that are doing a ton of work on Postgres and just constantly throttling it.
engineer · 30-person AI company
“It can take minutes, maybe up to 10 minutes sometimes… we try to aggregate a lot of data in Postgres, and the latency spike, so…
engineer · SaaS company
Keep Postgres. Move the analytics.
The complete field guide, the runnable repo, and a benchmark you can reproduce.
Get the guide
Thanks! Redirecting you—One sec
