猿创征文|从单机百万tpmc到分布式千万tpmc,gaussdb性能提升的3个关键技术剖析

炒香菇的书呆子 炒香菇的书呆子     2022-12-03     458

关键词:

文章目录

1 华为云数据库服务全景图

1.1 华为云数据库服务

华为云数据库服务分为自研数据库服务和云托管两个主要服务类型

1.2 关系型数据库和非关系型数据库

在关系型数据库中,我们有华为的自研数据库GaussDB,其目前可以支持多种不同的生态

  1. 支持mysql等主流数据库的接口和语法
  2. 支持数仓场景
  3. 支持TP和AP

在非关系型数据库中,我们有两大平台,一个是华为的自研数据库GaussDB,针对当前的市场上主流应用场景(文档型,宽表型,缓存型,实质型)都可以支持,并且和主流数据库接口兼容。

一个是MongoDB等数据库在云上也有托管,华为云提供了很多应用工具助力开发者

  1. 数据库迁移
  2. 数据迁移
  3. 数据库运维(面向不同人员)
  4. 数据中介服务

2 华为自研数据库关键技术

2.1 GAUSSDB(for openGauss)企业级分布式数据库

定位为企业级分布式云数据库,架构上着重构筑传统数据库的企业级能力和互联网分布式数据库的高扩展和高可用能力

GAUSSDB(for openGauss)架构图

GAUSSDB(for openGauss)面向企业核心应用场景,对标一流数据库打造。

2.1.1 GAUSSDB(for openGauss)遇到的问题

2.1.1.1 内存访问不对称问题

在传统的服务器结构中,我们有CPU,内存等,CPU的速度比内存快很多,需要北桥去对接CPU和内存,从而降低时延

这种情况下,数据库无需关注硬件的连接。

但是随着CPU的速度增加,内存越来越多,北桥的作用越来越小,逐渐被淘汰。

当前当前主机不同的CPU通过高速总线连接在一起,CPU也可以直接连接内存。

这时我们就需要数据库来考虑硬件架构。

2.1.1.2 缓存一致性问题

CPU和内存之间的速率不一样,为了解决速率问题,CPU有一级缓存,二级缓存,三级缓存等,但是当CPU数量过多时,如果数据库无法感知硬件架构,每个CPU都在同时访问

缓存时,都在加载同一个变量,CPU还要保证读写一致性,就会产生问题,这个效率会产生量级的降低

2.1.2 解决方法

2.1.2.1 GAUSSDB(for openGauss)黑科技1:NUMA-Aware极致优化

NUMA-Aware技术原理上感知CPU等硬件架构的不对称问题

实现方法:

  1. 把存在数据库的数据进行分区处理,尽可能降低CPU之间的冲突问题,提高并行能力,并提供CPU的整体利用率
  2. 数据库中全局变量有具体单CPU负责处理读操作,其它CPU进行写操作,减少数据访问冲突

2.1.2.2 GAUSSDB(for openGauss)黑科技2:GTM-Lite分布式拓展技术

分布式强一致,分布式的GTM-Lite方案提供全局事务提交号管理,实现强一致性,且无中心节点性能瓶颈

实现方法:

  • CSN时间戳和事务号TXID解耦;
  • GTM-Lite仅仅管理全局时间戳;
  • 本地时间戳和全局时间戳两维度管理;
  • 仅在事务提交时推进全局时间戳;
  • 仅在涉及跨Shard访问时才访问全局时间践,否则使用本地时间戳;
  • GTM-Lite异步同步,降低GTM-Lite访问时延;

使用全局时间时,需要经过网络多跳,会增加时延。解决方法是协调结点进行同步

2.1.2.3 GAUSSDB(for openGauss)黑科技3:分布式优化器提供极致的分布式扩展能力

想要利用好系统的资源

  1. 提高并行执行能力

    充分利用当前多核特点,通过多线程并发执行,提高系统吞吐量

  2. 优化器生成运行规则,通过向量执行,提高执行效率

  3. 编译执行提高CPU指令的利用率

    从解释执行向编译执行转变,答复降低算子的指令数量,提高运算效率

  • AI加持驱动数据库自优化,自诊断

结合深度强化学习与全局优化算法,针对不同类别的参数进行细粒度调优

  1. 调优时间:由天降至分钟级
  2. 索引推荐:基于用户的单条语句或批量负载,推荐最优索引

