上一篇文章介绍了 Mooncake-Labs 架构核心模块 moonlink, 上游实时数据流以读优化方式入湖(iceberg), 说是实时入湖, 实际上有一部分是在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 │
└───────┴─────────┘
要构建 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》