簡單來說,數(shù)據(jù)倉庫是一種用于存儲并分析數(shù)據(jù)最終生成分析報告的系統(tǒng)。數(shù)據(jù)通常來自多個系統(tǒng),然后將其存入數(shù)據(jù)倉庫以進行長期存儲和分析。存儲在數(shù)倉中的數(shù)據(jù)都是結(jié)構(gòu)化的使得企業(yè)中許多部門或部門的用戶可以按需訪問和分析數(shù)據(jù)。

數(shù)據(jù)倉庫中的數(shù)據(jù)有很多來源:數(shù)據(jù)庫、日志、點擊流等,這些數(shù)據(jù)被用來分析并挖掘出商業(yè)價值。
數(shù)據(jù)倉庫具有雙重角色:
分析工具:為許多部門的用戶提供決策和報告支持。
數(shù)據(jù)檔案:保存未在業(yè)務(wù)系統(tǒng)中維護的歷史數(shù)據(jù)。
數(shù)據(jù)倉庫致力于為整個企業(yè)創(chuàng)建一個統(tǒng)一且真實的數(shù)據(jù)系統(tǒng)。不幸的是,要在這樣的數(shù)據(jù)系統(tǒng)中保持數(shù)據(jù)的準確性和實時性非常困難。
為什么要使用數(shù)據(jù)倉庫?
因此,如果數(shù)據(jù)倉庫的構(gòu)建和維護是如此復(fù)雜,那么企業(yè)為什么還要自尋煩惱呢?
數(shù)據(jù)倉庫可以提供:
- 對所有數(shù)據(jù)的單一訪問點,而不是要求用戶連接數(shù)十個甚至數(shù)百個系統(tǒng)來訪問不同來源的數(shù)據(jù)。
- 保證數(shù)據(jù)質(zhì)量。
- 存儲所有的歷史數(shù)據(jù)并記錄數(shù)據(jù)的變更歷史。
- 出于安全考慮,將常規(guī)業(yè)務(wù)系統(tǒng)與數(shù)據(jù)分析系統(tǒng)分開。
- 標準化數(shù)據(jù)語義,例如:一致性的命名約定等。
數(shù)據(jù)倉庫以結(jié)構(gòu)化的方式存儲所有數(shù)據(jù),意味著通過數(shù)據(jù)倉庫可以回答各種復(fù)雜問題,例如:
- 在過去的十年中,我們每個產(chǎn)品線每月按城市和州劃分的收入是多少?
- 我們的一臺ATM機的平均交易規(guī)模是多少,可以按一天中的時間和總客戶資產(chǎn)細分?
- 在過去至少開業(yè)了三年的商店中,過去一年員工流失率是多少?這些員工每周工作幾小時?
數(shù)據(jù)倉庫架構(gòu)
構(gòu)建數(shù)據(jù)倉庫的方式有很多種,但是基本架構(gòu)幾乎都是一樣的:
首先,對原始數(shù)據(jù)進行格式化,有時也稱為數(shù)據(jù)清洗和規(guī)范化。您可以將其視為將原始數(shù)據(jù)從源移動到倉庫的管道(后面會知道,這是ETL),以確保對數(shù)據(jù)進行適當?shù)拿透袷交?,并與其余存儲的數(shù)據(jù)保持準確的關(guān)系。這通常稱為數(shù)據(jù)集成層。
然后將格式化的數(shù)據(jù)存儲在數(shù)據(jù)倉庫本身中。訪問層允許工具和應(yīng)用程序以適合其需求的格式檢索數(shù)據(jù)。
數(shù)據(jù)倉庫的另一個重要部分是元數(shù)據(jù),用來對存儲的數(shù)據(jù)進行解釋說明。維護數(shù)據(jù)倉庫的數(shù)據(jù)工程師和數(shù)據(jù)科學(xué)家收集有關(guān)數(shù)據(jù)源,按照約定對數(shù)據(jù)命名,清洗和規(guī)范化,生成元數(shù)據(jù)并使用此信息來維護數(shù)據(jù)質(zhì)量。
關(guān)鍵概念
OLTP與OLAP
通常,可以將數(shù)據(jù)庫系統(tǒng)分為OLAP(在線分析處理)或OLTP(在線事務(wù)處理)兩種。通常的玩法是:OLTP系統(tǒng)在聯(lián)機應(yīng)用程序中創(chuàng)建或捕獲數(shù)據(jù),而OLAP系統(tǒng)分析從一個或多個OLTP系統(tǒng)中收集的數(shù)據(jù)。數(shù)據(jù)倉庫嚴格來說是OLAP領(lǐng)域的系統(tǒng)。

因此,OLTP和OLAP系統(tǒng)具有不同的技術(shù)屬性和要求。

