当前位置: 首页 >> 技术文章 >> 关于GaussDB 200内容详解
关于GaussDB 200内容详解
发布时间:2019-10-14 发布人:曾令军学习笔记 227


导读:本文是对GaussDB 200产品的整体描述,包含产品架构、数据流程、组网方案、服务部署原则、企业级增强特性等。


产品描述



GaussDB 200是企业级的大规模并行处理关系型数据库。GaussDB 200采用MPP(Massively Parallel Processing)架构,支持行存储与列存储,提供PB级别数据量的处理能力。


GaussDB 200在核心技术上跟传统数据库相比有巨大优势,可以解决很多行业用户的数据处理性能问题,可以为超大规模数据管理提供高性价比的通用计算平台,并可用于支撑各类数据仓库系统、BI(Business Intelligence)系统和决策支持系统,统一为上层应用的决策分析等提供服务。



产品架构



GaussDB 200采用Share-nothing架构,由多个拥有独立且互不共享CPU、内存、存储等系统资源的节点组成。在这样的系统架构中,业务数据被分散存储在多个物理节点上,数据分析任务被推送到数据所在位置就近执行,通过控制模块的协调,并行地完成大规模的数据处理工作,实现对数据处理的快速响应。


架构对比


GaussDB 200由多个MPPDBServer组成:


微信图片_20191014094638.png


MPPDBServer(CM):GaussDB 200集群管理模块CM(Cluster Manager)。负责管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。CM通过CM服务完成对各个MPPDBServer管理。CM服务由CMServer、CMAgent、Monitor组成。


· CMServer是整个GaussDB 200集群的大脑,它会根据CMAgent上报上来的各MPPDBServer状态信息来决定是否需要状态变更。CMServer只部署在主备CM上。


· CMAgent是MPPDBServer上面部署的实例代理线程,负责接收CMServer下发的命令和上报MPPDBServer的Coordinator、Datanode、GTM的状态给CMServer。每个MPPDBServer均会部署一个CMAgent,也包括主备CM和主备GTM。


· Monitor是watchdog定时任务,其唯一的任务是在CMAgent停止的情况下将CMAgent重启。每个MPPDBServer均会部署一个Monitor,也包括主备CM和主备GTM。

 

MPPDBServer(GTM): 全局事务管理模块GTM(Global Transaction Manager),即含GTM进程的特殊MPPDBServe,负责生成和维护全局事务ID、事务快照、时间戳等需要全局唯一的信息。

 

MPPDBServer:业务模块r由Coordinator及多个Datanode组成,负责执行CM、GTM下发的任务。

Coordinator(CN):负责提供外部应用接口、优化全局执行计划、向Datanode分发执行计划,以及汇总、处理执行结果。

Datanode(DN):每个DN存储了一部分数据。如果DN无高可用方案,则故障时会导致该实例上的数据无法访问。因此GaussDB 200对DN提供了高可用方案:主、备、从备。


DN主、备、从备间的工作原理如下:

  --主、备DN同步数据期间,如果主DN突然故障不可用,备DN会升为主DN。

--在原主DN恢复前,新升为主的DN会将数据日志同步到从备DN。

--原主DN恢复后将成为备DN,并且会使用“从备DN”上的数据日志恢复异常期间的数据。

从备DN永远只作为从备使用,不会因为主DN或备DN故障而升级为主DN或备DN,从备只存放备DN故障时同步到从备的Xlog数据和数据通道复制产生的数据。

 

Storage:服务器的本地存储资源,持久化存储数据(支持行存、列存、混合存储)。

             

数据流程

作为关系型数据库系统,GaussDB 200主要业务为数据的查询与存储。GaussDB 200进行数据查询的流程如图所示。


数据查询流程


具体查询流程如下:

  1. 用户通过应用程序发出查询本地数据的SQL请求到Coordinator。

  2. Coordinator接收用户的SQL请求,分配服务进程,向GTM请求分配全局事务信息。

  3. GTM接收到Coordinator的请求,返回全局事务信息给Coordinator。

  4. Coordinator根据数据分布信息以及系统元信息,解析SQL为查询计划树,从查询计划树中提取可以发送到Datanode的执行步骤,封装成SQL语句或者子执行计划树,发送到Datanode执行。

  5. Datanode接收到读取任务后,查询具体Storage上的本地数据块。

  6. Datanode任务执行后,将执行结果返回给Coordinator。

  7. Coordinator将查询结果通过应用程序返回给用户。


组网方案

GaussDB 200集群的组网方案中包含如下节点:管理节点(MN)、控制节点(CN)、数据节点(DN)。

1) 对于每组实例,其主、备部署在不同的节点上

2) 建议节点内存大于等于512G,每个节点部署4个DN

3) 低并发场景下,整个集群部署2~4个CN即可以满足使用要求

4) 建议GTM、CM部署在没有CN的节点上

