<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Engineering &amp; Deep Dives on Mooncake</title>
    <link>https://mooncake.pgsty.com/blog/post/</link>
    <description>Recent content in Engineering &amp; Deep Dives 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/blog/post/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Porting pg_mooncake and duckdb_mooncake to DuckDB 2.0, pg_duckdb 1.2.0, and pgrx 0.19.3</title>
        <link>https://mooncake.pgsty.com/blog/post/duckdb-2-adaptation/</link>
        <pubDate>Thu, 05 Nov 2026 00:00:00 +0000</pubDate>
        <dc:creator>Ruohang Feng</dc:creator>
        <guid>https://mooncake.pgsty.com/blog/post/duckdb-2-adaptation/</guid>
        <description>&lt;p&gt;When Mooncake Labs paused public updates to &lt;a href=&#34;https://github.com/Mooncake-Labs/pg_mooncake&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt; after &lt;code&gt;v0.2.0&lt;/code&gt;, the extension was pinned to an earlier DuckDB &lt;code&gt;1.3.x&lt;/code&gt; / &lt;code&gt;pg_duckdb&lt;/code&gt; snapshot and &lt;code&gt;pgrx 0.12&lt;/code&gt;. Meanwhile, the PostgreSQL ecosystem moved forward to &lt;strong&gt;PostgreSQL 18&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;pgrx 0.19.3&lt;/code&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;code&gt;pg_duckdb 1.2.0&lt;/code&gt;&lt;/strong&gt; (which embeds &lt;strong&gt;DuckDB &lt;code&gt;v2.0.0&lt;/code&gt;&lt;/strong&gt;).&lt;/p&gt;&#xA;&lt;p&gt;This article walks through the engineering changes required to bring the entire Mooncake stack — &lt;strong&gt;&lt;code&gt;pg_mooncake v0.3.0&lt;/code&gt;&lt;/strong&gt;, &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; — onto &lt;strong&gt;DuckDB &lt;code&gt;2.0.0&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;pg_duckdb 1.2.0&lt;/code&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;code&gt;pgrx 0.19.3&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Mooncake is joining Databricks!</title>
        <link>https://mooncake.pgsty.com/blog/post/mooncake-and-databricks/</link>
        <pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate>
        <dc:creator>Mooncake Labs</dc:creator><dc:creator>Zhou Sun</dc:creator><dc:creator>Cheng Chen</dc:creator><dc:creator>Pranav Aurora</dc:creator>
        <guid>https://mooncake.pgsty.com/blog/post/mooncake-and-databricks/</guid>
        <description>&lt;p&gt;Thirteen months ago, we started Mooncake to bring the data intelligence stack that powers giants like OpenAI to every vibe-coded app and developer. From first prompt to IPO.&lt;/p&gt;&#xA;&lt;p&gt;Today, we&amp;rsquo;re joining forces with Databricks.&#xA;The mission continues: make &lt;a href=&#34;https://www.databricks.com/product/lakebase&#34;&gt;Lakebase&lt;/a&gt; and the Lakehouse feel like one.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;For a decade, we thought the final form of a database was one that could do it all. Fast updates, transactions, analytics. For database people, this was HTAP. It never quite landed. Zhou and Cheng built it. Pranav tried to sell it. It was hard.&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>
        <dc:creator>Mooncake Labs</dc:creator><dc:creator>Zhou Sun</dc:creator><dc:creator>Cheng Chen</dc:creator><dc:creator>Pranav Aurora</dc:creator>
        <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>
        <dc:creator>Zhou Sun</dc:creator>
        <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>
        <dc:creator>Zhou Sun</dc:creator>
        <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>HTAP is Dead</title>
        <link>https://mooncake.pgsty.com/blog/post/htap-is-dead/</link>
        <pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate>
        <dc:creator>Zhou Sun</dc:creator>
        <guid>https://mooncake.pgsty.com/blog/post/htap-is-dead/</guid>
        <description>&lt;p&gt;This blog is inspired by Jordan Tigani&amp;rsquo;s blog titled &lt;a href=&#34;https://motherduck.com/blog/big-data-is-dead/&#34;&gt;&amp;ldquo;Big Data is Dead&amp;rdquo;&lt;/a&gt;. Jordan and I actually spent some time building an HTAP database at SingleStore.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-good-old-days-80s&#34;&gt;The good old days (&amp;rsquo;80s)&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Back in the &amp;rsquo;80s, one relational database did everything. Transactions (OLTP) during the day and reports after hours (OLAP). Databases like Oracle V2 and IBM DB2 ran OLTP and OLAP on the same system; largely because data sets still fit on a few disks and compute was costly.&lt;/p&gt;</description>
      </item>
    <item>
        <title>What does Analytics in Postgres really mean?</title>
        <link>https://mooncake.pgsty.com/blog/post/why-postgres-analytics/</link>
        <pubDate>Sun, 23 Mar 2025 00:00:00 +0000</pubDate>
        <dc:creator>Zhou Sun</dc:creator>
        <guid>https://mooncake.pgsty.com/blog/post/why-postgres-analytics/</guid>
        <description>&lt;p&gt;Few areas in databases are hotter right now than extending Postgres to support analytics queries. This isn&amp;rsquo;t a particularly novel area either –– there have been plenty of attempts in the last decade:&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://mooncake.pgsty.com/images/blog/pganalytics-timeline.jpg&#34; alt=&#34;Timelines&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;Here is what it means to our customers –– and why the problem remains largely unsolved, despite our first attempt with &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;level-0-i-just-run-analytics-queries-on-my-postgres-tables&#34;&gt;Level 0: I just run analytics queries on my Postgres tables&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;You&amp;rsquo;ll be surprised how far this can go with proper indexes, statistics, query tuning, and materialized views—people really overthink this.&lt;/p&gt;</description>
      </item>
    <item>
        <title>How to improve DuckDB performance on Parquet</title>
        <link>https://mooncake.pgsty.com/blog/post/duckdb-parquet/</link>
        <pubDate>Wed, 22 Jan 2025 00:00:00 +0000</pubDate>
        <dc:creator>Pranav Aurora</dc:creator>
        <guid>https://mooncake.pgsty.com/blog/post/duckdb-parquet/</guid>
        <description>&lt;p&gt;Last week, we ran ClickBench on Postgres and ranked in the &lt;a href=&#34;https://mooncake.pgsty.com/blog/post/clickbench-v0.1/&#34;&gt;top 10&lt;/a&gt;. We showed that Postgres can be extended with &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt; to support serious analytics workloads.&lt;/p&gt;&#xA;&lt;p&gt;In the announcement, we got a lot of questions on how &lt;code&gt;pg_mooncake&lt;/code&gt; outperforms DuckDB on Parquet files even though internally, it embeds DuckDB in Postgres and stores data in Parquet format.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;See also the discussion on &lt;a href=&#34;https://x.com/mooncake_dev/status/1881844188905709880&#34;&gt;X / Twitter&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;The best part: &lt;code&gt;pg_mooncake&lt;/code&gt; does not modify DuckDB at all&amp;hellip;&lt;/p&gt;</description>
      </item>
    <item>
        <title>Clickbench says Postgres is a great analytics database</title>
        <link>https://mooncake.pgsty.com/blog/post/clickbench-v0.1/</link>
        <pubDate>Tue, 14 Jan 2025 00:00:00 +0000</pubDate>
        <dc:creator>Zhou Sun</dc:creator>
        <guid>https://mooncake.pgsty.com/blog/post/clickbench-v0.1/</guid>
        <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&#xA;We spent a few months optimizing PostgreSQL and made it to the &lt;a href=&#34;https://benchmark.clickhouse.com/&#34;&gt;&lt;strong&gt;Top 10 on ClickBench&lt;/strong&gt;&lt;/a&gt;, a benchmark typically dominated by specialized analytics databases.&lt;/p&gt;&#xA;&lt;p&gt;What&amp;rsquo;s more, all compute is within Postgres, and all tables are managed directly by PostgreSQL—it&amp;rsquo;s not a simple wrapper. This is the story of &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://mooncake.pgsty.com/images/blog/clickbench-blog.jpg&#34; alt=&#34;Clickbench&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;h2 id=&#34;what-is-clickbench&#34;&gt;What Is ClickBench?&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/ClickHouse/ClickBench/tree/main&#34;&gt;ClickBench&lt;/a&gt; is the definitive benchmark for real-time analytics databases, originally designed to showcase the performance of ClickHouse. It evaluates databases on their ability to handle real-world analytics workloads, including high-volume table scans and complex aggregations.&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>
        <dc:creator>Zhou Sun</dc:creator>
        <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 🤝 drizzle: typed SDKs for your analytic workloads</title>
        <link>https://mooncake.pgsty.com/blog/post/pgmooncake-drizzle/</link>
        <pubDate>Wed, 08 Jan 2025 00:00:00 +0000</pubDate>
        <dc:creator>Pranav Aurora</dc:creator>
        <guid>https://mooncake.pgsty.com/blog/post/pgmooncake-drizzle/</guid>
        <description>&lt;p&gt;A thing that surprised us in the &lt;a href=&#34;https://mooncake.pgsty.com/docs/intro/&#34;&gt;&lt;code&gt;pg_mooncake&lt;/code&gt;&lt;/a&gt; &lt;a href=&#34;https://mooncake.pgsty.com/blog/post/how-we-built-pgmooncake/&#34;&gt;launch&lt;/a&gt; was how much developers cared about ORMs for their analytical workloads. We saw two typical requests:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;em&gt;&amp;ldquo;I have a bunch of Parquet files. I want full ORM support over them.&amp;rdquo;&lt;/em&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;&amp;ldquo;I use Drizzle/Prisma for my transactional database. I also want to use it for my analytics and dashboards.&amp;rdquo;&lt;/em&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://mooncake.pgsty.com/images/blog/blog6-slack.jpg&#34; alt=&#34;slack&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;We&amp;rsquo;ve always believed that columnar storage in Postgres must look and feel like a regular heap table. It&amp;rsquo;s where we innovated with &lt;code&gt;pg_mooncake&lt;/code&gt; columnstore tables; you can run transactions, updates, deletes, and joins with heap tables.&lt;/p&gt;</description>
      </item>
    <item>
        <title>pg_mooncake &#43; Neon: serverless analytics in Postgres</title>
        <link>https://mooncake.pgsty.com/blog/post/pgmooncake-neon/</link>
        <pubDate>Tue, 07 Jan 2025 00:00:00 +0000</pubDate>
        <dc:creator>Pranav Aurora</dc:creator>
        <guid>https://mooncake.pgsty.com/blog/post/pgmooncake-neon/</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; launched in beta two months ago. It adds columnar storage and a vectorized engine to Postgres.&lt;/p&gt;&#xA;&lt;p&gt;Over the last two months, with our customers, we&amp;rsquo;ve realized we accidentally built the best serverless database for analytics. Here&amp;rsquo;s the story:&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-pg_mooncake--neon-storage-engine&#34;&gt;1. pg_mooncake 🤝 Neon storage engine&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Neon innovated significantly on its &lt;a href=&#34;https://neon.tech/blog/get-page-at-lsn&#34;&gt;storage engine&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;There&amp;rsquo;s a great &lt;a href=&#34;https://x.com/nikitabase/status/1723579854266966399&#34;&gt;thread&lt;/a&gt; by Nikita on this. This storage engine is how Neon can achieve true separation of storage &amp;amp; compute. This leads to an exceptional DX around branching, scale-to-zero, read replicas, instant provisioning&amp;hellip; All of these are goodies of a true serverless Postgres.&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>
        <dc:creator>Cheng Chen</dc:creator>
        <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>Mooncake: next-gen search and analytic systems</title>
        <link>https://mooncake.pgsty.com/blog/post/mooncake-launch/</link>
        <pubDate>Wed, 30 Oct 2024 00:00:00 +0000</pubDate>
        <dc:creator>Mooncake Labs</dc:creator><dc:creator>Zhou Sun</dc:creator><dc:creator>Cheng Chen</dc:creator><dc:creator>Pranav Aurora</dc:creator>
        <guid>https://mooncake.pgsty.com/blog/post/mooncake-launch/</guid>
        <description>&lt;p&gt;We are Zhou, Cheng, and Pranav. And we&amp;rsquo;ve spent the last decade building databases at MemSQL (now SingleStore).&lt;/p&gt;&#xA;&lt;p&gt;We love complex systems, deep-tech engineering, and naturally – physics 🙂 Data systems, much like physics, are built on certain principles. The principles need to be unanimous and durable.&lt;/p&gt;&#xA;&lt;p&gt;Building systems that are simply &amp;rsquo;technically&amp;rsquo; better is futile. The success of a data system depends on the principles it embodies, and changing them along the way is extremely difficult. Closed-source companies can&amp;rsquo;t go to open source and expect adoption. Databases can&amp;rsquo;t just abandon their storage format and be effective stateless engines.&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>
        <dc:creator>Zhou Sun</dc:creator>
        <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>
        <dc:creator>Pranav Aurora</dc:creator>
        <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>
