1 什么是HTAP

HTAP=Hybrid transactional/analytical processing

特指同时具备处理事务和分析能力的数据库

目前国内有哪些开源产品:TiDB,OceanBase

Gartner 的最新报告表明,比单一统一数据库所能提供的优势更广泛。传统的应用程序架构将事务和分析系统分开。数字业务以及对业务时刻做出响应的需求意味着使用“事后”分析已不再适用。商业时刻是必须实时利用的短暂机会。如果一个组织无法通过做出快速和明智的决策来识别和/或快速响应业务时刻,那么其他一些组织会,从而导致错失机会(或新的业务威胁)。 HTAP 允许在“飞行中”交易数据上实时运行高级分析,提供一种架构,使用户能够更有效地响应业务时刻。

HTAP 数据库的主要技术挑战是如何在同一数据库系统上高效地处理操作(许多具有高比例更新的小事务)和分析工作负载(遍历大量行的大型复杂查询),以及如何防止分析查询对操作工作量的干扰。这种操作工作负载通常也称为操作分析处理。

Gartner's most recent reports suggest broader advantages than a single unified database can offer. Traditional application architectures separated transactional and analytical systems. Digital business, and the need to respond to business moments, means that using "after the fact" analysis is no longer adequate. Business moments are transient opportunities that must be exploited in real time. If an organization is unable to recognize and/or respond quickly to a business moment by taking fast and well-informed decisions, then some other organization will, resulting in a missed opportunity (or a new business threat). HTAP allows advanced analytics to be run in real time on "in flight" transaction data, providing an architecture that empowers users to respond more effectively to business moments.

The main technical challenges for an HTAP database are how to be efficient both for operational (many small transactions with a high fraction of updates) and analytical workloads (large and complex queries traversing large number of rows) on the same database system and how to prevent the interference of the analytical queries over the operational workload. This kind of operational workload is also commonly referred to as Operational Analytical Processing.

2 相关产品和架构介绍

2.1 TiDB架构介绍

分布式数据库——TiDB的介绍和基本原理_gb4215287的博客-CSDN博客_tidb数据库

分布式数据库——TiDB的介绍和基本原理 · 语雀

2.2 OceanBase架构介绍

2.2.1 产品整体架构


OceanBase自己的架构图

主要关注下paxos,OceanBase用它做『容灾』和『交易数据到分析数据的复制』,Paxos也是一种协议,用于保证分布式系统中的一致性。

HTAP混合负载如何实现的呢?

用同一套高性能并行执行引擎,结合独有的数据存储方式,分别对交易和分析场景进行深度优化。

隔离不同负载使用的计算资源,避免分析场景与交易场景相互干扰。

2.2.2 数据存储架构


​​​​​​​

【数据组织】
和其他 LSM-tree 数据库一样,OceanBase 数据库也将数据分为内存增量数据(MemTable)和存储静态数据(SSTable)两个层次,其中 SSTable 是只读的,一旦生成就不再被修改,存储于磁盘;MEMTable 支持读写,存储于内存。数据库 DML 操作插入、更新、删除等首先写入 MEMTable,等到 MEMTable 达到一定大小时转储到磁盘成为 SSTable。
另外在 OceanBase 数据库内,SSTable 会继续细分为 Mini SSTable、Minor SSTable、Major SSTable 三类,MEMTable 转储后形成的我们称为 Mini SSTable,多个 Mini SSTable 会定期 compact 成为 Minor SSTable,而当 OceanBase 数据库特有的每日合并开始后,每个分区所有的 Mini SSTable 和 Minor SSTable 会整体合并为 Major SSTable。
【存储结构】
在 OceanBase 数据库中, 每个分区的基本存储单元是一个个的 SSTable,而所有存储的基本粒度是宏块,数据库启动时,会将整个数据文件按照 2MB 定长大小切分为一个个宏块,每个 SSTable 实质就是多个宏块的集合。
每个宏块内部又会继续切分为多个微块,微块的概念和传统数据库的 page/block 概念比较类似, 但是借助 LSM-Tree 的特性,OceanBase 数据库的微块是做过压缩变长的,微块的压缩前大小可以通过建表的时候指定 block_size来确定。
而微块根据用户指定存储格式可以分别以 encoding 格式或者 flat 格式存储,encoding 格式的微块, 内部数据会以行列混合模式存储;对于 flat 格式的微块,所有数据行则是平铺存储。

