Skip to main content

One post tagged with "weekly"

View All Tags

Alt text

英文版移步:https://www.databend.com/blog/2024-04-22-databend-weekly

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

What's On In Databend

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

全文检索能力进阶

在近期的更新中,Databend 进一步增强了全文检索能力,对 matchquery 函数进行了扩展和优化,使得用户能够根据复杂的需求进行精确的搜索和数据检索。

Alt text

英文版移步:https://www.databend.com/blog/2024-04-15-databend-weekly

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

What's On In Databend

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

支持 EXECUTE IMMEDIATE

Databend 现已支持 EXECUTE IMMEDIATE 命令,此命令允许用户在单个语句中执行复杂的 SQL 逻辑,提供更为灵活的 SQL 处理能力。

Alt text

英文版移步:https://www.databend.com/blog/2024-04-08-databend-weekly

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

What's On In Databend

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

支持 CHANGES 子句

Databend 现已支持 CHANGES 子句,用于检索不同事务边界之间的变更跟踪元数据。

CHANGES 子句允许在指定的时间间隔内查询表的变更跟踪元数据,而无需创建具有显式事务偏移量的流。

示例如下:

bendsql> select * from t changes(information => default) at (stream => s) order by a, b;
+------+------+---------------+----------------------------------------+------------------+
| a | b | change$action | change$row_id | change$is_update |
+------+------+---------------+----------------------------------------+------------------+
| 2 | 1 | DELETE | d60dab8545424894ba9ea2cb0baad51e000001 | 1 |
| 2 | 2 | INSERT | d60dab8545424894ba9ea2cb0baad51e000001 | 1 |
| 3 | 3 | INSERT | 8ba7cb6acc7e4dd5aab03f9d32e0ccb8000000 | 0 |
+------+------+---------------+----------------------------------------+------------------+

bendsql> select * from t changes(information => append_only) at (stream => s) order by a, b;
+------+------+---------------+------------------+----------------------------------------+
| a | b | change$action | change$is_update | change$row_id |
+------+------+---------------+------------------+----------------------------------------+
| 3 | 3 | INSERT | 0 | 8ba7cb6acc7e4dd5aab03f9d32e0ccb8000000 |
+------+------+---------------+------------------+----------------------------------------+

其中 INFORMATION => { DEFAULT | APPEND_ONLY } 用于指定跟踪数据的类型:

  • DEFAULT 类似标准流,会跟踪插入、删除、更新。
  • APPEND_ONLY 类似仅追加流,只跟踪追加的行。

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

Code Corner

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

Databend X 开源之夏,敬请期待

开源之夏是由中国科学院软件研究所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬勃发展,助力开源软件供应链建设。

今年是 Databend 第三次参与 OSPP 开源之夏活动,欢迎感兴趣的同学关注社区进展,目前我们正在积极准备项目选题。

图片

待项目发布后,我们将会组织相关的宣讲活动和项目解析,感兴趣的同学可以先准备起来。期待这个夏天与你相遇!

开源之夏 2024 - Databend

Highlights

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

What's Up Next

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

为 BendSQL 增加更多实用命令

BendSQL 是专为 Databend 和 Databend Cloud 设计的交互式命令行工具,我们计划为其增加更多实用命令,进一步提高其可用性,改善用户体验。

目前已经支持的命令包括:

CommandsDescription
!exitExit bendsql
!quitExit bendsql
!configsShow current settings
!setSet settings
!source fileSource file and execute

这是一个 good first issue(新手友好问题),旨在引导对 Rust 和 Databend 感兴趣的同学参与。请查看 Issue 以了解计划支持的其他命令。

Issue bendsql#354 | Useful commands

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

Changelog

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

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

Alt text

英文版移步:https://www.databend.com/blog/2024-04-01-databend-weekly

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

What's On In Databend

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

支持多表插入

Databend 现已支持多表插入,可以根据实际需要将数据插入到多张不同的表中,支持无条件插入和有条件插入两种模式。

Alt text

英文版移步:https://www.databend.com/blog/2024-03-25-databend-weekly

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

What's On In Databend

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

支持查询匹配倒排索引

倒排索引是文档检索系统中最常用的数据结构,用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。

Databend 现已支持在查询中使用 match 匹配倒排索引。

Alt text

英文版移步:https://www.databend.com/blog/2024-03-18-databend-weekly

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

What's On In Databend

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

理解 Databend 中的任务与通知

Databend 现已支持完备的任务与通知机制。

任务会根据计划或基于 DAG 的任务图执行指定的 SQL 语句。利用通知集成,可以向外部消息服务发送通知。

Alt text

英文版移步:https://www.databend.com/blog/2024-03-11-databend-weekly

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

What's On In Databend

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

支持查询队列

Databend 现已支持查询队列功能,通过设置 max_running_queries 确定可最大并发运行的查询数量。如有更多查询,这些查询会排入队列,直到处理资源被释放。

例如,max_running_queries=3 表示最大支持 3 个查询并发运行,任何新加入的查询将会被阻塞,直到之前的某个查询执行完毕。

Alt text

英文版移步:https://www.databend.com/blog/2024-03-04-databend-weekly

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

What's On In Databend

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

支持多语句事务

Databend 现已支持提供基本的多语句事务支持。

多语句事务的用途包括:

  • 在单个事务中对多个表执行 DML 变更。
  • 根据中间计算分多个阶段对单个表执行变更。

Alt text

英文版移步:https://www.databend.com/blog/2023-10-01-databend-weekly

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

What's On In Databend

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

数据导入具有额外列的表

默认情况下,COPY INTO 会按照文件中的字段顺序与表中对应的列进行匹配,从而将数据导入到表中。关键在于确保文件和表之间的数据正确对齐。

如果表中的列数大于文件中的字段数,可以手动指定需要导入数据的列来保证对齐。

而在导入 CSV 格式的数据文件时,如果表中的列数大于文件中的字段数,且额外列位于表的末尾,则可以使用 FILE_FORMAT 选项 ERROR_ON_COLUMN_COUNT_MISMATCH 来导入数据。

如果您想了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-09-24-databend-weekly

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

What's On In Databend

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

理解用户自定义函数(UDF)

用户自定义函数(User-Defined Function,UDF)允许你的自定义操作与 Databend 进行集成,从而更好地处理数据、执行任务,构造更合理的数据工作流。

Databend 目前支持两种形式的用户自定义函数:使用 SQL lambda 表达式编写或者用 Python 等编程语言实现 UDF 服务器注册。用户自定义函数可以作为 Databend 查询处理流程的一部分执行。

使用 UDFs 的优点包括:

  • 自定义数据转换。
  • 优化性能。
  • 改善代码可重用性。

如果您想了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-09-17-databend-weekly

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

What's On In Databend

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

理解 SHARE ENDPOINT

SHARE ENDPOINT 是 Databend 数据共享中的一个重要概念,用于指定数据共享实例的端点和租户名称。数据的访问方和使用方需要定义 SHARE POINT 来帮助 Databend 实例定位和访问与其共享的数据。

例如,如果租户 A 对租户 B 共享数据,那么租户 B 需要创建对应的 SHARE ENDPOINT,使租户 B 所处的实例能够定位和访问共享的数据。

CREATE SHARE ENDPOINT IF NOT EXISTS from_TenantA
URL = '<share_endpoint_url>'
TENANT = A
COMMENT = 'Share endpoint to access data from Tenant A';

如果您想了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-09-10-databend-weekly

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

What's On In Databend

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

使用 BendSQL 管理 Stage 中的文件

Databend 推荐使用 PRESIGN 来将文件上传到 stage 中或者将文件下载到本地。PRESIGN 会生成一个带有时间限制的预签名 URL ,提供了一种安全高效的数据传输方式,并且减少文件传输的延迟。

对于 BendSQL 客户端的用户而言,可以利用 PUT 命令将文件上传到 Stage 并使用 GET 命令下载 Stage 中的文件。

root@localhost:8000/default> PUT fs:///books.parquet @~

PUT fs:///books.parquet @~

┌───────────────────────────────────────────────┐
│ file │ status │
│ String │ String │
├─────────────────────────────────────┼─────────┤
│ /books.parquet │ SUCCESS │
└───────────────────────────────────────────────┘

GET @~/ fs:///fromStage/

┌─────────────────────────────────────────────────────────┐
│ file │ status │
│ String │ String │
├───────────────────────────────────────────────┼─────────┤
│ /fromStage/books.parquet │ SUCCESS │
└─────────────────────────────────────────────────────────┘

如果您想了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-09-03-databend-weekly

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

What's On In Databend

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

利用 Cluster Key 优化查询性能

通过定义 Cluster Key ,可以引导 Databend 对表进行聚类来提高查询性能,此时数据将会根据 Cluster Key 来组织和分组,而不仅仅依赖数据摄入的顺序。从而优化大型表的数据读取逻辑,加速查询。

一旦表设定了 Cluster Key ,在使用 COPY INTOREPLACE INTO 这两种方式写入数据时,会自动执行 compact 和 recluster 操作。

由于执行聚类和重聚类操作需要消耗一定的时间,所以我们建议主要为查询性能较慢的大型表定义集群键。

如果您想了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-08-27-databend-weekly

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

What's On In Databend

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

What's On In Databend

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

多源数据目录

在 Databend 中,Catalog 是数据组织的最高一级抽象,可以帮助用户高效管理和访问数据源。

Databend 具备多源数据目录(Multiple Catalog)能力,目前已经支持 Apache Iceberg 和 Apache Hive 两类外部 Catalog 。

通过挂载外部 Catalog ,无需将数据加载到 Databend 中,就可以进行高效查询。

-- Create a Hive catalog
CREATE CATALOG hive_ctl
TYPE = HIVE
CONNECTION =(
METASTORE_ADDRESS = '127.0.0.1:9083'
URL = 's3://databend-toronto/'
AWS_KEY_ID = '<your_key_id>'
AWS_SECRET_KEY = '<your_secret_key>'
);

