我的编程空间,编程开发者的网络收藏夹
学习永远不晚

GaussDB架构(中)

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

GaussDB架构(中)

GaussDB架构(中)

在GaussDB架构(上)中我们介绍了GaussDB的发展历史和架构概览,本篇主要介绍GaussDB OLTP数据库架构和GaussDB OLAP数据库架构。

GaussDB OLTP数据库架构。

OLTP是传统的关系数据库的主要应用,包括基本的增加、删除、修改、查询事务处理,例如银行交易。

1. 设计思想与目标客户

OLTP业务场景主要分为两大类:一类是金融银行业务场景,一类是互联网业务场景。但应用OLTP业务要满足5个重要的需求:

  • 故障业务中断时间,RTO(Recovery Time Objective,恢复时间目标,指业务停止服务的最长时间)尽可能短,最好是RTO=0。
  • 任何故障,数据不错、不丢失,RPO(Recovery Point Objective,数据恢复点目标,指业务系统的数据丢失量)=0。
  • 并发和性能满足业务诉求。
  • 易于运维,最好是自动诊断、自动修复。
  • 易于调优,最好是自调优。

GaussDB OLTP数据库基于这5个关键需求设计,分层解耦:

  • 采用并行恢复和存储层异步回放机制优化RTO,目前支持AZ(AvailabilityZone,可用区域)内RTO<10s; AZ故障,RTO<60s。
  • 采用多副本RAFT(一种分布式一致性协议)复制机制保证数据的可靠性,即RPO=0。
  • 支持线程池和采用高精度时钟去中心化,支持高并发和线性扩展性,满足高并发和性能的诉求。
  • 运维能力上基于统计数据分析、推理,实现自运维能力,降低运维门槛。
  • 采用基于AI的自调优参数和ABO(AI Based Optimization,基于人工智能的查询优化)优化器提供自调优能力,降低调优门槛。

2. 分布式强一致的架构

分布式强一致必须有一个全局的时间戳信息,否则很难保证数据的一致性。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 关键数据结构和线程

单节点的事务

单节点事务设计,如下图所示。

在这里插入图片描述

图 单节点事务设计 关键设计如下:

  • GTM 只维护一个CSN++ ,快照(snapshot)只包含CSN。
  • DN(Data Node,数据节点)本地维护事务ID(唯一标识符),维护ID 到CSN的映射(CSN_LOG)。
  • DN本地垃圾回收的过程中回填CSN。
  • 单分片读事务使用本地快照: ① 获取本地最新的CSN 和准备阶段事务号; ② 如果CSN 状态为“提交中”则进行等待; ③ 如果row.CSN< localsnapshot.csn || xid in prepared_xid list可 见,否则不可见。

跨节点事务

跨节点事务设计,如下图所示。

在这里插入图片描述

图 跨节点事务设计

关键设计如下:

  • 第二阶段事务提交改为异步方式,只同步做两阶段提交的准备阶段。
  • DN 上行级别可见性判断: ① DN 处于准备状态的事务依赖对应CN 上的事务是否提交,如果已经提交,且CSN 比snapshot.CSN 小,就可见。 ② 对DN 上处于准备状态(prepared)的事务,CN 上的事务不处于提交状态,则必须判断是否是残留状态,如果是则进行回滚。
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

}

3.可插拔存储引擎架构

面向OLTP不同的时延要求,需要的存储引擎技术是不同的。例如在银行的风控场景里,对时延的要求是非常苛刻,传统的行存储引擎的时延很难满足业务要求。因此GaussDB设计支持了可插拔存储引擎架构,可以同时支持传统行存储引擎和内存引擎。内存引擎采用记录(record)的组织方式,Masstree无锁化索引设计,提高系统并发能力和降低了事务的时延。行存储引擎可以支持不同的MVCC(多版本)实现机制,包括append-only形式的MVCC实现机制和in-place update的MVCC实现机制。整个数据库中存储引擎、SQL引擎都是解耦的,可以快速添加(演进)新的存储引擎和SQL引擎。

GaussDB OLAP数据库架构

OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

1. 设计思想与目标客户

OLAP数据分析场景有5个关键的需求:

  • 数据量大,从几百万亿字节(TB)到千万亿字节(PB)是很正常的,容量可扩展。
  • 复杂查询多,计算复杂度高,必须分布式并行计算。
  • SQL自动优化能力要强,自动调优诉求强烈。
  • 数据入库速度要快,入库几百兆字节、万亿字节的数据很常见。
  • 故障恢复RTO 尽可能短,数据不丢失,即RPO=0。

