跳转到主要内容

这是本节的多页打印视图。 .

返回本页常规视图.

关于

PGSTY Mooncake 生态的项目维护说明、历史路线图、许可证、上游致谢、商标政策与软件物料清单(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 引擎。

章节导航

上游 v0.2 历史特性路线图与当前 PGSTY 分支的工程维护重点(v0.3.0+)。

MIT、带 pg_mooncake 链接与分发豁免的 BSL-1.1,以及 CC-BY-4.0 文档许可协议。

Mooncake Labs 原始团队致谢、Wayback Machine 文档恢复说明与代码仓库演进脉络。

商标归属说明与 PGSTY 分支的独立维护声明。

子模块版本矩阵(versions.json)与 2026-11-05 Cargo RustSec 依赖安全审计报告。

1 - 路线图

Mooncake Labs v0.2 历史特性路线图与当前 PGSTY 分支的工程维护重点。
说明

下方路线图保留了上游 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 大版本覆盖与依赖安全加固:

  1. 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。
  2. DuckDB 2.0.0 与 pg_duckdb 1.2.0 同步演进:随着 DuckDB 的 TableCatalogEntry、TableFilterSet 与 StorageExtension C++ 接口演进,持续维护 pg_mooncake、pg_duckdb 与 duckdb_mooncake 之间的 ABI 兼容性。
  3. 正确性与快速失败(Fail-Fast)保护:强制执行 pg_duckdb 运行时版本校验、列存表 LSN 一致性快照读取、分区表层级自动设置 REPLICA IDENTITY FULL,以及对已弃用辅助函数显式抛出 0A000 错误。
  4. 依赖项安全治理:定期对照 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 行存堆表:

CREATE TABLE table_name (
    ...
) USING columnstore;

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 - 开源许可

pg_mooncake、duckdb_mooncake、moonlink 与 mooncake.pgsty.com 的开源与源码可用许可证详情。

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 发布:

MIT License

Copyright (c) 2024-2025 Mooncake Labs

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

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,上游许可证专门提供了以下豁免条款:

  1. MIT 客户端 Crate:仓库中的客户端接口 crate(moonlink_rpc、moonlink_proto、moonlink_error 与 moonlink_table_metadata)单独采用 MIT 许可,不属于 BSL-1.1 受限范围。
  2. 链接许可(Linking Permission):允许将 moonlink(含 pg_mooncake_moonlink_ffi)与 pg_mooncake(及其任何 MIT 许可的分支或衍生作品)进行静态或动态链接,生成组合二进制文件或 PostgreSQL 扩展安装包,且不会导致 pg_mooncake 本身的源代码受制于 BSL-1.1。
  3. 二进制再分发许可(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 - 致谢与来源

对 Mooncake Labs 原始团队的致谢、Wayback Machine 文档恢复说明与代码仓库演进脉络。

上游原作者致谢

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 架构)的参考手册:

  1. Wayback Machine 历史快照提取:我们从 Internet Archive Wayback Machine 历史快照(2025-12-07)中完整恢复了全部 34 个规范文档路径(17 页 v0.2 文档、16 页 v0.1 文档与 1 页 Moonlink 概览)、30 个早期历史路径别名以及 4 幅原始架构图。
  2. 对照 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)完成核验与修正。
  3. 中英双语翻译与工程报告:PGSTY 补充了完整的简体中文文档(/zh/docs/),并发布了涵盖 DuckDB 2.0 适配、pgrx 0.19.3 升级以及 2026-11-05 RustSec 依赖安全审计的工程报告。

所有改编自上游历史文档的页面均在 Front Matter 中标注了 upstream_source 与 upstream_link 元数据。

4 - 商标声明

PGSTY Mooncake 发行版的商标归属说明与独立维护声明。

独立维护声明

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 0.3.0 的软件物料清单(versions.json)、子模块版本矩阵以及 2026-11-05 Cargo RustSec 依赖安全审计报告。

本页记录了 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-0001 rkyv 内存耗尽 DoS 以及 duckdb_mooncake 中的 RUSTSEC-2024-0436 paste 停更警告)。
    • 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-0097 VariantStrIter unsound 问题)。

剩余受上游锁定的传递依赖说明

pg_mooncake/Cargo.lock 中剩余的 6 条通告均来自 iceberg 0.6.0(锁定了 arrow 55、parquet 55、avro-schema 0.3 与旧版传递依赖)以及 moonlink 中的 deltalake-core 0.26.0:

  1. rsa 0.9.10(RUSTSEC-2023-0071):由 iceberg-catalog-sql -> sqlx-mysql 传递引入,moonlink 运行时仅初始化 PostgreSQL/REST Iceberg Catalog,不触发 MySQL RSA 握手机制。
  2. md5 0.7.0(RUSTSEC-2025-0146,已更名为 md-5):由 avro-schema 0.3.0 引入。
  3. snappy 0.4.0(RUSTSEC-2026-0046,超大缓冲区 >4 GiB 时的整数截断):由 avro-schema 0.3.0 引入,而 Iceberg Avro 清单文件通常仅为 KB 到 MB 级别。
  4. rustls-webpki 0.102.8(RUSTSEC-2026-0049、0098、0099):由 iceberg 0.6 传递树中的旧版依赖引入,主 TLS 链路已全部使用修复后的 rustls-webpki 0.103.12。