如果您想了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-08-20-databend-weekly

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

What's On In Databend

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

理解连接参数

连接参数 是建立与 Databend 支持的外部存储服务(如Amazon S3)的连接时所需的一组身份验证和配置信息。这些参数被括号包围、由一组用逗号或空格分隔的键值对组成。在创建 Stage 、COPY INTO 和查询外部文件时都会用到。

下面的 SQL 语句展示了如何利用连接参数创建用 S3 作为底层存储的 Stage 。

CREATE STAGE my_s3_stage
URL = 's3://load/files/'
CONNECTION = (
ACCESS_KEY_ID = '<your-access-key-id>',
SECRET_ACCESS_KEY = '<your-secret-access-key>'
);

如果您想了解更多信息,请查看下面列出的资源。

Hive Catalog 支持配置存储参数

在刚刚过去的一周中,Databend 为 Hive Catalog 引入了存储参数选项,允许为其配置特定的存储服务,不再依赖 Default Catalog 自身的存储后端。

下面的例子展示了如何创建以 MinIO 作为底层存储服务的 Hive Catalog :

CREATE CATALOG hive_ctl 
TYPE = HIVE
CONNECTION =(
ADDRESS = '127.0.0.1:9083'
URL = 's3://warehouse/'
AWS_KEY_ID = 'admin'
AWS_SECRET_KEY = 'password'
ENDPOINT_URL = 'http://localhost:9000/'
)

如果您想了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-08-13-databend-weekly

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

What's On In Databend

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

数据脱敏

Databend 新增数据脱敏能力。通过设定脱敏策略(Masking Policy),可以控制敏感数据的显示或访问方式,从而在允许授权用户与数据交互的同时保护机密性。

-- Create a masking policy
CREATE MASKING POLICY email_mask
AS
(val string)
RETURNS string ->
CASE
WHEN current_role() IN ('MANAGERS') THEN
val
ELSE
'*********'
END
COMMENT = 'hide_email';

-- Associate the masking policy with the 'email' column
ALTER TABLE user_info MODIFY COLUMN email SET MASKING POLICY email_mask;

数据脱敏 需要升级至 企业版 。如需了解升级信息,请联系 Databend 团队

如果您想了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-07-30-databend-weekly

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

What's On In Databend

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

从 Kafka 载入数据

Apache Kafka 是一款开源的高性能、分布式消息队列,为处理实时数据提供了一个统一、高吞吐量、低时延的平台。

Databend 设计并实现了高性能的数据摄入工具 bend-ingest-kafka ,专门用于将来自 Kafka 的数据载入到 Databend 中,可以简化数据摄取工作流程。

如果您想了解更多信息,请查看下面列出的资源。

从 dbt 载入数据

dbt 是一种数据转换工作流,可以帮助你完成更多数据处理工作,同时产生更高质量的结果。

dbt-databend-cloud 是由 Databend 开发的 dbt 插件。通过使用此插件,你可以轻松使用 dbt 执行数据建模、转换和清洗任务,并方便地将输出结果载入到 Databend 中。

如果您想了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-07-23-databend-weekly

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

What's On In Databend

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

创建网络策略

网络策略(Network Policies) 是一组用于管理 Databend 服务网络配置的选项。你可以使用网络策略来限制访问帐户的用户 IP 地址。

要创建一组网络策略,可以使用以下 SQL:

CREATE NETWORK POLICY <policy-name> ALLOWED_IP_LIST=(<allowed-ip>) BLOCKED_IP_LIST=(<blocked-ip>) COMMENT=<policy-comment>

要为指定用户分配或更改网络策略,可以使用以下 SQL:

CREATE USER <user-name> IDENTIFIED BY <user-password> WITH SET NETWORK POLICY=<policy-name>

--- OR ---

ALTER USER <user-name> WITH SET NETWORK POLICY=<policy-name>

如果您想了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-07-16-databend-weekly

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

What's On In Databend

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

为指定列创建 Bloom Index

创建 bloom index 将会消耗大量 CPU 资源。对于仅有少数列涉及点查或者对数据摄入性能比较看重的宽表来说,为所有列都创建 bloom index 可能不是什么好选择。

Databend Fuse Engine 新增对 bloom_index_columns 选项的支持,这意味着你可以按需为指定列创建 bloom index,从而达到查询性能和数据摄入性能之间的平衡。

创建带有 bloom index 的表:

CREATE TABLE table_name (
column_name1 column_type1,
column_name2 column_type2,
...
) ... bloom_index_columns='columnName1[, ...]'.

为现存的表创建或修改 bloom index:

现有的 bloom index 选项将被新选项替换,另外,不会为现有数据创建 bloom filter。
ALTER TABLE <db.table_name> SET OPTIONS(bloom_index_columns='columnName1[, ...]');

禁用 bloom index:

ALTER TABLE <db.table_name> SET OPTIONS(bloom_index_columns='');

如果您想了解更多信息,请查看下面列出的资源。

理解 SQL 一致性

Databend 的设计目标之一是符合 SQL 标准,特别是支持 ISO/IEC 9075:2011,也称为 SQL:2011。虽然目前不是完全百分百符合,但 Databend 已经包含许多 SQL 标准所要求的特性,只是在语法或函数上存在一些轻微差异。

我们最近在文档中添加了一篇摘要,介绍了 Databend 符合 SQL:2011 标准的程度,希望它能帮助你进一步了解 Databend 的 SQL 语法。

如果你想要了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-07-09-databend-weekly

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

What's On In Databend

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

教程 | 使用 AWS IAM 用户创建 External Stage

AWS Identity and Access Management (IAM) 允许你通过指定授权用户或实体来控制对 AWS 服务和资源的访问。另外,IAM 还支持集中管理精细权限,以及分析整个 AWS 平台上的访问模式以优化权限。

Databend 支持使用 AWS IAM 用户创建 External Stage,从而使对 AWS S3 对象存储的访问更加安全可靠。

如果您想了解更多信息,请查看下面列出的资源。

教程 | 在 Cloudflare R2 上创建 External Stage

Cloudflare R2 让你可以自由地使用 S3 兼容对象存储构建多云架构。

你可以使用 Databend 创建基于 Cloudflare R2 的创建 External Stage,并进一步高效挖掘数据价值。

如果你想要了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-07-02-databend-weekly

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

What's On In Databend

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

Databend v1.2 正式发布

Databend v1.2.0 已于 2023 年 6 月 29 日正式发布!感谢各位社区伙伴的参与,以及每一个让 Databend 变得更好的你!

新版本有许多新功能,包括:

  • BITMAP 数据类型
  • 使用列号直接查询 CSV/TSV/NDJSON 文件
  • 设计并实现全新哈希表大幅提升 Join 的性能
  • AI Functions
  • 计算列
  • VACUUM TABLE
  • Serverless Background Service
  • 开箱即用的 Databend Python 绑定
  • BendSQL - Databend 原生命令行工具
  • 与 Apache DolphinScheduler、Apache Flink CDC 以及 Tableau 等数据集成/商业智能工具的无缝集成

如果你想要了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-06-25-databend-weekly

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

What's On In Databend

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

Apache Flink CDC(Change Data Capture)是指 Apache Flink 使用基于 SQL 的查询从各种来源捕获和处理实时数据更改的能力。CDC 允许监视和捕获数据库或流系统中发生的数据修改(插入、更新和删除),并对这些更改进行实时响应。

Databend 现在提供 Flink SQL Connector,可以将 Flink 的流处理能力与 Databend 集成。通过对连接器进行配置,可以以流的形式从各种数据库中捕获数据更改,并将其载入到 Databend 中以进行实时处理和分析。

如果你想要了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-06-18-databend-weekly

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

What's On In Databend

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

后台服务

Databend 的内置存储引擎 FuseTable 是一种与 Apache Iceberg 类似的日志结构表,需要定期执行表压缩、重聚类和清理以合并小数据块。小数据块合并的过程会涉及按聚类键排序数据或清理不需要的分支等阶段。

先前的实现需要使用不同的驱动,增加了基础设施的复杂性。而且必须部署和维护其他服务来触发驱动事件。为简化这一过程,我们实现了一个后台服务,允许 Databend 执行后台单次作业或以守护进程模式运行 cron 作业。这些作业可以根据条件触发自动压缩/清理/重聚类等表维护任务,而无需其他服务介入。

此实现包括:

  1. 完整的 metasrv 模式定义,以及后台作业与后台任务的设计实现。
  2. 用于在元服务上更新和维护后台作业与后台任务状态的 API。
  3. 支持 one_shotintervalcron 等不同作业类型的作业调度器实现。

后台服务 需要升级至 企业版 。如需了解升级信息,请联系 Databend 团队

如果你想要了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-06-18-databend-weekly

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

What's On In Databend

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

后台服务

Databend 的内置存储引擎 FuseTable 是一种与 Apache Iceberg 类似的日志结构表,需要定期执行表压缩、重聚类和清理以合并小数据块。小数据块合并的过程会涉及按聚类键排序数据或清理不需要的分支等阶段。

先前的实现需要使用不同的驱动,增加了基础设施的复杂性。而且必须部署和维护其他服务来触发驱动事件。为简化这一过程,我们实现了一个后台服务,允许 Databend 执行后台单次作业或以守护进程模式运行 cron 作业。这些作业可以根据条件触发自动压缩/清理/重聚类等表维护任务,而无需其他服务介入。

此实现包括:

  1. 完整的 metasrv 模式定义,以及后台作业与后台任务的设计实现。
  2. 用于在元服务上更新和维护后台作业与后台任务状态的 API 。
  3. 支持 one_shotintervalcron 等不同作业类型的作业调度器实现。

后台服务 需要升级至 企业版 。如需了解升级信息,请联系 Databend 团队

