OLTP、OLAP与HTAP、HSAP详解

HTAP、HSAP是OLAP与OLTP综合需求驱动下的新的数据库系统,既满足事务处理,又满足大规模分析查询,并且是基于一套系统下实现。

本节首先我们要了解服务于分析的区别。相当多从应用角度对数据处理分类的划分,大致可以分为Transaction交易于Analysis分析两大类,一类位于企业数据架构的上游用于生产数据;一类位于企业数据架构的下游用于数据价值的利用。

概念

  • OLTP:On-Line Transtion Processing 联机事务处理过程。也成为面向交易的处理过程,其基本特征是前台接收用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。OLTP可以理解为日常的业务系统,像ERP、OA、CRM这些系统,这些业务系统主要是管理企业的基本业务流程,对数据的处理方式主要是以增、删、改为主,但是查询的SQL结构相对比较为简单。
  • OLAP:On-Line Analytical Processing 联机分析处理。主要关注数据分析而非实时事务处理。它允许用户对大量历史数据进行复杂的查询和分析,以揭示隐藏在数据中的模式和趋势。数据仓库是OLAP系统的核心组成部分,用户存储和管理这些历史数据。它可以让分析人员能够迅速、一致、交互的从各个方面观察信息,以达到深入理解数据的目的。它具有FASMI(Fast Analysis of Shared Multidimensional Information),即共享多维信息的快速分析的特征
    • Fast:快速性,指系统能在数秒内对用户的多数分析要求做出反应;
    • Analysis:可分析性,指用户无需编程就可以定义新的专门计算,将其作为分析的一部分,并以用户所希望的方式给出报告;
    • Multi-Dimensional:多维性,指提供对数据分析的多维视图和分析;
    • Information:信息性,指能及时获得信息,并且管理大容量信息;
  • HSAP:Hybrid Serving & Analytical processing 服务分析混合负载的分布式数据系统。
    • HSAP要求极高的实时数据载入吞吐量。每秒数千万、上亿甚至更高的数据载入能力,同时这些数据对服务与分析来讲必须是实时可消费(秒级、压秒级)的;
    • HSAP要求极高并发、极高性能的简单查询能力。需要轻松支撑每秒数千万甚至上亿简单查询,并且延迟极低;
    • HSAP要求相对高的并发、极致性能的复杂分析能力。也就是说HSAP要有传统MPP架构OLAP数据库(如GP)的同等能力;
    • HSAP的上述一个特性是混合负载的,对用户来讲就是一套系统实现的。
  • HTAP: Hybrid Transaction & Analytical processing 。HTAP简单理解就是OLAP与OLTP业务都统一在一套数据库系统内完成。HTAP数据库相对于传统TP数据库又TP所不具备的计算引擎,可以加速SQL执行效率,而HTAP数据库基于传统AP数据库,又有AP所不具备的事务引擎,能做到所写即可见,数据具有高时效性。它打破了事务处理和分析之墙,它支持更多的信息和“实时业务”的决策。

HSAP的出现是为了满足企业对“大数据”的需求,也就是说HTAP虽然同时满足了交易类数据的分析查询需求,但对更大范围的大数据,比如来自日志等非交易系统(用户行为)的数据,则不能很好的满足。因为HTAP系统设计的基石和优势是执行hi细粒度的分布式事务,交易型数据往往以大量分布式小事务的方式写入HTAP系统。而来自日志等系统的数据,大多并没有分布式事务的需求,以HTAP系统来处理他们,显然带来了不必要的开销,从而降低了系统效能。

HSAP需求采用一套复杂的技术栈组合来完成,例如Flink+Hbase或者Hive+Druid等 

OLAP与OLTP对比