银行数据仓库、安全行业的同行同住分析、证券行业的数据挖掘分析都对集群的规模和并行计算能力有很高的要求。GaussDB OLAP针对这几个关键需求设计,支持了列存储引擎、自适应压缩,大大降低了存储空间,基于share nothing架构,线性扩展,解决了千万亿字节(PB)级数据存储问题。

通过分布式优化器和分布式执行器,构筑了分布式并行技术能力。数据入库采用并行加载技术,大大提高入库效率。

2. 面向数据分析的高效存储和计算架构

GaussDB OLAP数据库采用列存储引擎提高存储的压缩比和面向列的计算能力,而向量化执行相对于传统的执行模式改变是对于一次一元组的模型修改为一次一批元组,且按照列运算,这种看似简单的修改却带来巨大的性能提升。

  • 一次一元组模型函数调用次数较大,每一条元组都会根据执行树的形态遍历执行树,面对OLAP场景,一次一元组模型巨量的函数调用次数使开销较大,而一次一批元组的执行模式则大大减小遍历执行节点的开销。
  • 一次一批元组的数据运载方式为某些表达式计算的SIMD(Single-Instruction,Multiple-Data stream processing,单指令流多数据流)化提供了机会,SIMD 化能带来性能的提升。
  • 一次一批元组的数据运载方式天然对接列存储,列存储引擎能够很方便地在底层扫描节点装填向量化的列数据。CPU 的指令缓存(cache)和数据缓存的命中率大大提高。

GaussDB OLAP高效存储和计算架构,如下图所示。

在这里插入图片描述

图 GaussDB OLAP高效存储和计算架构

3. 分布式并行计算架构

分布式并行计算架构核心实现如下:

  • 通过分布式优化器,根据代价估算、AI数据分析,产生最优的分布式执行计划。好的执行计划和差的执行计划在运行性能上可能会有很大的差距。优化器生成执行计划的过程如下图所示。 在这里插入图片描述

图 优化器生成执行计划的过程

GaussDB OLAP数据库优化器支持CBO(Cost Based Optimization,基于代价的查询优化)和ABO(基于机器学习的查询优化),根据代价和AI学习,会自动选择SMP(Symmetric Multi-Processing,对称多处理结构)、Join order、group算法、index等,GaussDB OLAP优化器整体架构如下图所示。

在这里插入图片描述

图 GaussDB OLAP优化器架构

  • 通过LLVM(Low Level Virtual Machine,一个编译器框架)编译执行、SIMD单指令多数据执行、算子并行执行和节点并行执行技术,提高复杂查询的性能。

复杂查询性能提升方式如下图所示。

在这里插入图片描述

图 复杂查询性能提升方式

4. 并行数据加载

通过并行重分布(Redistribute Streaming)算子技术,让各个DN 都参与数据导入,充分利用各个设备的计算能力及网络带宽。并行数据加载的关键技术如下:

  • GDS: 数据源服务进程。
  • 重分布: 从GDS读取数据,计算哈希(Hash)重新分发数据。
  • 协调节点: 根据数据源和数据节点个数,产生并行重分布的计划,把数据源和数据节点分配好。

并行数据加载方式,如下图所示。

在这里插入图片描述

图 并行数据加载

Gauss松鼠会是汇集数据库爱好者和关注者的大本营, 大家共同学习、探索、分享数据库前沿知识和技术, 互助解决问题,共建数据库技术交流圈。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

GaussDB架构(中)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

GaussDB架构(中)

在GaussDB架构(上)中我们介绍了GaussDB的发展历史和架构概览,本篇主要介绍GaussDB OLTP数据库架构和GaussDB OLAP数据库架构。 GaussDB OLTP数据库架构。 OLTP是传统的关系数据库的主要应用,包括基本的增加、删除、修
GaussDB架构(中)
2021-11-24

GaussDB架构(下)

GaussDB云数据库架构 云数据库系统的主要目的是提供数据库系统服务的基础设施,以实现对计算机资源的共享。本文所讲述的GaussDB云数据库架构设计的内容,目前处于研发阶段,对应产品尚未向客户发布。 1.设计思想与目标客户 从数据存放的位置来看,云数据库系统
GaussDB架构(下)
2019-01-04

