一文带你了解GaussDB(DWS) 【这次高斯不是数学家】

举报
y-wolfandy 发表于 2022/06/08 21:52:50 2022/06/08
【摘要】 数据仓库服务GaussDB(DWS) 是一种基于华为云基础架构和平台的在线数据处理数据库,提供即开即用、可扩展且完全托管的分析型数据库服务。GaussDB(DWS)是基于华为融合数据仓库GaussDB产品的云原生服务 ,兼容标准ANSI SQL 99和SQL 2003,同时兼容PostgreSQL/Oracle数据库生态,为各行业PB级海量大数据分析提供有竞争力的解决方案。

1、概述


数据仓库服务GaussDB(DWS) 是一种基于华为云基础架构和平台的在线数据处理数据库,提供即开即用、可扩展且完全托管的分析型数据库服务。GaussDB(DWS)是基于华为融合数据仓库GaussDB产品的云原生服务 ,兼容标准ANSI SQL 99SQL 2003,同时兼容PostgreSQL/Oracle数据库生态,为各行业PB级海量大数据分析提供有竞争力的解决方案。


2、产品架构


GaussDB(DWS) 基于Shared-nothing分布式架构,具备MPP (Massively Parallel Processing)大规模并行处理引擎,由众多拥有独立且互不共享的CPU、内存、存储等系统资源的逻辑节点组成。在这样的系统架构中,业务数据被分散存储在多个节点上,数据分析任务被推送到数据所在位置就近执行,并行地完成大规模的数据处理工作,实现对数据处理的快速响应。

  • 应用层

数据加载工具、ETLExtract-Transform-Load)工具、以及商业智能BI工具、数据挖掘和分析工具,均可以通过标准接口与GaussDB(DWS) 集成。GaussDB(DWS)兼容PostgreSQL生态,且SQL语法进行了兼容MySQLOracleTeradata的处理。应用只需做少量改动即可向GaussDB(DWS)平滑迁移。

  • 接口

支持应用程序通过标准JDBC 4.0ODBC 3.5连接GaussDB(DWS)

  • GaussDB(DWS)MPP大规模并行处理集群)

一个GaussDB(DWS) 集群由多个在相同子网中的相同规格的节点组成,共同提供服务。集群的每个DN负责存储数据,其存储介质是磁盘。协调节点(Coordinator)负责接收来自应用的访问请求,并向客户端返回执行结果,此外,协调节点还负责分解任务,并调度任务分片在各DN上并行执行。

  • 自动数据备份

支持将集群快照自动备份到EB级对象存储服务OBSObject Storage Service)中,方便利用业务空闲期对集群做周期备份以保证集群异常后的数据恢复。

快照是GaussDB(DWS) 集群在某一时间点的完整备份,记录了这一时刻指定集群的所有配置数据和业务数据。

  • 工具链

提供了数据并行加载工具GDSGeneral Data Service)、SQL语法迁移工具DSCDatabase Schema Convertor)、SQL开发工具Data Studio,并支持通过控制台对集群进行运维监控。

3、核心技术


3.1、Share-nothing架构

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

Share-nothing又称为无共享架构,和其他架构的对比如下图。

Share-nothing架构具备如下优点:

  • 最易于扩展的架构。
    • BI和数据分析的高并发、大数据量计算提供按需扩展的能力。
    • 自动化的并行处理机制。
  • 内部处理自动化并行,无需人工分区或优化。
    • 数据加载和访问方式与一般数据库相同。
    • 数据分布在所有的并行节点上。
    • 每个节点只处理其中一部分数据。
  • 最优化的I/O处理。
    • 所有的节点同时进行并行处理。
    • 节点之间完全无共享,无I/O冲突。
  • 增加节点实现线性扩展:增加节点可线性增加存储、查询和加载性能。

3.2、全并行的数据查询处理

3.2.1、功能描述

全并行的分布式查询处理是GaussDB(DWS)中最核心的技术,它可以最大限度的降低查询时节点之间的数据流动,以提升查询效率。

