Skip to content

Blog

Deep dives into building Streambed — the challenges, design decisions, and lessons learned building a Postgres-to-Iceberg CDC engine.

Stream Postgres changes from a replica

Streambed can now read Postgres changes from a hot-standby replica instead of connecting directly to the primary. Postgres usually has one writable primary. Every application write already passes through that node, so it is the last place you want to add avoidable CPU, I/O, and WAL-decoding work.

Read more →

September 27, 2026

Logical Replication Is Postgres's Most Important Feature

Logical replication might be one of the most important features in Postgres. But not because it gives you another copy of your database. Because it gives you a way out.

Read more →

September 26, 2026

Parquet is to file formats what Postgres is to databases

The more I work with modern data infrastructure, the more I believe this: Parquet is to file formats what Postgres is to databases.

Read more →

September 25, 2026

Why time travel and branching are first-class lakehouse operations

Time travel sounds like an advanced database feature. In an immutable-file system, it is closer to following an old pointer. A lakehouse normally publishes changes by writing new data files and new metadata rather than modifying already-published files in place. If the old metadata and files are retained, the previous table state is still addressable. Give that state an ID and a query syntax, and you have time travel. Give it a name and allow new commits from it, and you have a branch. None of this makes history free. It makes history explicit.

Read more →

September 25, 2026

Time travel for Postgres: What did this table look like at noon?

Streambed now supports time travel queries over your replicated Postgres data. Pick a timestamp, add an AT clause to the table, and query a retained lakehouse snapshot through the same Postgres-compatible query server. Time travel works with both DuckLake and Iceberg targets, including joins across historical tables.

Read more →

September 24, 2026

The small-file problem gets worse with CDC

Why Streambed is adopting DuckLake for Postgres-to-DuckDB analytics. The small-file problem is well known in the lakehouse world, but it gets worse for CDC workloads. Every flush to a lakehouse table has a cost. It creates more files, more metadata, and more commit work. Updates and deletes make it worse, especially with copy-on-write. Streambed started with Iceberg as the target format. Iceberg is mature, widely supported, and a good choice when you want an open table format across many engines. But Streambed has a narrower path: Postgres WAL → Streambed → DuckDB query server So the question became simpler: If DuckDB is already the query engine, is Iceberg still the best default target for small, repeated CDC flushes? We started testing DuckLake to answer that.

Read more →

August 30, 2026

Compaction in Streambed

Streambed is getting more mature. Big data has a small problem or more precisely small file problem.

Read more →

August 9, 2026

Why I Built Streambed

Every Postgres database eventually hits the same wall: analytical queries that are too slow for production but too important to ignore.

Read more →

April 12, 2026