天天看點

《資料虛拟化:商務智能系統的資料架構與管理》一 2.5 商務智能系統的資料存儲

在商務智能系統中可以找到下列形式的資料存儲:

資料倉庫

資料集市

資料中轉區

可操作資料存儲

個人資料存儲

就像引擎需要汽油來驅動,報表工具和分析工具也需要資料來操作。沒有資料,這些産品就沒有價值。是以這些工具需要通路将資料收集起來的生産資料庫,因為大多數使用者需要的可用資料都在資料庫中。從技術上說,報表工具可以直接連接配接到生産資料庫中(如圖2-3所示)。這些方式簡單且看起來十分吸引人,但是在大多數機構中因為一些原因并不能使用。以下是一些最主要的原因:

資料內建:報表需要的資料需要存儲在多個生産資料庫中。例如,所有與一個客戶有關的資料很可能擴散到多個系統。這意味着報表工具需要通路所有這些系統并且有責任整合這些資料。整個的整合過程使報告變得更加複雜,并且整合邏輯在許多報表中重複出現,這可能導緻前後不一緻的結果。

缺陷資料:存儲在生産系統中的資料可能出現錯誤或者丢失。如果報表直接來源于這些存儲資料,就會面臨處理錯誤資料的問題。這很困難,因為大多數工具不能完善地支援這個功能。除此之外,如果這是可行的,我們如何保證所有的報告(可能由不同的工具生成)以相同的方式将這些錯誤資料轉換成正确的?

資料一緻性:如果不同的報表工具使用不同的技術解決多個生産資料庫資料整合問題,我們如何保證他們使用的是相同的整合邏輯?換言之,我們如何保證報表的一緻性?兩個報表很可能使用兩個截然不同的轉換法則。

曆史資料:不是所有的生産資料庫都保留曆史資料。例如,在很多系統中,如果一位顧客的位址發生改變,那麼舊位址就會被覆寫。對于特定的報表和分析形式,是需要曆史資料的。例如,你需要曆史資料進行回歸分析進而做出銷售預測,是以如果生産系統不能追蹤曆史資料,那麼報表和分析需要額外的儲存設備來存儲曆史資料。

幹擾:報表工具在生産資料庫中執行查詢功能可能對生産系統産生過大的幹擾。資料庫查詢可能是I/O敏感的,這樣會使使用者輸入新資料到産品環境中時産生性能下降的感覺。換言之,企業使用者将會阻塞生産系統的使用者進而幹擾生産本身,這對于任何生産環境都是不允許的。

查詢性能:生産資料庫的主要功能是支援生産應用。報告工具執行查詢可能很複雜。在生産資料庫中運作這些功能會導緻性能降低。事實上,性能可以低到需要使用者等多個小時才得到結果。同時,查詢會産生很多幹擾。

外部資料:在這一類解決方案中,并沒有用來分析外部資料的實際空間。假設有一個報告想要分析天氣狀況對特定商品銷量的影響,對于大多數組織來說,天氣相關資料是外部資料且并不存儲在生産資料庫中,它必須從一個外部源中獲得。但是,圖2-3描繪的解決方案中把它存儲在哪裡呢?

為了克服這些問題,商務智能系統通常圍繞着資料倉庫進行開發。資料倉庫是一個被設計用來報告和分析的獨立資料存儲,資料定期從生産資料庫拷貝到這樣一個資料倉庫中(如圖2-4所示)。在大多數情況下,選擇一個基于ETL的解決方案來實作一體化程序,這意味着資料倉庫中的資料被定期重新整理。

《資料虛拟化:商務智能系統的資料架構與管理》一 2.5 商務智能系統的資料存儲

如果我們重新考慮分析工具對生産資料庫直接報告的缺點,一個能夠克服這些缺點的基于資料倉庫的解決方案應該滿足以下條件。

資料內建:來自不同系統的資料進行一次內建,并以整合的方式存儲。是以,報告工具不必處理資料的內建。

缺陷資料:在一個ETL腳本中,缺陷資料可以被清洗,這會使資料倉庫包含缺陷較少的資料。結果使得報告不必處理缺陷資料,并且所有的報告共享相同清洗操作的結果。

資料一緻性:因為所有報告從資料倉庫中提取資料,并且這些倉庫裡面的資料已經被內建,報告的一緻性将減少問題發生的可能性。

曆史資料:即使生産資料庫不能追蹤曆史,設計資料倉庫成為可以追溯曆史資料、儲存所有“舊”資料的場所。

幹擾:報告和分析工具生成的查詢不會直接在生産資料庫運作,是以這些查詢不會成為幹擾。然而,資料必須要定期地從生産資料庫拷貝到資料倉庫,這似乎是個複雜的查詢過程。但是,這個過程能在生産系統沒有使用或者使用較少的晚上或周末内完成。