GaussDB(DWS)为达成高性能数据分析目标,实现了一套高性能的分布式执行引擎,执行引擎以SQL引擎生成的执行计划为输入,将元组按执行计划的要求进行加工并将结果返回给客户端。

3.2.2、技术原理

展示了GaussDB(DWS)的全并行分布式查询技术。

分布式查询示意图

  • 运行在CN上的分布式执行引擎实现了分布式执行调度的功能。
  • 节点内引入新的执行算子来支撑数据在计算节点之间的流动,这些新的执行算子称其为数据流操作符,根据数据流的输入、输出关系,可以细分为聚合流(Gather)、广播流(Broadcast)和重分布流(Redistribution)。聚合流将数据从多个查询片段聚合到一个。广播流将数据从一个查询片段的数据向多个传输。重分布流则将多个查询片段的数据,按照一定规则重组后向多个传输。
  • 跨计算节点的数据传输依赖于查询分析阶段根据数据分布以及代价模型构建的数据流动拓扑结构,并根据此结构来建立节点之间的网络连接,驱动数据流动于此拓扑结构之上。

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

3.3.1、技术背景

在大宽表,数据量比较大、查询经常关注某些列的场景中,行存储引擎查询性能比较差。例如气象局的场景,单表有200~800个列,查询经常访问10个列,在类似这样的场景下,向量化执行技术和列存储引擎可以极大的提升性能和减少存储空间。

3.3.2、向量化执行

标准的迭代器模型如所示。控制流向下(下图实线)、数据流向上(下图虚线)、上层驱动下层(上层节点调用下层节点要数据)、一次一元组(下层节点每次只返回一条元组给上层节点)。

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

向量化执行引擎

3.3.3、行列混合存储引擎

GaussDB(DWS)支持行存储和列存储两种存储模型,用户可以根据应用场景,建表的时候选择行存储还是列存储表。

一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不很多的情况下,适合列存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。

所示,行列混合存储引擎可以同时为用户提供更优的数据压缩比(列存)、更好的索引性能(列存)、更好的点更新和点查询(行存)性能。

行列混存引擎

列存模式下支持数据压缩,对于非活跃的早期数据可以通过压缩来减少空间占用,降低采购和运维成本。

GaussDB(DWS)列存储压缩支持Delta Value EncodingDictionaryRLE LZ4ZLIB等压缩算法,且能够根据数据特征自适应的选择压缩算法,平均压缩比7:1。压缩数据可直接访问,对业务透明,极大缩短历史数据访问的准备时间。

当前列存储引擎有以下约束:

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

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

支持CREATE TABLE LIKE语法。

支持ALTER TABLE的部分语法。

其他功能都不支持。

  • DML支持UPDATE/COPY/BULKLOAD/DELETE
  • 不支持触发器,不支持主外键。
  • 支持Psort indexB-tree indexGIN index,具体约束参见《华为云Stack 8.0.2 数据仓库服务开发指南》中“CREATE INDEX”章节。

3.4、分布式事务

3.4.1、技术背景

在分布式share nothing架构下,表的数据分布在不同的节点上。客户端的一条或多条语句可能会同时修改多个节点上的数据,这种情况下,会产生分布式事务。分布式事务需要关注以下几点:

1)在各个节点上事务的原子性,分布式事务在所有节点上要么全部成功要么全部失败;

2)事务的一致性,查询在各个节点上返回一致的数据。当节点出现故障时,是否会返回不一致的数据。

其中,分布式事务的原子性是必须要满足的,分布式事务的一致性根据CAP理论会有不同的标准,常见的是支持强一致2pc3pc协议等的CP系统,或者支持最终一致性TCC、消息表等的AP系统。

3.4.2、技术原理

GaussDB(DWS)支持强一致的分布式事务,在满足CP的基础上最大程度的提供高可用服务。

3.4.3、CSN

CSN的更新以及与XID的映射关系


CSN – Commit Sequence Number,事务提交号

1CSN是一个单调递增的8字节无符号整数,由GTM维护;

2)事务结束时,从GTM上获取并更新CSN值;

3)采用CSN机制后,查询只需从GTM上获取CSN号即可。

3.4.4、GTM


GTMGaussDB分布式框架下的一个组件:

