Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。
What's On In Databend
探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。
新数据类型:BITMAP
Databend 新增对 BITMAP
数据类型的支持。
BITMAP 是一种压缩数据结构,可用于高效地存储和操作布尔值集合,常用于加速去重计数。
> CREATE TABLE IF NOT EXISTS t1(id Int, v Bitmap) Engine = Fuse;
> INSERT INTO t1 (id, v) VALUES(1, to_bitmap('0, 1')),(2, to_bitmap('1, 2')),(3, to_bitmap('3, 4'));
> SELECT id, to_string(v) FROM t1;
┌──────────────────────┐
│ id │ to_string(v) │
│ Int32 │ String │
├───────┼──────────────┤
│ 1 │ 0,1 │
│ 2 │ 1,2 │
│ 3 │ 3,4 │
└──────────────────────┘
Databend 中的 BITMAP
数据类型实现使用 RoaringTreemap
。与其他位图实现相比,使用这种数据结构可以提高性能并减少内存使用。
如果你想要了解更多信息,请查看下面列出的资源。
- PR #11097 | feat: add bitmap data type
- Website | Roaring Bitmaps
- Paper | Consistently faster and smaller compressed bitmaps with Roaring
设计并实现新的哈希表以改善 Hash Join 性能
此前 Databend 为聚合函数优化了哈希表实现,但这一实现并不适用于 Hash Join 。为了进一步提高 Hash Join 的性能,团队设计并实现了一个专门为此优化的哈希表。
哈希表的大小会根据构建阶段的行数进行分配,值类型也会替换为支持 CAS 操作的指针,从而确保内存控制而无需进行 Vec 增长。
新的实现显著提高了性能。查看下面的资源以获取更多信息:
- PR #11140 | feat(query): new hash table and parallel finalize for hash join
Code Corner
一起来探索 Databend 和周边生态中的代码片段或项目。
Rust 编译挑战和解决方案 - 编译时间篇
在复杂的项目依赖和样板代码堆积之下,对于 Databend 这样的中大型 Rust 程序而言,编译实在算不上是一件轻松的事情。
为了解决编译时间上面临的一些挑战,Databend 团队从可观测性、编译工具链与配置和代码重构等方面入手,进行了一系列针对性的优化。
如果你想要了解更多信息,请查看下面列出的资源。
- Databend 中的 Rust 编译时间优化小技巧
亮点
以下是一些值得注意的事件,也许您可以找到感兴趣的内容。
- Databend 正在参与 OSPP 2023 项目,欢迎感兴趣的同学踊跃报名:OSPP2023 - Databend.
- 查看文档 Docs | Developing with Databend using Rust 了解如何使用
databend-driver
开发 Rust 应用程序。 - 想要了解如何使用 BendSQL 来管理 Databend 数据库和查询?现在就来阅读文档 Docs | BendSQL !
- Databend 支持多种数据导入方式,阅读文档 Docs | Loading from a Stage 和 Docs | Loading from a Bucket,掌握从 Stage 和对象存储的 Bucket 导入数据的实用技能。
- Databend 现在提供
table-meta-inspector
实用工具,用于解码 Databend 中表的元数据。
What's Up Next
我们始终对前沿技术和创新理念持开放态度,欢迎您加入社区,为 Databend 注入活力。
寻找函数开发贡献者
Databend 现在正在积极推进函数的实现和改进工作,我们期待你的帮助!
目前计划补全的函数共有 4 类,非常适合对数据库设计和实现感兴趣的同学:
- Bitmap Functions
- Window Functions
- Geo Functions
- JSON Functions and Operators
如果你对编写函数感兴趣,但不知如何下手,可以参阅下面的两篇文档了解如何编写标量函数和聚合函数:
- How to Write Scalar Functions
- How to Write Aggregate Functions
期待能够与你共同协作,推动函数的进一步完善。
Issue #11220 | Tracking: functions
如果你对这个主题感兴趣,可以尝试解决其中的部分问题或者参与讨论和 PR review 。或者,你可以点击 servcices/vercel_artifacts: Tracking issues of not passed test cases · Issue #2198 · apache/incubator-opendal · GitHub 来挑选一个随机问题,祝好运!
Changelog
前往查看 Databend 每日构建的变更日志,以了解开发的最新动态。
地址:Releases · datafuselabs/databend · GitHub
Contributors
非常感谢贡献者们在本周的卓越工作。
Connect With Us
Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。
- Databend Website
- GitHub Discussions
- Slack Channel