查詢性能:資料倉庫隻為了報告查詢而特意設計和優化,這将提升查詢性能。

外部資料:如果報告需要外部資料,這些資料就能存儲在資料倉庫并和内部資料一樣容易通路到。

資料倉庫有幾種定義,我們采用Bill Inmon的定義,因為他的定義在工業領域廣泛使用。這個定義在他出版于20世紀90年代的關于資料倉庫的題為《Building the Data Warehouse》的著作中首次被提出(見文獻[23]):

資料倉庫是一個支援管理決策程序的面向主題的、內建的、随時間變化的、永久儲存的資料集合。

注意:在他最近的書《DW 2.0—The Architecture for the Next Generation of Data Warehousing》中,他将定義的結尾“管理決策程序”稍作修改成“管理層的決定”(見文獻[24])。但是這一更改并沒有改變定義的一般意義,是以我們仍然使用他的原始定義。

此定義使用了4個重要的概念:面向主題意思是關于各具體主題的所有資料存儲在一起。例如,所有的顧客資料存儲在一起,所有的産品資料存儲在一起。面向主題的對立面是面向應用,在面向應用中一個資料庫包含隻與一個特定應用有關的資料,因而導緻顧客資料被分散到多個資料庫的情況。由于針對一個特定報告的資料會被多個資料庫檢索,這将使得報告嚴重複雜化。內建意味着一個一緻的資料編碼,是以資料能在一個內建方法中被檢索群組合。

資料倉庫是非易失資料庫。當一個資料庫主要用于生成報告,報告中的資料不斷改變給使用者帶來不便。假設兩個使用者要一起去開會,為了準備這場會議,他們都需要查詢資料庫來獲得一個指定區域的銷售記錄。假設在兩個查詢之間有十分鐘間隔,在這十分鐘内資料庫可能已經改變,是以會議中使用者可能得到不一緻的資料。為了避免這種情況,資料倉庫應該定期更新而不是持續更新,新的資料元素應該在每晚或周末添加。

注意非易失的概念對于那些不需要通路操作資料的決策有意義。正如1.2節所述,通路操作資料的需要正在擴大,我們将在這本書的不同章節重新讨論這個問題。

時變性是資料倉庫的另一個重要特點。通常,生産資料庫要盡可能小,因為資料庫越小,查詢越快。保證資料庫小的一個普遍方法就是删除舊資料,舊資料能存儲在錄音帶或DVD中以備未來使用。然而,資料倉庫的使用者期望能夠通路曆史資料,他們想要找出例如近10年來去倫敦的船票總數是否改變,或者他們想要知道天氣如何影響啤酒的銷量,出于這個原因,他們想要使用近5年的資料。這意味着相當大量的曆史資料都要包括在内,并且基本上所有的資料都是時變的,這是為什麼一些資料倉庫龐大的原因之一。

如果我們構造一個遵守以上定義的資料倉庫系統,那麼這個系統不是一個完全的解決方案,也不是一個完全的商務智能系統。一個資料倉庫本身不會在正确的時間以正确的形式供給使用者正确的資料來改善他們的決策。我們需要額外的子產品來構造一個能工作的商務智能系統,例如分析和報告工具、ETL工具、中轉區和資料集市。換句話說,為了構造一個商務智能系統,我們需要的不僅僅是一個資料倉庫。但是盡管資料倉庫隻是子產品之一,它仍是至關重要的:它是網上的蜘蛛。

資料倉庫的定義也包含資料收集方面,這意味着什麼呢?它意味着資料倉庫裡的資料應該實體存儲在一個集合裡,或者說資料作為集合的形式足夠嗎?基于它自身的定義,這很難表述。但是如果我們閱讀Bill Inmon的其他書籍和文章,我們可以總結出他強烈支援一個資料的存儲集合。此外,通過免費詞典(www.thefreedictionary.com)可得,術語倉庫(不是資料倉庫)的定義是“存儲貨物或商品的地方”,這個定義也把術語存儲和倉庫聯系起來。是以,在本書中我們假定一個資料倉庫是一個資料的存儲集合。

定義以“支援管理決策程序”結束,這是為了強調要發展資料倉庫的原因是支援組織決策過程,不是為了支援生産系統,也不是為了能夠追蹤曆史資料。它可以追蹤曆史資料等,但不是開發資料倉庫的主要目的。

偶然地,遇到一個術語企業資料倉庫。把術語企業加進的原因是為了強調資料倉庫不是為了一個或兩個部門或部分企業,而是為了整個企業的資料存儲。在本書中,我們把這些術語視為同義詞。