如果你想要了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-06-11-databend-weekly

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

What's On In Databend

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

列位置

Databend 现在支持 $N 这一语法,用来表示列位置,例如:$2 意味着匹配第 2 列。Databend 也支持在 SQL 语句中将列位置和列名结合使用。下面是一个简单的例子:

CREATE TABLE IF NOT EXISTS t1(a int, b varchar);
INSERT INTO t1 values (1, 'a'), (2, 'b');
select $1, $2, a, b from t1;

┌─────────────────────────────────┐
│ $1 │ $2 │ a │ b │
│ Int32 │ String │ Int32 │ String │
├───────┼────────┼───────┼────────┤
│ 1 │ a │ 1 │ a │
│ 2 │ b │ 2 │ b │
└─────────────────────────────────┘

我们正在为 SELECT FROM @stage 添加列位置支持。目前,你可以在 NDJSON 格式上尝试这一新特性。其他格式的支持还在进行中。

SELECT $1 FROM @my_stage (FILE_FORMAT=>'ndjson')

COPY INTO my_table FROM (SELECT $1 SELECT @my_stage t) FILE_FORMAT = (type = NDJSON)

需要注意的是,在 Databend 中使用 SELECT 语句处理 NDJSON 格式文件时,只允许使用 $1 表示整行数据,并且其数据类型为 Variant 。

-- Select the entire row using column position:
SELECT $1 FROM @my_stage (FILE_FORMAT=>'ndjson')

--Select a specific field named "a" using column position:
SELECT $1:a FROM @my_stage (FILE_FORMAT=>'ndjson')

如果你想要了解更多信息,请查看下面列出的资源。

Alt text

英文版移步: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 函数生成虚拟列。完成这些步骤后,就可以通过相应的虚拟列直接访问 JSON 内部字段中的数据。

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 |
+----------+----------+

如果你想要了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-05-28-databend-weekly

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

What's On In Databend

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

腾讯云 COS 原生支持

Databend 现在提供 COS 原生支持!相比于 COS 提供的 S3 兼容,我们的原生支持有如下优势:

  • 更优良的支持:通过支持 COS 的原生签名算法,修复了一些边界 case 下签名错误的问题。
  • 更完善的功能:未来我们会在 COS 的基础上提供 append 等 s3 不支持的功能。
  • 更安全的服务:通过 COS 的原生支持,我们能够与腾讯云的 RAM,STS 等服务整合,提供不需要静态密钥的认证能力。

如果你想要了解更多信息,请查看下面列出的资源。

IEJoin 支持

Databend最近推出了对 IEJoin(不等式连接)的支持,该方法通常用于各种应用程序中基于不等式条件连接关系表。

IEJoin 是一种专门设计用于不等式连接的快速算法。该方法将需要连接的列排序到一个数组中,并使用排列数组来指示一个已排序数组中元组相对于另一个数组的位置。与排序合并连接不同,IEJoin 利用空间高效的位数组,允许添加像布隆过滤器索引这样的优化来更快地计算连接结果。

如果你想要了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-05-21-databend-weekly

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

What's On In Databend

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

计算列

计算列(Computed Columns)使用其他列的标量表达式计算得来。有两种类型的计算列:存储计算列和虚拟计算列。

存储计算列在按行插入数据时计算并存储结果值。可以使用以下 SQL 语法创建存储计算列:

column_name <type> AS (<expr>) STORED

虚拟计算列在查询时进行计算,不会存储结果值。可以使用以下 SQL 语法创建虚拟计算列:

column_name <type> AS (<expr>) VIRTUAL

如果你想要了解更多信息,请查看下面列出的资源。

VACUUM TABLE

VACUUM TABLE 命令通过从表中永久删除历史数据文件来释放存储空间,有助于优化系统性能。删除的文件包括:

  • 与表相关的快照及其关联的 segments 和 blocks 。
  • 孤立文件。在 Databend 中,孤立文件指不再与该表关联的快照、segments 和 blocks 。孤立文件可能由各种操作和错误生成,例如在数据备份和还原期间,并且随着时间的推移会占用宝贵的磁盘空间并降低系统性能。

VACUUM TABLE 需要升级至 企业版 。如需了解升级信息,请联系 Databend 团队

如果你想要了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-05-14-databend-weekly

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

What's On In Databend

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

改进 Databend 的 Segment Cache 内存使用率

本周 Databend 的 Segment Cache 得到了显著升级,其内存使用量降低到测试场景中先前使用量的 1.5/1000 。

本次升级引入名为 CompactSegmentInfo 的 Segment 表示形式,主要由两个组件组成:

  • 解码后的 min / max 索引和其他统计信息。
  • 未解码(且压缩)的 RawBlockMeta 。

在对 Segment 剪枝时,如果要将某些 Segment 剪去,则无需解码其对应的 RawBlockMeta 。而对于没有剪去的 Segment ,它们对应的 RawBlockMeta 会即时解码并用于 Block 剪枝和扫描(在不再需要时删除)。

如果你想要了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-05-07-databend-weekly

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

What's On In Databend

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

WHERE 子句中使用列别名

列别名提供了一种为结果集创建清晰、更具描述性的标题的方法。

Databend 现在支持在 WHERE 子句中使用列别名。

> select number * 2 as number from numbers(3) where (number + 1) % 3 = 0;
┌────────┐
│ number │
│ UInt64 │
├────────┤
4
└────────┘

如果你想要了解更多信息,请查看下面列出的资源。

databend-metactl 现已随 Databend 发布

databend-metactl 是一个命令行工具,可以辅助用户管理 Databend Meta Service 集群。它可以用于备份和恢复元数据。

现在,databend-metactl 将与 Databend 一起发布,无需手动构建。

如果你想要了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-04-30-databend-weekly

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 。与其他位图实现相比,使用这种数据结构可以提高性能并减少内存使用。

如果你想要了解更多信息,请查看下面列出的资源。

设计并实现新的哈希表以改善 Hash Join 性能

此前 Databend 为聚合函数优化了哈希表实现,但这一实现并不适用于 Hash Join。为了进一步提高 Hash Join 的性能,团队设计并实现了一个专门为此优化的哈希表。

哈希表的大小会根据构建阶段的行数进行分配,值类型也会替换为支持 CAS 操作的指针,从而确保内存控制而无需进行 Vec 增长。

新的实现显著提高了性能。查看下面的资源以获取更多信息:

Alt text

英文版移步:https://www.databend.com/blog/2023-04-30-databend-weekly

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 。与其他位图实现相比,使用这种数据结构可以提高性能并减少内存使用。

如果你想要了解更多信息,请查看下面列出的资源。

设计并实现新的哈希表以改善 Hash Join 性能

此前 Databend 为聚合函数优化了哈希表实现,但这一实现并不适用于 Hash Join。为了进一步提高 Hash Join 的性能,团队设计并实现了一个专门为此优化的哈希表。

哈希表的大小会根据构建阶段的行数进行分配,值类型也会替换为支持 CAS 操作的指针,从而确保内存控制而无需进行 Vec 增长。

新的实现显著提高了性能。查看下面的资源以获取更多信息:

Alt text

英文版移步:https://www.databend.com/blog/2023-04-22-databend-weekly

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

What's On In Databend

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

元数据优化

最近,Databend 的元数据文件版本更新至 v3,序列化/反序列化效率进一步提高,同时降低了存储空间消耗。新元数据文件的体积可减少为原来的 1/20,并且性能提高 2 倍!

通过使用 Bincode,新的元数据格式能够以紧凑高效的方式序列化数据。这可以大大改善读取速度,并减少存储文件的大小。此外,通过使用 Zstd 压缩,能够进一步减少文件大小,同时保持较快的解压速度。

如果你想要了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-04-15-databend-weekly

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

What's On In Databend

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

Databend v1.1 正式发布

Databend v1.1.0 已于 2023 年 4 月 14 日正式发布!这次发布标志着 Databend 自 1.0 版本以来的首次重大更新。

新版本有许多新功能,包括:

  • COPY INTO 现在具备 ETL 能力
  • 支持全部 TPC-DS 查询
  • REPLACE INTO
  • 窗口函数
  • 可视化工具集成:包括 Metabase , Redash 和 Grafana
  • Rust 驱动程序
  • AI 函数
  • AskBend - 知识库问答系统

如果你想要了解更多信息,请查看下面列出的资源。

新增 AI 相关配置

Databend 添加了新的 AI 相关配置,允许使用不同的端点和模型。

这意味着它可以与其他服务轻松集成,包括 Azure OpenAI API。此外,可以根据需要灵活配置对应的模型以平衡表现和成本。

| "query"   | "openai_api_base_url"                      | "https://api.openai.com/v1/"     | ""       |
| "query" | "openai_api_completion_model" | "text-embedding-ada-002" | "" |
| "query" | "openai_api_embedding_model" | "gpt-3.5-turbo" | "" |

如果你想要了解更多信息,请查看下面列出的资源。

Alt text

英文版移步:https://www.databend.com/blog/2023-04-01-databend-weekly

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

What's On In Databend

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

聚合窗口函数

聚合窗口函数是指将聚合函数应用于窗口中的每一行数据的函数。OVER 子句指定如何将结果集中的行分区。当与GROUP BY一起使用时,聚合窗口函数不会折叠行,而是返回结果集中的所有行。

-- use aggrerate window function
SELECT date, AVG(amount) over (partition by date)
FROM BookSold

June 21|544.0
June 21|544.0
June 22|454.5
June 22|454.5
June 23|643.0
June 23|643.0

Databend 所支持的所有聚合函数都可以作为聚合窗口函数。

在拼写错误时建议函数名称

Databend 近期新增一项用于提高使用体验的智能提示功能,当输入不正确的函数名称时,可以自动提示最接近匹配项。

