DuckDB 2.0.0 LTS “肉桂羽鸭”
博客发布摘要: DuckDB团队很高兴地宣布,今天我们发布了DuckDB版本2.0.0 LTS,代号为“肉桂羽鸭”(Spatula cyanoptera)。这是我们迄今为止最大的功能发布,包含了精致的Quack协议、异步I/O、一流的VARIANT类型、代理模式、触发器、可扩展的SQL解析器等许多功能,基于近20,000次提交构建而成,从DuckDB 1.5版本开始。我们很自豪地发布DuckDB 2.0.0,代号“肉桂羽鸭”,以西美洲发现的一种鲜艳的红褐色鸭子命名。虽然DuckDB 1.0主要关注稳定性和向后兼容性,但DuckDB 2.0主要是一项功能发布。在这篇博客中,我们总结了亮点,然后逐步介绍了破坏性变更以及如何迁移。我们在“A Preview of DuckDB v2.0”中展示了许多新特性,详细介绍了每一个特性。有关完整的发布说明,请参见GitHub上的发布页面。小贴士:要安装新版本,请访问安装页面。一些客户端,如CLI和Python,已经可用。其他客户端库(如Go、R、Java)和一些扩展可能由于额外更改和审核过程需要几天才能发布。随着此次发布,目前有三条DuckDB线可用。DuckDB 2.0是长期支持(LTS)版本,至少支持到2027年10月。之前的LTS版本1.4仍支持到2026年11月底。为了确保顺利过渡并允许充足的测试时间,我们将DuckDB 1.5的支持期限延长至2027年3月,实际上也将其变成了LTS版本。有关详细信息,请参见发布日历。为了方便导航所有新特性的文档,我们还发布了“2.0版文档中的新功能”页面,将每个特性链接到其文档。DuckDB作为服务器,DuckDB从第一天起就是一个内联数据库。在5月发布的DuckDB 1.5.3版本中,我们引入了Quack协议,使您能够在传统的客户端-服务器设置中运行DuckDB,并提供了quack扩展,以实现DuckDB的原生协议,因此任何DuckDB进程都可以服务其数据库。Quack和CONNECT:DuckDB 2.0.0提供了经过优化的Quack协议,显著提高了性能和稳定性。它还引入了新的CONNECT语句,允许在单个命令中附加和切换到远程数据库,以提高可用性:DuckDB服务器 CALL quack_serve (token = 'my_token'); CREATE TABLE events (date DATE, name VARCHAR); INSERT INTO events VALUES ('2027-04-07', 'DuckCon #8'); quack: DuckDB客户端 ATTACH 'quack:localhost' AS qk (TOKEN 'my_token'); CONNECT qk; SELECT * FROM events; ┌────────────┬────────────┐ │ date │ name │ │ date │ varchar │ ├────────────┼────────────┤ │ 2027-04-07 │ DuckCon # 8 │ └────────────┴────────────┘ 为简单起见,此示例在同一台计算机上运行服务器和客户端。默认情况下,服务器仅监听localhost。为了接受来自其他计算机的连接,请将服务器保持在localhost上并放置在TLS终止反向代理后面。allow_other_hostname选项仅用于测试。CONNECT语句不限于Quack:它指向您任何支持的远程数据库,包括PostgreSQL和MySQL。对于这些,新的远程推送优化器将查询直接发送到远程服务器,而不是通过网络拉取表。在CLI中的Quack:CLI还提供了设置Quack客户端服务器配对的快捷方式:新的-serve和-connect参数可以从命令行直接启动Quack服务器或连接到其中:CLI服务器 duckdb -serve CREATE TABLE t AS SELECT 42 AS x; quack: CLI客户端 duckdb -connect FROM t; ┌───────┐ │ x │ │ int32 │ ├───────┤ │ 42 │ └───────┘ 性能:异步I/O DuckDB 2.0引入了用于读取Parquet和CSV文件的异步I/O。I/O层现在可以独立于查询处理层进行缩放,在后台发出读取操作,保持多个请求在进行中。这意味着远程读取的并行性大大增加,针对对象存储(如s3://)的查询速度大大加快。我们在一篇专门的博客文章中详细描述了该设计。在那篇文章中,我们展示了在使用和不使用异步I/O的查询过程中网络吞吐量:网络吞吐量。更高的利用率和更短的运行时间更好。VARIANT类型成为一等公民。VARIANT类型存储半结构化的无模式数据,如JSON,同时保持列式执行的性能。因此,您可以将其视为增强版的JSON:VARIANT列可以在每行中存储不同形状的数据,但与JSON不同,它并不是文本格式。DuckDB 1.5已经引入了VARIANT,但DuckDB 2.0完全整合了它。DuckDB 2.0检测您的数据中的常见结构并“剖析”它,因此它能够很好地压缩。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