1.管理和分配事务号(只增不减)

2.管理和维护CSN号(只增不减)

CN在执行修改操作时会从GTM上获取事务号。

CN在语句开始时会从GTM获取一个CSN用于查询。

CN在事务开始和结束会与GTM通信,注册和销毁事务相关信息。

3.4.5、故障处理

在节点出现故障造成分布式事务残留后,通过gs_clean工具进行自动清理。

gs_clean从各个节点上查询残留的两阶段事务,根据残留的事务号,去其它节点上查看该事务提交还是回滚,并根据最终结果对两阶段残留事务进行清理。

3.4.6、效果收益

GaussDB(DWS)支持强一致的分布式事务,用户可以像使用单机数据库一样来使用GaussDB(DWS)数据库,不用担心事务问题,非常简单方便。并且在采用基于CSN的事务机制后,并发性能有了很大的提升。

3.5、在线扩容

3.5.1、 技术背景

随着客户业务的发展,现有系统在磁盘容量、性能等方面将逐步呈现瓶颈。GaussDB(DWS)分布式数据库集群提供scale-out线性扩展能力,满足客户业务增长和利旧的诉求(将闲置的机器加入系统)。

3.5.2、技术原理

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

GaussDB(DWS)的扩容过程示意如所示。

扩容示意图

3.5.3、效果收益

GaussDB(DWS)在线扩容具有如下特点:

  • 扩容不中断业务。

GaussDB(DWS)扩容过程中支持数据持续入库、查询业务不中断。

  • 一致性Hash技术和多表并行扩容等技术,助力扩容性能提升。

采用一致性Hash技术使得重分布过程中需要迁移的数据量最小。

重分布过程中支持多表并行及用户自主选择表的重分布顺序。

支持扩容进度查询,实时监控扩容进度。

  • 随着节点数增加,集群性能线性增长。

所示,在全并行分布式架构下,GaussDB(DWS)随着节点数的增加,集群的数据加载性能、业务处理性能和容量可线性扩展。

高性能线性扩展

4、产品优势


GaussDB(DWS) 数据库内核使用华为自主研发的GaussDB数据库,兼容PostgreSQL 9.2.4的数据库内核引擎,从单机OLTP数据库改造为企业级MPP(大规模并行处理)架构的OLAP分布式数据库,其主要面向海量数据分析场景。

GaussDB(DWS) 与传统数据仓库相比,主要有以下特点与显著优势,可解决多行业超大规模数据处理与通用平台管理问题:

4.1、易使用

  • 一站式可视化便捷管理

GaussDB(DWS) 让您能够轻松完成从项目概念到生产部署的整个过程。通过使用GaussDB(DWS) 管理控制台,您不需要安装数据仓库软件,也不需要部署数据仓库服务器,就可以在几分钟之内获得高性能、高可靠的企业级数据仓库集群。

您只需点击几下鼠标,就可以轻松完成应用程序与数据仓库的连接、数据备份、数据恢复、数据仓库资源和性能监控等运维管理工作。

  • 与大数据无缝集成

您可以使用标准SQL查询HDFS、对象存储服务(Object Storage ServiceOBS)上的数据,数据无需搬迁。

  • 提供一键式异构数据库迁移工具

GaussDB(DWS) 提供配套的迁移工具,可支持MySQLOracleTeradataSQL脚本迁移到GaussDB(DWS)

4.2、高性能

  • 云化分布式架构

GaussDB(DWS) 采用全并行的MPP架构数据库,业务数据被分散存储在多个节点上,数据分析任务被推送到数据所在位置就近执行,并行地完成大规模的数据处理工作,实现对数据处理的快速响应。

  • 查询高性能,万亿数据秒级响应

GaussDB(DWS) 后台还通过算子多线程并行执行、向量化计算引擎实现指令在寄存器并行执行,以及LLVM动态编译减少查询时冗余的条件逻辑判断,助力数据查询性能提升。

GaussDB(DWS)支持行列混合存储,可以同时为用户提供更优的数据压缩比(列存)、更好的索引性能(列存)、更好的点更新和点查询(行存)性能。

  • 数据加载快