PartitionGroup:分布式架构下,一个事务可能会波及多个表,多个表很难保证在同一个服务器上。具有相同分区规则的一组表构成一个Table group,Table group中的相应分区叫做Partition Group,OB保证相同Partition的数据绑定在一起,这样,对于同一个 Partition Group 的事务操作就会被优化为单机事务,以取得更好的性能。


​​​​​​​

2.3.3 向量化引擎

要让 OLTP 数据库具备 OLAP 的能力,尤其是大数据量 OLAP 的能力,高效执行的向量化引擎,就是解决这个问题的核心技术之一。

传统火山模型每次只计算一行数据,向量化引擎采用批量迭代方式,可以在算子间一次传递一批数据。换句话说,向量化实现了从一次对一个值进行运算,到一次对一组值进行运算的跨越。

OceanBase 向量化引擎的实现细节,主要包括存储和 SQL 两大方面。

OceanBase 的存储系统的最小单元是微块,每个微块是一个默认 64KB(大小可调)的 IO 块。在每个微块内部,数据按照列存放。查询时,存储直接把微块上的数据按列批量投影到 SQL 引擎的内存上。由于数据紧密排列,有着较好的 cache 友好性,同时投影过程都可以使用 SIMD 指令进行加速。

看来列式存储才是OLAP的通用解决方案,从OB官方的博文里可以看出其存储模式其实可以选择PAX存储模式(行列混存)。TiDB为了实现OLAP也是引入了列存储TiFlash。

向量化引擎对HTAP的价值与技术思考 - 知乎

3 相关概念介绍

3.0 评价指标

好多产品标榜RPO<0 RTO<30s,这些指标什么含义呢。
RPO(Recovery Point Objective):它描述的是数据库在一次故障停机恢复后可能丢失的数据量。
RTO(Recovery Time Objective):业务中断恢复所需要的时间。

高可用的恢复点目标(RPO)和恢复时间目标(RTO) - 明矾 - 博客园

3.1 分布式一致性:Paxos、Raft、ZAB

Paxos:是Leslie Lamport在1990年提出的一种基于消息传递的一致性算法。基于Paxos协议的数据同步与传统主备方式最大的区别在于:Paxos只需超过半数的副本在线且相互通信正常,就可以保证服务的持续可用,且数据不丢失。

Raft:是Paxos算法的一种简化实现。

ZAB:在做分布式系统时,我们常常需要维护管理集群的配置信息、服务的注册发现、共享锁等功能,而ZooKeeper正是解决这些问题的一把好手。ZAB(ZooKeeper Atomic Broadcast)则是为ZooKeeper设计的一种支持崩溃恢复的原子广播协议。

Paxos、Raft、ZAB算法_知知之之的博客-CSDN博客_paxos raft zab

ETCD、Zookeeper和Consul 分布式数据库的魔法银弹_肥叔菌的博客-CSDN博客_etcd 两地三中心

zookeeper与etcd的对比_zzhongcy的博客-CSDN博客_etcd与zookeeper

3.2 Shared-Nothing 架构

Shared Nothing架构是一 种分布式计算架构。这种架构中的每一个节点都有自己私有的CPU/内存/硬盘等,这些资源都是独立、自给的,整个系统中不存在共享资源,没有单点竞争。例如:MPP模式和Hadoop模式。

01| 数据仓库的技术架构发展 - 知乎

3.2.1 PAX存储

一种行列混合存储方案——PAX(Partition Attributes Across)存储模型:它在磁盘 page 里面使用了一种 mini page 的方式,将 record 切到到不同的 mini page 里面。简单理解,就是各个page之间行存储,page内部列存储,每个page里面的N行数据按照列存储到不同mini page里面。也就是对行存储和列存储的一种折中存储方案。

PAX:一个 Cache 友好高效的行列混存方案

