duckdb 1.5功能

1.插件
INSTALL gsheets FROM community;
LOAD gsheets;

-- Authenticate with a Google Account in the browser (default)
CREATE SECRET (TYPE gsheet);
2. 函数
read_duckdb table function
COPY statement s3

3.数据类型

01.DuckDB 现原生支持 VARIANT 类型 variant VARIANT 存储的是类型化的二进制数据

02. GEOMETRY 类型直接在 DuckDB 核心运行
GEOMETRY 类型是由一组顶点(X 和 Y double 精度浮点数对)组成的“几何”数据的二进制表示
子类型包括 POINT、LINESTRING、POLYGON
DuckDB v1.5 中成为内置数据类型
Open Geospatial Consortium(OGC)组织定义的
WKT(Well-Known Text)是一种用于描述地理空间几何对象的文本格式
WKB (well-known binary) 是WKT的二进制表示形式,解决了WKT表达方式冗余的问题,
便于传输和在数据库中存储相同的信息WKB是采用二进制存储表示点线面
GeometryCollection(几何对象集)
Point(点) MultiPoint(多点) LineString(线串) Polygon(多边形)
MultiLineString(多线串) MultiPolygon(多边形集)
Coordinate Reference System (CRS)
shredding”(拆分)
同一行组内所有几何类型完全一致”的情况(例如全是二维点),
DuckDB 会把几何拆成基础数据结构(结构体、列表、浮点数),然后分别用轻量级压缩算法(如字典压缩、RLE)压缩。
Shredding 的本质是将同构的几何列打散成更小的、类型统一的列片段
数据中包含混合类型、空几何或集合类型,就会自动退回到常规存储方式
VARBINARY=varbinary
VARCHAR
VARIANT variant_extract variant_typeof variant_vector
a new storage technique 针对GEOMETRY新的存储技术
geometry_minimum_shredding_size
###
Snowflake 支持三种半结构化数据类型:
- VARIANT:通用数据类型 VARIANT是一种灵活的数据类型,可以存储多种不同的数据类型,包括JSON、ARRAY、OBJECT等。
- OBJECT
- ARRAY

parquet 版本
2.11.0版本在数据编码、类型系统和文档完善
引入了一个重要的新逻辑类型——Variant,用于表示半结构化数据。Variant类型可以存储多种数据形式
新增了GEOMETRY和GEOGRAPHY两种逻辑类型,为地理空间数据处理提供了原生支持

空间数据

观点1: 借助 DuckDB 空间扩展,非专业人士进行地理空间工作成为可能。这一切均在 SQL 环境中完成这使得生态系统得以扩展
观点2: geopandas或postgis中以某种形式已经存在,因此DuckDB的空间扩展并未带来全新功能。但作为引擎,
DuckDB的优势在于它允许在本地桌面上直接处理大规模的Parquet/Geoparquet文件(向量化和并行化)。在这方面,它优于geopandas
观点3 :地理空间分析似乎比常规数据分析落后 提供了一种替代方案 轻量级数据科学工具使用 替代 pandas API DuckDB 的魅力在于它能瞬间呈现
https://geobase.app/
https://github.com/decision-labs

数据湖 Data Lakes

data lakes: Iceberg, Hudi, and Delta

ducklake 解决方案
Data Inlining(数据内联)
01.DuckLake 使用数据库(如 PostgreSQL、SQLite)作为其 catalog
利用数据库引擎高效处理小读写的能力,避免向对象存储写入无数小文件
02.数据存 S3
03. DuckDB 扩展 + DuckLake 实例 + DuckLake 格式 format
格式是标准,实例是标准的具体落地,扩展是操作该标准的工具。
- 全局默认阈值(行数)
SET ducklake_default_data_inlining_row_limit = 50;
DuckLake 通过将小变更内联到 catalog 数据库,
从根本上避免了小文件问题,使数据湖能够高效处理持续流式写入,同时保持查询性能和 ACID 语义,无需频繁的 compaction 维护
文件格式
JSON and Avro files
数据类型
duckdb
INSTALL ducklake;

ATTACH 'ducklake:metadata.ducklake' AS my_ducklake;
USE my_ducklake;
DuckLake 让 DuckDB 从一个单机嵌入式数据库,升级为支持多实例并发读写、时间旅行、分区和多文件存储的轻量级数据湖平台
SQLite
INSTALL ducklake;
INSTALL sqlite;

ATTACH 'ducklake:sqlite:metadata.sqlite' AS my_ducklake(DATA_PATH 'data_files/');
USE my_ducklake;

INSTALL ducklake;
INSTALL postgres;