#> select base64(1);
ERROR 1105 (HY000) at line 1: Code: 1008, displayText = error:
--> SQL:1:8
|
1 | select base64(1)
| ^^^^^^^^^ no function matches the given name: 'base64', do you mean 'to_base64'?

Alt text

英文版移步:https://www.databend.com/blog/2023-03-24-databend-weekly

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

What's On In Databend

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

FlightSQL 协议支持正在进行中

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

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

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

将自然语言转换为 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 上使用。要了解其工作原理,请参阅以下链接:

Alt text

英文版移步:https://www.databend.com/blog/2023-03-17-databend-weekly

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

📢 Databend 不再依赖 max_storage_io_requests 设置进行 IO 预读,我们建议使用 v1.0.17-nightly 之后的版本用户,执行 unset max_storage_io_requests 以减少不必要的内存占用。

What's On In Databend

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

Data Type: MAP

MAP 数据结构使用嵌套的 Array(Tuple(key, value)) 来保存键值对。键必须指定为基本数据类型,并且不允许重复;而值可以是任何数据类型,包括嵌套数组或元组。Databend 还会为 MAP 创建布隆过滤器索引,搜索 MAP 中的值会更加快速。

select * from nginx_log where log['ip'] = '205.91.162.148';
+----+----------------------------------------+
| id | log |
+----+----------------------------------------+
| 1 | {'ip':'205.91.162.148','url':'test-1'} |
+----+----------------------------------------+

如果你想了解更多关于 MAP 数据类型的信息,请阅读以下材料:

Data Transformation During Loading Process

你还记得上周提到的两个 RFC 吗?现在,Databend 已经支持在加载数据到表的过程中进行数据转换。使用 COPY INTO <table> 命令即可实现基本的转换操作。

CREATE TABLE my_table(id int, name string, time date);

COPY INTO my_table
FROM (SELECT t.id, t.name, to_date(t.timestamp) FROM @mystage t)
FILE_FORMAT = (type = parquet) PATTERN='.*parquet';

该功能可以避免在临时表中存储预转换数据,并支持列重新排序、列省略和类型转换操作。此外,可以从 Stage 中的 Parquet 文件加载部分数据或者对其列进行重新排列。该功能简化和优化了 ETL 过程,使用户能够更加关注数据分析而不必考虑如何移动他们的数据。

如果你对这一特性感兴趣,可以查阅下面列出的材料:

Alt text

英文版移步:https://www.databend.com/blog/2023-03-10-databend-weekly

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

What's On In Databend

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

SQL: REPLACE INTO

Databend 现在支持使用 REPLACE INTO 语句插入或更新数据。该语句允许你指定一个冲突键(conflict key),用于判断是应该插入一行新数据,还是更新一行已有数据。

如果表中已经存在与冲突键相同的行,Databend 会用新数据更新这一行。否则,新数据会作为一行新记录添加到表中。你可以使用这个语句来轻松地同步不同来源的数据或处理重复记录。

#> CREATE TABLE employees(id INT, name VARCHAR, salary INT);
#> REPLACE INTO employees (id, name, salary) ON (id) VALUES (1, 'John Doe', 50000);
#> SELECT * FROM Employees;
+------+----------+--------+
| id | name | salary |
+------+----------+--------+
| 1 | John Doe | 50000 |
+------+----------+--------+

如果你想要了解关于 REPLACE INTO 语句的更多细节,可以参阅下方列出的材料:

RFCs: Add Incremental Update for COPY INTO

Databend 目前可以将 Stage 中的数据转换并插入到表中。例如,你可以运行这样的 SQL 语句:

insert into table1 from (select c1, c2 from @stage1/path/to/dir);

COPY INTO 语句也需要实现类似功能,以支持从 Stage 增量载入数据。

如果你对这个特性感兴趣,可以阅读下面列出的两篇 RFC:

Alt text

英文版移步:https://www.databend.com/blog/2023-02-22-databend-weekly

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

What's New

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

Features & Improvements ✨

