一篇帶你了解OLTP vs. OLAP
背景
隨著大數據技術在各行各業的深入應用,對于海量數據的分析需求也愈加凸顯,OLAP技術也逐漸走入人們的視野,OLTP和OLAP看起來相似,但指的是不同類型的數據庫系統。它們都是在線處理系統。本文將介紹一下二者的區別
OLTP
介紹
OLTP,也叫聯機事務處理(Online Transaction Processing),表示事務性非常高的系統,一般都是高可用的在線系統,以小的事務以及小的查詢為主,評估其系統的時候,一般看其每秒執行的Transaction以及Execute SQL的數量。在這樣的系統中,單個數據庫每秒處理的Transaction往往超過幾百個,或者是幾千個,Select 語句的執行量每秒幾千甚至幾萬個。典型的OLTP系統有電子商務系統、銀行、證券等,如美國eBay的業務數據庫,關系型數據庫(mysql、PostgreSQL、DB2、Oracle...)就是很典型的OLTP數據庫。
特點
- 支持大量并發用戶定期添加和修改數據。
- 反映隨時變化的單位狀態,但不保存其歷史記錄。
- 包含大量數據,其中包括用于驗證事務的大量數據。
- 可以進行優化以對事務活動做出響應。
- 提供用于支持單位日常運營的技術基礎結構。
- 個別事務能夠很快地完成,并且只需訪問相對較少的數據。
- 實時性要求高。
- 交易一般是確定的,所以OLTP是對確定性的數據進行存取。
- 并發性要求高并且嚴格的要求事務的完整、安全性。
OLTP系統
數據庫設計要求
- 良好的數據存儲:對于 OLTP 系統,輸入/輸出瓶頸是一個尤為關心的問題,原因在于修改整個數據庫中數據的用戶很多。確定數據的可能訪問模式,并將經常訪問的數據放在一起。在此過程中,可輔以文件組和 RAID系統
- 支持高并發:在事務期間,避免用戶交互。無論何時,只要有可能,就通過執行單個存儲過程來處理整個事務。在事務內對表的引用順序可能會影響并發性。將對經常訪問的表的引用置于事務的末尾,以便將控制鎖的持續時間減至最短。
- 數據備份:OLTP 系統一般要求故障率要極地,為達到此目的,停機時間要保持最小。盡管 Microsoft SQL Server 2000 可以在數據庫正在使用時對其進行備份,但是應將備份過程安排在活動不頻繁時進行,以使對用戶的影響減至最小。
- 數據庫高度規范化:盡可能減少冗余信息以提高更新的速度,從而提高并發性。減少數據還可以提高備份的速度,因為只需要備份更少的數據。
- 減少歷史或聚合數據:可以將很少引用的數據歸檔到單獨的數據庫中,或者從經常更新的表中移出,這將保持表盡可能地小,從而縮短備份時間,改善查詢性能。
- 合理利用索引:避免對經常更新的表進行過多的索引,應該保持索引范圍應較窄。
OLAP
介紹
OLAP(On-line Analytical Processing,聯機分析處理)是在基于數據倉庫多維模型的基礎上實現的面向分析的各類操作的集合,60年代,關系數據庫之父E.F.Codd提出了關系模型,促進了聯機事務處理(OLTP)的發展(數據以表格的形式而非文件方式存儲)。1993年,E.F.Codd提出了OLAP概念,認為OLTP已不能滿足終端用戶對數據庫查詢分析的需要,OLAP的優勢是基于數據倉庫面向主題、集成的、保留歷史及不可變更的數據存儲,以及多維模型多視角多層次的數據組織形式,如果脫離了這兩點,OLAP將不復存在,也就沒有優勢可言。在實際的商業分析中,OLAP聯機分析更多的是指對數據分析的一種解決方案。目前大數據業內非常流行的開源OLAP引擎Hive、SparkSQL、FlinkSQL、Clickhouse、Elasticsearch、Druid、Kylin、Presto、Impala分等,但是可以說目前沒有一個引擎能在數據量,靈活程度和性能上做到完美,用戶需要根據自己的需求進行選型。
特點
- 快速性:用戶對OLAP的快速反應能力有很高的要求。系統應能在5秒內對用戶的大部分分析要求做出反應。
- 可分析性:OLAP系統應能處理與應用有關的任何邏輯分析和統計分析。
- 多維性:多維性是OLAP的關鍵屬性。系統必須提供對數據的多維視圖和分析,包括對層次維和多重層次維的完全支持。
- 信息性:不論數據量有多大,也不管數據存儲在何處,OLAP系統應能及時獲得信息,并且管理大容量信息。
分類
OLAP 是一種讓用戶可以從不同視角方便快捷地分析數據的計算方法。主流的 OLAP 可以分為3類:多維OLAP ( Multi-dimensional OLAP )、關系型OLAP ( Relational OLAP ) 和混合OLAP ( Hybrid OLAP ) 三大類。
- 多維OLAP ( MOLAP,Multi-dimensional OLAP ):MOLAP基于直接支持多維數據和操作的本機邏輯模型。數據物理上存儲在多維數組中, 并且使用定位技術來訪問它們。MOLAP的典型代表是:Druid 和 Kylin。MOLAP一般會根據用戶定義的數據維度、度量(也可以叫指標)在數據寫入時生成預聚合數據;Query查詢到來時,實際上查詢的是預聚合的數據而不是原始明細數據,在查詢模式相對固定的場景中,這種優化提速很明顯。優點性能高,支持復雜的跨維計算與多用戶讀寫,缺點:難以達到TB 級,缺乏數據模型和數據訪問的標準
- 關系型OLAP ( ROLAP,Relational OLAP ):關系OLAP(ROLAP)是中間服務器, 它們位于關系后端服務器和用戶前端工具之間,其使用關系或擴展關系DBMS來保存和處理倉庫數據, 并使用OLAP中間件來提供丟失的數據。ROLAP的典型代表是:Presto,Impala,GreenPlum,Clickhouse,Elasticsearch,Hive,Spark SQL,Flink SQL。優點:沒有大小限制,可以通過SQL實現詳細數據與概要數據的存儲,缺點:不支持有關預計算的讀寫操作,無法完成維之間的計算。
- 混合OLAP ( HOLAP,Hybrid OLAP ):混合 OLAP,是 MOLAP 和 ROLAP 的一種融合。當查詢聚合性數據的時候,使用MOLAP 技術;當查詢明細數據時,使用 ROLAP 技術。在給定使用場景的前提下,以達到查詢性能的最優化,混合 OLAP的優勢在于其很好的結合了MOLAP和ROLAP的優勢之處,劣勢恰恰在于其由于集成了MOLAP和ROLAP,本身的體系結構會非常復雜
OLAP系統
OLAP數據層次劃分
- 維度(Dimension):是用戶觀察數據的特定角度,是問題的一類屬性,屬性集合構成一個維度(時間維、地理維等)
- 維度的層次(Level):用戶觀察數據的某個特定角度(即某個維度)還可能存在細節程度不同的各個描述方面(時間維包括日期、月份、季度、年)
- 維度的成員(Member):即維度的一個取值,是數據項在某個維度中位置的描述,如“某年某月某日”是在時間維度上的位置描述
- 度量(Measure):多維數組的取值。
OLAP多維數據結構
- 超立方結構(Hypercube):超立方結構指用三維或更多的維數來描述一個對象,每個維彼此垂直。數據的測量值發生在維的交叉點上,數據空間的各個部分都有相同的維屬性。(收縮超立方結構。這種結構的數據密度更大,數據的維數更少,并可加入額外的分析維)。
- 多立方結構(Multicube):即將超立方結構變為子立方結構。面向某一特定應用對維進行分割, 它具有很強的靈活性,提高了數據(特別是稀疏數據)的分析效率。
OLAP多維數據分析
- 切片和切塊(Slice and Dice):在多維數據結構中,按二維進行切片,按三維進行切塊,可得到所需要的數據。如在“城市、產品、時間”三維立方體中進行切塊和切片,可得到各城市、各產品的銷售情況。
- 鉆取(Drill):鉆取包含向下鉆取(Drill-down)和向上鉆取(Drill-up)/上卷(Roll-up)操作, 鉆取的深度與維所劃分的層次相對應。
- 旋轉(Rotate)/轉軸(Pivot):通過旋轉可以得到不同視角的數據。
總結
OLTP是傳統的關系型數據庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。OLAP是數據倉庫系統的主要應用,支持復雜的分析操作,側重決策支持,并且提供直觀易懂的查詢結果。 OLTP 系統強調數據庫內存效率,強調內存各種指標的命令率,強調綁定變量,強調并發操作;OLAP 系統則強調數據分析,強調SQL執行市場,強調磁盤I/O,強調分區等。 OLTP系統最容易出現瓶頸的地方就是CPU與磁盤。 OLTP適用于數據量少,DML頻繁,并行事務處理多的場景。OLAP適用數據量大,DML少。