这是本节的多页打印视图。 .
v0.1 历史归档:欢迎使用 pg_mooncake (Delta Lake)
- 1: v0.1 架构说明 (Delta Lake 与 USING columnstore)
- 2: v0.1 快速开始
- 3: v0.1 Hello World (USING columnstore)
- 4: v0.1 云端对象存储配置 (mooncake.create_secret)
- 5: v0.1 在 Neon Postgres 上使用
- 6: v0.1 参考手册总览
- 7: v0.1 列存表 DDL (USING columnstore)
- 8: v0.1 在 Postgres 外部查询列存表
- 9: v0.1 GUC 配置参数
- 10: v0.1 数据导入指南
- 11: v0.1 查询外部数据文件
- 12: v0.1 支持的查询形态
- 13: v0.1 数据归档方案
- 14: v0.1 操作型分析(触发器 + pg_cron 暂存表方案)
- 15: v0.1 数据仓库与 dbt 集成
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
pg_mooncake v0.1 是第一代 PostgreSQL 列存扩展,通过 USING columnstore 表访问方法与底层的 Delta Lake + DuckDB(pg_duckdb)提供分析加速。

v0.1 版本核心特性
- 支持直接在
USING columnstore表上执行事务型INSERT、UPDATE与DELETE - 数据以 Parquet + Delta Lake 元数据格式存储在本地磁盘或 S3 / R2 对象存储上
- 通过内嵌 DuckDB 提供向量化查询执行
- 支持普通 PostgreSQL 堆表与
USING columnstore表之间的直接关联查询
v0.1 历史归档目录
1 - v0.1 架构说明 (Delta Lake 与 USING columnstore)
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
在 pg_mooncake v0.1 中,表级事务元数据保存在 PostgreSQL 系统目录中以保证事务一致性,而列存数据本身则以 Parquet 文件与 Delta Lake 元数据形式存储在本地文件系统或云端对象存储中。
列存表作为 PostgreSQL 表访问方法(USING columnstore)暴露给用户,查询通过 pg_duckdb 路由至 DuckDB 执行。
读取路径(Read Path)
涉及 USING columnstore 表的查询由 PostgreSQL 路由至 DuckDB 执行,并在内部自动处理轻微的 SQL 语法差异转换。

