OLTP( On-Line Transaction Processing ) 聯機事務處理過程,通常也可以成為面向交易的處理系統。個人理解為主要場景針對用戶人機交互頻繁,數據量小,操作快速響應的實時處理系統中。Mysql以及Oracle等數據庫軟件可以理解為OLTP的工業應用軟件體現。

OLAP( On-Line Analytical Processing),聯機分析處理過程。個人理解為主要場景針對大批量數據,實時性無要求,基於數倉多維模型,進行分析操作的系統中。Hadoop體系中MapReduce、Hive、Spark、Flink等都可以進行為OLAP實現。

OLAP和OLTP區別

OLAP的特點

  • 從用戶的思考⻆度出發,仿照用戶思考模式預先為構建多維的數據模型。
  • 用戶可以快速查詢分析各個維度數據
  • 能動態的在各個維度之間切換或者進行多維度綜合分析,具有極大的分析靈活性。

OLAP和數倉的關系

OLAP和數倉的關系是互補的。 一般以數據倉庫作為基礎,即從數據倉庫中抽取詳細數據的一個子集並經過必要的聚集存儲到OLAP存儲中供數據分析工具讀取。

在規范化數據倉庫中OLAP工具和數據倉庫的關系大致是這樣的:

這種情況下,OLAP不允許訪問中心數據庫。一方面中心數據庫是采取規范化建模的,而OLAP隻支持對維度建模數據的分析;另一方面規范化數據倉庫的中心數據庫本身就不允許上層開發人員訪問。而在維度建模數據倉庫中,OLAP/BI工具和數據倉庫的關系則是這樣的:

在維度建模數據倉庫中,OLAP不但可以從數據倉庫中直接取數進行分析,還能對架構在其上的數據集市群做同樣工作。

DataCube數據魔方

很多年前,當我們要手工從一堆數據中提取信息時,我們會分析一堆數據報告。通常這些數據報告采用二維表示,是行與列組成的二維表格。 但在真實世界裡我們分析數據的角度很可能有多個,數據立方體可以理解為就是維度擴展後的二維表格。 下圖展示瞭一個多維數據抽象的數據立方體:

盡管這個例子是三維的,但更多時候數據立方體是N維的。對於大多數純OLAP使用者來講,數據分析的對象就是這個邏輯概念上的數據立方體,其具體實現不用深究。對於這些OLAP工具的使用者來講,基本用法是首先配置好維表、事實表,然後在每次查詢的時候告訴OLAP需要展示的維度和事實字段和操作類型即可。

下面介紹數據魔方中(OLAP基本操作)最常見的五大操作:

  • 切片
  • 切塊
  • 旋轉
  • 上卷
  • 鉆取

切片和切塊

在數據立方體的某一維度上選定一個維成員的操作叫切片,而對兩個或多個維執行選擇則叫做切塊。

# 切片
SELECT Locates.地區, Products.分類, SUM(數量)
FROM Sales, Dates, Products, Locates
WHERE Dates.季度 = 2
AND Sales.Date_key = Dates.Date_key
AND Sales.Locate_key = Locates.Locate_key
AND Sales.Product_key = Products.Product_key
GROUP BY Locates.地區, Products.分類

# 切塊
SELECT Locates.地區, Products.分類, SUM(數量)
FROM Sales, Dates, Products, Locates
WHERE (Dates.季度 = 2 OR Dates.季度 = 3) AND (Locates.地區 = '江蘇' OR Locates.地區 = '上海')
AND Sales.Date_key = Dates.Date_key
AND Sales.Locate_key = Locates.Locate_key
AND Sales.Product_key = Products.Product_key
GROUP BY Dates.季度, Locates.地區, Products.分類