如果資料倉庫是一個真的大資料存儲,所有的報告和分析工具通路資料存儲,這将給管理資料倉庫的資料庫伺服器帶來高負荷的查詢工作量。由于這個原因,許多組織已經開發了資料集市來減輕查詢的工作量(也可能有其他理由;如圖2-5所示)。資料集市在Kimball的書中被推廣(見文獻[25])。

《資料虛拟化:商務智能系統的資料架構與管理》一 2.5 商務智能系統的資料存儲

每個資料集市都是為了一組專門的使用者開發,通常來說是所有有資料需求的使用者。這意味着一個資料集市包含資料倉庫資料的子集,而一個資料倉庫包含最低級的資料,一個資料集市包含所有資料的輕量聚集體。如果有資料集市,大多數報告運作于資料集市而不是資料倉庫,是以減輕了查詢的工作量。

另一個開發資料集市的原因是它允許使用面向報告和報告工具的存儲技術和存儲體系。例如,對于某些報告,如果資料以立方形式存儲在一個多元資料庫伺服器中,查詢性能會更好。

如果一個組織結構需要資料集市,那麼它不必要擁有一個資料倉庫(如圖2-6所示)。在這種情況下,不是一個資料庫擁有所有的資料,而是資料被分布在一系列資料集市中。如果使用者需要運作分布于多個資料集市資料的報告,報告工具自身就要內建這些資料集市。

《資料虛拟化:商務智能系統的資料架構與管理》一 2.5 商務智能系統的資料存儲

使用資料集市—僅是體系—的主要優點是提高速度。一個組織體系從頭開始運作,為小組使用者開發的資料集市比為大組使用者開發的資料倉庫需要更少的時間。

此體系也有一些不利:首先,圖2-3中顯示的解決方法的缺陷也适用于此,比如資料內建、缺陷資料和資料一緻性;其次,很難保證更新資料集市的ETL腳本以相同的方式把相同的資料轉換展示出來。

由于技術和概念性原因,在某些環境下把資料從生産系統直接拷貝到資料倉庫可能太過複雜。是以,在許多商務智能系統中,資料在到達資料倉庫之前首先被拷貝入資料中轉區(如圖2-7所示)。如果開發了一個資料中轉區,它的作用相當于是一個着陸區。在生産系統中已經被插入、更改或删除的資料會盡可能快地拷貝到此區域。在拷貝程序中,應該對資料的内容和結構進行少量的更改。在一個理想的環境下,中轉區中表格的結構和生産系統的表格相同,這意味着不需要改變,而是一對一的資料拷貝。所有的轉換和清洗操作将被應用在拷貝過程的第二步:從中轉區到資料倉庫。

當拷貝資料到資料倉庫後,從中轉區删除該資料。是以中轉區的大小通常比生産資料庫和資料倉庫小,它隻包含被提取的但沒有被資料倉庫處理的資料。我們使用以下定義:

資料中轉區是一個存儲來自生産系統資料的暫時中間存儲器。

《資料虛拟化:商務智能系統的資料架構與管理》一 2.5 商務智能系統的資料存儲

有多個解釋用中轉區擴充商務智能系統的原因:

通常來說,來自生産系統的資料以一個合适的方式存儲到資料倉庫之前需要經過很多處理,如錯誤的值需要轉換,遺漏的值需要找出,等等。如果資料直接從生産系統拷貝到資料倉庫,所有的程序都能導緻這些系統的嚴重幹擾。盡可能小的幹擾生産系統、僅僅采取一對一的資料快照并在之後做處理是個好主意。

如果資料倉庫中的某些表格僅僅一周或一月更新一次,資料可能遺失。例如,假設在生産系統的一些資料在兩次更新期間改變了兩次,或者在兩次更新中資料已經被插入或删除,此時更新資料倉庫,第一次輸入資料的舊值和删除的資料就會遺失。為了確定沒有插入、删除和更新的資料丢失,所有對資料的改變都應該拷貝到資料中轉區。

資料中轉區也能用來追蹤那些不被資料倉庫使用的資料。我們也可能追蹤那些想要卻還不知道未來怎麼在資料倉庫環境中使用的資料。換句話說,我們唯一知道的就是未來會對這些資料進行處理,但是還不知道是什麼。通過把資料拷貝到中轉區中,我們就確定了資料不會丢失。

當中轉區中的資料已經轉換并拷貝到倉庫,它就能被删除了。但是也有理由儲存它,在這種情況下,它通常指的是持久中轉區。資料中轉區通過儲存所有的資料,在資料要重新輸入到資料倉庫時可以使用。注意,一個資料中轉區也可能與一個不使用資料倉庫隻使用資料集市的商務智能系統相關。在這種情況下,資料集市會被來自資料中轉區的新資料填補。

