首页 > 其他分享 >GaussDB技术解读系列:HTAP方向的探索与发展

GaussDB技术解读系列:HTAP方向的探索与发展

时间:2024-09-29 11:23:26浏览次数:1  
标签:新鲜度 架构 GaussDB TP 解读 AP HTAP 列存

什么是HTAP?
本篇为大家分享《GaussDB在HTAP上的探索和发展》。

首先,我们看一下TP和AP的特点。TP一般是做交易型的业务,它的数据量通常来说比较小,在GB~TB的范围内,它要求低时延、高吞吐,同时对高可用、故障恢复要求较高。AP一般用于对历史数据做分析,根据数据分析的结论为企业的商业决策提供一些支撑,因此AP对时延和吞吐的要求没有那么高,主要面对数据量大、查询偏复杂的场景。

早期数据库对TP、AP区分没有那么明显,所有业务都放在同一个数据库上。随着时间的发展,数据量越来越大,人们倾向于把TP放在数据库层面上,AP由数据仓库解决,中间通过ETL工具把TP的数据传输到AP数仓上。这种模式兴起和盛行于20世纪90年代并持续到现在,我们一直还在使用着TP、AP混合的架构。

随着CPU算力、内存容量、磁盘IO效率发生变化,一些老的软件体系结构随着新硬件、新算法的发展都在发生改变。所以在2010年左右,业内开始考虑把TP和AP同时融合到同一个数据库里,通过这种方式提升数据库处理数据的能力。

关于HTAP,目前还没有一个明确的定义,即使有一些公司或者个人给出了定义,但实际上也不是特别精确。我们总结了HTAP有两个关键特点:

一个是采用In-Memory的架构。我们可以看到,无论是老牌的数据库厂商,还是新兴的数据库厂商,都不约而同采用In-Memory的架构来实现HTAP。

另外一个是实时。我们当前的架构主要是,交易型的业务在行存的数据库上,分析型的业务在列存的数仓上,中间通过ETL工具传输数据。这个架构的问题是,它的数据新鲜度不够好,比如说先前在互联网应用方面,我们经常做一些个性化的用户推荐,在给用户推荐感兴趣的商品时,会在登录时对它进行一个用户画像,根据用户画像的结果推荐产品,这是一种实时分析的能力。另外就是防诈骗系统,需要实时的响应,实时分析这笔交易是否为诈骗交易。这种实时性的特点,对HTAP方案提出了新的要求。我们当前的HTAP架构主要应对实时AP分析的能力,实时AP对性能上有一些影响,它随着数据新鲜度,也就是实时性要求变高,数据库的性能会有一些下降。

HTAP架构模式有哪些?
我们在设计HTAP架构时要考虑更多的维度,比如说硬件、资源隔离,从这些维度考虑,HTAP的架构会多种多样,加上应对的用户场景不同,会催化出不同的HTAP架构模式。我们对当前主流的HTAP架构进行了以下分类:

  1. IN-Memory Store模式

这种模式在同一个集群内对行存引擎做了增强,用空间换时间,在内存里保存一份列存数据,我们可以把他看成是一个列存索引,这种架构下的数据新鲜度比较好,行存和列存的数据完全同步,在行存和列存中间,会有一个Delta表记录增删改操作带来的增量数据,后台有进程定期将Delta表里的数据Merge到列存引擎。但是这种架构的扩展性一般,资源的隔离性不佳,能够支撑的列存的数据量也是有限度的,因此这种架构适用于TP为主,实时AP为辅的业务模型。

  1. 主备架构模式

这种模式下主机上是行存模式,应对TP业务负载,在只读的备机上是列存模式,应对AP的业务负载,主备之间通过物理复制或逻辑复制的方式实现数据同步。这种方式的扩展性、资源隔离性都比较好,但是数据的新鲜度取决于主备之间的数据传输模式,如果采用同步复制,则主备的数据新鲜度较好,但是对主机的事务吞吐量会有所影响;如果采用异步复制模式,则主备的数据新鲜度取决于数据的延迟。

  1. IN-Memory Computing模式

这种模式将列式内存引擎和数据库对接,由数据库负责TP业务,列式内存引擎负责AP业务。由于其部署在云上,因此有很好的计算弹性,数据库和列式内存引擎之间通过逻辑复制同步数据,数据的延迟小于100ms,能够较好的兼顾数据新鲜度和性能之间的平衡。

