oGRAC简介
产品概述
oGRAC(openGauss Real Application Cluster)是openGauss的多主数据库架构,它通过将集群中的各数据库实例管理起来并支持全局实时一致的读写操作,提升集群的读写吞吐能力、扩展能力和高可用能力。其核心思想是:数据库提供便于扩展成多主架构的内核,数据库实例间通过共享内存服务实现跨节点的事务、页面缓存一致性,各数据库实例共享一份数据存储,以实现各节点同时读写操作、各节点共享存储。
产品定位
基于创新性数据库内核,提供高并发事务实时处理能力、秒级RTO高可用、大于0.8的性能扩展能力,可用于支撑金融、电信、政府等行业核心系统。
产品特点
多读多写
oGRAC的主要特点是支持多读多写,主要通过如下组件实现高性能的多读多写能力
分布式资源目录(DRC):用于管理分布式元数据信息,包括数据页面和全局锁等资源在集群范围下的所属节点信息、权限、并发控制等。
分布式缓存服务(DCS):用于管理集群范围内数据页面的并发控制,包括页面读写的并发控制、集群内页面读写请求的处理、数据页面的最新版本持有者和只读副本持有者的管理、跨节点缓存的页面传输和CR页面构建等功能、
分布式锁服务(DLS):用于管理集群范围内锁资源的并发控制,包括spinlock、latch和对象等锁资源在节点间的并发处理。
分布式存储服务(DSS):提供底层的存储管理能力,为数据库内核提供统一的访问底层存储的接口,向下管理不同形态的底层存储,包括分布式和集中式。
分布式MVCC:每个事务拥有唯一的全局事务ID,数据修改时直接生成新版本,旧版本和事务信息记录在undo日志中,跨节点查询时,通过CR页面构建可见数据视图。事务提交时通过广播机制实现节点SCN同步,当本地SCN小于其他节点广播的SCN时,自动更新本地SCN,确保事务提交顺序的全局一致性。
故障恢复(Remaster/Recovery):节点故障时处理全局DRC等信息的重分布和重建,同时处理故障节点的REDO/UNDO,重做检查点之后的REDO,回滚未提交的事务,使集群恢复到一致性的状态。
oGRAC集群内的所有节点共享集群控制文件(Ctrl),共享系统表空间,双写区和用户表空间。每个节点有独立的undo、temp表空间和redo。每个节点只能写本节点的undo、redo和temp文件。集群正常运行过程中,某个节点可以读其他节点的undo文件以构造CR页面,但是不能写其他节点的undo文件。集群故障恢复的过程中,执行恢复的节点会读取故障节点的redo。集群正常运行时,每个节点只能写本节点的redo。temp分区也是节点私有的,只能被本节点读取。
高性能SQL引擎
基于规则的逻辑优化和基于代价的CBO优化器。
基于动态规划生成最小物理代价的执行计划。
支持NEST LOOP/HASH/MERGE等多种连接算子。
支持缓存执行计划,动态采样,执行引擎支持并行查询。
集群管理
集群管理服务(CMS),主要负责集群的监控和管理。包括维护集群成员状态信息、监控集群中的所有资源状态是否正常、异常故障处理、集群重分布、仲裁处理。确保集群配置的一致性和服务的连续性。