TL;DR: Postgres is great until analytical queries start timing out. This session with Jacob Matson (MotherDuck) and Paul Dudley (Streamkap) covers when Postgres change data capture (CDC) is worth it, what tends to break (WAL logs, replication slots, schema changes), and a live Postgres-to-MotherDuck pipeline built with Streamkap.
When you actually need Postgres CDC
Use Postgres for as long as it works. As you scale, analytical queries that scan many rows start to strain a row-based transactional database, and you hit performance and cost problems. That's when it makes sense to offload analytics to a column-oriented engine like MotherDuck, with CDC keeping it in sync in near real time. The what OLAP is and columnar storage guides explain why that workload wants a different database.
What log-based CDC is
Log-based CDC reads a database's change log—every insert, update, and delete—and replays those events into another database. The log already exists, so CDC adds almost no extra load on the source. It also catches deletes that a nightly snapshot would miss.
What breaks, and how to avoid it
The write-ahead log (WAL) is where most of the pain comes from. When you create a replication slot, Postgres holds WAL data until the consumer confirms it's been read. If the connection drops or a slot has low traffic, that WAL keeps growing until it fills your storage and takes down production. Paul's advice: monitor the slot, keep at least three days of WAL headroom, and use heartbeats—artificial traffic that keeps low-traffic slots advancing.
The live demo
Paul streams a Postgres payments table into MotherDuck with Streamkap, kicked off through the Streamkap and MotherDuck MCP servers with Claude. He then builds real-time MotherDuck queries on the streaming data—a payments dashboard and a failure-rate investigation—to show what you can do once the data lands.



