Settings

Theme

Show HN: Pg_mooncake – Delta/Iceberg columnstore tables in Postgres

github.com

25 points by sunzhousz a year ago · 9 comments · 2 min read

Reader

Hello HN, one of the founders of Mooncake Labs here.

Today, we are launching pg_mooncake, an extension that brings columnstore tables with DuckDB execution to Postgres. Expect analytical performance akin to DuckDB on Parquet (clickbench results to come soon). You can run transactional updates, deletes, inserts on these tables, and they're written as Delta Lake tables (and soon Iceberg) to your object store (S3, etc.). pg_mooncake is live on Neon today. Let us know what you think. It'll be coming to Supabase shortly, and other Postgres providers in the future.

Why another postgres analytics extension?

We actually leverage pg_duckdb and DuckDB as our execution engine — this is how we were able to ship the extension in just 60 days. We wrote about this with the DuckDB team: https://motherduck.com/blog/pg-mooncake-columnstore/

pg_mooncake shines in two scenarios:

  1. Up-to-date analytics in Postgres

  - This is where having a table semantics, and not just exporting files is key. 

  2. Exporting Postgres Data to Iceberg/Delta Lake tables, and querying them outside of Postgres

  - Run ad-hoc analytics with Pandas, DuckDB, Polars. Or data transforms and processing with Polars and Spark directly on these tables. 
  You don’t need to manage ad-hoc parquet files and complex pipelines.
Mooncake Labs.

We just came out of stealth today. Mooncake is a managed Lakehouse with clean Postgres and Python experiences. Our core belief is that open table formats (Iceberg and Delta) provide a lot of flexibility, and we can ensure great DevEx on top. We will bring it to more workloads, applications, developers and agents.

Read about our beliefs: https://mooncake.dev/blog/3.

Cheers!

AdamProut a year ago

Very cool! pg_duckdb itself is missing fully integrated storage - it can query data stored externally (say in S3) in delta/iceberg formats, but it can't write out data in those formats via transactional writes to PG tables (insert\update\deletes). pg_mooncacke is one neat way of solving that problem. It lets you have a columnstore table in Postgres that can do both reads and writes as if it's any other PG table and have the storage format be an open format like delta/iceberg/etc with that data persisted to blob store (like most cloud DWs would do anyways).

mhaghani a year ago

Congrats on the launch! pg_mooncake sounds like a fantastic addition to the Postgres ecosystem, especially with the combination of columnstore tables and DuckDB execution. It’s exciting to see the seamless integration with Delta Lake tables and the ability to handle transactional updates. The focus on up-to-date analytics and easy export to Iceberg/Delta Lake for further processing is a game-changer. Looking forward to the ClickBench results and seeing it expand to other Postgres providers. Well done on shipping this so quickly with pg_duckdb—impressive work!

rahulr0609 a year ago

Great add to the PG ecosystem, and looking forward to kicking the tires.

Been looking for something to augment work done from pg_lakehouse!

yashdhir14 a year ago

This is awesome, excited for what’s next

kitwiggin a year ago

Oh they’re cooking

guszien a year ago

This is awesome, congrats!

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection