HTAP混合事务/分析数据库调研

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 产品整体架构

HTAP混合事务/分析数据库调研_第1张图片
OceanBase自己的架构图

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

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

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

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

2.2.2 数据存储架构 

HTAP混合事务/分析数据库调研_第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 的事务操作就会被优化为单机事务,以取得更好的性能。


​​​​​​​

HTAP混合事务/分析数据库调研_第3张图片

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,分布式数据库,向量化引擎,OLTP,OLAP)