一文了解华为Gauss数据库:开发历程、OLTP&OLAP特点、行式&列式存储,及与Oracle和AWS对比

数据库的重要性&华为推出新一代Gauss数据库 数据库是计算机行业的基础核心软件,所有应用软件的运行和数据处理都要与其进行数据交互。数据库的开发难度,不仅体现在与其他基础器件的适配,更在于如何实现对数据高效、稳定、持续的管理。Oracle、微软的数据库之所以能长久不衰,一方面在于其强大的技术开发和产品升级迭代能力,另一方面在于其对数据库的Knowhow理解足够深,这个是其他厂商短期难以超越的。华为在数据库领域逐步取得新的突破。2019年华为推出了新一代的数据库产品Gauss数据库,该产品已经在金融、能源、政企等国内客户得到上线应用。 华为Gauss数据库:AI原生&&支持异构计算 华为在数据库领域已经有12年的开发经验,从早期的摸索到现在的产品逐步成熟,中间也是经历了很多历程。华为的数据库产品系列命名为:GaussDB,高斯数据库。华为GaussDB是一个企业级AI-Native分布式数据库。GaussDB采用MPP(Massive Parallel Processing)架构,支持行存储与列存储,提供PB(Petabyte,2的50次方字节)级别数据量的处理能力。华为Gauss数据库是全球首款AI-Native数据库,能够同时支持X86、ARM、GPU、NPU等异构计算。 华为Gauss数据库:三大产品线系列 GaussDB:三大产品线系列。目前华为已经开发有三个产品系列:GaussDB 100、GaussDB 200、GaussDB300。1)GaussDB 100:主要以OLTP为主。目前该产品已经应用在招商银行。2)GaussDB 200:以OLAP为主,兼顾OLTP。该产品目前已经在工商银行得到上线应用。3)GaussDB 300::HTAP,是企业级分布式HTAP数据库(Hybrid Transaction and Analytical Process,混合事务和分析处理)。 华为Gauss数据库:华为IT生态体系不可或缺 从生态体系来看,Oracle数据库成为全球第一数据库的地位,也是经过了很多次版本的更新升级,更与上世纪80年代开始的全球IT生态体系的逐步确立有关。Oracle数据库世界霸主地位,是随着Windows操作系统、Intel X86芯片一起建立的PC时代的IT底层生态而逐步确立的。而AWS数据库则是适应了互联网时代(云计算时代)新的计算场景对数据库的新需求,再加上自身的云生态体系,逐步迎来了客户使用的推广。从华为Gauss数据库来看,华为IT架构的底层生态已经逐步建立起来,包括芯片、操作系统、数据库等,这些在华为IT体系内部是高度耦合的。

华为数据库分析


数据库是计算机行业的基础核心软件,所有应用软件的运行和数据处理都要与其进行数据交互。2008年阿里提出“去IOE”,而10年之后,我们现在来看,发现Oracle的数据库是最难替换的。不仅是因为Oracle的数据库沉淀了大量的企业客户数据,更是因为数据库产品开发难度确实比较大。数据库的开发难度不亚于操作系统,属于整个IT架构的基础软件(数据库软件在操作系统之上,我们可以将其称为类中间层的基础软件)。而且数据库的开发需要与底层计算架构高度相关和耦合,是适配X86架构,还是适配ARM架构等等。

当然以上这些都是数据库的与其他基础器件的适配,数据库难度更大的地方在于如何实现对数据高效、稳定、持续的管理。Oracle、微软的数据库之所以能长久不衰,一方面在于其强大的技术开发和产品升级迭代能力,另一方面在于其对数据库的Knowhow理解足够深,这个是其他厂商短期难以超越的。

回到这篇文章的主题:华为数据库。华为在IT的底层架构,逐步搭建起自己的基础架构,建立华为生态。我们这次把华为数据库进行讲解,并对目前主流的数据库进行对比。只有对比,才能发现不同。

华为DB开发历程


华为对数据库的开发经历了长达12年左右的时间。

2007年,华为开始着手研发内存数据库,项目代号为GMDB。这个项目的背景是,当时电信实施实时计费,电信行业对数据库有特殊的要求,有些需要定制化开发。而当时国外的数据库产品主要是标准化产品。为了满足客户需求,华为当时开始研发内存数据库。

2010年,华为开始从内存数据库向通用关系型数据库进行拓展,逐步将非内存数据库的功能融入到数据库产品中。2012年,华为数据库性能得到显著提升,GMDB开始逐步商用化,主要应用于电信计费。同时,该产品也在华为内部的部分部门开始使用。

2013年,华为OLTP数据库开始上线(后面我们会详细介绍OLTP和OLAP)。

2014年,华为开发出第一个OLAP数据库版本(OLAP我们可以简单理解为:是针对大量数据的分析型数据库)。

2015年,华为与工商银行一起联合研发。GaussOLAP数据库在工商银行上线,逐步替代海外的数据仓库。

2017年,华为与招商银行一起联合开发GaussDB。同时,华为启动面向事务和分析混合处理的数据库开发,即HTAP。

2018年,华为GaussOLTP数据库(事务型数据库)开始在招商银行综合支付交易系统成功上线。承接招商银行“手机银行”和“掌上生活”两大App交易流水流量。

2018年,GaussHTAP数据库推出,并在民生银行得到应用。

从华为Gauss数据库产品演化至今来看:

1)华为数据库产品的研发是从内存数据库开始,逐步向通用关系型数据库延伸,这与Oracle、AWS数据库开发的起点并不完全一样。

2)华为数据库产品类型,包括了OLTP、OLAP,同时还研发出HTAP产品。我们认为,从产品应用角度来看,华为OLAP(分析型数据库)大规模应用的时点更早一些。Oracle的OLTP(事务型数据库)在全球领域的竞争优势非常明显,这一领域的数据库产品比较难替代。

3)华为的OLTP数据库是通过与大客户合作,特别是银行大客户合作(工商银行、招商银行),来不断进行产品迭代和完善的。我们认为,这也是华为数据库能够快速成长的主要原因。

初识华为GaussDB


华为在数据库领域已经有12年的开发经验,从早期的摸索到现在的产品逐步成熟,中间也是经历了很多历程。目前,华为数据库逐步建立起三大产品系列。

华为的数据库产品系列命名为:GaussDB,高斯数据库。高斯,是德国伟大的数学家,近代数学的奠基者之一,高斯、阿基米德、欧拉、牛顿被世人称为世界上最伟大的四位数学家。华为将自己的数据库命名为Gauss系列,也有向数学致敬的意味。

GaussDB:开源数据库。华为的Gauss数据库是一个开源数据库,基于PostgreSQL9.2开发。我们知道PostgreSQL本身就是一个开源数据库品牌。现在除了OracleDB、微软的SQLServer等传统老牌数据产品之外,目前新开发的数据库产品,开源数据库占比较大的部分。包括我们看到的AWS的Aurora数据库、阿里的飞天数据库、华为的Gauss数据库,以及数据库新进入者MongoDB等。

GaussDB:分布式&AI原生。华为GaussDB是一个企业级AI-Native分布式数据库。GaussDB采用MPP(Massive Parallel Processing)架构,支持行存储与列存储,提供PB(Petabyte,2的50次方字节)级别数据量的处理能力。可以为超大规模数据管理提供高性价比的通用计算平台,也可用于支撑各类数据仓库系统、BI(Business Intelligence)系统和决策支持系统,为上层应用的决策分析提供服务。华为GaussDB将AI能力植入到数据库内核的架构和算法中,为用户提供更高性能、更高可用、更多算力支持的分布式数据库。

GaussDB:三大产品线系列。高斯数据库研发始于2011年。目前已经开发有三个产品系列:GaussDB 100、GaussDB 200、GaussDB 300。

GaussDB 100:主要以OLTP为主。GaussDB 100研发开始于2011年,与后面的GaussDB 200/300不同,GaussDB 100并不是一个分布式数据库。GaussDB 100包括两条线,一条产品线是基于单机版开源数据库PostgreSQL研发的产品,另一条线是自研内核的GaussDB 100产品。后面这一条线是近几年华为研发的产品。目前该产品已经应用在招商银行。

GaussDB 100主要是OLTP,即事务型数据库。

GaussDB 200:以OLAP为主,兼顾OLTP。华为GaussDB 200开始于2012年,在基于传统关系型数据库的SQL引擎和事务强一致性等基础上,进行了分布式、并行计算的改造。历时6年,打造了一款架构领先的分析型数据库,为各行业PB级海量数据分析提供有竞争力的解决方案。GaussDB 200既可以适用于OLTP,也可以应用于OLAP。

GaussDB 300:HTAP,OLTP和OLAP。GaussDB 300是一个分布式并行关系型数据库系统,是企业级分布式HTAP数据库(Hybrid Transaction and Analytical Process,混合事务和分析处理)。GaussDB 300架构上着重构筑传统数据库的企业级能力和互联网分布式数据库的高扩展和高可用能力,完全兼容SQL标准,提供百万级TPMC的交易处理能力和企业级可靠性。

GaussDB 200/300都是基于开源数据库PostgreSQL研发,虽然是基于开源数据库,但已经对开源代码进行了大量修改,在很大程度上接近于自研。GaussDB 200/300既可以支持OLTP也可以支持OLAP,也是华为投入精力最大、研发时间最长的产品线。目前已经在工商银行和民生银行应用。

在以上我们对华为GaussDB的介绍当中,提到了数据库领域比较重要的两个概念:OLTP和OLAP。下面我们就介绍下这两个概念,以及其所对应的数据库类型。

华为GaussDB数据库包括:事务性(OLTP)数据库、分析型(OLAP)数据库和混合负载(HTAP)数据库。这里需要解释下OLTP、OLAP、HTAP之间的区别,这也是数据库最基本的内容。

数据库系统一般分为两种类型:一种是面向前台应用的,应用比较简单,但是重吞吐和高并发的OLTP类型;一种是重计算的,对大数据集进行统计分析的OLAP类型。

1)OLTP:联机事务处理OLTP(on-line transaction processing)

它是事件驱动、面向应用的,比如电子商务网站的交易系统就是典型的OLTP系统。OLTP的基本特点是:

- 数据在系统中产生;

- 基于交易的处理系统(Transcation-Based);

- 每次交易牵涉的数据量很小;对响应时间要求非常高;

- 用户数量非常庞大,主要是操作人员;

- 数据库的各种操作主要基于索引进行。

2)OLAP:联机分析处理OLAP(On-Line Analytical Processing)

是基于数据仓库的信息分析处理过程,是数据仓库的用户接口部分。OLAP系统是跨部门的、面向主题的,其基本特点是:

- 本身不产生数据,其基础数据来源于生产系统中的操作数据(OperationalData);

- 基于查询的分析系统;复杂查询经常使用多表联结、全表扫描等,牵涉的数量往往十分庞大;

- 响应时间与具体查询有很大关系;

- 用户数量相对较小,其用户主要是业务人员与管理人员;

- 由于业务问题不固定,数据库的各种操作不能完全基于索引进行。

OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。

OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作。OLAP 系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。

3)HTAP:混合事务和分析处理(Hybrid Transaction and Analytical Process),既可以应用于事务型数据库场景,亦可以应用于分析型数据库场景。

GaussDB OLTP数据库,业界首创Switch Turbo技术,AZ内TRO<1秒,满足金融场景下的数据库高可用诉求。

GaussDB OLAP数据库,可以帮助客户实现PB级海量数据高效分析,目前已经广泛应用于金融、运营商、政府等行业。

GaussDB HTAP数据库,多模引擎支持五种数据类型融合处理,包括流、图、空间、文本、结构化,可以解决集中式架构扩展性和性能瓶颈问题,同时分散风险,提升业务连续性。

华为GaussDB值得关注的点:

1、全球首款AI-Native数据库。

AI原生数据库是GaussDB的主要特点之一。华为将AI引擎内置到GaussDB全系产品中,使其具备一定的自运维、自管理、自调优、故障自诊断和自愈的能力。华为也希望把在芯片、算法上面的优势,集中体现到数据库上来。客观来讲,其实对于在数据库中植入AI技术,并不是一个新鲜做法。Oracle在几个版本之前就开始就植入了AI技术,开启了“Autonomous”之旅。

2、异构计算支持X86、ARM、GPU、NPU。

这个也是Gauss数据库与其他数据库比较大的不同。目前主流的数据库产品,包括OracleDB、MySQL、SQL Server等,基本都是支持X86架构。我们认为,华为数据库对于异构计算的支持,可能是为该数据库未来向更多计算场景的应用做准备。我们知道,5G带来计算场景的变革或将更大。

详解华为GaussDB


华为的Gauss数据库现在推广的产品主要是GaussDB100、GaussDB 200和GaussDB 300。我们这里主要对GaussDB 200和GaussDB 300这两个系列产品进行介绍和解读。

华为GaussDB200

1、GaussDB200 简介

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

从以上对GaussDB的描述中,我们至少能够理解到以下几层意思:

1)GaussDB 200是一个关系型数据库,不是No-SQL数据库。

2)它利用了分布式并行处理技术。早期传统数据库并不是分布式架构。分布式并行架构更适合于处理互联网高并发数据。

3)支持行存储和列存储。

这里需要解释下,数据库领域中的行存储和列存储区别。

行存储(Row-based):对于传统的关系型数据库,比如甲骨文的OracleDB和MySQL,IBM的DB2、微软的SQL Server等,一般都是采用行存储(Row-based)行。在基于行式存储的数据库中,数据是按照行数据为基础逻辑存储单元进行存储的,一行中的数据在存储介质中以连续存储形式存在。

列式存储(Column-based)是相对于行式存储来说的,新兴的Hbase、HP Vertica、EMC Greenplum 等分布式数据库均采用列式存储。在基于列式存储的数据库中,数据是按照列为基础逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在。

传统的行式数据库,是按照行存储的,维护大量的索引和物化视图无论是在时间(处理)还是空间(存储)面成本都很高。而列式数据库恰恰相反,列式数据库的数据是按照列存储,每一列单独存放,数据即是索引。只访问查询涉及的列,大大降低了系统I/O,每一列由一个线来处理,而且由于数据类型一致,数据特征相似,极大方便压缩。

第一,从存储角度来看,对于列式存储来说,一行数据包含一个列或者多个列,每列有单独一个cell来存储数据。而行式存储,则是把一行数据作为一个整体来存储。另外,列式存储天生就是适合压缩,因为同一列里面的数据类型基本是相同。

第二,从查询角度来看,行式存储比较适合随机查询,而且,关系型数据库(RDBMS)大多提供二级索引,在整行数据的读取上,要优于列式存储。但是,行式存储不适合扫描,这意味着要查询一个范围的数据,行式存储需要扫描整个表。

基于以上,我们可以看出,GaussDB 200兼具了行存储和列存储的优势。

4)MPP架构。这个与上面的分布式并行是一体的。在数据库中,MPP架构并不是新技术。目前Oracle的数据库,包括国内的南大通用的分析型数据库(OLAP)都采用了MPP架构。

MPP (Massively Parallel Processing),即大规模并行处理,在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。

简单来说,MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果。

说起MPP,我们不得不说大数据处理中应用到的里另一个技术:Hadoop。这个词曾经在2016年中国大数据行业比较流行。我们来看下,MPPDB、Hadoop与传统数据库技术在应用场景上的对比。

MPPDB与Hadoop都是将运算分布到节点中独立运算后进行结果合并(分布式计算),但由于依据的理论和采用的技术路线不同而有各自的优缺点和适用范围。两种技术以及传统数据库技术的对比如下:

Hadoop和MPP两种技术的特定和适用场景为:

- Hadoop在处理非结构化和半结构化数据上具备优势,尤其适合海量数据批处理等应用要求。

- MPP适合替代现有关系数据机构下的大数据处理,具有较高的效率。

- MPP适合多维度数据自助分析、数据集市等;Hadoop适合海量数据存储查询、批量数据ETL、非机构化数据分析(日志分析、文本分析)等。

由上述对比可预见未来大数据存储与处理趋势:MPPDB+Hadoop混搭使用,用MPP处理PB级别的、高质量的结构化数据,同时为应用提供丰富的SQL和事务支持能力;用Hadoop实现半结构化、非结构化数据处理。这样可以同时满足结构化、半结构化和非结构化数据的高效处理需求。

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

2、GaussDB200应用场景

GaussDB 200面向行业大数据应用,可以适用于以下场景:

1)详单查询

GaussDB 200具备PB级数据负载能力,通过内存分析技术满足海量数据边入库边查询要求,适用于安全、电信、金融、物联网等行业的详单查询业务。

从这点可以看出,这一功能的实现是发挥了GaussDB 200在OLTP方面能力。

2)数据仓库

GaussDB 200具备百TB级数据支撑能力,可以高效处理百亿行多表连接查询,适用于操作数据存储ODS(Operational Data Store)、企业数据仓库EDW(Enterprise DataWarehouse)、数据集市DM(Data Mart)。

以上这一功能体现了GaussDB 200在OLAP方面的能力。

3)混合负载

GaussDB 200基于海量数据查询统计分析能力与事务处理能力,行列混存技术同时满足联机事务处理OLTP(On-Line Transaction Processing)与联机分析处理OLAP(Online Analytical Processing)混合负载场景。

4)大数据分析

支持结构化数据PB级分析能力。分布式并行数据库集群满足PB级结构化大数据的分析能力。

GaussDB 200是一个分布式并行关系型数据库系统。提供了以下功能:

1)标准SQL支持

支持标准的SQL-92/SQL:1999/SQL:2003规范,支持GBK和UTF-8字符集,支持SQL标准函数与分析函数,支持存储过程。

2)数据库存储管理功能

支持表空间,支持在线扩容功能。

3)提供组件管理和数据节点HA(High Availability)

支持数据库事务ACID特性(即原子性Atomicity、一致性Consistency、隔离性Isolation和持久性Durability),支持单节点故障恢复,支持负载均衡等。

4)应用程序接口

支持标准JDBC 4.0的特性和ODBC 3.5特性。

5)安全管理

支持SSL安全网络连接、用户权限管理、密码管理、安全审计等功能,保证数据库在管理层、应用层、系统层和网络层的安全性。

3、GaussDB200技术特点

GaussDB 200具有低成本、高性能、高可靠和支持海量数据存储的特点。

1)低成本

基于分布式x86架构,客户硬件投资成本低。支持标准的SQL92、SQL99、SQL2003规范,支持客户应用系统平滑迁移。

2)高性能

行列混合存储引擎,数据按照最优负载模型选择存储方式,性能更优。支持基于服务等级协议SLA(Service-Level Agreement)策略的负载管理,保障并发任务的服务质量。支持基于代价的查询优化模型,提升复杂查询性能。分布式、并行化的查询处理模型,充分利用系统计算资源和IO资源。支持并行数据导出和导入。

3)高可靠

硬件级高可靠:磁盘Raid、交换机堆叠及网卡bond、不间断电源UPS(Uninterruptible Power Supply)。件级高可靠:集群CM、CN、GTM、DN实例全方位HA。数据存储安全可靠:在安全认证的基础上,支持数据在数据库内的加密存储,防止三方人员绕过数据库认证机制直接读取数据文件中的数据。

4)支持海量数据

集群最大可扩展至2048个节点,支撑PB级数据管理能力。集群规模按用户需求弹性伸缩,扩展业务不中断,减少用户投资成本。

各组件提供功能如下:

- GaussDB 200:基于MPP架构的新型数据库,为GaussDB 200提供PB级数据负载能力、百TB级数据支撑能力、海量数据查询统计分析能力与事务处理能力、支持结构化数据PB级分析能力等。

- Manager:作为运维系统,负责GaussDB 200的集群管理,支持大规模集群的安装部署、监控、告警、用户管理、权限管理、审计、服务管理、健康检查、问题定位、升级和补丁等。

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

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

1)最易于扩展的架构

为商业智能BI(Business Intelligence)和数据分析的高并发、大数据量计算提供按需扩展的能力;自动化的并行处理机制。

2)内部自动并行处理,无需人工分区或优化

数据加载与访问方式与一般数据库相同;数据分布在所有的并行节点上;每个节点只处理其中一部分数据。

3)最优化的I/O处理

所有的节点同时进行并行处理;节点之间完全无共享,无I/O冲突。

4)增加节点实现存储、查询及加载性能的线性扩展

GaussDB 200由多个MPPDBServer组成,GaussDB 200结构具体如图所示。

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

具体查询流程如下:

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数据存储流程与数据查询流程相近,请参考数据查询流程,此处不再介绍。

华为GaussDB300

GaussDB 300是企业级分布式HTAP数据库(Hybrid Transaction and Analytical Process,混合事务和分析处理),架构上着重构筑传统数据库的企业级能力和互联网分布式数据库的高扩展和高可用能力,完全兼容SQL标准,提供百万级TPMC的交易处理能力和企业级可靠性。

GaussDB 300是一个分布式并行关系型数据库系统。提供了以下功能:

1)标准SQL支持

