Databend 开源周报第 96 期
Databend Labs6月 5, 2023
英文版移步:https://www.databend.com/blog/2023-06-04-databend-weekly
Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。
What's On In Databend
探索 Databend 本周新进展,遇到更贴近你心意的 Databend。
虚拟列
查询 JSON 内部字段的优化方法之一是使用虚拟列。
首先,使用
CREATE VIRTUAL COLUMN
GENERATE VIRTUAL COLUMN
Databend 现在支持用于创建、删除、生成和修改虚拟列的一系列 SQL 语法。下面是一个简单的例子:
create table test (id int, val json);
insert into test values(1, '{"a":33,"b":44}'),(2, '{"a":55,"b":66}');
create virtual columns (val['a'], val['b']) for test;
generate virtual columns for test;
select val['a'], val['b'] from test;
+----------+----------+
| val['a'] | val['b'] |
+----------+----------+
| 33 | 44 |
| 55 | 66 |
+----------+----------+
如果你想要了解更多信息,请查看下面列出的资源。
Code Corner
一起来探索 Databend 和周边生态中的代码片段或项目。
由 AskBend 驱动的交互式文档
你还记得 AskBend 吗?AskBend 是使用 Rust 编写的知识库问答系统,由 Databend 和 OpenAI 强力驱动,可以根据 Markdown 文件创建基于 SQL 的知识库。
现在,我们已经将其集成到 Databend 官方网站中,为文档查询提供了交互式体验。
如果你想要了解更多信息,请查看下面列出的资源。
亮点
以下是一些值得注意的事件,也许您可以找到感兴趣的内容。
- 为窗口函数实现表达式支持。
- 为 SELECT list 支持 函数和别名。
range
- 新增基于标签的插入/突变/更新去重支持。
- 为 添加优化提示支持。
COPY INTO
- 阅读 Docs | Deploying a Databend Cluster,以了解手动部署 Databend 集群时的技巧。
- 阅读 Docs | Data Types - BITMAP 和 Docs | Bitmap Functions,以理解 Databend 中 BITMAP 数据类型的用法。
What's Up Next
我们始终对前沿技术和创新理念持开放态度,欢迎您加入社区,为 Databend 注入活力。
使用败者树优化排序算法
目前,Databend 的排序算法使用基于堆的归并排序。
多路合并有三种主要算法:堆排序、胜者树和败者树。在这三个算法中,每次对堆进行调整都需要与左右子节点进行比较。比较次数为 2logN,而胜者树和败者树调整 的比较次数为 logN。
它们之间的区别在于,胜者树需要与兄弟节点进行比较并更新父节点,而败者树只需要与父节点进行比较,从而减少了内存访问次数。
Issue #11604 | Feature: Update sort algorithm using Loser Tree
如果你对这个主题感兴趣,可以尝试解决其中的部分问题或者参与讨论和 PR review。或者,你可以点击 https://link.databend.com/i-m-feeling-lucky 来挑选一个随机问题,祝好运!
Changelog
前往查看 Databend 每日构建的变更日志,以了解开发的最新动态。
地址:https://github.com/databendlabs/databend/releases
与 Jupyter Notebook 集成的新方法
正如 Doc | Visualization Databend Data in Jupyter Notebook 所述,我们可以使用 Jupyter Notebook 探索 Databend 中的数据。
然而,通过 magic 技巧和 ipython-sql ,我们可以提供另一种交互方式。这种方式使得 SQL 查询看起来像是在 SQL cells 中 运行,而不需要维护用于集成的 Python 样板代码。
安装依赖
pip install ipython-sql databend-sqlalchemy
与 Jupyter Notebook 协同
In [1]: %load_ext sql
In [2]: %%sql databend://{username}:{password}@{host_port_name}/{database_name}?secure=false
...: SHOW DATABASES;
In [3]: result = %%sql SELECT * FROM numbers(100);
In [4]: %matplotlib inline
...: df = result.DataFrame()
...: df.plot()
亮点
以下是一些值得注意的事件,也许您可以找到感兴趣的内容。
- 通过选择预配置的 MySQL 驱动程序或添加 Databend JDBC 驱动程序,现在可以 使用 DBeaver 连接到 Databend。
- Databend 现已提供与 Redash 的集成,帮助你洞见数据。文档 | Integrations - Redash
- 掌握 如何显示给定表中的列信息。文档 | SHOW COLUMNS
- Databend 现在支持 和
generate_series
表函数。range
- Databend 现在支持 函数,该函数返回由 OpenAI Embeddings API 生成的 1536 维 f32 向量。
ai_embedding_vector
- Databend 增加了对 DDL 的支持。
[CREATE | DROP | SHOW] SHARE ENDPOINT
What's Up Next
我们始终对前沿技术和创新理念持开放态度,欢迎您加入社区,为 Databend 注入活力。
收集来自 Sled 的度量信息
sled 是一种嵌入式数据库,启用
metrics
Databend Meta Service 使用 sled 作为底层存储引擎。我们希望获取更多的度量信息来提高可观测性,并进一步优化。
Issue #7233 | make use of sled metrics feature for collect sled metrics
如果你对这个主题感兴趣,可以尝试解决其中的部分问题或者参与讨论和 PR review。或者,你可以点击 https://link.databend.com/i-m-feeling-lucky 来挑选一个随机问题,祝好运!
New Contributors
一起认识社区中的新伙伴,Databend 因你们而变得更加美好
- @rkmdCodes 改进错误字符串,使提示更加友好,#10269
Changelog
前往查看 Databend 每日构建的变更日志,以了解开发的最新动态。
地址:https://github.com/databendlabs/databend/releases
订阅我们的新闻简报
及时了解功能发布、产品规划、支持服务和云服务的最新信息!