摘要: GaussDB(for MySQL)通过ND算子下推解决存储节点和计算节点之间的传输速度,减少网络开销这个难题。

数据库作为高效稳定处理海量数据交易/分析的坚强数据底座,底层架构设计的重要性不言而喻。

以当前主流的存算分离架构为例,如何提高存储节点和计算节点之间的传输速度,减少网络开销非常关键,GaussDB(for MySQL)就是通过ND算子下推解决了这个难题。

举个例子,当计算和存储分离之后,数据还得从存储节点跨网络到计算节点,计算节点处理完之后再写回存储节点,来来回回好几次,效率很低。

为了提高性能,我们把计算节点的数据处理挪到存储节点。比如有一万个page,a=1的结果只有一两个,发给存储只要一次IO就能完成计算结果,提升整体的查询性能。

除了算子下推之外,GaussDB(for MySQL)还有许多隐藏的黑科技,本篇文章,将从存储层面谈谈华为云自研数据库的技术优势。

华为存储实力加持数据库

华为的存储实力不可小觑,其在数据存储领域的布局已达18年,存储专利超过800件,并在中国区连续16个季度保持市场份额和发货量第一。根据市场机构Gartner发布的2019Q4数据显示,华为存储收入全球排名第四,中国市场连续多年排名第一。在全闪存收入方面,华为存储增长排名第一。

简而言之,在自研数据库方面,华为云相较于其他云厂商,最大的技术优势之一便是多年研发技术积累的存储能力。

毕竟地基稳了,才能造出更好的房子。

而且华为GaussDB数据库全面支持包含鲲鹏和x86在内的多样化算力,且具备从芯片到服务器、存储、操作系统、数据库的E2E研发能力,所以在数据库软硬性能调优方面也占有得天独厚的优势。

也正是得益于领先的存储硬件,华为云自研数据库可以实现算子下推近计算,使得软硬协同性能调优相比友商高出30%,这也是华为全栈软硬件的优势体现,对比之下,其他云数据库大多选择是非自研的存储硬件。

目前,华为已经研发了下一代存储软件架构DFV(数据功能虚拟化/Data Function Virtualisation)。该DFV架构于2018年部署在华为公有云中,开始提供对象服务,之后自研的数据库产品GaussDB系列也用上了DFV存储架构。

DFV的性能亮点很多,比如单个资源池中具备数千个节点,提供EB级别的容量,一个bucket可以保存100亿个对象等等;同时,它可以部署在公有云和私有云上,提供云上云下的统一体验,为GaussDB带来了很多存储上的优势。

GaussDB(for MySQL)架构设计原则

在进入正题之前,先看看GaussDB(for MySQL)架构设计原则:

1.采用华为下一代云存储(DFV)作为快速,可扩展,可靠和共享数据库存储,不复制存储层中的已有功能,例如数据复制,跨AZ可靠性,数据清理。

2.单个数据库集群只需要一份足够可靠的数据库副本集。所有只读副本共享存储在云存储中,甚至跨AZ,数据库中没有逻辑复制。一写多读,没有独立的备用实例。主节点发生故障转移时,只读副本可以切换到接管主服务器。

3.只有数据库日志是通过网络从数据库计算机节点写入 DFV 存储层,基于DFV存储层内的数据库日志重建数据面,以避免繁重的网络流量。

4.基于跨DFV存储节点的切片策略对数据库进行分区,以支持大型数据库卷。单个 DFV 存储节点管理来自不同数据库集群实例的多个分片,实现存储容量和处理能力的无限扩展。

GaussDB(for MySQL)如何在存储架构设计上做到高可靠、高可用

如图所示,GaussDB(for MySQL)自上向下分为3大部分:SQL节点、存储抽象层SAL(Storage Abstract Layer)以及存储层(storage Nodes)。

首先,SQL节点形成一个集群,包括一个主节点和多个只读副本(RO最多15个)。每个集群属于一个云租户,一个租户可以具有多个集群。SQL节点管理客户端连接,解析SQL请求,生成查询执行计划,执行查询以及管理事务隔离。

其次是 SAL(存储抽象层),它是SQL节点和存储层之间的桥接器。如下图所示,SAL包括两个主要组件,SAL SQL模块和DFV存储节点内部的Slice存储。

SAL SQL模块为SQL节点(主/只读副本)提供了SAL API,用以与底层存储系统进行交互。 SAL SQL模块包含通用日志处理器CLP(Common Log Processor)、数据库分片管理器SM(Slice Manager)、页面读取器PR(Page Reader)以及与只读副本节点同步信息的工具程序。

