使用PEG实现运行时可扩展SQL解析器

2024-11-23

本文讨论了如何利用解析表达式语法(PEG)改进SQL解析器,使其支持运行时扩展。传统SQL解析器基于过时的技术,难以适应新的语法和语言扩展。PEG解析器允许动态修改语法,支持语法扩展、新语句甚至全新查询语言,例如将dplyr集成到SQL解析器中。文章通过实验验证了PEG的可行性,并展示了其在添加UNPIVOT语句、扩展SQL/PGQ图模式以及改进错误消息方面的应用。虽然PEG解析器在原型阶段的性能略逊于传统解析器,但其灵活性和可扩展性为SQL解析器现代化提供了 promising 的方向。

阅读更多

优化器:低调的MVP——DuckDB

2024-11-16

本文探讨了数据库查询优化器的重要性。作者比较了未优化、手动优化和DuckDB优化器优化的查询,展示了优化器如何显著提高查询性能,特别是对于复杂查询,例如涉及多表连接和过滤的查询。文章还解释了DuckDB优化器的一些关键规则,包括过滤器下推、连接顺序优化和TopN优化,以及这些规则如何协同工作以减少中间数据处理量并提高执行效率。此外,文章还强调了优化器相较于手动优化的优势:优化器能适应数据变化,自动调整查询计划,而手动优化则需要根据数据变化不断调整,难以维护。最后,文章列举了DuckDB优化器的一些其他规则,例如表达式重写、IN子句重写、统计信息传播等,并总结了优化器在数据库系统中的重要作用。

阅读更多
未分类 查询优化器

DuckDB 社区扩展发布

2024-07-05

DuckDB 推出了社区扩展仓库,方便用户使用 SQL 语句直接安装扩展。DuckDB 扩展的设计理念是在保持轻量级的同时,通过扩展机制提供丰富的功能。社区扩展仓库的推出简化了用户安装和开发者发布扩展的流程,扩展仓库提供各种平台的预编译扩展,并进行签名验证以确保安全。文章还介绍了如何使用社区扩展以及如何发布自己的扩展。

阅读更多
46
未分类

命令行数据处理:DuckDB 作为 Unix 工具

2024-06-20

这篇文章介绍了如何使用 DuckDB 作为命令行工具进行数据处理。文章首先回顾了 Unix 哲学,然后比较了 DuckDB 与传统 Unix 工具在数据处理方面的优缺点。文章使用了一些例子来演示如何使用 DuckDB 执行投影、排序、过滤、连接和替换等操作。最后,文章对 DuckDB 和传统 Unix 工具的性能进行了比较。

阅读更多
76
未分类

DuckDB 1.0.0正式发布

2024-06-03

DuckDB团队宣布正式发布DuckDB 1.0.0版本,代号为“雪鸭”。经过六年的开发,DuckDB已经拥有超过30万行C++引擎代码,积累了大量用户,下载量每月数百万次。1.0.0版本注重稳定性,解决了存储格式的兼容性问题,保证了未来版本的兼容性。DuckDB团队还获得了长期资金支持,计划进一步扩展扩展环境,并通过社区贡献的扩展来推动数据领域的革新。

阅读更多
54
未分类