OLTPOLAP
用户操作人员、底层管理人员决策人员、高级管理人员
数据结构采用行存储方式,适用于实时事务处理采用列存储方式,适用于数据分析
数据库关系型数据库:Mysql、Oracle,E-R模型数据仓库:hive
星型模型或雪花模型
性能要求高吞吐、低延迟当前及历史数据
数据一致性强调数据的强一致性,通过ACID属性确保每个事务的完整执行一致性相对要求低一些,更注重查询和分析性能
读写操作处理大量的插入、更新和删除的操作,需要快速完成更注重复杂的查询和分析操作,允许较长的响应时间
性能优化通过缓存、分区和负载均衡等技术提高性能通过索引、分区和并行处理等技术优化查询性能

 OLAP与OLTP查询具体有哪些差异

OLTP查询一般仅涉及单表,点查为主,返回的是记录本身或该记录的多个列。即使是范围查询,基本上也会通过limit来限制返回的记录数。

  1. 实时性要求高。几年前的银行汇款都是隔天才到账,限制分分钟到账的节奏,说明现在银行的实时处理能力大大增加了,
  2. 数据量不是很大,生产库上的数据量一般不会太大,而且会及时做响应的数据处理与转移;
  3. 交易一般是确定的,比如银行存取款的金额肯定是确定的,所以OLTP对确定的数据进行存取
  4. 高并发,并且要求满足ACID原则,比如两个人同时操作一个银行卡账户,比如大型购买网站秒杀活动时上万的QPS。

OLAP则不同,表中单条记录本身并不是查询所关心的,比较典型的特点包括由聚合类算子、涉及多表关联。这些操作都非常消耗计算资源,而且数据仓库相比数据库在数据量上大很多,因此,OLAP类查询经常表现为cpu-bound而不是io-bound。

  1. 实时性要求不是很高,比如最常见的应用就是天级别的更新数据,然后出对应的数据报表
  2. 数据量大,因为OLAP支持的时动态查询,所以用户也许要通过将很多数据统计后才能得到想要的信息,例如时间序列分析等
  3. OLAP系统的重点时通过数据提供决策支持,所以查询一般都是动态的,自定义的。所以在OLAP中,维度的概念非常重要,一般会将用户所有关心的维度数据,存储对应的数据平台

OLAP与OLTP是否可以统一起来

目前的趋势是将OLAP与OLTP相融合,在同一个系统中同时提供TP和AP的两种服务,即HTAP或者HSAP产品,国内的数据库创业公司PingCAP的TiDB就比较好。

但是由于两者服务类型相差较大,完全融合是很难的,如何解决AP业务对要求更高实时性和稳定性的TP业务带来的影响,如何同时提供两种服务且两种服务与业界其他系统相比具备足够竞争力,这些都是很大的挑战。

在目前的HTAP系统中,一般通过存储层的数据多副本来进行针对AP和TP业务的不同方式的优化,使用多个副本来以行存方式更好的满足TP业务,通过增加一个副本来以列存方式为AP业务提供服务。

在存储系统上,配置独立的计算/查询系统,分别满足TP和AP不同的要求。比如TP系统很重要的一点就是事务的ACID,而AP系统更加关心分布式并行查询的能力。

OLAP数据立方体及其常见操作

  • 钻取(Drill-down):是往更细粒度深挖。从上一层到下一层,即深入该层内部,比如数据中可以分为计算机、数理化、文史地理等。

  • 上卷(Roll-up):与钻取往深度挖相反,即从细粒度数据向上层聚合,如江苏省、上海市和浙江省的销售数据进行汇总查看江浙沪地区的销售数据。上面的钻取和上卷通常是改变维度的粒度。

  • 切片(Slice):选择维中特定的值进行分析,比如只选择电子产品的销售数据,或者浙江一个省粒度进行分析;

  • 切块(Dice):选择维度中给特定区间的数据或者某批特定值进行分析,比如选择2010年第一季度到2010年第二季度的销售数据。与切片不同的是,切块的粒度更大,会选择一个维度中某个区间或者范围的值,而不是仅仅是某个值。

  • 旋转(Pivot):维度的位置呼唤,就像是二维表的行列转换。旋转并为较少或增加要分析的样本。而是根据不同的目的,改变了分析的角度。

