软件架构
虚谷数据库以分布式架构为基础,上层全面实现传统关系型数据库所有功能与对象管理,提供完整的事务ACID特性,可支撑在线事务处理能力(On-Line Transaction Processing,OLTP)、联机数据分析处理(On-Line Analytical Processing,OLAP)及OLTP与OLAP混合型业务场景。同时具有事务及数据强一致性,各个角色节点高可用、高性能事务能力、高吞吐能力,高安全、在线动态扩展均衡,高度兼容Oracle、MySQL等SQL用法等特性。
虚谷数据库软件产品的架构图如图1所示。
虚谷数据库是原生的分布式架构数据库,采用ShareNothing(完全无共享)架构进行集群设计,物理资源无共享、数据切片存储,如图2所示。
在整个集群中,虚谷数据库按照功能设计逻辑上可将服务端划分为四类角色:主控管理角色、工作计算角色、存储管理角色、变更收集角色,如图3所示。
一台物理服务器可部署一个或多个数据库角色。
- 主控管理角色:主要用于集群管理、心跳检测、全局锁仲裁(检测死锁并解锁)等,不参与用户请求响应。
- 工作计算角色:用于接收响应用户请求,完成任务的规划、执行、结果返回。
- 存储管理角色:用于存储数据库数据,实现数据的持久化、存储高可用、数据快速定位。
- 变更收集角色:用于收集集群数据变更信息,记载信息粒度达到事务级。
虚谷数据库的存算融合部署技术实现在一台物理服务器上同时部署多个数据库角色,让一个节点的数据库进程执行多个数据库角色能力,保证所有节点都可以提供读写服务。
虚谷数据库采用中心管理-对等处理的架构设计,所有工作节点均可接收用户请求,无需访问特定服务端,用户连接任一工作节点,均可访问其权限内可访问的所有数据。所以,当工作节点负载过高时,可通过增加工作节点分担负载压力,提高并发用户数,如图4所示。
虚谷数据库的数据存储节点不以逻辑表和业务维度进行数据切割,是以切分物理CHUNK的方式进行数据存储,数据通过系统内部算法进行分片处理并存储到各个存储节点。数据存储以8MB进行自动切片,主副版本依据内部存储落盘规则,将所有存储打散均衡分布到每一个存储节点中。当任意存储节点服务停止,会立即通知管理节点。管理节点则选择服务停止节点上存储的主版本数据对应的任一数据副本,将其切换为主版本,然后通知主版本向其余未停止服务的存储节点复制还原丢失的数据版本,提供数据访问服务,避免单点故障导致数据库业务中断,如图5所示。
当集群存储容量或I/O能力不足时,可按需增加存储节点,存储节点增加后集群数据自动进行数据迁移均衡。在扩展集群存储容量的同时,扩展节点作为功能节点也可分担一部分访问压力,为集群提供更高的存取性能。
虚谷数据库中的变更收集节点可按需进行部署,该类角色节点提供集群变更收集功能,提供事务级粒度的变更收集。用户可通过系统内置包解析变更信息,解析后可提供字段数据输出或SQL输出,可用于同构或异构表的数据恢复与同步。
虚谷数据库支持将集群全局的增量数据按事务提交时间进行日志记录,通过此方法,数据库用户可以按时间回溯访问具体的增量日志记录。