5) 安全环是集群组网的基本单元,普通安全环内含至少3个服务器,各服务器的DN形成完备的主备关系


微信图片_20191014094646.png

 

服务部署原则



GaussDB 200集群由多种服务按照一定的逻辑架构组合而成,每个服务包含一个或多个角色,每个角色可以部署一个或多个实例。


服务:服务对外表现为集群提供的组件业务能力,集群中的每个组件对应一个服务名,提供一种服务。

角色:角色是服务的组成要素,每个服务由一个或多个角色组成,服务通过角色安装到节点(即服务器)上,保证服务正常运行。

实例:当一个服务的角色安装到节点上,即形成一个实例。每个服务有各自对应的角色实例。


微信图片_20191014094648.png

 

企业级增强特性



多集群统一管理

FusionInsight Manager 6.5.1支持多集群统一管理,使用一套FusionInsight Manager可创建、管理多个集群,减少运维人员管理多个集群需要操作多套界面的繁琐。FusionInsight Manager支持同时管理多个相同产品类型的集群,也支持不同产品类型的集群。


数据分布式存储

GaussDB 200采用水平分表的方式,将业务数据表的元组打散存储到各个节点内。查询中通过查询条件过滤不必要的数据,快速定位到数据存储位置,可极大提升数据库性能。支持以下数据分布策略:


水平分表策略


数据分区

在GaussDB 200分布式系统中,数据分区是在一个节点内部对数据按照用户指定的策略对数据做进一步的水平分表,将表按照指定范围划分为多个数据互不重叠的部分(Partition)。数据分区的好处:

1) 改善可管理性。有了分区,维护操作可以专门针对表的特定部分执行。

2) 提升删除操作的性能:删除数据时可以删除整个分区,与分别删除每行相比,这种操作非常高效和快速。

3) 改善查询性能:分区剪枝、智能化分区联接(智能化分区联接将一个大型联接分为多个较小的联接,这些较小的联接包含与联接的表“相同”的数据集)


数据并行导入

GaussDB 200的数据并行导入实现了对指定格式(支持CSV/TEXT格式)的外部数据高速、并行入库。

并行导入过程中:

CN只负责任务的规划及下发,把数据导入的工作交给了DN,释放了CN的资源,使其有能力处理外部请求各个DN都参与数据导入的工作,充分利用各个设备的计算能力及网络带宽,提高数据导入的整体性能。

 

微信图片_20191014094653.jpg

 

全并行的数据查询处理

全并行的分布式查询处理是GaussDB 200中最核心的技术,它可以最大限度的降低查询时节点之间的数据流动,以提升查询效率。GaussDB 200为达成高性能数据分析目标,实现了一套高性能的分布式执行引擎,执行引擎以SQL引擎生成的执行计划为输入,将元组按执行计划的要求进行加工并将结果返回给客户端。


一个涉及多个执行算子的复杂查询的大概执行过程如下:

1. CN接收到查询任务(通常是SQL语句描述)后,对SQL语句进行语法解析并分解出基础的查询和数据处理执行算子,比如DataScan、Sort、Aggregation以及Join。

2. 随后CN会生成最优的基础任务执行序列,并将这些基础任务部署到各个节点上去执行。

3. 各个DN完成数据处理后,会将结果汇总到CN上并输出到客户端。


分布式查询示意图


向量化执行和行列混合引擎

向量化执行相对于传统的执行模式改变是对于一次一元组的模型修改为一次一批元组,配合列存特性,可以带来巨大的性能提升。


GaussDB 200支持行存储和列存储两种存储模型,用户可以根据应用场景,建表的时候选择行存储还是列存储表。行列混合存储引擎可以同时为用户提供更优的数据压缩比(列存)、更好的索引性能(列存)、更好的点更新和点查询(行存)性能。不过当前列存储方式在使用上还存在一些约束:

· DDL仅支持CREATE/DROP/TRUNCATE TABLE的功能。

      兼容分区的DDL管理功能(如:ADD/DROP/MERGE PARTITION,EXCHANGE功能)。

      支持CREATE TABLE LIKE语法。

  支持ALTER TABLE的部分语法。

      其他功能都不支持。

· DML支持UPDATE/COPY/BULKLOAD/DELETE。

· 不支持触发器,不支持主外键。

· 支持Psort index、B-tree index和GIN index

 

工作负载管理

负载均衡:GaussDB 200集群提供了开源软件LVS+KeepAlived的负载均衡方案。

资源调度管理:GaussDB 200内嵌资源调度管理技术,实现了基于策略和SLA(服务承诺等级)的任务调度机制。可通过创建控制组、资源池、租户调度和管理系统资源

 

高可靠事务处理

GaussDB 200提供集群事务管理功能负责保证集群所有节点间事务的ACID特性,保证故障可恢复,以及恢复后满足数据的ACID要求,并负责节点的并发控制。


