GaussDB是华为公司数据库产品品牌名。华为公司从开始自研数据库至今已经有近20年历史,其中经历了早期发展、GaussDB的诞生和发展、数据库产业化三个阶段。本文简明介绍华为公司自研数据库的历程,并给出一些GaussDB的里程碑时间点。GaussDB的发展历史是中国数据库发展历程的典型案例。GaussDB以云服务形式提供商业版本,并已在2020年中期推出开源数据库产品openGauss(社区网址为https://opengauss.org )。

一、GaussDB发展历史

本节首先概要介绍华为自研数据库的早期发展历史及GaussDB的诞生和发展,然后介绍华为高斯数据库三个系列产品: GMDB内存数据库、GaussDB 100 OLTP数据库和GaussDB 200 OLAP数据库的发展历史。

1. 概述

华为公司研究数据库是从满足生产实践出发,从研发用于满足局限场景的较简单架构数据库产品开始,逐步向通用性、可规模商用的数据库产品演进,到2019年终于正式发布面向企业客户场景的通用分布式数据库产品,其发展历史如下图所示。

图 GaussDB发展历程图

1.1 华为自研数据库的早期发展阶段

华为公司研究和开发数据库技术及产品,最早可追溯到2001年。当时,华为公司中央研究院Dopra团队为了支撑华为所生产的电信产品(交换机、路由器等),启动了内存数据存储组件DopraDB的研发,从此开启了华为自研数据库的历程。DopraDB后来随着业务和组织的切换,成为华为高斯数据库团队的GMDB V1系列产品。

2005年,华为的通信产品需要一个以内存处理为中心的数据库,评估了当时最高性能的内存数据库软件,发现其性能和特性无法满足业务诉求,便启动了SMDB(Simple Memory DataBase)的开发。

2008年,华为核心网产品线需要在产品中使用一款轻量级、小型化的磁盘数据库,于是华为基于PostgreSQL 开源数据库开发ProtonDB,这是华为与开源数据PostgreSQL数据库的第一次亲密接触。

1.2 GaussDB的诞生和发展阶段

2011年“数字洪水”即将到来,华为铸造“方舟”应对,组建了2012实验室。华为公司认为在数字洪水时代,ICT(Information and Communications Technology,信息和通信技术)软件技术栈中数据库是不可缺少的关键技术,因此将原来分散在各个产品线的数据库团队及业务重新组合,在2012实验室中央软件院下成立了高斯部,负责华为公司数据库产品和技术的研发。高斯部得名于纪念大数学家高斯(Gauss)。

高斯部的数据库产品研发历史按照场景和产品特点可分为三个系列。

  • GMDB(内存数据库);
  • GaussDB 100 OLTP数据库;
  • GaussDB 200 OLAP数据库。

1.3 数据库产业化阶段

随着华为在2019年对业界正式发布高斯数据库,华为自研数据库进入了第三阶段,即数据库产业化阶段。华为高斯数据库后续的规划主要围绕如下方面展开。

1) 数据库生态

作为一款通用性、规模商用的数据库产品,生态是重中之重,华为将围绕两个方向来解决数据库生态问题。

  • 技术上采取“云化+自动化”方案。通过数据库运行基础设施的云化将DBA(数据库管理员)和运维人员的日常工作自动化,解决如补丁、升级、故障检测及修复等工作带来的开销。传统数据库随着业务负载变化越跑越慢的问题,依赖DBA 监控和优化来解决。而通过在数据库内部引入AI算法,实现免DBA自动数据优化,将进一步降低对人工的依赖。
  • 商业上开展与数据库周边生态伙伴的对接与认证,解决开发者/DBA 数据难获取、应用难对接等生态难题,减少企业客户使用华为高斯数据库面临的后顾之忧。
    数据库产业生态全景如下图所示。

图 数据库产业生态全景

2) 技术竞争力