其中,CLP负责将数据库全局重做日志持久到DFV,解析日志并将其分发到相应的DFV分片,并生成同步消息(脏页、活动事务列表、分片持久LSN等)以供只读副本获取。CLP还需要处理数据库崩溃恢复,重新加载已提交的全局重做日志,并将其重新分配给所有相应的分片。

SM维护分片策略以及页面映射信息,确定何时添加更多的分片以及哪些数据库页面应分配给哪个DFV切片等。

页面读取器负责通过查找页面映射信息,将特定的页面读取请求路由到相应的切片管理器。

另外,SAL SQL模块还为SQL节点与存储系统交互提供了其他一些接口,包括定期将日志清除信息(RecycleLSN)传递到数据库片等。

Slice Store是在DFV存储节点内部运行的插件模块,它需要与DFV存储框架一起使用,用以在相同DFV节点上管理多个数据库片,支持多租户资源共享,并将页面的多个版本提供给SQL节点。

对于每个分片,Slice Store使用日志目录作为中心组件来管理重做日志和页面数据。Slice Store的主要职责是:

1)、接收分片重做日志,将其持久化并注册到日志目录中;

2)、接收页面阅读请求并构建特定版本的页面;

3)、垃圾回收和合并日志。

最后,GaussDB(for MySQL)存储层建立在华为云存储DFV持久层之上,DFV持久层为上层SQL节点存储提供读写接口,提供跨地域3AZs之间的数据强一致性和可靠性保证。

GaussDB(for MySQL)使用两种模式实现write-optimized以及read-optimized,分别是Plog模式与iShard模式。Plog模式提供强一致性保证,而iShard模式实现最终的一致性。

其中,SQL节点使用Plog模式存储整个数据库的WAL重做日志,使用iShard模式对数据在多个存储节点之间进行分片和管理。Plog以SSD友好的追加写方式使事务提交更快。

iShard将redo以页面为单位进行聚合,管理数据分片,实现快速数据读取,并支持超大型数据库(128 TB)。存储层支持多个GaussDB(for MySQL)集群实例,单个存储节点支持多租户数据库分片。部署灵活,可以将Plog和iShard部署在单独的存储池中或共享同一存储池。

在这种体系架构下,整个数据库集群只需一份足够可靠的数据库副本集,极大节约成本。同时,所有只读副本共享云存储中的数据,去除数据库层的复制逻辑。一写多读,没有独立的备用实例,当主节点发生故障,集群进行切换操作时,只读副本可以切换为主节点,接管集群服务。

而且由于只有数据库日志通过网络从数据库计算节点写入 DFV 存储层,没有脏页、逻辑日志和双写的流量,节省了网络资源。

最后

GaussDB(for MySQL)采用的新一代分布式存储系统DFV,节省了资源,极大提升了数据备份、恢复性能。

它将特定计算任务(备份与恢复逻辑)下推到DFV,以便更高效,快速地实现备份、恢复,而上层计算节点专注于业务逻辑处理。在这种模式之下,客户可以通过本地访问数据并直接与第三方存储系统交互,达到高并发、高性能。

另外,GaussDB(for MySQL)的共享存储架构将数据持久化放入新一代存储DFV中,充分保障数据强一致性和0丢失;针对硬件定制上层系统,利用RDMA 网络、NVME SSD等硬件优势,在这些关键技术上整合创新,使得华为云自研数据库的性能有了质的飞跃。

One more thing

华为云在今年的全联接大会也正式发布了GaussDB(for MySQL)的分布式版,采用share nothing架构,融合华为自研分布式SQL引擎和企业级分布式存储DFV双重优势,业务请求通过负载均衡层转发到分布式SQL引擎层,分布式SQL引擎相关的模块对SQL进行解析、分解、路由到各个分片,最后各个分片返回相应结果汇聚返回给用户端。

通过分库分表,GaussDB(for MySQL)分布式版最高支持PB级海量存储,同时通过内部环境测试,纯写TPS可达百万级,QPS可达千万级,整体性能可随分片数的扩展而成线性提升,可满足几乎所有大型企业集团的核心数据库的要求。

目前,华为云GaussDB已在500+大客户中规模商用,遍布金融、政府、电信、能源、交通、物流、电商等行业。在新基建大潮下,华为云数据库会继续以开源开放的姿态,赋能企业,推动国内的数据库生态发展。

号外!!!华为云官方开发者推广招募计划正在火热进行中,点击立即了解详情

点击关注,第一时间了解华为云新鲜技术~