持续采集数据库运行数据,基于时序预测和异常检测等算法实现智能监测

  1. 故障预警:预测资源、性能变化趋势,故障异常智能检测

2.1.3 GAUSSDB(for openGauss)实现效果

优化效果非常不错

2.1.4 GAUSSDB(for openGauss)应用场景举例

华为云GaussDB支撑工行核心业务系统国产化分布式改造

2.2 面向互联网的云原生数据库架构解析

2.2.1开源Mysql的挑战

  1. 主备切换RTO时间较长
  2. 重建实例耗时过长
  3. 备机只读数据新鲜度低
  4. 计算与存储不解耦,利用率低
  5. 网络资源利用率
  6. 备机数量有限(影响主机性能、组网复杂)

2.2.2 解决方案

2.2.2.1 黑科技1:LOG IS DATABASE,存算分离的云原生数据

2.2.2.2黑科技2:Near Data Process+并行,提供极致性能

NDP

算子下推支持:投影,谓词,聚合算子,MVCC可见性判断。在存储节点对页面进行判断处理,极大精简返回页面大小,缩减网络IO。count(*)查询缩减IO吞吐达到40-80倍

高度并行(三层并行)

第一层:计算节点多worker并行查询
第二层:由原有一个一个页面串行读,变成批量读多个页面,Page分布在不同slice上,多slice上并行读取
第三层:单个存储节点上,多个NDP处理线程并行处理Page,运算下推算子逻辑。

2.2.2.3黑科技3:极致备份恢复

数据库专用分布式存储系统,极致的数据备份恢复性能

整体故障恢复时间比较

2.2.3GaussDB和开源数据库相比优势

2.2.4应用举例

永安保险成功从某主流商业数据库搬迁至GaussDB(for MySQL)

2.3 华为云GaussDB(for Influx)亿级时间线技术解密

2.3.1 时序数据模型及主要应用场景

时序数据模型应用最多的两个领域是Iot和监控

2.3.2 公有云SRE趋势

2.3.2.1 公有云SRE趋势1:爆炸式增长的时序数据

以CloudMonitorCenter为例,时序数据库支持了两种业务场景的监控原始数据采集与存储

  • 系统指标:主要监控CPu、Disk、网卡、负载、TCP、NTP、Ping等。
  • 自定义指标:包含容器监控指标、数据库指标、进程指标、中间件指标、日志指标、业务指标等,不同指标类型的指标名称、数据标签、数据类型各不相同.

2.3.2.2 公有云SRE趋势2:时序数据的价值越来越高

2.3.3云上运维监控系统面临的挑战

2.3.3.1 架构现状

2.3.3.2数据膨胀+业务复杂化+业务变化快

华为云业务快速增长过程中的挑战:

  1. 业务类型多,变化快,分析诉求难于得到快速满足
  2. 数据规模大,增长速度快数据处理实效要求高
  3. 不同业务关联度高,故障根因分析困难

2.3.3.3多模NoSQL服务GaussDB NoSQL

GaussDB NoSQL是基于华为最新一代DFV计算存储分离架构打造的Active-Active全分布式架构多模NoSQL数据库服务,高度兼容MongoDB、Cassandra、Redis、InfluxDB四款主流NoSQL接口,支持跨3AZ高可用集群,相比社区版具有分钟级计算扩容、秒级存储扩容、数据强一致、超低时延、高速备份恢复的优势。适用于loT、气象、互联网、游戏等领域。

GaussDB(for Influx) : 一站式时序数据存储、分析及洞察平台

2.3.4 云原生时序数据库GaussDB(for Influx)架构

分布式+存储计算分离+高可用

2.3.5GaussDB(for Influx)亿级时间线技术解密

时序数据90%的热点在近期数据,保障海量数据存储的同时提供极致性能

两级分区策略

  • 时间分区:数据按时间段分区,分区时长可配置,可根据需求定义全内存、全热存储或者全冷存储数据库。
    时间线分区:根据shard key作Range/Hash分区。
  • 可根据需求在新的时间分区切换分区策略
    (hash/range)

数据分级

  • 数据按照时间段分级·热数据在内存
  • 温数据在SSD·冷数据放HDD

专用存储引擎

