数据的价值与数据的新近程度成正比。我们可以使用内存数据库来提高速度和价值生成吗?DuckDB 在这一承诺上获得了很多关注,Dagster 团队撰写了关于其建立在 DuckDB、Parquet 和 Dagster 之上的实验性数据仓库的文章。
DuckDB 现在很火。可能有几个原因:
- 它功能丰富,在其功能集中匹配了许多常见的数据仓库
- 它很快
- 它可以在本地运行,因此您的测试可以使用与生产相同的引擎
- 它与 Python 配合得非常好,包括深度 Pandas 集成
- 它可以有效地访问远程数据集
- 它是MIT许可的
但我认为围绕 DuckDB 的炒作背后有不同的原因。
我们都有这样的感觉,即当前数据工具的爆炸式增长让事情变得更加困难和过于复杂。DuckDB 是一股清新的空气;一个功能强大、功能丰富的 SQL 引擎,速度足够快,可以在您需要的任何地方运行 - 无需 SaaS。
用 DuckDB 替换我们的云数据仓库或数据湖需要什么?
DuckDB 的局限性
那么我们是否应该删除我们的 Snowflake、BigQuery 和 Databricks 设置并用 DuckDB 替换它们?
没那么快。尽管 Data Twitter 可能会告诉您什么,但 DuckDB 确实有其局限性。一个重要的特点是它是为在单台机器上使用而设计的。如果您的数据不适合在一台机器上,那么您就完蛋了。幸运的是,如今计算机速度非常快,尤其是当您查看AWS 上的顶级产品时,许多组织没有足够大的数据来需要多台计算机。
二是DuckDB本质上是单人体验。它对磁盘上的单个文件进行操作,多人或团队很难共享数据、确保数据是最新的并同时开发模型。
但是,当 DuckDB 与少量其他技术(例如 Dagster、S3 和 Parquet)结合使用时,它可以成为一个强大的多人数据湖,可以轻松满足许多组织的需求。
我们将使用以下工具构建dbt 的 Jaffle Shop 示例的一个版本:
- 用于编排的Dagster
- DuckDB用于 SQL 转换
- S3 上用于存储的Parquet文件
最重要的是,我们将从头开始构建它。我们不会使用为这篇博文编写的任何现有库,因此希望您能学到很多关于这三个系统的知识!
出于本博文的目的,我们将其命名为DuckPond.
想直接跳到代码吗?它在 GitHub 上。
详细点击标题