在GaussDB架构(上)中我们介绍了GaussDB的发展历史和架构概览,本篇主要介绍GaussDB OLTP数据库架构和GaussDB OLAP数据库架构。
OLTP是传统的关系数据库的主要应用,包括基本的增加、删除、修改、查询事务处理,例如银行交易。
OLTP业务场景主要分为两大类:一类是金融银行业务场景,一类是互联网业务场景。但应用OLTP业务要满足5个重要的需求:
GaussDB OLTP数据库基于这5个关键需求设计,分层解耦:
分布式强一致必须有一个全局的时间戳信息,否则很难保证数据的一致性。GaussDB 实现了基于GTM 的分布式ACID[原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)]设计。
GTM 仅处理全局时间戳请求,CSN(Commit Sequence Number,待提交事务的序列号)是一个64位递增无符号数,它的递增,几乎都是CPU++ 和消息收发操作。
不是每次都写ETCD(Editable Text Configuration Daemon,分布式键值存储系统,用于共享配置、服务注册和查找),而是采用定期持久化到ETCD。每次写ETCD的CSN 要加上一个backup_step(100万),一旦GTM 出现故障,CSN 从ETCD 读取出来的值保证单调递增。当前GTM 只完成CSN++ ,可以支持200MB/s请求。GTM处理获取CSN消息和CSN++的消息,tcp协议栈消耗CPU 会非常严重,采用用户态协议栈提高GTM 单节点的处理能力。GTM 关键数据结构和线程,如下图所示。
图 GTM 关键数据结构和线程
单节点事务设计,如下图所示。
图 单节点事务设计 关键设计如下:
跨节点事务设计,如下图所示。
图 跨节点事务设计
关键设计如下:
TRY_AGAIN
IF row xact_status is prepared
{
notify clean_pending_prepared_xact
IF CN xact_status is committed && CN xact CSN snapshot CSN
return visible
Goto try_again
}
Else
{
if row xact is committed and row CSN snapshot CSN
return visible
Else
return not_visible
}
面向OLTP不同的时延要求,需要的存储引擎技术是不同的。例如在银行的风控场景里,对时延的要求是非常苛刻,传统的行存储引擎的时延很难满足业务要求。因此GaussDB设计支持了可插拔存储引擎架构,可以同时支持传统行存储引擎和内存引擎。内存引擎采用记录(record)的组织方式,Masstree无锁化索引设计,提高系统并发能力和降低了事务的时延。行存储引擎可以支持不同的mvcC(多版本)实现机制,包括append-only形式的MVCC实现机制和in-place update的MVCC实现机制。整个数据库中存储引擎、sql引擎都是解耦的,可以快速添加(演进)新的存储引擎和SQL引擎。
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
OLAP数据分析场景有5个关键的需求:
银行数据仓库、安全行业的同行同住分析、证券行业的数据挖掘分析都对集群的规模和并行计算能力有很高的要求。GaussDB OLAP针对这几个关键需求设计,支持了列存储引擎、自适应压缩,大大降低了存储空间,基于share nothing架构,线性扩展,解决了千万亿字节(PB)级数据存储问题。
通过分布式优化器和分布式执行器,构筑了分布式并行技术能力。数据入库采用并行加载技术,大大提高入库效率。
GaussDB OLAP数据库采用列存储引擎提高存储的压缩比和面向列的计算能力,而向量化执行相对于传统的执行模式改变是对于一次一元组的模型修改为一次一批元组,且按照列运算,这种看似简单的修改却带来巨大的性能提升。
GaussDB OLAP高效存储和计算架构,如下图所示。
图 GaussDB OLAP高效存储和计算架构
分布式并行计算架构核心实现如下:
图 优化器生成执行计划的过程
GaussDB OLAP数据库优化器支持CBO(Cost Based Optimization,基于代价的查询优化)和ABO(基于机器学习的查询优化),根据代价和AI学习,会自动选择SMP(Symmetric Multi-Processing,对称多处理结构)、Join order、group算法、index等,GaussDB OLAP优化器整体架构如下图所示。
图 GaussDB OLAP优化器架构
复杂查询性能提升方式如下图所示。
图 复杂查询性能提升方式
通过并行重分布(Redistribute Streaming)算子技术,让各个DN 都参与数据导入,充分利用各个设备的计算能力及网络带宽。并行数据加载的关键技术如下:
并行数据加载方式,如下图所示。
图 并行数据加载
Gauss松鼠会是汇集数据库爱好者和关注者的大本营, 大家共同学习、探索、分享数据库前沿知识和技术, 互助解决问题,共建数据库技术交流圈。
--结束END--
本文标题: GaussDB架构(中)
本文链接: https://lsjlt.com/news/8307.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0