HTAP混合事务/分析数据库调研相关推荐

  1. 追寻终极数据库 - 事务/分析混合处理系统的交付挑战 (1)

    追寻终极数据库 摇晃的数据库钟摆 IT行业的技术决策就像一只来回摇晃的钟摆. 大约十年前,新型网络公司开始收集比以往任何时候都更多的数据,他们迫切需要将数据库系统的扩展性能和处理性能提升到一个新的水平 ...

  2. 追寻终极数据库 - 事务/分析混合处理系统的交付挑战 (3)

    挑战:支持多个存储引擎 以下内容并不是新发现:行优化存储适用于OLTP和运营工作负载,而列存储适用于BI和分析工作负载.频繁写入的工作负载适用于行式存储.对Hadoop而言,Hbase适合低延迟工作负 ...

  3. 【SequoiaDB|巨杉数据库】HTAP混合负载Ⅰ

    [SequoiaDB|巨杉数据库]HTAP混合负载Ⅰ HTAP混合负载 一般来说,HTAP (Hybrid Transactional and Analytical Processing) 混合负载意 ...

  4. Insight Mybatis JdbcTemplate 混合事务控制的实现

    混合使用的背景 最近项目中需要引入工作流引擎,实现业务和流程设计.流转的解耦. 工作流流引擎选用的是snaker,轻量.易上手.可定制.访问数据库用的是JdbcTemplate . 项目中原有的持久层 ...

  5. Teradata天睿公司推出适用各种部署环境的全球最强分析数据库

    Teradata天睿公司(Teradata Corporation,纽交所:TDC)推出Teradata Everywhere™,成为业内首家在多种公有云.托管云和本地部署环境下部署全球最强海量并行处 ...

  6. 为什么ClickHouse分析数据库这么强?(原理剖析+应用实践)

    ClickHouse简介 2020年下半年在OLAP领域有一匹黑马以席卷之势进入大数据开发者的领域,它就是ClickHouse.在2019年小编也曾介绍过ClickHouse,大家可以参考这里进行入门 ...

  7. C#分析数据库结构,使用XSL模板自动生成代码

    <html> <head> <TITLE>分析数据库结构,自动生成代码</TITLE> <meta http-equiv="Conten ...

  8. Spring的AOP和IOC是什么?使用场景有哪些?Spring事务与数据库事务,传播行为,数据库隔离级别

    Spring的AOP和IOC是什么?使用场景有哪些?Spring事务与数据库事务,传播行为,数据库隔离级别 AOP:面向切面编程. 即在一个功能模块中新增其他功能,比方说你要下楼取个快递,你同事对你说 ...

  9. 分析数据库CitusDB:提供弹性计算能力

    本文讲的是分析数据库CitusDB:提供弹性计算能力,企业数据库市场很庞大,在这个领域既有Oracle这样行家,也有IBM(DB2)和微软(SQL Server)这样的跨界巨头.它们都与中小企业常用到 ...

最新文章

  1. 删除IBASE component时遇到data_not_consistent的exception
  2. Android之error: void value not ignored as it ought to be(In function ‘callMethod2‘)解决办法
  3. java indexof效率_Java indexOf函数比Rabin-Karp更有效吗?文字搜寻效率
  4. c语言多个子函数声明,C函数在多个源文件中的声明和定义
  5. 对一个“世纪数学难题”的重新思考
  6. mysql历史数据备份_Mysql存储过程历史表备份
  7. oracle v¥bh,【oracle笔记2】约束
  8. Windows 网络通讯开发
  9. 苏宁易购:苏宁控股、苏宁电器合计质押约5.18亿股公司股份
  10. Git — 解决“requested upstream branch ‘origin/master‘ does not exist“
  11. python有哪几种类型转换方式_Python 中各种时间类型的转换
  12. LINUX安装C#开发环境
  13. SeaweedFS上手使用指南
  14. Hadoop大数据开发基础课后答案
  15. 局域网Cesium离线影像及瓦片影像地图加载【转】
  16. 华南主板超频设置图解_支持XMP2.0,3000稳超3733MHz,威刚龙耀D60G超频体验
  17. matlab分析电路,基于Matlab的电路节点分析法
  18. Ubuntu系统安装教程
  19. 用计算机表白我不喜欢你了,绝对看不懂的表白公式(用古文暗示我喜欢你的方式)...
  20. 阿里云数据库怎么使用

热门文章

  1. 崩坏3新版本服务器维护多久,崩坏3V3.5版本10月17日版本更新维护通知
  2. 深圳真实收入是多少?
  3. 2020李宏毅深度学习hw1
  4. 开贝修图最新版 免狗全功能版
  5. 判断手机号是否可注册淘宝
  6. JAVA狗叫源代码_从头认识java-1.1 编程语言抽象过程以及java的基础特性
  7. google账户配置foxmail和使用foxmail
  8. css Hack
  9. dz社区模板源码手机自适应
  10. 20核服务器项目,详细解答E5-2680v2,20核40线程服务器的具体用途怎么体现出来