一文搞懂DBMS和數(shù)據(jù)倉庫的區(qū)別及聯(lián)系,你明白了嗎?
在數(shù)據(jù)倉庫技術(shù)以前,只存在事務(wù)處理,DBMS系統(tǒng)為這種處理類型的需要提供支持。但是,在數(shù)據(jù)倉庫中的處理是截然不同的。數(shù)據(jù)倉庫環(huán)境中的處理類型可以概括為裝載和訪問過程。數(shù)據(jù)從原來操作型數(shù)據(jù)環(huán)境和ODS中集成、轉(zhuǎn)換和裝載到數(shù)據(jù)倉庫中去。一旦進入數(shù)據(jù)倉庫,集成的數(shù)據(jù)就在那里訪問和分析。在數(shù)據(jù)倉庫中,數(shù)據(jù)一旦被裝載,通常是不更新的。如果需要對數(shù)據(jù)倉庫更正和調(diào)整的話,也是在對數(shù)據(jù)倉庫數(shù)據(jù)沒有分析操作的空閑時間進行。而且,這些改變也是通過加入一個當(dāng)前的數(shù)據(jù)快照來完成。
傳統(tǒng)的事務(wù)處理數(shù)據(jù)庫環(huán)境和數(shù)據(jù)倉庫環(huán)境的另一個重要的區(qū)別在于,數(shù)據(jù)倉庫環(huán)境中有很多的數(shù)據(jù),比一般的操作型環(huán)境中要多得多,以萬億或千萬億計,而一個通用的DBMS通常管理下的傳統(tǒng)事務(wù)處理數(shù)據(jù)庫中的數(shù)據(jù)要少得多。數(shù)據(jù)倉庫要管理大量的數(shù)據(jù),是因為它們包括如下內(nèi)容:
- ?;脑蛹毠?jié)。
- 歷史信息。
- 細節(jié)和匯總數(shù)據(jù)。
談到基本的數(shù)據(jù)管理功能,數(shù)據(jù)倉庫用與標(biāo)準(zhǔn)的操作型DBMS非常不同的一組參數(shù)進行優(yōu)化。
傳統(tǒng)的通用DBMS和數(shù)據(jù)倉庫專用DBMS的第一個也是最重要的區(qū)別在于數(shù)據(jù)更新是如何進行的。傳統(tǒng)的通用DBMS必須將記錄級的、基于事務(wù)的更新作為一個正常的操作部分。由于記錄級、基于事務(wù)的數(shù)據(jù)更新是通用DBMS的一般特征,所以它必須提供以下功能:
- 鎖定。
- 提交。
- 檢查點。
- 日志磁帶處理。
- 死鎖。
- 逆向恢復(fù)。
不僅這些特征確實已成為DBMS一個常規(guī)部分,它們的開銷也是巨大的。有趣的是,當(dāng)DBMS不使用時也要耗費這筆開銷。換句話說,當(dāng)通用DBMS僅執(zhí)行只讀操作時,DBMS也至少要提供更新和鎖定的開銷(取決于DBMS)。根據(jù)不同的通用DBMS,更新所需的開銷能不同程度地最小化,但不能完全沒有。而對于一個數(shù)據(jù)倉庫專用的DBMS來說,不用支付任何更新所需的開銷。
通用DBMS和數(shù)據(jù)倉庫專用DBMS之間的第二個主要區(qū)別是對基本數(shù)據(jù)的管理的不同。對于通用的DBMS來說,對數(shù)據(jù)在塊級上的管理要包括一些附加的空間,這些空間是用于以后更新和插入數(shù)據(jù)時塊的擴展。一般情況下,這些空間是自由空間。對于通用DBMS,自由空間可能占到50%。對于數(shù)據(jù)倉庫專用的DBMS,根本就不需要自由空間,因為數(shù)據(jù)一旦裝入到數(shù)據(jù)倉庫后是不需要更新的,也就沒有物理塊擴展的需要。事實上,給定了數(shù)據(jù)倉庫中要管理的數(shù)據(jù)量后,留下以后將永遠不會用到的大量空間是沒有任何意義的。
數(shù)據(jù)倉庫和通用環(huán)境之間的另一個相關(guān)的區(qū)別反映在不同類型的DBMS上,是索引的區(qū)別。通用DBMS環(huán)境限制在有限數(shù)量的索引,這個限制是因為當(dāng)有數(shù)據(jù)的更新和插入時,索引本身需要空間和數(shù)據(jù)管理。然而,在數(shù)據(jù)倉庫環(huán)境中沒有數(shù)據(jù)的更新,卻有必要對數(shù)據(jù)的訪問進行優(yōu)化,也有多種索引的必要(和機會)。事實上,數(shù)據(jù)倉庫相對于操作型的、面向更新的數(shù)據(jù)庫來說,能夠應(yīng)用更穩(wěn)健和更完善的索引結(jié)構(gòu)。
除了索引、更新和物理塊級上的基本數(shù)據(jù)管理以外,在數(shù)據(jù)管理能力和策略上,通用DBMS和數(shù)據(jù)倉庫專用DBMS之間還存在其他一些基本區(qū)別。其中,這兩種類型的DBMS最基本的區(qū)別可能是在物理上以優(yōu)化方式組織數(shù)據(jù)以適應(yīng)不同類型訪問的能力。通用DBMS在物理上組織數(shù)據(jù)是為了優(yōu)化事務(wù)的訪問和處理。以這種方式進行的組織使得許多不同類型的數(shù)據(jù)可以根據(jù)一個公共關(guān)鍵字聚集起來,并能有效地通過1次或2次I/O訪問。最適合于信息型訪問的數(shù)據(jù)通常具有一個區(qū)別很大的物理描述。最適合于信息型訪問的數(shù)據(jù)是經(jīng)過組織的,可以使對同一類型數(shù)據(jù)的許多不同值能夠通過1次或2次物理I/O高效地進行訪問。
數(shù)據(jù)能夠在物理上得到優(yōu)化以便于事務(wù)訪問或DSS訪問,但無法同時做到這兩點。通用的、基于事務(wù)的DBMS只針對事務(wù)訪問對數(shù)據(jù)進行優(yōu)化,而數(shù)據(jù)倉庫專用的DBMS則針對DSS訪問和分析在物理上對數(shù)據(jù)進行優(yōu)化。
1.改變DBMS技術(shù)
信息倉庫需要考慮的一個有趣的因素是,在數(shù)據(jù)倉庫數(shù)據(jù)已經(jīng)載入以后, DBMS技術(shù)發(fā)生變化。有以下幾個原因說明進行這種改變:
- 當(dāng)今可用的DBMS技術(shù),在數(shù)據(jù)倉庫首次載入數(shù)據(jù)時并不一定適合。
- 數(shù)據(jù)倉庫大小已經(jīng)增長到一定的程度,要求提出新的技術(shù)方法。
- 對數(shù)據(jù)倉庫的使用逐步增加,也發(fā)生了很多變化,使得當(dāng)前的數(shù)據(jù)倉庫的DBMS技術(shù)不滿足要求了。
- 需要不時地對基本的DBMS選擇進行審查。
是否應(yīng)考慮找一種新的DBMS技術(shù)?要考慮的因素是什么?以下的幾點非常重要:
- 新的DBMS技術(shù)是否滿足可預(yù)知的需求?
- 從舊的DBMS技術(shù)向新的DBMS技術(shù)的轉(zhuǎn)換應(yīng)該怎樣去做?
- 轉(zhuǎn)換的程序應(yīng)該怎樣改變?
所有的這些考慮因素中,最后一個是最令人頭痛的。即使在最好的情況下,試圖去改變轉(zhuǎn)換程序也是一項很復(fù)雜的工作。
事實上,一旦數(shù)據(jù)倉庫已經(jīng)采用了一個DBMS,在以后某個時間進行更改是可能的。但這種情況在事務(wù)處理的過程中是永遠不可能的,因為一旦采用了一個DBMS,只要事務(wù)處理系統(tǒng)仍在運行當(dāng)中,這個DBMS就必須保持不動。
2.多維DBMS和數(shù)據(jù)倉庫
一項在數(shù)據(jù)倉庫中經(jīng)常討論的技術(shù)是多維數(shù)據(jù)庫管理系統(tǒng)處理(有時稱為OLAP處理)。多維數(shù)據(jù)庫管理系統(tǒng)或者數(shù)據(jù)集市提供了一種信息系統(tǒng)結(jié)構(gòu),這種結(jié)構(gòu)可以使企業(yè)靈活地對數(shù)據(jù)進行訪問,可以用多種方法對數(shù)據(jù)進行切片、分塊,動態(tài)地考察匯總數(shù)據(jù)和細節(jié)數(shù)據(jù)之間的關(guān)系。多維DBMS為最終用戶提供了靈活性和控制功能。為此,它非常適合于DSS環(huán)境。如圖1所示,多維DBMS和數(shù)據(jù)倉庫之間存在著非常有趣和互補的關(guān)系。
圖1 數(shù)據(jù)倉庫的傳統(tǒng)結(jié)構(gòu)以及當(dāng)前細節(jié)數(shù)據(jù)是如何同部門數(shù)據(jù)(或多維DBMS,數(shù)據(jù)集市)結(jié)合起來的
數(shù)據(jù)倉庫中的細節(jié)數(shù)據(jù)為多維DBMS提供了非常穩(wěn)健和方便的數(shù)據(jù)源。因為多維DBMS需要定期地刷新,為此,數(shù)據(jù)要定期從數(shù)據(jù)倉庫中導(dǎo)入到多維DBMS中。由于歷史應(yīng)用數(shù)據(jù)在進入數(shù)據(jù)倉庫時被集成,多維DBMS就不再需要從操作型環(huán)境中抽取與集成它所需要的數(shù)據(jù)。另外,數(shù)據(jù)倉庫在最低級別上保存了數(shù)據(jù),這樣就能為那些使用多維DBMS的用戶在需要的時候進行的低級別分析提供“基礎(chǔ)”數(shù)據(jù)。
可能有人會認為多維DBMS技術(shù)應(yīng)該是用于數(shù)據(jù)倉庫的數(shù)據(jù)庫技術(shù),事實上除一些非常特殊的情況外,這種想法是不正確的。那些為了多維DBMS技術(shù)的功能而對其進行優(yōu)化的性質(zhì)并不是數(shù)據(jù)倉庫的最基本的重要特性。數(shù)據(jù)倉庫中最重要的特性也不是多維DBMS技術(shù)的特性。
看一下數(shù)據(jù)倉庫和多維DBMS的區(qū)別:
- 數(shù)據(jù)倉庫有大量的數(shù)據(jù);多維DBMS中的數(shù)據(jù)至少要少一個數(shù)量級。
- 數(shù)據(jù)倉庫只適于少量的靈活訪問;而多維DBMS適合大量的不可預(yù)知的數(shù)據(jù)訪問和分析。
- 數(shù)據(jù)倉庫內(nèi)存儲了很長時間范圍內(nèi)的數(shù)據(jù)(從5年到10年);而多維DBMS中只存儲較短時間范圍內(nèi)的數(shù)據(jù)。
- 數(shù)據(jù)倉庫只允許分析人員以受限的形式訪問數(shù)據(jù),而多維DBMS允許自由的訪問。
- 多維DBMS和數(shù)據(jù)倉庫有著互補的關(guān)系,而并不是數(shù)據(jù)倉庫建立在多維DBMS之上的關(guān)系。
數(shù)據(jù)倉庫和多維DBMS關(guān)系中有趣的一點是,數(shù)據(jù)倉庫可以為非常細節(jié)的數(shù)據(jù)提供基礎(chǔ),而這些數(shù)據(jù)在多維DBMS中通常是看不到的。數(shù)據(jù)倉庫能容納非常詳細的數(shù)據(jù),這些數(shù)據(jù)在導(dǎo)入多維DBMS時被輕度綜合了。而導(dǎo)入到多維DBMS之后,數(shù)據(jù)會被進一步地匯總。在這種模式下,多維DBMS可以包含除了非常細節(jié)以外的所有數(shù)據(jù)。使用多維DBMS的分析者可以以一種靈活而高效的方法來對多維DBMS中所有不同層次的數(shù)據(jù)進行鉆取。如果需要,分析者還可以向下鉆取到數(shù)據(jù)倉庫。通過這種方式將數(shù)據(jù)倉庫和多維DBMS相結(jié)合,DSS分析者可以得到這二者的好處,在大部分時間里在多維DBMS中享受操作高效的優(yōu)點。同時,還可以向下鉆取到最低層次的細節(jié)數(shù)據(jù)。
另一個優(yōu)勢是匯總的信息在多維DBMS中計算和聚集后存儲在數(shù)據(jù)倉庫中。這樣,匯總數(shù)據(jù)在數(shù)據(jù)倉庫中能比在多維DBMS中存儲更長的時間。
數(shù)據(jù)倉庫和多維DBMS還有一個方面也是互補的。多維DBMS存放中等時間長度的數(shù)據(jù),根據(jù)應(yīng)用的不同從12個月到15個月。而數(shù)據(jù)倉庫存放數(shù)據(jù)的時間跨度要大得多—從5年到10年?;谶@一點,數(shù)據(jù)倉庫就成為多維DBMS分析者進行研究的數(shù)據(jù)源。如果需要,多維DBMS分析者可以高興地知道有大量的可用數(shù)據(jù),而不用為在他們的環(huán)境中存儲所有這些數(shù)據(jù)而進行花費。
多維DBMS有不同的特色。一些多維DBMS建立在關(guān)系模型基礎(chǔ)上,而另一些多維DBMS建立在能優(yōu)化“切片和分塊”數(shù)據(jù)的基礎(chǔ)上,在這里數(shù)據(jù)可以認為存儲在多維立方體內(nèi)。后者的技術(shù)基礎(chǔ)可以稱為立方體基礎(chǔ)或OLAP基礎(chǔ)。
兩種技術(shù)基礎(chǔ)都支持多維DBMS數(shù)據(jù)集市。但在這兩種技術(shù)基礎(chǔ)之間存在著一些差異。
多維DBMS數(shù)據(jù)集市的關(guān)系型基礎(chǔ)如下:
- 優(yōu)點:
能支持大量數(shù)據(jù)。
能支持數(shù)據(jù)的動態(tài)連接。
已被證實是有效的技術(shù)。
能夠支持通用的數(shù)據(jù)更新處理。
如果對數(shù)據(jù)的使用模式不清楚,關(guān)系型結(jié)構(gòu)與其他結(jié)構(gòu)一樣好。
- 弱點:
性能上不是最佳的。
不能夠?qū)υL問處理進行優(yōu)化。
多維DBMS數(shù)據(jù)集市的立方體基礎(chǔ)如下:
- 優(yōu)點:
對DSS處理在性能上是優(yōu)化的。
能夠?qū)?shù)據(jù)的非常快的訪問進行優(yōu)化。
如果已知數(shù)據(jù)訪問的模式,則數(shù)據(jù)的結(jié)構(gòu)可以優(yōu)化。
能夠很輕松地進行切片和分塊。
可以用許多途徑進行檢測。
- 弱點:
無法處理像標(biāo)準(zhǔn)關(guān)系模式那么多的數(shù)據(jù)。
不支持通用更新處理。
裝載的時間很長。
如果想選取的訪問路徑不被數(shù)據(jù)設(shè)計所支持,這種結(jié)構(gòu)就顯得不靈活。
對數(shù)據(jù)的動態(tài)連接的支持是有問題的。
多維DBMS(OLAP)是一種技術(shù),而數(shù)據(jù)倉庫是一種體系結(jié)構(gòu)基礎(chǔ)。這兩者之間存在著依存的關(guān)系。在通常情況下,數(shù)據(jù)倉庫是作為需要流入多維DBMS的數(shù)據(jù)的基礎(chǔ),將選出的細節(jié)數(shù)據(jù)的子集轉(zhuǎn)入多維DBMS,在那里對數(shù)據(jù)進行匯總或聚集。但在某些范圍內(nèi),有一種觀點是多維DBMS并不需要數(shù)據(jù)倉庫作為它的數(shù)據(jù)的基礎(chǔ)。
如果沒有數(shù)據(jù)倉庫作為多維DBMS的基礎(chǔ),那么裝入多維DBMS中的數(shù)據(jù)就是直接從舊的、歷史應(yīng)用環(huán)境中得到的。圖2展示了數(shù)據(jù)直接從歷史環(huán)境中裝入多維DBMS中的情形。由于它很直接,并且很容易實現(xiàn),所以這種方法很吸引人。一個程序員能立刻開始工作來建造它。
圖2 從沒有當(dāng)前細節(jié)數(shù)據(jù)的應(yīng)用建立多維DBMS數(shù)據(jù)集市
不幸的是,圖2所示的體系結(jié)構(gòu)中有一些并不是那么明顯的主要缺陷。由于各種各樣的原因,將數(shù)據(jù)倉庫中的當(dāng)前細節(jié)級的數(shù)據(jù)裝入多維DBMS環(huán)境提供數(shù)據(jù)比將歷史應(yīng)用的操作型環(huán)境中的數(shù)據(jù)裝入其中更具意義。
圖3展示了將數(shù)據(jù)倉庫的當(dāng)前細節(jié)級的數(shù)據(jù)裝入多維DBMS環(huán)境中。在導(dǎo)入數(shù)據(jù)倉庫的過程中,對舊的、歷史的操作型數(shù)據(jù)進行了集成和轉(zhuǎn)換。
圖3 從應(yīng)用環(huán)境流入當(dāng)前細節(jié)級再到多維DBMS數(shù)據(jù)集市的數(shù)據(jù)流
一旦到了數(shù)據(jù)倉庫以后,被集成的數(shù)據(jù)就以當(dāng)前細節(jié)數(shù)據(jù)的級別存儲。多維DBMS就是要載入數(shù)據(jù)倉庫中這一級別的數(shù)據(jù)。
初看起來,圖2和圖3所示的兩種結(jié)構(gòu)之間似乎并沒有本質(zhì)上的區(qū)別。事實上,將數(shù)據(jù)首先裝入到數(shù)據(jù)倉庫中似乎是浪費精力。但是,有一個非常好的理由說明為什么創(chuàng)建多維DBMS的第一步是將數(shù)據(jù)集成到數(shù)據(jù)倉庫中。
考慮一下在通常情況下,一個公司需要建立多個多維DBMS。金融部門需要自己的多維DBMS,財務(wù)部門也需要。市場部、銷售部和其他部門也都需要自己的多維DBMS。因為在公司里會有眾多的多維DBMS,所以圖2所示的情形會變得非常復(fù)雜。在圖4中,將圖2擴展成了一個實際的情形。眾多的多維DBMS直接而獨立地從歷史系統(tǒng)環(huán)境中獲得數(shù)據(jù)。
圖4 有許多的應(yīng)用和許多的數(shù)據(jù)集市,每對之間都需要一個接口。回避細節(jié)數(shù)據(jù)的當(dāng)前級的后果是產(chǎn)生一個無法管理的“蜘蛛網(wǎng)”
圖4表明,眾多的多維DBMS直接從相同的歷史應(yīng)用中獲得數(shù)據(jù)。那么,這種結(jié)構(gòu)有什么問題呢?問題如下:
- 抽取數(shù)據(jù)所需進行的開發(fā)量是巨大的。每一個不同的部門多維DBMS都需要定制開發(fā)一套適合自己的抽取程序。抽取處理過程有大量的重疊。這樣,浪費的開發(fā)工作量很大。當(dāng)多維DBMS是從數(shù)據(jù)倉庫中抽取數(shù)據(jù)時,它只需要一套集成和轉(zhuǎn)換的程序。
- 當(dāng)多維DBMS是從歷史系統(tǒng)環(huán)境中直接抽取數(shù)據(jù)時,并沒有數(shù)據(jù)的集成基礎(chǔ)。每個部門的多維DBMS對于怎樣從不同的應(yīng)用中集成數(shù)據(jù)都有自己的解釋。不幸的是,通常一個部門集成數(shù)據(jù)的方法和其他部門對相同數(shù)據(jù)的集成方法是不同的。結(jié)果導(dǎo)致最終沒有單一集成的、確定的數(shù)據(jù)源。相反地,在建造數(shù)據(jù)倉庫時,有一個能夠作為構(gòu)造基礎(chǔ)的單一的、集成的、確定的數(shù)據(jù)源。
- 維護所進行的開發(fā)工作量是巨大的。在舊的傳統(tǒng)應(yīng)用中,僅僅一個改變就會影響許多抽取程序。有抽取程序的地方由于這個改變而做一些改動,而且這種改動會很多。當(dāng)有了數(shù)據(jù)倉庫后,由于只需要寫很少的程序來處理歷史環(huán)境和數(shù)據(jù)倉庫的接口,所以應(yīng)用中的改變所產(chǎn)生的影響也是最小的。
- 需要消耗的硬件資源的數(shù)量是很大的。對于每一個部門的每一個抽取處理,同樣的歷史數(shù)據(jù)都要順序地重復(fù)傳送。而在數(shù)據(jù)倉庫中,歷史數(shù)據(jù)只需要傳送一次來刷新數(shù)據(jù)倉庫中的數(shù)據(jù)。
- 從歷史環(huán)境中將數(shù)據(jù)直接導(dǎo)入多維DBMS環(huán)境中的復(fù)雜性無法對元數(shù)據(jù)進行有效的管理和控制。在數(shù)據(jù)倉庫中,捕獲和管理元數(shù)據(jù)可以直接進行。
- 缺乏數(shù)據(jù)的一致性。當(dāng)不同的部門之間存在意見分歧時,各自都有自己的多維DBMS,很難解決。但用數(shù)據(jù)倉庫后,沖突的解決是很自然并且很容易的。
- 每次必須構(gòu)建一個新的多維DBMS環(huán)境,而且必須根據(jù)歷史環(huán)境建立,所需要的工作量是相當(dāng)可觀的。然而,如果數(shù)據(jù)基礎(chǔ)是在一個數(shù)據(jù)倉庫中,建造一個新的多維DBMS環(huán)境將快速而容易。
如果一個企業(yè)考慮的是一種短期的方法,那么數(shù)據(jù)倉庫代價的合理性分析將很難進行。如果從長期來看,構(gòu)建許多多維數(shù)據(jù)庫環(huán)境所需的費用是非常高的。而當(dāng)一個企業(yè)從長期的觀點出發(fā)建立一個數(shù)據(jù)倉庫時,則數(shù)據(jù)倉庫和數(shù)據(jù)集市所需的長期總費用將會顯著降低。
作者簡介:William H.Inmon,世界公認的“數(shù)據(jù)倉庫之父”,企業(yè)信息工廠創(chuàng)造者之一。