HTAP混合事务/分析数据库调研
1 什么是HTAP
HTAP=Hybrid transactional/analytical processing
特指同時(shí)具備處理事務(wù)和分析能力的數(shù)據(jù)庫
目前國內(nèi)有哪些開源產(chǎn)品:TiDB,OceanBase
Gartner 的最新報(bào)告表明,比單一統(tǒng)一數(shù)據(jù)庫所能提供的優(yōu)勢更廣泛。傳統(tǒng)的應(yīng)用程序架構(gòu)將事務(wù)和分析系統(tǒng)分開。數(shù)字業(yè)務(wù)以及對業(yè)務(wù)時(shí)刻做出響應(yīng)的需求意味著使用“事后”分析已不再適用。商業(yè)時(shí)刻是必須實(shí)時(shí)利用的短暫機(jī)會(huì)。如果一個(gè)組織無法通過做出快速和明智的決策來識別和/或快速響應(yīng)業(yè)務(wù)時(shí)刻,那么其他一些組織會(huì),從而導(dǎo)致錯(cuò)失機(jī)會(huì)(或新的業(yè)務(wù)威脅)。 HTAP 允許在“飛行中”交易數(shù)據(jù)上實(shí)時(shí)運(yùn)行高級分析,提供一種架構(gòu),使用戶能夠更有效地響應(yīng)業(yè)務(wù)時(shí)刻。?
HTAP 數(shù)據(jù)庫的主要技術(shù)挑戰(zhàn)是如何在同一數(shù)據(jù)庫系統(tǒng)上高效地處理操作(許多具有高比例更新的小事務(wù))和分析工作負(fù)載(遍歷大量行的大型復(fù)雜查詢),以及如何防止分析查詢對操作工作量的干擾。這種操作工作負(fù)載通常也稱為操作分析處理。
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 相關(guān)產(chǎn)品和架構(gòu)介紹
2.1 TiDB架構(gòu)介紹
分布式數(shù)據(jù)庫——TiDB的介紹和基本原理_gb4215287的博客-CSDN博客_tidb數(shù)據(jù)庫
分布式數(shù)據(jù)庫——TiDB的介紹和基本原理 · 語雀
2.2 OceanBase架構(gòu)介紹
2.2.1 產(chǎn)品整體架構(gòu)
OceanBase自己的架構(gòu)圖
?主要關(guān)注下paxos,OceanBase用它做『容災(zāi)』和『交易數(shù)據(jù)到分析數(shù)據(jù)的復(fù)制』,Paxos也是一種協(xié)議,用于保證分布式系統(tǒng)中的一致性。
HTAP混合負(fù)載如何實(shí)現(xiàn)的呢?
用同一套高性能并行執(zhí)行引擎,結(jié)合獨(dú)有的數(shù)據(jù)存儲方式,分別對交易和分析場景進(jìn)行深度優(yōu)化。
隔離不同負(fù)載使用的計(jì)算資源,避免分析場景與交易場景相互干擾。
2.2.2 數(shù)據(jù)存儲架構(gòu)?
???????
【數(shù)據(jù)組織】
和其他 LSM-tree 數(shù)據(jù)庫一樣,OceanBase 數(shù)據(jù)庫也將數(shù)據(jù)分為內(nèi)存增量數(shù)據(jù)(MemTable)和存儲靜態(tài)數(shù)據(jù)(SSTable)兩個(gè)層次,其中 SSTable 是只讀的,一旦生成就不再被修改,存儲于磁盤;MEMTable 支持讀寫,存儲于內(nèi)存。數(shù)據(jù)庫 DML 操作插入、更新、刪除等首先寫入 MEMTable,等到 MEMTable 達(dá)到一定大小時(shí)轉(zhuǎn)儲到磁盤成為 SSTable。
另外在 OceanBase 數(shù)據(jù)庫內(nèi),SSTable 會(huì)繼續(xù)細(xì)分為 Mini SSTable、Minor SSTable、Major SSTable 三類,MEMTable 轉(zhuǎn)儲后形成的我們稱為 Mini SSTable,多個(gè) Mini SSTable 會(huì)定期 compact 成為 Minor SSTable,而當(dāng) OceanBase 數(shù)據(jù)庫特有的每日合并開始后,每個(gè)分區(qū)所有的 Mini SSTable 和 Minor SSTable 會(huì)整體合并為 Major SSTable。
【存儲結(jié)構(gòu)】
在 OceanBase 數(shù)據(jù)庫中, 每個(gè)分區(qū)的基本存儲單元是一個(gè)個(gè)的 SSTable,而所有存儲的基本粒度是宏塊,數(shù)據(jù)庫啟動(dòng)時(shí),會(huì)將整個(gè)數(shù)據(jù)文件按照 2MB 定長大小切分為一個(gè)個(gè)宏塊,每個(gè) SSTable 實(shí)質(zhì)就是多個(gè)宏塊的集合。
每個(gè)宏塊內(nèi)部又會(huì)繼續(xù)切分為多個(gè)微塊,微塊的概念和傳統(tǒng)數(shù)據(jù)庫的 page/block 概念比較類似, 但是借助 LSM-Tree 的特性,OceanBase 數(shù)據(jù)庫的微塊是做過壓縮變長的,微塊的壓縮前大小可以通過建表的時(shí)候指定 block_size來確定。
而微塊根據(jù)用戶指定存儲格式可以分別以 encoding 格式或者 flat 格式存儲,encoding 格式的微塊, 內(nèi)部數(shù)據(jù)會(huì)以行列混合模式存儲;對于 flat 格式的微塊,所有數(shù)據(jù)行則是平鋪存儲。
PartitionGroup:分布式架構(gòu)下,一個(gè)事務(wù)可能會(huì)波及多個(gè)表,多個(gè)表很難保證在同一個(gè)服務(wù)器上。具有相同分區(qū)規(guī)則的一組表構(gòu)成一個(gè)Table group,Table group中的相應(yīng)分區(qū)叫做Partition Group,OB保證相同Partition的數(shù)據(jù)綁定在一起,這樣,對于同一個(gè) Partition Group 的事務(wù)操作就會(huì)被優(yōu)化為單機(jī)事務(wù),以取得更好的性能。
???????
2.3.3?向量化引擎
要讓 OLTP 數(shù)據(jù)庫具備 OLAP 的能力,尤其是大數(shù)據(jù)量 OLAP 的能力,高效執(zhí)行的向量化引擎,就是解決這個(gè)問題的核心技術(shù)之一。
傳統(tǒng)火山模型每次只計(jì)算一行數(shù)據(jù),向量化引擎采用批量迭代方式,可以在算子間一次傳遞一批數(shù)據(jù)。換句話說,向量化實(shí)現(xiàn)了從一次對一個(gè)值進(jìn)行運(yùn)算,到一次對一組值進(jìn)行運(yùn)算的跨越。
OceanBase 向量化引擎的實(shí)現(xiàn)細(xì)節(jié),主要包括存儲和 SQL 兩大方面。
OceanBase 的存儲系統(tǒng)的最小單元是微塊,每個(gè)微塊是一個(gè)默認(rèn) 64KB(大小可調(diào))的 IO 塊。在每個(gè)微塊內(nèi)部,數(shù)據(jù)按照列存放。查詢時(shí),存儲直接把微塊上的數(shù)據(jù)按列批量投影到 SQL 引擎的內(nèi)存上。由于數(shù)據(jù)緊密排列,有著較好的 cache 友好性,同時(shí)投影過程都可以使用 SIMD 指令進(jìn)行加速。
看來列式存儲才是OLAP的通用解決方案,從OB官方的博文里可以看出其存儲模式其實(shí)可以選擇PAX存儲模式(行列混存)。TiDB為了實(shí)現(xiàn)OLAP也是引入了列存儲TiFlash。
向量化引擎對HTAP的價(jià)值與技術(shù)思考 - 知乎
3 相關(guān)概念介紹
3.0 評價(jià)指標(biāo)
好多產(chǎn)品標(biāo)榜RPO<0 RTO<30s,這些指標(biāo)什么含義呢。
RPO(Recovery Point Objective):它描述的是數(shù)據(jù)庫在一次故障停機(jī)恢復(fù)后可能丟失的數(shù)據(jù)量。
RTO(Recovery Time Objective):業(yè)務(wù)中斷恢復(fù)所需要的時(shí)間。
高可用的恢復(fù)點(diǎn)目標(biāo)(RPO)和恢復(fù)時(shí)間目標(biāo)(RTO) - 明礬 - 博客園
3.1 分布式一致性:Paxos、Raft、ZAB
Paxos:是Leslie Lamport在1990年提出的一種基于消息傳遞的一致性算法。基于Paxos協(xié)議的數(shù)據(jù)同步與傳統(tǒng)主備方式最大的區(qū)別在于:Paxos只需超過半數(shù)的副本在線且相互通信正常,就可以保證服務(wù)的持續(xù)可用,且數(shù)據(jù)不丟失。
Raft:是Paxos算法的一種簡化實(shí)現(xiàn)。
ZAB:在做分布式系統(tǒng)時(shí),我們常常需要維護(hù)管理集群的配置信息、服務(wù)的注冊發(fā)現(xiàn)、共享鎖等功能,而ZooKeeper正是解決這些問題的一把好手。ZAB(ZooKeeper Atomic Broadcast)則是為ZooKeeper設(shè)計(jì)的一種支持崩潰恢復(fù)的原子廣播協(xié)議。
Paxos、Raft、ZAB算法_知知之之的博客-CSDN博客_paxos raft zab
ETCD、Zookeeper和Consul 分布式數(shù)據(jù)庫的魔法銀彈_肥叔菌的博客-CSDN博客_etcd 兩地三中心
zookeeper與etcd的對比_zzhongcy的博客-CSDN博客_etcd與zookeeper
3.2 Shared-Nothing 架構(gòu)
Shared Nothing架構(gòu)是一 種分布式計(jì)算架構(gòu)。這種架構(gòu)中的每一個(gè)節(jié)點(diǎn)都有自己私有的CPU/內(nèi)存/硬盤等,這些資源都是獨(dú)立、自給的,整個(gè)系統(tǒng)中不存在共享資源,沒有單點(diǎn)競爭。例如:MPP模式和Hadoop模式。
01| 數(shù)據(jù)倉庫的技術(shù)架構(gòu)發(fā)展 - 知乎
3.2.1 PAX存儲
一種行列混合存儲方案——PAX(Partition Attributes Across)存儲模型:它在磁盤 page 里面使用了一種 mini page 的方式,將 record 切到到不同的 mini page 里面。簡單理解,就是各個(gè)page之間行存儲,page內(nèi)部列存儲,每個(gè)page里面的N行數(shù)據(jù)按照列存儲到不同mini page里面。也就是對行存儲和列存儲的一種折中存儲方案。
?PAX:一個(gè) Cache 友好高效的行列混存方案
總結(jié)
以上是生活随笔為你收集整理的HTAP混合事务/分析数据库调研的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: antd DatePicker 组件 月
- 下一篇: win10下装win7双系统_B360主