回到正題!
我們把數據處理粗暴分成兩大類:聯機事務處理OLTP(on-line transaction processing)、聯機分析處理OLAP(On-Line Analytical Processing)。
60年代,關係資料庫之父E.F.Codd提出了關係模型,促進了聯機事務處理(OLTP:Online Transaction Processing)。1993年,E.F.Codd提出了聯機分析處理(OLAP:Online Analytical Processing)概念,認為OLTP已不能滿足終端用戶對資料庫查詢分析的需要,SQL對大型資料庫進行的簡單查詢也不能滿足終端用戶分析的要求。用戶的決策分析需要對關係資料庫進行大量計算才能得到結果,而查詢的結果並不能滿足決策者提出的需求。因此,E.F.Codd提出了多維資料庫和多維分析的概念,即OLAP。(反正就是OLAP是分析的)
OLTP是傳統的關係型資料庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。一般都是高可用的在線系統,以小的事務以及小的查詢為主,評估其系統的時候,一般看其每秒執行的Transaction以及Execute SQL的數量。在這樣的系統中,單個資料庫每秒處理的Transaction往往超過幾百個,或者是幾千個,Select 語句的執行量每秒幾千甚至幾萬個。
OLTP的特點一般有:
1.實時性要求高。
2.數據量不是很大,生產庫上的數據量一般不會太大,而且會及時做相應的數據處理與轉移。
3.交易一般是確定的,是對確定性的數據進行存取 。
4.高並發,並且要求滿足ACID原則。比如大型的購物網站秒殺活動時上萬的QPS請求。
OLAP是數據倉庫系統的主要應用,支持複雜的分析操作,側重決策支持,並且提供直觀易懂的查詢結果。OLAP系統多用於在線指標分析,舉個例子:某個AB實驗,A桶用戶比B桶用戶效果好。還希望去下鑽分析到底是那個年齡段的用戶效果好。OLAP系統百花齊放,每一個都有其擅長的領域,例如Apache Kylin,Apache Kudu,ClickHouse等。在這樣的系統中,語句的執行量不是考核標準,因為一條語句的執行時間可能會非常長,讀取的數據也非常多。所以,在這樣的系統中,考核的標準往往是磁碟子系統的吞吐量(帶寬),如能達到多少MB/s的流量。在OLAP系統中,常使用的技術有分區技術,並行技術。如分區技術可以使得一些大表的掃描變得很快(只掃描單個分區),而且方便管理。另外,如果分區結合併行的話,也可以使得整個表的掃描也會變得很快。
OLAP的特點一般有:
1.實時性要求不是很高,比如最常見的應用就是天級更新數據,然後出對應的數據報表。
2.數據量大,因為OLAP支持的是動態查詢,所以用戶也許要通過將很多數據的統計後才能得到想要知道的信息,例如時間序列分析等等,所以處理的數據量很大;
3.OLAP系統的重點是通過數據提供決策支持,所以查詢一般都是動態,自定義的。所以在OLAP中,維度的概念特別重要。一般會將用戶所有關心的維度數據,存入對應數據平臺。
周末快樂快樂快樂!