OLAP与OLTP总结

OLTP即联机事务处理,就是我们经常说的关系数据库,增删改查就是我们经常应用的东西,这是数据库的基础;

OLAP即联机分析处理,是数仓的核心部分,所谓的数据仓库就是对于大量已经由OLTP形成的数据的一种分析型的数据库,用于处理商业智能、决策支持等重要的决策信息;数据仓库是在数据库应用到一定程序之后而对历史数据的加工和分析,读取更多,更新较少。

 HTAP

HTAP数据库简单理解就是OLAP与OLTP业务都统一的在一套数据库系统里完成。HTAP数据库相对于传统TP数据库有TP所不具备的计算引擎,可以加快SQL的执行效率,而HTAP数据库基于传统AP数据库,又有AP所不具备的事务引擎,能做到所写即可见,数据具有高时效性。

HTAP型数据库具备的技术点:

  •  TP/AP型数据时效性:简单说,就是业务的TP查询和AP查询看到总是“同一份数据”,不会有明显的延迟。目前比较成熟的Mysql主备同步机制能保证数据延迟达到毫秒级或压秒级,用户几乎不会察觉,并且同步准确性非常高,这笔依赖于异步的外部数据同步系统的可靠性要高得多;

  • TP/AP稳定性与高可用:TP与AP两者互相隔离,保证各自的稳定可靠是HTAP的基本要求。要做到这一点,可以基于独立部署进行物理隔离,也可以基于链路隔离以及备库字典容灾与切换方案进行隔离;

  • 跨业务库的关联查询:跨业务库关联分析是HTAP常见场景,这要求HTAP查询引擎能基于MYSQL协议对接不同类型的Mysql存储;

  • 复杂SQL处理能力:除了要有强大的优化器以外,MPP计算引擎和Streaming计算引擎等加速SQL执行的手段也必须要有的。

HTAP的技术架构图:引擎层和存储层 

 橙色一层是存储层,这层一般都是HTAP分库分表的Mysql实例(云上就是RDS实例),通常每一个物理分库都会配一主多备保证高可用。灰色的一层是引擎层,引擎层使用集群提供高可用,集群的每一个节点都是无状态的server节点。Server里包含了用于处理Mysql协议的网络模块、查询优化器以及一整套TP引擎对应的执行算子。

通常业务OLTP类的sql在Server的TP引擎内完成全部执行。但如果业务的sql是OLAP类的复杂Sql,引擎层会将SQL对应的物理查询计划发到右侧的FireWorker引擎进行计算;

Fireworks是一个基于Spark的具有DAG能力并行执行引擎,它能够进行MPP计算及Streaming计算,Fireworks内部的每一个Worker会主动连用户mysql的备库获取数据并进行计算。

链路隔离方案的架构:引擎层和存储层 

 在存储层默认用Mysql的一主多备来实现。像TP引擎会默认只访问主库,这样数据可以保持数据一致性。而Fireworks引擎默认只允许访问应用的备库,这样业务在存储层AP流量和TP是天然的物理隔离,保证互相不受干扰。

由于备库承载的是OLAP类的Sql,Sql通常是相当的复杂性,备库被打垮是高概率事件, 所以,HTAP能在多备库之间实施自动的容灾和切换,这样就算一台备库宕机了,另一个备库也可以继续提供服务,从而高可用。

在引擎上,通常建议业务将OLTP流量用主实例承载,业务的OLAP流量用只读实例来承载,这样业务的AP和TP业务就能在引擎上也能实现物理隔离,从而保证各自的稳定性和高可用。

 查询优化器架构
  • PreOptimizer,sql的很多rewriter操作会在这个阶段完成,产生出一份经过简单SQL改写的逻辑计划;
  • Optimizer,这个阶段优化器会进行很多常见算子优化(例如,Predicate Inference/Operator Pushdown Join Cluster、Join Reorder等),然后再产生出一份经过优化后的逻辑计划;
  • PostOptimizer,这个阶段HTAP作为分布式查询引擎所特有的阶段。这个阶段中,优化器会基于SQL的查询条件进行分库分表的Sharding计算,然后再针对特定分片重做类似上一阶段的Partition-aware的优化操作。

