天天看點

阿裡雲PB級實時數倉建設

摘要

如今,資料和分析對于企業來說是不可或缺的。很多企業的資料工程師、資料分析師和開發人員都希望将資料倉庫遷移到雲上,以提高性能和降低成本。本文讨論了實作實時資料倉庫的必要性和實時資料模型,介紹了基于AnalyticDB建構阿裡雲實時資料倉庫解決方案的方法和優勢。

為什麼建構資料倉庫

為什麼要建構資料倉庫,而不是直接在OLTP資料庫上運作分析查詢?為了回答這個問題,我們先來看下資料倉庫與 OLTP 資料庫之間的差别。資料倉庫主要是針對批量寫入和大量資料的讀取操作,而OLTP資料庫是針對持續寫入操作以及大量的小規模讀取操作。通常,資料倉庫會因較高的資料吞吐量要求而使用非規範化模型,如星型模型和雪花模型。星型架構包含多個引用大量次元表的大型事實資料表。雪花型架構是星型架構的擴充,包含更加規範化的次元表。而OLTP資料庫則使用高度規範化的模型,更适合高事務吞吐量的要求,對于複雜查詢的性能很難滿足使用者要求。

為什麼建構實時數倉

傳統的離線資料倉庫将業務資料集中進行存儲後,以固定的計算邏輯定時進行ETL和其它模組化後産出報表等應用。離線資料倉庫主要是建構T+1的離線資料,通過定時任務每天拉取增量資料,然後建立各個業務相關的主題次元資料,對外提供T+1的資料查詢接口。計算和資料的實時性均較差,業務人員無法根據自己的即時性需要擷取幾分鐘之前的實時資料。資料本身的價值随着時間的流逝會逐漸減弱,是以資料發生後必須盡快的達到使用者的手中,實時數倉的建構需求也應運而生。

實時資料倉庫模型架構

阿裡雲PB級實時數倉建設

實時資料倉庫是用于儲存從一個或多個資料源擷取到的資訊的中央存儲庫。資料通常從事務系統和其他關系資料庫傳輸到資料倉庫中,而且一般包括結構化、半結構化和非結構化的資料。這些資料将會每小時或者每分鐘處理、轉換和提取。科學家、業務分析師和決策者會通過BI工具、SQL用戶端或者電子表格來進行資料挖掘、資料分析、報表展示或即席查詢等操作。

什麼是AnalyticDB

幾年前阿裡雲就意識到實時資料倉庫的必要性,2015年AnalyticDB肩負這阿裡雲實時資料倉庫的使命上線公共雲。AnalyticDB是阿裡雲上唯一經過核心業務和超大資料量驗證的實時資料倉庫,其穩定性、規模性和性能是不容置疑的。

AnalyticDB采用行列混存MPP技術,突破OLTP和傳統資料倉庫技術壁壘,最大優勢是可以建構PB資料量下高性能和經濟實用的資料倉庫。全面相容MySQL協定以及SQL:2003 文法标準,使用者隻需對現有業務進行少量更改,甚至不需要進行任何更改,即可把業務全部遷移到AnalyticDB上來。是以,它已成為當今企業建構資料倉庫和OLAP系統的理想選擇。

實時性

前面介紹說離線資料倉庫計算和資料的實時性均較差,業務人員無法根據自己的即時性需要擷取幾分鐘之前的實時資料。那麼,AnalyticDB同時具有:

  • 計算的實時性,計算在使用者查詢時發生,可自由變換和快速查詢;
  • 資料的實時性,資料産生插入AnalyticDB後1s-3s内就可以查詢到(也可以提工單開啟強一緻,寫入即可查)。

可以讓業務人員在幾秒鐘甚至幾百毫秒的時間内擷取到包含最近幾分鐘内的資料計算結果,以最大的靈活度應對千變萬化的業務挑戰。

成本低

AnalyticDB不要求長期訂閱,也不需要提前支付費用。利用此定價方法,在出現相應的需求之前,使用者不必為規劃和購買資料倉庫容量而産生的資本費用以及由此帶來的複雜性而頭疼,根據購買的資源模型和數目收費。使用者可以根據需求從使用按量付費的小規模資料倉庫(每小時1.6元)開始,然後再逐漸擴充到TB和PB級(每年每TB最低14125元)。

另外,在即将到來的AnalyticDB 3.0中使用者可以使用最高與配置存儲同等大小的備份存儲,而不需要額外支付費用,一起期待3.0的到來吧。

動态擴充

傳統的資料倉庫難以擴充,當資料量增加或者需要向更多使用者提供分析和報告時,使用者要麼選擇接受較低的查詢性能,要麼選擇在成本高昂的更新過程中投入更多的人力和物力。

AnalyticDB的擴充隻需在控制台中點選幾次或者使用一個API調用,使用者就能在性能或容量需求發生變化時輕松地更改資料倉庫中的節點的數量和類型。使用AnalyticDB,使用者能夠從最低180GB的單個節點開始,通過添加多個節點進行擴充,一直到1PB甚至更高容量。整個過程中使用者可以正常進行線上查詢和海量寫入操作,業務完全無感覺,不受影線。

多元複雜分析

AnalyticDB可以進行複雜的自由計算,他摒棄了傳統資料庫索引加速方式,預設全索引方式,使用者全部精力關注在如何能夠提取資料并在多個次元上敏銳地觀察趨勢。由于AnalyticDB已針對快速JOIN行優化,是以用他建構OLAP系統是非常合适的。

真實資料

AnalyticDB提供了單庫PB級資料實時分析能力。以下是生産環境的真實資料:

  • 阿裡巴巴集團某營銷應用單DB表數超過20000張
  • 雲上某企業客戶單DB資料量近3PB,單日分析查詢次數超過1億
  • 阿裡巴巴集團内某單個AnalyticDB叢集超過2000台節點規模
  • 雲上某業務實時寫入壓力高達1000w TPS
  • 菜鳥網絡某資料業務極度複雜分析場景,查詢QPS 100+

