软件架构
软件架构:分为存算分离型和存算一体型,二者的区别在于DN和存储(Local-Disk)是否绑定在一起,绑定在一起为存算一体,否则为存算分离。
数据组件(7种类型)
- OM(运维管理模块、主备):提供日常运维和配置管理功能,每个节点都部署
- CM(集群管理模块、主备):自动化集群管理和监控各单元的物理资源使用情况,每个节点都部署。
- GTM(全局事务控制器,主备):主要负责生成并维护全局事务ID、事务快照、时间戳等需要全局唯一的信息。DWS集群部署2个,一主一备,分布在不同节点上。
- WLM(工作负载管理):控制资源分配,防止过载对系统冲击导致的业务拥塞和系统崩溃。内置在CN和DN实例中。
- CN(Coordinator Node,协调节点,多主):主要处理请求分解、调度、结果返回。负责SQL解析和优化。决定对外业务访问能力,默认部署2个,最大支持5个。
- DN(Data Node,数据节点,主备从):负责存储业务数据(支持行存、列存、混合存储)、执行数据查询任务以及向CN返回执行结果。决定对外业务处理能力。根据节点规格,每个节点部署2-4个,最大支持1024个。
- GDS Loader(多实例):负责批量数据加载和并行加速。
物理集群由3到多个节点组成,最大支持1024个,节点为ECS/BMS.
数据组件分布:以最简的ECS+EVS结构为例。ECS负责计算资源(CPU+内存+DWS实例(CN+DN等))。EVS负责存储资源,每个DN挂载EVS盘。
DWS资源分配
- CPU资源:20%+60%+20%:20%CPU资源用于系统运维,20%CPU资源用于数据接入入库业务,60%CPU资源用于数据分析业务,入库业务和分析业务资源隔离,互不影响。
- 内存资源:默认GaussDB(DWS)使用内存占主机Linux系统可用内存的80%。GaussDB 200 默认关闭操作系统的虚拟内存。
- 内存参数:
- max_process_memory :一个数据库节点(DN/CN)可用的最大物理内存
- 视图pv_total_memory_detail:查看一个数据库节点总的内存分配情况。
业务架构
业务下发的SQL信息是如何在GaussDB(DWS)中的各个组件运行的。CN->DN->CN
- 业务的查询信息先下发SQL到CN节点,其中的SQL信息可以是对数据的增删改查。
- CN通过优化器生成执行计划,DN按照执行计划处理数据
- 在分布式存储中,数据处理的DN和数据存储DN不同,数据处理过程中需要从其他DN获取数据,通过stream流(广播流、聚合流和重分布流)降低数据在DN节点间的流动。
- DN返回数据处理结果给CN,CN汇总结果。
- CN将汇总结果返回给业务。
分布式架构优点
- 支持按需扩展,支持2048节点的超大规模,100PB级的数据容量.
- 通过多层级的并行计算引擎,基于鲲鹏CPU的优化,软硬协同,性能相比于X86提升30%。
- 通过支持事务ACID,实现全场景数据的一致性数据保障,支持双集群容灾,全组件HA设计,来实现高可用。
- 兼容标准SQL 2003、JDBC和ODBC接口,全图形化的运维管理和开发工具,来实现高兼容性。
高性能
高斯数据库实现高性能的技术:全并行架构+分布式优化+行列混合引擎
- 全并行架构:目的是解决如何利用x86的多核计算资源,如何解决鲲鹏众核的资源利用问题。解决方法:从大到小
- MPP(节点并行):在集群内并行,通过使用分布式执行框架,支持1000以上的服务器,万级CPU的并行计算
- SMP(算子并行):在查询内并行,通过多线程并行算法,从而实现在核心算子内的并行执行。众核支持,和NUMA架构优化。
- SIMD(指令级并行):操作数归并,通过SIMD和向量化引擎 ,实现一个指令执行一批数据的操作,指令可以是x86或者鲲鹏指令.
- LLVM(动态编译):指令数减少,通过将热点函数预编译成机器码,实现减少SQL执行指令数,从而提升性能。
- 分布式优化:用于分布式架构下最优执行计划的生成。
- 分布式查询重写:
- 解决问题:单机SQL逻辑无法实现分布式执行的问题
- 解决方法:利用分布式查询重写技术,在分布式下消除NestLoop和子查询等查询瓶颈。
- 分布式计划生成:
- 解决问题:单机统计信息不能全面反应分布式数据特征
- 解决方案:基于Poisson估算模型,单点和全局cost估算模型,local和Global结合数据处理估算模型,实现单机+全局的自动统计信息收集。
- 分布式倾斜处理:
- 解决问题:数据倾斜导致的分布式执行出现木桶效应.
- 解决方案:针对静态模型,使用分布式倾斜估算模型;针对动态模型,使用动态倾斜处理方案RLBT(Runtime Load Balance Technology)
- 分布式查询重写:
- 行列混合引擎:分为查询引擎和存储引擎。查询引擎分为行存+列存
- 行存:适合高并发+短事务场景,例如点查询、数据更新、实时数据接入、并发增删改。
- 列存:适合分析AP场景,例如分析统计分组聚合、统计分析、批量加载、访问大量行少数列。
- Delta列存:适合实时分析场景,例如实时分析同时进行实时插入和更新、实时插入更新进入行存Delta、实时分析基于列存+行存Delta
注意:Delta表是列存表附带的行存表,若创建列存表同时开启Delta表,插入列存表的数据也会以行存的形式保存。
高扩展
逻辑集群+异构扩展
- 逻辑集群实现如下功能:通过使用CN+DN
- 逻辑统一+业务隔离:用逻辑集群实现DN层的计算存储资源隔离,从而实现业务隔离。
- 数据共享:将不同逻辑集群的公共数据放到同一个逻辑集群中
- 计算弹性:可以利用空闲集群的计算资源用于其他业务的作业。
- 异构扩展:用于冷数据的低成本管理
- 功能:用本地盘做性能加速,用OBS做冷数据区,实现数据存储异构,自动冷热数据迁移(2年以上冷数据)。
结果:分层存储+成本最优:按需选择存储和计算引擎,实现冷热数据的动态切换。
- 功能:用本地盘做性能加速,用OBS做冷数据区,实现数据存储异构,自动冷热数据迁移(2年以上冷数据)。
高可用
主备从HA技术+多租户资源管理+可信安全+多层次多类型备份
主备从HA技术
功能:数据三重保护(主+备+从备)+容忍单副本故障+两副本提供HA保障。
主备流程:
正常情况:主机和备机通过日志+数据页流复制实现强同步,主机和从备仅保持连接,从备不占用额外存储资源
主机故障:集群管理器感知并仲裁备机升为主机,升级后的备机和从备进行主从强同步。
备机故障:主机自动感知,主机的未同步日志和数据发送给从备,实现主从强同步,主备同步利用内核底层实现主从同步切换,事务层不感知
多租户资源管理
和企业组织结构匹配+管理租户资源(计算+存储)+租户资源隔离(容器技术)+租户资源监控
多层级多类型备份
多种介质:云备份推荐使用OBS备份,支持OBS/NBU/华为数据一体机
全量+增量备份:全量物理备份、差异增量、累积增量等类型备份
完全在线:备份期间不加锁,业务SQL无影响
全局一致性:备份全局一致性快照
细颗粒备份恢复:支持集群+schema级+表级备份恢复,支持就地集群恢复。
安全:加密传输。
融合分析
支持直接读写HDFS/OBS/PostGIS数据:
数据源互通:可以读取Oracle/Spark/Hive数据库
外表机制:支持HDFS/OBS/MPP外表,读取HDFS/OBS数据。
兼容性:兼容SQL2003、JDBC/ODBC、SQL2003访问HDFS和OBS
智能运维
适应场景:支持扩容加节点+扩容重分布+空间回收Vacuum full
快照策略:手动快照+自动快照
存储介质选择:OBS + NBU
学习资源来自华为云GaussDB(DWS)数据库官网