原则上,优化器会尽可能地算子下推到物理存储,这样可以大大减少引擎成本地执行压力以及中间数据地网络传输代价,从而提升执行效率。

对于一些诸如必须要跨多个物理分片地或跨多个逻辑库才能完成计算地算子(如跨库JOIN),他们没有办法下推物理存储,优化器会自动采用MPP地执行策略,直接将物理计划发给Fireworks引擎做MPP计算。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2804481.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络-网络互联与互联网(一)

1.常用网络互联设备: 1层物理层:中继器、集线器2层链路层:网桥、交换机3层网络层:路由器、三层交换机4层以上高层:网关 2.网络互联设备: 中继器Repeater、集线器Hub(又叫多端口中继器&#xf…

PyTorch概述(二)---MNIST

NIST Special Database3 具体指的是一个更大的特殊数据库3;该数据库的内容为手写数字黑白图片;该数据库由美国人口普查局的雇员手写 NIST Special Database1 特殊数据库1;该数据库的内容为手写数字黑白图片;该数据库的图片由高…

Django学习记录04——靓号管理整合

1.靓号表 1.1 表结构 1.2 靓号表的构造 class PrettyNum(models.Model): 靓号表 mobile models.CharField(verbose_name"手机号", max_length11)# default 默认值# null true,blank true 允许为空price models.IntegerField(verbose_name"价…

学校档案室管理制度内容

学校档案室管理制度是指对学校档案室进行管理的规定和流程。以下是一个示例的学校档案室管理制度的内容: 1.档案室的管理部门和责任人员: 学校档案室由学校行政部门负责管理,行政部门指定专门的档案管理员负责档案室的日常管理工作。 2.档案室…

ElasticSearch之单值多字段查询以及dis max query

写在前面 在查询中经常有这样的查询场景,我们只有一个输入框,但是输入的值需要同时对多个字段进行查询,这就是单值多字段的查询,像下图: 1:例子 首先来准备测试数据: DELETE blogs PUT /bl…

记录 | docker内执行apt update报错GPG error

1. 执行 sudo apt-get update 命令时遇到这个错误,是服务器没有这个公钥的意思 rootadmin:~# sudo apt-get update Get:1 https://download.docker.com/linux/ubuntu focal InRelease [36.2 kB] Err:1 https://download.docker.com/linux/ubuntu focal InRelease T…

基于Python网络爬虫的IT招聘就业岗位可视化分析推荐系统

文章目录 基于Python网络爬虫的IT招聘就业岗位可视化分析推荐系统项目概述招聘岗位数据爬虫分析系统展示用户注册登录系统首页IT招聘数据开发岗-javaIT招聘数据开发岗-PythonIT招聘数据开发岗-Android算法方面运维方面测试方面招聘岗位薪资多维度精准预测招聘岗位分析推荐 结语…

Linux之ACL访问控制列表

一、ACL权限的介绍 1.1 什么是ACL 访问控制列表(ACL)是一种网络安全技术,它通过在网络设备(如路由器、交换机和防火墙)上定义一系列规则,对进出接口的数据包进行控制。这些规则可以包含“允许”&…

【Java EE初阶二十四】servlet的深入理解

1. Servlet API 的学习 下面主要学习这三个类,就已经可以完成 Servlet 的大部分开发了; 1. Httpservlet 2. HttpServletRequest 3. HttpServletResponse 2. Httpservlet的学习 2.1 Httpservlet在tomcat的工作原理 写一个 Servlet 代码,往往都…

跟随realworldCTF,做一个http网络协议黑客

前言 本报告旨在对RealWorldCTF 2024体验赛中的Pwn方向题目——"Be-an-HTPPd-Hacker"进行深入解析和讲解。该题目涉及一个十一年前的项目,其基于C语言实现了HTTP协议。我们将通过对该协议进行栈溢出攻击,探索真实世界中的攻击手法,…

PostgreSQL索引篇 | BTree

B-Tree索引 (本文为《PostgreSQL数据库内核分析》一书的总结笔记,需要电子版的可私信我) B树特点: 非叶子节点含一个或多个关键字值和子节点指针,不指向实际数据的存储位置所有关键字都是叶子节点,每个叶…

React18源码: schedule任务调度messageChannel

React调度原理(scheduler) 在React运行时中,调度中心(位于scheduler包)是整个React运行时的中枢(其实是心脏),所以理解了scheduler调度,就基本掌握了React的核心React两大循环:从宏…

git修改及合并commit提交

在开发过程中,保持代码记录清晰会更方便追踪,对代码审核人员也更有便宜。 修改commit提交 比如我们刚提交了一个commit,但之后要追加代码到已经推送到远程仓库的提交中,这时我们可以选择修改commit提交,使新的更改也推…

详解编译和链接!

目录 1. 翻译环境和运行环境 2. 翻译环境 2.1 预处理 2.2 编译 2.3 汇编 2.4 链接 3. 运行环境 4.完结散花 悟已往之不谏,知来者犹可追 创作不易,宝子们!如果这篇文章对你们…

Sora - 探索AI视频模型的无限可能

随着人工智能技术的飞速发展,AI视频模型已成为科技领域的新热点。而在这个浪潮中,OpenAI推出的首个AI视频模型Sora,以其卓越的性能和前瞻性的技术,引领着AI视频领域的创新发展。让我们将一起探讨Sora的技术特点、应用场景以及对未…

悄悄话花费的时间(C语言)

题目描述 给定一个二叉树,每个节点上站着一个人,节点数字表示父节点到该节点传递悄悄话需要花费的时间。 初始时,根节点所在位置的人有一个悄悄话想要传递给其他人,求二叉树所有节点上的人都接收到悄悄话花费的时间。 输入描述 …

【Docker】初学者 Docker 基础操作指南:从拉取镜像到运行、停止、删除容器

在现代软件开发和部署中,容器化技术已经成为一种常见的方式,它能够提供一种轻量级、可移植和可扩展的应用程序打包和部署解决方案。Docker 是目前最流行的容器化平台之一,它提供了一整套工具和技术,使得容器的创建、运行和管理变得…

Linux(ACT)权限管理

文章目录 一、 ATC简介二、 案例1. 添加测试目录、用户、组,并将用户添加到组2. 修改目录的所有者和所属组3. 设定权限4. 为临时用户分配权限5. 验证acl权限 6. 控制组的acl权限 一、 ATC简介 ACL(Access Control List,访问控制列表&#xf…

GPT-SoVITS 快速声音克隆使用案例:webui、api接口

参考: https://github.com/RVC-Boss/GPT-SoVITS 环境: Python 3.10 PyTorch 2.1.2, CUDA 12.0 安装包: 1、使用: 1)下载项目 git clone https://github.com/RVC-Boss/GPT-SoVITS.git2)下载预训练模型 https://huggingface.co/lj1995/GPT-SoVITS 下载模型文件放到GPT…

NXP实战笔记(八):S32K3xx基于RTD-SDK在S32DS上配置LCU实现ABZ解码

目录 1、概述 2、SDK配置 2.1、IO配置 2.2、TRGMUX配置 2.3、LCU配置 2.4、Trgmux配置 2.5、Emios配置 2.6、代码实现 1、概述 碰到光电编码器、磁编码器等,有时候传出来的位置信息为ABZ的方式,在S32K3里面通过TRGMUX、LCU、Emios结合的方式可以实现ABZ解码。 官方…