---
# System prepended metadata

title: Databend 开源周报第 129 期
tags: [weekly]

---

---
title: Databend 开源周报第 129 期
description: 
slug:  databend-weekly-129
date: 2024-01-22
tags: [weekly]
cover_url: databend-weekly.svg
image: databend-weekly.png
contributors:
  - name: andylokandy
  - name: b41sh
  - name: BohuTang
  - name: Chasen-Zhang
  - name: dantengsky
  - name: Dousir9
  - name: drmingdrmer
  - name: everpcpc
  - name: JackTan25
  - name: leiysky
  - name: lichuang
  - name: PsiACE
  - name: soyeric128
  - name: sundy-li
  - name: TCeason
  - name: Xuanwo
  - name: xudong963
  - name: youngsofun
  - name: zhang2014
  - name: ZhiHanZ
  - name: zhyass
authors:
  - databendlabs
---

![img_v3_026u_c7ea2269-4120-43d6-8825-a12044bad7ag](https://hackmd.io/_uploads/H1oGEojKa.png)


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

## What's On In Databend

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

### 支持标准流

**标准流** 能够捕获所有类型的数据变更，包括更新和删除。相较于仅追加流，标准流的功能更加完备，并且适用于更加复杂的数据变更场景。

`CREATE STREAM` 的语法也支持了选项用于控制流的类型。

```sql
CREATE STREAM [IF NOT EXISTS] [<database_name>.]<stream_name>
  ON TABLE [<database_name>.]<table_name>
    [AT (STREAM => <stream_name>)]
    [append_only = true|false]
    [COMMENT = '<comment>']
```

- 如果 `append_only=true`，创建仅追加流（append_only stream），仅用于追加数据，不跟踪更新或删除。
- 如果 `append_only=false`，创建标准流（standard stream）。能够捕获所有类型的数据变更，包括更新和删除，提供全面的数据修改跟踪。

如果您想了解更多信息，欢迎联系 [Databend 团队](https://databend.cn/contact-us/)，或查看下面列出的资源。

- [PR #14272 | feat: standard stream](https://github.com/datafuselabs/databend/pull/14272)

## Code Corner

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

### ~300 行实现 Raft 共识算法

Databend 的元数据服务使用 Raft 共识算法，并且开源和维护了 [openraft](https://github.com/datafuselabs/openraft) 这个基于 tokio 的异步 Raft 实现。

[one_file_raft](https://github.com/drmingdrmer/one_file_raft) 是一个简洁的演示性实现，在大约 300 行有效代码的单个 Rust 文件中实现了 Raft 共识算法，文件长度大约300行。

由 openraft 的主要维护者 [drmingdrmer](https://github.com/drmingdrmer) 创建，用于展示分布式共识协议的核心原理，不涉及应用特定的业务逻辑、边缘情况管理和错误处理的复杂性。该实现关注于 Raft 的基础特性，如领导者选举、日志复制和日志提交，同时省略了高级功能，如日志压缩和日志清理。

- [GitHub - drmingdrmer/one_file_raft](https://github.com/drmingdrmer/one_file_raft)

## Highlights

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

- 支持 Query 级别的缓存统计。
- 为分布式查询实现基于成本的优化。
- 新增日期相关函数 `MONTHS_BETWEEN` 。
- 新增任务 DAG 相关函数 `TASK_DEPENDENTS` 和 `TASK_DEPENDENTS_ENABLE` 。
- admin API 新增 `v1/system` 接口，用于展示系统信息。

## What's Up Next

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

### 租户数据迁移工具

`databend-metactl --export` 支持一次性导出所有元数据服务中的数据。但目前还缺乏用于迁移属于特定租户的确切数据的工具。

为了进一步满足多租户场景下的元数据迁移，Databend 计划设计并实现一个专用工具。该工具会导出并解码元数据服务中的数据，并从中过滤掉不必要的数据。

[Issue #14405 | Tracking issue: dump data belonging to a tenant from meta-service](https://github.com/datafuselabs/databend/issues/14405)

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

## Changelog

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

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

## Contributors

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

![图片](https://hackmd.io/_uploads/rybZNjsYp.png)

## Connect With Us

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

- [Databend Website](https://databend.rs) 
- [GitHub Discussions](https://github.com/datafuselabs/databend/discussions)
- [Twitter](https://twitter.com/Datafuse_Labs)
- [Slack Channel](https://link.databend.rs/join-slack)
