10分鐘帶你了解數(shù)據(jù)庫、數(shù)據(jù)倉庫、數(shù)據(jù)湖、數(shù)據(jù)中臺的區(qū)別與聯(lián)系(一)
編輯導(dǎo)語:作為一名數(shù)據(jù)小白,在日常學(xué)習(xí)和工作中經(jīng)常會接觸到數(shù)據(jù)。隨著用戶數(shù)據(jù)與業(yè)務(wù)數(shù)據(jù)的不斷累加,數(shù)據(jù)管理與處理愈發(fā)重要。本篇文章中,作者將一文說明數(shù)據(jù)庫、數(shù)據(jù)倉庫、數(shù)據(jù)湖、數(shù)據(jù)中臺的區(qū)別與聯(lián)系。
作為數(shù)據(jù)相關(guān)的產(chǎn)品小白,在日常學(xué)習(xí)工作中經(jīng)常能看到或者聽到大家在討論數(shù)據(jù)庫,數(shù)據(jù)倉庫,數(shù)據(jù)集市,數(shù)據(jù)湖還有最近比較火的數(shù)據(jù)中臺,似乎這些名詞都與數(shù)據(jù)存在著聯(lián)系,查看各類相關(guān)書籍,大部分書籍中的內(nèi)容過于專業(yè)晦澀難懂。
那么這篇文章結(jié)合我積累的相關(guān)方面知識,向大家介紹一下上述這些名詞的區(qū)別與聯(lián)系,以及在各類企業(yè)及業(yè)務(wù)上的適用范圍,如有不準(zhǔn)確的地方,希望大家進(jìn)行指正。
一、何為數(shù)據(jù)庫
相信大部分有些許技術(shù)背景的同學(xué)們都對數(shù)據(jù)庫有一定的了解,數(shù)據(jù)庫是“按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫”,一般分為“關(guān)系型數(shù)據(jù)庫”與“非關(guān)系型數(shù)據(jù)庫”。
1. 關(guān)系型數(shù)據(jù)庫
實(shí)際上過去的數(shù)據(jù)庫一共有三種模型,即層次模型,網(wǎng)狀模型,關(guān)系模型。
(1)首先層次模型的數(shù)據(jù)結(jié)構(gòu)為樹狀結(jié)構(gòu),即是一種上下級的層級關(guān)系組織數(shù)據(jù)的一種方式:
(2)網(wǎng)狀模型的數(shù)據(jù)結(jié)構(gòu)為網(wǎng)狀結(jié)構(gòu),即將每個數(shù)據(jù)節(jié)點(diǎn)與其他很多節(jié)點(diǎn)都連接起來:
(3)關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)可以看做是一個二維表格,任何數(shù)據(jù)都可以通過行號與列號來唯一確定:
由于相比于層次模型和網(wǎng)狀模型,關(guān)系模型理解和使用最簡單,最終基于關(guān)系型數(shù)據(jù)庫在各行各業(yè)應(yīng)用了起來。
關(guān)系模型的數(shù)學(xué)原理涉及到關(guān)系,元組,屬性,笛卡爾積,域等等令人頭禿的數(shù)學(xué)術(shù)語,這里大家如果感興趣可以看看相關(guān)的文獻(xiàn),我就不放出來催眠大家了,盡管數(shù)學(xué)原理非常復(fù)雜,但如果用日常學(xué)習(xí)工作的具體事務(wù)舉例,就相對容易理解。
我們以某公司的員工信息表為例,該公司的員工信息可以用一個表格存起來。并且定義如下:
同時部門ID對應(yīng)這另一個部門表:
我們可以通過給定一個部門名稱,查到一條部門的記錄,根據(jù)部門ID,又可以查到該部門下的員工記錄,這樣二維的表格就通過ID映射建立了“一對多”的關(guān)系。
常用的關(guān)系型數(shù)據(jù)庫有Oracle,Microsoft SQL Sever,MySQL,DB2。數(shù)據(jù)庫的語言基本上圍繞著“增刪改查”來進(jìn)行的,語法相對簡單,大家有興趣可以下載MySQL自學(xué),網(wǎng)上有很多免費(fèi)的資料。
2. 非關(guān)系型數(shù)據(jù)庫
非關(guān)系型數(shù)據(jù)庫是以對象為單位的數(shù)據(jù)結(jié)構(gòu),非關(guān)系型數(shù)據(jù)庫通常指數(shù)據(jù)以對象的形式存儲在數(shù)據(jù)庫中,而對象之間的關(guān)系通過每個對象自身的屬性來決定。
簡單來說非關(guān)系型數(shù)據(jù)庫與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的區(qū)別在于非關(guān)系型數(shù)據(jù)庫主要存儲沒有固定格式的超大規(guī)模數(shù)據(jù),例如鍵值對型,文檔型,列存儲類數(shù)據(jù),常見的非關(guān)系型數(shù)據(jù)庫有Hbase,Redis,MongoDB,Neo4j等。現(xiàn)在我們通常所說的數(shù)據(jù)庫指的是關(guān)系型數(shù)據(jù)庫,非關(guān)系型數(shù)據(jù)庫大家了解即可。
二、數(shù)據(jù)庫→數(shù)據(jù)倉庫
1. 例子
隨著企業(yè)的發(fā)展,線上的業(yè)務(wù)系統(tǒng)隨著業(yè)務(wù)進(jìn)行會源源不斷的產(chǎn)生數(shù)據(jù),一般這些數(shù)據(jù)會存儲在我們企業(yè)的業(yè)務(wù)數(shù)據(jù)庫中,也就是上面講到的關(guān)系型數(shù)據(jù)庫,當(dāng)然不同的企業(yè)使用的數(shù)據(jù)庫可能不盡相同例如上述的Oracle,Microsoft SQL Sever,MySQL等,但是底層的技術(shù)邏輯都大同小異,這些業(yè)務(wù)數(shù)據(jù)庫支撐著我們業(yè)務(wù)系統(tǒng)的正常運(yùn)行。
但是當(dāng)我們線上的業(yè)務(wù)系統(tǒng)運(yùn)行超過一定時間后,內(nèi)部積壓的數(shù)據(jù)會越來越多,對我們的業(yè)務(wù)數(shù)據(jù)庫會產(chǎn)生一定的負(fù)載,導(dǎo)致我們業(yè)務(wù)系統(tǒng)的運(yùn)行速度較慢,這些數(shù)據(jù)中有很大一部分是冷數(shù)據(jù),因為業(yè)務(wù)系統(tǒng)一般對我們近期的一些數(shù)據(jù)比如當(dāng)天或一周內(nèi)這些數(shù)據(jù)調(diào)用比較頻繁,對比較早的數(shù)據(jù)調(diào)用的頻率就會很低。
同時呢目前由于數(shù)據(jù)驅(qū)動業(yè)務(wù)概念的興起,各業(yè)務(wù)部門需要將業(yè)務(wù)系統(tǒng)的業(yè)務(wù)數(shù)據(jù)提取出來進(jìn)行分析以便更好地進(jìn)行輔助決策,但各部門需求的數(shù)據(jù)種類千差萬別,接口錯綜復(fù)雜,過多的數(shù)據(jù)查詢腳本以及接口的接入導(dǎo)致業(yè)務(wù)數(shù)據(jù)庫的穩(wěn)定性降低。
為了避免冷數(shù)據(jù)與歷史數(shù)據(jù)收集對我們業(yè)務(wù)數(shù)據(jù)庫產(chǎn)生的影響,妨礙我們業(yè)務(wù)的正常運(yùn)行,企業(yè)需要定期將我們冷數(shù)據(jù)從業(yè)務(wù)數(shù)據(jù)庫中轉(zhuǎn)移出來存儲到一個專門存放歷史數(shù)據(jù)的倉庫里面,各部門可以根據(jù)自身業(yè)務(wù)需要進(jìn)行數(shù)據(jù)抽取,這個倉庫就是數(shù)據(jù)倉庫。
2. 數(shù)據(jù)倉庫的特性
結(jié)合上述例子,我們得出數(shù)據(jù)倉庫的以下特性:
- 解耦:數(shù)據(jù)倉庫的誕生,本質(zhì)是將數(shù)據(jù)的收集與分析進(jìn)行解耦。
- 整合:數(shù)據(jù)倉庫起到了對不同平臺,不同來源的數(shù)據(jù)的集成整合作用,通過抽取,清洗,轉(zhuǎn)換生成由面向事務(wù)轉(zhuǎn)化為面向主體的數(shù)據(jù)集合。
- 穩(wěn)定:數(shù)據(jù)倉庫的數(shù)據(jù)主要為決策者分析提供數(shù)據(jù),一般僅允許查詢,不允許修改刪除,數(shù)據(jù)倉庫的數(shù)據(jù)僅定期需要由業(yè)務(wù)數(shù)據(jù)庫轉(zhuǎn)移,加載,刷新。
- 歷史滯后:數(shù)據(jù)倉庫的數(shù)據(jù)會定期更新,每隔固定的時間間隔后,抽取業(yè)務(wù)數(shù)據(jù)庫系統(tǒng)中產(chǎn)生的數(shù)據(jù)通過數(shù)據(jù)的轉(zhuǎn)換集成,進(jìn)入到數(shù)據(jù)倉庫中,所以數(shù)據(jù)倉庫的數(shù)據(jù)產(chǎn)出具有T+1的特性(離線數(shù)據(jù)倉庫)。
3. 數(shù)據(jù)庫VS數(shù)據(jù)倉庫
再深入一些,我們此時要引入兩個新的名詞OLTP(On-Line Transaction Processing)聯(lián)機(jī)事務(wù)處理與OLAP(On-Line Analytical Processing)聯(lián)機(jī)分析處理,乍聽兩個名詞感覺很高大上,我們此時要關(guān)注兩個單詞的區(qū)別,“Transaction”為事務(wù),業(yè)務(wù)。
所以業(yè)務(wù)數(shù)據(jù)庫也就是我們之前講的關(guān)系型數(shù)據(jù)庫屬于OLTP類型,該類型側(cè)重于基本的,日常的事務(wù)處理,是業(yè)務(wù)系統(tǒng)的“壓艙石”,維持正常運(yùn)行,而“Analytical”則為分析,數(shù)據(jù)倉庫就屬于OLAP類型,該類型側(cè)重于復(fù)雜的分析,查詢操作,是業(yè)務(wù)系統(tǒng)的“船帆”,提供決策支撐。
三、數(shù)據(jù)倉庫
相信通過上述的案例,我們對數(shù)據(jù)倉庫有了大致的認(rèn)識,一個簡單的數(shù)據(jù)倉庫結(jié)構(gòu)如下圖所示,那么接下來我們講講數(shù)據(jù)倉庫的相關(guān)知識點(diǎn):
1. ETL(extraction-transformation-load)抽取-轉(zhuǎn)換-加載
(1)extraction(抽?。?/strong>
不是所有出現(xiàn)在業(yè)務(wù)數(shù)據(jù)庫中的數(shù)據(jù)都需要抽取,抽取需要在調(diào)研階段做大量的工作,首先要搞清楚數(shù)據(jù)是從幾個業(yè)務(wù)系統(tǒng)中來,各個業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫服務(wù)器運(yùn)行什么,是否存在手工數(shù)據(jù)且手工數(shù)據(jù)量有多大,是否存在非結(jié)構(gòu)化的數(shù)據(jù),某些數(shù)據(jù)對于分析沒有任何價值,這類數(shù)據(jù)是否需要剔除,當(dāng)收集完這些信息之后才可以進(jìn)行數(shù)據(jù)抽取的設(shè)計。
(2)Transformer(轉(zhuǎn)換)
也就是數(shù)據(jù)的清洗,數(shù)據(jù)倉庫分為兩部分,ODS(操作數(shù)據(jù)存儲)及DS(數(shù)據(jù)倉庫),通常的做法是從業(yè)務(wù)系統(tǒng)到ODS做清洗,將臟數(shù)據(jù)與不完整數(shù)據(jù)過濾掉,在從ODS到OW的過程中轉(zhuǎn)換,進(jìn)行一些業(yè)務(wù)規(guī)則的計算,聚合及數(shù)據(jù)轉(zhuǎn)換。
a. 數(shù)據(jù)清洗:業(yè)務(wù)系統(tǒng)→ODS的過程,過濾那些不符合要求的數(shù)據(jù),將過濾的結(jié)果交給業(yè)務(wù)主管部門,確認(rèn)是否過濾掉還是由業(yè)務(wù)單位修正之后再進(jìn)行抽取。
b. 數(shù)據(jù)轉(zhuǎn)換:ODS→DS的過程,主要進(jìn)行不同維度的數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)顆粒度的轉(zhuǎn)換,以及一些業(yè)務(wù)規(guī)則的計算。
- 不同維度數(shù)據(jù)轉(zhuǎn)換:將不同業(yè)務(wù)系統(tǒng)的相同類型的數(shù)據(jù)進(jìn)行統(tǒng)一,例如編碼轉(zhuǎn)化:不同供應(yīng)商在不同業(yè)務(wù)系統(tǒng)的編碼不同;字段轉(zhuǎn)換;度量單位的轉(zhuǎn)換等。
- 數(shù)據(jù)顆粒度的轉(zhuǎn)換:業(yè)務(wù)系統(tǒng)存儲著顆粒度較細(xì)的數(shù)據(jù),而數(shù)據(jù)倉庫的數(shù)據(jù)時用來分析的,不需要顆粒度很細(xì)的數(shù)據(jù),所以會將業(yè)務(wù)系統(tǒng)數(shù)據(jù)按照數(shù)據(jù)倉庫的顆粒度進(jìn)行轉(zhuǎn)換。
- 業(yè)務(wù)規(guī)則的計算:企業(yè)有不同的數(shù)據(jù)指標(biāo)以及業(yè)務(wù)規(guī)則,此時需要將這些數(shù)據(jù)指標(biāo)計算好后存儲在數(shù)據(jù)倉庫中,供數(shù)據(jù)分析使用。
(3)Load(加載)
將清洗及轉(zhuǎn)換過的數(shù)據(jù)加載到數(shù)據(jù)倉庫,一般分為全量加載及增量加載。
- 全量加載:一次性對所有數(shù)據(jù)進(jìn)行加載。
- 增量加載:首次進(jìn)行全量加載,但是后面再繼續(xù)全量加載的話,會浪費(fèi)極大的物理資源與時間成本。所以只考慮對新修改的記錄和新插入的記錄進(jìn)行加載。
小結(jié):ETL是數(shù)據(jù)倉庫開發(fā)中最耗資源的一環(huán),因此該環(huán)節(jié)要整理各業(yè)務(wù)系統(tǒng)中雜亂無章的數(shù)據(jù),工作量很大,但也是搭建數(shù)據(jù)倉庫的最重要的環(huán)節(jié)。
2. ODS 操作數(shù)據(jù)存儲
ODS(Operation Data Store)操作數(shù)據(jù)存儲在業(yè)務(wù)數(shù)據(jù)庫與數(shù)據(jù)倉庫之間形成一個隔離,其存在可以避免數(shù)據(jù)倉庫直接調(diào)用業(yè)務(wù)數(shù)據(jù)庫的數(shù)據(jù),保持?jǐn)?shù)據(jù)在結(jié)構(gòu)上與業(yè)務(wù)數(shù)據(jù)庫一致,起到提高業(yè)務(wù)數(shù)據(jù)庫穩(wěn)定性,降低數(shù)據(jù)抽取復(fù)雜性的作用。
鑒于ODS上述特點(diǎn),數(shù)據(jù)會按照特定時間源源不斷地寫入ODS中,且一經(jīng)寫入的數(shù)據(jù)不能被刪除,修改。所以為了提高ODS的運(yùn)行效率,一般ODS會考慮使用分布式文件存儲系統(tǒng)。
3. DM數(shù)據(jù)集市
DM(Data Market)數(shù)據(jù)集市是以某個業(yè)務(wù)應(yīng)用為出發(fā)點(diǎn)而建設(shè)的局部的數(shù)據(jù)倉庫,所以DM數(shù)據(jù)集市的特點(diǎn)在于結(jié)構(gòu)清晰,針對性強(qiáng)且擴(kuò)展性良好,由于僅僅對某一個領(lǐng)域建立,容易維護(hù)修改。
數(shù)據(jù)集市分為獨(dú)立數(shù)據(jù)集市與非獨(dú)立數(shù)據(jù)集市,其中獨(dú)立數(shù)據(jù)集市有獨(dú)有的源數(shù)據(jù)庫與ETL架構(gòu)。而非獨(dú)立數(shù)據(jù)集市則沒有自己的源數(shù)據(jù),全部數(shù)據(jù)位于數(shù)據(jù)倉庫,開發(fā)人員通過權(quán)限的設(shè)置,為用戶提供面向其業(yè)務(wù)的數(shù)據(jù),該數(shù)據(jù)為數(shù)據(jù)倉庫的子集。
四、數(shù)據(jù)倉庫VS數(shù)據(jù)湖
對于管理企業(yè)的人員一般來說有兩種特征,開放性與有序性,創(chuàng)業(yè)公司的人思想往往比較開放,但管理大型公司的人更注重秩序,同理這個概念可以使用在如今的數(shù)據(jù)結(jié)構(gòu)中,開放意味著容易接受新信息以及接納新的觀點(diǎn),創(chuàng)業(yè)公司擁抱開放的原因他們必須學(xué)會打破常規(guī),在市場中創(chuàng)造新的價值。
有序則指的是采取已證明是成功的模式,這通常意味著排除那些不太可能成功的想法和信息。
1. 開放性→數(shù)據(jù)湖
開放性的特征直接指向數(shù)據(jù)湖的概念,數(shù)據(jù)湖是新數(shù)據(jù)可以不受任何限制地進(jìn)入的地方,在這里,任何數(shù)據(jù)都可以存在,因此這里是發(fā)現(xiàn)新想法,用數(shù)據(jù)實(shí)驗絕妙來源,但同時因為其對任何數(shù)據(jù)的開放性,使得其缺乏有意義的結(jié)構(gòu),對于數(shù)據(jù)量較大時,就顯得有些混亂了。
2. 有序性→數(shù)據(jù)倉庫
有序性直接指向數(shù)據(jù)倉庫,在數(shù)據(jù)倉庫中,我們將維度和指標(biāo)視為可查詢的,這是可以統(tǒng)一管理,且更容易被不斷擴(kuò)大的受眾消費(fèi)。
五、后續(xù)
由于篇幅所限,本篇文章為《10分鐘帶你了解數(shù)據(jù)庫、數(shù)據(jù)倉庫、數(shù)據(jù)湖、數(shù)據(jù)中臺的區(qū)別與聯(lián)系》的第一部分,第二部分會為大家介紹湖倉一體,數(shù)據(jù)中臺的相關(guān)知識以及數(shù)據(jù)庫、數(shù)據(jù)倉庫、數(shù)據(jù)湖與數(shù)據(jù)中臺在各類企業(yè)及業(yè)務(wù)上的適用范圍。
本文由 @快樂的給予 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Unsplash,基于 CC0 協(xié)議
厲害,等待第二部門
期待第二部分~~
辛苦