GaussDB(for MySQL)如何在存储架构设计上做到高可靠、高可用相关推荐

  1. 4918字,详解商品系统的存储架构设计

    导读:本文将探讨如何设计一个快速.可靠的商品系统存储架构. 作者:李玥 来源:大数据DT(ID:hzdashuju) 电商的商品系统所包含的主要功能就是增.删.改.查商品信息,业务逻辑比较简单,支撑的 ...

  2. 基于 MySQL + Tablestore 分层存储架构的大规模订单系统实践-架构篇

    简介: 本文简要介绍了基于 MySQL 结合 Tablestore 的大规模订单系统方案.这种方案支持大数据存储.高性能数据检索.SQL搜索.实时与全量数据分析,且部署简单.运维成本低. 作者 | 弘 ...

  3. 海量时序数据低成本存储架构设计

    导读 近些年来得益于传感器技术.无线网络技术.云计算和人工智能技术的发展,物联网的基础设施日益完善,并应用到了新能源.智能家居.车联网.智慧工业等众多领域中,实现了"人与物".&q ...

  4. 推理芯片的性能建立在优化的存储子系统设计上

    推理芯片的性能建立在优化的存储子系统设计上 Inference chip performance builds on optimized memory subsystem design 好的推断芯片可 ...

  5. 系统架构设计上需要注意的

    系统架构设计上需要注意的 快速阅读 如何保证系统的防重放和不可抵赖性. socket 长连接和短连接,tuxedo和webloigc的平台架构以及这两者之间如何进行通讯.nh结尾的文献资料用什么打开. ...

  6. mysqlbinlog查看日志_一个分布式 MySQL Binlog 存储系统的架构设计

    1. kingbus简介 1.1 kingbus是什么? kingbus是一个基于raft强一致协议实现的分布式MySQL binlog 存储系统.它能够充当一个MySQL Slave从真正的Mast ...

  7. MySQL开源数据传输中间件架构设计实践

    本文根据洪斌10月27日在「3306π」技术 Meetup - 武汉站现场演讲内容整理而成. 主要内容: 本次分享将介绍目前数据迁移.数据同步.数据消费,多IDC架构中数据复制技术所面临问题及现有的产 ...

  8. 快手春节红包背后,高并发存储架构设计

    导语 | 2020年春节,腾讯云文件存储(CFS)在通过了预演层层压测的选拔后成为快手广告推荐业务的护旗手,以100%的可用性护航了快手春节红包活动.本文是腾讯云高级工程师陈宏亮在「云加社区沙龙onl ...

  9. 京东App秒级百G日志传输存储架构设计与实战

    本文作者:平台业务研发部-武伟峰,数据与智能部-李阳 背景 在日常工作中,我们通常需要存储一些日志,譬如用户请求的出入参.系统运行时打印的一些info.error之类的日志,从而对系统在运行时出现的问 ...

最新文章

  1. 安全框架 - Shiro与springMVC整合的注解以及JSP标签
  2. python模块-random
  3. 怎么重置blockinput的锁_AppleID被锁如何解决 AppleID被锁激活方法介绍【图文】
  4. 25 abstract 抽象
  5. 常用内存数据库介绍(一)
  6. PS人像修图技巧——高低频磨皮
  7. 数据库实体关系图(ERD)
  8. 零基础应如何学习UI设计
  9. 柬埔寨吴哥旅游:并不仅仅是神秘
  10. Mac使用数据线连接安卓手机传输文件
  11. vue中实现生成海报图片html2canvas详细教程
  12. Java——(1)定义一个学生类Student,包含属性:姓名(String name)、年龄(int age) (2)定义Map集合,用Student对象作为key
  13. 一场奶香味的定增:让资本助力“奶生态”
  14. 计算机木材染色 配色技术的应用技术,人工林木材颜色怎么调配?木材电脑配色技术...
  15. [Other T]我Web上的咚咚~
  16. 【毕业设计源码】Python学生兼职平台系统
  17. 【前端三剑客】JavaScript 网页脚本语言(AJAX)
  18. (坑)DTOJ#5045. 战争
  19. Real-ESRGAN超分辨网络
  20. 鸣鸿刀模厂家告诉你怎么去选择合适的刀模

热门文章

  1. js+css实现验证码框,前端实现6位验证码输入框效果
  2. CAN笔记(8) 优先级
  3. php webview referer,WebView构造中间页自由设置Referrer
  4. vue、nuxt性能优化
  5. python 机器学习第一章
  6. Java - 安装jdk并设置环境变量
  7. 20155216 Exp6 信息搜集与漏洞扫描
  8. 使用 CodeIgniter 框架快速开发 PHP 应用(一)
  9. [Apache]安装中出现的问题
  10. p内的a截取字符串,会将a与p的其他内容撑开(IE6、IE7)