<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Duckdb on Viktor Gamov</title><link>https://gamov.io/tags/duckdb/</link><description>Recent content in Duckdb on Viktor Gamov</description><generator>Hugo</generator><language>en-us</language><copyright>2011–2026 Viktor Gamov</copyright><lastBuildDate>Wed, 08 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://gamov.io/tags/duckdb/index.xml" rel="self" type="application/rss+xml"/><item><title>Time Travel and Schema Evolution in the Streaming Lakehouse</title><link>https://gamov.io/posts/time-travel-schema-evolution/</link><pubDate>Wed, 08 Apr 2026 00:00:00 +0000</pubDate><guid>https://gamov.io/posts/time-travel-schema-evolution/</guid><description>&lt;h2 id="tldr" class="discrete"&gt;TLDR&lt;/h2&gt;
&lt;div class="ulist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Iceberg tracks every Flink checkpoint as an immutable snapshot.
That gives you time travel queries on a streaming pipeline for free, with about 30-second granularity.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can add columns to a live Iceberg table while Flink is writing to it.
Old rows get NULLs for the new columns, and the pipeline keeps running without rewriting data or taking downtime.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DuckDB reads the same Iceberg tables without Trino running.
Three different query engines can hit the same data without copying anything.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description></item></channel></rss>