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.
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.
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.
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.
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.
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.
August 30, 2026
Compaction in Streambed
Streambed is getting more mature. Big data has a small problem or more precisely small file problem.
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.
April 12, 2026