写性能加速

  • 批流结合预聚合数据
  • 异步日志
  • 行列混合内存布同,减小数据转换开销

时序文件布局

  • 面向时序数据专用布局
  • 列式存储,多级索引
  • 多版本平滑升级

多级压缩算法

  • 时间相似性压缩算法
  • 时间差量压缩

多模索引

  • 维度索引:倒排索引定位数据源
  • 时间线索引∶海量时间线kv索引

查询加速

  • 增加立件级BRIN索引,减小聚合计算,加速Scan
  • 多级cache,加速聚合查询
  • 优化器代价评估,作大查询控制,选择二级索引or扫描

自适应压缩算法

根据Timestamp以及field data不同数据类型以及数据变化趋势,采用不同的数值变换算法,再根据变换后的数据分布设计自适应数值压缩算法,最后结合高性能的字典编码方法实现时序数据的高效自适应压缩。同时针对TSM文件内的时间羸进行相似性压缩,进一步降低时序数据存储成本。

高性能多维聚合查

大数据量聚合查询性能是开源的2~5倍;支持多维条件组合查询;
技术方案

  • MPP架构,一条查询语句在多节点及多核并发执行;
  • 向量化查询引擎,每次迭代批量返回数据,大数据星下查询性能更好;
  • 增量聚合引擎基于滑动窗口的聚合查询,大部分从聚合结果缓存直接命中返回,仅而要聚合增量数据部分即可;
  • 支持多维倒排索引,支持多维条件组合查询,避免大量Scan数据;
  • 支持存储摘要索引,能够更快的过滤无关数据;

存储分析告截

3. 总结

针对目前上市场上的开源数据库非常多,且使用广泛。不少开源数据库在易用性、配套能力等方面较弱,需要不断维护,而且一旦遇到数据丢失问题,很难快速恢复,造成的损失不可估量。也因此,开源数据库上云只能解决中小企业的简化部署、运维、调优、极致性价比等诉求。

华为云GaussDB(for Influx)凭借多模NoSQL服务GaussDB NoSQL和分布式+存储计算分离+高可用架构从而在Iot和监控方面相比传统数据库产品优势提升明显。

在支撑传统业务的基础上,GaussDB持续构建竞争力特性,为企业面向5G时代的挑战,提供了无限可能。

从单机百万tpmc到分布式千万tpmc,gaussdb性能提升的3个关键技术剖析

...据库2华为自研数据库关键技术2.1GAUSSDB(foropenGauss)企业级分布式数据库2.1.1GAUSSDB(foropenGauss)遇到的问题2.1.1.1内存访问不对称问题2.1.1.2缓存一致性问题2.1.2解决方法2.1.2.1GAUSSDB(foropenGauss)黑科技1:NUMA-Awa 查看详情

从单机百万tpmc到分布式千万tpmc,gaussdb性能提升的3个关键技术剖析

