博客

Databend 开源周报第 151 期

Databend LabsJul 1, 2024

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn

What's On In Databend

探索 Databend 本周新进展,遇到更贴近你心意的 Databend。

支持递归调用 UDFs

Databend 现在已经支持递归调用用户定义函数,使其能够适用于处理可以被分解为多个相似子问题的任务,进一步扩展了其应用场景和功能复杂性。

示例如下:

> CREATE FUNCTION gcd (INT, INT) RETURNS BIGINT LANGUAGE javascript HANDLER = 'gcd_js' AS $$
export function gcd_js(a, b) {
while (b != 0) {
let t = b;
b = a % b;
a = t;
}
return a;
}
$$

> select number, gcd(number * 3, number * 6), gcd(3, gcd(number * 3, number * 6))
from numbers(5)
where number > 0
order by 1;

如果您想了解更多信息,欢迎联系 Databend 团队,或查看下面列出的资源。

Beyond the Code

一起来探索 Databend 社区和周边生态中的新鲜事。

Databend 全新官网上线

Databend 的官方中英文网站在近日迎来全面更新,采用全新的设计语言与风格,帮助您更好了解如何使用 Databend 支持您的业务。

Highlights

以下是一些值得注意的事件,也许您可以找到感兴趣的内容。

  • 支持将元数据服务的状态机持久化到磁盘。
  • databend-common-ast 现已发布到 crates.io 。
  • MERGE INTO 语句支持行获取(row fetch),大幅减少需要处理的数据量。

What's Up Next

我们始终对前沿技术和创新理念持开放态度,欢迎您加入社区,为 Databend 注入活力。

优化败者树

普遍认为败者树比堆快两倍,我们计划引入败者树改善多路归并排序。但在 PR 15869 的尝试中,需要获取 top2 导致败者树在每次迭代过程中会被访问两次。而标准库的堆经过深度优化,导致目前败者树的性能看上去不太理想。

我们希望优化败者树实现或者使用某种变体来改善这种情况。

Issue #15925 | Feature: Optimize loser tree

如果你对这个主题感兴趣,可以尝试解决其中的部分问题或者参与讨论和 PR review。或者,你可以点击 https://link.databend.rs/i-m-feeling-lucky 来挑选一个随机问题,祝好运!

Changelog

前往查看 Databend 每日构建的变更日志,以了解开发的最新动态。

地址:https://github.com/datafuselabs/databend/releases

分享本篇文章

订阅我们的新闻简报

及时了解功能发布、产品规划、支持服务和云服务的最新信息!