4. 主列存+增量行存模式

通过主列存+增量行存的方式既能够较好的支撑TP业务,也能够应对AP业务,在TP/AP性能上做了一些均衡。其中增量行存可以看做是delta表,应对TP中的增删改操作,保证增删改操作的性能和TP系统基本一致,同时通过主列存引擎对AP业务进行加速,当然在做AP业务时,会同时访问增量数据和列存数据,达成数据的一致性。

我们有了这么多模式之后,可以思考两个问题。一个是到底什么样的架构才是真正的HTAP架构?我个人的观点是没有适合的定义,因为在不同的业务场景下,TP和AP的占比不一样,包括周边各种环境,各种因素都不同,每个用户的选择也会不一样。包括我们在HTAP研发过程中接触到很多用户,每个用户都提出很多要求,像Orcale这种架构更适合重TP、轻AP的场景,而HANA这种架构更多是做偏AP分析型的应用。如果我们以TP、AP业务占比做一个横轴的话,每个架构在上面都有一个独立的坐标点。

另外一个问题,我们当前这些HTAP的主流架构能不能取代以前的那种TP+ETL+AP的架构?从目前看,如果我们把HTAP定义为实时TP+实时AP,实际上是不能取代的,因为TP+ETL+AP这种架构,AP的数据量远远大于当前HTAP的主流架构所能支撑的AP数据量。

GaussDB对HTAP的思考
在GaussDB HTAP开发过程中,我们总结了以下实现HTAP架构需要关注的核心技术:

第一,透明路由。它之所以成为关键的原因是因为增加了客户的易用性,提升了HTAP产品的商用价值。这里面有两个观点,一个是如果HTAP基于行存和冗余列存这种方式,需要判断哪些数据被冗余到列存里面来,因此提供一种自动化的方法根据业务特点来选择加载列存数据,并对用户透明就非常有意义。另外,TP业务要路由到行存引擎,AP业务路由到列存引擎,目前大部分架构还需要通过Hint的方式来实现业务分流,如果借助优化器的代价系统、以及当前的AI4DB技术,能够更大程度的提供业务分流的准确性,从而对用户透明,提高系统的易用性。

第二,性能提升。我们把TP和AP融合起来比较困难的关键原因,主要是因为AP查询的复杂度比较高。如果是一个纯TP数据库,一些常规执行优化技术,比如说并行、编译执行、向量化执行,TP上虽然也有,但实际上很难有大的作为,因为TP要求的是低时延、高吞吐,这种情况下这些技术都有自己的启动代价,这些启动代价会对TP的性能产生很大的影响。在TP上,如果我们把HTAP里面的AP融入进来,这些技术就能大有可为,我们在这些技术的基础上对复杂查询进行加速,可以很好地支撑我们现在的性能,支撑我们的HTAP。

第三,数据新鲜度。我们多次讨论实时性的问题,不同的数据新鲜度最后带来的就是我们不同的架构,有In-Memory的,有主备的,也有基于增量表技术的,都会带来不同的数据新鲜度。在这种数据新鲜度下,我们怎么保证数据新鲜度高,而且性能又好。在这些方面我们需要更多的思考,来保证我们HTAP架构能够具备更多应对用户的能力。

第四,资源隔离。我们看到有的架构,比如说用户对TP性能要求比较高,要求你在引入实时AP的同时,不能影响TP的能力和性能。也有用户提出对整体的能力要求,对硬件没有什么诉求,如果有需要可以增加硬件。不同的用户有不同的要求,我们在面对这样的用户时,需要在资源隔离和数据新鲜度,以及性能的提升方面做好权衡。

GaussDB在HTAP上的创新
GaussDB在现有基础上对HTAP进行改造,并实现以下几个方面的提升:

目前,GaussDB既有基于同Server的实时的HTAP,也有基于主备技术的准实时的HTAP,同时在透明路由的加持下,能够准确的把业务分流同步分到实时的HTAP上,达成在性能、资源隔离、数据新鲜度方面有一个均衡的结果。

今天的分享就到这里了,谢谢大家,欢迎留言讨论交流~

​https://support.huaweicloud.com/intl/zh-cn/gaussdb/index.html

