OLTP vs OLAP 區(qū)別和聯(lián)系
OLTP 和 OLAP 這兩個概念在十來年前、十幾年前商業(yè)智能BI這個詞還不是那么普及的時候,還經(jīng)常放在一起做比較,現(xiàn)在已經(jīng)很少再單獨拿出來做對比了,但也總還是有人會問到,我在這里大概講下兩個概念的差別和聯(lián)系。
什么是OLTP 和 OLAP
OLTP 英文全稱是 Online Transaction Processing System,在線事務處理系統(tǒng)。OLAP 英文全稱是 Online Analytical Processing System,在線分析處理系統(tǒng)。從名詞上看差異就是一個是事務處理,一個是分析處理。

這個名詞從英文翻譯過來還是有些生硬,換種簡單的方式來理解 OLTP 就可以理解為日常的業(yè)務系統(tǒng),比如像 ERP、OA、CRM 等等,這些業(yè)務系統(tǒng)主要是管理企業(yè)的基本業(yè)務流程,對數(shù)據(jù)的處理方式主要是以增、刪、改為主。也有查詢,但查詢的SQL的結(jié)構(gòu)相對比較簡單。
OLAP就可以理解為分析型系統(tǒng),比如在商業(yè)智能BI應用中,支撐到前端可視化分析的數(shù)據(jù)倉庫。商業(yè)智能BI底層使用到的數(shù)據(jù)庫通常我們會稱為數(shù)據(jù)倉庫,數(shù)據(jù)倉庫的主要目的一個是打通各個業(yè)務系統(tǒng)即OLTP的數(shù)據(jù)庫,整合之后提供給前端商業(yè)智能BI可視化分析工具或者報表工具來使用。

如果只是把商業(yè)智能BI定義為數(shù)據(jù)可視化或者可視化的工具,就有些過于狹義了。實際上商業(yè)智能BI不僅僅只包含數(shù)據(jù)可視化,更應該包含數(shù)據(jù)倉庫,數(shù)據(jù)倉庫是整個商業(yè)智能BI的核心部分,所以談到OLAP的時候就一定會談到商業(yè)智能BI。
OLTP 和 OLAP的差異與聯(lián)系
上面是一些基本的概念,再來具體說下兩者的差異和聯(lián)系,大概有六個點。
第一,在底層數(shù)據(jù)處理層面,OLTP 以SQL增刪改處理為主,OLAP以SQL查詢操作為主。數(shù)據(jù)來源層面,OLTP 的數(shù)據(jù)來源就是它們前端的應用,就是B/S架構(gòu)或者C/S架構(gòu)的 B Browser 瀏覽器或者 C Client,就理解為用戶在各種系統(tǒng)上錄入數(shù)據(jù)就可以了。

第二,OLAP的數(shù)據(jù)來源就是不同的 OLTP數(shù)據(jù)庫,所以O(shè)LAP本身是不產(chǎn)生數(shù)據(jù)的,通過ETL從OLTP抽取數(shù)據(jù)到OLAP數(shù)據(jù)庫即數(shù)據(jù)倉庫中做整合清洗達到可分析的數(shù)據(jù)標準。
第三,OLTP數(shù)據(jù)處理的時間相對較短,增、刪、改操作,就像在頁面上點擊一個提交案例、下一步操作等等;但是OLAP數(shù)據(jù)處理的時間可能就會很長,比如一個大查詢可能查詢的數(shù)據(jù)量非常長,相對增刪改時間周期會拉的更長一些,取決于OLAP數(shù)據(jù)結(jié)構(gòu)的規(guī)范性以及返回數(shù)據(jù)量的大小。
第四,OLTP 也有查詢操作,但查詢的操作都相對比較簡單;OLAP 的查詢相對可以很復雜;
第五,OLTP系統(tǒng)在底層數(shù)據(jù)庫的設(shè)計上通常采用3NF設(shè)計方式,避免數(shù)據(jù)冗余,很適合頻繁的增刪改操作;OLAP系統(tǒng)主要是面向分析型應用準備的,因此在底層數(shù)據(jù)庫即數(shù)據(jù)倉庫的設(shè)計上通常會采用反三范式的方式,比如Kimball 的維度建模方式,刻意的保留數(shù)據(jù)冗余,很適合分析查詢操作。

當然,在OLAP系統(tǒng)底層數(shù)據(jù)倉庫的架構(gòu)中也有采用3NF建模的,主要目的是為了統(tǒng)一業(yè)務數(shù)據(jù)標準,但真正面向分析服務的時候還是會在3NF的基礎(chǔ)上再構(gòu)建一套反三范式的Kimball星型模型或者雪花型模型的數(shù)據(jù)架構(gòu)。
第六,OLTP由于采用3NF建模,所以對數(shù)據(jù)的完整性要求很高,必須采用完整性約束。但是OLAP本身就不是面向業(yè)務交易信息的,不對業(yè)務過程負責,并且數(shù)據(jù)也不會頻繁修改,所以是沒有完整性約束這一說的。比如OLTP里面一個事務沒有提交成功,或者失敗了,事務是要回滾的。OLAP里面沒有這種處理,跑不成功再重新跑一遍就可以了。
上面的內(nèi)容基本上把OLTP和OLAP的定義和概念,差別和聯(lián)系大概都介紹到了,下次再來講下OLAP CUBE多維立方體、空間換時間、MDX等等到底是一個什么概念,感興趣的朋友可以回頭來看看。