暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DuckDB 用户调查分析

alitrack 2024-10-28
185

DuckDB 用户调查分析

作者:Gabor Szarnyas

原文:https://duckdb.org/2024/10/04/duckdb-user-survey-analysis.html

image

我们分享了来自 500 多名 DuckDB 用户的调查结果。


今年早些时候,我们在 DuckDB 社区开展了一项调查,主要想了解以下几个问题:

  1. 1. 用户是如何使用 DuckDB 的?

  2. 2. 他们在什么环境中使用 DuckDB?

  3. 3. 用户对 DuckDB 的哪些功能特别满意?

  4. 4. 他们希望在未来的版本中看到哪些改进?

这次调查持续了约三周时间,超过 500 名用户提交了他们的回答。作为感谢,我们在参与者中抽取了 20 名幸运者,送出了 T 恤和连帽衫作为奖励。

总结

我们将此次调查的主要发现总结如下:

  • • DuckDB 最常在笔记本电脑上运行,但服务器上的使用也相当普遍。

  • • 最受欢迎的客户端是 Python API 和独立的命令行工具(CLI)。

  • • 虽然大多数用户处理的不是超大数据集,但他们非常看重 DuckDB 的高性能。

  • • 用户希望 DuckDB 能在处理时间序列和分区数据时,进一步提升性能表现。

  • • DuckDB 在数据工程师、分析师和科学家群体中备受青睐,同时也吸引了许多软件工程师的关注。

接下来,让我们深入了解这些发现的细节!

使用 DuckDB

使用环境

我们询问了用户关于 DuckDB 部署环境的情况,发现大多数用户(87%)是在笔记本电脑上运行 DuckDB。这与 DuckDB 的初衷一致——充分利用现代终端设备的硬件能力。29% 的用户在台式工作站上使用它,而 58% 的用户则在服务器上运行(具体详情见服务器类型
部分)。

DuckDB 使用环境

客户端工具

根据调查,DuckDB 最常通过 Python 使用(73%),这与 Python 语言的流行度[1]相吻合。接下来是 独立命令行工具[2](47%)。
第三名的竞争尤为激烈,R、WebAssembly 和 Java 各占大约 14%,Node.js (Javascript) 则占 9%。

DuckDB 客户端工具

此外,还有 ODBC、Rust 和 Go 各占 6-7%,而 Arrow (ADBC) 以 5% 的使用率排在前十名的末尾。

操作系统

大多数用户(61%)在 Linux 服务器上运行 DuckDB,这些包括云服务器、本地安装和持续集成(CI)环境。Windows 桌面和 macOS 用户的比例相近,各占 41-45%。还有 9% 的用户在 Windows 服务器上运行 DuckDB。

DuckDB 平台

Linux 桌面的用户比例相当高,约为 29%。要知道,虽然 Linux 桌面市场份额[3] 仅有 4.5%,但这一比例的 DuckDB 用户表明,DuckDB 在数据工程师群体中广受欢迎。这些用户常常选择 Linux 桌面环境,因为它具备高度的定制性,并且与 Linux 服务器部署环境相似。

服务器类型

如前所述,DuckDB 经常在服务器上运行。那么这些服务器的配置如何呢?根据用户反馈,56% 的用户在小型服务器(少于 16 GB 内存)上运行 DuckDB,61% 的用户使用中型服务器(16-512 GB 内存)。另外,14% 的用户则在大型服务器(内存超过 0.5TB)上运行 DuckDB。

服务器类型

至于服务器的部署位置,27% 的用户选择了本地部署,另外 27% 的用户则使用了 AWS 云服务。接下来是 Microsoft Azure 和 Google Cloud Platform,分别占据了少量份额。而约 4% 的用户使用 Hetzner 服务器。

服务器位置

数据

数据格式

我们还调查了用户在使用 DuckDB 时选择的数据格式。结果显示,Parquet 是最受欢迎的格式,79% 的用户使用它。CSV 紧随其后,占 73%。JSON 也颇受欢迎,其中普通 JSON 占 42%,NDJSON 占 11%。此外,约三分之一的用户使用 Arrow 格式。