支持标准的SQL92/SQL99/SQL2003规范,支持GBK和UTF-8字符集,支持SQL标准函数与分析函数,支持存储过程。

2)数据库存储管理功能

支持表空间,支持在线扩容功能。

3)提供组件管理和数据节点HA(High Availability)

支持数据库事务ACID特性(即原子性Atomicity、一致性Consistency、隔离性Isolation和持久性Durability),支持单节点故障恢复,支持负载均衡等。

4)应用程序接口

支持标准JDBC 4.0的特性和ODBC 3.5特性。

5)安全管理

支持SSL安全网络连接、用户权限管理、密码管理、安全审计等功能,保证数据库在管理层、应用层、系统层和网络层的安全性。

GaussDB 300具备如下特性:

1)高扩展: 容量和性能按需水平扩展

无共享架构,性能线性扩展能力。应用透明的Sharding能力。

2)高可用:双活和两地三中心高可用

读写分离和两地三中心部署。分片双活和两地三中心部署。

3)高性能: 支持高吞吐强一致性事务能力

高并发MVCC和日志管理。跨节点高性能、强一致事务。

4)易管理: 易迁移,易监控,运维

兼容SQL2003,存储过程等高级功能。在线升级,在线扩容。

GaussDB 300的分布式能力做到对业务透明,能替换传统OLTP数据库应用,也能替换数据库中间件、数据库分库分表等Sharding 方案。同时它也让开发运维人员不用关注数据库数据分布和扩展的细节问题,专注于业务开发,极大的提升研发的生产力。

GaussDB 300应用场景

GaussDB 300面向行业大数据应用,可以适用于以下场景:

1)核心交易处理

具备大并发、百万级TPMC事务处理能力,提供集群高可用、同城双活和跨城市级容灾能力,能够支撑银行核心账务、渠道交易、互联网金融等关键OLTP应用场景。

2)复杂事务处理支持标准SQL92、SQL99和SQL2003,提供存储过程、触发器、分页、游标等能力,满足CRM、ERP等典型企业应用场景的复杂事务能力要求。

3)混合负载场景

基于行列混存、动态负载管理和多租户等技术,具备复杂事务处理和海量数据查询统计分析能力,同时满足联机事务处理OLTP(On-Line Transaction Processing)与联机分析处理OLAP(Online Analytical Processing)混合负载场景。

GaussDB 300技术特点

华为GaussDB 300具有如下技术特点:

1)低成本

基于分布式x86架构(支持鲲鹏架构),客户硬件投资成本低。支持标准的SQL92/SQL99/SQL2003规范,支持客户应用系统平滑迁移。

2)高性能

通过列存储、向量化执行引擎、分布式查询处理等关键技术,实现百亿数据量查询秒级响应。

3)支持海量数据

集群最大可扩展至32个节点,支撑TB级数据管理能力。集群规模按用户需求弹性伸缩,扩展业务不中断,减少用户投资成本。

数据库产品对比分析

这里我们主要讲华为数据库GaussDB与目前市场主流数据库:Oracle、AWS进行对比。

Oracle数据库作为传统数据库产品的代表,其继续在传统计算场景占据较大的市场份额。同时,针对新兴的计算场景和新的数据类型要求,Oracle数据库也在进行转型和迭代。

AWS数据库作为新兴数据库厂商的代表,其数据库产品更多的是为了满足云计算(互联网)场景下对数据处理的需求。目前,AWS的产品既包括关系型数据库产品,也包括了非关系型数据库产品。

我们这一部分内容,主要介绍下Oracle和AWS数据库的最新进展。以此来对比下目前华为的Gauss数据库与这两大巨头数据库产品之间的异同。

Oracle数据库

Oracle作为全球最大、历史最悠久的数据库厂商,在数据库方面的技术领先型和创新性方面,依然保持了强大的优势。Oracle数据库自从1978年发布第一个版本之后,至今已经有41年的时间。Oracle在全球数据库的市场份额超过50%。其不仅包括商用版的Oracle DB,同时MySQL作为开源数据库,也是Oracle旗下的产品。

1、Oracle DB最新进展

2019年Oracle发布Oracle DB 19C。在2019年8月Oracle云数据库大会上,Oracle介绍了其最新产品Oracle DB 19C的特性。

Oracle DB 19C可以在任何环境运行,本次版本增加的新功能包括:

1)安全可靠的Oracle 数据库版本

长期支持12c 第2 版系列(12.2、18、19);标准支持服务持续至2023 年3 月,扩展支持服务持续至2026 年3 月

2)提供更多自治数据库功能

自动索引、实时统计......

3)提供功能变更以改善整体客户体验

面向物联网的流插入,Active Data Guard 备用数据库更新、针对云对象存储的SQL 查询。

针对以上这些,我们初看起来,可能还没有太多直观和概念的认识。我们先看下Oracle数据库正在做的数据库革新。主要体现在几个方面:

1)自治数据库Autonomous Database

2)云Cloud

3)Exadata

4)分片Sharding

5)区块链Blockchain

6)微服务Microservices

我们先看下,Oracle数据库在自治方面的进展。首先对于“自治(Autonomous)”,我们可以理解为将AI技术逐步植入和迭加到已有的数据库产品。

Oracle数据库从9i版本,已经开始实现“自动Autonomous”的功能,包括自动查询重写和自动撤销管理等功能。在之后的10g、11g、12c等多个版本中,不断加大和强化AI和机器学习技术的应用。

