從Bill Inmon在1991年提出數據倉庫的概念起,至今已有三十年的時間。在這期間人們所面對的數據,以及處理數據的方法都發生了翻天覆地的變化。起初數據倉庫繫統運行在單機或小型集群之上,程序以批處理方式周期性運行ETL作業。為常見的執行方式是在每天業務低峰期處理前一天產生的業務數據,即所謂的T 1模式。後來隨著互聯網和移動終端等應用的普及,需要處理的數據量不斷增大,出現了大數據的概念,以Hadoop及其生態圈組件為代表的新一代分布式大數據處理平臺逐漸流行。近年來隨著業務領域的不斷拓展,人們對數據分析的實時性要求越來越高,離線批處理方式所產生的延時已不能滿足需求。以Hadoop為代表的分布式框架並沒有給出實時計算解決方案,於是便出現了Storm、Spark Streaming、Flink等實時計算框架,可提供秒級的響應時間,在此基礎上實時數據倉庫應運而生。
作為DBA,我更傾向於采用一種不編程、組件少、門檻低、易上手、純SQL,並能處理包含歷史全量數據的方案,用來實現實時數據倉庫。不可否認,SQL仍然是數據庫、數據倉庫中常使用的開發語言,也是傳統數據庫工程師或DBA的必會語言,從它出現至今一直被廣泛使用。首先,SQL有堅實的關繫代數作為理論基礎,經過幾十年的積累,查詢優化器已經相當成熟。再者,對於開發者,SQL作為典型的非過程語言,其語法相對簡單,但語義卻相當豐富。據統計95%的數據分析問題都能用SQL解決,這是一個相當驚人的結論。
本書介紹的實現方案能滿足以上所有要求,涉及的具體技術包括:MySQL主從復制,保證為業務繫統提供可靠的數據庫服務,並提供數據來源;Canal Server實時獲取增量MySQL binlog,並將其傳入Kafka消息隊列;Kafka將消息持久化,同時提供可伸縮、高吞吐的消息服務;Canal ClientAdapter負責消費Kafka中的消息,將數據流傳輸到Greenplum數據庫;Greenplum作為數據倉庫繫統,提供實時ETL功能,自動維護操作數據存儲(ODS)、維度表與事實表。
Greenplum分布式數據庫采用無共享(Shared-Nothing)的大規模並行處理(MPP)架構,能充分利用集群的硬件資源,將並行處理發揮到極致。Greenplum具有可選存儲模式、事務支持、並行查詢與數據裝載、容錯與故障轉移、數據庫統計、過程化語言擴展等方面的功能特性,正是它們支撐Greenplum成為一款理想的分析型數據庫產品。
本書內容
全書共分10章。第1章說明數據倉庫相關的基本概念,包括數據倉庫定義、操作型繫統與分析型繫統、ETL、數據倉庫架構等。第2章介紹三種主流的數據倉庫設計模型,即關繫數據模型、維度數據模型和DATA VAULT模型。第3章介紹Greenplum繫統架構、功能特性、主要優缺點,以及為何適用於數據倉庫應用。第4章詳解Greenplum的安裝部署問題。第5章介紹實時數據同步的實現,包括MySQL數據復制在實時數據倉庫架構中所起的作用,如何使用Kafaka,以及Maxwell Kafka Bireme和Canal Server Kafka Canal ClientAdapter兩種具體實現。第6章用一個銷售訂單示例說明如何使用Greenplum的規則(rule)實現實時自動數據裝載。第7章和第8章分別詳解多維數據倉庫中常見的維度表和事實表技術,及其在Greenplum中的實現。第9章介紹Greenplum主要的、例行的與推薦的運維與監控工作。第10章作為完整數據分析體繫的組成部分,介紹如何在Greenplum中集成MADlib,實現基於SQL的機器學習。
讀者對像
本書所定位的讀者是大數據分析繫統設計和開發、數據倉庫繫統設計和開發、DBA、架構師等相關技術人員。所有的描繪場景與實驗環境都基於Linux操作繫統。假設讀者已具有一定的數據庫、數據倉庫、SQL與Linux基礎。
源碼下載
本書配套的源碼,需要使用微信掃描下面二維碼獲取,可按掃描後的頁面提示,把下載鏈接轉發到自己的郵箱中下載。如果發現問題或疑問,請電子郵件聯繫booksaga@163.com,郵件主題為“Greenplum構建實時數據倉庫實踐”。
致謝
在本書編寫過程中,得到了很多人的幫助與支持。首先,感謝我所在的公司——優貝在線提供的平臺和環境,感謝同事們在工作中的鼎力相助。沒有那裡的環境和團隊,也就不會有這本書。其次,感謝清華大學出版社圖格事業部的老師和編輯們,他們的辛勤工作使得本書得以盡早與讀者見面。再次,感謝CSDN提供的技術分享平臺,給我有一個將博客文章整理成書的機會。後,感謝家人對我一如既往的支持。
由於水平有限,疏漏之處在所難免,希望讀者批評指正。
編 者
2022年5月