博客

Databend 开源周报第 109 期

avatarDatabend Labs9月 4, 2023
Databend 开源周报第 109 期

英文版移步: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 INTO
REPLACE INTO
这两种方式写入数据时,会自动执行 compact 和 recluster 操作。

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

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

Code Corner

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

Databend Local 模式

Databend 的 local 模式旨在提供一个简易的 Databend 环境,用户无需部署 Databend 服务就可以用 SQL 进行交互,从而方便开发者们使用 Databend 进行简单的数据处理。

Local 模式 将启动一个临时的 databend-query 进程,并且提供客户端和服务端的融合支持。其存储位于临时目录中,生命周期跟随进程,进程离开后资源也将销毁,你可以在一个服务器中启动多个 local 进程,他们的资源是相互隔离的。

❯ alias databend-local="databend-query local"
❯ echo " select sum(a) from range(1, 100000) as t(a)" | databend-local
4999950000

❯ databend-local

databend-local:) select number %3 n, number %4 m, sum(number) from numbers(1000000000) group by n,m limit 3 ;

┌───────────────────────────────────┐
│ n │ m │ sum(number) │
│ UInt8 │ UInt8 │ UInt64 NULL │
├───────┼───────┼───────────────────┤
│ 0 │ 0 │ 41666666833333332 │
│ 1 │ 0 │ 41666666166666668 │
│ 2 │ 0 │ 41666666500000000 │
└───────────────────────────────────┘
0 row result in 1.669 sec. Processed 1 billion rows, 953.67 MiB (599.02 million rows/s, 4.46 GiB/s)

如果你需要在生产环境使用 Databend,我们建议按官方文档部署 Databend 服务或使用 Databend Cloud,但如果你是开发人员或测试工程师,则可以使用 local 模式来体验 Databend。

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

Highlights

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

  • 初步支持
    MERGE INTO
  • 实现 SQLsmith 测试框架,以支持更精确的模糊测试。
  • 阅读文档 Docs | Setting Environment Variables 了解如何通过环境变量变更 Databend 配置。
  • 实现
    json_strip_nulls
    json_typeof
    函数,你也可以阅读 Docs | Semi-Structured Functions 了解 Databend 为半结构化数据处理设计和实现的函数。

What's Up Next

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

优化 MERGE INTO 实现

PR #12350 | feat: support Merge-Into V1 中,Databend 初步支持了

MERGE INTO
语法。

在这个基础上,还有很多值得关注的优化可以实施,比如:提供并行和分布式的实现,减少 IO 并简化数据块拆分等。

Issue #12595 | Feature: Merge Into Optimizations

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

Changelog

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

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

分享本篇文章

订阅我们的新闻简报

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