Release Notes v0.6.0
Release Notes v0.6.0
1 架构层
1.1 存储计算分离
1. 计算引擎(Executor):接收基于MySQL协议和DingoDB自有协议的SQL,进行SQL解析、逻辑计划和执行计划生成,对接低层Store存储。
2. 分布式存储引擎(Store):基于C++的高效分布式存储。整个存储层分为元数据存储和数据存储;存储层设计采用灵活扩展的方式,进行多种存储引擎的扩展,如Rocksdb, memory, xdp-rocks等。
3. 支持计算下推操作:为了高效的提升聚合、过滤操作带来的价值,提升计算的效率,存储层支持计算下推的逻辑实现;支持filter,count,sum, min, max等操作。
1.2 Raft升级
1. 提供Leader选举机制,支持多节点选举;
2. 提供日志复制,保证了系统的可靠性,有效防止数据丢失。
3. 提供高性能的Raft,采用多线程和异步IO,提高了系统的吞吐量和响应速度。
4. 提供Snapshot机制,用于恢复状态机的状态。能够减少日志的大小,从而提高性能,还可以用于在节点故障时快速恢复状态机的状态。
5. 提供集群扩缩容迁移能力,能够在不影响整个系统的稳定性和一致性前提下更加容易地添加或删除节点。
1.3 协议层支持MySQL协议
1. 提供MySQL Shell这种交互式命令行工具,用于高效管理和操作MySQL数据库;同时支持SSL加密,保证数据库的安全性。
2. 提供MySQL JDBC Driver 数据库连接驱动程序, 通过Java应用程序中的JDBC API访问MySQL数据库,用于连接和操作MySQL数据库。
1.4 集群运维监控
1. 提供可视化监控,涉及grafana监控、http监控,实现集群节点(磁盘、CPU、IO等)、表(分区、Region)、Region监控、raft group监控
2. 提供多种部署方案:单点、docker-compose、ansible多节点部署
3. 提供了集群在线扩容、缩容方案,进行集群扩缩容操作。
2 功能层
2.1 Common公共和基础模块
1. 支持手动调整日志级别,可以根据实际场景需要灵活地控制日志地详细程度,减少日志文件的大小和存储成本。
2. 优化Store & Dingo Client端错误码
3. 支持C++版本的数据序列化,将序列化后的数据按照序列化时的格式解析,然后将解析后的数据还原为原始数据,
2.2 Raft管理和分布式存储
1. 提供Snapshot机制,用于恢复状态机的状态。
2. 支持Region Split,当某个Region超过最大限制,系统自动将其分裂成多个Region,保证各个Region大小接近,有利于进行调度决策。
3. 支持Region Merge,当某个Region因为大量删除导致Region的大小变小是,系统会将较小的两个相邻Region进行合并。
4. 优化了Range范围校验规则,提高代码执行效率,从而缩短数据查询时间,对性能有极大提升。
5. 支持活配置dingo-store服务线程个数,用户可以根据实际场景需要调整线程个数
6. 支持服务在运行时指定故障点(failpoint),方便测试Corner case。
7. 支持Sotre & Region 的Metric信息管理
8. 支持算子计算下推,存储层提供基本的operator,DingoClient作为中间端的桥接器,支持SDK和SQL场景,操作类型如下:
- SUM
- SUM0
- COUNT
- MAX
- MIN
- COUNTWITHNULL
9. 支持自增ID Auto Increment ID,当创建一个具有自增列的表时,DingoDB 自动为插入到表中的每一行分配一个唯一的整数值。通过使用分布式序列生成器确保自增列的值在整个集群中都是唯一的。
2.3 SQL协议层
1. 重构Executor端架构,Executor端负责计算,用于解析并响应 Client 端 SQL 请求和其他管理请求
2. 兼容MySQL协议
3. 完成Calcite的升级,提高SQL端的执行效率
4. Metric表级信息采集
5. 网络传输层增加task响应机制(STOP/READY/QUIT)
2.4 SQL语法扩展
1. 扩展创建表时指定副本数和分区能力信息,附加相关的附属信息。
2. 扩展通过SQL进行Region分裂,实现数据分布管理,使用更加灵活易用。
3. 扩展MySQL协议相关语法
- 支持查看全局/用户/会话变量
- 支持设置全局/用户/会话变量
- 支持查看表结构/指定列的信息
- 支持查看表/用户创建语句
- 支持设置mysql-driver空闲超时时长
- 支持Sql的预处理
2.5 Java SDK层
SDK为开发人员创建的一组软件工具程序,通过特定API接口对数据库进行操作,开发者能够更加灵活且高效的执行数据库操作,降低学习成本,极大提升开发效率。以下是DingoDB SDK层支持的功能特性:
1. 支持通过DingoDB自研API接口执行Connect集群操作
2. 支持表操作(创建/删除)
3. 支持单条数据操作(查看/插入/删除/修改)
4. 支持批量数据操作(查看/插入/删除/修改)
5. 支持范围过滤后的聚合操作
- SUM
- SUM0
- COUNT
- MAX
- MIN
- COUNTWITHNULL
2.6 DevOPS层
可视化系统监控
- 节点信息监控,帮助用户更有效观察服务器节点状态变化
- 系统进程监控,帮助用户及时发现异常进程,用户及时响应处理
新增系统运维工具
- 支持多节点部署,使用ansible自动化运维工具,通过批量系统配置,程序部署,命令运行等功能来实现批量部署的功能。
新增DBA级别的系统管理工具
- 支持Leader的迁移,将同一group中的Leader切换到领一个follower节点,用于负载均衡或紧急情况下重启机器。
- 支持Region分裂/合并,系统自动将其分裂/合并成多个Region,保证各个Region大小接近,达到负载均衡。
- 支持节点扩缩容,用户可以根据实际场景中数据分布来决定是否增加或减少借点,从而做到负载均衡。
- 可视化Sechma/Table/Region管理,通过可视化工具有效监控Sechma/Table/Region信息。