1 自适应事务处理机制
GBase 8c采用自适应的事务处理机制来提升系统性能。对于只需要在本地节点进行处理的事务,协调器按本地事务处理流程进行处理,不需要进行两阶段提交,以提升事务处理的效率;对于需要跨节点处理的事务,协调器协调参与者进行两阶段提交,以保障全局事务的一致性。整个事务处理的流程对客户端透明。
2 数据分布策略
GBase 8c支持复制表和分布表,通过数据分布策略来避免并行计算期间的资源竞争,同时提升系统性能。复制表是指每个节点上都复制一份数据,数据关联时在节点本地完成。分布表是指一份数据根据某个键值水平拆分到不同的节点上,将单个大表拆分成若干小表,提升系统读写的性能。
复制表和分布表的适用场景如下:
表类型 | 操作类型 | 性能表现 | 适用场景 |
复制表 | 插入 | 较慢 | 字典表 小表 |
查询(JOIN) | 快/高并发/线性提升 | ||
分布表 | 插入 | 快/高并发/线性提升 | 事实表 超大表 易分片的表 |
查询(多表单片) | 快/高并发/线性提升 | ||
查询(单表多片) | 较快 | ||
查询(多表多片) | 慢 | 避免出现 | |
复制表-分布表混合 | 复制表对单一分布表 JOIN 查询 | 较快 | 主题表-事实表 字典表-事实表 小表-超大表 |
3 并行技术
GBase 8c采用并行技术来提升系统的性能和吞吐量,主要特点有:
1. Coordinator协调器制定分布式执行计划,将算子下推到数据节点,数据节点并行处理;
2. 各数据节点采用多线程架构,多个线程并行处理;
3. 采用MVCC(多版本并发控制)技术,实现读写不冲突,提升读写并行处理能力;
14 高可用
GBase 8c高可用架构是通过分布式全组件冗余实现的,即在软件层,针对分布式集群中的每个组件,均做了组件级冗余。
l CN:协调器,采用完全对等的部署方式;
l DN:数据节点,采用主备的高可用架构,主备之间可以配置同步或异步方式;
l GTM:全局事务管理器,采用主备的高可用架构,主备之间可以配置同步或异步方式;
l HA Center:集群状态管理器,采用Raft的复制协议;
l GHA Server:集群管理器,采用主备的高可用架构,主备之间可以配置同步或异步方式;
5 分布式事务
GBase 8c通过GTM全局事务管理器和本地两阶段提交技术,提供分布式强一致事务的能力,同时,对于追求性能的新兴数据库业务,也支持可选的最终一致性事务的能力。
分布式事务原子性和两阶段提交协议
为了保证分布式事务的原子性,防止出现部分DN提交、部分DN回滚的“中间态”事务,GBase 8c采用两阶段提交(2PC)过程,实现跨节点分布式事务。
一、准备阶段(prepare phase),在这个阶段,将所有提交操作所需要使用到的信息和资源全部写入磁盘,完成持久化;
二、提交阶段(commit phase),根据之前准备好的提交信息和资源,执行提交或回滚操作。
一旦准备阶段执行成功,那么提交需要的所有信息都完成持久化落盘,即使后续提交阶段某个DN发生执行错误,该DN可以再次从持久化的提交信息中尝试提交,直至提交成功。最终该分布式事务在所有DN上的状态一定是相同的,要么所有DN都提交,要么所有DN都回滚。因此,对外来说,该事务的状态变化是原子的。
6 算子下推
算子下推是GBase 8c关键技术之一,可以把各种复杂的SQL进行下推执行,最小化数据移动,这是相对于基于分库分表的中间件方案的核心优势。
7 原位更新
l 当执行delete时,数据库将删除元组直接标记为dead,并不会真正从物理上删除;
l 当执行update时,数据库将会使用unused空间写入一个新的元组,然后将旧元组标记为dead,也不进行物理删除;
l 当表上频繁DML时,dead tuple会逐渐将空间耗尽,同时做全表扫描时产生很多额外I/O。
GBase 8c采用原位更新技术:
l 将new tuple放在原位,将dead tuple集中存放在undo;
l 去除vacuum,保证数据回收时IO稳定;
l 数据空间缩减。
PG 采用追加更新方式存储数据,也就是当修改数据时,不是在原位置修改,而是写入一个新记录,这会导致空间膨胀,也就需要定期回收过期的数据空间。这一直是 PostgreSQL 的一个弱项。
而GBase 8c实现了 Undo 机制,也就可以在原位置更新数据。这带来的好处包括:
l 高性能:对插入、更新、删除等不同负载的业务,性能以及资源使用表现相对均衡,相比Append Update引擎性能提升10%;
l 运行平稳:性能运行平稳,8小时性能滚降值从13.8%降低至2.5%;
l 高效存储:支持最大限度的原位更新, TPCC负载下平均节约空间15%~20%,UNDO空间统一分配,集中回收,复用效率更高,存储空间使用更加高效、平稳。
8 事务状态保持
GBase 8c具备事务状态保持能力,任意协调器节点(CN)宕机后,都不影响该节点正在进行的事务状态,事务会自动迁移到其它CN上,继续顺利运行,确保数据库处理能力不会中断。
CN3节点接管事务后,无需重复前面已经成功提交的事务状态,而是继续完成宕机的CN2节点未完成的状态来完成本次事务。整个过程对上层业务无感知,数据库集群内任意节点宕机均不会造成死锁或异常等待情况。
9 全局CDC
GBase 8c支持全局CDC(Change Data Capture,变化数据捕获)特性,方便用户进行数据库的全局备份和数据抽取。CDC变化数据捕获的方式主要包括时间戳、快照、触发器和日志,其中GBase 8c 基于日志的CDC方式,对源数据库的性能不会产生影响。
10 备份恢复
海量的业务数据不仅仅给数据处理和分析查询的性能带来挑战,对数据备份和恢复的要求也更高。因为数据量巨大,如果没有高效的备份和恢复能力,在意外、故障或灾难发生时,无法及时使数据库得到恢复,系统和业务的可用性就无法得到保障。
GBase 8c集群具有全局备份和恢复的能力,支持全量备份、恢复,支持增量备份、恢复。在通用管理平台上,可以进行备份方式和备份时间频率的配置,并且能够查看全部的备份记录。提供全面的基于集群级、库级、表级的备份和恢复功能,包括:
1.全量备份和恢复;
2.增量备份和恢复:允许基于任意一个备份点进行数据恢复。