...据库2华为自研数据库关键技术2.1GAUSSDB(foropenGauss)企业级分布式数据库2.1.1GAUSSDB(foropenGauss)遇到的问题2.1.1.1内存访问不对称问题2.1.1.2缓存一致性问题2.1.2解决方法2.1.2.1GAUSSDB(foropenGauss)黑科技1:NUMA-Aware极致优化2.1.2.2GAUSSDB(forope... 查看详情

猿创征文|破世界纪录的国产数据库-oceanbase

...专栏而异,均自成体系,不足之处请大家指正。猿创征文|破世界纪录的国产数据库-OceanBase本文关键字:VLDB、国产、数据库、OceanBase、金融文章目录猿创征文|破世界纪录的国产数据库-OceanBase一、7.07亿tpmC1.T... 查看详情

猿创征文|分布式国产数据库tidb从入门到实战(代码片段)

写在前面本文讲解的是目前欢迎程度最高分布式国产数据库TiDB,详细讲解了TiDB的由来、架构、SQL基本操作、SpringBoot整合TiDB等内容。目录写在前面一、概述二、与MySQL兼容性对比三、安装使用四、SQL基本操作4.1、库操作4.2、... 查看详情

猿创征文|国产数据库之opengauss的单机主备部署及快速入门(代码片段)

猿创征文|国产数据库之openGauss的单机主备部署及快速入门一、openGauss介绍1.openGauss简介2.openGauss特点3.openGauss的逻辑架构图二、环境检查1.节点规划2.操作系统版本三、安装前环境配置1.检查admin普通用户2.给安装目录授权3.配置/etc/... 查看详情

猿创征文|从酒店前台收银到软件研发教学主管到技术经理之路~(代码片段)

大家好,我是雄雄。内容先知👉前言☝酒店收银🤨项目组长🤜OA管理系统🤜酒店管理系统👨‍🏫软件研发讲师📌学术主管👨‍💻技术经理👉项目情况😂😂奇葩问题情况... 查看详情

猿创征文|国产数据库tidb架构特性(代码片段)

前言TiDB是PingCAP公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理(HybridTransactionalandAnalyticalProcessing,HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、... 查看详情

猿创征文|opengauss数据库从3.0.0升级到3.1.0操作实践(代码片段)

国产数据库openGauss9.30日新出了3.1.0版本,想必有些小伙伴已经迫不及待想尝试了吧。之前基于3.0.0版本进行了一些实践,本篇就详细介绍如何将openGauss数据库从3.0.0升级到3.1.0。目录升级流程升级前准备升级操作升级验证... 查看详情

猿创征文|国产数据库实战使用docker部署polardb-x云原生分布式开源数据库(代码片段)

...创征文|【国产数据库实战】使用docker部署PolarDB-X云原生分布式开源数据库一、PolarDB-X介绍1.PolarDB-X简介2.PolarDB-X特点二、检查docker版本三、检查docker配置信息四、下载PolarDB-X镜像五、部署PolarDB-X1.创建PolarDB-X容器2.检查PolarDB-X容器... 查看详情

猿创征文|tidb架构分析&读写性能测试

TiDB是由PingCAP公司开发的一个开源的分布式HTAP(HybridTransactionalandAnalyticalProcessing)数据库,基于GoogleSpanner和Percolator的设计思想,采用存储与计算分离架构,将整个系统划分为TiDB、PD、TiKV、TiFlash四个组件,各组件之... 查看详情

猿创征文|tidb架构分析&读写性能测试

TiDB是由PingCAP公司开发的一个开源的分布式HTAP(HybridTransactionalandAnalyticalProcessing)数据库,基于GoogleSpanner和Percolator的设计思想,采用存储与计算分离架构,将整个系统划分为TiDB、PD、TiKV、TiFlash四个组件,各组件之... 查看详情

猿创征文|zookeeper(伪)集群搭建

前言:zookeeper作为一款分布式协调中间件,其重要性不言而喻,因此需要保证其高可用性。所以一般都会搭建zookeeper集群,今天叶秋带领大家在一台服务器上搭建伪集群。 目录1、搭建要求2、准备工作3、配置集... 查看详情

猿创征文|promethues入门,看懂不会写(代码片段)

1、Promethues架构官方网站:Grafana|Prometheus1)Prometheusserver可定期从活跃的(up)目标主机上(target)拉取监控指标数据,目标主机的监控数据可通过配置静态job或者服务发现的方式被prometheusserver采集到&#x... 查看详情

猿创征文|promethues入门,看懂不会写(代码片段)

1、Promethues架构官方网站:Grafana|Prometheus1)Prometheusserver可定期从活跃的(up)目标主机上(target)拉取监控指标数据,目标主机的监控数据可通过配置静态job或者服务发现的方式被prometheusserver采集到&#x... 查看详情

猿创征文|java下载文件到本地目录(弹框选择)(代码片段)

需求提供一个接口,前端通过按钮下载文件,根据不同的id下载对应的文件编写接口相关代码controller/***下载文件**@paramsignId*/@GetMapping("/downloadFile")@ApiOperationSupport(order=5)@ApiOperation(value="下载文档", 查看详情

猿创征文|浅谈区块链-区块链是什么?

...本概念什么是区块链?区块链本质是一个去中心化的分布式账本, 查看详情

猿创征文|浅谈区块链-区块链是什么?

...本概念什么是区块链?区块链本质是一个去中心化的分布式账本, 查看详情

猿创征文|gaussdb(foropengauss):基于gaussdb迁移智能管理构建应用解决方案

...f09;?2.1、GaussDB应用场景2.2、GaussDB核心优势2.3、GaussDB分布式核心架构三、GaussDB提供金融级高可用3.1、Gauss 查看详情