SQL 接口、视图与配置参数参考手册
pg_mooncake (v0.3.0) 完整 SQL 存储过程、元数据函数与 GUC 配置参数参考手册,涵盖 mooncake.create_table、create_snapshot、optimize_table、list_tables 与 DuckDB 参数。
本节提供 pg_mooncake(v0.3.0) 暴露的全部 SQL 存储过程、表状态查询函数、表访问方法(TAM)以及 PostgreSQL GUC 配置参数的完整参考。
SQL 存储过程与函数(mooncake Schema)
| 对象名称 | 完整函数签名 | 功能说明 |
|---|---|---|
mooncake.create_table |
CALL mooncake.create_table(dst text, src text, src_uri text DEFAULT NULL, table_config json DEFAULT NULL) |
创建只读的 USING mooncake 列存镜像表(dst),从当前本地数据库或远程 PostgreSQL URI(src_uri)中的源表(src)实时复制数据。 |
mooncake.create_snapshot |
CALL mooncake.create_snapshot(dst text) |
等待 Moonlink 追平当前 PostgreSQL WAL 写入 LSN,将内存 Arrow 写缓冲区刷盘为 Parquet,并写入新的 Apache Iceberg v2 元数据快照。 |
mooncake.optimize_table |
CALL mooncake.optimize_table(dst text, mode text) |
对目标列存镜像表 dst 执行文件合并(Compaction)与删除向量清理(mode 支持 'full' 或 'minor')。 |
mooncake.list_tables |
SELECT * FROM mooncake.list_tables() |
表值函数,返回当前数据库中所有活跃 Moonlink 表的 (table text, commit_lsn pg_lsn, flush_lsn pg_lsn, iceberg_warehouse_location text)。 |
mooncake.load_files |
CALL mooncake.load_files(dst text, files text[]) |
在 v0.3.0 中未实现;调用时会显式抛出 SQLSTATE 0A000(FEATURE_NOT_SUPPORTED),避免旧版静默空操作造成的误导。 |
mooncake.list_tables() 返回列说明
| 列名 | 数据类型 | 说明 |
|---|---|---|
table |
text |
列存镜像表的带 Schema 完整名称(例如 public.orders_analytics)。 |
commit_lsn |
pg_lsn |
已摄取进入 Moonlink 内存 Arrow 写缓冲区的最新 PostgreSQL WAL LSN。 |
flush_lsn |
pg_lsn |
已持久化刷盘至 Parquet / Iceberg 快照存储的最新 PostgreSQL WAL LSN。 |
iceberg_warehouse_location |
text |
存放该表 Apache Iceberg v2 元数据与 Parquet 数据文件的本地目录($PGDATA/pg_mooncake/...)或云端路径(s3://...)。 |
表访问方法与事件触发器
- 表访问方法(
USING mooncake):由mooncake.create_table自动创建,并在扩展加载时通过RegisterDuckdbTableAm("mooncake")注册至pg_duckdb 1.2.0。 - 删表清理触发器(
mooncake_drop_trigger):当对列存镜像表执行DROP TABLE <dst>;时,ON sql_drop事件触发器(mooncake_drop_trigger_func)会自动从 Moonlink 注销该表并清理对应的逻辑复制订阅。
GUC 配置参数参考
| 参数名称 | 类型 | 默认值 | 上下文 | 参数说明 |
|---|---|---|---|---|
mooncake.default_bucket |
string |
''(本地 $PGDATA/pg_mooncake) |
USERSET / SUSET |
新创建的 Mooncake 表写入 Parquet 数据文件与 Apache Iceberg v2 元数据的默认对象存储桶路径(例如 's3://my-bucket/warehouse')。 |
mooncake.extension_repository |
string |
$(pg_config --sharedir)/extension/pg_mooncake |
SUSET |
存放随包安装的 v2.0.0/<platform>/mooncake.duckdb_extension 二进制文件的本地扩展仓库目录。 |
mooncake.enable_local_cache |
bool |
true |
SUSET |
写入云端对象存储时是否启用本地磁盘缓存。 |
duckdb.allow_community_extensions |
bool |
false(必须设为 true) |
SUSET |
pg_duckdb 要求开启此项以允许 pg_mooncake 加载 mooncake 存储扩展。 |
duckdb.allow_unsigned_extensions |
bool |
false(必须设为 true) |
SUSET |
允许 pg_duckdb 从本地 mooncake.extension_repository 加载编译生成的 mooncake.duckdb_extension。 |
duckdb.max_memory |
string |
4GB(或可用内存 80%) |
SUSET |
分配给内嵌 DuckDB 2.0 向量化执行引擎的最大内存上限。 |
duckdb.threads |
int |
-1(全部 CPU 核心) |
SUSET |
DuckDB 2.0 用于并行向量化查询执行的工作线程数。 |
专题参考指南
详解本地与远程(src_uri)复制、初始快照拷贝选项、分区表支持以及 table_config JSON 参数。
支持的分析型 SQL 查询形态、聚合与过滤、行存混合关联,以及在 PostgreSQL 中暴露 DuckDB 原生函数。
配置 AWS S3 与 Cloudflare R2 密钥、生成 Iceberg v2 快照,并从外部计算引擎直接读取 Mooncake 表。
在 PostgreSQL 内直接扫描外部 Parquet、CSV、JSON、Iceberg、Delta Lake 及 HuggingFace 数据集。
使用 CALL mooncake.create_table 从本地或远程 PostgreSQL 表创建实时同步的 USING mooncake 列存镜像表。
解析 pg_mooncake 如何通过 DuckDB 2.0 执行向量化分析查询、支持的 SQL 查询形态、行存混合关联,以及在 PostgreSQL 中暴露 DuckDB 函数。
为 pg_mooncake 配置 AWS S3、Cloudflare R2 或本地存储,调用 mooncake.create_snapshot 生成 Apache Iceberg v2 快照,并从外部计算引擎直接读取。
通过 pg_duckdb 在 PostgreSQL 内直接查询外部 Parquet、CSV、JSON、Apache Iceberg、Delta Lake 及 HuggingFace 数据集,并与本地表关联。