五分钟测试:Ted Dunning 谈 DuckDB 为何让分析更轻松
2026-11-26
9 分钟阅读
Ted Dunning 与 Geertjan Wielenga 和 Tim Cox 的对话
摘要: Ted Dunning 花了数十年构建分布式数据系统,包括 Apache Drill。他用 DuckDB 在 Raspberry Pi 上以不到一秒的时间查询了一年的家庭传感器数据,约 1 亿行。这是他关于为什么单台机器、以及一个能在五分钟内证明自身价值的工具,如今能走得很远的论证。
Ted Dunning 花了数十年构建分布式数据系统。他是 Apache Drill 的创始人之一,该项目中的向量化内存理念后来塑造了 Apache Arrow。因此,当他说过去需要集群的许多工作现在可以轻松地放在单台机器上,并且 DuckDB 是改变他对这条界线所在位置看法的工具之一时,值得注意。
一个突如其来的项目必须在五分钟内向你展示一些价值,最好是前 30 秒。
------ Ted Dunning
Raspberry Pi 上的一年传感器数据
Dunning 从散布在家中的传感器收集环境数据,测量温度、空气质量和其他条件。他最初为农业气象数据开发了这种方法。一年的读数总计约 1 亿行。
这个项目中有两个数字引人注目,它们来自技术栈的不同部分。第一个是存储。通过在写出之前按设备 ID 和时间对读数排序,Dunning 从 Parquet 获得了惊人的压缩。"Parquet 在压缩这些数据方面简直令人惊叹,"他说,对于他的传感器读数,五个测量值加上一个长设备 ID,"它能压缩到 300 比 1。"
第二个是查询速度,这就是 DuckDB 的用武之地。"在我的小 Raspberry Pi 上,我可以在四分之一秒内搜索 1 亿行数据,一年的数据,"他说。在此基础上,他构建了一个小型应用。读数从 DuckDB 以 pandas 或 NumPy 结构返回,而他的配置数据------哪个传感器在哪个房间以及他何时移动了它------存在于一个 pandas 表中,DuckDB 可以与之连接。"100 行 Python 之后,我就有了一个小型 Web 服务器,它做可视化"和查询历史。它完全响应迅速,而且,他补充说,"做起来轻而易举。"
这一切都不需要服务器、集群或数据仓库。家庭网络上的一个小板子读取 Parquet 文件,在点击一下的时间内回答关于一年数据的问题。
五分钟测试
Dunning 对新软件有一个经验法则。"一个突如其来的项目必须在五分钟内向您展示一些价值,"他说,"在您愿意花一个小时真正深入研究它之前。"最好的工具走得更远:"最好是前 30 秒,这现在在一些软件上已经可能了。"
重量级分布式系统很少能达到这个标准。Drill、Presto 和 Impala 都期望有一个服务器或集群站起来,以及已经存在于某个通常联网位置的数据。等到你有了答案,他说,"我已经不记得我为什么在找了。"DuckDB 不同。"它肯定通过了第一个五分钟测试,"他说,而 WebAssembly 构建,在浏览器标签中运行,什么都不用安装,"通过了前 30 秒那类测试。"
让其他工具更有价值
对 Dunning 来说,DuckDB 的价值与它周围的一切紧密相连。"关于 DuckDB 的一件事不是 DuckDB,"他说。"而是它周围所有它很好利用的东西。"他追溯了一条贯穿他自己工作的线:Apache Drill 中的值向量,一种可重定位的内存数据表示,输入到 Apache Arrow,这反过来使 Parquet 等格式快速移动和共享。他认为,DuckDB 让这些优点变得生动明显,因为数据就在那里,你可以将其与 CSV 文件混合,"它们无处不在。"
这符合他实际的工作方式。对于他帮助运营的一个会议,审稿人和审稿数据在内部发布在 Git 上,他使用 DuckDB 将其"吸入各种其他工具......尤其是 Julia。"他的工作哲学是让每个工具做它擅长的事。"SQL 对构建神经网络很糟糕,"他说。"但 SQL 对重新调整、处理和呈现数据很棒。"因为 DuckDB "如此容易地挂钩"到 Julia、Python 和 Go,他可以在 SQL 中抓取和重塑数据,并将数值计算交给为矩阵代数构建的语言。"查询保持非常简单和可维护,而数值计算保持非常专注于数值计算,"他说。
当被要求说出是什么让 DuckDB 如此适合这一点时,Dunning 指出了三件事。显而易见的是"它很好地使用流行数据格式,并且可以轻松地从网络、从文件、从任何地方查询。"第二个在表面之下:向量化执行和有效的多线程,普通用户永远不会说出这些,但它们让应用感觉即时。"一个大型网络集群驱动的查询系统仅仅启动就需要半秒,"他说,在它甚至完成规划之前,"而 DuckDB 在那之前几百毫秒就完成了。"第三个,他认为实际上本身就是一个功能,是安装。"安装无痛、微小且快速。"你可以把它放进容器,无需特权安装它,或者清除它并"不留痕迹。"安装程序"不炫耀,但有大量的工作让它看起来微不足道,"他说,将其比作天才音乐家和攀岩者,他们让困难的事情看起来容易。他归功于 Peter Boncz 和更广泛的团队:"这不是他的第一次竞技。他几十年来一直参与这些向量化计算的想法。"
单台机器走得更远
传感器项目背后有一个更广泛的论点,而 Dunning 很有资格提出它。"15 年前我们需要集群来扩展到大规模数据,而如今在一台机器上你可以做非常多的事情,"他说,"而且那个限制甚至不是硬性的。"把 DuckDB 放在比 Raspberry Pi 更强大的东西上,他说,结果会变得极其高效。
他小心不过度夸大,在退回到------如他所说------一个老顽固之前抓住了自己。但硬件确实变了。作为洛斯阿拉莫斯的实习生,他接触了第一台 Cray-1,当时世界上最快的计算机,他指出它"比 Raspberry Pi 慢得多。"一代人的工程投入到了扭曲问题以适应微小机器和缓慢网络。"仅仅为了能做简单的事情就需要那种程度的扭曲,现在已经不必要了,"他说。"计算机现在匹配我们世界的规模。"
这不是说分布式计算过时了。他指出,真正巨大的数据集根本不属于数据库。这是一个论点:默认不再必须是集群,而对于一大类分析工作,运行 DuckDB 的单台机器是更简单更快的答案。"第一步相当 modest,"他说,"但似乎没有最后一步。"
一个易用的引擎,以及展望
Dunning 还看到 DuckDB 出现在他没有放置它的地方。在传感器项目上使用 AI 助手时,当它自己伸手去拿 DuckDB 时,他很惊讶。"没有提示它就说,'哦这里有一个 DuckDB 查询,'"他回忆道。"这不仅对我来说显而易见,对 AI 也显而易见。"他将其视为 DuckDB 传播之广的标志,以及它对数据库以外领域专家来说多么易用。
他近年自己的研究集中在安全上,特别是权限如何授予和委托。他引用一项调查发现"80% 的数据泄露......是由于配置错误",并认为真正的问题是系统太复杂,人们无法安全使用。他想构建安全"如此简单,你一眼就能看到"的系统,他认为 DuckDB 和 AI 智能体都适合其中。他描述了"给智能体一点点权限,传递给实际要做工作的东西,这可能涉及下游三次转接的 DuckDB",而没有任何转接继承他的身份。"我希望它们凭这一个权限做这一个任务,"他说。
这是他正在探索的方向,而不是他已部署的系统,但它遵循他使用 DuckDB 的其余工作相同的直觉:保持活动部件少,让一个简单的工具做得比它的规模暗示的更多。