数据库作为“软件皇冠上的明珠”,其技术含量十分高,因此要想在市场上击败竞争对手,必须持之以恒地在关键技术上进行大规模投资。华为高斯数据库将在如下方向构筑竞争力。

  • 分布式。构筑世界领先的分布式事务能力和跨DC(Data Center,数据中心)高可用能力,解决传统关系数据库的扩展性、可用性不足等瓶颈。
  • 云化架构。未来10年云数据库将成为市场主流,华为高斯数据库需要构筑满足公有云、私有云和混合云场景的云化架构,满足各种企业场景的云数据库诉求。
  • 混合负载。过去由于数据库性能不足,架构缺乏隔离性,一个数据库实例难以在满足SLA(Service Level Agreement,服务水平协议)前提下,同时支撑不同业务负载(交易型、分析型)的运行。随着硬件性能的提升和新数据架构理论的创新,在一套数据库中运行多种负载已经成为行业趋势,这不但简化了系统部署、消除了数据复制或搬迁带来的数据一致性问题,同时也提升了系统的可靠性和实时性。
  • 多模异构。传统数据库围绕关系数据进行管理,随着移动互联网、IoT(Internet of Things,物联网)、人工智能的普及应用,新类型数据(时序、图、图像等)成为接下来十年数据库系统主要的管理类型,这需要支持多模数据管理的新型数据库。通用处理器随着晶体管制程逐步走到极限,而异构加速器(FPGA/GPU/NPU等)大放异彩,在AI(人工智能)等场景大量使用,如何通过改造优化数据库架构,实现充分利用“通用处理器+异构加速器”算力优势,是高斯数据库重点发展方向之一。
  • AI+DB。2010年起随着大数据量和大计算量的普及,AI算法精度和适用范围足以支撑在特定场景(如数据库参数调优、SQL执行优化等)下解决问题; 另一方面,随着深度神经网络的普及化,对过去无法有效处理的图像、语音、文本等非结构化数据,已经能很好地从中抽取结构化信息,如何将其用在数据库中解决非结构化数据的高效管理也成为当前研究的热点。

2. GMDB内存数据库历史

2012年,华为高斯部成立后,结合电信软件公司在SMDB长期使用中面临的“开发效率低、数据一致性弱”等关键痛点,立项开发了高斯部成立后的第一款产品:GMDB V2系列。GMDB V2与GMDB V1最大差别在于,它是一款支持SQL/关系模型和ACID能力的全功能内存数据库。GMDB V2最终于2012年起在融合计费系统中成功商用,到2018年,基于GMDB V2内存数据库产品的融合计费系统所支撑的用户数超20亿。

2016年起,华为高斯部面向核心网产品线NFV(Network Function Virtualization,网络功能虚拟化)场景,启动分布式内存数据库产品GMDB V3系列的研发。2018年GMDB在NFV 首次商用,并在电信行业的NFV 场景第一个实现了灰度升级(意指不停止业务实现服务在线升级)、在线补丁升级等关键能力。

3. GaussDB 100 OLTP数据库历史

2012年起,华为高斯部启动了GaussDB 100的研究工作。GaussDB 100早期版本V1系列是基于PostgreSQL V8发展而来的,主要是面向华为公司内各产品线在操作管理类系统中所使用的OLTP类型磁盘数据库场景。该系列产品在华为公司大量商用。

随着互联网、移动互联网业务的兴起,网络数据量和业务量均呈现爆炸式增长,传统集中式数据库已经无法满足大容量、高扩展的诉求。2016年起,华为高斯部启动分布式OLTP数据库的研发工作,分布式OLTP数据库具备分布式事务强一致、高性能、高扩展、高可用等特点,可以满足金融、电信、能源等主流行业核心业务系统的要求。目前GaussDB 分布式OLTP数据库已针对金融、政府等高端客户商用上线。

4. GaussDB 200 OLAP数据库历史

2012年,华为高斯部启动了PteroDB(羽龙)项目,孵化面向企业数据仓库场景的MPP架构OLAP数据库。2014年华为公司成功击败竞争对手进入工商银行总行下一代EDW(Enterprise Data Warehouse,企业数据仓库)联合创新项目。经过工商银行2年孵化,GaussDB 200于2016年开始进入商用,逐步替换了友商数据仓库一体机产品。2019年一季度,工商银行总行最后一台友商数据仓库一体机下线、业务负载全面由GaussDB 200承载。

2019年5月15日,华为公司正式向业界宣布GaussDB品牌,揭开了GaussDB产业化的帷幕。

华为高斯部除了数据库产品的研发之外,也将部分技术研究成果发表在VLDB(International Conference on Very Large Data Bases)、SIGMOD(The ACM SpeciaInterest Group on Management of Data)、ICDE(International Conference on DataEngineering)等数据库顶级会议中。

华为高斯数据库团队在数据库领域顶级学术会议中所发表的论文(非全集)VLDB论文和SIGMOD论文如下图所示。

图 VLDB论文

图 SIGMOD论文

二、GaussDB架构概览

GaussDB采用了分层解耦、可插拔架构,能够同时支持OLTP、OLAP业务场景。

1. 数据库架构变化

数据库架构经历了几个大的变化: 单机数据库、集群数据库、云分布式数据库。GaussDB面向云分布式数据库设计,采用分层解耦、可插拔架构,一套代码,同时支持OLTP、OLAP业务场景,如下图所示。

图 数据库架构变化

2. GaussDB关键技术架构

GaussDB采用分布式关键技术架构,实现一套代码同时支持OLAP和OLTP业务场景。主要特点如下:

  • 支持SQL优化、执行、存储分层解耦架构。
  • 基于GTM(Global Transaction Management,全局事务控制器)和高精度时钟的分布式ACID强一致。
  • 支持存储技术分离,也支持本地架构。
  • 支持可插拔存储引擎架构。

