Databend 开源周报第 86 期

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

What's On In Databend

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

FlightSQL 协议支持正在进行中

FlightSQL 是一种创新的开放式数据库协议,适用于现代架构。面向列设计,并提供对数据分区并行处理的无缝支持。

支持 FlightSQL 的好处包括减少不必要的序列化和反序列化,以及使用预定义的 *.proto 文件轻松支持不同语言的 SDK 实现。

Databend 正在积极开发对 FlightSQL 的支持。如果你对此感兴趣,请参考以下链接:

  • Issue #10745 | tracking: FlightSQL handler
  • PR #10732 | feat: basic impl for FlightSQL handler

将自然语言转换为 SQL

通过与流行的 AI 服务集成,Databend 现在提供一个高效的内置解决方案 - AI_TO_SQL 函数。

该函数可以将自然语言编写的指令转换为与表模式对齐的 SQL 查询语句。只需进行少量修改(或可能根本不需要),即可投入生产。

SELECT * FROM ai_to_sql(
    'List the total amount spent by users from the USA who are older than 30 years, grouped by their names, along with the number of orders they made in 2022',
    '');
*************************** 1. row ***************************
     database: openai
generated_sql: SELECT name, SUM(price) AS total_spent, COUNT(order_id) AS total_orders
               FROM users
                        JOIN orders ON users.id = orders.user_id
               WHERE country = 'USA' AND age > 30 AND order_date BETWEEN '2022-01-01' AND '2022-12-31'
               GROUP BY name;

该函数现在可在 Databend 和 Databend Cloud 上使用。要了解其工作原理,请参阅以下链接:

  • Doc | AI Functions - AI_TO_SQL
  • Blog | Databend Understands You Better with OpenAI

Code Corner

一起来探索 Databend 和周边生态中的代码片段或项目。

向量相似度查询

Databend 最近新增 cosine_distance 函数。输入是两个类型为 f32 的 slice 。

select cosine_distance([3.0, 45.0, 7.0, 2.0, 5.0, 20.0, 13.0, 12.0], [2.0, 54.0, 13.0, 15.0, 22.0, 34.0, 50.0, 1.0]) as sim
----
0.8735807

底层的 Rust 实现利用 ndarray crate 中的 ArrayView 类型高效地执行计算。

pub fn cosine_distance(from: &[f32], to: &[f32]) -> Result {
    if from.len() != to.len() {
        return Err(ErrorCode::InvalidArgument(format!(
            "Vector length not equal: {:} != {:}",
            from.len(),
            to.len(),
        )));
    }

    let a = ArrayView::from(from);
    let b = ArrayView::from(to);
    let aa_sum = (&a * &a).sum();
    let bb_sum = (&b * &b).sum();

    Ok((&a * &b).sum() / ((aa_sum).sqrt() * (bb_sum).sqrt()))
}

你还记得怎么将 scalar functions 集成到 Databend 中吗? 可以查看 Doc | How to Write a Scalar Function 和 PR | #10737 验证你的答案。

亮点

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

  • 了解如何使用 Prometheus 和 Grafana 监控 Databend :Doc | Monitor - Prometheus & Grafana
  • Databend 现在提供 Metabase 驱动 帮助你将 Databend 连接到 Metabase 并为轻松创建数据仪表板:Doc | Integrations - Metabase
  • Databend 现在支持 PIVOTUNPIVOTGROUP BY CUBE 和 GROUP BY ROLLUP 查询语法。有关更多信息,请参见 PR#10676 和 #10601 。

What's Up Next

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

启用 -Zgitoxide 以加速 Git 依赖下载

启用 -Zgitoxide 可以显著加快我们 Git 依赖的下载速度,比仅使用 Git 要快得多。

此特性可以将 cargo 与 gitoxide 集成,后者是一个纯 Rust 实现的 Git 版本控制系统,具有易用、精简、高效和安全等特点。

Issue #10466 | CI: Enable -Zgitoxide to speed our git deps download speed

如果你对这个主题感兴趣,可以尝试解决其中的部分问题或者参与讨论和 PR review 。或者,你可以点击 performance: enable xor filter index for IN · Issue #8625 · datafuselabs/databend · GitHub 来挑选一个随机问题,祝好运!

Changelog

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

地址:Releases · datafuselabs/databend · GitHub

Contributors

非常感谢贡献者们在本周的卓越工作。

Connect With Us

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

  • Databend Website
  • GitHub Discussions
  • Twitter
  • Slack Channel

你可能感兴趣的:(数据库,sql)