GaussDB(DWS)提供了GDS极速并行大规模数据加载工具。

4.3、易扩展

  • 按需扩展:Shared-Nothing开放架构,可随时根据业务情况增加节点,扩展系统的数据存储能力和查询分析性能。
  • 扩容后性能线性提升:容量和性能随集群规模线性提升,线性比8
  • 扩容不中断业务:扩容过程中支持数据增、删、改、查,及DDL操作(Drop/Truncate/Alter table),表级别在线扩容技术,扩容期间业务不中断、无感知。

4.4、高可靠

  • ACID

支持分布式事务ACIDAtomicityConsistencyIsolationDurability),数据强一致保证。

  • 全方位HA设计

GaussDB(DWS) 所有的软件进程均有主备保证,集群的协调节点(CN)、数据节点(DN)等逻辑组件全部有主备保证,能够保证在任意单点物理故障的情况下系统依然能够保证数据可靠、一致,同时还能对外提供服务。

  • 安全

GaussDB(DWS) 支持数据透明加密,同时可与数据库安全服务(DBSS)对接,基于网络隔离及安全组规则,保护系统和用户隐私及数据安全。GaussDB(DWS)还支持自动数据全量、增量备份,提升数据可靠性。

4.5、低成本

  • 按需付费:GaussDB(DWS) 按实际使用量和使用时长计费。您需要支付的费率很低,只需为实际消耗的资源付费。
  • 门槛低:您无需前期投入较多固定成本,可以从低规格的数据仓库实例起步,以后随时根据业务情况弹性伸缩所需资源,按需开支。

5、应用案例


5.1、工商银行选择GaussDB

建设全球最大金融数仓,13000位分析师在线,数据查询平均等待时长由300分钟降低至90秒。

5.2、 建设银行选择GaussDB

依托GaussDB强大的数据存储与处理能力,为信用卡核心系统提供高性能和安全可靠的综合表现。

5.3、招商银行选择GaussDB

建设金融核心业务的强大内核引擎,以及中国首个金融云数仓,承载全行数据应用批处理加工,数据应用全链路运行时长缩短15%以上。联合创新Ustore存储引擎和基于Paxos协议的高可用DCF组件,显著提升查询时延及性能效率。

5.4、中信银行选择GaussDB

构建业务自助消费数据的服务,赋能业务高速发展。数据分析性能提升50%,容量扩展2倍,全面提升业务自主消费数据效率。

5.5、光大银行选择GaussDB

建设全国首个股份制银行国产数仓,催熟金融科技创新课题,全面落地数字化转型;承载3.5+批量作业,性能提升45%

5.6、华夏银行选择GaussDB

通过采用同城双活技术,实现金融级的高可用,保证数据0丢失;凭借GaussDB强大的企业级兼容能力以及一站式数据迁移解决方案,完成平滑替换。


5.7、甘肃医保选择GaussDB

承载甘肃医保数十个业务系统的数字底座,门诊结算响应速度从5秒降低到0.9秒,入院办理响应时间从3秒降低到0.4秒,住院结算响应时间从10秒降低到 1.9秒。大幅度减少了群众就医结算的等待时间。 

5.8、陕西财政选择GaussDB

承载一体化平台的生产库,实现核心业务数据的集中管理与共享,助力支付业务运转效率提升60%。通过两地三中心高可用部署,保障数据不丢失,故障闪恢复。

5.9、一汽集团选择GaussDB

提供海量数据存储、数据实时同步的商业数据智能分析,极大缩短复杂报表作业执行时间,从天到分钟,数据实时汇聚。助力一汽红旗ERP系统重构,高效支撑海量订单需求,可靠性达99.99%

6、总结


GaussDB(DWS)是一款具备分析及混合负载能力的分布式数据库,能广泛应用于汽车、制造、零售、物流、互联网、金融、政府、电信等行业分析决策系统,能实时、简单、安全可信的企业级融合数据仓库,可借助DWS Express将查询分析扩展至数据湖。相信随着数据库业务发展,GaussDB(DWS)的应用场景会更加广泛。


【这次高斯不是数学家】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/351189

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。