标签:新鲜度,架构,GaussDB,TP,解读,AP,HTAP,列存
From: https://www.cnblogs.com/xiaoxu0211/p/18439257

相关文章

  • GaussDB SQL基本语法示例-CASE表达式
    一、前言SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、SQL3和SQL4的主要特性)。本系列将以《云数据库GaussDB—SQL参考》在线文档为主线进行介绍。二、CASEExpression(CASE表达式)介绍在GaussDBSQL中,CASE表达式(CASEExpression)是一个非常强大......
  • 常用开源协议商用限制解读
    本文阐述常用开源协议的商用限制。GPL协议如果在项目中使用了GPL协议的组件,那么项目也必须是GPL协议的。即:“我帮了你,你也要帮助别人”。更进一步说,使用了GPL协议软件的项目也必须是开源项目,而且必须遵守GPL协议。如果商用项目是闭源的,则不能使用GPL协议软件。LGPL协议LGPL......
  • 解读MySQL8.0数据字典重构源码
    本文分享自华为云社区《【华为云MySQL技术专栏】MySQL8数据字典重构源码解读》,作者:GaussDB数据库1.背景介绍在MySQL5.7版本的使用实践过程中,我们很容易遇到DDL崩溃后导致数据不一致的问题,具体场景描述如下:主备高可用架构部署下,备机回放执行DROPTABLE的中途,因触发其它社区......
  • Java中有哪些集合类?常用的几种java集合类总结 详细解读 Java 的集合类
    Java提供了丰富的数据结构选择,用以处理和存储对象,这些对象通过Java的集合类框架(JavaCollectionsFramework)来组织和管理。集合类使得开发者能够更加高效地处理数据,如排序、搜索、迭代等操作。本文将系统地介绍Java的集合类,包括其核心接口、常用实现类以及使用示例。......
  • JDBC连接GaussDB云数据库操作示例
    ​目录一、实验环境二、登录华为云创建测试库表1、登录GaussDB云数据库2、建库、建表,用于测试3、新增普通角色(用户)用于登录及访问测试(可选)4、获取对应的公网IP三、创建java工程1、创建java工程2、添加jar包3、编辑Java代码四、执行并查看测试结果一、实验环境1、本......
  • GaussDB云数据库SQL应用系列-定时任务管理
    ​前言GaussDB数据库定时任务主要可以用于实现定期的备份、统计信息采集、数据汇总、数据清理与优化等,它是指在指定的时间间隔内自动执行一次或多次SQL语句的程序。一、GaussDB数据库定时任务介绍GaussDB数据库兼容Oracle定时任务功能主要通过DBE_TASK高级功能包提供的二次封......
  • GaussDB云数据库SQL应用系列-基础使用
    ​目录一、前言二、前提条件1、连接数据库实例2、GaussDB实例正常运行三、操作示例1、选择实例并进入SQL执行界面2、创建数据库用户3、创建数据库4、创建SCHEMA5、创建表(增删改查)1)创建3张表,并初始化一些数据2)假设查询场景,并通过SQL实现一、前言随着云计算技术的不......
  • GaussDB云数据库SQL应用系列-视图管理
    ​一、前言GaussDB是一款基于云计算技术的高性能关系型数据库,支持多种数据模型和分布式架构。在GaussDB中,视图管理是非常重要的一项功能,它可以帮助用户更方便地管理和查询数据。数据库视图管理是指对数据库中的视图进行创建、修改、删除、查询等操作的过程。二、准备条件参考......
  • GaussDB云数据库SQL应用系列—索引管理
    一、前言随着互联网的快速发展,数据量呈现爆炸式增长。如何高效地管理和查询这些数据成为了企业面临的重要问题。而数据库索引作为数据库优化的关键手段之一,对于提高数据库性能和查询效率具有重要作用。本文将介绍GaussDB云数据库的索引创建和管理方法,并结合实际应用场景进行分析......
  • GaussDB整体性能慢分析
    @目录问题描述问题现象告警业务影响原因分析分析步骤分析定位方法步骤一步骤二步骤三步骤四CPU满I/O满或者I/O异常内存满网络异常步骤五并发问题数据库配置问题异常等待事件长时间性能下降短时性能抖动不优SQL问题描述整体性能慢。不满足客户作业对时延要求或者不满足客户预期。......