提取,轉(zhuǎn)換,加載(ETL)
ETL主要用于數(shù)據(jù)在源數(shù)據(jù)系統(tǒng)和數(shù)據(jù)倉庫之間的遷移(即在數(shù)據(jù)倉庫體架構(gòu)中提到的管道),以及從數(shù)據(jù)倉庫到數(shù)據(jù)集市的移動。必須首先從源中提取數(shù)據(jù),然后根據(jù)下一層存儲的標準進行轉(zhuǎn)換,最后必須將格式化的數(shù)據(jù)正確地加載到下一層。了解有關(guān)ETL工具的更多信息。
相關(guān)概念
數(shù)據(jù)倉庫與數(shù)據(jù)庫
嚴格來說,數(shù)據(jù)庫是任何結(jié)構(gòu)化的數(shù)據(jù)集合。Excel電子表格,Rolodex或通訊錄都是非常簡單的數(shù)據(jù)庫示例。Excel,Oracle或MongoDB等軟件是一種數(shù)據(jù)庫管理系統(tǒng)(DBMS),允許用戶訪問和管理數(shù)據(jù)庫。人們通常將DBMS稱為數(shù)據(jù)庫。數(shù)據(jù)倉庫就是一種數(shù)據(jù)庫。它專注于其存儲的數(shù)據(jù)-來自許多來源的歷史數(shù)據(jù)-及其用途-分析。
數(shù)據(jù)倉庫與數(shù)據(jù)湖
數(shù)據(jù)庫以及數(shù)據(jù)倉庫的一個關(guān)鍵屬性是它們包含結(jié)構(gòu)化數(shù)據(jù)。數(shù)據(jù)存儲方式(從可用的字段,日期格式以及介于兩者之間的所有內(nèi)容)都已事先達成協(xié)議,整個數(shù)據(jù)庫都嚴格遵循此結(jié)構(gòu)或架構(gòu)。它們的相對一致性和穩(wěn)定性意味著數(shù)據(jù)倉庫可以為企業(yè)中多種角色的查詢提供服務(wù)。這個過程非常結(jié)構(gòu)化,非??深A(yù)測且非常有效,但也很難做到。
數(shù)據(jù)湖是另一種存儲數(shù)據(jù)的方式,但是數(shù)據(jù)湖中的數(shù)據(jù)沒有嚴格的結(jié)構(gòu)。與數(shù)據(jù)倉庫相反,數(shù)據(jù)湖中的數(shù)據(jù)schema信息只有到真正查詢的時候才會確定。這意味著將數(shù)據(jù)加載到數(shù)據(jù)湖中要容易得多,但是查詢的的過程更為復(fù)雜。與數(shù)據(jù)倉庫相比,數(shù)據(jù)湖中執(zhí)行查詢的RT時間通常更長。
數(shù)據(jù)倉庫與數(shù)據(jù)集市
如果數(shù)據(jù)倉庫保存并集成了整個組織的數(shù)據(jù),則數(shù)據(jù)集市是數(shù)據(jù)的較小子集,專門用于給定部門使用。通常,數(shù)據(jù)集市通常為單個部門構(gòu)建或控制,數(shù)據(jù)通常來自于:用中央數(shù)據(jù)倉庫、公司內(nèi)部的其他系統(tǒng)數(shù)據(jù)以及公司外部的數(shù)據(jù)。數(shù)據(jù)集市通常只涉及一個主題領(lǐng)域,例如市場營銷或銷售。因為它們更小且更具體,所以它們通常更易于管理和維護,并具有更靈活的結(jié)構(gòu)。
OLAP Cubes
OLAP系統(tǒng)通常包含大量數(shù)據(jù),這可能會使在OLAP系統(tǒng)上上運行的特定查詢速度變慢。為了加快和簡化查詢,可以將OLAP系統(tǒng)進一步細分為稱為Cubes的子數(shù)據(jù)庫,這些子數(shù)據(jù)庫包含有限維度的數(shù)據(jù),數(shù)據(jù)量更小,因此可以提供更快的查詢時間。
商業(yè)智能工具(BI工具)
BI軟件是數(shù)據(jù)倉庫頂部的關(guān)鍵層,BI工具通過對數(shù)據(jù)倉庫中數(shù)據(jù)的分析,最終制定業(yè)務(wù)決策。商業(yè)智能軟件具有許多不同類型的功能,但它通常包括:用于構(gòu)建和執(zhí)行查詢的某種引擎,以及一種存儲和可視化結(jié)果的方法,從而可以將其合并到包含業(yè)務(wù)分析的文檔中。
數(shù)據(jù)倉庫技術(shù)
在考慮使用哪些工具時,重要的是要確保它們滿足您的需求,這些方面包括可伸縮性(它會隨著您的需求而增長),訪問權(quán)限(哪些用戶以及有多少用戶需要訪問您的倉庫以及從何處訪問)以及集成。 (此系統(tǒng)是否與您的數(shù)據(jù)源和BI工具集成)。
關(guān)系數(shù)據(jù)庫
關(guān)系數(shù)據(jù)庫是存儲大多數(shù)業(yè)務(wù)數(shù)據(jù)的系統(tǒng)。他們已經(jīng)存在了幾十年,而且非常成熟,并形成了龐大的生態(tài)體系。存在用于OLTP和OLAP用例的關(guān)系數(shù)據(jù)庫。
- IBM DB2。IBM將其核心關(guān)系數(shù)據(jù)庫DB2與應(yīng)用服務(wù)器,數(shù)據(jù)挖掘技術(shù),用于多維數(shù)據(jù)集和BI的Cognos以及其他技術(shù)捆綁在一起。他們稱此為DB2倉庫。在使用IBM的硬件,軟件和服務(wù)的IBM商店中,DB2最受歡迎。
- Microsoft SQL Server。Microsoft已在許多版本中構(gòu)建了其核心關(guān)系數(shù)據(jù)庫的功能,以支持大型數(shù)據(jù)倉庫部署。他們還建立了與云產(chǎn)品和Hadoop的集成,從而為結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)提供了更全面的產(chǎn)品。Microsoft還擁有最好的管理工具,并與其他Microsoft產(chǎn)品(包括Windows)集成在一起。SQL Server在Microsoft商店中最受歡迎,并且往往更具成本競爭力。
- Oracle數(shù)據(jù)庫云服務(wù)器。與IBM一樣,Oracle也是硬件供應(yīng)商。Exadata是基于核心Oracle數(shù)據(jù)庫構(gòu)建的設(shè)備,其硬件和軟件已針對大型高性能系統(tǒng)進行了優(yōu)化。Oracle是市場上最受歡迎的數(shù)據(jù)庫。數(shù)據(jù)庫云服務(wù)器非常昂貴。
MPP(大規(guī)模并行處理)分析數(shù)據(jù)庫
MPP數(shù)據(jù)庫是一種數(shù)據(jù)倉庫技術(shù),專注于硬件和軟件以支持并行處理。也就是說,查詢處理被分解為許多較小的并行任務(wù),這些任務(wù)在多個服務(wù)器上一起執(zhí)行。這種方法大大加快了查詢和提取時間。但是,MPP數(shù)據(jù)庫可能會很昂貴,因為最受歡迎的供應(yīng)商都提供封閉源產(chǎn)品。
流行的MPP數(shù)據(jù)庫包括:
- Teradata。Teradata是使用最廣泛,最成熟的。與上面列出的關(guān)系供應(yīng)商不同,Teradata始終專注于數(shù)據(jù)倉庫。它不開源,僅商用,并且非常昂貴。
- IBM Netezza。Netezza是另一種數(shù)據(jù)倉庫設(shè)備產(chǎn)品,由于低廉的價格和易用性而快速占領(lǐng)市場。該軟件部分基于開源關(guān)系數(shù)據(jù)庫PostgreSQL。Netezza的關(guān)鍵創(chuàng)新之一是使用現(xiàn)場可編程門陣列(FPGA)來加速查詢處理。Netezza于2010年被IBM收購。
- HP Vertica。Vertica是來自MIT的一項創(chuàng)新的面向列的MPP數(shù)據(jù)庫。與當時的競爭產(chǎn)品不同,Vertica可以作為支持多種硬件平臺的軟件提供,并且由于具有新穎的SQL執(zhí)行引擎和強大的壓縮功能而具有出色的性能。Vertica于2011年被惠普收購。
- Pivotal Greenplum。Greenplum是基于PostgreSQL的MPP數(shù)據(jù)庫。因為它基于PostgreSQL,所以它具有更廣泛的工具生態(tài)系統(tǒng)。而且由于它是面向行的,因此與面向列的產(chǎn)品相比,要進行不同的權(quán)衡。它于2010年被EMC收購,然后在2015年由Pivotal開源。
- SAP Sybase IQ。Sybase IQ是最早的面向列的數(shù)據(jù)庫之一,并于1990年代末進入市場。以其出色的性能而聞名,但被認為價格昂貴且難以管理和擴展。Sybase在2010年被SAP收購。
Hadoop生態(tài)
類似于MPP方法,Hadoop也能夠在計算機集群之間分配計算任務(wù)。但是,Hadoop是開源的。一些數(shù)據(jù)湖之所以使用Hadoop,是因為它廉價,能快速地處理大量結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。