大數(shù)據(jù)時代,數(shù)據(jù)倉庫究竟是干嘛的?
發(fā)布日期:2022/12/13 9:54:42 瀏覽量:
無論你是否專門從事大數(shù)據(jù)開發(fā),作為一個開發(fā)人員,應(yīng)該都聽說過數(shù)據(jù)倉庫的概念,那你知道為什么會出現(xiàn)數(shù)據(jù)倉庫?數(shù)據(jù)倉庫究竟是干嘛的嗎?有什么價值和意義呢?那么本文就帶到入門,揭開數(shù)據(jù)倉庫的面紗。
數(shù)據(jù)倉庫的由來
數(shù)據(jù)倉庫為何而來,主要解決什么問題的?
先下結(jié)論:為了分析數(shù)據(jù)而來,分析結(jié)果為企業(yè)決策提供支撐。舉個簡單的例子,比如你們公司要要判斷明年是否要進入生產(chǎn)口罩,那么就需要數(shù)據(jù)支撐,比如口罩市場的需求、飽和率、利潤等等,然后借由分析結(jié)果,去做判斷決策,而不是拍腦袋,不然大概率就是虧本的。
下面再以一個中國人壽保險公司發(fā)展為例,詳細闡述數(shù)據(jù)倉庫為何而來?
(1)OLTP系統(tǒng)處理業(yè)務(wù)數(shù)據(jù)
中國人壽保險(集團)公司下轄多條業(yè)務(wù)線,包括:人壽險、財險、車險,養(yǎng)老險等。各業(yè)務(wù)線的業(yè)務(wù)正常運營需要記錄維護包括客戶、保單、收付費、核保、理賠等信息。這么多業(yè)務(wù)數(shù)據(jù)存儲在哪里呢?
這些通用的業(yè)務(wù)行為一般是發(fā)在聯(lián)機事務(wù)處理系統(tǒng)(OLTP), 其主要任務(wù)是執(zhí)行聯(lián)機事務(wù)處理,前臺接收的用戶數(shù)據(jù)可以立即傳送到后臺進行處理,并在很短的時間內(nèi)給出處理結(jié)果。
通常來說,這些業(yè)務(wù)數(shù)據(jù)最終都是落在關(guān)系型數(shù)據(jù)庫中的,關(guān)系型數(shù)據(jù)庫(RDBMS)是OLTP典型應(yīng)用,比如:Oracle、MySQL、SQL Server等
這只是最基礎(chǔ)的業(yè)務(wù),但是隨著業(yè)務(wù)規(guī)模的不斷發(fā)展,衍生出了更多的數(shù)據(jù)分析型需求,用OLTP可行嗎?
(2)分析型決策需求衍生
隨著集團業(yè)務(wù)的持續(xù)運營,業(yè)務(wù)數(shù)據(jù)將會越來越多。由此也產(chǎn)生出許多運營相關(guān)的需求問題:
- 能夠確定哪些險種正在惡化或已成為不良險種?
- 能夠用有效的方式制定新增和續(xù)保的政策嗎?
- 理賠過程有欺詐的可能嗎?
- 現(xiàn)在得到的報表是否只是某條業(yè)務(wù)線的?集團整體層面數(shù)據(jù)如何?
......
為了能夠正確認識這些問題,制定相關(guān)的解決措施,瞎拍桌子是肯定不行的。最穩(wěn)妥辦法就是:基于業(yè)務(wù)數(shù)據(jù)開展數(shù)據(jù)分析,基于分析的結(jié)果給決策提供支撐。也就是所謂的數(shù)據(jù)驅(qū)動決策的制定。
OLTP環(huán)境開展分析可行嗎?
可以,但是沒必要。OLTP系統(tǒng)的核心是面向業(yè)務(wù),支持業(yè)務(wù),支持事務(wù)。所有的業(yè)務(wù)操作可以分為讀、寫兩種操作,一般來說讀的壓力明顯大于寫的壓力。如果在OLTP環(huán)境直接開展各種分析,有以下問題需要考慮:
- 數(shù)據(jù)分析也是對數(shù)據(jù)進行讀取操作,會讓讀取壓力倍增;
- OLTP僅存儲數(shù)周或數(shù)月的數(shù)據(jù);
- 數(shù)據(jù)分散在不同系統(tǒng)不同表中,字段類型屬性不統(tǒng)一;
(3)數(shù)據(jù)倉庫面世
當分析所涉及數(shù)據(jù)規(guī)模較小的時候,在業(yè)務(wù)低峰期時可以在OLTP系統(tǒng)上開展直接分析。但為了更好的進行各種規(guī)模的數(shù)據(jù)分析,同時也不影響OLTP系統(tǒng)運行,此時需要構(gòu)建一個集成統(tǒng)一的數(shù)據(jù)分析平臺。該平臺的目的很簡單:面向分析,支持分析,并且和OLTP系統(tǒng)解耦合?;谶@種需求,數(shù)據(jù)倉庫的雛形開始在企業(yè)中出現(xiàn)了。
數(shù)據(jù)倉庫是一個用于存儲、分析、報告的數(shù)據(jù)系統(tǒng),目的是構(gòu)建面向分析的集成化數(shù)據(jù)環(huán)境。我們把這種面向分析、支持分析的系統(tǒng)稱之為OLAP(聯(lián)機分析處理)系統(tǒng)。當然,數(shù)據(jù)倉庫是OLAP系統(tǒng)的一種實現(xiàn)。
- 中國人壽保險公司就可以基于分析決策需求,構(gòu)建數(shù)倉平臺。
數(shù)據(jù)倉庫介紹
數(shù)據(jù)倉庫(英語:Data Warehouse,簡稱數(shù)倉、DW),是一個用于存儲、分析、報告的數(shù)據(jù)系統(tǒng),主要目的是構(gòu)建面向分析的集成化數(shù)據(jù)環(huán)境,分析結(jié)果為企業(yè)提供決策支持(Decision Support)。
- 數(shù)據(jù)倉庫本身并不“生產(chǎn)”任何數(shù)據(jù),其數(shù)據(jù)來源于不同外部系統(tǒng);
- 同時數(shù)據(jù)倉庫自身也不需要“消費”任何的數(shù)據(jù),其結(jié)果開放給各個外部應(yīng)用使用;
- 這也是為什么叫“倉庫”,而不叫“工廠”的原因。
數(shù)倉四大特征
那么數(shù)據(jù)倉庫都有什么特點呢?
- 面向主題性(Subject-Oriented)
- 主題是一個抽象的概念,是較高層次上企業(yè)信息系統(tǒng)中的數(shù)據(jù)綜合、歸類并進行分析利用的抽象。在邏輯意義上,它是對應(yīng)企業(yè)中某一宏觀分析領(lǐng)域所涉及的分析對象。
- 傳統(tǒng)OLTP系統(tǒng)對數(shù)據(jù)的劃分并不適用于決策分析。而基于主題組織的數(shù)據(jù)則不同,它們被劃分為各自獨立的領(lǐng)域,每個領(lǐng)域有各自的邏輯內(nèi)涵但互不交叉,在抽象層次上對數(shù)據(jù)進行完整、一致和準確的描述。
- 集成性
主題相關(guān)的數(shù)據(jù)通常會分布在多個操作型系統(tǒng)中,彼此分散、獨立、異構(gòu)。
- 因此在數(shù)據(jù)進入數(shù)據(jù)倉庫之前,必然要經(jīng)過統(tǒng)一與綜合,對數(shù)據(jù)進行抽取、清理、轉(zhuǎn)換和匯總,這一步是數(shù)據(jù)倉庫建設(shè)中最關(guān)鍵、最復(fù)雜的一步,所要完成的工作有:
-
- 要統(tǒng)一源數(shù)據(jù)中所有矛盾之處。如字段的同名異義、異名同義、單位不統(tǒng)一、字長不一致等等。
-
- 進行數(shù)據(jù)綜合和計算。數(shù)據(jù)倉庫中的數(shù)據(jù)綜合工作可以在從原有數(shù)據(jù)庫抽取數(shù)據(jù)時生成,但許多是在數(shù)據(jù)倉庫內(nèi)部生成的,即進入數(shù)據(jù)倉庫以后進行綜合生成的。
下圖說明了保險公司綜合數(shù)據(jù)的簡單處理過程,其中數(shù)據(jù)倉庫中與“承?!敝黝}有關(guān)的數(shù)據(jù)來自于多個不同的操作型系統(tǒng)。
- 非易失性、非異變性
- 數(shù)據(jù)倉庫是分析數(shù)據(jù)的平臺,而不是創(chuàng)造數(shù)據(jù)的平臺。我們是通過數(shù)倉去分析數(shù)據(jù)中的規(guī)律,而不是去創(chuàng)造修改其中的規(guī)律。因此數(shù)據(jù)進入數(shù)據(jù)倉庫后,它便穩(wěn)定且不會改變。
- 數(shù)據(jù)倉庫的數(shù)據(jù)反映的是一段相當長的時間內(nèi)歷史數(shù)據(jù)的內(nèi)容,數(shù)據(jù)倉庫的用戶對數(shù)據(jù)的操作大多是數(shù)據(jù)查詢或比較復(fù)雜的挖掘,一旦數(shù)據(jù)進入數(shù)據(jù)倉庫以后,一般情況下被較長時間保留。
- 數(shù)據(jù)倉庫中一般有大量的查詢操作,但修改和刪除操作很少。
- 時變性
- 數(shù)據(jù)倉庫包含各種粒度的歷史數(shù)據(jù),數(shù)據(jù)可能與某個特定日期、星期、月份、季度或者年份有關(guān)。
- 當業(yè)務(wù)變化后會失去時效性。因此數(shù)據(jù)倉庫的數(shù)據(jù)需要隨著時間更新,以適應(yīng)決策的需要。
- 從這個角度講,數(shù)據(jù)倉庫建設(shè)是一個項目,更是一個過程 。
數(shù)據(jù)倉庫架構(gòu)
通常情況下,為了把一個復(fù)雜的工作拆成了多個簡單的工作,一般將數(shù)據(jù)倉庫架構(gòu)分為三層,即數(shù)據(jù)操作層、數(shù)據(jù)倉庫層和應(yīng)用數(shù)據(jù)層(數(shù)據(jù)集市層)。
- ODS(Operation Data Store 數(shù)據(jù)準備區(qū))
數(shù)據(jù)倉庫源頭系統(tǒng)的數(shù)據(jù)表通常會原封不動的存儲一份,這稱為ODS層,也稱為準備區(qū)。它們是后續(xù)數(shù)據(jù)倉庫層加工數(shù)據(jù)的來源。ODS層數(shù)據(jù)的主要來源是業(yè)務(wù)數(shù)據(jù)庫、埋點日志、其他數(shù)據(jù)源。
- 業(yè)務(wù)數(shù)據(jù)庫:可使用DataX、Sqoop等工具來抽取,每天定時抽取一次;在實時應(yīng)用中,可用Canal監(jiān)聽MySQL的 Binlog,實時接入變更的數(shù)據(jù)。
- 埋點日志:線上系統(tǒng)會打入各種日志,這些日志一般以文件的形式保存,可以用 Flume 定時抽取。
- 其他數(shù)據(jù)源:從第三方購買的數(shù)據(jù)、或是網(wǎng)絡(luò)爬蟲抓取的數(shù)據(jù)。
- DW(Data Warehouse 數(shù)據(jù)倉庫層)
該層包含DWD、DWS、DIM層,由ODS層數(shù)據(jù)加工而成,主要是完成數(shù)據(jù)加工與整合,建立一致性的維度,構(gòu)建可復(fù)用的面向分析和統(tǒng)計的明細事實表,以及匯總公共粒度的指標。
- DWD(Data Warehouse Detail 細節(jié)數(shù)據(jù)層),是業(yè)務(wù)層與數(shù)據(jù)倉庫的隔離層。以業(yè)務(wù)過程作為建模驅(qū)動,基于每個具體的業(yè)務(wù)過程特點,構(gòu)建細粒度的明細層事實表??梢越Y(jié)合企業(yè)的數(shù)據(jù)使用特點,將明細事實表的某些重要維度屬性字段做適當冗余,也即寬表化處理。
- DWS(Data Warehouse Service 服務(wù)數(shù)據(jù)層),基于DWD的基礎(chǔ)數(shù)據(jù),整合匯總成分析某一個主題域的服務(wù)數(shù)據(jù)。以分析的主題為建模驅(qū)動,基于上層的應(yīng)用和產(chǎn)品的指標需求,構(gòu)建公共粒度的匯總指標事實表。
- DIM(公共維度層 ),基于維度建模理念思想,建立一致性維度。
- TMP層 :臨時層,存放計算過程中臨時產(chǎn)生的數(shù)據(jù)。
- ADS(Application Data Store 應(yīng)用數(shù)據(jù)層)
該層是基于DW層的數(shù)據(jù),整合匯總成主題域的服務(wù)數(shù)據(jù),用于提供后續(xù)的業(yè)務(wù)查詢等。
數(shù)據(jù)倉庫開發(fā)語言
數(shù)倉作為面向分析的數(shù)據(jù)平臺,其主職工作就是對存儲在其中的數(shù)據(jù)開展分析,那么如何讀取數(shù)據(jù)分析呢?
理論上來說,任何一款編程語言只要具備讀寫數(shù)據(jù)、處理數(shù)據(jù)的能力,都可以用于數(shù)倉的開發(fā)。比如大家耳熟能詳?shù)腃、java、Python等。但是這些編程一員的學(xué)習(xí)成本和開發(fā)效率都不是十分友好,在數(shù)據(jù)分析領(lǐng)域中,SQL語言功能很強,十分簡潔,用戶也容易學(xué)習(xí)和使用,是主流的語言。比如比較常用的數(shù)據(jù)倉庫工具Hive就是支持SQL的語法。
總結(jié)
本文通過例子講清楚了數(shù)據(jù)倉庫的來源,以及在企業(yè)應(yīng)用中的必要性,主要是為了構(gòu)建一個面向分析的集成化數(shù)據(jù)環(huán)境,分析結(jié)果可以為企業(yè)提供決策支持,真正實現(xiàn)數(shù)據(jù)驅(qū)動決策的目的。實際上數(shù)據(jù)倉庫的建設(shè)遠比上面提到的復(fù)雜,需要花費很大的成本,因此需要考慮清楚。
馬上咨詢: 如果您有業(yè)務(wù)方面的問題或者需求,歡迎您咨詢!我們帶來的不僅僅是技術(shù),還有行業(yè)經(jīng)驗積累。
QQ: 39764417/308460098 Phone: 13 9800 1 9844 / 135 6887 9550 聯(lián)系人:石先生/雷先生