返回顶部
首页 > 资讯 > 数据库 >GaussDB架构(中)
  • 321
分享到

GaussDB架构(中)

GaussDB架构(中) 2021-11-24 14:11:13 321人浏览 猪猪侠
摘要

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

您可能感兴趣的文档:

--结束END--

本文标题: GaussDB架构(中)

本文链接: https://lsjlt.com/news/8307.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • GaussDB架构(中)
    ...
    99+
    2021-11-24
    GaussDB架构(中)
  • GaussDB架构(上)
    ...
    99+
    2015-01-18
    GaussDB架构(上)
  • GaussDB架构(下)
    ...
    99+
    2019-01-04
    GaussDB架构(下)
  • 一文读懂GaussDB(for Mongo)的计算存储分离架构
    摘要:IDC认为,目前阶段来看,企业亟待解决的是数字化能力提升,包括:与业务的深入结合能力;数据处理和挖掘能力;以及IT技术运营和管理能力。特别是数据处理和挖掘能力,因为数字化转型推进企业从以流程为核心向以数据为核心转型,对海量、异构、多类...
    99+
    2019-10-23
    一文读懂GaussDB(for Mongo)的计算存储分离架构
  • WPF框架Prism中使用MVVM架构
    常见的MVVM框架 众所周知, 如果你了解WPF当中的ICommand, INotifyPropertyChanged的作用, 就会发现众多框架都是基于这些进行扩展, 实现其通知、绑...
    99+
    2024-04-02
  • 软件架构中的单体架构有哪些特点?
    易于开发,易于测试,整体应用也易于部署。但成功的应用都会随着时间增大,最终变得巨大而复杂。巨大的、复杂的单体应用程序,其持续部署变得困难。SaaS应用通常在一天之内会多次将改动推到生产环境,必须重新部署整个...
    99+
    2024-04-02
  • c/s架构和b/s架构
    C/S架构和B/S架构是两种常见的网络应用架构。C/S指的是客户端/服务器架构,而B/S指的是浏览器/服务器架构,两者都是为了实现交互式的网络应用程序,但在结构和工作方式上有所不同。C/S架构适用于需要更高性能、更好用户体验和离线工作模式的...
    99+
    2023-07-31
  • 转自数据云-----架构师眼中的高并发架构
    业务从发展的初期到逐渐成熟,服务器架构也是从相对单一到集群,再到分布式服务。  一个可以支持高并发的服务少不了好的服务器架构,需要有均衡负载,数据库需要主从集群,NoSQL缓存...
    99+
    2024-04-02
  • mysql 架构类问题之 MMM 架构
    MMM 和 MHA 架构 MMM 和 MHA 架构的作用 对主从复制集群的 master 进行监控 当 master 宕机后把写 VIP 迁移到新 master 重新配置集群中其他 slave 对新的 master 同步 MMM 架构 ...
    99+
    2014-12-31
    mysql 架构类问题之 MMM 架构
  • mysql架构类问题之MHA架构
    MHA 架构 适用的主从复制架构 主 / | 从1 从2 从3 故障转移步骤 选举具有最新更新的slave 尝试从宕机的master保存二进制日志 应用差异的中继日志到其他slave 应用从master保存的二进制日志 提升选举的...
    99+
    2015-04-12
    mysql架构类问题之MHA架构
  • Yarn架构
    Yarn架构(Master-Slave) 进程角色: resourceManager(Master):任务调度和集群资源管理。 nodeManager(Slave):单个节点的资源管理。 applicationMaster:为任...
    99+
    2016-03-24
    Yarn架构
  • HDFS架构
    HDFS架构(Master-Slave) 几个进程的角色 nameNode(master):用于保存、管理、持久化文件的元数据(文件名、文件副本数、文件块大小、文件块列表),同时还要接收客户端的文件读写请求。 secondar...
    99+
    2019-04-12
    HDFS架构
  • MySQL 架构
    执行流程简介 主要分为server层和存储引擎层。 server层主要分为:连接器、解析器、优化器、执行器、查询缓存 连接器:主要作用就是用户认证、给用户创建连接并使用连接池维护连接。 查询缓存:建立连接之后,就可以进行SQL操作了,...
    99+
    2016-06-23
    MySQL 架构
  • HIVE架构
    UI:      用于提交查询的客户端,hive自带有CLI(command line),现在推荐使用beeline DRIVER:                1.用于接收客户端提交的SQL,并实现了session控制   ...
    99+
    2016-06-18
    HIVE架构
  • mysql架构
    mysql架构连接处理,授权认证,安全第二层,大多数MySQL的核心服务功能都在这一层,查询解析,分析,优化,缓存以及所有内置函数包括加密函数,所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。...
    99+
    2024-04-02
  • code 架构
    目录 1. code 架构 1.1. 代码质量的评判的维度 1.2. 架构师 1.3. 基础平台篇 1. code 架构 1.1. 代码质量的评判的维度 可阅读性 (方便代码流转) 可...
    99+
    2023-08-30
    架构
  • LNMP架构
    目录 一、LNMP架构介绍 二、准备工作 1、将安装包传到/opt/目录下 2、搭建本地yum仓库 三、编译安装nginx服务 四、编译安装mysql服务 五、编译安装 PHP 解析环境 六、 部署Discuz社区论坛 七、装完后使用浏览...
    99+
    2023-09-11
    架构 php 服务器 linux 运维
  • Facebook移动架构:Android Flux架构详解
      要为Android应用找到一个好的架构不是一件容易的事情。谷歌似乎不太在乎这个事情,因此在设计模式上,除了Activity 生命周期管理之外,再也没有官方的推荐。  ...
    99+
    2022-06-06
    flux Android 架构
  • 阿里P8架构师谈:淘宝技术架构从1.0到4.0的架构变迁!附架构资料
    淘宝技术架构变迁自2003年创立以来的,淘宝业务发展非常迅速,几乎是每年以100%的速度在成长。创立之初,为了快速上线,抢占市场,选择了当时流行的LAMP架构,用PHP作为网站开发语言, Linux作为操作系统,Apache作为Web服务器...
    99+
    2023-06-05
  • 浅谈架构模式变迁之从分层架构到微服务架构
    目录前言单体架构分布式架构软件设计中的谬误谬误1:网络是可靠的谬误2:时延是0谬误3:带宽是无限的谬误4:网络是安全的谬误5:网络拓扑一成不变谬误6:只有一个网络管理员谬误7:通信成...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作