Oracle的自治数据库,集成了基于机器学习和人工智能技术的监视、管理和分析功能。自治数据库的机器学习和人工智能算法所使用的技术应包括查询优化、自动内存管理和自动存储管理,以提供一个完全自主调优的数据库。自治数据库的目标是,实现数据库调优自动化,防止应用中断,并加强整个数据库应用的安全性。

机器学习算法通过分析大量的记录数据,并标记异常值和异常模式,帮助企业提高数据库安全性,防止入侵者造成破坏。机器学习还可以在系统运行的同时自动、连续地对系统进行打补丁、调整、备份和升级,而无需人工干预。这将尽可能减少发生人为错误或恶意行为的可能性,避免影响数据库运作或安全性。

对于Oracle数据库,通常有这样的看法:“Oracle 是一个关系型数据库,因此无法管理和分析非结构化数据”。对于以上这种看法,我们认为,对Oracle数据库的认知,还停留在关系型数据库本身的固定范式。

Oracle是一个多模型数据库,可以支持多个计算场景下的数据管理,包括:文件、图形、键值、空间地理等。因此,Oracle数据库可以对任何数据类型执行SQL查询。

2、Oracle数据库的转型

为了应对新的计算环境,新的数据格式以及新的应用场景。目前Oracle数据库也在逐步转型。

1)从单数据库到分布式数据库

Oracle的数据库支持的数据计算量都比较大,为了满足全球规模的OLTP应用程序对小型数据库的需求,Oracle利用原生分片技术,将大型数据库分成很多小型数据库。

Oracle的原生SQL对分片表可以做到1000个分片;线性扩展的数据和用户隔离到不同的分片;在线添加和重组分片;路由基于分片键,交叉分片查询。

2)从关系型到以Web为中心的数据

我们之前Oracle数据库有分歧的地方在于,Oracle的数据库不能很好的支持互联网数据。目前,Oracle数据库逐步向支持互联网场景的数据。

Oracle利用原生SQL对JSON进行支持。

1)JSON是Web新应用程度最流行的数据格式。

2)数据库中的JSON极大简化了应用程序开发

3)Oracle将JSON存储在表列中,并支持原生SQL

4)所有的Oracle功能都支持JSON。

3)从碎片化数据库到融合数据库

目前,初创格式和云供应商都在大力倡导单用途数据库,其可以避免建立通用数据库做需要的数十年的投资。能在某一个的应用场景快速超越已有的市场领先者。比如,我们现在看到的AWS的数据库,其开发了支持不用数据类型和计算场景下的多样化的数据库。针对市场的多样化数据场景需求和竞争对手的竞争,Oracle开发了融合数据库,将众多单独的数据库产品融合到Oracle数据库产品中,可以支持键值、分析、JSON等多样化的产品功能需求。

AWS数据库

AWS数据库的研发和推出,完全是适应了云应用程序和云计算场景下对数据库新的要求。云时代应用程序需要数据库来存储TB 到PB 级的新类型数据,提供对数据的访问(毫秒级延迟),每秒处理数百万个请求,并扩展以支持位于世界上任何地方的数百万用户。为了满足这些要求,同时需要关系数据库和非关系数据库作为支撑。

AWS全托管的数据库服务,包括:关系数据库(适用于事务性应用程序)、非关系数据库(适用于Internet 规模应用程序)、数据仓库(适用于分析)、内存数据存储(适用于缓存和实时工作负载)、图形数据库(适用于构建具有高度互联数据的应用程序)、时间序列数据库(适用于衡量随时间的变化)和分类账数据库(用于维护完整且可验证的交易记录)。

1、AWS关系型数据库:Aurora

关系数据库存储具有预定义架构的数据及其之间的关系,设计用于支持ACID 事务、维护引用完整性和数据一致性。

应用场景:传统应用程序、ERP、CRM 和电子商务

AWS 产品:

- Amazon Aurora

- MySQL、PostgreSQL

- Amazon RDSMySQL、PostgreSQL、MariaDB、Oracle、SQL Server

- Amazon Redshift

2、键值数据库:DynamoDB

键值数据库经过优化,以毫秒级的速度存储和检索大量键值对,避免关系数据库的性能开销和规模限制。

应用场景:Internet 规模的应用程序、实时竞价、购物车和客户喜好

AWS产品:

- Amazon DynamoDB

3、文档数据库:DocumentDB

文档数据库设计用于存储文档等半结构化的数据,可供开发人员直观地使用,因为数据通常以可读文档的形式呈现。

应用场景:内容管理、个性化和移动应用程序

AWS产品:

- Amazon DocumentDB(兼容MongoDB)

4、内存数据库:

内存中数据库用于需要实时访问数据的应用程序。通过直接将数据存储在内存中,这些数据库为不满足于毫秒级延迟的应用程序提供微秒级延迟。

应用场景:缓存、游戏排行榜和实时分析

AWS产品:

- Amazon ElastiCache for Redis

适用于Memcached 的Amazon ElastiCache

5、图形数据库

对于需要让数百万用户查询和浏览高度互联的图形数据集之间的关系并实现毫秒级延迟的应用,可以使用图形数据库。

应用场景:欺诈检测、社交网络和建议引擎

AWS 产品:

- Amazon Neptune

6、时间序列数据库