pg_mooncake v0.1 将 Parquet 文件元数据与列级统计信息缓存在 PostgreSQL 表(mooncake.data_files)中,并在扫描时利用统计信息实现分段跳过(Segment Elimination)。
写入路径(Write Path)
在 v0.1 中,用户直接在 USING columnstore 表上运行事务型 INSERT、UPDATE 与 DELETE。为了支持更新与删除,表扫描期间会填充由 (file_id, row_offset) 组成的隐式 row_id 列。
每次写入操作都会生成一个新的 Parquet 文件,因此 v0.1 更适合大批量写入(单批次 100,000–1,000,000 行),而不适合高频小事务写入。
本地磁盘缓存
写入时数据默认缓存在本地磁盘(mooncake.enable_local_cache = true),从而显著加速对近期写入热数据的分析查询。
2 - v0.1 快速开始
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
历史 Docker 镜像(Obsolete)
从源码编译 v0.1
创建扩展
3 - v0.1 Hello World (USING columnstore)
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
启用扩展
创建 USING columnstore 列存表(v0.1)
插入、更新与删除
事务与回滚
跨表关联(JOIN)
4 - v0.1 云端对象存储配置 (mooncake.create_secret)
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
v0.3.0 对象存储配置方式在 v0.2 与 v0.3.0 中,对象存储凭据通过 duckdb.secrets 表管理,不再使用 mooncake.create_secret。最新说明请参阅 Iceberg 与对象存储配置。
配置 Amazon S3 存储桶(v0.1)
针对 S3 Express 存储桶:
配置 Cloudflare R2 存储桶(v0.1)
设置默认存储桶
S3 与 R2 参数说明
| 参数名 | 说明 | 是否必填 |
|---|---|---|
name |
凭据名称 | 是 |
key_id |
S3 / R2 Access Key ID | 是 |
secret |
S3 / R2 Secret Access Key | 是 |
REGION |
S3 存储桶所在区域 | 是 |
ENDPOINT |
R2 或 S3 Express 自定义端点 | 是(R2 / S3 Express) |
SCOPE |
凭据生效的存储桶路径前缀(如 s3://mybucket) |
否 |
5 - v0.1 在 Neon Postgres 上使用
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
pg_mooncake v0.1 曾作为实验性扩展提供在 Neon 托管平台上。
在 Neon 上启用扩展(v0.1)
对象存储与计算节点要求
由于 Neon 计算节点不支持将列存文件持久化在本地磁盘,在 Neon 上使用 pg_mooncake v0.1 必须按 v0.1 对象存储配置 绑定外部 S3 或 R2 存储桶,并建议关闭 Scale-to-Zero 以保留本地缓存。
6 - v0.1 参考手册总览
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
7 - v0.1 列存表 DDL (USING columnstore)
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
创建列存表(v0.1)
在 v0.1 中,列存表通过在 CREATE TABLE 时附加 USING columnstore 子句直接创建:
删除列存表
v0.1 支持的特性与限制
- 支持:
INSERT、UPDATE、DELETE、ACID 事务、NOT NULL约束、默认值以及与行存表的关联查询。 v0.1不支持的数据类型:ENUM、uhugeint、JSONB(早期受限)以及部分数组类型。v0.1不支持的约束:主键、外键、唯一约束、索引以及分区表(修改表结构需重建表)。
将 columnstore 设为默认表访问方法(v0.1)
8 - v0.1 在 Postgres 外部查询列存表
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
v0.3.0 元数据查询函数在 v0.2 与 v0.3.0 中,请使用 SELECT * FROM mooncake.list_tables(); 查看表 LSN 进度与 Apache Iceberg v2 仓库路径。
查找表物理路径(v0.1)
在 v0.1 中,mooncake.columnstore_tables 目录表记录了每张 USING columnstore 表的 Delta Lake 存储路径:
查看底层 Parquet 数据文件(v0.1)
使用 Python Polars 直接读取 v0.1 Delta Lake 表
9 - v0.1 GUC 配置参数
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
v0.1 GUC 参数一览
10 - v0.1 数据导入指南
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
从 PostgreSQL 行存表导入(v0.1)
从 Parquet、CSV 或 JSON 文件导入(v0.1)
从 Iceberg、Delta Lake 或 HuggingFace 导入(v0.1)
11 - v0.1 查询外部数据文件
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
v0.3.0 外部文件读取方式在 v0.2 与 v0.3.0 中,请使用 duckdb.read_parquet、duckdb.read_csv、duckdb.iceberg_scan 与 duckdb.delta_scan,详见在 Postgres 中查询外部数据湖。
查询 Parquet、CSV 与 JSON 文件(v0.1)
查询 Iceberg 与 Delta Lake 表(v0.1)
12 - v0.1 支持的查询形态
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
关于 v0.3.0 与 DuckDB 2.0 的最新查询形态指南,请参阅查询列存表与查询形态。
分析聚合与时序查询(v0.1)
在 Postgres 中暴露 DuckDB 函数(v0.1)
13 - v0.1 数据归档方案
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
v0.3.0 分区冷热归档方案在 v0.2 与 v0.3.0 中,无需再手动编写 INSERT INTO ... DELETE FROM 迁移脚本,只需对分区表调用 CALL mooncake.create_table 并直接 DROP 旧分区即可。详见大表分区冷热归档。
v0.1 数据归档方式
14 - v0.1 操作型分析(触发器 + pg_cron 暂存表方案)
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
v0.2 / v0.3.0 中已由 mooncake.create_table 彻底取代在 v0.1 中,将行存表同步至 USING columnstore 表需要手动维护触发器、暂存表与 pg_cron 定时任务。在 v0.2 与 v0.3.0 中,只需一行 CALL mooncake.create_table('orders_analytics', 'orders'); 即可实现亚秒级逻辑复制。详见实时操作分析 (HTAP)。
v0.1 历史暂存表与触发器同步模式
15 - v0.1 数据仓库与 dbt 集成
pg_mooncake v0.1 历史归档文档(Delta Lake 引擎)本页归档的是早期 pg_mooncake v0.1 版本文档(采用直接 CREATE TABLE ... USING columnstore DDL 与 Delta Lake 存储)。从 v0.2 及 PGSTY 维护的 v0.3.0 版本起,pg_mooncake 已全面转向基于 moonlink 的实时列存镜像架构(CALL mooncake.create_table + USING mooncake)与 Apache Iceberg v2。最新文档请参阅简介与 v0.1 与 v0.2 / v0.3 架构演进对比。
每日聚合数仓流水线(v0.1)
与 dbt 集成(v0.1)
在 v0.1 中,可以通过在 dbt 的 on-run-start 钩子中设置 default_table_access_method = 'columnstore' 让 dbt 模型默认创建列存表: