Skip to content

Commit

Permalink
New TiDB 4.0 version planning and future version planning
Browse files Browse the repository at this point in the history
  • Loading branch information
scsldb committed Jul 29, 2019
1 parent 3a27235 commit ad3ffd9
Showing 1 changed file with 184 additions and 99 deletions.
283 changes: 184 additions & 99 deletions dev/roadmap.md
Original file line number Diff line number Diff line change
@@ -1,103 +1,188 @@
---
title: TiDB 路线图
category: Roadmap
---
#TiDB V4.0

# TiDB 路线图
##TiDB

###TiDB

####功能

* 支持 TiFlash 存储引擎
* Optimizer Trace
* Multi-Column Statistics
* Normal CM-Sketch with TOPN Statistics
* 完善 Plan Cache 功能
* 简单的自适应 SQL 引擎
* SQL Tuning Advisor
* SQL Plan Management

####性能

* 提升 load CSV/data 性能
* 提升 Prepare 语句性能
* Generated Column 支持 Index
* 优化 SQL 引擎部份算子
* 提升通过索引回表查询的性能
* Index Join 拆分为 Index Merge Join 和 Index Hash Join
* Radix Hash Join
* Index Merge
* Parallel Stream Aggregate
* Parallel Merge Sort
* Parallel Merge Join
* Full Vectorized Expression Evaluation
* Indexes on Expressions
* Multi-Index Scan
* Join,Aggregate,Sort 算子支持外部存储
* 优化执行引擎并发模型
* 支持新 Cascades 优化器,支持 Cascades Planner,扩大优化器的搜索空间

####易用性

* 完善 Optimizer Hint 功能
* 快速修复数据库或者表元信息及数据
* 动态修改配置项
* 空闲连接自动断开
* 完善支持 MySQL 5.7 DDL 语句
* 重构日志内容
* 支持 admin checksum from … to … 校验数据完整性
* 标准 SQL 查询 DDL 历史记录
* 标准 SQL 管理 Binlog
* 标准 SQL 管理集群
* 多个 Ctrl 工具合并一个工具

####高可用

* Binlog 支持服务高可用

###TiKV

####功能

* 集群规模最大支持 200+节点
* 全量物理备份恢复
* 动态 Split,Merge 热点 Region
* 精细的内存控制
* Raft
* 链式复制数据
* Witness Role
* Joint consensus
* 只读副本
* 存储引擎
* RocksDB Gaurd,compaction 按特定逻辑切分 SST
* 冷热数据分离
* 事务
* 悲观锁 GA
* 事务内不限制语句数量
* 支持 10GB 事务

####性能

* 提升 Scan 性能
* 动态扩展工作线程数量
* 弹性扩展只读副本
* 优化调度系统确保 QPS 不抖动

####易用性

* 重构日志内容



##Data Migration

####功能

* 完善前向检查
* 可视化管理同步规则
* 可视化管理同步任务

####易用性

* Ctrl 工具集成数据一致性校验功能
* Ctrl 工具输出任务详细信息
* 重构日志格式及内容

####高可用

* 支持服务高可用

##TiDB Toolkit

####功能

* Loader 集成到 TiDB
* TiDB Lightning 集成到 TiDB

####性能

* TiDB Lightning 支持并行导入
* TiDB Lightning 优化导入回放路径



# TiDB 未来规划

## TiDB

- [ ] 优化器
- [ ] 统计信息优化
- [ ] Multi-Column Statistics
- [ ] Cascades Planner
- [ ] Plan Management
- [ ] SQL Tuning Advisor
- [ ] Robust Access Path Selection:增加启发式规则,提升 OLTP 场景中索引选择正确率
- [ ] Adaptive Query Optimization
- [ ] 执行引擎
- [ ] 算子并行化
- [ ] 内存控制
- [ ] 并发控制
- [ ] Shuffle 算子
- [ ] Vectorized 表达式计算
- [ ] UDF
- [ ] SQL 功能
- [ ] 支持 View
- [ ] 支持窗口函数
- [ ] 支持 Common Table Expression
- [ ] 支持 Hash 分区表
- [ ] 支持 utf8_general_ci collation
- [ ] DDL 改进
- [ ] 支持 Table Lock
- [ ] 支持 Change column type
- [ ] 支持单条语句中多个 DDL 操作
- [ ] 支持不可见索引(invisible index)
- [ ] 支持插件系统
- [ ] 支持白名单插件
- [ ] 支持审计日志插件
- [ ] 支持 RBAC 插件
- [ ] 支持诊断插件
- [ ] 支持 Query Tracing
- [ ] 支持行列混合存储引擎
- [ ] 支持 New Storage Row Format,提升性能并减小内存占用
- [ ] RowID 实现非整数类型
- [ ] 事务
- [ ] 减少读写冲突
- [ ] 优化事务调度机制
- [ ] 改善模型,降低延迟
- [ ] 支持最小事务 (like the mini-transaction of InnoDB)

