上章节介绍了昆仑分布式数据库的架构,这章节接着介绍昆仑分布式数据库的技术特点!
一、高可用性(HA)
兼容多种强一致性,高可用性计划(strong consistency,high availability)
1.1 存储shard:默认应用MySQLGroupReplication保障数据库服务高可用
1.2 2*N+1个节点的shard,每个已提交的事务都复制到了至多N个备机
1.3 兼容基于mysqlrowbasedreplication的半同步同步的高可用技术(*)
1.4 兼容基于共享存储实现高可用的mysql存储集群(*)
二、齐备的容灾能力
齐备的容灾能力(crash safety&fault tolerance)
2.1 存储集群主备强统一
2.2 GTP:全局事务容灾能力
- 分布式事务两阶段提交
- 节点/网络故障时能够保障分布式事务ACID
2.3 GMR:DDL与集群全局元数据一致性
- DDL事务波及计算节点,元数据集群,存储集群
2.4 GMR:计算节点之间的元数据语句复制及其一致性保障
- 复制过程随时可能中断
2.5 GTP:计算节点主动切换存储集群主节点(auto failover)
- 元数据集群,存储集群
2.6 GTP:cluster_mgr:主动保护各shard的存储集群复制状态
三、程度扩大能力
高可扩展性(high scalability):计算能力,存储空间,资源利用率
3.1 IAP:灵便的sharding形式
- 用户对sharding形式领有全副管制
* sharding形式:hash/range/list,将来mirror(*)* 抉择sharding列:任意若干个列 * 用户最了解本人的数据及其拜访模式
- 定制分区选项达到最优性能
业余模式VS 傻瓜模式
- 依据数据表的规模定制sharding计划
* 不须要预估全局的固定的分区数目,也不把所有表等分为固定数量的分区* 能够为每个表按需减少分区,各表分区数量各异* 起码化两阶段提交的事务数量
- 计算节点主动为每个分片抉择适合的存储集群
3.2 ESO:主动按需扩大(*)
- 主动通明地散布数据表到新退出的存储集群
- 业务和最终用户无感知
3.3 GPQP:全局并行查询处理:后摩尔时代,利用更多的计算资源
- 计算节点层的并行
- 计算节点与存储节点之间的并行
- 存储节点层的并行(*)
3.4 多点读写
- 按需减少/缩小计算节点
- 按需减少/缩小存储shard(*)
- 存储集群反对多点写入(*)
- 备机读(*)
四、查询处理
4.1 充沛了解用户数据
- 本地存储齐备的元数据和数据字典
- 本地存储齐备的全局数据统计信息
- 有条件产生最优的分布式查问打算和查问执行性能
4.2 残缺的查询处理过程
- parser->resolver->optimizer->executer
- 能够解决任意SQL查问
反对多表连贯,子查问,汇集查问,CTE,window function,存储过程,视图,物化视图
- 残缺的查询处理性能:真prepared statement
4.3 完满反对OLAP查问
- 查询处理能力完满反对大数据分析工作
- 间接应用本地数据,无需数据搬迁,无需spark/hadoop生态
4.4 能够调用MySQL零碎函数和用户定义的存储过程/函数
*KunlunDB我的项目已开源
【GitHub:】
https://github.com/zettadb
【Gitee:】
https://gitee.com/zettadb
END