數據應用,是真正體現數倉價值的部分,包括且又不局限於 數據可視化、BI、OLAP、即席查詢,實時大屏,用戶畫像,推薦系統,數據分析,數據挖掘,人臉識別,風控反欺詐,ABtest等等。
數據倉庫架構圖
本文側重於數據應用之BI可視化和OLAP技術選型。
一、BI可視化工具
1.1 BI現狀
大數據時代商業智能(BI)和數據可視化訴求更為強烈,淘寶大屏更是風靡全球!數據可視化是大數據『最後一公裡』。
BI喚醒沉睡的數據。
傳統型BI力求大而全的統一綜合型報表和分析平臺,側重傳統式報表開發,儼然一把屠龍刀。現網際網路公司快速迭代的業務發展,需要的卻是倚天劍,促使自助式BI和敏捷BI得以迅速發展。
時代召喚,傳統BI巨頭也逐漸向自助式BI和雲BI轉型。一時間,BI數據可視化已呈現出"百家爭鳴,群雄爭霸"的態勢!
1.2 BI分類
統看業界可視化BI工具可大致分為:開源bi,商業bi,和傳統重bi工具。
業界目前比較流行的開源bi工具有Superset、metabase、Redash、Cboard、Spagobi等,商業bi工具有帆軟、tableau、PowerBI、SmartBI、QlinkView、QuickBI等,傳統企業、傳統數倉,大多依然沿用重bi產品,如Congos、BIEE、BO、MicroStrategydeng等。
二、OLAP基本操作和類型
OLAP,On-Line Analytical Processing,在線分析處理,主要用於支持企業決策管理分析。區別於OLTP,On-Line Transaction Processing,聯機事務處理。
OLAP的優勢:豐富的數據展現方式、高效的數據查詢以及多視角多層次的數據分析。
數據倉庫與OLAP的關係是互補的,現代OLAP系統一般以數據倉庫作為基礎,即從數據倉庫中抽取詳細數據的一個子集並經過必要的聚集存儲到OLAP存儲器中供前端分析工具讀取。
2.1 OLAP基本操作:
OLAP的多維分析操作包括:鑽取(Drill-down)、上卷(Roll-up)、切片(Slice)、切塊(Dice)以及旋轉(Pivot)。
★鑽取:維的層次變化,從粗粒度到細粒度,匯總數據下鑽到明細數據。如通過季度銷售數據鑽取每個月的銷售數據
★上卷:鑽取的逆,向上鑽取。從細粒度到粗粒度,細粒度數據到不同維層級的匯總。eg. 通過每個月的銷售數據匯總季度、年銷售數據
★切片:特定維數據(剩餘維兩個)。eg. 只選電子產品銷售數據
★切塊:維區間數據(剩餘維三個)。eg. 第一季度到第二季度銷售數據
★旋轉:維位置互換(數據行列互換),通過旋轉可以得到不同視角的數據。
2.2 OLAP分類:
OLAP按存儲器的數據存儲格式分為ROLAP(Relational OLAP)、MOLAP(Multi-dimensional OLAP)和 HOLAP(Hybrid OLAP)。
MOLAP,基於多維數組的存儲模型,也是OLAP最初的形態,特點是對數據進行預計算,以空間換效率,明細和聚合數據都保存在cube中。但生成cube需要大量時間和空間。
ROLAP,完全基於關係模型進行存儲數據,不需要預計算,按需即時查詢。明細和匯總數據都保存在關係型資料庫事實表中。
HOLAP,混合模型,細節數據以ROLAP存放,聚合數據以MOLAP存放。這種方式相對靈活,且更加高效。可按企業業務場景和數據粒度進行取捨,沒有最好,只有最適合。
三、OLAP資料庫選型
在大數據數倉架構中,離線以Hive為主,實時計算一般是Spark+Flink配合,消息隊列Kafka一家獨大,後起之秀Pulsar想要做出超越難度很大,Hbase、Redis和MySQL都在特定場景下有一席之地。
唯獨在OLAP領域,百家爭鳴,各有所長。
OLAP引擎/工具/資料庫,技術選型可有很多選擇,傳統公司大多以Congos、Oracle、MicroStrategy等OLAP產品,網際網路公司則普遍強勢擁抱開源,如
Presto,Druid ,Impala,SparkSQL,AnalyticDB,(Hbase)Phoenix,kudu, Kylin,Greenplum,Clickhouse, Hawq, Drill,ES等
在數據架構時,可以說目前沒有一個引擎能在數據量,靈活程度和性能上(吞吐和並發)做到完美,用戶需要根據自己的業務場景進行選型。
開源技術選型,MOLAP可選Kylin、Druid,ROLAP可選Presto、impala等
Presto
Presto 是由 Facebook 開源的大數據分布式 SQL 查詢引擎,基於內存的低延遲高並發並行計算(mpp),適用於交互式分析查詢。
首先我們先來看一下Presto官方的介紹:
☆ 本身並不存儲數據,但是可以接入多種數據源,包括Hive、RDBMS(Mysql、Oracle、Tidb等)、Kafka、MongoDB、Redis等
☆ 完全支持ANSI SQL標準,用戶可以直接使用 ANSI SQL 進行數據查詢和計算
☆ 可以混合多個catalog進行join查詢和計算,支持跨數據源的級聯查詢
☆ 基於PipeLine進行設計的,流水管道式數據處理,支持數據規模GB~PB,計算中拿出一部分放在內存、計算、拋出、再拿。
☆ SQL on Hadoop:彌補Hive的效率性能和靈活性的不足,Presto和Spark SQL、Impala有很多異曲同工之處。
presto架構(master+slaver模式):
Presto應用場景:
Druid
Druid是一個用於大數據實時查詢和分析的高容錯、高性能開源分布式系統,用於解決如何在大規模數據集下進行快速的、交互式的查詢和分析。
數據可以實時攝入,進入到Druid後立即可查,同時數據是幾乎是不可變。通常是基於時序的事實事件,事實發生後進入Druid,外部系統就可以對該事實進行查詢。
Druid架構
基本特點
Apache Druid 具有以下特點:
亞秒級 OLAP 查詢,包括多維過濾、Ad-hoc 的屬性分組、快速聚合數據等等。
實時的數據消費,真正做到數據攝入實時、查詢結果實時。
高效的多租戶能力,最高可以做到幾千用戶同時在線查詢。
擴展性強,支持 PB 級數據、千億級事件快速處理,支持每秒數千查詢並發。
極高的高可用保障,支持滾動升級。
應用場景
實時數據分析是 Apache Druid 最典型的使用場景。該場景涵蓋的面很廣,例如:
實時指標監控
推薦模型
廣告平臺
搜索模型
Druid也有很多不足需要注意,由於druid屬於時間存儲,刪除操作比較繁瑣,且不支持查詢條件刪除數據,只能根據時間範圍刪除數據。Druid能接受的數據的格式相對簡單,比如不能處理嵌套結構的數據。
Druid案例
知乎:技術選型上,知乎根據不同業務場景選擇了HBase 和 Redis 作為實時指標的存儲引擎,在OLAP選型上,知乎選擇了Druid。
OPPO:而OPPO根據自身不同的業務場景,報表層選擇了Druid,標籤選擇了ES,接口層選擇了Hbase。
Kylin
Apache Kylin是一個開源的分布式分析引擎,提供Hadoop/Spark之上的SQL查詢接口及多維分析(OLAP)能力以支持超大規模數據,最初由eBay Inc. 開發並貢獻至開源社區。它能在亞秒內查詢巨大的Hive表。
kylin特性:
可擴展超快olap引擎,Hadoop/Spark上百億數據規模
提供 Hadoop ANSI SQL 接口
交互式查詢能力,用戶可以與Hadoop數據進行亞秒級交互
百億以上數據集構建多維立方體(MOLAP CUBE)
與BI工具無縫整合,如Tableau,PowerBI/Excel,MSTR,QlikSense,Hue和SuperSet
kylin生態圈:
Clickhouse
Clickhouse是一個用於在線分析處理(OLAP)的列式資料庫管理系統(DBMS)。
是由俄羅斯的Yandex公司為了Yandex Metrica網絡分析服務而開發。它支持分析實時更新的數據,Clickhouse以高性能著稱。
先看一下官方定義:
ClickHouse is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).
場景特徵:
大多數是讀請求
數據總是以相當大的批(> 1000 rows)進行寫入
不修改已添加的數據
每次查詢都從資料庫中讀取大量的行,但是同時又僅需要少量的列
寬表,即每個表包含著大量的列
較少的查詢(通常每臺伺服器每秒數百個查詢或更少)
對於簡單查詢,允許延遲大約50毫秒
列中的數據相對較小:數字和短字符串(例如,每個URL 60個字節)
處理單個查詢時需要高吞吐量(每個伺服器每秒高達數十億行)
事務不是必須的
對數據一致性要求低
每一個查詢除了一個大表外都很小
查詢結果明顯小於源數據,換句話說,數據被過濾或聚合後能夠被盛放在單臺伺服器的內存中
clickhouse自身限制:
不支持真正的刪除/更新支持 不支持事務
不支持二級索引
有限的SQL支持,join實現與眾不同
不支持窗口功能
元數據管理需要人工幹預維護
ClickHouse開源的出現讓許多想做大數據並且想做大數據分析的很多公司和企業耳目一新。ClickHouse 正是以不依賴Hadoop 生態、安裝和維護簡單、查詢速度快、可以支持SQL等特點在大數據分析領域披荊斬棘越走越遠。
ADB(AnalyticDB for MySQL)
分析型資料庫MySQL版(AnalyticDB for MySQL),是阿里巴巴自主研發的海量數據實時高並發在線分析(Realtime OLAP)雲計算服務,使得您可以在毫秒級針對千億級數據進行即時的多維分析透視和業務探索。
adb優勢和特性
超大規模:極致彈性輕鬆擴展至PB級規模
簡單易用:全面兼容MySQL協議和BI工具
實時化分析:通過實時同步,報表延時1分鐘內
查詢速度快:傳統關係型資料庫的5-10倍性能
基於adb實時數倉架構
通過數據傳輸服務DTS(Data Transmission Service),您可以將RDS for MySQL同步到AnalyticDB for MySQL,幫助您快速構建企業內部BI、交互查詢、實時報表等系統。
adb數據化鏈路架構
四、結束語
☆ 對於數據架構,不管是數據倉庫、數據湖,還是數據中臺,數據應用才是數據價值體現所在
☆ 對於可視化BI工具,通幽洞微,建議熟練掌握2-3款即可,理解工具思想和實現方式
☆ 對於OLAP資料庫,沒有一個引擎能同時在數據量、性能、和靈活性三個方面做到完美,每個系統在設計時都需要在這三者間做出取捨。
參考資料:
[1]https://help.aliyun.com/document_detail/72987.html
[2]http://kylin.apache.org/cn/
[3]https://clickhouse.yandex/
[4]https://clickhouse.yandex/docs/zh/
[5][外]-分析型資料庫AnalyticDB產品白皮書