Databend Roadmap in 2023

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

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

早期的 Roadmap:

主要任务

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

Task Status Comments
(Query) Support Decimal data type#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 PLAN high-priority(release in v1.0)
(Planner) CBO IN PROGRESS high-priority(release in v1.0)
(Processor) Aggregation spilling IN PROGRESS high-priority(release in v1.0)
(Storage) Update#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 类型, 在 new expression 直接增加新类型;

  • 支持直接查询外部 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 PLAN high-priority(release in v1.1)
(Query) JSON indexing PLAN high-priority(release in v1.1)
(Query) Distributed COPY#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 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 PLAN
Parquet reader PLAN
DataFrame PLAN
Data Sharing(community version) IN PROGRESS
Concurrent query enhance PLAN
Distributed COPY#8594 PLAN
Support Decimal data type#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 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 PLAN
Join reorder IN PROGRESS
CBO 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 PLAN high-priority
Array functions#7931 PLAN high-priority
Faiss index#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

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/5489811/blog/7012005