事务管理:

· 支持事务块,用户可以通过start transaction命令显式启动一个事务块。

· 支持单语句事务,用户不显式启动事务,则单条语句就是一个事务。

· 分布式事务管理。支持全局事务信息管理,包括gxid、snapshot、timestamp的管理,分布式事务状态管理,gxid溢出的处理。

· 分布式事务支持ACID特性。

· 支持分布式死锁预防,保证在出现死锁时自动解锁或者预防死锁。


多种部署形态

GaussDB 200目前支持标准化集群部署形态和单机部署形态。

· 标准化集群部署形态:需要至少三台满足部署GaussDB 200的软硬件要求的服务器。GaussDB 200各个组件均衡打散部署在每个服务器上。适用于大数据量场景下的分析业务,具有高性能,高可靠性,可扩展的特点。

· 机部署形态:仅需一台满足部署GaussDB 200的软硬件要求的服务器。GaussDB 200各个组件全部部署在单个服务器上(单机部署形态下不包含备机)。适用于轻量化、中小数据量场景下的分析业务,具有轻量化、低成本、快速部署的特点。由于单机部署不包含备机,因此可靠性由服务器硬件的可靠性和备份恢复策略来保证。


在线扩容

GaussD200分布式数据库集群提供scale-out线性扩展能力,满足客户业务增长和利旧的诉求(将闲置的机器加入系统)。


GaussDB 200采用Node Group技术,支持多表并行扩容,扩容速度高达400G/小时/新增节点。


扩容示意图

SQL on Anywhere

GaussDB 200 支持SQL on Anywhere,基于GaussDB 200可以操作Hadoop、Oracle、Spark和other GaussDB 200,构筑起统一的大数据计算平台。

1)  GaussDB 200支持直接读取存储在Hadoop HDFS文件系统上的结构化数据,对外提供标准SQL语言查询接口,能够让用户只通过使用简单的SQL语言就能完成Hadoop原生数据的复杂分析查询工作。

2)  GaussDB 200支持通过Extension Connector统一访问其它大数据组件——将SQL发给其它大数据组件并接收执行结果,实现跨集群访问数据。目前Extension Connector为用户提供了三种功能:SQL on Oracle、SQL on Spark和SQL on other GaussDB,分别用于连接Oracle数据库、Spark集群和其他GaussDB集群。


计算资源弹性扩容

Node Group在GaussDB 200集群里指DN的集合,是集群中的子集群,从性质上可以分为存储子集群Storage Node Group和计算子集群Computing Node Group,存储节点组用来承载本地表的数据存储,而计算节点组用来承载查询的聚集、关联计算。


计算资源弹性伸缩从MPPDB架构的执行层面提供了一种“运行时变更计算资源的能力”,从根本上解决了MPPDB中计算和存储耦合的局限性,能够将查询的执行运行到指定的Node Group,从而达到计算能力随业务需要动态伸缩。计算资源弹性伸缩主要能够为用户解决计算资源隔离、计算资源弹性两个方面的能力。


三方工具兼容

与业界主流数据库工具的对接:


SQL自诊断

自动诊断SQL性能问题,为用户提供性能优化参考。


基于逻辑集群的资源和数据隔离

逻辑集群是通过Node Group技术来实现资源和数据的隔离。逻辑集群可以把物理集群的所有物理节点划分成多个逻辑集群,每个物理节点只能属于一个逻辑集群,用户数据表只能分布在一个逻辑集群范围内。这样不同逻辑集群的用户数据是隔离的,逻辑集群所属节点的资源主要提供给逻辑集群内数据表的操作,同时供其他逻辑集群的作业交互查询使用。企业将不同的业务部署在不同的逻辑集群上,既可以实现业务统一管理,也能保证业务之间数据隔离和资源隔离。


图像特征检索

海量图像检索的基本功能是通过图像特征比对,找出具有相同或相似特征的图片,可在多种业务场景中应用。以人像搜索为例的场景有:人脸打卡、轨迹搜索、安全布控、同行分析等。可以概括为以下几个基本搜索能力:

1. 联合查询:结合时间、空间等信息进行查询。如:同行分析

2. 简单KNN查询:仅在基础数据集中搜索最接近的特征数据。如:安全布控

3. 在查询的基础上按照图像的特定属性对搜索结果排序。如:轨迹搜索。

                   

GaussDB 200提供图像特征检索加速能力平台,集成短特征搜索的能力。可以将业务系统已经提取的图像特征,进行再编码分析,加快检索效率,实现海量数据下的秒级搜索。


使用者需要将使用的第三方图像特征提取算法根据GaussDB 200平台的接口要求,进行适当改造后,上传给GaussDB 200平台,从而GaussDB 200可根据提供的算法为使用者提供合适的图像检索能力。


海量图形检索实现原理