<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>iceberg on Mooncake</title>
    <link>https://mooncake.pgsty.com/tags/iceberg/</link>
    <description>Recent content in iceberg on Mooncake</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Thu, 05 Nov 2026 19:17:16 +0800</lastBuildDate>
    
    
      <atom:link href="https://mooncake.pgsty.com/tags/iceberg/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>pg_mooncake 0.3.0: First PGSTY Release with DuckDB 2.0, pgrx 0.19.3, and PostgreSQL 14–18 Support</title>
        <link>https://mooncake.pgsty.com/blog/release/pg-mooncake-0.3.0/</link>
        <pubDate>Thu, 05 Nov 2026 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/release/pg-mooncake-0.3.0/</guid>
        <description>&lt;p&gt;&lt;strong&gt;&lt;code&gt;pg_mooncake 0.3.0&lt;/code&gt;&lt;/strong&gt; — released alongside &lt;strong&gt;&lt;code&gt;duckdb_mooncake v0.0.2&lt;/code&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;moonlink v0.0.1&lt;/code&gt;&lt;/strong&gt; — is the first release of the Mooncake real-time analytics suite maintained by &lt;a href=&#34;https://github.com/pgsty&#34;&gt;&lt;strong&gt;PGSTY&lt;/strong&gt;&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/pgsty/pg_mooncake/releases/tag/v0.3.0&#34;&gt;&lt;code&gt;pgsty/pg_mooncake v0.3.0&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;MIT&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/pgsty/duckdb_mooncake/releases/tag/v0.0.2&#34;&gt;&lt;code&gt;pgsty/duckdb_mooncake v0.0.2&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;MIT&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/pgsty/moonlink/releases/tag/v0.0.1&#34;&gt;&lt;code&gt;pgsty/moonlink v0.0.1&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt; (&lt;code&gt;BSL-1.1&lt;/code&gt; with &lt;code&gt;PG_MOONCAKE LINKING &amp;amp; DISTRIBUTION EXCEPTION&lt;/code&gt;, client crates &lt;code&gt;MIT&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Binary RPM and DEB packages for &lt;strong&gt;PostgreSQL 14, 15, 16, 17, and 18&lt;/strong&gt; across &lt;strong&gt;RHEL / Rocky / AlmaLinux 8, 9, 10&lt;/strong&gt; and &lt;strong&gt;Debian 12/13, Ubuntu 22.04/24.04&lt;/strong&gt; (&lt;code&gt;x86_64&lt;/code&gt; and &lt;code&gt;aarch64&lt;/code&gt;) are available through the &lt;a href=&#34;https://mooncake.pgsty.com/download/&#34;&gt;PGEXT repository&lt;/a&gt; and &lt;a href=&#34;https://pigsty.io/ext/e/pg_mooncake&#34;&gt;Pigsty&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Mooncake: a real-time storage engine for Apache Iceberg</title>
        <link>https://mooncake.pgsty.com/blog/post/white-paper/</link>
        <pubDate>Mon, 11 Aug 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/white-paper/</guid>
        <description>&lt;p&gt;This technical overview assumes familiarity with &lt;a href=&#34;https://iceberg.apache.org/&#34;&gt;Apache Iceberg&lt;/a&gt;, an open table format for analytical datasets. Iceberg is part of the general &amp;ldquo;Lakehouse&amp;rdquo; movement, where users:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Store large datasets using open file formats (Parquet + Metadata) in Object Storage&lt;/li&gt;&#xA;&lt;li&gt;Query them directly by engines like Spark, Trino, Flink, and DuckDB using SQL&lt;/li&gt;&#xA;&lt;li&gt;Get the benefits of &amp;lsquo;database features&amp;rsquo; like schema evolution &amp;amp; time-travel&lt;/li&gt;&#xA;&lt;li&gt;Scale practically infinitely, and aren&amp;rsquo;t locked into a vendor&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Iceberg was built for slow-changing data + batch analytics &amp;amp; processing. That world is pretty clear and only improving with engines getting better at reading open formats.&lt;/p&gt;</description>
      </item>
    <item>
        <title>No, Iceberg won’t fix your data stack.</title>
        <link>https://mooncake.pgsty.com/blog/post/iceberg-is-terrible/</link>
        <pubDate>Mon, 21 Jul 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/iceberg-is-terrible/</guid>
        <description>&lt;p&gt;Life is expectations vs reality. Here is one for Apache &lt;a href=&#34;https://iceberg.apache.org/&#34;&gt;Iceberg&lt;/a&gt; – a favorite amongst the data community.&lt;/p&gt;&#xA;&lt;h2 id=&#34;expectations-iceberg-is-the-solution-to-all-my-data-pains&#34;&gt;Expectations: Iceberg is the solution to all my data pains&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;See, the core of Iceberg is pretty neat:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Keep all data in object storage in open file formats like Parquet.&lt;/li&gt;&#xA;&lt;li&gt;Fool any execution engine (DuckDB, ClickHouse, Spark, Snowflake, etc.) into thinking these files are a table and query them with SQL directly.&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;[Ongoing progress]&lt;/em&gt; Get exceptional performance on these tables, without having to load data into a system-specific format.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;And with clever design you get:&lt;/p&gt;</description>
      </item>
    <item>
        <title>but, my Postgres (&#43; lakehouse) is free</title>
        <link>https://mooncake.pgsty.com/blog/post/postgres-lakehouse-free/</link>
        <pubDate>Fri, 13 Jun 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/postgres-lakehouse-free/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; Your Postgres and Lakehouse are free and open too. You don&amp;rsquo;t need to be (or spend like) a giant to use them.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-postgres--lakehouse&#34;&gt;Why Postgres + Lakehouse?&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;reason-1-if-you-believe-in-ai-this-is-the-agent-stack&#34;&gt;Reason #1: If you believe in AI, this is the agent stack&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Agents need memory. Both working memory and longer-term knowledge.&lt;/p&gt;&#xA;&lt;p&gt;Working memory has to be instant, reliable, and accurate, just like app state. What&amp;rsquo;s the best place to store it? Postgres. That&amp;rsquo;s true for both apps and agents. This state is typically tied to an individual user, tenant, or agent.&lt;/p&gt;</description>
      </item>
    <item>
        <title>pg_mooncake v0.2: what we&#39;re cooking</title>
        <link>https://mooncake.pgsty.com/blog/release/pgmooncake-v02discussion/</link>
        <pubDate>Tue, 11 Feb 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/release/pgmooncake-v02discussion/</guid>
        <description>&lt;p&gt;With v0.1, we proved that Postgres can deliver great analytics performance. Our approach combined two key pieces—DuckDB vectorized engine and a columnstore table—making &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt; the only extension in Postgres that integrates both.&lt;/p&gt;&#xA;&lt;p&gt;The results speak for themselves: &lt;code&gt;pg_mooncake&lt;/code&gt; ranks in &lt;a href=&#34;https://mooncake.pgsty.com/blog/post/clickbench-v0.1/&#34;&gt;ClickBench&amp;rsquo;s top 10&lt;/a&gt;, and we built the fastest Parquet-based engine along the way.&lt;/p&gt;&#xA;&lt;p&gt;Now, with v0.2, we&amp;rsquo;re tackling the next big challenge; we call it &lt;strong&gt;out-of-the-box analytics&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;first-why-in-postgres-analytics&#34;&gt;First, why in-Postgres analytics?&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Applications often have their first analytics needs far before they have their first data warehouse or analytics system.&lt;/p&gt;</description>
      </item>
    <item>
        <title>wth are S3 tables</title>
        <link>https://mooncake.pgsty.com/blog/post/s3tables/</link>
        <pubDate>Sun, 12 Jan 2025 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/s3tables/</guid>
        <description>&lt;p&gt;Amazon announced &lt;a href=&#34;https://aws.amazon.com/s3/features/tables/&#34;&gt;table buckets&lt;/a&gt; during re:Invent last year. An S3 bucket that&amp;rsquo;s also a table? What does that mean?&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; S3 tables allow Iceberg tables to exist without a catalog. Let me explain.&lt;/p&gt;&#xA;&lt;h2 id=&#34;iceberg-vs-delta-lake&#34;&gt;Iceberg vs Delta Lake&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;What? I thought Iceberg and Delta are just table formats? Why are we comparing the way they&amp;rsquo;re implemented?&lt;/p&gt;&#xA;&lt;p&gt;A key difference between Iceberg and Delta Lake is &lt;em&gt;&amp;ldquo;Delta tables can exist without a catalog, but Iceberg cannot&amp;rdquo;&lt;/em&gt;, due to their metadata design:&lt;/p&gt;</description>
      </item>
    <item>
        <title>pg_mooncake: Fast Analytics in Postgres with Columnstore Tables and DuckDB</title>
        <link>https://mooncake.pgsty.com/blog/post/how-we-built-pgmooncake/</link>
        <pubDate>Wed, 06 Nov 2024 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/how-we-built-pgmooncake/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt; brings columnstore tables with DuckDB execution to Postgres for fast analytics.&lt;/p&gt;&#xA;&lt;p&gt;It supports transactional inserts, updates, and deletes, just like regular Postgres tables. Data is written with Delta Lake (and Apache Iceberg in v0.2+) table metadata, allowing it to be queried outside of Postgres.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-another-postgres-analytics-extension&#34;&gt;Why another Postgres analytics extension?&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Postgres is the most popular database these days, but it&amp;rsquo;s bad at analytics. Numerous attempts have been made to address this, but with limited success so far. Fast analytics require a distinct set of techniques, such as columnar storage, vectorized execution, and late materialization, etc. Early projects like Citus &amp;amp; Timescale added columnar storage, but there was no good vectorized execution to leverage the format.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Reflections from the Iceberg Meetup</title>
        <link>https://mooncake.pgsty.com/blog/post/iceberg-meetup/</link>
        <pubDate>Tue, 08 Oct 2024 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/iceberg-meetup/</guid>
        <description>&lt;p&gt;Last month, I spoke at the Iceberg meetup at Snowflake HQ. Public speaking has never been my favorite, and knowing Snowflake CEO Sridhar and Tabular CEO Ryan were in the audience did not help.&lt;/p&gt;&#xA;&lt;p&gt;It was day 18 of starting Mooncake Labs, and I spoke about a general indexing framework for Iceberg. You can find the details &lt;a href=&#34;https://docs.google.com/presentation/d/1dkCA-y-T5Iuwa8A-7cif6pIUe80kN4V_tLGA05Ks3Mo/edit?usp=sharing&#34;&gt;here&lt;/a&gt;. Here were some of my learnings:&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-great-products-are-a-reflection-of-its-community&#34;&gt;1. Great products are a reflection of its community.&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;I spent the last decade building a proprietary database. Every time a feature request came in, engineering and product leaders would spend hours prioritizing its impact. Almost every time, it boiled down to one question: How much ARR? I watched my best engineers spend months building awkward hooks and extensions that did not fit the bigger picture. I often thought, &lt;em&gt;Just ask the customer to make a PR :)&lt;/em&gt; The end product of this type of prioritization process tends to look like:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Things we learnt</title>
        <link>https://mooncake.pgsty.com/blog/post/things-we-learnt/</link>
        <pubDate>Sun, 08 Sep 2024 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/blog/post/things-we-learnt/</guid>
        <description>&lt;p&gt;The title should really be &amp;ldquo;Things we learnt, the hard way&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;As we start this new journey, we spent some time thinking about the axioms of data today. These are things we (or no one for that matter) can dispute.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-if-postgres-can-do-it-postgres-will-do-it&#34;&gt;1. If Postgres can do it, Postgres will do it&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;We&amp;rsquo;ve seen this one plenty of times now – it started with JSON, then moved to geo-spatial (&lt;code&gt;PostGIS&lt;/code&gt;), and now we&amp;rsquo;re seeing it with vector search (&lt;code&gt;pgvector&lt;/code&gt;).&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
