Databend Roadmap In 2023
Databend Labs2月 1, 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 类型;
-
支持直接查询外部 parquet 的文件;
-
主要 Array 函数支持;
-
支持:alter table 增加删除列的操作,update 进一步增强,支持 CDC 相关操作;
-
引入 Block data cache 用于节省对象存储上的查询请求费用,同时也启到加速作用;
目前 CDC 及数据迁移工作这块对接了:
-
支持 Addax 数据迁到到 Databend 中 [done]
-
支持 DataX 到 Databend & Databend Cloud 的数据迁移对接中 [IN PROGRESS]
-
对接 Tapdata 到 Databend & Databend Cloud 的 CDC 数据写入 [IN PROGRESS]
-
对接 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 需要具备:
-
具备替换 ES 初步能力
-
支持分布式调用 copy 数据导入能力
-
支持 cluster key,让数据按某个字段排序
-
支持 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 规划中有一些特别的功能:
基础部分:
-
update 实现上的优化 [v1.0]
-
alter table 表结构秒级变更的实现 [v1.0]
-
read parquet 文件
进阶部分:
-
Windows Function 窗口函数支持,这个跑通 TPC-DS 必备条件
-
物化视图,后续可以让 Databend 支持更加复杂的 ETL
-
DataFrame 这块是新型数据工作者比较喜欢的方式
高级部分:
-
数据共享,这是构建 Data market 一个基础
-
并发访问控制
-
分布式的 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 有三块明确的需求
-
减少 Query 节点和对象存储的交互,降低费用;
-
让数据库在 Query 节点存储直接命中,提升性能;
-
通过更优的格式存储提升查询能力,目前测试 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 |
存储这块目前来看有几个比较明确的功能需求:
-
支持 re-clustering,让数据按某些列有序的存储,减少排序和区间查询的扫描范围
-
清理计算及使用中产生的孤儿数据(v1.0 版本就完成)
-
进一步优化 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
订阅我们的新闻简报
及时了解功能发布、产品规划、支持服务和云服务的最新信息!