【Poster】oGRAC —— 属于openGauss的RAC

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主存的快照、异步复制实现的可靠、高效的数据备份恢复策略;
  • 缓存融合 :打通节点间内存,构建全局内存池;
  • 全局一致 :事务全局一致,无需二阶段协商;
  • 存算协同 :专有的访问共享存储接口,极致的最简协议栈;

请问oGRAC和openGauss DataPod资源池化有什么关系?两者对比各有什么优点和缺点?池化中也有DMS和DSS组件,和oGRAC中的能力一样吗?oGRAC多写集群能完全兼容当前的openGauss SQL语法生态吗?

你好,感谢对openGauss的关注。首先oGRAC是openGauss DataPod资源池能力的延伸,DataPod原先仅支持主备实时一致的一写多读能力,现在为构建去O能力、支撑后续架构演进,支持多写多读。在oGRAC中,DMS、DSS组件和一写多读架构上的维持一样。

现在有版本可以测试oGRAC吗?