官术网_书友最值得收藏!

3.2 數據倉庫技術

數據倉庫是一個單一的數據存儲工具,用于分析報告和支持決策,本節將介紹系統數據倉庫的構建過程及數據倉庫的拉鏈算法。

3.2.1 數據倉庫構建過程

該系統的數據倉庫構建于Hadoop分布式系統之上,與關系型數據庫MySQL融合在一起,它們互相協作,共同完成數據清理、處理等任務,將不同數據分別寫到Hadoop和MySQL中,并在各個層間傳輸數據。

1. 數據倉庫的層級

數據倉庫主要分為ODS層、DWD層、DWA層、DM層,可以滿足不同用戶的業務需求。

(1)ODS層。ODS(Operational Data Store)為數據的臨時存儲層,是用戶瀏覽系統的詳細數據文件及客戶注冊類數據的臨時存儲區域,為進一步的數據處理和清洗做準備。在一般情況下,由于ODS層的數據直接來自業務系統,因此,該層的數據和業務系統的數據是同構的,主要目的是為數據的處理、加工做準備。從數據粒度方面來說,ODS層的數據粒度是最細的。ODS層用于存儲當前所需要加載的數據,也可以用來存儲處理完的歷史數據。

(2)DWD層。DWD(Data Warehouse Detail),是數據倉庫的細節數據層,對ODS層數據進行沉淀,減少了抽取的復雜性。同時,DWD層的信息模型組織主要采用企業業務事務處理的形式,將各個專業數據進行集中,為企業進行經營數據的分析。系統將數據按分析主題的形式存放,與ODS層的粒度一致,屬于分析的公共資源。

(3)DWA層。DWA(Data Warehouse Aggregate Data),是數據倉庫的衍生匯總數據層,通過對DWD層數據進行預處理(輕度匯總、衍生),提高了后續數據處理和訪問性能。其特點是面向各部門但不直接支持應用,將應用過程中的常用信息進行共同沉淀和處理,作為DWD層和DM層之間的一個過渡層次,與DWD層共同構成企業級數據倉庫。

(4)DM層。數據集市(Data Mart),也稱作數據市場,該層的數據是經過層層加工、處理后的數據,由于其主要面向某一個業務部門,因此,一個企業可以擁有多個數據集市。數據集市中的數據有可能從企業其他的數據倉庫、數據庫加工處理而來。數據集市只關心某一個領域內的數據,不會全盤考慮企業整體的數據架構和應用。每個應用都有自己的DM為專題經營分析服務,系統將數據按分析的專題組織成多維表的形式存放,屬于分析目標范疇的數據組織與匯總,是分析的專有資源。

3.2.2 數據倉庫拉鏈算法

采用拉鏈算法構造用戶類信息模型可以極大地節約用戶類信息所占的存儲空間,因為用戶類信息數據是被頻繁使用的,所以相對于一般的建模方法,采用拉鏈式算法的數據庫的維護工作可以在很大程度上保持良好的運行狀態,為數據倉庫的維護提供更大的便利。

我們設計的數據倉庫架構是將Hadoop與MySQL、Hive相結合,用來存儲用戶購物、上網及其他細節類別的數據,并將關系型數據庫的網址相關資料存儲起來,當數據量越來越大時,數據庫的性能會不可避免地受到影響。

針對此問題,我們使用拉鏈算法存儲數據,因為用戶的成員級別并不會頻繁改變,例如,2020年11月11日某位會員是銅牌會員,而升為銀牌會員則可能要花費數月甚至一年,若該會員需要一年時間才能提升為銀牌會員,那么使用原始的存儲方法將需要儲存365份數據,而用拉鏈算法構造的模型則只需記錄一條記錄,因而運用拉鏈算法可以有效地避免MySQL數據庫因數據量過大而產生的壓力,同時可以節約存儲空間。

在這個信息爆炸的時代,每天有數千萬的企業數據要記錄,盡管像Hadoop、Spark等大數據處理平臺已經涌現出來,但是它們對一些數據的實時計算能力還不夠強,這部分數據仍然存儲在MySQL等關系型數據庫中,這種存儲時間較長的數據量也比較大,使用拉鏈算法可以節約大量的存儲空間,從而保持MySQL數據庫的高性能。

拉鏈算法就是把每一次載入數據都當作一次提取的源表數據來處理,在載入目的表的時候要考慮數據的歷史。拉鏈算法引入拉鏈的概念,記錄每一個主鍵改變的起始時間和結束時間,這一方法經常采用增量拉鏈加載策略,以歷史表情況為目標,因為數據倉庫中記錄了大部分數據歷史表,所以增量拉鏈加載策略是數據倉庫中較為普遍的一種加載策略。

在一般情況下,這類歷史表都包含start_date和end_date屬性,將這兩個字段與源數據表和目標表進行全面比較,以求出真正的增量數據,這樣處理全量數據會極大地提高存儲空間的利用率,因此從某種程度上減輕了數據庫的壓力,提高了數據庫性能,此外,它還具有捕捉數據變化、便于獲得數據等優點。

主站蜘蛛池模板: 正定县| 礼泉县| 衡山县| 尚义县| 乐东| 嵊泗县| 恩施市| 乌拉特前旗| 承德县| 浪卡子县| 增城市| 鹰潭市| 连云港市| 扶风县| 甘南县| 波密县| 沅陵县| 松溪县| 大方县| 沙河市| 安化县| 中卫市| 东乡县| 布尔津县| 南昌县| 德保县| 保德县| 康马县| 寿阳县| 汉川市| 宜君县| 金坛市| 平邑县| 金堂县| 原平市| 临汾市| 三江| 汾阳市| 富蕴县| 柯坪县| 大荔县|