PostgreSQL码农集散地

DuckDB 实时湖仓插件duckdb_mooncake

DuckDB 实时湖仓插件duckdb_mooncake

上一篇文章介绍了 Mooncake-Labs 架构核心模块 moonlink, 上游实时数据流以读优化方式入湖(iceberg), 说是实时入湖, 实际上有一部分是在moonlink的缓存里.

  • 《Mooncake-Labs 架构进化, 核心是 moonlink》

所以要读到实时数据必须要配合moonlink使用.

这不, 如果你使用duckdb作为计算引擎, 那么可使用 duckdb_mooncake 插件连接moonlink, 实时读取moonlink缓冲区+iceberg内的数据.

怎么用呢? 来看看项目文档

https://github.com/Mooncake-Labs/duckdb_mooncake


duckdb_mooncake 是 DuckDB 的一个扩展,用于实时读取由 moonlink 写入的 Iceberg 表。

安装

duckdb_mooncake 可以使用以下命令安装INSTALL:

INSTALL duckdb_mooncake FROM community;    

用法

可以使用ATTACH命令绑定 Mooncake 数据库,然后可以使用标准 SQL 查询表。

下面的示例绑定 监听地址为 '/var/lib/postgresql/data/pg_mooncake/moonlink.sock' 的moonlink 实例, 指定连接到名为 postgres 的 moonlink 数据库 。此 moonlink 实例已预先填充了一个名为 public.c 的表:

D ATTACH DATABASE 'mooncake' (TYPE mooncake, URI '/var/lib/postgresql/data/pg_mooncake/moonlink.sock', DATABASE 'postgres');    
D SELECT * FROM mooncake.public.c;    
┌───────┬─────────┐    
│  id   │   val   │    
│ int32 │ varchar │    
├───────┼─────────┤    
│     1 │ Hello   │    
│     2 │ World   │    
└───────┴─────────┘    

build 项目

要构建 duckdb_mooncake ,请输入:

git submodule update --init --recursive    
GEN=ninja make    

要运行 duckdb_mooncake ,请运行捆绑了 duckdb_mooncake 的 duckdb shell 如下:

./build/release/duckdb    

参考

https://github.com/Mooncake-Labs/duckdb_mooncake

《Mooncake-Labs 架构进化, 核心是 moonlink》