編輯導語:在業務分析過程中,你應該選擇實時數據還是離線數據?這需要依據業務場景來進行判斷,不能盲目選擇。那麼,二者的優缺點是什麼?各自适合應用于什麼場景?本篇文章裡,作者針對如何選擇離線數據和實時數據這一問題做了解答,一起來看一下。
做數據和用數據的人繞不開的問題是數據的時效性,離線數據、實時數據分别指的是什麼,業務應用時,究竟該以什麼标準選擇呢?很多業務産品或運營搞不懂兩者的區别。提數據分析需求,想着肯定越實時越好,數據團隊怎樣拒絕?
一、什麼是離線數據、實時數據?數據從業務端産生,到分析或者反哺業務使用,需要經過一系列的清洗、處理過程,而這一過程帶來時間窗口大小,就是數據的時效性。按照數據延遲的大小,可以将數據分為離線數據和以及實時數據(準實時)。
1. 離線數據
離線數據一般是指T-1的日期,例如今天的日期T=2021-11-12,那麼數據結果中,能夠體現的業務數據隻包括前一天的(昨日數據)。有人也稱之為T 1的數據,把數據日期當作T,叫法不同,但本質都是指的今天處理的數據最新日期是截止昨天。
2. 實時數據
實時數據主要是指的數據延遲小,例如毫秒、秒、分鐘級的延遲,小時級的延遲稱之為“準實時數據“更為準确了。例如,你熬夜趕在雙十一晚上的最後1分鐘,成功付了尾款,在雙十一實時統計大屏中,GMV的值又滾動了一下。
二、處理技術有何差異
1. 離線數據處理
離線數據處理也稱之為“批處理”,數據産生之後,不會立即進行清洗,而是在固定的周期進行ETL,例如每天在淩晨12:00之後,處理前一天産生的數據。上大學的時候,有的舍友喜歡将襪子攢起來,一個星期洗一次,這就是批處理的思想。
離線數據處理技術是大數據發展更早,目前已經非常成熟的一套體系,最常見是Hadoop,它是一個能夠對大量數據進行分布式處理的軟件框架。以一種可靠、高效、可伸縮的方式進行數據處理。核心組件是HDFS、Mapreduce、Hive。以HDFS進行數據存儲,Mapreduce計算,Hive進行數據倉庫建設或者基于HiveSQL進行數據查詢。
主要優點是:
- 能夠處理的數據量巨大,從企業成立以來的曆史數據,都可以存儲、計算處理、分析應用。
- 數據更準确,對于一些交易類的業務,存在訂單狀态流轉,例如酒店,用戶早上下了訂單,但是下午有突發情況行程有變,取消了。在離線數據處理時,取當天訂單成功狀态,就不會計算在内。但對于數據漂移,即12點前下單,12點後取消的情況,就也無法統計到了,這種情形,在數據清洗任務處理時,可以采用全量更新的方式,每日更新全部數據,取最終的訂單狀态。
缺點:
離線數據的缺點也很明顯,就是慢。今天的數據,要隔天(明天)才能看得到。
2. 實時數據處理技術
實時數據處理,也稱之為“流式”數據處理,數據像水流一樣每時每刻源源不斷地産生後,就立即被清洗處理。這就好比,穿的襪子髒了就洗,今日事今日畢,而不是都攢着。
實時數據一般是業務端即席産生(水源),通過Kafka等消息通道(水流管道)進行傳輸,利用Storm或flink等實時組件進行消費處理。例如,雙十一統計每秒鐘的訂單數。
主要優點:
數據時效性強,可以做到秒級或者毫秒級時延,“所見即所得”。
缺點
- 需要不停地進行數據計算,即每秒鐘或者每分鐘進行數據清洗和計算,集群資源消耗大。離線數據處理,任務一天跑一次,一次1小時,實時數據處理每分鐘跑一次,一天24小時都在跑。
- 數據周期短,由于是流式處理的方式,相應的組件在實時處理方面能力強,但是沒辦法存儲太長時間的數據,如果容器隻進不出,水終究會溢出。因此,一般數據計算的周期會限定在一周内居多。
三、離線、實時各自适用的場景是什麼,如何選擇?
數據的應用場景總結下來其實就是兩個,數據分析與數據應用。
1. 在分析方面,數據時效性的選擇依據是什麼呢?
1)業務經營分析、财務分析準确性大于時效性
即對于數據分析的場景,更在意的是能夠更加準确地反映業務表現情況,即使T 1天後才可以看到數據也可以接受。尤其是财務結算,一般是月度結算或者季度财報,準确性是第一位的。
2)預警監控類分析,需要追求實時性
如果所有的分析數據都是需要隔天才能看到,肯定是不行的。如果系統宕機了,或者服務異常導緻産品不可用,用戶投訴才發現或者隔天數據分析才發現,帶來的業務損失就無法挽回了。因此,還需要有實時的數據分析模塊,對業務核心指标、系統服務指标進行最小延遲的預警監控。
所以,在數據分析場景下,離線數據為主,實時分析要有但不宜過度追求實時性。一般的數據可視化平台,有一個實時數據模塊就可以了,其他的主題分析以離線數據為主。
2. 數據應用方面,數據時效性要求高于準确性
1)個性化推薦,用戶行為需要實時反饋
你在浏覽頭條的時候,對推薦的内容點擊了“不感興趣”,相關的内容很快就隐藏了。同樣,你在淘寶上搜索或加購了某個産品,再看列表頁時,推薦的也都是相關内容。針對個性化推薦的場景,就要做到數據的最小延遲,如果等用戶都退出App了數據才計算完成更新,用戶就流失掉了。
2)用戶運營及營銷場景
在用戶運營場景中,流失用戶召回、會員運營等活動中,對數據時效性要求并沒那麼高,例如你要對某個城市的下單用戶進行短信營銷(apppush),不對今天當天下單的用戶營銷影響也不大。
而對于實時的場景觸達,就需要實時數據了,例如,用戶打開App,實時判斷用戶是否是新客(截至本次訪問未下過單),發放新客大禮包。
所以在CDP用戶運營平台的标簽建設時,既需要有離線标簽,也需要有實時标簽。
3)選擇依據小結
數據時效性的選擇時,要看具體應用場景對準确性、時效性的要求,實時和離線數據的應用場景選擇可以參考下圖:
四、總結
不管是離線數據還是實時數據最終都是為了解決業務場景下的問題,搞懂其差别和基本原理後,再去選擇到底是實時還是離線,可以做到用最小的資源成本達成業務目标,而不是一味地追求實時,或者永遠隻能離線。
#專欄作家#
數據幹飯人,微信号公衆号:數據幹飯人,人人都是産品經理專欄作家。專注數據中台産品領域,覆蓋開發套件,數據資産與數據治理,BI與數據可視化,精準營銷平台等數據産品。擅長大數據解決方案規劃與産品方案設計。
本文原創發布于人人都是産品經理,未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協議
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!