---
title: Databend Roadmap In 2023
description: Databend 2023 开发规划
slug: category-product/databend-roadmap-in-2023
date: 2023-02-01
tags: [product]
category: Product
cover_url: 2023-databend-roadmap.png
image: 2023-databend-roadmap.png
authors:
  - DatabendLabs
---

Databend 经历了 2022 年一整年的研发，Databend 的功能和稳定性得到了显著增强，一些用户开始在生产中使用。Databend 帮助他们极大地**降低**了成本和操作的复杂性问题。

{/* truncate */}

下面是 Databend Roadmap in 2023 (讨论)。

早期的 Roadmap:

- Roadmap 2022: [#3706](https://github.com/databendlabs/databend/issues/3706)
- Roadmap 2021: [#746](https://github.com/databendlabs/databend/issues/746)

## 主要任务

### v1.0 (计划 Release 时间：2023.3.5)

| Task                                                                                           | Status      | Comments                        |
| ---------------------------------------------------------------------------------------------- | ----------- | ------------------------------- |
| (Query) [Support Decimal data type#2931](https://github.com/databendlabs/databend/issues/2931) | PLAN        | high-priority(release in v1.0 ) |
| (Query) Query external stage file(parquet)                                                     | IN PROGRESS | high-priority(release in v1.0)  |
| (Query) [Array functions#7931](https://github.com/databendlabs/databend/issues/7931)           | PLAN        | high-priority(release in v1.0)  |
| (Planner) [CBO](https://github.com/databendlabs/databend/issues/9597)                          | IN PROGRESS | high-priority(release in v1.0)  |
| (Processor) Aggregation spilling                                                               | IN PROGRESS | high-priority(release in v1.0)  |
| (Storage) [Update#9261](https://github.com/databendlabs/databend/issues/9261)                  | IN PROGRESS | need-optimized(release in v1.0) |
| (Storage) Alter table                                                                          | IN PROGRESS | high-priority(release in v1.0 ) |
| (Storage) Block data cache                                                                     | PLAN        | high-priority(release in v1.0 ) |
| (Storage) Fuse engine orphan data cleanup                                                      | PLAN        | high-priority(release in v1.0)  |
| (Integration) CDC                                                                              | IN PROGRESS | high-priority(release in v1.0)  |

在 Databend v1.0 版本中，主要本着生产中用户一些反馈把 Databend 进一步的增强：

- 增加 Decimal 类型；

- 支持直接查询外部 parquet 的文件；

- 主要 Array 函数支持；

- 支持：alter table 增加删除列的操作，update 进一步增强，支持 CDC 相关操作；

- 引入 Block data cache 用于节省对象存储上的查询请求费用，同时也启到加速作用；

目前 CDC 及数据迁移工作这块对接了：

1. 支持 Addax 数据迁到到 Databend 中 [done]

2. 支持 DataX 到 Databend & Databend Cloud 的数据迁移对接中 [IN PROGRESS]

3. 对接 Tapdata 到 Databend & Databend Cloud 的 CDC 数据写入 [IN PROGRESS]

4. 对接 Airbyte & DBT 到 Databend & Databend Cloud 的数据写入 [IN PROGRESS]

### v1.1 (计划 Release 时间：2023.4.5)

| Task                                                                                  | Status | Comments                       |
| ------------------------------------------------------------------------------------- | ------ | ------------------------------ |
| (Query) [Fulltext index#3915](https://github.com/databendlabs/databend/issues/3915)   | PLAN   | high-priority(release in v1.1) |
| (Query) JSON indexing                                                                 | PLAN   | high-priority(release in v1.1) |
| (Query) [Distributed COPY#8594](https://github.com/databendlabs/databend/issues/8594) | PLAN   | high-priority(release in v1.1) |
| (Storage) Fuse engine re-clustering                                                   | PLAN   | high-priority(release in v1.1) |
| (Storage) Fuse engine segment tree                                                    | PLAN   | high-priority(release in v1.1) |

在 Databend v1.1 也许你已经发现 json indexing, fulltext index 这样的功能，这也是 v1.1 版本的主要目标，目前挺多用户使用 Databend 替代 ES 做日志相关的服务，这样也就要求 Databend 对 json 字段的处理能力要求非常高了。概括来讲 v1.1 需要具备：

1. 具备替换 ES 初步能力

2. 支持分布式调用 copy 数据导入能力

3. 支持 cluster key，让数据按某个字段排序

4. 支持 segment tree 让数据写入及缓存更加的高效，单表 PB 级别就非常轻松了

Databend 开发是以对象存储为基础，用户需求为核心，2023 年整体上以小步快跑的方式进行开发，经团队和用户的沟通功能需求大概如下：

### Query 功能

| Task                                                                                   | Status      | Comments                        |
| -------------------------------------------------------------------------------------- | ----------- | ------------------------------- |
| [Update#9261](https://github.com/databendlabs/databend/issues/9261)                    | DONE        | need optimized(release in v1.0) |
| Privileges                                                                             | IN PROGRESS |                                 |
| Alter table                                                                            | IN PROGRESS | high-priority(release in v1.0 ) |
| Window function                                                                        | PLAN        |                                 |
| Lambda function and high-order functions                                               | PLAN        |                                 |
| TimestampTz data type                                                                  | PLAN        |                                 |
| Materialized view                                                                      | PLAN        |                                 |
| [Support SET_VAR hints#8833](https://github.com/databendlabs/databend/issues/8833)     | PLAN        |                                 |
| Parquet reader                                                                         | PLAN        |                                 |
| DataFrame                                                                              | PLAN        |                                 |
| Data Sharing(community version)                                                        | IN PROGRESS |                                 |
| Concurrent query enhance                                                               | PLAN        |                                 |
| [Distributed COPY#8594](https://github.com/databendlabs/databend/issues/8594)          | PLAN        |                                 |
| [Support Decimal data type#2931](https://github.com/databendlabs/databend/issues/2931) | PLAN        | high-priority(release in v1.0 ) |

在 Query 规划中有一些特别的功能：

**基础部分：**

1. update 实现上的优化 [v1.0]

2. alter table 表结构秒级变更的实现 [v1.0]

3. read parquet 文件

**进阶部分：**

1. Windows Function 窗口函数支持，这个跑通 TPC-DS 必备条件

2. 物化视图，后续可以让 Databend 支持更加复杂的 ETL

3. DataFrame 这块是新型数据工作者比较喜欢的方式

**高级部分：**

1. 数据共享，这是构建 Data market 一个基础

2. 并发访问控制

3. 分布式的 copy 数据装载控制

#### 改进

| Task                                                                      | Status | Comments |
| ------------------------------------------------------------------------- | ------ | -------- |
| [New expression#9411](https://github.com/databendlabs/databend/pull/9411) | DONE   |          |
| Error message                                                             | PLAN   |          |

New expression 是 2023 年开年之初合并进来最大的一个功能。基于 New expression 有了完善的类型推导机制，在 SQL 的编译期能尽可能推断出表达式的执行方式，极简的表达式函数注册逻辑，以及在数据库类型级别实现了泛型的推导。在新的类型系统基础上，常量折叠，类型推导，函数的注册，查询数据裁剪 等模块都能享受到新类型系统带来的红利。

优化 错误 信息提示，让使用者更容易定位到问题。

#### Resource Quota

| Task                                     | Status      | Comments |
| ---------------------------------------- | ----------- | -------- |
| Session-level quota control (CPU/Memory) | IN PROGRESS |          |
| User-level quota control (CPU/Memory)    | PLAN        |          |

限制 Query & User 使用最大资源，这块特别是一些复杂的 Query 在资源有限的情况下，需要通过一些控制来降低内存的使用，减少 OOM 问题。

### Planner

| Task                                                                                         | Status      | Comments                       |
| -------------------------------------------------------------------------------------------- | ----------- | ------------------------------ |
| Scalar expression normalization                                                              | PLAN        |                                |
| Column constraint framework                                                                  | PLAN        |                                |
| [Functional dependency framework#7438](https://github.com/databendlabs/databend/issues/7438) | PLAN        |                                |
| Join reorder                                                                                 | IN PROGRESS |                                |
| [CBO](https://github.com/databendlabs/databend/issues/9597)                                  | IN PROGRESS | high-priority(release in v1.0) |
| Support TPC-DS                                                                               | PLAN        |                                |
| Support optimization tracing                                                                 | PLAN        | Easy to debug/study.           |

在 2022 年 Databend 支持复杂的 join 运算，跑通了 TPCH，现在需要通过 CBO 增强后，进一步提升 join 的智能优化。

### Cache

| Task                | Status      | Comments                        |
| ------------------- | ----------- | ------------------------------- |
| Unified cache layer | IN PROGRESS |                                 |
| Meta data cache     | IN PROGRESS |                                 |
| Index data cache    | IN PROGRESS |                                 |
| Block data cache    | PLAN        | high-priority(release in v1.0 ) |

对于 Cache 有三块明确的需求

1. 减少 Query 节点和对象存储的交互，降低费用;

2. 让数据库在 Query 节点存储直接命中，提升性能;

3. 通过更优的格式存储提升查询能力，目前测试 databend nagive engine 在本地盘情况下，可以和 Clickhouse 对齐。

### Data Storage

| Task                            | Status | Comments                               |
| ------------------------------- | ------ | -------------------------------------- |
| Fuse engine re-clustering       | PLAN   | high-priority(release in v1.1)         |
| Fuse engine orphan data cleanup | PLAN   | high-priority(release in v1.0)         |
| Fuse engine segment tree        | PLAN   | Support large dataset(PB) in one table |

存储这块目前来看有几个比较明确的功能需求：

1. 支持 re-clustering，让数据按某些列有序的存储，减少排序和区间查询的扫描范围

2. 清理计算及使用中产生的孤儿数据（v1.0 版本就完成）

3. 进一步优化 PB 级别的表，降低资源使用

### Distributed Query Execution

| Task                 | Status      | Comments                       |
| -------------------- | ----------- | ------------------------------ |
| Visualized profiling | IN PROGRESS |                                |
| Aggregation spilling | IN PROGRESS | high-priority(release in v1.0) |

分布式执行是 Databend 在追求的方向，执行计划可视化增强，同时也要在分布式执行上引入 spilling 策略，用于支持离线环境使用较小的资源来计算较大的数据的场景。

### Schema-Less Search

| Task                                                                         | Status | Comments      |
| ---------------------------------------------------------------------------- | ------ | ------------- |
| JSON indexing                                                                | PLAN   | high-priority |
| [Fulltext index#3915](https://github.com/databendlabs/databend/issues/3915)  | PLAN   | high-priority |
| [Array functions#7931](https://github.com/databendlabs/databend/issues/7931) | PLAN   | high-priority |
| [Faiss index#9699](https://github.com/databendlabs/databend/issues/9699)     | PLAN   |               |

Databend 在 json 支持引，利用 Rust 实现 mongodb 的 jsonb 实现，让 Databend 的 json 支持上有了进一步的提升。今年计划进一步的增强 json 的地实现，使期可以满足 ES 的一部分功能。

### LakeHouse

| Task                               | Status      | Comments |
| ---------------------------------- | ----------- | -------- |
| Apache Hive                        | IN PROGRESS |          |
| Apache Iceberg                     | IN PROGRESS |          |
| Delta Lake                         | IN PROGRESS |          |
| Querying external storage(Parquet) | IN PROGRESS |          |

原生大数据生态对接，Databend 给现有大数据生态加速。目前已经上生产环境的有：Databend + Hive，也在不断的优化中。

### Integrations

| Task                                      | Status      | Comments |
| ----------------------------------------- | ----------- | -------- |
| Dbt integration                           | IN PROGRESS |          |
| Airbyte integration                       | IN PROGRESS |          |
| Datadog Vector integrate with Rust-driver | IN PROGRESS |          |
| Datax integrate with Java-driver          | IN PROGRESS |          |
| CDC with Flink                            | PLAN        |          |
| CDC with Kafka                            | PLAN        |          |

生态对接方面，目前 Databend 主要集中 ETL 及 数据迁移相关的工具，同时也会也对接分析及可视化类工具。

### Meta

| Task                          | Status      | Comments |
| ----------------------------- | ----------- | -------- |
| Jepsen test                   | IN PROGRESS |          |
| Store membership in raft      | PLAN        |          |
| Nonblocking snapshot building | PLAN        |          |
| Snapshot file format impl     | PLAN        |          |
| Upgrade on-disk store format  | PLAN        |          |

Databend meta 是 Databend 非常核心的一个组件。主要用于 Databend 中定义的 meta 信息，事务，锁，一致性信息的管理。

### Testing

| Task          | Status      | Comments                           |
| ------------- | ----------- | ---------------------------------- |
| SQLlogic Test | IN PROGRESS | Supports more test cases           |
| SQLancer Test | IN PROGRESS | Supports more types and more cases |
| Fuzzer Test   | PLAN        |                                    |

Databend 目前测试从 Python 的 SQLlogic Test 切换到了 Rust SQLlogic Test 测试性能有了显著的提升，同时集成了 SQLancer Test 让 Databend 也有了更强的稳定性。后期还是需要增加更多的测试用例。

如果以上还你特别需要，还没包含进来的，也欢迎来 Databend repo 讨论区交流。如果你想参与其中某个功能的开发也欢迎参与进来。

## Releases

- [ ] [v1.0#9604](https://github.com/databendlabs/databend/issues/9604)
- [x] [v0.9#7052](https://github.com/databendlabs/databend/issues/7052)
- [x] [v0.8 #4591](https://github.com/databendlabs/databend/issues/4591)
- [x] [v0.7 #3428](https://github.com/databendlabs/databend/issues/2328)
- [x] [v0.6 #2525](https://github.com/databendlabs/databend/issues/2525)
- [x] [v0.5 #2257](https://github.com/databendlabs/databend/issues/2257)
