上游 v0.2 历史特性路线图与当前 PGSTY 分支的工程维护重点(v0.3.0+)。
这是本节的多页打印视图。 .
关于
- 1: 路线图
- 2: 开源许可
- 3: 致谢与来源
- 4: 商标声明
- 5: SBOM 与安全审计
mooncake.pgsty.com 是 PGSTY 维护的 Mooncake(面向 PostgreSQL 与 DuckDB 的实时分析生态)分支项目的伴生文档与工程站点:
| 代码仓库 | 当前标签 | 许可证 | 上游来源 | 说明 |
|---|---|---|---|---|
pgsty/pg_mooncake |
v0.3.0 |
MIT |
Mooncake-Labs/pg_mooncake |
PostgreSQL 列存表扩展(基于 pgrx 0.19.3 与 pg_duckdb 1.2.0)。 |
pgsty/duckdb_mooncake |
v0.0.2 |
MIT |
Mooncake-Labs/duckdb_mooncake |
挂载 Moonlink 实时 Iceberg 表的 DuckDB 2.0.0 存储扩展。 |
pgsty/moonlink |
v0.0.1 |
BSL-1.1 + 链接豁免(客户端 crate 为 MIT) |
Mooncake-Labs/moonlink |
将实时流式更新与 CDC 摄入 Apache Iceberg 与 Parquet 的 Rust 引擎。 |
章节导航
MIT、带 pg_mooncake 链接与分发豁免的 BSL-1.1,以及 CC-BY-4.0 文档许可协议。
Mooncake Labs 原始团队致谢、Wayback Machine 文档恢复说明与代码仓库演进脉络。
商标归属说明与 PGSTY 分支的独立维护声明。
子模块版本矩阵(versions.json)与 2026-11-05 Cargo RustSec 依赖安全审计报告。
1 - 路线图
下方路线图保留了上游 docs.mooncake.dev/pg/roadmap 发布的 pg_mooncake v0.2 历史设计规划,并补充了当前 pgsty/pg_mooncake(v0.3.0)分支的长期工程维护重点。
PGSTY 维护重点(v0.3.0+)
PGSTY 维护的 Mooncake 套件(pg_mooncake v0.3.0、duckdb_mooncake v0.0.2、moonlink v0.0.1)专注于生产环境长期可用性、PostgreSQL 大版本覆盖与依赖安全加固:
- PostgreSQL 14–18 全版本支持:保持
pg_mooncake与最新pgrx(0.19.3)同步,覆盖 Linux(x86_64与aarch64、RHEL/Rocky EL8–EL10、Debian 12/13、Ubuntu 22.04/24.04)上的 PostgreSQL 14、15、16、17 与 18。 - DuckDB
2.0.0与pg_duckdb 1.2.0同步演进:随着 DuckDB 的TableCatalogEntry、TableFilterSet与StorageExtensionC++ 接口演进,持续维护pg_mooncake、pg_duckdb与duckdb_mooncake之间的 ABI 兼容性。 - 正确性与快速失败(Fail-Fast)保护:强制执行
pg_duckdb运行时版本校验、列存表 LSN 一致性快照读取、分区表层级自动设置REPLICA IDENTITY FULL,以及对已弃用辅助函数显式抛出0A000错误。 - 依赖项安全治理:定期对照 RustSec 漏洞库审计并升级全部三个锁文件(
pg_mooncake、moonlink、duckdb_mooncake/moonlink_ffi)中的 Rust 依赖项。
上游历史路线图(v0.2)
以下四项特性是 Mooncake Labs 针对 v0.2 架构规划的演进方向:
1. 面向日志与事件流的列存表(Columnstore Table for Logs / Events)
为 columnstore 表引入**仅追加(append-only)**模式:
- 针对流式写入与乱序插入进行专门优化;
- 内置基于时间的分区与数据保留(Retention)策略;
- 面向可观测性、遥测指标与高吞吐事件管道场景。
2. 无需底层行存表的原生列存表(Native Columnstore Tables)
直接创建并写入 columnstore 表,而无需依赖配套的 PostgreSQL 行存堆表:
- 直接对
columnstore表访问方法执行标准INSERT、SELECT、UPDATE、DELETE与COPY; - 注:原生
USING columnstore表在v0.1(Delta Lake 架构)中可用,而v0.2与v0.3.0采用mooncake.create_table(dst, src)通过逻辑复制镜像 PostgreSQL 行存表。
3. 写入现有 Iceberg 表(Write to Existing Iceberg Tables)
在 PostgreSQL 中创建能够直接写入外部现有 Apache Iceberg 表(由 REST 或 JDBC Catalog 管理)的 columnstore 镜像表,实现与 Spark、Trino、Flink 写入端的双向互通。
4. 查询路由与分区表透明整合(Query Routing & Partitioned Tables)
在行存 + 列存混合分区表层级上透明路由分析查询,无需手写 UNION ALL 或显式引用双表名称。
2 - 开源许可
PGSTY Mooncake 生态完整保留了 Mooncake Labs, Inc. 为各个代码仓库设定的上游许可证条款。
各仓库许可证总览
| 组件 | 代码仓库 | 许可证 | 说明 |
|---|---|---|---|
pg_mooncake |
pgsty/pg_mooncake |
MIT |
宽松开源许可证(Copyright (c) 2024 Mooncake Labs)。 |
duckdb_mooncake |
pgsty/duckdb_mooncake |
MIT |
宽松开源许可证(Copyright (c) 2025 Mooncake Labs)。 |
moonlink(核心引擎) |
pgsty/moonlink |
BSL-1.1 + 链接豁免 |
Business Source License 1.1,附带 PG_MOONCAKE LINKING & DISTRIBUTION EXCEPTION,将于 2029-05-05 自动转换为 Apache-2.0。 |
moonlink(客户端 Crate) |
moonlink_rpc、moonlink_proto、moonlink_error、moonlink_table_metadata |
MIT |
显式采用 MIT 许可,确保 pg_mooncake 与 duckdb_mooncake 链接客户端接口时保持纯 MIT 属性。 |
| 伴生文档站 | pgsty/mooncake.pgsty.com |
CC-BY-4.0 / Apache-2.0 |
文档正文采用知识共享署名 4.0 国际许可协议(CC-BY-4.0);站点构建脚本采用 Apache-2.0。 |
pg_mooncake 与 duckdb_mooncake — MIT 许可证
pg_mooncake 与 duckdb_mooncake 均采用 MIT License 发布:
moonlink — Business Source License 1.1 与 pg_mooncake 链接豁免
moonlink 采用 Business Source License 1.1 (BSL-1.1) 并附带 PG_MOONCAKE LINKING & DISTRIBUTION EXCEPTION:
- 许可方(Licensor):Mooncake Labs, Inc.
- 受许可作品(Licensed Work):
moonlink(v0.0.1) - 转换日期(Change Date):
2029-05-05 - 转换后许可证(Change License):
Apache-2.0(Apache License, Version 2.0)
附加使用授权(Additional Use Grant)
- 您可以在组织内部(包括生产环境)自由使用
moonlink,也可以将其集成到向第三方提供的软件应用或服务中,前提是该服务不将moonlink本身作为竞争性托管云服务(Managed Service / DBaaS / SaaS)向第三方直接售卖。
PG_MOONCAKE LINKING & DISTRIBUTION EXCEPTION(链接与分发豁免)
由于 pg_mooncake 通过 FFI(pg_mooncake_moonlink_ffi)内嵌了 moonlink,且 duckdb_mooncake 链接了 moonlink_ffi,上游许可证专门提供了以下豁免条款:
- MIT 客户端 Crate:仓库中的客户端接口 crate(
moonlink_rpc、moonlink_proto、moonlink_error与moonlink_table_metadata)单独采用 MIT 许可,不属于 BSL-1.1 受限范围。 - 链接许可(Linking Permission):允许将
moonlink(含pg_mooncake_moonlink_ffi)与pg_mooncake(及其任何 MIT 许可的分支或衍生作品)进行静态或动态链接,生成组合二进制文件或 PostgreSQL 扩展安装包,且不会导致pg_mooncake本身的源代码受制于 BSL-1.1。 - 二进制再分发许可(Binary Redistribution Permission):允许通过 Linux 发行版软件源、容器镜像、PGXN、Pigsty、Homebrew 等包管理器向第三方免费构建、打包并分发组合扩展包,只需随附
LICENSE文件并遵守托管服务限制即可。
第三方子模块许可证
pg_mooncake 在构建时还使用了 versions.json 中锁定的两个开源子模块:
pg_duckdb(v1.2.0):MIT许可证(Copyright (c) 2024 Hydra, MotherDuck, and pg_duckdb contributors)。rust-postgres(14c8e599):Apache-2.0 OR MIT双重许可。
3 - 致谢与来源
上游原作者致谢
pg_mooncake、duckdb_mooncake 与 moonlink 由 Mooncake Labs 团队创建。所有核心架构设计——包括行存 + 列存混合表模型、Moonlink 实时 Iceberg 缓冲引擎、逻辑复制 WAL 摄入流水线以及 DuckDB 向量化执行桥接——均归属于 Mooncake Labs 原作者与社区贡献者。
代码仓库演进脉络
| PGSTY 代码仓库 | 上游源仓库 | 上游基线提交 | PGSTY 发布标签 |
|---|---|---|---|
pgsty/pg_mooncake |
Mooncake-Labs/pg_mooncake |
v0.2.0 (be17cd0) 及后续上游提交 |
v0.3.0 (1a9cbfd65be9a6486d020120acb49ef0c6800d68) |
pgsty/duckdb_mooncake |
Mooncake-Labs/duckdb_mooncake |
ba79184 |
v0.0.2 (49765a369ad88986916ce53c969ed2ce4ba66fac) |
pgsty/moonlink |
Mooncake-Labs/moonlink |
f2e1715 |
v0.0.1 (b298ef7444890e3c8af5544e350232518bcfd8e5) |
pgsty/pg_duckdb |
duckdb/pg_duckdb |
v1.2.0 |
v1.2.0 (8756099e267c47f0b86c24de4cf995327f1f4279) |
文档来源与历史快照恢复
上游原文档站点(https://docs.mooncake.dev/)在项目转型后已下线,且 GitHub 上未公开原始文档源码仓库。
为了完整保留 v0.2(Moonlink + Iceberg 架构)与 v0.1(Delta Lake 架构)的参考手册:
- Wayback Machine 历史快照提取:我们从 Internet Archive Wayback Machine 历史快照(
2025-12-07)中完整恢复了全部 34 个规范文档路径(17 页v0.2文档、16 页v0.1文档与 1 页 Moonlink 概览)、30 个早期历史路径别名以及 4 幅原始架构图。 - 对照
v0.3.0源码逐项核验:所有 SQL 函数签名、GUC 配置参数、环境变量与错误码均已对照pgsty/pg_mooncake v0.3.0源码树(pgrx 0.19.3、pg_duckdb 1.2.0、duckdb_mooncake v0.0.2、moonlink v0.0.1)完成核验与修正。 - 中英双语翻译与工程报告:PGSTY 补充了完整的简体中文文档(
/zh/docs/),并发布了涵盖 DuckDB 2.0 适配、pgrx 0.19.3升级以及 2026-11-05 RustSec 依赖安全审计的工程报告。
所有改编自上游历史文档的页面均在 Front Matter 中标注了 upstream_source 与 upstream_link 元数据。
4 - 商标声明
独立维护声明
mooncake.pgsty.com 以及 github.com/pgsty 组织下的代码仓库(pgsty/pg_mooncake、pgsty/duckdb_mooncake、pgsty/moonlink)由 PGSTY (Pigsty) 面向 PostgreSQL 开源社区独立维护。
本站点以及由 Pigsty / PGEXT 分发的软件包与 Mooncake Labs, Inc. 不存在隶属、官方背书或商业赞助关系。
第三方商标归属
- Mooncake、pg_mooncake、duckdb_mooncake 与 Moonlink 是源自 Mooncake Labs, Inc. 的项目名称,在本站中仅用于指代和描述对应的 PostgreSQL / DuckDB 开源扩展及其技术血统。
- PostgreSQL 与 Postgres 是加拿大 PostgreSQL 社区协会(PostgreSQL Community Association of Canada)的注册商标。
- DuckDB 是 DuckDB Foundation / DuckDB Labs 的商标。
- Apache Iceberg、Apache Parquet、Apache Arrow 与 Apache 是 Apache 软件基金会(Apache Software Foundation)的商标。
- Delta Lake 是 LF Projects, LLC 的商标。
- Pigsty 与 PGSTY 是冯若航(
@Vonng)的商标。
5 - SBOM 与安全审计
本页记录了 pg_mooncake v0.3.0、duckdb_mooncake v0.0.2 与 moonlink v0.0.1 的精确子模块版本矩阵(versions.json)以及 Cargo 依赖安全审计结果。
组件与子模块版本矩阵(versions.json)
pgsty/pg_mooncake 在仓库根目录的 versions.json 中记录了所有子模块与上游依赖的精确提交哈希:
| 组件 | 路径 | 代码仓库 | 标签 / 分支 | Commit SHA | 许可证 |
|---|---|---|---|---|---|
pg_mooncake |
/ |
pgsty/pg_mooncake |
v0.3.0 |
1a9cbfd65be9a6486d020120acb49ef0c6800d68 |
MIT |
duckdb_mooncake |
duckdb_mooncake |
pgsty/duckdb_mooncake |
v0.0.2 |
49765a369ad88986916ce53c969ed2ce4ba66fac |
MIT |
duckdb(嵌套子模块) |
duckdb_mooncake/duckdb |
duckdb/duckdb |
v2.0.0 |
d54cbbe3df17e8e5ce68312f483b4155836112aa |
MIT |
moonlink |
moonlink (duckdb_mooncake/moonlink) |
pgsty/moonlink |
v0.0.1 |
b298ef7444890e3c8af5544e350232518bcfd8e5 |
BSL-1.1 + 豁免(客户端 crate 为 MIT) |
pg_duckdb |
pg_duckdb |
pgsty/pg_duckdb |
v1.2.0 |
8756099e267c47f0b86c24de4cf995327f1f4279 |
MIT |
rust-postgres |
rust-postgres |
sfackler/rust-postgres |
master |
14c8e599f5551a8caa96ff5023685a6f537a1455 |
Apache-2.0 OR MIT |
核心 Rust 工具链与框架版本
| 依赖项 | 版本 | 职责说明 |
|---|---|---|
pgrx / cargo-pgrx |
0.19.3 |
Rust PostgreSQL 扩展开发框架(支持 PostgreSQL 14–18)。 |
iceberg |
0.6.0 |
moonlink 中的 Apache Iceberg 表元数据与 Catalog 客户端。 |
arrow / parquet |
55.2.0 |
moonlink 中的列式内存格式与 Parquet 文件写入器。 |
datafusion |
48.0.1 |
moonlink 中的表达式求值与谓词裁剪引擎。 |
opendal |
0.53.1 |
统一对象存储抽象层(支持 fs、s3、gcs、azblob)。 |
tonic / prost |
0.14.5 / 0.14.3 |
pg_mooncake 与 moonlink 之间的 gRPC / IPC 协议序列化。 |
tokio |
1.53.0 |
后台数据摄入与对象存储 I/O 的异步运行时。 |
2026-11-05 Cargo 依赖安全审计报告
我们使用 cargo-audit 0.22.2 对照 RustSec 漏洞数据库(commit 965bf9ad083b58e6340d65829d85217b18be9290,共加载 927 条安全公告)对全部三个 Cargo 工作区进行了审计与修复。
修复前后对比汇总
| 锁文件 | 修复前 | 修复后 | 降幅 |
|---|---|---|---|
pg_mooncake/Cargo.lock |
33 个漏洞、1 个 unsound、19 条警告 | 6 个漏洞、0 个 unsound、15 条警告 | 漏洞减少 27 个(-82%),unsound 清零 |
moonlink/Cargo.lock |
46 个漏洞、1 个 unsound、28 条警告 | 15 个漏洞、0 个 unsound、24 条警告 | 漏洞减少 31 个(-67%),unsound 清零 |
duckdb_mooncake/moonlink_ffi/Cargo.lock |
1 个漏洞、0 个 unsound、0 条警告 | 0 个漏洞、0 个 unsound、0 条警告 | -100%(完全清零) |
已修复的关键安全漏洞
- 直接依赖跨大版本升级:
tonic 0.12 -> 0.14.5、prost 0.13 -> 0.14.3(消除了RUSTSEC-2026-0001rkyv内存耗尽 DoS 以及duckdb_mooncake中的RUSTSEC-2024-0436paste停更警告)。bincode 1.3.3 -> 2.1.0(启用serde兼容路径,修复RUSTSEC-2025-0141)。opentelemetry 0.27 -> 0.31.0、opentelemetry-otlp 0.27 -> 0.31.1、tracing-opentelemetry 0.28 -> 0.32.1。reqwest 0.12.20 -> 0.12.28;通过升级testcontainers 0.23.3 -> 0.27.2彻底移除存在 PAX 头解析漏洞(RUSTSEC-2025-0065)的tokio-tar。
- 传递依赖安全升级:
bytes 1.10.1 -> 1.11.1(RUSTSEC-2026-0007:BytesMut::reserve整数溢出)。quinn-proto 0.11.12 -> 0.11.14(RUSTSEC-2026-0037:Quinn 端点拒绝服务漏洞)。rustls 0.23.28 -> 0.23.37与rustls-webpki 0.103.3 -> 0.103.12(RUSTSEC-2026-0049、RUSTSEC-2026-0098、RUSTSEC-2026-0099:CRL 分发点与通配符名称约束校验修复)。aws-lc-rs 1.13.1 -> 1.16.3与aws-lc-sys 0.29.0 -> 0.39.1(修复 7 项 PKCS7 / AES-CCM / X.509 侧信道与逻辑漏洞)。lz4_flex 0.11.4 -> 0.11.6(RUSTSEC-2026-0041:内存信息泄露)。tar 0.4.44 -> 0.4.45(RUSTSEC-2026-0067与RUSTSEC-2026-0068:PAX 大小头处理与符号链接权限漏洞)。time 0.3.41 -> 0.3.47(RUSTSEC-2026-0009:RFC 2822 解析栈耗尽 DoS)。wasmtime 29.0.1 -> 43.0.1(修复 12 项 WASI/Wasmtime 沙箱漏洞及regalloc2内存安全问题)。glib 0.20.12 -> 0.22.4(消除RUSTSEC-2026-0097VariantStrIterunsound 问题)。
剩余受上游锁定的传递依赖说明
pg_mooncake/Cargo.lock 中剩余的 6 条通告均来自 iceberg 0.6.0(锁定了 arrow 55、parquet 55、avro-schema 0.3 与旧版传递依赖)以及 moonlink 中的 deltalake-core 0.26.0:
rsa 0.9.10(RUSTSEC-2023-0071):由iceberg-catalog-sql -> sqlx-mysql传递引入,moonlink运行时仅初始化 PostgreSQL/REST Iceberg Catalog,不触发 MySQL RSA 握手机制。md5 0.7.0(RUSTSEC-2025-0146,已更名为md-5):由avro-schema 0.3.0引入。snappy 0.4.0(RUSTSEC-2026-0046,超大缓冲区 >4 GiB 时的整数截断):由avro-schema 0.3.0引入,而 Iceberg Avro 清单文件通常仅为 KB 到 MB 级别。rustls-webpki 0.102.8(RUSTSEC-2026-0049、0098、0099):由iceberg 0.6传递树中的旧版依赖引入,主 TLS 链路已全部使用修复后的rustls-webpki 0.103.12。