BI 中的數(shù)據(jù)倉(cāng)庫(kù),一文通透
一談到BI總是離不開(kāi)數(shù)據(jù)倉(cāng)庫(kù),有很多人不太明白數(shù)據(jù)倉(cāng)庫(kù)到底在商業(yè)智能BI項(xiàng)目中有什么作用,對(duì)數(shù)據(jù)倉(cāng)庫(kù)的作用有些爭(zhēng)論,所以今天來(lái)聊聊數(shù)據(jù)倉(cāng)庫(kù),探討下數(shù)據(jù)倉(cāng)庫(kù)的真正用處。
數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)庫(kù)類(lèi)型的選擇
從技術(shù)實(shí)現(xiàn)角度上來(lái)說(shuō),我們?cè)谕ǔ5?/span>商業(yè)智能BI項(xiàng)目中,數(shù)據(jù)倉(cāng)庫(kù)大多構(gòu)建在以關(guān)系型數(shù)據(jù)庫(kù)為代表的數(shù)據(jù)庫(kù)上。數(shù)據(jù)中臺(tái)的數(shù)據(jù)倉(cāng)庫(kù)在底層是以大數(shù)據(jù)為基礎(chǔ)架構(gòu)的。

比如大數(shù)據(jù)的數(shù)據(jù)倉(cāng)庫(kù)Hive,就是構(gòu)建在大數(shù)據(jù)Hadoop分布式基礎(chǔ)架構(gòu)之上。底層的HDFS分布式文件系統(tǒng)為海量數(shù)據(jù)提供文件式的存儲(chǔ),MapReduce為海量數(shù)據(jù)提供了計(jì)算能力。在Hive數(shù)據(jù)倉(cāng)庫(kù)上可以將Hive SQL轉(zhuǎn)化成MapReduce任務(wù)與底層HDFS文件系統(tǒng)進(jìn)行因映射和數(shù)據(jù)交互。
實(shí)現(xiàn)數(shù)據(jù)倉(cāng)庫(kù)的SQL
在商業(yè)智能BI的數(shù)據(jù)倉(cāng)庫(kù)中通過(guò)標(biāo)準(zhǔn)的SQL就可以進(jìn)行數(shù)據(jù)的操作,數(shù)據(jù)中臺(tái)大數(shù)據(jù)架構(gòu)Hive數(shù)據(jù)倉(cāng)庫(kù)中是通過(guò)Hive SQL進(jìn)行數(shù)據(jù)操作。但Hive SQL最初的設(shè)計(jì)目的就是為了讓會(huì)SQL但是不會(huì)編程MapReduce的人也能使用Hadoop進(jìn)行數(shù)據(jù)處理,所以在很多語(yǔ)法上不像標(biāo)準(zhǔn)的SQL那么靈活。所以商業(yè)智能BI的數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)中臺(tái)數(shù)據(jù)倉(cāng)庫(kù)在技術(shù)架構(gòu)上,一個(gè)是基于傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn),一個(gè)是基于大數(shù)據(jù)來(lái)實(shí)現(xiàn)。操作底層數(shù)據(jù)的基本SQL有一些語(yǔ)法上的差異,但也大同小異。
數(shù)據(jù)倉(cāng)庫(kù)的分層實(shí)現(xiàn)
只要是數(shù)據(jù)倉(cāng)庫(kù)都會(huì)對(duì)數(shù)據(jù)進(jìn)行分層處理和規(guī)劃,比如在商業(yè)智能BI的數(shù)據(jù)倉(cāng)庫(kù)中我們講到要構(gòu)建ODS層,再構(gòu)建DW里面的Dimension維度和標(biāo)準(zhǔn)的Fact事實(shí)層,到Data Mart 數(shù)據(jù)集市層,最后面向前端的商業(yè)智能BI可視化分析應(yīng)用。數(shù)據(jù)中臺(tái)數(shù)據(jù)倉(cāng)庫(kù)就提到了貼源層、統(tǒng)一數(shù)據(jù)倉(cāng)庫(kù)DW層、TDM、ADS層等等,最后也是面向應(yīng)用端比如商業(yè)智能BI可視化分析。

