<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Welcome to pg_mooncake on Mooncake</title>
    <link>https://mooncake.pgsty.com/docs/intro/</link>
    <description>Recent content in Welcome to pg_mooncake 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/docs/intro/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Architecture</title>
        <link>https://mooncake.pgsty.com/docs/intro/architecture/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/intro/architecture/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg_mooncake&lt;/code&gt; (&lt;code&gt;v0.3.0&lt;/code&gt;) combines three specialized components inside a single PostgreSQL deployment:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/duckdb/pg_duckdb&#34;&gt;&lt;code&gt;pg_duckdb&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v1.2.0&lt;/code&gt;)&lt;/strong&gt;: Embeds the &lt;strong&gt;DuckDB &lt;code&gt;v2.0.0&lt;/code&gt;&lt;/strong&gt; vectorized analytical execution engine inside PostgreSQL and routes queries against non-heap table access methods.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.0.1&lt;/code&gt;)&lt;/strong&gt;: A Rust library and background worker embedded inside &lt;code&gt;pg_mooncake&lt;/code&gt; that ingests PostgreSQL logical replication streams, maintains an in-memory &lt;strong&gt;Apache Arrow&lt;/strong&gt; write buffer and &lt;strong&gt;Roaring Bitmap&lt;/strong&gt; deletion vectors, flushes &lt;strong&gt;Parquet&lt;/strong&gt; files, and emits &lt;strong&gt;Apache Iceberg v2&lt;/strong&gt; table metadata.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/duckdb-mooncake/&#34;&gt;&lt;code&gt;duckdb_mooncake&lt;/code&gt;&lt;/a&gt; (&lt;code&gt;v0.0.2&lt;/code&gt;)&lt;/strong&gt;: A DuckDB 2.0 C++/Rust storage extension loaded automatically by &lt;code&gt;pg_mooncake&lt;/code&gt; from a local extension repository (&lt;code&gt;mooncake.extension_repository&lt;/code&gt;). It connects to Moonlink over a local Unix domain socket RPC (&lt;code&gt;pg_mooncake/moonlink.sock&lt;/code&gt;) to read consistent snapshots across both flushed Parquet files and buffered Arrow batches.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Together, they expose a native PostgreSQL Table Access Method (&lt;code&gt;USING mooncake&lt;/code&gt;) managed through &lt;code&gt;CALL mooncake.create_table(dst, src)&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Moonlink Ingestion Engine</title>
        <link>https://mooncake.pgsty.com/docs/intro/moonlink/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/intro/moonlink/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Moonlink&lt;/strong&gt; (&lt;a href=&#34;https://github.com/pgsty/moonlink&#34;&gt;&lt;code&gt;pgsty/moonlink&lt;/code&gt;&lt;/a&gt;, current release &lt;strong&gt;&lt;code&gt;v0.0.1&lt;/code&gt;&lt;/strong&gt;) is a Rust library and standalone service designed to write and maintain real-time &lt;strong&gt;Apache Iceberg v2&lt;/strong&gt; and &lt;strong&gt;Delta Lake&lt;/strong&gt; tables for operational systems and event streams without Apache Spark or Kafka.&lt;/p&gt;&#xA;&lt;p&gt;Inside &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt;, Moonlink runs as an embedded PostgreSQL background worker (&lt;code&gt;mooncake_bgworker&lt;/code&gt;) communicating over a local Unix domain socket (&lt;code&gt;$PGDATA/pg_mooncake/moonlink.sock&lt;/code&gt;). It can also be compiled and deployed as a standalone HTTP REST and gRPC ingestion server (&lt;code&gt;moonlink_service&lt;/code&gt;).&lt;/p&gt;</description>
      </item>
    <item>
        <title>duckdb_mooncake &amp; DuckDB 2.0 Integration</title>
        <link>https://mooncake.pgsty.com/docs/intro/duckdb-mooncake/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/intro/duckdb-mooncake/</guid>
        <description>&lt;p&gt;&lt;strong&gt;&lt;code&gt;duckdb_mooncake&lt;/code&gt;&lt;/strong&gt; (&lt;a href=&#34;https://github.com/pgsty/duckdb_mooncake&#34;&gt;&lt;code&gt;pgsty/duckdb_mooncake&lt;/code&gt;&lt;/a&gt;, current release &lt;strong&gt;&lt;code&gt;v0.0.2&lt;/code&gt;&lt;/strong&gt;, &lt;code&gt;MIT&lt;/code&gt; license) is a C++ and Rust FFI storage extension for &lt;strong&gt;DuckDB &lt;code&gt;v2.0.0&lt;/code&gt;&lt;/strong&gt;. It allows DuckDB (both standalone and embedded inside PostgreSQL via &lt;code&gt;pg_duckdb 1.2.0&lt;/code&gt;) to attach directly to a &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; metadata directory and execute vectorized scans over Moonlink tables.&lt;/p&gt;&#xA;&lt;h2 id=&#34;role&#34;&gt;Role Inside &lt;code&gt;pg_mooncake 0.3.0&lt;/code&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;When &lt;code&gt;pg_mooncake&lt;/code&gt; executes a query against a &lt;code&gt;USING mooncake&lt;/code&gt; table inside PostgreSQL, &lt;code&gt;pg_duckdb&lt;/code&gt; delegates the table scan to DuckDB. &lt;code&gt;pg_mooncake&lt;/code&gt; automatically initializes the DuckDB session by running:&lt;/p&gt;</description>
      </item>
    <item>
        <title>v0.1 vs v0.2 &amp; v0.3 Evolution</title>
        <link>https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://mooncake.pgsty.com/docs/intro/0.1-vs-0.2/</guid>
        <description>&lt;p&gt;&lt;code&gt;pg_mooncake&lt;/code&gt; has evolved through three major architectural milestones:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;v0.1&lt;/code&gt; (Legacy Delta Lake Engine)&lt;/strong&gt;: Introduced direct &lt;code&gt;CREATE TABLE ... USING columnstore&lt;/code&gt; tables backed by Delta Lake and DuckDB (&lt;code&gt;pg_duckdb&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;v0.2&lt;/code&gt; (Moonlink &amp;amp; Apache Iceberg Redesign)&lt;/strong&gt;: Replaced direct columnstore writes with a &lt;strong&gt;columnstore mirror&lt;/strong&gt; architecture (&lt;code&gt;CALL mooncake.create_table(dst, src)&lt;/code&gt; + &lt;code&gt;USING mooncake&lt;/code&gt;) powered by &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/moonlink/&#34;&gt;&lt;code&gt;moonlink&lt;/code&gt;&lt;/a&gt; logical replication, in-memory Arrow write buffers, Roaring deletion vectors, and Apache Iceberg v2 metadata.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;v0.3.0&lt;/code&gt; (PGSTY Maintained Release)&lt;/strong&gt;: Upgraded &lt;code&gt;pg_mooncake&lt;/code&gt; to &lt;code&gt;pgrx 0.19.3&lt;/code&gt; (PostgreSQL 14–18), ported &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/duckdb-mooncake/&#34;&gt;&lt;code&gt;duckdb_mooncake v0.0.2&lt;/code&gt;&lt;/a&gt; to &lt;code&gt;pg_duckdb 1.2.0&lt;/code&gt; and &lt;strong&gt;DuckDB &lt;code&gt;v2.0.0&lt;/code&gt;&lt;/strong&gt;, fixed Moonlink (&lt;code&gt;v0.0.1&lt;/code&gt;) snapshot LSN hangs and partitioned table replica identity handling, and patched 20+ RustSec dependency advisories.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;td-callout td-callout--tip&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-lightbulb&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Looking for &lt;code&gt;v0.1&lt;/code&gt; Documentation?&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;Complete documentation for the legacy &lt;code&gt;v0.1&lt;/code&gt; release (&lt;code&gt;USING columnstore&lt;/code&gt;, &lt;code&gt;mooncake.create_secret&lt;/code&gt;, &lt;code&gt;mooncake.columnstore_tables&lt;/code&gt;, &lt;code&gt;mooncake.read_parquet&lt;/code&gt;) is preserved in the &lt;a href=&#34;https://mooncake.pgsty.com/docs/v0.1/&#34;&gt;v0.1 Archive (Delta Lake)&lt;/a&gt;.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    
  </channel>
</rss>
