什么時(shí)候需要用到數(shù)據(jù)倉(cāng)庫(kù)?
一個(gè)公司里面不同項(xiàng)目可能用到不同的數(shù)據(jù)源,有的存在MySQL里面,又的存在MongoDB里面,甚至還有些要做第三方數(shù)據(jù)。
但是現(xiàn)在又想把數(shù)據(jù)整合起來(lái),進(jìn)行數(shù)據(jù)分析。此時(shí)數(shù)據(jù)倉(cāng)庫(kù)(Data Warehouse,DW)就派上用場(chǎng)了。它可以對(duì)多種業(yè)務(wù)數(shù)據(jù)進(jìn)行篩選和整合,可以用于數(shù)據(jù)分析、數(shù)據(jù)挖掘、數(shù)據(jù)報(bào)表。
數(shù)據(jù)倉(cāng)庫(kù)的特點(diǎn)
- 主題性:數(shù)據(jù)倉(cāng)庫(kù)是針對(duì)某個(gè)主題來(lái)進(jìn)行組織,比如滴滴出行,司機(jī)行為分析就是一個(gè)主題,所以可以將多種不同的數(shù)據(jù)源進(jìn)行整合。而傳統(tǒng)的數(shù)據(jù)庫(kù)主要針對(duì)某個(gè)項(xiàng)目而言,數(shù)據(jù)相對(duì)分散和孤立。
- 集成性:
數(shù)據(jù)倉(cāng)庫(kù)需要將多個(gè)數(shù)據(jù)源的數(shù)據(jù)存到一起,但是這些數(shù)據(jù)以前的存儲(chǔ)方式不同,所以需要經(jīng)過(guò)抽取、清洗、轉(zhuǎn)換的過(guò)程 - 穩(wěn)定性:保存的數(shù)據(jù)是一系列歷史快照,不允許修改,只能分析。
- 時(shí)變性:會(huì)定期接收到新的數(shù)據(jù),反應(yīng)出最新的數(shù)據(jù)變化。
總的來(lái)說(shuō),數(shù)據(jù)倉(cāng)庫(kù)是將多個(gè)數(shù)據(jù)源的數(shù)據(jù)按照一定的主題集成起來(lái),因?yàn)橹暗臄?shù)據(jù)各不相同,所以需要抽取、清洗、轉(zhuǎn)換。
整合以后的數(shù)據(jù)不允許隨便修改,只能分析,還需要定期更新。
ETL
上面我們說(shuō)過(guò),數(shù)據(jù)倉(cāng)庫(kù)接收的數(shù)據(jù)源是不同的,要做集成的話,需要抽取、清洗、轉(zhuǎn)換三個(gè)步驟,這就是ETL
(Extract-Transform-Load)
- Extract:數(shù)據(jù)抽取,就是把數(shù)據(jù)從數(shù)據(jù)源讀出來(lái)
- Transform:數(shù)據(jù)轉(zhuǎn)換,就是把數(shù)據(jù)轉(zhuǎn)換為特定的格式
-
Load:數(shù)據(jù)加載,把處理后的數(shù)據(jù)加載到目標(biāo)處。
image.png
主流的數(shù)據(jù)倉(cāng)庫(kù)
國(guó)內(nèi)最常用的是一款基于Hadoop的開(kāi)源數(shù)據(jù)倉(cāng)庫(kù),名為Hive
,它可以對(duì)存儲(chǔ)在HDFS的文件數(shù)據(jù)進(jìn)行查詢(xún)、分析。
Hive對(duì)外可以提供HiveQL,這是類(lèi)似于SQL語(yǔ)言的一種查詢(xún)語(yǔ)言。在查詢(xún)時(shí)可以將HiveQL語(yǔ)句轉(zhuǎn)換為MapReduce任務(wù),在Hadoop層進(jìn)行執(zhí)行。
Hive的最大優(yōu)勢(shì)在于免費(fèi),那其他知名的商業(yè)數(shù)據(jù)倉(cāng)庫(kù)有那些呢?比如Oracle,DB2,其中業(yè)界老大是Teradata
Teradata數(shù)據(jù)倉(cāng)庫(kù)支持大規(guī)模并行處理平臺(tái)(MPP),可以高速處理海量實(shí)際上,性能遠(yuǎn)遠(yuǎn)高于Hive。對(duì)企業(yè)來(lái)說(shuō),只需要專(zhuān)注于業(yè)務(wù),節(jié)省管理技術(shù)方面的精力,實(shí)現(xiàn)ROI(投資回報(bào)率)最大化。