oGRAC —— 属于openGauss的RAC
引言
openGauss数据库和Cantian存储引擎基于双方核心技术优势,围绕客户需求以及未来的架构演进目标展开协同创新,通过存算分离技术、分布式缓存技术、事务MVCC机制、多主集群高可用等关键技术,实现了数据库系统的多读多写能力,共同构筑了属于openGauss的oGRAC数据库。oGRAC数据库拥有各种企业级增强特性,能够满足中、大型企业的业务系统数据存储与访问分析需要,是企业关系型数据库的理想选择。
系统架构
① DMS分布式资源管理
DRC:管理分布式元数据信息,包括page/lock等资源在集群范围内的owner、权限、并发控制等信息;
DCS:管理分布式缓存信息,包括page读写并发控制;
DLS:管理分布式锁信息,包括lock的并发控制;
② CMS分布式集群管理
通过CMS组件完成对集群内的资源进行管理、监控节点装填、状态变化通知、集群选举及故障隔离、故障恢复等,可协调集群内节点完成集群重构操作;
③ 自研SQL引擎
自研SQL引擎支持基础SQL语句和存储过程,支持SQL缓存和多种SQL执行计划优化方式,为高性能提供支持;
④ DBStor和DSS组件实现存算协同
可通过DBStor组件实现与Dorado企业存储之间的高效协同,通过存储的快照、异步复制等特性实现数据备份与恢复;
DSS组件可以实现更多的通用存储的对接;
多读多写实现原理:跨实例页面构造
在集群模式下,每个实例具备独立的undo表空间,其中包括:
- 每个实例具有独立的undo segment管理机制与undo回收机制,彼此互不干扰。
- 每个实例独立分配事务ID,且在实例间不会复用。
跨实例流程:
- 检查页面所有事务,优先还原当前实例上所有未提交事务。针对其他实例未提交事务,将查询信息(如query_scn,即查询使用的SCN等)以及page发送给对应的实例;
- 对应实例后台DCS服务线程收到消息后,根据查询信息以及page进行本地的CR页面构建,还原当前实例上所有未提交事务;
- 进入到提交事务还原阶段时,必须严格按照事务提交的逆序进行,每次只还原一个事务,继续交接给下一个事务所在的实例;
- 直到页面对查询完全可见,将最终结果发送给请求者(R);
核心技术
- SQL能力 :支持存储过程和SQL缓存,内置有基于代价的优化器(CBO)和基于规则的优化器(RBO),同时也提供了多种优化;提示(HINT)功能,确保执行性能最优;
- 高效备份恢复 :基于Dorado主存的快照、异步复制实现的可靠、高效的数据备份恢复策略;
- 缓存融合 :打通节点间内存,构建全局内存池;
- 全局一致 :事务全局一致,无需二阶段协商;
- 存算协同 :专有的访问共享存储接口,极致的最简协议栈;