Skip to main content

Databend Roadmap In 2023

Alt text

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

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

早期的 Roadmap:

主要任务

v1.0 (计划 Release 时间:2023.3.5)

TaskStatusComments
(Query) Support Decimal data type#2931PLANhigh-priority(release in v1.0 )
(Query) Query external stage file(parquet)IN PROGRESShigh-priority(release in v1.0)
(Query) Array functions#7931PLANhigh-priority(release in v1.0)
(Planner) CBOIN PROGRESShigh-priority(release in v1.0)
(Processor) Aggregation spillingIN PROGRESShigh-priority(release in v1.0)
(Storage) Update#9261IN PROGRESSneed-optimized(release in v1.0)
(Storage) Alter tableIN PROGRESShigh-priority(release in v1.0 )
(Storage) Block data cachePLANhigh-priority(release in v1.0 )
(Storage) Fuse engine orphan data cleanupPLANhigh-priority(release in v1.0)
(Integration) CDCIN PROGRESShigh-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)

TaskStatusComments
(Query) Fulltext index#3915PLANhigh-priority(release in v1.1)
(Query) JSON indexingPLANhigh-priority(release in v1.1)
(Query) Distributed COPY#8594PLANhigh-priority(release in v1.1)
(Storage) Fuse engine re-clusteringPLANhigh-priority(release in v1.1)
(Storage) Fuse engine segment treePLANhigh-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 功能

TaskStatusComments
Update#9261DONEneed optimized(release in v1.0)
PrivilegesIN PROGRESS
Alter tableIN PROGRESShigh-priority(release in v1.0 )
Window functionPLAN
Lambda function and high-order functionsPLAN
TimestampTz data typePLAN
Materialized viewPLAN
Support SET_VAR hints#8833PLAN
Parquet readerPLAN
DataFramePLAN
Data Sharing(community version)IN PROGRESS
Concurrent query enhancePLAN
Distributed COPY#8594PLAN
Support Decimal data type#2931PLANhigh-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 数据装载控制

改进

TaskStatusComments
New expression#9411DONE
Error messagePLAN

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

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

Resource Quota

TaskStatusComments
Session-level quota control (CPU/Memory)IN PROGRESS
User-level quota control (CPU/Memory)PLAN

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

Planner

TaskStatusComments
Scalar expression normalizationPLAN
Column constraint frameworkPLAN
Functional dependency framework#7438PLAN
Join reorderIN PROGRESS
CBOIN PROGRESShigh-priority(release in v1.0)
Support TPC-DSPLAN
Support optimization tracingPLANEasy to debug/study.

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

Cache

TaskStatusComments
Unified cache layerIN PROGRESS
Meta data cacheIN PROGRESS
Index data cacheIN PROGRESS
Block data cachePLANhigh-priority(release in v1.0 )

对于 Cache 有三块明确的需求

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

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

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

Data Storage

TaskStatusComments
Fuse engine re-clusteringPLANhigh-priority(release in v1.1)
Fuse engine orphan data cleanupPLANhigh-priority(release in v1.0)
Fuse engine segment treePLANSupport large dataset(PB) in one table

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

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

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

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

Distributed Query Execution

TaskStatusComments
Visualized profilingIN PROGRESS
Aggregation spillingIN PROGRESShigh-priority(release in v1.0)

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

TaskStatusComments
JSON indexingPLANhigh-priority
Fulltext index#3915PLANhigh-priority
Array functions#7931PLANhigh-priority
Faiss index#9699PLAN

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

LakeHouse

TaskStatusComments
Apache HiveIN PROGRESS
Apache IcebergIN PROGRESS
Delta LakeIN PROGRESS
Querying external storage(Parquet)IN PROGRESS

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

Integrations

TaskStatusComments
Dbt integrationIN PROGRESS
Airbyte integrationIN PROGRESS
Datadog Vector integrate with Rust-driverIN PROGRESS
Datax integrate with Java-driverIN PROGRESS
CDC with FlinkPLAN
CDC with KafkaPLAN

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

Meta

TaskStatusComments
Jepsen testIN PROGRESS
Store membership in raftPLAN
Nonblocking snapshot buildingPLAN
Snapshot file format implPLAN
Upgrade on-disk store formatPLAN

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

Testing

TaskStatusComments
SQLlogic TestIN PROGRESSSupports more test cases
SQLancer TestIN PROGRESSSupports more types and more cases
Fuzzer TestPLAN

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

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

Releases