数据格式

数据集规模

我们还询问了用户用 DuckDB 处理的最大数据集规模。我们将 数据集大小 定义为数据以未压缩 CSV 格式存储时的大小。对于 Parquet 文件和 DuckDB 数据库文件,建议用户将文件大小乘以 5 来估算 CSV 大小。

调查结果表明,只有少数用户使用 DuckDB 处理 大数据。约 ¾ 的用户处理的数据集小于 100 GB,20% 的用户处理的数据集规模在 100 GB 到 1 TB 之间,约 5% 的用户处理了 1 TB 以上的数据集。还有约 1% 的用户处理了超过 10 TB 的超大数据集。
这些结果与 RedShift 数据集[4] 和 Snowflake 及 RedShift 使用分析[5] 的数据基本一致。

数据集规模

尽管如此,调查结果显示,使用 DuckDB 处理大数据的用户比例较小。这说明很多现实场景可以通过小型或中型数据集来解决。同时,DuckDB 在处理 1 TB 以上的数据集时依然能胜任不少复杂任务。

功能

最受欢迎的功能

我们很感兴趣用户最喜欢 DuckDB 的哪些功能。根据调查结果显示,高性能 是最受欢迎的功能。
此外,用户还很喜欢 文件格式支持(如 CSV、Parquet、JSON 等),简单易用广泛的 SQL 支持(包括 友好的 SQL 语法[6])以及内存集成,如对 Pandas、Arrow 和 NumPy 的支持。
用户还提到了低内存占用、协议支持(如 HTTPS、S3)、数据库集成以及跨平台的便携性。

最受欢迎的功能

功能需求

我们还询问了用户希望在未来的 DuckDB 版本中看到哪些新功能。以下是最受欢迎的请求:

功能比例
改进分区支持以及与分区相关的优化39%
改进时间序列数据支持及预排序数据优化35%
支持物化视图28%
支持向量搜索24%
支持通过 ODBC 连接数据库24%
支持时间旅行查询(查询指定时间点的数据)23%
支持 Delta Lake 格式22%
改进对 Iceberg 格式的支持(包括写入)17%

值得一提的是,自调查以来,DuckDB 已从 v1.0.0 版本更新至 v1.1.1,部分用户请求的功能已经实现:

  • • 现在可以通过 `delta` 扩展 读取 Delta Lake 数据。

  • • 通过 `vss` 扩展,DuckDB 现在支持向量搜索功能。

其他功能也在积极开发中,未来的更新将逐步满足这些需求。敬请期待!

用户角色

最后,我们还询问了用户在组织中的主要职责。前五名角色如下:

用户角色

不出所料,DuckDB 在与数据相关的角色中非常受欢迎:26% 的受访者是数据工程师,14% 是数据科学家,9% 是数据分析师。出乎意料的是,23% 的受访者是软件工程师。还有约 2% 的受访者是数据库管理员(DBA)。

结论

我们非常感谢所有参与者抽出时间完成此次调查。

这些反馈将帮助我们在未来的发展中更加贴近用户需求。我们也希望这篇调查分析能为大家提供有价值的信息。

引用链接

[1]
 Python 语言的流行度: https://www.tiobe.com/tiobe-index/python/
[2]
 独立命令行工具: https://duckdb.org/docs/api/cli/overview
[3]
 Linux 桌面市场份额: https://gs.statcounter.com/os-market-share/desktop/worldwide/2024
[4]
 RedShift 数据集: https://motherduck.com/blog/redshift-files-hunt-for-big-data/
[5]
 Snowflake 及 RedShift 使用分析: https://www.fivetran.com/blog/how-do-people-use-snowflake-and-redshift
[6]
 友好的 SQL 语法: [https://duckdb.org/docs/sql/dialect/friendly_sql


文章转载自alitrack,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论