為什麼選擇AnalyticDB

資料倉庫建設無論采用哪種方式,資料收集、處理、分析和存儲都不可能放在一個産品中實作,需要多個其他産品配合使用。下面列舉各個過程中常用的産品,

  • 資料收集:kafka、flume或者sync;
  • 資料處理:hive、storm或者spark;
  • 資料存儲:hadoop、hbase,ES或者redis;

抛開性能和時效性考慮,多一個産品就多一些出現問題的幾率,如果各個産品處理問題低效,直接影響資料倉庫上線時間,影響企業未來。

前面我們介紹了AnalyticDB的一些功能,這些功能使AnalyticDB成為資料倉庫的理想之選。除了上述特征外,還有一個重要的原因是:AnalyticDB可以集資料收集、處理、分析和存儲于一體。鍊路簡單,業務聯調時間短,上線快。提高資料時效性的同時也節省了開發上線時間和運維時間,給企業帶來的紅利是非常明顯的。為了說明如何使用AnalyticDB設計資料倉庫工作流程,下面我們來看一看最常見的設計模式。

阿裡雲PB級實時數倉建設

阿裡雲PB級實時數倉建設

資料收集

在資料收集階段,第一點需要考慮的是使用者可能具有不同類型的資料,如事務資料、日志資料、流資料和物聯網 (IoT) 資料。AnalyticDB針對上述每種資料提供了資料收集解決方案。另外一點要需要考慮的是抽取頻次,傳統離線資料倉庫會采用避開高峰期時間每天抽取一次,最快也隻能做到小時級别的抽取。AnalyticDB可以做到高并發實時寫入,3s内即可查。

業務資料

  • 對于資料源為關系型資料庫(如阿裡雲RDS)而言,可以通過資料傳輸服務(Data Transmission Service) 将全量和增量資料實時同步到AnalyticDB中。
  • 業務系統也可以直接對接AnalyticDB,通過JDBC把資料直接寫入資料庫中。同時,AnalyticDB提供了一種更加高效和簡單地insert資料到AnalyticDB的方法-ADB Client ADK。使用者隻需要通過接口将資料送出給ADB Client,無需關心分區聚合、連接配接池等問題。

日志資料

  • 對于日志資料而言,可以通過logstash把日志資料實時同步到AnalyticDB中。
  • 對于存儲在阿裡雲日志服務(SLS)上的日志資料,使用者可以選擇把資料實時投遞到AnalyticDB。

對象存儲資料

  • 對象存儲OSS上的資料可以通過AnalyticDB的COPY功能快速遷移到資料庫中,遷移方式比較自由,使用者可以選擇某個檔案遷移也可以整個目錄遷移。

本地資料

  • AnalyticDB提供了Uploader工具,可以将本地CSV和text檔案資料導入到AnalyticDB中。也支援某個檔案或者目錄整體檔案導入。

資料處理

通過資料收集過程,使用者資料進入到AnalyticDB中了,已經獲得可能包含有價值資訊的資料。所謂資料處理就是把不需要的和不符合規範的資料進行處理,或者通過資料處理把小表組成大寬表。資料處理最好不要放在資料收集的環節進行,考慮到有時可能會查原始資料。

AnalyticDB提供多種資料處理方式:CTE,查詢方式複制表(INSERT INTO......SELECT FROM),CREATE TABLE AS(AnalyticDB 3.0支援),CREATE TABLE LIKE(AnalyticDB 3.0支援)等。如下舉例說明AnalyticDB資料處理的場景:

  • 空值處理:根據業務需要,可以将空值替換為特定的值或者直接過濾掉;
  • 驗證資料正确性:主要是把不符合業務含義的資料做一處理,比如,把一個表示數量的字段中的字元串替換為0,把一個日期字段的非日期字元串過濾掉等等;
  • 規範資料格式:比如,把所有的日期都格式化成yyyy-MM-dd HH:mm:ss的格式等;
  • 資料标準,統一:比如在源資料中表示男女的方式有很多種,在資料收集時候,直接根據模型中定義的值做轉化,統一表示男女;

可以配合阿裡雲上DataWorks作為任務管理工具,可以進行實時資料倉庫的資料處理過程,

詳細步驟

資料存儲

AnalyticDB可以進行低成本資料存儲,公共雲上售賣的資源模型有兩種:

  • 以字母C開頭的為高性能執行個體,适用于對性能要求高、查詢并發高的業務場景。
  • 以字母S開頭的為大存儲執行個體,适用于并發稍低,性能要求不高的(接受超過10s以上查詢)的業務。還有一個最大的特點是價格低,每年每TB最低14125元。

資料分析

傳統資料倉庫一般使用OLTP資料庫如MySQL進行加速,一般将資料處理與OLTP系統分離,使資料處理不會影響到 OLTP工作負載。但随着資料量的增長OLTP資料庫會成為嚴重的系統瓶頸。通過AnalyticDB進行分析,當不能滿足性能和存儲要求時,可以随時進行橫向和縱向擴充(擴容和升配),變換過程中業務完全不受影響,不用避開高峰期。

寫在最後

我們發現資料倉庫正在發生戰略性的轉移,企業正在将其分析資料庫和解決方案從本地解決方案遷移到雲。由于資料的價值時效性,越來越多的企業都想在雲上尋找一款同時具有簡單性、高性能和高成本效益的實時資料倉庫。目前AnalyticDB正在進行15天免費使用活動,如果您有興趣進一步了解,可以送出

免費申請

,開啟您的實時大資料之旅。