【DBMS學習系列】DBMS(數(shù)據庫管理系統(tǒng))的存儲模型
一、前置知識
1.1 什么是OLAP 和 OLTP?
On-Line Analytical Processing,簡稱OLAP(聯(lián)機分析處理),是一種用于處理大規(guī)模數(shù)據的技術,它提供了一種靈活的分析和查詢方式,能夠幫助用戶從不同維度來分析和理解業(yè)務數(shù)據。
On-Line Transaction Processing,簡稱OLTP(聯(lián)機事務處理),是一種數(shù)據處理類型,包括執(zhí)行多個并發(fā)的事務,例如網上銀行、購物、訂單處理等。
OLAP和OLTP的主要區(qū)別:聯(lián)機分析處理 (OLAP) 系統(tǒng)的主要用途是分析聚合數(shù)據,而聯(lián)機事務處理 (OLTP) 系統(tǒng)的主要用途是處理數(shù)據庫事務。
? 使用 OLAP 系統(tǒng)來生成報告、執(zhí)行復雜的數(shù)據分析和確定趨勢。
? 使用 OLTP 系統(tǒng)來處理訂單、更新庫存和管理用戶賬戶
OLAP和OLTP的相似之處:都是用于存儲和處理大量數(shù)據的數(shù)據庫管理系統(tǒng),都需要高效可靠的 IT 基礎設施才能平穩(wěn)運行。
1.2 OLAP WorkLoad
OLAP經常對大量的Read-Only數(shù)據進行順序掃描。所以底層的OLAP數(shù)據庫需要把各個數(shù)據條目按照條件篩選出來,然后拼接在一起。
OLAP使用索引來查找數(shù)據,不需要順序掃描。
? 基于樹的索引(B+樹)用于具有低選擇性謂詞的查詢。
? 需要適應增量更新
1.3 順序掃描的優(yōu)化點
? 數(shù)據編碼/壓縮
? 指令預取
? 并行化
? 聚類/排序
? 延遲物化
? 物化視圖/結果緩存
? 數(shù)據跳過
? 數(shù)據并行化/向量化
? 代碼特化/編譯
二、DBMS的存儲模型
DBMS,數(shù)據庫管理系統(tǒng)。 這里指的比較通用,不區(qū)分OLAP數(shù)據庫,OLTP數(shù)據庫。
DBMS的存儲模型決定了它如何把磁盤和內存里的數(shù)據在物理上有效地組織起來。
一般有三種模型:N-ary Storage Model (NSM,行存儲)、Decomposition Storage Model (DSM,列存儲)、Hybrid Storage Model (PAX,混合存儲),前兩種是兩個方向的極端,第三種PAX是前兩種的折中。計算機領域很多方案的設計都是這種折中,權衡的思想。
2.1 N-ary Storage Model (NSM,行存儲)
NSM就是我們所說的行存儲,DBMS把每個tuple中的所有屬性連續(xù)的存儲在一個Page中。
這樣的存儲方式對于OLTP這種寫操作較多且通常只訪問單個的entities來說是非常理想的。
圖片
但對于OLAP場景來說,通常只對指定的幾個列做分析,這樣會導致讀取很多無效的數(shù)據(不會用到的列的數(shù)據也被讀出來了),從而影響查詢的效率。例如下面的例子:
圖片
因此催生出了列式存儲。
2.2 Decomposition Storage Model (DSM,列存儲)
DSM就是我們常說的列存儲,在DSM中,DBMS把所有tuples的每個列單獨連續(xù)的存儲在Page中。每個列都維護單獨的文件進行存儲。
這種存儲方式有利于OLAP這種讀場景較多且會對某些列進行大量查詢的場景。在OLAP場景下,針對某個列進行過濾或聚合時,則只需要讀這個列所在的Page就行。
圖片
下面是一個DSM在OLAP的例子:關于在不同page里(不同列)屬于同一個元組的數(shù)據的識別方法有兩種,一種是固定長度的偏移(這種可能造成空間浪費,取決于字節(jié)數(shù)最大的那個值),另一種是變長偏移(借助字典編碼方式,工程實現(xiàn)里一般都是采用這種方式)。
圖片
DSM的優(yōu)缺點如下:
優(yōu)點:1、減少大量的無效I/O查詢。2、查詢更快,因為增加了數(shù)據本地性和緩存數(shù)據復用3、更好的數(shù)據壓縮(同一列的數(shù)據類型一樣,一般可以采用某種數(shù)據編碼方式統(tǒng)一壓縮)
缺點:1、點查、插入、更新、刪除比較慢,因為有元組的切分、拼接、重組等過程。
2.3 Hybrid Storage Model (PAX,混合存儲)
PAX是一種混合存儲模型,是行存和列存的一種綜合折中存儲模型。
它先水平地把元組行切分成多個groups。 然后每個組group內再垂直地把元組的數(shù)星切分到列里,它在每個Page中垂直區(qū)分保存表的每個屬性。 全局元數(shù)據目錄包含了文件的row group的偏移(例如orc、parquet文件的footer),每一個row group也有自己的元數(shù)據header。
采用這種模型的目的是為了既能獲得列存的快速處理的高性能又能獲得行存的空間本地性優(yōu)勢,Parquet、 ORC、Arrow都是采用的PAX這種存儲模式。
示意圖如下:
圖片
以上就是本文要講的主要內容。
接下來的1-2個章節(jié)會學習關于數(shù)據格式(data-format)的設計、 數(shù)據壓縮等內容。