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 產品整體架構
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混合事务/分析数据库调研的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: antd DatePicker 组件 月
- 下一篇: win10下装win7双系统_B360主