SuperAPI AI 工具集

ducklake

数据与分析

查看项目

更新于 10-15 17:29

技能介绍

用途:DuckLake 是构建在 DuckDB 之上的开源湖仓(lakehouse)格式,用 SQL 目录数据库(PostgreSQL、DuckDB、SQLite)管理元数据,数据以 Parquet 文件存放在本地、S3、R2、GCS、Azure 等任意后端。每次变更生成不可变快照,支持时间旅行、变更流与冲突解决。

主要能力:支持 DDL/DML、MERGE INTO 实现 upsert(无主键)、仅元数据的模式演进(增删改列、重命名、无损类型提升)、快照与时间旅行(按版本或时间戳查询)、快照间变更流、分区(identity、year、month、day、hour)、维护操作(合并小文件、过期快照、清理旧文件、删除孤儿文件、重写数据文件)以及持久化配置(parquet_compression、target_file_size 等)。

使用方式:先 INSTALL ducklake; LOAD ducklake;,再用 ATTACH 'ducklake:metadata.ducklake' AS my_lake 连接本地目录,或 ATTACH 'ducklake:postgres:dbname=ducklake host=myhost' AS my_lake (DATA_PATH 's3://my-bucket/data/') 连接 PostgreSQL 目录与 S3 存储;可加 READ_ONLY、SNAPSHOT_VERSION、SNAPSHOT_TIME 选项。查询用 SELECT * FROM tbl AT (VERSION => 3) 或 AT (TIMESTAMP => ...),变更流用 my_lake.table_changes('tbl', 2, 5)。

限制:无索引、主键、外键、唯一约束与检查约束,仅支持 NOT NULL;用 MERGE INTO 替代 INSERT ... ON CONFLICT;删除为 merge-on-read(写删除文件),更新等于同一事务内 DELETE + INSERT;分区仅影响新数据;类型提升仅限无损方向(int8→int16/32/64、int16→int32/64、int32→int64、float32→float64)。