GaussDB架构(上)

GaussDB是华为公司数据库产品品牌名。华为公司从开始自研数据库至今已经有近20年历史,其中经历了早期发展、GaussDB的诞生和发展、数据库产业化三个阶段。本文简明介绍华为公司自研数据库的历程,并给出一些GaussDB的里程碑时间点。GaussDB的发展历
GaussDB架构(上)
2015-01-18

一文读懂GaussDB(for Mongo)的计算存储分离架构

摘要:IDC认为,目前阶段来看,企业亟待解决的是数字化能力提升,包括:与业务的深入结合能力;数据处理和挖掘能力;以及IT技术运营和管理能力。特别是数据处理和挖掘能力,因为数字化转型推进企业从以流程为核心向以数据为核心转型,对海量、异构、多类型的数据处理和挖掘能
一文读懂GaussDB(for Mongo)的计算存储分离架构
2019-10-23

c/s架构和b/s架构

C/S架构和B/S架构是两种常见的网络应用架构。C/S指的是客户端/服务器架构,而B/S指的是浏览器/服务器架构,两者都是为了实现交互式的网络应用程序,但在结构和工作方式上有所不同。C/S架构适用于需要更高性能、更好用户体验和离线工作模式的
2023-07-31

mysql 架构类问题之 MMM 架构

MMM 和 MHA 架构MMM 和 MHA 架构的作用对主从复制集群的 master 进行监控当 master 宕机后把写 VIP 迁移到新 master重新配置集群中其他 slave 对新的 master 同步MMM 架构适用的主从复制架构 主 -- 主
mysql 架构类问题之 MMM 架构
2014-12-31

mysql架构类问题之MHA架构

MHA 架构适用的主从复制架构 主 / | 从1 从2 从3故障转移步骤选举具有最新更新的slave尝试从宕机的master保存二进制日志应用差异的中继日志到其他slave应用从master保存的二进制日志提升选举的slave为新的master配置其他slav
mysql架构类问题之MHA架构
2015-04-12

HDFS架构

HDFS架构(Master-Slave)几个进程的角色nameNode(master):用于保存、管理、持久化文件的元数据(文件名、文件副本数、文件块大小、文件块列表),同时还要接收客户端的文件读写请求。secondaryNameNode:用于实时同步文件元数
HDFS架构
2019-04-12

MySQL 架构

执行流程简介主要分为server层和存储引擎层。server层主要分为:连接器、解析器、优化器、执行器、查询缓存连接器:主要作用就是用户认证、给用户创建连接并使用连接池维护连接。查询缓存:建立连接之后,就可以进行SQL操作了,如果该SQL语句在查询缓存中可以匹
MySQL 架构
2016-06-23
2024-04-02

code 架构

目录 1. code 架构 1.1. 代码质量的评判的维度 1.2. 架构师 1.3. 基础平台篇 1. code 架构 1.1. 代码质量的评判的维度 可阅读性 (方便代码流转) 可
2023-08-30
2023-09-11

Yarn架构

Yarn架构(Master-Slave)进程角色:resourceManager(Master):任务调度和集群资源管理。nodeManager(Slave):单个节点的资源管理。applicationMaster:为任务程序申请资源,任务程序运行状态监控、错
Yarn架构
2016-03-24

HIVE架构

UI:     用于提交查询的客户端,hive自带有CLI(command line),现在推荐使用beelineDRIVER:               1.用于接收客户端提交的SQL,并实现了session控制                2.并提供了
HIVE架构
2016-06-18

Facebook移动架构:Android Flux架构详解

要为Android应用找到一个好的架构不是一件容易的事情。谷歌似乎不太在乎这个事情,因此在设计模式上,除了Activity 生命周期管理之外,再也没有官方的推荐。但是,为你的应用打造一个架构是非常重要的。不管你是否喜欢,任何应用终都会有一个
2022-06-06

阿里P8架构师谈:淘宝技术架构从1.0到4.0的架构变迁!附架构资料

淘宝技术架构变迁自2003年创立以来的,淘宝业务发展非常迅速,几乎是每年以100%的速度在成长。创立之初,为了快速上线,抢占市场,选择了当时流行的LAMP架构,用PHP作为网站开发语言, Linux作为操作系统,Apache作为Web服务器
2023-06-05

编程热搜

目录