时间序列数据库用于从大量随时间变化的数据(称为时间序列数据)高效地收集、合并和提炼见解。

应用场景:IoT 应用、开发运营和工业遥测

AWS 产品:

- Amazon Timestream

7、分类账数据库

在您需要集中的可信权威方式来维护可扩展、完整、加密且可验证的事务记录时,可以使用分类账数据库。

应用场景:系统记录、供应链、注册和银行事务。

AWS 产品:

- Amazon Quantum Ledger Database (QLDB)

Amazon Aurora详细介绍

Amazon Aurora 是一种与MySQL 和PostgreSQL 兼容的关系数据库,专为云而打造,既具有传统企业数据库的性能和可用性,又具有开源数据库的简单性和成本效益。Amazon Aurora 的速度最高可以达到标准MySQL 数据库的五倍、标准PostgreSQL 数据库的三倍。它可以实现商用数据库的安全性、可用性和可靠性,而成本只有商用数据库的1/10。Amazon Aurora 由Amazon Relational Database Service (RDS) 完全托管,RDS 可以自动执行各种耗时的管理任务,例如硬件预置以及数据库设置、修补和备份。Amazon Aurora 采用一种有容错能力并且可以自我修复的分布式存储系统,这一系统可以把每个数据库实例扩展到最高64TB。它具备高性能和高可用性,支持最多15 个低延迟读取副本、时间点恢复、持续备份到Amazon S3,还支持跨三个可用区(AZ) 复制。

Amazon DynamoDB详细介绍

Amazon DynamoDB 是一个键/值和文档数据库,可以在任何规模的环境中提供个位数的毫秒级性能。它是一个完全托管、多区域多主的持久数据库,具有适用于Internet 规模的应用程序的内置安全性、备份和恢复和内存缓存。DynamoDB 每天可处理超过10 万亿个请求,并可支持每秒超过2000 万个请求的峰值。

许多全球发展最快的企业,如Lyft、Airbnb 和Redfin,以及Samsung、Toyota 和Capital One 等企业,都依靠DynamoDB 的规模和性能来支持其关键任务工作负载。

数十万AWS 客户选择DynamoDB 作为键值和文档数据库,用于其移动、Web、游戏、广告技术、物联网以及其他需要任何规模的低延迟数据访问的应用程序。

华为GaussDB:对比

我们以华为GaussDB200为例,来看下目前GaussDB的下游应用情况。

2018年,GaussDB 200融合数据仓库荣获2018数博会领先科技成果奖。2017~2019年连续3年入围Gartner “Magic Quadrant for DataManagement Solutions for Analytics”,中国区厂商排名第一。

应用场景:华为GaussDB 200分布式OLAP数据库已经赢得全球300多个客户的信赖,广泛应用于政府、金融、公共安全、运营商、大企业等行业。

1)金融领域

银行融合数仓,多类型数据统一存储和分析,性能大幅提升。保险营销管理平台,提升服务水平,显著提升续保率,交叉拓展率等指标,客户流失率降幅高达50%以上。

2)电子政务

税务大数据,提升纳税人办税效率,提升工作人员办公效率,推动整体涉税服务迭代升级。财务云大数据,打破财政应用系统条块分割,以统一规范的数据标准和数据结构为基础,预算编制、绩效监督、综合管理等财政所有业务上云。警务大数据,"两抢一盗"案件率明显下降。

3)运营商

集中经分,利用GaussDB多租户能力对资源进行集中管控,支撑客户群分析从10分钟缩短到实时分析。详单查询,日增600GB数据持续入库,查询时间从分钟级减少为平均5s。

对比一:产品矩阵对比

通过以上三家数据库产品对比,我们可以看出:

1)Oracle的数据库在关系型数据库领域的地位还是非常稳固,其也在非关系型数据库应用的场景不断迭代自身产品,而使其更加适应更多的计算场景。

2)AWS数据库产品虽然发展比较晚,但产品线还是很齐全,既包括关系型数据库,也包括非关系型数据库。

3)华为Gauss数据库已经发布了GaussDB100、GaussDB200、GaussDB300三个产品系列。

对比二:应用场景对比

1)Oracle数据库产品OLTP和OLAP的产品都具备,而且功能比较强大。

2)AWS数据库产品,也同时具备OLTP和OLAP的产品线。

3)华为Gauss数据库产品中,GaussDB100更多以OLTP为主,GaussDB200主要以OLAP为主,GaussDB300兼顾了OLTP和OLAP。在OLTP方面,主要客户为招商银行;OLAP方面,包括工商银行等。

对比三:客户属性对比

1)Oracle的数据库产品在全球跨国企业、金融领域、能源领域、航空领域等具备强大的竞争优势。

2)我们认为,AWS的数据库在对新兴计算场景偏重的互联网企业中,更加具备竞争优势。

3)华为Gauss数据库已经在国内开始逐步推广,从目前客户类型来看,主要以国内的银行、保险、能源等行业客户为主。从客户范围和数量方面,距离Oracle和AWS还有一定差距。

对比四:数据库支持的架构

1)Oracle数据库产品主要支持X86的架构。我们知道Oracle的数据库、Window操作系统和Intel的芯片,在PC时代是一套完整的生态体系,它们之间是高度耦合的。产品迭代的时候都会以彼此产品作为基础,不断优化做到高度适配。

2)AWS数据库产品也只支持X86架构。