AST

  • select from stage 支持带连接选项的 uri (#10066)

Catalog

  • 支持创建 Iceberg catalog (#9017)

Expression

  • decimal 类型支持聚合函数 min/max (#10085)
  • decimal 类型支持聚合函数 sum/avg (#10059)

Pipeline

  • 增强 pipelines processors 能力 (#10098)

Query

  • create stage, select stage, copy, infer_schema 支持具名文件类型 (#10084)
  • 查询结果缓存 (#10042)

Storage

  • 表数据缓存 (#9772)
  • drop all 中使用 drop_table_by_id API (#10054)
  • 原生存储格式支持嵌套数据类型 (#9798)

Code Refactoring 🎉

Meta

Cluster

Executor

  • 检查 processor graph 完成情况 (#10166)

Planner

  • 为物理计划构建器执行常量折叠 (#9889)

Query

  • 使用 AccumulatingTransform 实现单状态聚合器 (#10125)

Storage

  • 适配 OpenDAL 批删除支持 (#10150)
  • 适配 OpenDAL 基于查询的元数据缓存 (#10162)

Build/Testing/CI Infra Changes 🔌

Bug Fixes 🔧

Expression

  • 不再返回 Variant 作为公共超级类型 (#9961)
  • 允许从 string 和 variant 的自动类型转换 (#10111)

Cluster

  • 在集群模式下修复 limit 查询挂起 (#10006)

Storage

  • 修复包含 tuple 类型时的列统计错误 (#10068)
  • 增列后 compact 未按预期工作 (#10070)
  • 修复增列的 min/max 统计故障 (#10137)

What's On In Databend

请持续关注 Databend 的最新动态。

Query Result Cache

仅仅过去一周,Databend 现已支持查询结果缓存!

             ┌─────────┐ 1  ┌─────────┐ 1
│ ├───►│ ├───►Dummy───►Downstream
Upstream────►│Duplicate│ 2 │ │ 3
│ ├───►│ ├───►Dummy───►Downstream
└─────────┘ │ │
│ Shuffle │
┌─────────┐ 3 │ │ 2 ┌─────────┐
│ ├───►│ ├───►│ Write │
Upstream────►│Duplicate│ 4 │ │ 4 │ Result │
│ ├───►│ ├───►│ Cache │
└─────────┘ └─────────┘ └─────────┘

阅读下述材料以了解更多讯息

Table Data Cache

Databend 现在支持表数据缓存:

  • 磁盘缓存:DataBlock 的原始列(压缩)数据。
  • 内存缓存(实验性):DataBlock 的反序列化列对象。

对于缓存友好的工作负载,性能提升显着。

阅读下述材料以了解更多讯息

Deb Source & Systemd Support

Databend 现在提供官方的 Deb 软件源,并支持使用 systemd 管理服务。

对于 DEB822 源格式:

sudo curl -L -o /etc/apt/sources.list.d/datafuselabs.sources https://repo.databend.rs/deb/datafuselabs.sources
sudo apt update
sudo apt install databend
sudo systemctl start databend-meta
sudo systemctl start databend-query

阅读下述材料以了解更多讯息

What's Up Next

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

服务启动进度报告

启动 Query / Meta 节点时,有必要执行检查并将结果显式输出,以帮助用户诊断故障并确认节点 / 集群状态。

示例:

storage check succeed
meta check failed: timeout, no response. endpoints: xxxxxxxx .
status check failed: address already in use.

Issue 10193: Feature: output the necessary progress when starting a query/meta node

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

Changelogs

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

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

Contributors

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

andylokandyariesdevilb41shBig-WuuBohuTANGcameronbraid
andylokandyariesdevilb41shBig-WuuBohuTANGcameronbraid
Chasen-ZhangClSlaiddantengskydrmingdrmereverpcpcjohnhaxx7
Chasen-ZhangClSlaiddantengskydrmingdrmereverpcpcjohnhaxx7
lichuangmergify[bot]PsiACERinChanNOWWWsoyeric128sundy-li
lichuangmergify[bot]PsiACERinChanNOWWWsoyeric128sundy-li
suyanhanxTCeasonXuanwoxudong963youngsofunzhang2014
suyanhanxTCeasonXuanwoxudong963youngsofunzhang2014
zhyass
zhyass

Connect With Us

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

Alt text

英文版移步:https://www.databend.com/blog/2023-02-15-databend-weekly

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

What's New

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

Accepted RFCs 🛫

  • rfc: 查询结果缓存 (#10014)

Features & Improvements ✨

Planner

  • 支持 EXPLAIN ANALYZE 语句以剖析查询执行 (#10023)
  • 派生新过滤器并下推 (#10021)

Query

  • 变更表支持增删列 (#9851)
  • 新增表函数 infer_schema (#9936)
  • 为 select 增加权限检查 (#9924)
  • 改进带符号数值的键 (#9978)
  • 支持解析 jwt 元数据并添加多重身份颁发者配置 (#9971)
  • 支持创建文件格式 (#10009)

Storage

  • 适配 OpenDAL 的原生 scan 支持 (#9985)
  • 新增 drop_table_by_id API (#9990)

Expression

  • 新增 decimal 类型相关运算支持 (#9926)

Functions

  • 支持 array_any 函数 (#9953)
  • 支持 array_sort 函数 (#9941)

Sqllogictest

  • 为 alter table 增加 time travel 相关测试 (#9939)

Code Refactoring 🎉

Meta

  • 将应用层类型移动到 common-meta/app (#9944)
  • 修复 ErrorCode 滥用 (#10056)

Query

  • transform_sort_merge 使用 heap 来排序数据块 (#10047)

Storage

  • 引入 FieldIndex 和 ColumnId 类型以区分使用 (#10017)

Build/Testing/CI Infra Changes 🔌

  • 以 clickbench 结果格式返回基准测试结果 (#10019)
  • 在 s3 & fs 上均运行基准测试 (#10050)

Bug Fixes 🔧

Privilege

  • 为 PUBLIC 角色添加 SELECT 权限,以避免普通用户执行查询的权限问题 (#10040)

Catalog

  • 修复 parts 的不均匀分布 (#9951)

Planner

  • 修复子查询类型断言错误 (#9937)
  • 启用 outer join 到 inner join 优化 (#9943)
  • 修复 RulePushDownLimitOuterJoin (#10043)

Query

  • 修复增列更新错误 (#10037)

Storage

  • 修复:查询新增 tuple 列时,仅返回默认值 (#9973)
  • 在 bloom filter 中,索引绑定 Column Id (#10022)

What's On In Databend

请持续关注 Databend 的最新动态。

RFC: 查询结果缓存

对于不经常更新的数据,缓存其查询结果可以大大减少响应时间。一旦建立缓存,再次运行查询可以在短时间返回结果。

阅读下述材料以了解更多讯息

如何编写新的标量/聚合函数

创建自定义的标量或聚合函数可以增强 Databend 的可用性。尽管看上去有一些复杂,但并不困难。

下面列出的两篇文档有助于 Databend 用户和 Rust 开发者创建新的函数,包括如何创建并注册函数的分步说明,以及用于示例的代码片段,以帮助你更好了解这一过程。

阅读下述材料以了解更多讯息

Profile-Guided Optimization

Profile-guided optimization (PGO,有时会译作:概要分析指导的优化) 是一种编译器优化技术,可以在程序运行时收集执行数据,并针对冷/热代码路径进行优化。

这篇博客介绍了如何使用 PGO 技术优化 Databend 的二进制构建,并以 Databend 的 SQL 逻辑测试作为工作负载进行演示。

注意:PGO 总是要求使用在统计学上具有代表性的工作负载来生成 Perf 数据。然而,这种技术并不保证总能提高性能。是否使用这项技术需要取决于实际情况。

阅读下述材料以了解更多讯息

What's Up Next

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

重构函数相关文档

为了使文档更清晰、易于理解,我们计划重组与函数相关的文档,新的内容组织遵循与 DuckDB 文档样式。

目前这项任务已经按函数类别分解成了一系列易于完成的子任务,如果你对改进 Databend 的文档感兴趣,不妨参与进来。

Issue 10029: Tracking: re-org the functions doc

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

Changelogs

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

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

Contributors

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

andylokandyb41shBig-WuuBohuTANGdantengskydependabot[bot]
andylokandyb41shBig-WuuBohuTANGdantengskydependabot[bot]
drmingdrmereverpcpcflaneur2020johnhaxx7leiyskylichuang
drmingdrmereverpcpcflaneur2020johnhaxx7leiyskylichuang
mergify[bot]PsiACERinChanNOWWWsoyeric128sundy-liTCeason
mergify[bot]PsiACERinChanNOWWWsoyeric128sundy-liTCeason
wubxXuanwoxudong963xxchanyoungsofunyufan022
wubxXuanwoxudong963xxchanyoungsofunyufan022
zhang2014ZhiHanZzhyass
zhang2014ZhiHanZzhyass

Connect With Us

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

Alt text

英文版移步:https://www.databend.com/blog/2023-02-08-databend-weekly

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

What's New

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

Features & Improvements ✨

Meta

  • 新增 databend-meta 配置项 grpc_api_advertise_host (#9835)

AST

  • 支持在 select from stage 时选定文件或模式 (#9877)
  • 解析 decimal 类型 (#9894)

Expression

  • 新增 Decimal128Decimal256 类型 (#9856)

Functions

  • 支持 array_indexof (#9840)
  • 支持 array_uniquearray_distinct (#9875)
  • 支持数组相关聚合函数 (#9903)

Query

  • 在 TableSchema 中新增 column id; 并在读写数据时使用 column id 代替 index (#9623)
  • system.columns 中支持视图 (#9853)

Storage

  • ParquetTable 支持 topk 优化 (#9824)

Sqllogictest

  • 使用 sqllogictest 执行 TPCH 基准测试 (#9887)

Code Refactoring 🎉

Meta

  • 移除过时的 meta service API read_msg()write_msg() (#9891)
  • 引入 update_xx_with(id, f: FnOnce) 方法以简化 UserAPIRoleAPI (#9921)

Cluster

  • exchange source 拆分为 reader 和 deserializer (#9805)
  • 拆分并消除 exchange transform 和 sink 的状态 (#9910)

Functions

  • 重命名部分数组函数,添加 array_ 前缀 (#9886)

Query

  • TableArgs 保留必备参数和具名参数的信息 (#9917)

Storage

  • ParquetTable 列出 read_partition 中的文件 (#9871)

Build/Testing/CI Infra Changes 🔌

  • 支持为 PR 运行基准测试 (#9788)

Bug Fixes 🔧

Functions

  • 修复 Nullable 类型的 andor 的作用域计算 (#9928)

Planner

  • 修复 histogram_from_ndv 遇到错误回溯时导致 planner 过慢 (#9876)
  • 修复包含聚合函数的 order by (#9879)
  • 使用以子查询为条件的删除时防止 panic (#9902)

Query

  • 修复插入默认值的数据类型 (#9816)

What's On In Databend

请持续关注 Databend 的最新动态。

为什么你应该尝试 Sccache

Sccache 是一个由 Mozilla 团队发起、类似 ccache 的项目,提供对 C/CPP、Rust 和 其他语言的支持,能够将缓存存储到本地或云存储服务。社区在 Sccache 0.3.3 中新增对 Github Action Cache Service 的原生支持,近期发布的 v0.4.0-pre.6 中又进一步加强这一功能,现在已经可以在生产 CI 环境中使用。

现在,由 Datafuse Labs 开源的 opendal 充当 sccache 的数据访问层,以对接多种存储服务(s3、gcs、azlob 等)。

阅读下述材料以了解更多讯息

What's Up Next

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

尝试使用 build-info 重构 common-building 逻辑

使用 vergencargo-license 来获取关于 git 提交、构建选项以及上游依赖的信息。

build-info 可以收集 Rust crate 的构建信息。使用它来重构 common-building 中的相关逻辑可能会更好。

pub struct BuildInfo {
pub timestamp: DateTime<Utc>,
pub profile: String,
pub optimization_level: OptimizationLevel,
pub crate_info: CrateInfo,
pub compiler: CompilerInfo,
pub version_control: Option<VersionControl>,
}

Issue 9874: Refactor: Try using build-info

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

Changelogs

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

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

Contributors

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

andylokandyariesdevilb41shBohuTANGdependabot[bot]drmingdrmer
andylokandyariesdevilb41shBohuTANGdependabot[bot]drmingdrmer
everpcpcflaneur2020johnhaxx7leiyskylichuangmergify[bot]
everpcpcflaneur2020johnhaxx7leiyskylichuangmergify[bot]
PsiACERinChanNOWWWsoyeric128sundy-liTCeasonXuanwo
PsiACERinChanNOWWWsoyeric128sundy-liTCeasonXuanwo
xudong963youngsofunzhang2014
xudong963youngsofunzhang2014

Connect With Us

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

Alt text

英文版移步:https://www.databend.com/blog/2023-02-01-databend-weekly

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。即刻体验云服务:https://app.databend.cn

What's New

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

Features & Improvements ✨

AST

  • 支持解析预签名内容类型 (#9771)

Format

  • 重新引入 TSV 文件格式支持 (#9732)

Functions

  • 支持数组函数 prepend 和 append (#9844)
  • 支持数组函数 concat (#9804)

Query

  • 在原生存储格式中支持 topN 运行时过滤 (#9738)
  • 允许 hashtable 状态从部分传递到最终 (#9809)

Storage

  • 在 EXPLAIN 添加 pruning 相关指标 (#9724)
  • 缓存 bloom index 对象 (#9712)

Code Refactoring 🎉

  • 'select from stage' 使用 ParquetTable (#9801)

Meta

  • 提取 "kvapi" 作为一组公共接口 (#9791)
  • 不允许移除集群中最后一个节点 (#9781)

AST/Expression/Planner

  • 统一 Span 和 Result (#9713)

Executor

  • 合并 simple pipe 和 resize pipe (#9782)

Bug Fixes 🔧

Base

  • 修复在非 linux 环境下,jemalloc 需要正确回滚到 std (#9786)

Config

  • 修复无法禁用 table_meta_cache 的问题 (#9767)

Meta

  • 将数据导入 meta-service 目录时,指定的 "id" 必须是 "initial_cluster" 之一 (#9755)

Query

  • 修复并重构 aggregator (#9748)
  • 修复 data port 的内存泄漏 (#9762)
  • 修复将 jsonb 转换到 string 时的 panic (#9813)

Storage

  • 修复 max_file_size 潜在的 oom (#9740)

What's On In Databend

请持续关注 Databend 的最新动态。

DML 命令 - UPDATE

用新值修改表中的某些行。

注意 Databend 保证数据完整性。在 Databend 中,Insert、Update 和 Delete 操作都是原子操作,这意味着操作中涉及的所有数据都必须全部成功,否则就会全部失败。

语法

UPDATE <table_name>
SET <col_name> = <value> [ , <col_name> = <value> , ... ]
[ FROM <table_name> ]
[ WHERE <condition> ]

阅读下述材料以了解更多相关讯息

What's Up Next

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

支持 Arrow Flight SQL 协议

目前 Databend 兼容 MySQL 协议和 Clickhouse HTTP 协议,如果 Databend 支持 Arrow Flight SQL 协议可能会更好。

通常情况下,Lakehouse 使用 MySQL 协议将数据存储到 Parquet 文件中。对 Databend 而言,存在额外的反序列化开销,从 Parquet 到 Arrow,然后再到返回的 MySQL 数据类型。同样,在调用方/终端用户使用 Data Frame 或 MySQL 结果迭代器的时候,同样需要对类型进行序列化。一旦支持 Arrow Flight SQL 协议,所有这些过程中的序列化/反序列化成本都可以避免。

Issue 9832: Feature: Support Arrow Flight SQL protocol

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

Changelogs

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

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

Contributors

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

andylokandyariesdevilb41shBohuTANGdantengskydependabot[bot]
andylokandyariesdevilb41shBohuTANGdantengskydependabot[bot]
drmingdrmereverpcpcflaneur2020johnhaxx7leiyskymergify[bot]
drmingdrmereverpcpcflaneur2020johnhaxx7leiyskymergify[bot]
PsiACERinChanNOWWWsoyeric128sundy-liTCeasonXuanwo
PsiACERinChanNOWWWsoyeric128sundy-liTCeasonXuanwo
youngsofunyufan022zhang2014
youngsofunyufan022zhang2014

Connect With Us

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

Alt text

英文版移步:https://www.databend.com/blog/2023-01-25-databend-weekly

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。即刻体验云服务:https://app.databend.cn

What's New

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

Features & Improvements ✨

SQL

  • 消除多余的 group by 标量 (#9708)

Query

  • 支持对 insert/delete/optimize 行为进行权限检查 (#9664)
  • 启用空投影 (#9675)
  • 在最终聚合阶段增加聚合限制 (#9716)
  • create/alter view 语句中支持可选列名 (#9715)

Storage

  • 为原生存储格式增加 prewhere 支持 (#9600)

Code Refactoring 🎉

IO

  • 将 io 相关的常量移动到 common/io (#9700)
  • 重构 fuse/io/read (#9711)

Planner

  • Scalar 重命名为 ScalarExpr (#9665)

Storage

  • 重构缓存层 (#9672)
  • pruner.rs -> fuse_bloom_pruner.rs (#9710)
  • 将 pruner 从分层改成链式 (#9714)

Build/Testing/CI Infra Changes 🔌

  • 支持为 Docker 映像设置 minio 存储以及外置 s3 存储 (#9676)

Bug Fixes 🔧

Expression

  • 修复 simple_cast (#9671)

Query

  • 修复 efficiently_memory_final_aggregator 结果不稳定的问题 (#9685)
  • 修复 max_result_rows 只对输出结果数进行限制的问题 (#9661)
  • 修复 two level aggregator 可能会导致查询挂起的问题 (#9694)

Storage

  • 如果没有根据 output schema 排序,则可能获得错误的 datablocks (#9470)
  • bloom filter 使用了不正确的 cache key (#9706)

What's On In Databend

请持续关注 Databend 的最新动态。

Databend 多合一 Docker 映像

Databend Docker 映像现在支持设置 MinIO 存储和配置外置 AWS S3 存储。

现在你可以轻松使用该映像达成与 Databend 的初体验。

运行,使用 MinIO 存储后端

docker run \
-p 8000:8000 \
-p 9000:9000 \
-e MINIO_ENABLED=true \
datafuselabs/databend

运行,使用自定义配置

docker run \
-p 8000:8000 \
-e DATABEND_QUERY_CONFIG_FILE=/etc/databend/mine.toml \
-v query_config_file:/etc/databend/mine.toml \
datafuselabs/databend

阅读下述材料以了解更多讯息

What's Up Next

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

向量搜索

向量搜索(Vector Search)可以捕获非结构化数据的含义和上下文,通常用于文本和图像的处理,允许通过语义来检索相似结果,并且往往能够比传统的关键字检索取得更好的效果。

Databend 计划支持向量搜索,为用户提供更丰富和高效的查询手段,初步的解决方案可能包括集成 Faiss Index。

Issue 9699: feat: vector search (Faiss index)

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

Changelogs

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

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

Contributors

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

andylokandyariesdevilb41shBohuTANGdantengskydependabot[bot]
andylokandyariesdevilb41shBohuTANGdantengskydependabot[bot]
everpcpcflaneur2020johnhaxx7leiyskymergify[bot]PsiACE
everpcpcflaneur2020johnhaxx7leiyskymergify[bot]PsiACE
RinChanNOWWWsandfleesundy-lixudong963zhang2014zhyass
RinChanNOWWWsandfleesundy-lixudong963zhang2014zhyass

Connect With Us

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

Alt text

英文版移步:https://www.databend.com/blog/2023-01-18-databend-weekly

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。即刻体验云服务:https://app.databend.cn

What's New

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

Features & Improvements ✨

Meta

  • 使用 expressin::TableSchema 来替换过时的 datavalues::DataSchema (#9506)
  • iter() 迭代每棵树和每条记录 (#9621)

Expression

  • 实现其他地理函数 (#9588)

Optimizer

  • 基于直方图改进 JOIN 基数估计 (#9594)

Planner

  • 改进 JOIN 重排算法 (#9571)

Query

  • 支持带占位符的插入 (#9575)
  • 使用 set 设定设置时支持表达式 (#9574)
  • 为 sharding-jdbc 支持 information_schema (#9583)
  • 为表函数添加具名参数支持 (#9630)

Storage

  • read_parquet 页索引 (#9563)
  • 更新 interpreter 和 storage 支持 (#9261)

Code Refactoring 🎉

Meta

  • 移除无用的元数据类型和转换 (#9584)

Parser

  • 为 format_options 增加更严格的解析器 (#9635)

Expression

  • 重排 common_expression 和 common_function (#9585)

Build/Testing/CI Infra Changes 🔌

  • 使用预编译的二进制文件运行 sqllogictests (#9603)

Bug Fixes 🔧

Expression

  • 常量折叠应当反复运行直到稳定 (#9572)
  • 修复 check_date()to_string(boolean) 可能会 panic (#9561)

Planner

  • 修复应用 RuleFilterPushDownJoin 时的栈溢出 (#9645)

Storage

  • 修复带索引 range filter 的读统计 (#9619)

Sqllogictest

  • 修复 sqllogic test 在 cluster 模式 + clickhouse handler 的情况下可能会挂起的问题 (#9615)

What's On In Databend

请持续关注 Databend 的最新动态。

升级 Databend 集群到 v0.9

Databend Query v0.9 在元数据上引入了一些不兼容的变更,这些元数据需要以手动的方式进行迁移。

Databend 提供 databend-meta-upgrade-09 升级工具来完成这项工作,你可以在 release package 中找到预先构建好的二进制文件,也可以选择从源码完成构建。

升级

databend-meta-upgrade-09 --cmd upgrade --raft-dir "<./your/raft-dir/>"

阅读下述材料以了解更多讯息

Nightly v1.0 发布目标征集中

Databend v1.0 版本发布目标正在征集中。

目前计划的发布时间是 3 月份,主要会关注以下几个核心功能点:alter table, update, 和 group by spill

阅读下述材料以了解更多讯息

What's Up Next

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

为 Sqllogictest 实现类型检查机制

除了比对结果和检验是否查询成功,支持检查每一行中的每个元素的类型是否正确。

databend/tests/sqllogictests/src/client/mysql_client.rs

 // Todo: add types to compare 
Ok(DBOutput::Rows {
types,
rows: parsed_rows,

Issue 9647: Feature: Add type checker for sqllogictest

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

Changelogs

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

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

Contributors

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

andylokandyariesdevilb41shBohuTANGdantengskydrmingdrmer
andylokandyariesdevilb41shBohuTANGdantengskydrmingdrmer
everpcpcleiyskymergify[bot]PsiACERinChanNOWWWsoyeric128
everpcpcleiyskymergify[bot]PsiACERinChanNOWWWsoyeric128
sundy-liTCeasonXuanwoxudong963youngsofunyufan022
sundy-liTCeasonXuanwoxudong963youngsofunyufan022
zhang2014zhyass
zhang2014zhyass

Connect With Us

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

Alt text

英文版移步:https://www.databend.com/blog/2023-01-11-databend-weekly

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。即刻体验云服务:https://app.databend.cn

What's New

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

Features & Improvements ✨

Meta

  • 在 proto-conv 中新增 reader-min-msg-ver 和 msg-min-reader-ver (#9535)

Planner

  • 支持 tuple.1get(1)(tuple) (#9493)
  • 支持在 EXPLAIN 中显示行数估算 (#9528)

Query

  • 单机模式下更高效的两阶段聚合(Streaming Merge)(#9504)

Storage

  • read_parquet 中增加对嵌套类型的支持 (#9486)
  • 新增包含构建选项信息的系统表 (#9502)

Code Refactoring 🎉

  • 合并全新表达式框架 (#9411)
  • 删除无用的 crates 并对部分 crates 重命名 (#9481)
  • 工具链升级至 rust nightly-2022-12-15 (#9540)

Expression

  • 将反函数移动至 binder (#9484)
  • 使用 error_to_null() 来评估 try_cast (#9545)

Functions

  • 使用 h3o 替换 h3ron (#9553)

Format

  • 提取 AligningStateTextBased (#9472)
  • 丰富错误上下文 (#9534)

Query

  • 使用 EvalContext 存储函数计算错误 (#9501)
  • 重构 MapAccess 以支持读取元组内字段 (#9516)

Storage

  • 更新 opendal 以支持流式读 (#9503)
  • 重构 bloom index 以使用向量化 siphash 函数 (#9542)

Bug Fixes 🔧

HashTable

  • 修复 unsized_hashtable.rs 中潜在的内存泄漏 (#9551)

Storage

  • 修正行组统计信息的收集逻辑 (#9537)

What's On In Databend

请持续关注 Databend 的最新动态。

新的一年,全新表达式上线!

在经过大半年的开发和迁移后,全新表达式框架已经正式成为 Databend 的核心引擎。这套表达式框架具有形式化的类型系统,并且支持类型安全的向下转型,同时,也为函数的定义和实现提供了更简单和高效的方式。

阅读以下材料以了解更多讯息:

What's Up Next

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

UNNEST 函数

UNNEST 函数的参数是一个数组,返回一张表,表中每行包含数组中的一个元素。

语法

UNNEST(ARRAY) [WITH OFFSET]

如果你计划成为 Databend 的贡献者,参与 UNNEST 函数的设计与实现会是一个不错的机会。

Issue 9549: Feature: Support unnest

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

Changelogs

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

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

Contributors

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

andylokandyariesdevilb41shBohuTANGClSlaiddantengsky
andylokandyariesdevilb41shBohuTANGClSlaiddantengsky
dependabot[bot]drmingdrmereverpcpcflaneur2020leiyskymergify[bot]
dependabot[bot]drmingdrmereverpcpcflaneur2020leiyskymergify[bot]
PsiACERinChanNOWWWsoyeric128sundy-liTCeasonwubx
PsiACERinChanNOWWWsoyeric128sundy-liTCeasonwubx
Xuanwoxudong963youngsofunzhang2014
Xuanwoxudong963youngsofunzhang2014

Connect With Us

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

Alt text

英文版移步:https://www.databend.com/blog/2023-01-04-databend-weekly

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。即刻体验云服务:https://app.databend.cn

What's New

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

Features & Improvements ✨

Format

  • 实现 JSON 输出格式 (#9447)

Query

  • 检查连接参数 (#9437)
  • 新增 max_query_row_nums 设置 (#9406)

Storage

  • 为 hive catalog 实现 prewhere 支持 (#9427)
  • 为不同的 object reader 设计统一的 cache trait (#9436)
  • 为新 cache 增加更多观测指标 (#9445)

New Expression

  • 迁移 hash 函数到 functions-v2 (#9402)

Sqllogictest

  • 并行执行所有测试 (#9400)

Code Refactoring 🎉

Storage

  • CachedObject 实现 to_bytesfrom_bytes (#9439)
  • 重构 table-meta 和 parquet reader (#9434)
  • 将 fuse_snapshot 单元测试转化为 SQL 逻辑测试 (#9428)

Bug Fixes 🔧

Format

  • read_split 时使用 catch unwind 停止 panic 展开 (#9420)

User

  • 惰性加载 JWKS (#9446)

Planner

  • Stage URL 的路径应当以 / 结尾 (#9450)

What's On In Databend

请持续关注 Databend 的最新动态。

Databend 2022 年终总结

让我们回顾一下,看看 Databend 在 2022 年的表现。

  • 开源:新获得 2000 多颗 star,合并了超过 2400 多个 PR,解决 1900 余个问题。
  • 从 Data Warehouse 到 Lakehouse:全新设计,大量功能增强。
  • 更全面的测试:引入 SQL 逻辑测试,实现 SQLancer 全部三种方法,和 https://perf.databend.rs
  • 建立生态:更多的客户选择、信任并与 Databend 一起成长,包括快手科技和 SAP。
  • Databend Cloud:建立在 Databend 之上的下一代大数据分析平台,目前有两个可用区供大家试用。

祝大家新年快乐,并期待大家能够一起参与到 Databend 社区建设之中。

阅读以下材料以了解更多讯息:

Databend 2023 路线图

随着新一年的到来,Databend 团队也在积极规划 2023 年的路线图。

我们将继续打磨 Planner,并在数据缓存和查询结果缓存上下功夫。列表中还包括强化对 PB 级数据量的存储和查询的能力。

欢迎感兴趣的朋友试用一下 Databend 并加入对路线图的讨论。

阅读以下材料以了解更多讯息:

What's Up Next

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

Profile-Guided Optimization (PGO)

PGO 的基本概念是收集关于一个程序典型的执行数据(例如,它可能会执行的哪些分支)然后使用该数据来进行如内联,机器码布局,寄存器分配等告知优化。

rustc 支持 profile-guided optimization (PGO) 。Databend 团队期待可以使用这一技术来提供优化的构建。

Issue 9387: Feature: Add PGO Support

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

Changelogs

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

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

Contributors

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

ariesdevilBohuTANGdantengskydependabot[bot]everpcpcflaneur2020
ariesdevilBohuTANGdantengskydependabot[bot]everpcpcflaneur2020
hantmacleiyskymergify[bot]PsiACEsandfleesoyeric128
hantmacleiyskymergify[bot]PsiACEsandfleesoyeric128
sundy-liTCeasonXuanwoxudong963youngsofunzhang2014
sundy-liTCeasonXuanwoxudong963youngsofunzhang2014

Connect With Us

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

Alt text

英文版移步:https://www.databend.com/blog/2022-12-28-databend-weekly

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。即刻体验云服务:https://app.databend.cn

What's New

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

Features & Improvements ✨

Meta

  • watch client 被弃用时,也移除 stream (#9334)

Planner

  • 为 range 谓词实现选择率估计 (#9398)

Query

  • 支持 copy on error (#9312)

  • 实现 databend-local (#9282)

  • external storage 支持 location_prefix (#9381)

Storage

  • rangefilter 支持 in (#9330)

  • 尝试改进对象存储的读性能 (#9335)

  • 支持 table 压缩 (#9370)

Metrics

  • 为 fuse compact 和 block write 增加更多观测指标 (#9399)

Sqllogictest

  • 增加对 no-fail-fast 的支持 (#9391)

Code Refactoring 🎉

*

  • 完全适配 rustls,移除所有指向 native-tls 的依赖 (#9358)

Format

  • 移除 format_xxx 设置 (#9360)

  • 调整 FileFormatOptionsExt 接口 (#9395)

Planner

  • 移除 SyncTypeChecker (#9352)

Query

  • 将 fuse source 拆分为 read data 和 deserialize (#9353)

  • 在读取 parquet 文件时避免 io copy (#9365)

  • 为 parquet reader 实现非压缩缓冲区 (#9379)

Storage

  • 添加读写相关设置 (#9359)

Bug Fixes 🔧

Format

  • 修复 align_flush 的行为,以适应 CSV 文件中仅存在表头的情况 (#9327)

Settings

  • 使用逻辑 CPU 数量作为 num_cpus 默认值 (#9396)

Processors

  • 修复 union 两侧数据类型不匹配的问题 (#9361)

HTTP Handler

  • 修复关于查询不存在的错误警告 (#9380)

Sqllogictest

  • 重构 sqllogictest 的 http client (#9363)

What's On In Databend

请持续关注 Databend 的最新动态。

实现 databend-local

databend-local 受到 clickhouse-local 的启发,允许用户在不启动 Databend 集群的情况下对本地文件执行高效查询。

> export CONFIG_FILE=tests/local/config/databend-local.toml
> cargo run --bin=databend-local -- --sql="SELECT * FROM tbl1" \
--table=tbl1=/path/to/databend/docs/public/data/books.parquet
exec local query: SELECT * FROM tbl1
+------------------------------+---------------------+------+
| title | author | date |
+------------------------------+---------------------+------+
| Transaction Processing | Jim Gray | 1992 |
| Readings in Database Systems | Michael Stonebraker | 2004 |
| Transaction Processing | Jim Gray | 1992 |
| Readings in Database Systems | Michael Stonebraker | 2004 |
+------------------------------+---------------------+------+
4 rows in set. Query took 0.015 seconds.

阅读以下材料以了解更多讯息:

What's Up Next

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

压缩短字符串

当处理涉及到短字符串的查询时,Databend 可能会比 Snowflake 读取更多的数据。

SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits \
WHERE URL LIKE '%google%' AND SearchPhrase <> '' \
GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10;

如果能够对短字符串进行压缩,上面的查询可能会变得更加高效。

Issue 9001: performance: compressing for short strings

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

Changelogs

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

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

Contributors

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

Connect With Us

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

Alt text

英文版移步:https://www.databend.com/blog/2022-12-21-databend-weekly

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。即刻体验云服务:https://app.databend.cn

What's New

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

Features & Improvements ✨

Multiple Catalogs

  • 实现 show tables ( from | in catalog.database ) (#9153)

Planner

  • 在列统计中添加直方图 (#9310)

Query

  • 支持插入值时访问 stage (#9249)

  • 在 Fuse 表中新增对原生格式的支持 (#9279)

  • 新增 internal_enable_sandbox_tenant 配置,以及 sandbox_tenant (#9277)

Sqllogictest

  • 使用 Rust 重新实现 SQL 逻辑测试程序 (#9150)

Code Refactoring 🎉

*

  • 为 copy 和 insert 统一 apply_file_format_options (#9323)

IO

  • 移除无用代码 (#9266)

Meta

  • 为 watcher count 编写相应测试 (#9324)

Planner

  • 将 planner 中的 TableContext 替换为 PlannerContext (#9290)

Bug Fixes 🔧

Base

  • 尝试修复 catch unwind 时的 SIGABRT (#9269)

  • 使用 thread_local 宏替换 #[thread_local] (#9280)

Query

  • 修复查询时与当前数据库无关的未知数据库问题 (#9250)

  • 删除角色时,修复当前角色不正确的问题 (#9276)

What's On In Databend

请持续关注 Databend 的最新动态。

使用 Rust 重新实现 SQL 逻辑测试程序

SQL 逻辑测试通过与其他引擎对相同查询的结果进行比较,验证从 SQL 数据库引擎返回的结果。

在过去,Databend 使用 Python 编写的程序运行这类测试,并从其他流行数据库中迁移了大量的测试用例。在最近一段时间,我们使用 sqllogictest-rs 重写了这一程序。

阅读以下材料以了解更多讯息:

实验性:原生格式

PA 是基于 Apache Arrow 的一种原生存储格式。与 Arrow IPC 类似,PA 旨在优化存储层。

Databend 引入 PA 作为原生存储格式,并期望带来性能上的提升。当然,该实现仍然处于早期开发阶段。

create table tmp (a int) ENGINE=FUSE STORAGE_FORMAT='native';

阅读以下材料以了解更多讯息:

What's Up Next

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

在返回预签名 URL 之前检查文件是否存在

当对一个文件进行预签名时,Databend 现在的行为是根据文件名返回一个可能有效的 URL,但不会检查文件是否存在。因此,如果文件不存在,可能会在访问时遇到 404 错误。

Issue 8702: Before return presign url add file exist judgement

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

Changelogs

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

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

Contributors

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

Connect With Us

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

Alt text

英文版移步:https://www.databend.com/blog/2022-12-14-databend-weekly

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。即刻体验云服务:https://app.databend.cn

What's New

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

Features & Improvements ✨

Multiple Catalogs

  • 拓展 show databases SQL (#9152)

Stage

  • 支持 select from URI (#9247)

Streaming Load

  • 在 streaming load API 的 insert sql 中支持 file_format 语法 (#9063)

Planner

  • limit 下推至 union (#9210)

Query

  • 使用 analyze table 替代 optimize table statistic (#9143)

  • 快速解析插入值 (#9214)

Storage

  • 使用 xor 哈希函数辅助计算 distinct count (#9159)

  • read_parquet 在读数据之前先读取元信息 (#9154)

  • 将 filter 下推至 parquet reader (#9199)

  • 在读取前裁剪 row groups (#9228)

Open Sharing

  • 实现 open sharing 原型并添加 sharing stateful tests (#9177)

Code Refactoring 🎉

*

  • 化简全局数据注册逻辑 (#9187)

Storage

  • 重构删除逻辑 (#8824)

Build/Testing/CI Infra Changes 🔌

  • 发布 databend deb 和支持 hive 的 databend (#9138, #9241, etc.)

Bug Fixes 🔧

Format

  • 支持使用 ASCII 控制字符的 hex 表示作为格式字段分隔符 (#9160)

Planner

  • 如果 prewhere_column 为空,则 logic.prewhere_column 设置为 get.columns 中的最小列 (#9116)

  • 当合并子项为 Aggregate 时,不要将 topk 向下推到 Merge (#9183)

  • 修复可空列的内部列长度和有效性的不一致问题 (#9220)

Query

  • 解决 test_insert 导致单元测试挂起 (#9242)

Storage

  • 在压缩过程中,对读块的 IO 请求过多 (#9128)

  • 收集孤儿快照 (#9108)

What's On In Databend

请持续关注 Databend 的最新动态。

Breaking Change: 统一文件格式选项

为了简单起见,我们为 COPY INTO 命令、Streaming Load API 和所有其他用户需要描述其文件格式的情况提供了一组统一的文件格式选项:

[ FILE_FORMAT = ( TYPE = { CSV | TSV | NDJSON | PARQUET | XML} [ formatTypeOptions ] ) ]
  • 请注意,当前以 format_* 作为前缀的设置将会被弃用。

  • 出于兼容性考虑,... FORMAT CSV ... 将会保留,仅供 ClickHouse HTTP 接口使用。

  • 对用户自定义格式的支持也在计划内,将会考虑允许 CREATE FILE FORMAT ... 创建特定格式,使用时可以 ... FILE_FORMAT = (format_name = 'MyCustomCSV') ....

阅读以下材料以了解更多讯息:

Open Sharing

Open Sharing 是一款简单安全的数据共享协议,为运行在多云环境下的 Databend Query 节点设计。

  • 简单且自由:Open Sharing 完全开源,并且提供一个易用的 RESTful API 实现。

  • 安全:Open Sharing 验证传入请求者的身份和访问权限,并提供审计日志。

  • 多云:Open Sharing 支持多种公有云平台,包括 AWS、Azure、GCP 等。

阅读以下材料以了解更多讯息:

What's Up Next

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

重构 Stage 相关测试

在运行 Stage 相关测试时,我们应当使用 Streaming Load API 来移动文件到 Stage 中,而不是使用像下面的 AWS 命令:

aws --endpoint-url ${STORAGE_S3_ENDPOINT_URL} s3 cp s3://testbucket/admin/data/ontime_200.csv s3://testbucket/admin/stage/internal/s1/ontime_200.csv >/dev/null 2>&1

这是由于 Databend 用户不需要关心也不需要考虑 AWS 命令中所指定的 Stage 路径。

Issue 8528: refactor stage related tests

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

Changelogs

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

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

Contributors

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

Connect With Us

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

Alt text

英文版移步:https://www.databend.com/blog/2022-12-07-databend-weekly

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。即刻体验云服务:https://app.databend.cn

What's New

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

Features & Improvements ✨

Planner

  • 优化集群模式下的 TopK (#9092)

Query

  • 支持 select * exclude [column_name | (col_name, col_name,...)] (#9009)

  • 支持使用 alter table 还原表 (#8967)

  • 新增表函数 read_parquet ,可以读取 Parquet 文件作为表 (#9080)

  • 支持 select * from @stage (#9123)

Storage

  • 引入 CachePolicy ,允许定制缓存逻辑 (#9062)

  • 支持 Hive nullable partition (#9064)

Code Refactoring 🎉

Memory Tracker

  • 保持 Memory Tracker 状态一致 (#8973)

REST API

  • 查询结束后删除上下文 (#9091)

Bug Fixes 🔧

Configs

  • 为 Hive 配置加载增添更多测试 (#9074)

Planner

  • 尝试修复表名大小写敏感的问题 (#9055)

Functions

  • 修复 vector_const like 相关问题 (#9082)

Storage

  • 在清除时更新 last_snapshot_hint 文件 (#9060)

Cluster

  • 使用 ClosingClient 通知服务端关闭连接以修复 broken pipe 或 connect reset 错误 (#9104)

What's On In Databend

请持续关注 Databend 的最新动态。

RESTORE TABLE

只要在语句中指定快照 ID 或时间戳,Databend 就可以将表恢复到先前创建快照时的状态。可以使用 FUSE_SNAPSHOT 来检索表的快照 ID 和时间戳。

-- Restore with a snapshot ID
ALTER TABLE <table> FLASHBACK TO (SNAPSHOT => '<snapshot-id>');
-- Restore with a snapshot timestamp
ALTER TABLE <table> FLASHBACK TO (TIMESTAMP => '<timestamp>'::TIMESTAMP);

阅读以下材料以了解更多讯息:

What's Up Next

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

在错误报告中增加构建信息

目前 Databend 的错误报告是由错误代码和有关错误发生原因的一些信息组成的,如果能够在其中加入构建信息,可能有助于排查问题。

"Code: xx. Error: error msg... (version ...)"

Issue 9117: Add Build Information to the Error Report

如果你对这个主题感兴趣,可以尝试解决其中的部分问题或者参与讨论和 PR review。或者,你可以点击 performance: compressing for short strings · Issue #9001 来挑选一个随机问题,祝好运!

Changelogs

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

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

Contributors

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

Connect With Us

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

Alt text

英文版移步:https://www.databend.com//blog/2022-11-30-databend-weekly

Databend 是一款强大的云数仓。专为弹性和高效设计。自由且开源。即刻体验云服务:https://app.databend.cn

What's New

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

Features & Improvements ✨

Format

  • 更好地检查格式相关选项 (#8981)

  • 为 Parquet 文件提供基本的模式推断能力 (#9043)

Query

  • QualifiedName 支持 'db.table.''table.' (#8965)

  • 支持批量插入时关闭表达式解析 (#8966)

Storage

  • 为 fuse engine 增加 cache layer (#8830)

  • 新增 system 表 system.memory_statistics (#8945)

  • 新增 optimize table table_name statistic 支持,用于计算表统计信息 (#8891)

Code Refactoring 🎉

Base

  • 移除 common-macros (#8936)

Format

  • TypeDeserializer 中去除 FormatSetting (#8950)

Planner

  • 重构 ExtractOrPredicate ,合并到 RulePushDownFilterJoin(#8951)

Processors

  • 合并构建数据块来优化 join (#8961)

New Expression

Documentation 📔

  • 使用 Crowdin 提供 i18n 支持 (#8987, #8997, etc.)

Bug Fixes 🔧

Base

  • 修复 memory tracker 丢失的问题 (#8932)

Meta

  • 修复 share db 漏洞,如果需要则创建 DatabaseIdToName (#9006)

Mysql handler

  • 修复 MySQL 连接泄漏 (#8894)

Processors

  • 修复 update_list 中的内存泄漏 (#9023)

Storage

  • 压缩时并行读写数据块 (#8921)

What's On In Databend

请持续关注 Databend 的最新动态。

Infer Schema 前瞻

通常,在从 stage 或者其他位置载入数据时,我们需要先创建对应的表。但有些时候,我们无法预知文件模式或者需要创建的模式太复杂,使得无法轻松完成创建表的工作。

引入模式推断将会简化从文件载入数据的过程。甚至,可以直接使用 SELECT 语句查询 stage 中的数据,例如 select * from @my_stage

INFER 's3://mybucket/data.csv' FILE_FORMAT = ( TYPE = CSV );
+-------------+---------+----------+
| COLUMN_NAME | TYPE | NULLABLE |
|-------------+---------+----------|
| CONTINENT | TEXT | True |
| COUNTRY | VARIANT | True |
+-------------+---------+----------+

#9043 中,Databend 新增对 parquet 文件进行基本模式推断的接口,我们将会在这个基础上继续推动 #7211 的解决,以支持 select * from @stage

阅读以下材料以了解更多讯息:

What's Up Next

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

为 MySQL Handler 添加 TLS 支持

近期发布的 opensrv-mysql v0.3.0 引入了 TLS 支持,是时候为 Databend 的 MySQL Handler 实现它。

let (is_ssl, init_params) = opensrv_mysql::AsyncMysqlIntermediary::init_before_ssl(
&mut shim,
&mut r,
&mut w,
&Some(tls_config.clone()),
)
.await
.unwrap();

opensrv_mysql::secure_run_with_options(shim, w, ops, tls_config, init_params).await

Issue 8983: Feature: tls support for mysql handler

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

Changelogs

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

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

Contributors

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

Connect With Us

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