## TiKV

+ Raft
- [x] Region Merge - 合并小的 Region 以减少开销
- [x] Local Read Thread - 把读请求放在一个单独的线程处理
- [x] 批量 Region Split - 加速大的 Region 的分裂
- [x] Raft Learner - 支持 Raft learner 使得成员变更过程更加平滑
- [x] Raft Pre-voter - 支持 Raft Pre-vote 避免网络隔离带来不必要的选举
- [ ] Joint Consensus - 安全地进行多个成员变更
- [ ] 多线程 Raftstore - 在多个线程处理不同 Region 的 Raft 逻辑
- [ ] 多线程 Apply Pool - 在多个线程执行不同 Region 已经提交了的命令
+ Engine
- [ ] Titan - 把大的 key-values 从 LSM-Tree 中分离出来
- [ ] 可拔插的 Engine 接口 - 简化接口逻辑并且提供可扩展性
+ Storage
- [ ] 在 scheduler 里做流控提前避免 write stall
+ Transaction
- [x] 优化事务冲突
- [ ] 分布式 GC - 把 MVCC 垃圾回收的逻辑分布到 TiKV 控制
+ Coprocessor
- [x] Streaming - 把大的数据集切成小块返回以减少内存消耗
- [ ] Chunk Execution - 按 chunk 的方式来处理数据以提高性能
- [ ] 请求跟踪 - 提供单个请求执行的详细信息
+ Tools
- [x] TiKV Importer - 通过直接导入 SST 文件的方式加速数据导入
+ Client
- [ ] 提供 Rust 版本的 TiKV client
- [ ] gRPC 消息批量化 - 减少消息交互的开销

## PD

- [x] Namespace 完善
- [x] 不同 Namespace 或者 Table 配置不同的副本策略
- [x] Table Region 分散调度
- [x] 调度支持优先级,更加可控
- [ ] 使用机器学习优化调度
- [ ] 优化 Region 元信息存储 - 把元信息存储在一个独立的存储引擎里

## TiSpark

- [ ] Limit/Order 下推
- [x] DAG 接口接入(废除 Select 接口)
- [ ] Index Join 和并行 merge join
- [ ] Data Federation(桥接其他数据源,最好能和社区同步,这个接进来可以比较好扩展 Usecase,如果再做一个 InputFormat 适配就可以接 Hive 和 Presto 这些 Hadoop 上的数仓)

## Tools

- [x] 集群部署工具
- [X] 高性能数据导入工具(lightning)
- [X] 集群备份和恢复工具(包括全量+增量备份,mydumper + drainer/reparo)
- [X] 改进 TiDB-Binlog 架构
- [ ] 数据在线迁移工具(Syncer 升级版)
- [ ] 集群诊断和分析工具
### TiDB

#### 功能

- Common Table Expression
- Invisible Index
- 支持修改列类型
- 分区表支持二级分区
- Table Partition 与 普通表相互转换
- 视图支持写入及更新
- Mutil-Schema Change
- 按 Table 配置副本数及分布策略
- 精细的 QoS 控制
- 闪回到任意时间点

#### 性能

- Coprocessor Cache
- 新 Row 存储格式
- Distributed Execution Engine

#### 易用性

- 全链路 Trace 工具
- Help 信息补齐

#### 安全

* 列级别权限

#### 高可靠用

- Binlog 支持数据高可靠

### TiKV

#### 功能

- 增量物理备份恢复
- 闪回到任意时间点
- 分级存储
- 精细的 QoS 控制
- 按 Region 配置副本数及分布策

#### 性能

- 提升物理备份性能
- 提升增量物理备份性能
- 1PC
- 支持 Storage Class Memory 硬件
- 新 Raft 引擎



## Data Migration

#### 功能

- 下游支持 Oracle

#### 高可靠

- 支持数据高可靠

0 comments on commit ad3ffd9

Please sign in to comment.