李小強 何珊 何金明
摘 要: 數(shù)據(jù)倉庫的產(chǎn)生是信息技術發(fā)展的必然結(jié)果。它是在數(shù)據(jù)庫的基礎上發(fā)展起來的,又不同于數(shù)據(jù)庫。數(shù)據(jù)庫是作為數(shù)據(jù)管理的手段,主要用于事務處理,而數(shù)據(jù)倉庫則對聯(lián)機分析的能力提出更高的要求。本文通過對數(shù)據(jù)庫和數(shù)據(jù)倉庫的概念及應用進行較全面的對比分析,對數(shù)據(jù)倉庫有更深刻的理解。
關鍵詞: 數(shù)據(jù)庫 數(shù)據(jù)倉庫 區(qū)別
很多BI論壇上在探討數(shù)據(jù)倉庫的概念與理解:為什么要建立數(shù)據(jù)倉庫,數(shù)據(jù)倉庫和數(shù)據(jù)庫有什么區(qū)別?理論上的說法很多,但要真正很好地理解,能簡潔地向客戶闡述明白,讓客戶覺得建立數(shù)據(jù)倉庫是一件值得做的事情,就有必要回答這個問題。
一、數(shù)據(jù)庫與數(shù)據(jù)倉庫的概念區(qū)別
嚴格地說,數(shù)據(jù)庫是“按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫”。在經(jīng)濟管理的日常工作中,常常需要把某些相關的數(shù)據(jù)放進這樣的“倉庫”,并根據(jù)管理的需要進行相應的處理。例如,企業(yè)或事業(yè)單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就可以看成是一個數(shù)據(jù)庫。有了這個“數(shù)據(jù)庫”就可以根據(jù)需要隨時查詢某職工的基本情況,也可以查詢工資在某個范圍內(nèi)的職工人數(shù),等等。這些工作如果都在計算機上自動進行,那人事管理就可以達到極高的水平。此外,在財務管理、倉庫管理、生產(chǎn)管理中也需要建立眾多的這種“數(shù)據(jù)庫”,使其可以利用計算機實現(xiàn)財務、倉庫、生產(chǎn)的自動化管理。J.Martin給數(shù)據(jù)庫下了一個比較完整的定義:數(shù)據(jù)庫是存儲在一起的相關數(shù)據(jù)的集合,這些數(shù)據(jù)是結(jié)構(gòu)化的,無有害的或不必要的冗余,并為多種應用服務;數(shù)據(jù)的存儲獨立于使用它的程序;對數(shù)據(jù)庫插入新數(shù)據(jù),修改和檢索原有數(shù)據(jù)均能按一種公用的和可控制的方式進行。當某個系統(tǒng)中存在結(jié)構(gòu)上完全分開的若干個數(shù)據(jù)庫時,則該系統(tǒng)包含一個“數(shù)據(jù)庫集合”。
數(shù)據(jù)倉庫是一種系統(tǒng),這種系統(tǒng)是用數(shù)據(jù)庫裝東西;關鍵是裝的什么樣的數(shù)據(jù),數(shù)據(jù)庫裝的原始數(shù)據(jù),沒經(jīng)過任何加工;而數(shù)據(jù)倉庫是為了滿足分析需要,對源數(shù)據(jù)進行了Transform過程,具體是怎樣一個處理過程,可以從BillInmon的倉庫定義四個特性進行理解。數(shù)據(jù)倉庫系統(tǒng)與其他基礎業(yè)務系統(tǒng)(例如財務系統(tǒng)、銷售系統(tǒng)、人力資源系統(tǒng)等)的區(qū)別是:
基礎業(yè)務系統(tǒng)的特點是各管各的,例如農(nóng)場系統(tǒng)生產(chǎn)了白菜,那么用一個數(shù)據(jù)庫來裝,人力資源系統(tǒng)生產(chǎn)了豬肉,再用一個數(shù)據(jù)庫來裝。我要做一道菜,取菜的方式為如下兩種。一是分別到各個數(shù)據(jù)庫去取,比較麻煩,同時各個數(shù)據(jù)庫中放的是一些比較原始的東西,我要拿過來做菜,從生菜到下鍋還需要經(jīng)過很多道工序。二是讓種菜的菜農(nóng)送過來,但送過來的東西不一定是我想要的,而且不同的時候我想要不同的東西,這樣對買賣雙方造成很多麻煩。為了減少這些困擾,就需要改進從菜農(nóng)供菜到炒菜的流程,超市就應運而生了。數(shù)據(jù)倉庫系統(tǒng)就是建立一個大的超市,將各地菜農(nóng)出產(chǎn)的東西收集過來,清洗干凈,分門別類地放好。這樣,你要哪種菜的時候,直接從超市里面拿就可以了。
二、數(shù)據(jù)庫與數(shù)據(jù)倉庫應用于不同的方向
從應用上來講,數(shù)據(jù)庫是面向事務的設計,數(shù)據(jù)倉庫是面向主題設計的。數(shù)據(jù)庫一般存儲在線交易數(shù)據(jù),數(shù)據(jù)倉庫存儲的一般是歷史數(shù)據(jù)。
因此設計上,數(shù)據(jù)庫設計是盡量避免冗余,一般采用符合范式的規(guī)則來設計,數(shù)據(jù)倉庫在設計是有意引入冗余,采用反范式的方式來設計。數(shù)據(jù)庫是為捕獲數(shù)據(jù)而設計,數(shù)據(jù)倉庫是為分析數(shù)據(jù)而設計,它的兩個基本的元素是維表和事實表。維是看問題的角度,比如時間,部門,維表放的就是這些東西的定義,事實表里放著要查詢的數(shù)據(jù),同時有維的ID。
任何技術都是為應用服務的,結(jié)合應用可以很容易地理解。以銀行業(yè)務為例。數(shù)據(jù)庫是事務系統(tǒng)的數(shù)據(jù)平臺,客戶在銀行做的每筆交易都會寫入數(shù)據(jù)庫,被記錄下來,這里,可以簡單地理解為用數(shù)據(jù)庫記賬。數(shù)據(jù)倉庫是分析系統(tǒng)的數(shù)據(jù)平臺,它從事務系統(tǒng)獲取數(shù)據(jù),并進行匯總、加工,為決策者提供決策的依據(jù)。比如,某銀行某分行一個月發(fā)生多少交易,該分行當前存款余額是多少。比如,某品牌汽車在某地一個月銷售多少臺汽車,有多少臺是屬于高檔的。如果銷售量又多,咨詢的人數(shù)又在上漲,那么就要考慮在這個地區(qū)設高檔4S店。
顯然,有些事實數(shù)據(jù)的交易量是巨大的,通常以百萬甚至千萬次計算。事務系統(tǒng)是實時的,這就要求時效性,比如在銀行,客戶存一筆錢需要幾十秒是無法忍受的,這就要求數(shù)據(jù)庫只能存儲很短一段時間的數(shù)據(jù)。而分析系統(tǒng)是事后的,它要提供關注時間段內(nèi)所有的有效數(shù)據(jù)。這些數(shù)據(jù)是海量的,匯總計算起來也要慢一些,但是,只要提供有效的分析數(shù)據(jù)就達到目的了。
數(shù)據(jù)倉庫,是在數(shù)據(jù)庫已經(jīng)大量存在的情況下,為了進一步挖掘數(shù)據(jù)資源、為了決策需要而產(chǎn)生的,它絕不是所謂的“大型數(shù)據(jù)庫”。那么,數(shù)據(jù)倉庫與傳統(tǒng)數(shù)據(jù)庫比較,有哪些不同呢?讓我們先看看W.H.Inmon關于數(shù)據(jù)倉庫的定義:面向主題的、集成的、與時間相關且不可修改的數(shù)據(jù)集合。
1.“面向主題的”:傳統(tǒng)數(shù)據(jù)庫主要是為應用程序進行數(shù)據(jù)處理,未必按照同一主題存儲數(shù)據(jù);數(shù)據(jù)倉庫側(cè)重于數(shù)據(jù)分析工作,是按照主題存儲的。這一點,類似于傳統(tǒng)農(nóng)貿(mào)市場與超市的區(qū)別——市場里面,白菜、蘿卜、香菜會在一個攤位上,如果它們是一個小販賣的;而超市里,白菜、蘿卜、香菜則各自一塊。也就是說,市場里的菜(數(shù)據(jù))是按照小販(應用程序)歸堆(存儲)的,超市里面則是按照菜的類型(同主題)歸堆的。
2.“與時間相關”:數(shù)據(jù)庫保存信息的時候,并不強調(diào)一定有時間信息。數(shù)據(jù)倉庫則不同,出于決策的需要,數(shù)據(jù)倉庫中的數(shù)據(jù)都要標明時間屬性。決策中,時間屬性很重要。同樣都是累計購買過九車產(chǎn)品的顧客,一位是最近三個月購買九車,一位是最近一年從未買過,這對于決策者意義是不同的。
3、“不可修改”:數(shù)據(jù)倉庫中的數(shù)據(jù)并不是最新的,而是來源于其他數(shù)據(jù)源。數(shù)據(jù)倉庫反映的是歷史信息,并不是很多數(shù)據(jù)庫處理的那種日常事務數(shù)據(jù)(有的數(shù)據(jù)庫例如電信計費數(shù)據(jù)庫甚至處理實時信息)。因此,數(shù)據(jù)倉庫中的數(shù)據(jù)是極少或根本不修改的;當然,向數(shù)據(jù)倉庫添加數(shù)據(jù)是允許的。
三、不要把數(shù)據(jù)倉庫理解為數(shù)據(jù)倉庫產(chǎn)生的過程
早期一直不理解數(shù)據(jù)倉庫是什么困惑得很。宏觀一點講,數(shù)據(jù)倉庫就是堆放公司所有數(shù)據(jù)的地方,之所以把數(shù)據(jù)都堆在一起,是為了從中找到有價值的東西。
數(shù)據(jù)倉庫更多的是一個概念,不要把數(shù)據(jù)倉庫想成那些號稱是數(shù)據(jù)倉庫的軟件產(chǎn)品們。(數(shù)據(jù)倉庫的建立和數(shù)據(jù)挖掘都是一個過程,可以從數(shù)據(jù)倉庫生命周期和OLTP系統(tǒng)生命周期的區(qū)別進行理解)。
數(shù)據(jù)倉庫的物理上就是數(shù)據(jù)庫,相對業(yè)務系統(tǒng)數(shù)據(jù)庫叫OLTP數(shù)據(jù)庫(用于業(yè)務處理),這種數(shù)據(jù)庫叫OLAP數(shù)據(jù)庫,OLAP是針對特定問題的聯(lián)機數(shù)據(jù)訪問和數(shù)據(jù)分析而產(chǎn)生的一種技術,它滿足DDS從多種角度對數(shù)據(jù)進行快速、一致、交互地分析,克服傳統(tǒng)DDS交互能力差的弊病,使決策者能夠?qū)?shù)據(jù)進行深入觀察。OLAP服務器使用為用戶預定義的多維數(shù)據(jù)視圖對數(shù)據(jù)倉庫的信息進行統(tǒng)計分析處理,為具有明確分析范圍和分析要求的用戶提供高性能的決策支持在線分析處理,是基于DW上的一種多維分析方式。
數(shù)據(jù)倉庫的概念是針對以下基本需求產(chǎn)生的:公司的業(yè)務系統(tǒng)很多,業(yè)務系統(tǒng)的歷史數(shù)據(jù)不方便查詢。不同的業(yè)務系統(tǒng)往往管理部門不同,地域不同。能不能將所有這些數(shù)據(jù)集中起來,再淘淘有沒有有意義的業(yè)務規(guī)律。數(shù)據(jù)倉庫數(shù)據(jù)庫往往很大,因為公司所有的數(shù)據(jù)集中得越多,越能淘到有價值的發(fā)現(xiàn),例如隨便就100G以上。
數(shù)據(jù)倉庫的組成十分繁雜,既有業(yè)務系統(tǒng)的歷史數(shù)據(jù),又有人事、財務數(shù)據(jù),還要自己建一些基礎性的數(shù)據(jù),例如,公共假期數(shù)據(jù)、地理信息、國家信息等。
數(shù)據(jù)倉庫概念包含從業(yè)務生產(chǎn)系統(tǒng)采集數(shù)據(jù)的程序,這個程序還不能影響業(yè)務系統(tǒng)的運行,即所謂“ETL”過程。數(shù)據(jù)倉庫包括業(yè)務系統(tǒng)長期的歷史數(shù)據(jù),例如5年,用來分析,即所謂“ODS”數(shù)據(jù)。數(shù)據(jù)倉庫包括針對某項業(yè)務值(例如銷售量)重新打上標簽的業(yè)務流水數(shù)據(jù),即所謂“事實表”、“維度表”。數(shù)據(jù)倉庫概念興許還包含報表生成工具,即所謂“BI”工具。這些工具能夠達到幾年前所謂DSS(決策分析)的效果。數(shù)據(jù)倉庫的客戶歷史資料的分析,也許又與CRM系統(tǒng)沾點邊??傊?,一個公司要針對已有的歷史業(yè)務數(shù)據(jù),充分利用它們,那么就應上數(shù)據(jù)倉庫項目。至于那些嚇唬人的大寫字母的組合,只是為達到這個目的的科學技術罷了。必須牢記住數(shù)據(jù)倉庫的基本需求,不要被供應商嚇著。
四、數(shù)據(jù)倉庫是數(shù)據(jù)提煉的結(jié)果
數(shù)據(jù)倉庫可以說是決策支持系統(tǒng),能幫助老板了解企業(yè)的整體全貌,看到數(shù)據(jù)倉庫提供的經(jīng)過整理統(tǒng)計歸納的數(shù)據(jù)后老板憑自己的管理經(jīng)驗可以發(fā)現(xiàn)企業(yè)的問題或困難或成功因素在哪一方面,然后不斷地追溯數(shù)據(jù),直到確定到最具體的細節(jié)上,這樣能夠不斷提升老板或管理層的管理水平,不斷改善企業(yè)的管理情況。最好的一個例子就是某大型公司炸薯片的故事:
某大型食品公司的一位生成經(jīng)理曾發(fā)現(xiàn),每天晚上炸薯片用的油量比白天增加很多,薯片質(zhì)量也下降很多,一時卻搞不清是什么原因。后來,公司運用商業(yè)智能(BusinessIntelligence,簡稱BI)技術發(fā)現(xiàn),因為在夏天天氣炎熱,人容易犯困,在凌晨3點到5點工人的工作效率不高。公司在對相關數(shù)據(jù)分析后得知,工人在3點到5點增加一頓夜宵,工人的工作效率明顯提高。得到這個結(jié)果后,公司決定在晚上定時增加一頓夜宵,并把工作時間縮短1個小時,結(jié)果是薯片的產(chǎn)量和質(zhì)量都提高了很多。
五、數(shù)據(jù)倉庫的幾個特點
數(shù)據(jù)倉庫的方案建設的目的,是為前端查詢和分析作為基礎,因為有較大的冗余,所以需要的存儲空間較大。為了更好地為前端應用服務,數(shù)據(jù)倉庫必須有如下幾點優(yōu)點,否則就是失敗的數(shù)據(jù)倉庫方案。
1.效率足夠高。客戶要求的分析數(shù)據(jù)一般分為日、周、月、季、年等,可以看出,日為周期的數(shù)據(jù)要求的效率最高,要求24小時甚至12小時內(nèi),客戶能看到昨天的數(shù)據(jù)分析。由于有的企業(yè)每日的數(shù)據(jù)量很大,設計不好的數(shù)據(jù)倉庫經(jīng)常會出問題,延遲1—3日才能給出數(shù)據(jù),顯然不行。
2.數(shù)據(jù)質(zhì)量??蛻粢锤鞣N信息,肯定要準確的數(shù)據(jù),但由于數(shù)據(jù)倉庫流程至少分為3步,2次ETL,復雜的架構(gòu)會更多層次,那么由于數(shù)據(jù)源有臟數(shù)據(jù)或者代碼不嚴謹,都可以導致數(shù)據(jù)失真,客戶看到錯誤的信息就可能導致分析出錯誤的決策,造成損失,而不是效益。
3.擴展性。之所以有的大型數(shù)據(jù)倉庫系統(tǒng)架構(gòu)設計復雜,是因為考慮到了未來3—5年的擴展性,這樣的話,客戶不用太快花錢重建數(shù)據(jù)倉庫系統(tǒng),就能很穩(wěn)定運行。主要體現(xiàn)在數(shù)據(jù)建模的合理性,數(shù)據(jù)倉庫方案中多出一些中間層,使海量數(shù)據(jù)流有足夠的緩沖,不至于數(shù)據(jù)量大時就運行不起來。
參考文獻:
[1]周寧,吳佳鑫.信息資源數(shù)據(jù)庫[M].武漢大學出版社,2010.9,第三版.
[2]陸劍峰,張浩.數(shù)據(jù)倉庫數(shù)據(jù)更新的研究及基于Oracle數(shù)據(jù)庫的開發(fā)與應用[J].《計算機工程與應用》,2004(26).
[3]蔡菁,吳東崢.試析數(shù)據(jù)倉庫技術與數(shù)據(jù)庫技術[J].《計算機時代》,2002(8).
[4]王瑞梅.管理信息系統(tǒng)中的數(shù)據(jù)庫與數(shù)據(jù)倉庫[J],《價值工程》.2005(七).
[5]趙俏.數(shù)據(jù)庫與數(shù)據(jù)倉庫的比較[J].《遼寧師專學報。自然科學版》,2007(四).