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',
'<openai-api-key>');
*************************** 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<f32> {
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 现在支持
PIVOT
,UNPIVOT
,GROUP 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
- Slack Channel