這些分層從本質(zhì)上有區(qū)別嗎?并沒(méi)有,都是在講一些概念。比如標(biāo)簽層,不就是描述一個(gè)對(duì)象、一個(gè)實(shí)體的分析維度屬性嗎?應(yīng)用數(shù)據(jù)ADS層不就是我們通常講到的數(shù)據(jù)集市層做一些數(shù)據(jù)的特定加工,比如聚合、跨事實(shí)的聚合去組裝各種分析的基礎(chǔ)數(shù)據(jù)表嗎?所謂的One ID 打通的不就是在一個(gè)或者多個(gè)業(yè)務(wù)流程中通過(guò)ID編碼將各類(lèi)數(shù)據(jù)串聯(lián)起來(lái)做一個(gè)ID的對(duì)照和映射關(guān)系嗎?本質(zhì)上都在做什么事情?數(shù)據(jù)的標(biāo)準(zhǔn)化分類(lèi)、歸檔,將不規(guī)范、不規(guī)則、不可分析的數(shù)據(jù)變成一種規(guī)范、規(guī)則、可分析的數(shù)據(jù)過(guò)程。這就是為什么像商業(yè)智能BI數(shù)據(jù)倉(cāng)庫(kù)要進(jìn)行分層實(shí)現(xiàn)。
可以這么來(lái)說(shuō),十來(lái)年前商業(yè)智能BI的數(shù)據(jù)倉(cāng)庫(kù)怎么構(gòu)建的,現(xiàn)在的數(shù)據(jù)中臺(tái)數(shù)據(jù)倉(cāng)庫(kù)就是怎么構(gòu)建的,一樣的寫(xiě)SQL、做分層、打標(biāo)簽、建模型,并沒(méi)有什么特殊的。
數(shù)據(jù)倉(cāng)庫(kù)的本質(zhì)
數(shù)據(jù)倉(cāng)庫(kù)的本質(zhì)就是完成從面向業(yè)務(wù)過(guò)程數(shù)據(jù)的組織管理到面向業(yè)務(wù)分析數(shù)據(jù)的組織和管理的轉(zhuǎn)變過(guò)程,也是商業(yè)智能BI中數(shù)據(jù)倉(cāng)庫(kù)的主要作用。
商業(yè)智能BI數(shù)據(jù)倉(cāng)庫(kù)中,業(yè)務(wù)過(guò)程數(shù)據(jù)的組織管理實(shí)際上就是由各種業(yè)務(wù)系統(tǒng)來(lái)完成的,比如ERP、CRM、OA等各類(lèi)業(yè)務(wù)系統(tǒng),他們解決的是基本的業(yè)務(wù)流程管理。通過(guò)數(shù)據(jù)的錄入 Insert、刪除Delete、修改 Update、查詢(xún) Search 即用戶(hù)在業(yè)務(wù)系統(tǒng)操作界面中做的增刪改查操作,這些操作和業(yè)務(wù)系統(tǒng)底層的數(shù)據(jù)庫(kù)例如MySQL、Oracle、SQL Server 完成了數(shù)據(jù)的交互,數(shù)據(jù)也沉淀在這些數(shù)據(jù)庫(kù)中。

那么把各個(gè)業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫(kù)比做是一個(gè)個(gè)糧食倉(cāng)庫(kù)的話(huà),商業(yè)智能BI數(shù)據(jù)倉(cāng)庫(kù)就可以簡(jiǎn)單理解要把各個(gè)分散的糧食倉(cāng)庫(kù)的糧食搬運(yùn)到一個(gè)更大的糧食倉(cāng)庫(kù)來(lái)集中管理。
不同的獨(dú)立的糧食倉(cāng)庫(kù)中存儲(chǔ)的糧食可能不一樣,有的糧食壞了可能不能吃了,那么在匯總到大的糧食倉(cāng)庫(kù)過(guò)程中就需要把這些壞掉的糧食給去除掉。還有在不同的糧食倉(cāng)庫(kù)中可能也存了一些同樣的糧食,那么在搬運(yùn)到大的糧食倉(cāng)庫(kù)中,就需要去做一些歸類(lèi)合并,按照更好的一種陳列方式將糧食擺放整齊,最后對(duì)外支持的時(shí)候,就從這個(gè)大的糧食倉(cāng)庫(kù)直接取糧食就可以了。各類(lèi)糧食都有,并且有很好的組織形式。這個(gè)存放糧食的大糧倉(cāng)就是商業(yè)智能BI數(shù)據(jù)倉(cāng)庫(kù)。從小的糧食倉(cāng)庫(kù)搬運(yùn)、清洗轉(zhuǎn)換、加載糧食的過(guò)程就是ETL過(guò)程,Extraction 抽取、Transformation 轉(zhuǎn)換、Loading 加載。

所以,商業(yè)智能BI數(shù)據(jù)倉(cāng)庫(kù)的本質(zhì)還是一個(gè)數(shù)據(jù)庫(kù),它將各個(gè)異構(gòu)的數(shù)據(jù)源數(shù)據(jù)庫(kù)的數(shù)據(jù)給統(tǒng)一管理起來(lái),并且完成了質(zhì)量較差的數(shù)據(jù)的剔除、格式轉(zhuǎn)換,最終按照一種合理的建模方式來(lái)完成源數(shù)據(jù)組織形式的轉(zhuǎn)變,以更好的支持到前端的可視化分析。
在商業(yè)智能BI數(shù)據(jù)倉(cāng)庫(kù)的全周期流程中,有的時(shí)候可能用普通的汽車(chē)搬運(yùn)糧食,有的可能用飛機(jī)運(yùn)糧食,有的可能需要每小時(shí)運(yùn)一次,有的可能就需要每天運(yùn)一次或者每月運(yùn)一次,這就是ETL工具的選擇和數(shù)據(jù)抽取調(diào)度以及抽取頻次的管理。
有的時(shí)候糧食比較多,一般的糧食倉(cāng)庫(kù)容量不夠,或者要求效率更高,就會(huì)選擇不同的糧食倉(cāng)庫(kù)架構(gòu)來(lái)進(jìn)行管理,這就是數(shù)據(jù)倉(cāng)庫(kù)技術(shù)框架的選擇,是選擇大數(shù)據(jù)技術(shù)框架,還是一般的技術(shù)框架就可以滿(mǎn)足,最終決定了我們要建設(shè)這個(gè)數(shù)據(jù)倉(cāng)庫(kù)的投入成本。