-- Make sure that the database ducklake_catalog exists in PostgreSQL.
ATTACH 'ducklake:postgres:dbname=ducklake_catalog host=your_postgres_host'
AS my_ducklake
(DATA_PATH 'data_files/');
USE my_ducklake;

Variant

编程语言 中的“Variant”类型
1991年,Visual Basic (VB) 引入了 Variant 类型
C++17也引入了 std::variant,作为一种类型安全的联合体(union)
数据库系统 中的“VARIANT”类型
例如用于处理半结构化数据的类型
PostgreSQL JSONB (2014):它是现代Variant类型的重要思想源头
mongodb BSON 是 JSON 数据的二进制编码序列化 BSON(Binary JSON)
Snowflake VARIANT (约2014起):云原生数仓Snowflake从一开始就将VARIANT作为核心数据类型
2025年
Apache Parquet 正式支持Variant逻辑类型
Apache Iceberg v3标准将Variant列为支持类型,
VARIANT 是数据库为处理 JSON 类半结构化数据而设计的专用类型。
它解决了用普通字符串存 JSON 时查询慢、无法索引、类型混乱等问题
VARIANT 正在成为半结构化数据的标准列式存储格式,而 JSON 则保留为交换格式
Apache Doris 的 VARIANT 类型,通过动态子列、稀疏列存储、延迟物化和路径索引等能力,实现了灵活结构 + 列存性能的平衡

湖仓一体

Hive 最早出现的SQL on Hadoop工具之一,Hive由Facebook开发并于2010年贡献给Apache基金会
Impala Cloudera推出的Impala放弃了MapReduce架构,采用大规模并行处理(MPP)设计,专注于低延迟的交互式查询;
Presto(最初由Facebook开发) 2013年开源
Trino (由原Presto核心团队创建)则进一步提升了分布式SQL查询的灵活性和性能 2020年从Presto分叉而来的项目
查询:Tez或Spark引擎

功能支持
事务支持(ACID) 时间旅行(time travel) 并发读写能力
时间轴(Timeline)
三要素分离:存储、计算、元数据各自独立,是云原生湖仓的标准形态
Delta Lake、Iceberg、Hudi、Paimon 四个是文件式元数据路线,
01.开源湖仓(Iceberg/Delta/DuckLake) 元数据仍绑定存储文件 元数据:用 Manifest 文件 管理文件列表、统计、索引
Delta Lake(Databricks 开源)
Iceberg(Netflix 开源)
Presto 和 Trino 当前支持通过 Hive Metastore 相关接口 + 自己解析 Deltalake 事务日志(事务 Json、Checkpoint Parquet)的方式,
来获取 Deltalake 的元数据(Table Column、统计信息等)
Paimon Apache Paimon(原名 Flink Table Store) 是 Apache 软件基金会的顶级开源项目,
核心定位是 流式优先的实时湖仓表格式(Streaming Lake Format)
02. DuckLake 走数据库元数据创新路线
03.Snowflake、BigQuery 是云原生数仓 / 湖仓的标杆,核心都是存储、计算、元数据三层彻底解耦

Snowflake/BigQuery:闭管网、全托管、三要素深度解耦、极致易用
Iceberg/Delta/Hudi:开放文件、元数据与存储绑定、重运维、高灵活
DuckLake:开放存储、元数据数据库化、轻量化、极简

Iceberg/Delta/Hudi:文件式元数据,写入生成文件,依赖 Compaction,适合大规模通用湖仓。
Paimon:LSM 树结构,流式优先,Flink 原生,适合实时更新场景。
DuckLake:SQL 数据库管理元数据,数据内联消除小文件,极简轻量化,面向嵌入式与高效分析场景。

AI 时代下的湖仓一体化

数据收集链路
结构化、半结构化、非结构化及向量数据
Vector 数据类型 知识库搜索领域 RAG
全模态向量湖

单写多读的数据

Frozen DuckLake =
把 DuckLake 的 Catalog 装进 DuckDB 文件 + 纯对象存储托管
→ 零服务、只读、秒级访问的 Serverless 数据湖。

数据迁移

支持 DuckLake ↔ Iceberg 之间全量数据拷贝与元数据浅拷贝
架构:SQL 数据库(Catalog) + Parquet 文件(数据)
三层解耦:存储 → 计算 → 元数据,各自独立扩容

参考

https://duckdb.org/2026/03/09/announcing-duckdb-150
https://duckdb.org/docs/current/sql/data_types/geometry
https://ducklake.select/2026/04/02/data-inlining-in-ducklake/
https://ducklake.select/2025/10/24/frozen-ducklake/
https://ducklake.select/2025/05/27/ducklake-01/
https://github.com/marhar/duckdb_tools/tree/main/frozen-ducklake

posted on 2026-04-10 14:59  辰令  阅读(135)  评论(0)    收藏  举报