不管是來自于生産系統還是來自于資料中轉區的資料,在它們被存入資料倉庫(或者資料集市)之前都需要被預處理(內建、轉換、清洗)。可能有其他的IT系統對內建、轉換、清洗之後的資料感興趣。例如,網站的組織可能想以內建的方式通路資料,對于資料管理系統和客戶關系系統來說也需要同樣的功能。

內建資料的需要貫穿整個IT系統中,有必要使用一個操作資料存儲(ODS;如圖2-8所示)。操作資料存儲可以呈現一個可操作的資料內建視圖,現在在生産系統中已經是可用的。

《資料虛拟化:商務智能系統的資料架構與管理》一 2.5 商務智能系統的資料存儲

Bill Inmon定義了操作資料存儲如下(見文獻[26]):

操作資料存儲是一種內建的可操作資料存儲的架構。

操作資料存儲是面向主題的,邏輯相符的資料被存儲在一起。例如,如果使用者的資料被存儲在多種系統中,它會一起在操作資料存儲中被帶來。操作資料存儲是被內建的;所有的轉換都被應用于使資料之間相符。操作資料存儲是不穩定的,當資料被添加到一個産品資料庫,或者當它被删除或更新之後,很快就會反映到操作資料存儲中。是以操作資料存儲應該可以展現一個相對較新的關于操作資料的表述。操作資料存儲不是像資料倉庫一樣是時變的,通常沒有曆史記錄被保留在操作資料存儲中。

如果是可利用的,操作資料存儲能夠從生産系統或者資料中轉區中加載。在一些系統中,資料中轉區和操作資料存儲是合并的。在大多數情況下意味着操作資料存儲接管資料中轉區的角色。

在合适的位置擁有操作資料存儲的這個資料倉庫的優點對于已經發生的資料內建和資料轉換是很有意義的,可以簡化取得資料倉庫中資料的工作。

到目前為止所有被描述的資料存儲都為了一群使用者在改進。在一些商務智能系統中,資料存儲為了個人的使用而被改進。個人資料存儲是為了個别使用者的需要而特别設計的(如圖2-9所示)。個人資料存儲可以簡單到像一個電子表格一樣,由使用者設計,存儲一些在其他表中用到的代碼,或者用來存儲一些在資料倉庫中不可獲得的銷售資料等。它也是一個可以包含外部組織資料的簡單檔案。在大多數情況下,使用者想要分析這些資料或者想要将這些資料與内部的資料結合。一些報告和分析工具在使用者的機器上建立了一個小型資料庫,這也可以被看作個人資料存儲。

有時個人資料存儲是由于性能原因而建立的,另外一個原因是使用者連接配接不上系統中其他資料。如果個人資料存儲被存儲在使用者的計算機中,即使使用者與系統其他部分資料是斷開連接配接的,個人資料存儲也能讓報告工具工作。

雖然這類資料存儲已經部署在很多商務智能系統中,它仍然沒有普遍可接受的術語。有些人把個人資料存儲視為“個人資料倉庫”,或者簡稱為“立方體”。後面的這個術語來源于一些部署工具的存儲技術,也就是基于所謂的多元立方體。在這本書中,我們稱它為“個人資料存儲”。

《資料虛拟化:商務智能系統的資料架構與管理》一 2.5 商務智能系統的資料存儲

表2-2對比了前面章節提到所有的不同類型的資料存儲。下面是每一類資料的含義:

易變資料表明在資料存儲中的資料是否是不斷更新的。資料的狀态與原始資料資料是同步或者幾乎同步的。

詳細資料意味着資料存儲是否僅僅包括最低水準的細節。

內建資料表明邏輯相符的資料是否存儲在一起。

時變的或者曆史資料指的是資料存儲是否也包括曆史資料,即資料較舊的版本。

概括的、聚合的和衍生的資料意味着資料不是粗略地存儲,而是以某種方式通過應用聚合從最初原始資料資料中衍生的。

企業級資料意味着資料存儲是為了組織的大部分使用者而優化的,與此相反的是為了小部分使用者而優化的資料存儲。

《資料虛拟化:商務智能系統的資料架構與管理》一 2.5 商務智能系統的資料存儲

注意:在前一節的圖中,一個獨立的資料庫标志用來表示每個資料存儲。通過設定名稱引入它們,它可以在技術上呈現出這些不同的資料存儲被不同的資料庫伺服器管理的情況,然而,這裡不是這種情況。存儲所有中轉區、資料倉庫和資料集市的表在一個大型的伺服器管理的資料庫中是可能的。是否這麼做純粹是一個技術問題,取決于性能、可拓展性、有效性和安全因素。