DuckDB 用户调查分析
TL;DR: 我们分享了对 500 多名 DuckDB 用户进行调查的发现。
今年早些时候,我们在 DuckDB 社区进行了一项调查。我们主要对以下主题感到好奇:
- 人们如何使用 DuckDB?
- 人们在哪里使用 DuckDB?
- 他们喜欢 DuckDB 的哪些方面?
- 他们希望在未来的版本中看到哪些改进?
调查开放了大约三周。超过 500 人提交了答案,我们为参与者抽奖了 20 件 T 恤和连帽衫。
总结
以下是本次调查的关键发现总结:
- 用户最常在笔记本电脑上运行 DuckDB,但服务器也非常受欢迎。
- 最流行的客户端是 Python API 和独立的 CLI 客户端。
- 大多数用户没有庞大的数据集,但他们非常看重高性能。
- 用户希望看到与时间序列和分区数据相关的性能优化。
- DuckDB 在数据工程师、分析师和科学家中很受欢迎,在软件工程师中也很受欢迎。
让我们深入了解细节!
使用 DuckDB
环境
我们向用户询问了 DuckDB 的部署环境,发现其中大多数(87%)在他们的笔记本电脑上运行 DuckDB。这与 DuckDB 最初的愿景一致:创建一个能够利用现代终端用户设备中可用硬件能力的系统。29% 的用户在桌面工作站上运行 DuckDB,58% 的用户在服务器上运行(具体细分请参见后面的“服务器类型”部分)。
客户端
不出所料,DuckDB 最常通过 Python(73%)使用,其次是独立的命令行应用程序(47%)。第三名竞争激烈,R、WebAssembly(!)和 Java 都达到了约 14%,其次是 Node.js (Javascript) 占 9%。
接下来的几个位置,每个占 6-7%,分别是 ODBC、Rust 和 Go。最后,Arrow (ADBC) 以 5% 的份额位列前 10 名。
操作系统
我们发现,大多数用户(61%)在 Linux 服务器上运行 DuckDB。这些部署包括云实例、本地安装和持续集成 (CI) 运行器。Windows 桌面和 macOS 的用户份额相似,为 41-45%。另有 9% 的用户在 Windows 服务器上运行 DuckDB。
我们发现 Linux 桌面用户的数量相当惊人。虽然全球 Linux 桌面市场份额约为 4.5%,但29% 的受访者表示他们在 Linux 桌面版上运行 DuckDB!我们怀疑这得益于 DuckDB 在数据工程师中的受欢迎程度,他们经常使用 Linux 桌面版,因为其可定制性以及与基于 Linux 服务器的部署环境的相似性。
服务器类型
正如我们在“环境”部分所讨论的,DuckDB 经常在服务器上运行。但是这些服务器有多大,它们在哪里运行?小型服务器(内存小于 16 GB)和中型服务器(内存 16-512 GB)都很受欢迎,分别有 56% 和 61% 的用户报告在这些服务器上运行 DuckDB。约 14% 的受访者在内存超过 0.5 TB 的服务器上运行 DuckDB。
关于服务器运行的地点,本地部署和 AWS 并驾齐驱,各占 27%。紧随其后的是另外两个云平台:Microsoft Azure 和 Google Cloud Platform。最后,约 4% 的用户在 Hetzner 服务器上运行 DuckDB。
数据
数据格式
我们询问了用户在使用 DuckDB 时使用的数据格式。Parquet 是最流行的格式:79% 的用户报告使用它。CSV 紧随其后,占 73%。JSON 也非常流行,普通 JSON 占 42%,NDJSON 占 11%。约 1/3 的用户报告使用 Arrow。
数据集大小
我们询问了用户使用 DuckDB 处理的最大数据集的大小。我们将数据集大小定义为数据在未压缩 CSV 格式下存储时的大小。对于 Parquet 文件和 DuckDB 数据库文件,我们要求用户通过将其文件大小乘以 5 来近似计算 CSV 大小。
回复显示,只有少数受访者使用 DuckDB 处理大数据。对于四分之三的用户,其最大数据集大小小于 100 GB;20% 的用户处理的数据集介于 100 GB 和 1 TB 之间;约 5% 的用户涉足 1 TB 以上的领域。约 1% 的用户处理 10 TB 以上的数据集。这些发现与 MotherDuck 的 Jordan Tigani 从最近的 RedShift 使用数据集中得出的统计数据,以及 Fivetran 的 George Fraser 对 Snowflake 和 RedShift 数据集的最新分析一致。
虽然这些结果显然有些偏差——需要处理巨型数据集的用户可能(还!)不使用 DuckDB——但对较小数据集的偏向非常显著,这表明许多实际用例可以使用中小型数据集来解决。结果还表明,DuckDB 能够解决 1 TB 以上数据集的许多问题。
功能
最受欢迎的功能
我们很好奇:用户最喜欢 DuckDB 的哪些方面?这张图显示了最常见的回答:
最受欢迎的功能是高性能。用户还喜欢文件格式支持(CSV、Parquet、JSON 等)、易用性、广泛的 SQL 支持(包括友好 SQL)以及内存集成,例如对 Pandas、Arrow 和 NumPy 的支持。最后,用户提到了低内存使用、协议支持(例如 HTTPS、S3)、数据库集成和可移植性。
功能请求
我们向用户询问了他们最希望在未来 DuckDB 版本中看到的功能。最受欢迎的请求列于下表:
功能 | 百分比 |
---|---|
改进分区和与分区相关的优化 | 39% |
改进时间序列支持和预排序数据的优化 | 35% |
支持物化视图 | 28% |
支持向量搜索 | 24% |
支持通过 ODBC 连接到数据库系统 | 24% |
支持时间旅行查询(查询指定时间点的数据库) | 23% |
支持 Delta Lake 格式 | 22% |
改进 Iceberg 支持(包括写入) | 17% |
我们很高兴地报告,由于该调查是在 v1.0.0 之前进行的,而 DuckDB 现在是 1.1.1 版本,其中一些请求已经实现:
对于其余的功能请求,DuckDB Labs 正在开发中。敬请期待!
用户角色
我们要求受访者指出他们在组织中的主要角色。前 5 个答案如下:
DuckDB 在“数据”角色中很受欢迎,这不足为奇:26% 的受访者是数据工程师,14% 是数据科学家,9% 是数据分析师。调查表中的软件工程师比例出人意料地高,达 23%。最后,约 2% 的受访者表示他们的主要角色是 DBA。
结论
我们衷心感谢所有参与者抽出时间完成调查。我们将利用这些答案来指导 DuckDB 未来的发展,我们也希望本次分析的读者能从中获得有益的信息。