3)华为Gauss数据库产品可以支持X86、ARM、GPU、NPU等异构计算。可以看出,Gauss数据库未来的目标市场不只是国产服务器市场,可能还包括未来5G带来更多的计算应用场景。

总结


通过以上我们对华为Gauss数据库的分析,以及与其他产品的对比,我们对Gauss数据库应该有了一个比较立体的认知和理解。最后,将我们的观点总结如下。

1、从发展时间来看,华为的数据库从起步到现在已经有12年的时间,目前正处于快速迭代和应用期。从Oracle数据库和AWS数据库发展来看,Oracle数据库从1978年开始到现在已经有41年的历史,AWS的数据库从2006年开始到现在大概走过了13个年头,而AWS也算是数据库领域的新进入者。因此对于华为Gauss数据库而言,未来的路还很长。

2、从生态体系来看,Oracle的数据库成为全球第一数据库的地位,也是经过了很多次版本的更新升级,更与上世纪80年代开始的全球IT生态体系的逐步确立有关。Oracle数据库世界霸主地位,是随着Windows操作系统、IntelX86芯片一起建立的PC时代的IT底层生态而逐步确立的。而AWS数据库则是适应了互联网时代(云计算时代)新的计算场景对数据库的新需求,再加上自身的云生态体系,逐步迎来的客户使用的推广。从华为Gauss数据库来看,华为IT架构的底层生态已经逐步建立起来,包括芯片、操作系统、数据库等,这些在华为IT体系内部是高度耦合的。

3、从计算场景来看,数据库也有其使用的计算场景。我们通过Oracle数据库、AWS数据库,包括一些新兴的数据库公司,从他们产品的和客户使用来看,IT发展的不同阶段,在不同的计算场景、不同的数据类型环境下,对数据库的要求是不同的。从而带来一个问题,数据库是否也有其生命周期?当无论答案是或否,但其内在本质是,需要数据库产品不断根据外界变化,而进行更新升级,甚至自我革新。Oracle的数据库诠释了PC时代的霸主地位,AWS数据库演绎了互联网云时代的新兴角色,华为的Gauss数据库是否能在未来计算环境的变化中迎来新的产业地位?

4、产品的优化和升级是一条漫漫长路。这也是软件产品的一个特点,所有我们感觉好用的软件产品都不是短期开发出来的,而是靠时间堆出来的,都是经过无数客户的实用反馈,反复修改bug,优化到大部分用户都满意的水平。对于数据库产品更是如此,Oracle的数据库之所以好用在于其在产品迭代中,不断收到客户的使用反馈,不断地对产品进行相应的修改和更新,这一过程进行了41年。对于华为Gauss数据库产品也是如此,不过我们现在已经看到,Gauss数据库已经在跟银行大客户合作,这对于华为而言,是其数据库快速发展的一个重要因素。

出处:墨天轮(https://www.modb.pro/db/6597,复制到网页中打开或者点击“阅读原文”)

本文分享自微信公众号 - 数据和云(OraNews)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WriteOnRead

MySQL笔记-基本架构

本文以及接下来的几篇 MySQL 笔记是本人在「极客时间」的专栏『MySQL实战45讲』和掘金小册「MySQL 是怎样运行的:从根儿上理解 MySQL」的学习笔...

7030
来自专栏IT那个小笔记

Hibernate配置

Hibernate核心配置文件传递的是连接数据库的必备信息,还有一些可选配置,所以在一个使用Hibernate的工程中需要去完成一个这样的配置文件

21610
来自专栏浪人聊编程

mysql事务

ANSI/ISO SQL标准定义了4中事务隔离级别:未提交读(read uncommitted),提交读(read committed),重复读(repeata...

13110
来自专栏程序通事

SPI 机制-插件化扩展功能

SPI(Service Provider Interfaces),中文直译服务提供者接口,一种服务发现机制。可能很多人都不太熟悉这个机制,但是平常或多或少都用到...

6810
来自专栏IT那个小笔记

hibernate基本使用

hibernate框架应用在web三层架构的DAO层,是对JDBC的一种轻量级的封装,对javaBeans和数据库表进行映射,就不用再自己编写sql语句去获取对...

18530
来自专栏java思维导图

五分钟搞清楚MySQL事务隔离级别

好久没碰数据库了,只是想起自己当时在搞数据库的时候在事务隔离级别这块老是卡,似懂非懂的。现在想把这块整理出来,尽量用最简洁的语言描述出来,供新人参考。

8820
来自专栏小詹同学

15个相见恨晚的 Linux 神器,你可能一个都没见过

mycli:mysql客户端,支持语法高亮和命令补全,效果类似ipython,可以替代mysql命令。

7110
来自专栏后端开发你必须学会的干货

一文搞定MySQL性能调优

数据库的操作越来越成为整个应用的性能瓶颈,这对于Web应用尤其明显。关于数据库的性能,这并不只是DBA需要关心的,而更是后端开发需要去关注的事情。

15540
来自专栏纯洁的微笑

数据库的这些性能优化,你做了吗?

在互联网项目中,当业务规模越来越大,数据也越来越多,随之而来的就是数据库压力会越来越大。

7120
来自专栏「3306 Pai」社区

InnoDB表聚集索引层高什么时候发生变化

有个选项 innodb_fill_factor 用于定义InnoDB page的填充率,默认值是100,但其实最高只能填充约15KB的数据,因为InnoDB会预...

7820

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励