GaussDB未来关键技术架构,如下图所示。

图 GaussDB未来关键技术架构

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

GaussDB架构(上)相关推荐

  1. GaussDB架构(中)

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

  2. GaussDB架构(下)

    GaussDB云数据库架构 云数据库系统的主要目的是提供数据库系统服务的基础设施,以实现对计算机资源的共享.本文所讲述的GaussDB云数据库架构设计的内容,目前处于研发阶段,对应产品尚未向客户发布. ...

  3. RISC-V架构上的Debian和Fedora现状

    RISC-V仍然是开源/Linux用户非常感兴趣的,因为它是免版税且完全开放的CPU架构.部分原因是由于缺乏经济实惠的RISC-V硬件,限制了开发人员在这种架构上的更多工作,Linux发行版支持的RI ...

  4. PaddlePaddle:在 Serverless 架构上十几行代码实现 OCR 能力

    简介:飞桨深度学习框架采用基于编程逻辑的组网范式,对于普通开发者而言更容易上手,同时支持声明式和命令式编程,兼具开发的灵活性和高性能. 飞桨 (PaddlePaddle) 以百度多年的深度学习技术研究 ...

  5. 技术分享|单元测试推广与实战-在全新的DDD架构上进行单元测试

    源宝导读:单元测试是伴随软件工程出现和发展的,怎么做大家可能各有见解.本文介绍了单元测试中的反模式,强调了可测试性的重要性,并以 DDD 架构项目的迭代进程作为示例,演示了单元测试的组织过程,展示了单 ...

  6. 深入理解分布式系统中的缓存架构(上)

    转载自   深入理解分布式系统中的缓存架构(上) 本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景. 1 缓存概述 2 缓存的分类 缓存主要分为以下四类 2.1 CDN缓存 基本 ...

  7. django 热启动_传统的Web框架如何部署在Serverless架构上(以Flask为例)

    前言 Serverless架构是一个新的概念,也可以说是一个新的架构或者技术,但是无论他有多新,都不能一下子完成现有都开发习惯到Serverless架构的过渡,让现有的工程师放弃现有的Express. ...

  8. OpenSubdiv:大规模并行CPU和GPU架构上实现高性能细分表面

    http://graphics.pixar.com/opensubdiv/overview.html OpenSubdiv是一组开源库,它们在大规模并行CPU和GPU架构上实现高性能细分表面(subd ...

  9. 分布式消息队列RocketMQ与Kafka架构上的巨大差异之1 -- 为什么RocketMQ要去除ZK依赖?...

    我们知道,在早期的RocketMQ版本中,是有依赖ZK的.而现在的版本中,是去掉了对ZK的依赖,转而使用自己开发的NameSrv. 并且这个NameSrv是无状态的,你可以随意的部署多台,其代码也非常 ...

最新文章

  1. 在CentOS 7.5上升级SQLite3过程实录
  2. 从“诺奖级”成果到“非主观造假”,时隔6年,韩春雨带着原一作,再发高分文章!...
  3. linux内核创建ubi,UBI文件系统制作和挂载
  4. [INSHack2018]Tricky-Part1
  5. 申请Let's Encrypt的证书
  6. 这年头「野路子」产品太多了
  7. python多用户登录_python 多用户登录
  8. 计算机专业方向是什么意思,计算机专业就业方向是什么
  9. 爬取雪球网的股票信息评论
  10. 个人银行账户管理系统课程设计报告
  11. 软件工程---团队作业4
  12. 【百度春招】 买帽子
  13. 分享若何利用博客做外链的心得寻味
  14. html展示base64有长度限制,网页上的base64码太长?科普base64究竟是啥
  15. 计算机总是提醒更新,电脑关机的时候总是提示系统正在更新怎么办?
  16. 移动端应该如何动态设置字体大小?
  17. 记录关于利用txt文件划分训练集、测试集与验证集
  18. jOOQ-将两个表的连接提取到相应的POJO中
  19. android 不能在子线程中更新ui的讨论和分析
  20. android:layout_margin真实含义 及 自定义复合控件 layout()执行无效的问题解决

热门文章

  1. 如何优雅地关闭SpringBoot应用程序?听我给你讲
  2. 计算一个数是2的几次幂
  3. 【2023秋招面经】深信服 前端 一面(1h)
  4. 贴片电阻电容封装尺寸对照(转)(主要为了看电阻封装尺寸与功率关系)
  5. 12种排序算法:原理、图解、动画视频演示、代码以及笔试面试题目中的应用
  6. 马里兰大计算机专业学phd博士,亚利桑那州立大学计算机CS博士PHD全奖录取
  7. sklearn 中的数据预处理函数,标准化
  8. JAVA毕业设计果蔬在线销售系统计算机源码+lw文档+系统+调试部署+数据库
  9. 理查马文价值导向选股法则
  10. Rasa 中文聊天机器人项目