專利名稱:用于進行數據倉儲的設備和方法
技術領域:
本發(fā)明涉及計算機系統(tǒng),更具體地說,涉及數據倉儲系統(tǒng)的實現(xiàn)。
背景技術:
隨著企業(yè)內的商業(yè)機能數量的增加,企業(yè)所產生的數據量也相應 地增加了。這種數據可能分布在整個企業(yè)內,例如在由不同部門或地 理單元實現(xiàn)的數據庫系統(tǒng)和其他類型的系統(tǒng)內。在某些情況下,可以 跨越現(xiàn)有系統(tǒng)或位置之間的自然邊界對企業(yè)數據進行有用分析。為了 便于進行這種分析,可以采用數據倉儲系統(tǒng)將來自多個不同系統(tǒng)或位 置的數據匯集在單個系統(tǒng)內,如單個數據庫內。隨后,分析工具可以 將該單個、經匯集的系統(tǒng)而不是各種分布式數據源作為目標,這可以 簡化分析工具的設計并改進分析性能。
通常,數據倉儲系統(tǒng)利用被配置成提供所需分析性能的高端計算 機系統(tǒng)來支持對非常大量的數據的存儲和查詢。然而,非常適合于特 定數據倉儲應用的高端系統(tǒng)的采購和維護費用可能是高昂的,并且可 能無法隨著企業(yè)的數據倉儲需求的增長而擴縮。如果例如由于昂貴而 只提供單個數據倉儲系統(tǒng),那么在該單個倉庫發(fā)生故障時會損害數據 可用性。另一方面,如果提供多個數據倉儲系統(tǒng),那么分析應用會喪 失采用單個、經匯集的數據源的簡單性。例如,可能需要將分析應用 配置成對多個數據倉庫內的期望數據的位置進行跟蹤。
發(fā)明內容
公開了用于實現(xiàn)數據倉儲系統(tǒng)的設備和方法的各種實施例。根據
一個實施例, 一種系統(tǒng)可以包括若干數據倉庫;和數據倉庫管理器, 其被配置成從一個或更多個數據源提取數據集合以存儲在所述多個數據倉庫中的一個或更多個中。兩個或更多個數據倉庫中的每一個都可 被配置成存儲由所迷數據倉庫管理器提取的數據集合的相應副本。此 外,所述數據倉庫管理器可以被配置成在所述數據集合的每個相應副 本被存儲到對應的一個另外數據倉庫之前允許由所述多個數據倉庫中 的一個數據倉庫對依賴于所述數據集合的查詢進行評估。類似地,所 述數據倉庫管理器還可以被配置成在已將所述數據集合的修改復制到 對應的另外數據倉庫之前允許由所述多個數據倉庫中的 一個數據倉庫 對依賴于所述數據集合的查詢進行評估。
還構思了 一種方法,根據一個實施例,該方法可以包括以下步驟 從一個或更多個數據源提取數據集合以存儲在一個或更多個數據倉庫 中;將第 一數據集合的相應副本存儲在包括兩個或更多個數據倉庫的 第一子集中的每個數據倉庫中;以及在所述第一數據集合的每個相應 副本被存儲到所述第 一子集中的對應數據倉庫之前允許由數據倉庫的 所述第 一子集中的一個數據倉庫對依賴于所述第 一數據集合的查詢進 行評估。
根據第二實施例, 一種系統(tǒng)可以包括多個數據倉庫,其被配置 成存儲從一個或更多個數據源提取的數據集合;和數據倉庫管理器, 其被配置成將所述多個數據倉庫作為單個數據倉庫呈現(xiàn)給客戶機。所 述多個數據倉庫內的所述數據集合的位置對于所述客戶機來說可以是 透明的。而且,在給定時刻,由第一數據倉庫存儲的并且在所述給定 時刻可供所述客戶機進行查詢的第 一數據集合可能與由第二數據倉庫 存儲的并且在所述給定時刻也可供所述客戶機進行查詢的第二數據集 合不相似。所述數據倉庫管理器還可以被配置成響應于接收到來自所 述客戶機的針對由所述多個數據倉庫中的一個或更多個數據倉庫所存 儲的數據集合的查詢的接收,對所述多個數據倉庫中的能夠對所述查 詢進行評估的一個特定數據倉庫進行識別并將所述查詢傳送給所述特 定數據倉庫以進行評估。
還構思了一種方法,根據一個實施例,該方法可以包括以下步驟 從一個或更多個數據源提取數據集合以存儲在一個或更多個數據倉庫中,并將所述多個數據倉庫作為單個數據倉庫呈現(xiàn)給客戶機。所述多 個數據倉庫內的所述數據集合的位置對于所述客戶機來說可以是透明 的。響應于對來自所述客戶機的針對由所述多個數據倉庫中的 一個或 更多個數據倉庫所存儲的數據集合的查詢的接收,該方法還可以包括
以下步驟對所述多個數據倉庫中的能夠對所述查詢進行評估的一個
評估。在給定時刻,、由第一數據倉庫存儲的并且在所述給定時刻可供 所述客戶機進行查詢的第 一數據集合可能與由笫二數據倉庫存儲的并 且在所述給定時刻可供所述客戶機進行查詢的第二數據集合不相似。
圖l是例示了數據倉儲系統(tǒng)的一個實施例的框圖。 圖2是例示了跨越多個數據倉庫的數據集合復制處理的一個實施 例的框圖。
圖3是例示了利用粗同步將所提取的數據存儲在數據倉庫中的方 法的一個實施例的流程圖。
圖4是例示了利用粗同步對由數據倉庫存儲的數據進行查詢的方 法的一個實施例的流程圖。
圖5A是例示了在粗同步下在數據集合更新與查詢之間的關系的 一個實施例的時序圖。
圖5B到5D是例示了利用粗同步而復制的數據集合的一個示例 性實施例的框圖。
圖6是例示了將數據倉庫可視化給客戶的方法的 一個實施例的流程圖。
圖7是例示了數據倉庫計算集群的一個實施例的框圖。 圖8是例示了計算機系統(tǒng)的示例性實施例的框圖。 盡管本發(fā)明容許各種修改和另選形式,但是在附圖中以示例的方 式示出了其特定實施例,在此將對這些具體實施例進行詳細描述。然 而,應當理解,附圖及其詳細描述并不旨在將本發(fā)明局限于所公開的具體形式,而是相反,旨在覆蓋落在如所附權利要求所限定的本發(fā)明 的精神和范圍內的所有變型例、等同物以及另選例。
具體實施方式
數據倉儲系統(tǒng)的概述
在某些復雜的企業(yè)計算環(huán)境中,各種數據源可能分布在整個企業(yè) 內。例如,企業(yè)可能對于不同的商業(yè)機能(如會計、財務、電子商務、 人力資源、采購、制造、分發(fā)等)實現(xiàn)多個獨立的計算機系統(tǒng)和/或應 用。此外,這種系統(tǒng)和/或應用可能在地理上是分散的和重復的,例如 在各分發(fā)地點處提供有分發(fā)管理系統(tǒng)。在某些這種企業(yè)中,數據庫或 其他數據存儲體以及分析工具和其他應用可能對于一地點或機能來說 是專用的,并且可以外部地與其他機能或地點的系統(tǒng)相交互。
為特定商業(yè)機能或地點只提供其執(zhí)行其大部分任務所需要的數 據和資源可以避免在企業(yè)內對過度或冗余資源進行分配。然而,在某 些情況下,可能需要對來自整個企業(yè)的數據作為整體進行分析。例如, 對企業(yè)范圍的財務或生產趨勢的分析可能依賴于在多個不同地點處或 跨越不同部門所產生和保持的數據。在某些情況下,可以將數據分析 工具配置成對跨越多個商業(yè)機能的復雜相互關系進行檢測,這種相互 關系不能直接通過對孤立的單個機能的分析辨別出。例如,在員工經 驗與培訓(由人力資源來跟蹤)、分發(fā)生產率與財務業(yè)績(例如,由 于分發(fā)錯誤而導致的產品回報額的減少)之間可能存在關系。可以通 過對來自這些機能中的每一個的數據集體地針對互相關性進行檢查來 識別這種關系。
在某些實施例中,企業(yè)可以提供集中化數據倉儲系統(tǒng)以便于對企 業(yè)范圍的數據進行處理和分析。 一般來講,數據倉庫可以包括被配置 成將存儲在一個或更多個數據源中的數據匯集起來的數據庫或其他數 據儲存庫。數據源自身可以是企業(yè)內的存儲或產生數據的其他數據庫 或其他應用。通常,存儲在數據倉庫內的數據是存儲在企業(yè)內的其他 地方的數據的衍生物。然而,在某些情況下,也可以將數據倉庫配置成用作針對某些數據(如企業(yè)范圍的分析數據,或者甚至企業(yè)機能或 地點數據)的主儲存器。
在圖1中例示了數據倉庫系統(tǒng)的一個實施例。在所例示的實施例
中,數據倉庫系統(tǒng)100包括被配置成與由圖1中的數據倉庫120a到 120d表示的多個數據倉庫相交互的數據倉庫管理器110。圖l所例示 的數據倉庫120a到120d的數量只是例示性的,其可以在其他實施例 中不同。也可以將數據倉庫管理器110配置成與操作數據庫130相交 互。還將數據倉庫管理器110配置成與一個或更多個客戶機140和數 據源160相交互,這些客戶機140和數據源160可以位于數據倉庫系 統(tǒng)100的外部(例如,分布在整個企業(yè)中、或者分布在多個企業(yè)間、 分布在不同邏輯或物理地點處)。在某些實施例中,可以將某些客戶 機140配置成經由web服務接口 150與數據倉庫管理器110相交互。 在某些實施例中,可以將數據倉庫管理器IIO配置成經由web服務接 口 (未示出)與某些數據源160相交互。
在某些實施例中,數據倉庫120a到120d可以包括相應的關系數 據庫。例如, 一給定數據倉庫120可以包括諸如Oracle、 DB2、 Sybase、 Informix、 Adabas或任何其他私有或開放源碼數據庫之類的數據庫。 在某些實施例中,不同的數據倉庫120可以實現(xiàn)來自不同廠商的不同 類型的數據庫軟件。 一般來講,關系數據庫可以將多個數據項的集合 組織到一個或更多個規(guī)則結構(如包括多行和多列的表)中,盡管也 可以構思多維關系數據庫結構。此外,在許多實施例中,可以將關系 數據庫配置成評估對于存儲在數據庫內的數據的查詢,以選擇滿足給 定查詢的數據子集。例如,可以將數據庫配置成存儲客戶定單信息, 可以將該客戶定單信息組織成包括諸如客戶標識符、定單標識符、貨 運狀態(tài)信息、定單費用等之類的數據的一個或幾個表。試圖識別正在
等待未付貨運的所有客戶的用戶可以向數據庫提交如下查詢,該查詢 指定對于自特定日期和/或時間起具有未運送定單的所有客戶標識符 的選擇。作為響應,該數據庫可以對其內容進行檢查并返回那些滿足 該查詢的約束條件的數據記錄。需要指出的是,在某些實施例中,不同的數據倉庫120可以位于不同的物理位置或地點處,這與如下所述 的數據集合復制結合在一起,可以通過減小由于單個地點處的故障而 損害整個數據倉庫120的可能性來增強數據集合的可靠性和可用性。
需要指出的是,盡管數據倉庫120通??赡馨P系數據庫,但 是在某些實施例中給定數據倉庫120可以包括非關系數據庫。通常, 在關系數據庫中, 一特定數據項的含義隱式地由該數據項在表內的位 置或其他關系數據結構來描述。例如,在特定二維關系數據庫表中, 可以將一列定義成存儲客戶標識符,可以將另一列定義成存儲運貨狀 態(tài)信息,并將第三列定義成存儲定單費用。那么該表的各行可以對應 于特定定單記錄,因而,存儲在一行的第一列中的任何數據項因其位 置可被解釋成客戶標識符。作為對照,在一個實施例中,非關系數據 庫可以存儲這樣的數據項由與給定數據項相關聯(lián)的顯式元數據,而 不是由該數據項在所定義數據結構內的位置,來控制對該數據項的解 釋。例如,在一個實施例中,可以將數據倉庫120配置成將數據項存 儲成由一版本的可擴展標記語言(XML)來界定的記錄。在一個這種 實施例中,可以由標識了諸如客戶標識符之類的一給定數據項的類型 的元數據字段或標簽來界定該給定數據項。例如,可以將客戶標識符 "smith"存儲為"〈custjd〉smitlK/custjd〉,,,其中元數據標簽custjd 表示可以由該標簽界定的數據可以被解釋成客戶標識符。通常,可以 在記錄內按任何順序來存儲非關系數據庫內的多個記錄的數據項,因 為一給定數據項的含義被連同該數據項一起顯式地存儲,而不是通過 該數據項的位置而被隱式地存儲。
如先前已提及的,在某些實施例中,可以將數據倉庫120配置成 將存儲在企業(yè)內的其他地方(如數據源160)的數據匯集起來。在一 個實施例中,如以下更詳細地描述的,由數據倉庫120存儲的數據量 可以相當大,例如在幾百萬兆字節(jié)(TB)的量級上。在所例示的實施 例中,可以將數據倉庫管理器110配置成對如何在數據倉庫120之間 檢索和存儲數據進行協(xié)調,以及對諸如客戶機140之類的客戶機對數 據倉庫120的訪問進行協(xié)調。具體來說,在一個實施例中,可以將數據倉庫管理器110 (或者簡稱為管理器110 )配置成從一個或更多個數 據源160提取數據,并對所提取的數據在一個或更多個數據倉庫120 中的存儲進行協(xié)調。
在某些情況下,管理器110可以在所提取的數據被存儲之前附加 地對其進行變換。例如,在一個實施例中,給定數據倉庫120可以存 儲包括有從若干不同的數據源160導出的數據的表。在這種實施例中, 可以將管理器110配置成將從不同數據源160抽取的各個數據項變換 成給定數據倉庫120所要求的格式。在某些實施例中,與對數據進行 重排或改變數據的格式相反,對數據的變換可以包括對數據本身的修 改。例如,在某些實施例中,可以將管理器110配置成在將特定數據 項存儲在數據倉庫120中之前對這些數據項進行擴縮或四舍五入,或 者可以施加任何其他合適的變換。在某些實施例中,也可以將管理器 IIO稱為提取、變換和加栽(ETL)管理器。
在所例示的實施例中,可以將操作數據庫130配置成對與數據倉 庫系統(tǒng)100的操作狀態(tài)有關的信息進行存儲和跟蹤,該信息可以包括 與數據倉庫120內的數據項或數據集合(如表或單個記錄)的位置有 關的信息,以及相對于用于對數據倉庫120內的數據進行修改的未處 理操作而言的數據項或數據集合的狀態(tài)。在某些實施例中,操作數據 庫130可以包括與上述那些數據庫類似的關系或非關系數據庫(其包 括用于對其內容進行訪問和修改的查詢接口),而在其他實施例中操 作數據庫130可以包括被配置成例如通過在客戶應用編程接口 (API) 中定義的過程調用而與管理器IIO進行交互的客戶軟件應用。以下結 合圖3到6的描述對在各種實施例中管理器110與操作數據庫130 一 起對數據倉庫120進行加栽和將數據倉庫120的呈現(xiàn)可視化給客戶機 140的操作進行更詳細的描述。
在某些實施例中,作出如下構思可以通過健壯、容錯系統(tǒng)來實 現(xiàn)管理器110和/或操作數據庫130。例如,通過采用冗余(例如熱備 份(hot standby ))或集群計算機系統(tǒng),可以提高管理器110和/或操 作數據庫130的總體可靠性和可用性,以使得管理器或數據庫操作可以在一個或更多個系統(tǒng)發(fā)生故障的情況下繼續(xù)工作。可以采用任何合
適類型的故障轉移機制來降低數據倉庫系統(tǒng)IOO對管理器110或操作 數據庫130的故障的敏感度。
而且,在某些實施例中,作出如下構思將管理器110和/或操 作數據庫130的實現(xiàn)與數據倉庫120的實現(xiàn)進行分離可以降低與數據 倉庫系統(tǒng)100相關聯(lián)的成本或復雜度。例如,這種分離可以使得便于 利用商品計算機系統(tǒng)和/或數據庫軟件來實現(xiàn)管理器110和操作數據庫 130的控制功能。這種分離還可以使得便于通過能夠與數據倉庫硬件 分離地對控制硬件進行升級,來擴縮數據倉庫系統(tǒng)100。在某些實施 例中,這種分離還可以增強數據倉庫系統(tǒng)100的整體可用性并縮短故 障恢復時間。例如,如果一個數據倉庫120萬一發(fā)生故障,那么在對 該故障倉庫進行恢復的同時,操作數據庫130和管理器110可以繼續(xù) 加載其他數據倉庫120。類似的是,如果操作數據庫130萬一發(fā)生故 障,則可能無需對任何數據倉庫120進行恢復,由此縮短了總體故障 恢復時間。
客戶機140通??梢园ū慌渲贸稍L問數據倉庫系統(tǒng)100的任何 軟件應用或其他實體。例如,在一個實施例中,客戶機140可以包括 被配置成(例如通過查詢來)檢索數據的應用。這種應用可能包括數 據分析應用、決策支持系統(tǒng)、數據查看應用或任何其他合適的應用。 客戶機140還可以包括可以對數據倉庫系統(tǒng)100的操作進行配置的管 理應用或實用程序。例如,數據分析員或管理員可以確定應當由數據 倉庫系統(tǒng)100對來自多個數據源160的特定集合的數據項的組合進行 匯集以供將來分析。該分析員或管理員可以使用客戶機140來指示管 理器110例如一次性地或重復地從數據源160提取有關數據集合。在 各種實施例中,可以將客戶機140配置成例如在任何合適類型的系統(tǒng) (如通用計算機系統(tǒng)、手持系統(tǒng)或嵌入式系統(tǒng))上運行。在某些實施 例中,可以將客戶機140配置成經由中間系統(tǒng)與數據倉庫系統(tǒng)IOO相 交互。例如,可以通過客戶機-服務器系統(tǒng)(未示出)來實現(xiàn)客戶機 140,在該客戶機-服務器系統(tǒng)中,將服務器系統(tǒng)配置成對客戶機140與數據倉庫系統(tǒng)IOO之間的通信進行傳遞。
除了利用由管理器110提供的API直接進行通信以外,在某些實 施例中,可以將一些或所有客戶機140配置成經由web服務接口 150 與管理器110進行通信。 一般來講,可以將web服務接口配置成提供 標準的、跨平臺API,以用于在請求執(zhí)行某些服務的客戶機與服務提 供方之間的通信。在某些實施例中,可以將web服務接口 150配置成 支持對包括有描述服務請求的信息的文檔進行交換并對該請求進行響 應??梢岳脴藴驶痺eb協(xié)議(如超文本傳輸協(xié)議(HTTP))來交 換這種文檔,并且可以按照與平臺無關的數據格式(如XML)對該文 檔進行格式化。通過采用該web服務模型,并且^^用標準web協(xié)議和 以及獨立于平臺的文檔格式化,可以減少管理器110需要支持的接口 類型的數量,并且可以改進客戶機140和管理器110的跨平臺互操作 性。
在某些實施例中,數據源160本身可以包括關系或非關系數據庫, 并且可以分布在整個企業(yè)中。這種數據庫可以是也可以不是與數據倉 庫120的數據庫相同的類型(如廠商或格式)。在其他實施例中,數 據源160可以是除數據庫以外的應用,如被配置成以文檔形式或以另 一形式來存儲數據的客戶或私有應用。在這種實施例中,可以將管理 器110配置成利用必要的協(xié)議(例如,由數據源的API定義的特定格 式的過程調用)與數據源160相通信以獲取數據。數據源160還可以 包括文檔的儲存庫,諸如對如下內容的匯集或歸檔交易日志、電郵 通信、文字處理器/辦公應用文檔、圖像或多媒體文件、網頁文檔、XML 文檔、對電子商務站點的操作的量度,或者任何其他合適類型的文檔 或數據。例如,在一個實施例中,數據源160可以包括網絡附接的大 容量介質存儲裝置,如獨立盤陣列或通過存儲區(qū)域網(SAN)連接的 存儲裝置。
無論數據源160的具體類型如何,都可以將管理器110配置成執(zhí) 行合適的操作以從其中提取期望的數據集合、施加任何必要的變換以 將數據轉換成適合于存儲在數據倉庫120中的格式、以及將所提取出的數據加載到一個或更多個數據倉庫120。如果特定數據源160的數 據內容在格式上與由數據倉庫120存儲的數據高度不相似,那么可以 將管理器110配置成對數據源160進行分析以導出對該數據內容的恰 當的量度或表示,或者被配置成調用另一應用來執(zhí)行這種分析。 數據倉庫復制、粗同歩以及虛擬化
在某些情況下,由數據倉庫120存儲的數據可能對于企業(yè)的運行 來說是關鍵的。例如,在某些實施例中,可以將分析軟件配置成對所 倉儲的數據進行操作以生成凈艮告并且/或者識別出趨勢,這進而會影響 運行決策,如定購/采購決策、人員配備決策等。例如,在企業(yè)范圍內 對一天的生產量度進行的分析可能影響如下決策在企業(yè)內對資源的 轉移、對下一天的生產的再調度、加急進料或庫存采購,等等。萬一 丟失或破壞了數據倉庫120內的要對其執(zhí)行相關分析的數據,就會嚴 重損害運行或戰(zhàn)略決策制定過程,或者在某些情況下會使得完全不能 進行這種運行或戰(zhàn)略決策制定過程。
如上所述,某些經倉儲的數據可能是由數據源160存儲的數據的 衍生物,并且在原則上可以通過將相關數據從這些數據源160再加載 到數據倉庫120來恢復這些經倉儲的數據。然而,例如,如果所丟失 或破壞的數據量很大,或者如果數據源160必須訪問較慢的數據存儲 介質(如磁帶或離線介質)以檢索所請求的數據,那么這種再加載處 理可能會耗費相當大的時間量來完成??赡軣o法在對依賴于經倉儲數 據的處理產生最小中斷的時限內再加載所需數據。再者,在某些情況 下,存儲在數據倉庫120上的數據可能是利用數據倉庫系統(tǒng)100的應 用(如分析應用)的主要輸出,因此無法簡單地通過從數據源160再 加栽該數據就可以恢復的。
為了減小數據損失和隨之產生的中斷的可能性,在一個實施例 中,可以將數據倉庫120的子集配置成對特定數據集合進行復制。即, 可以將兩個或更多個數據倉庫120配置成存儲一數據集合(如表或多 個記錄的集合)的相應副本。圖2例示了例示出這種復制處理的一個 實施例。在所例示的實施例中,將數據倉庫120a和120b均配置成存儲包含有客戶定單數據和客戶運貨數據的表的副本。應當指出的是,
在某些實施例中,可以由任意數量(從兩個直到數據倉庫系統(tǒng)100內 的數據倉庫120的數量)個數據倉庫120來復制特定數據集合。另一 方面,在某些實施例中,可以根本不復制某些數據集合,或者可以將 某些數據集合復制在其他數據倉庫上。在所例示的實施例中,數據倉 庫120a和120b均包括未由其它數據倉庫復制的表(分別是財務報告 數據和會話跟蹤數據)。應當指出的是,在某些實施例中,可以由數 據倉庫120利用不同的數據庫方案(例如,利用不同的數據字段定義 和/或結構)來存儲不同的數據集合。
在某些實施例中,由數據倉庫120存儲的數據集合可以對于許多 不同類型的企業(yè)是共有的。例如,在磚和漿企業(yè)與提供虛擬客戶界面 (例如,基于web的電子商務界面或電子商務界面)的企業(yè)內,客戶 定單和貨運數據可能是共同可用的數據集合。然而,在某些實施例中, 可以將支持電子商務界面的企業(yè)配置成甚至在發(fā)生銷售之前就收集并 存儲大量關于客戶與企業(yè)的交互的信息。在一個實施例中,可以將圖 2所例示的會話跟蹤數據集合配置成存儲關于客戶與電子商務界面的 交互的任何方面的數據。例如,可以將該會話跟蹤數據集合配置成存 儲表示客戶在訪問企業(yè)的網點期間所查看的特定項目的數據(例如, 會話)、以及該查看的持續(xù)時間、客戶在會話過程中導航的鏈接、客 戶所執(zhí)行的任何搜索,等等??梢詫⒎治鰬门渲贸蓪@些和其他類 型的跟蹤數據進行分析以分辨出客戶偏好、預測客戶定購各種貨品的 可能性、對呈現(xiàn)給客戶的電子商務界面進行定制,等等。
然而,需要指出的是,可以將數據倉儲和下述各種技術同樣地應 用于沒有基本電子商務組件的企業(yè)。例如,某些企業(yè)可能具有跨越許 多機能和地理分部的高度復雜的內部處理,并且即使除了外部客戶的 活動之外也會在內部產生可用于進行倉儲的巨大數據量。此外,在某 些實施例中,企業(yè)可能是足夠復雜的,它可能針對企業(yè)內部的活動和 事務采用與上述面向電子商務的活動類似的信息收集策略。例如,企 業(yè)內的不同的商業(yè)單位可能如類似于外部客戶的客戶那樣與其他商業(yè)單位進行交互,并且可能按類似的方式產生客戶數據。
在某些實施例中,可以將多個數據倉庫120的子集配置成以不同 的復制程度來存儲不同類型的數據。例如,在圖2的實施例中,如所 示出的那樣,可以將數據倉庫120a和120b配置成按復制方式來存儲 客戶定單和運貨數據。在類似的實施例中,可以將數據倉庫120c和 120d配置成按復制方式來存儲歷史會話跟蹤數據(例如,前15個月 的跟蹤數據的價值)(未示出)。在數據倉庫120的這種配置中,倉 庫120a和120b可以形成特別適合于進行涉及客戶定單和運貨數據的 分析的在功能上集群或分組的倉庫集合,而倉庫120c和120d可以形 成類似的特別適合于進行涉及會話跟蹤數據的分析的在功能上集群的 倉庫集合。在各情況下,可以對相對關鍵的數據進行復制,以幫助進 行保護以防數據丟失。在數據倉庫120a到120d的這種配置中,對客 戶數據的分析驅動查詢也可能常常以最近的會話跟蹤數據為目標。例 如,對客戶定貨和貨運模式的分析可能試圖將這些模式關聯(lián)于最近的 會話跟蹤數據(例如,前90天的跟蹤數據的價值)。由此,在圖2 的實施例中,將數據倉庫120b配置成存儲會話跟蹤數據的集合。然而, 考慮到將數據倉庫120c和120d配置成冗余地存儲更大的會話跟蹤數 據集合(如果需要的話,可以從該集合重構出由數據倉庫120b存儲的 集合),可以不復制由數據倉庫120b存儲的會話跟蹤數據。
針對某些數據集合對多個數據倉庫120進行集群或分組,使得可 以針對不同類型的查詢來優(yōu)化不同的數據倉庫120組,這可以使得數 據倉庫系統(tǒng)100被針對期望的使用模式而更佳地調整。例如,如以下 結合圖7的描述更詳細地描述的那樣,根據期望數據倉庫120的某個 給定集群要處理的活動的程度,可以為作為數據倉庫120的基礎的硬 件系統(tǒng)提供更多或更少的計算資源。然而,在其他實施例中,可以按 更均一的方式將數據集合分布在多個數據倉庫120中。例如,在一個 實施例中,每個數據倉庫120都可以包括大致相同的計算資源集合, 并且可以按不同復制程度將數據集合分布在大致等價的多個數據倉庫 120中。雖然在這種實施例中可以針對數據存儲和檢索活動對硬件資源進行次優(yōu)地調節(jié),但是例如通過根據處理增長的數據分析需求的需
要而添加附加的、類似配置的數據倉庫120,可以更容易地對相對均 勻的數據倉庫120進行擴縮。
如上所提及的,通過減小給定數據倉庫120的故障將導致數據損 失的可能性,跨越多個數據倉庫120進行數據集合的復制可以提高數 據的總體可靠性。通過增加例如可以響應于查詢而向客戶機提供經復 制的數據集合的數據倉庫120的數量,這種復制還可以增加數據集合 的可用性。在圖1所例示的數據倉庫系統(tǒng)100的實施例中,可以將管 理器110配置成對將數據存儲到數據倉庫120的操作(包括在多個倉 庫120中對數據集合的任何復制)進行協(xié)調。由此,在所例示的實施 例中,是否復制了 一給定數據集合對于一特定數據倉庫120來說可能 是透明的。然而,在某些實施例中作出如下構思在此被描述成管理 器110的功能的跨越多個數據倉庫120對數據集合的管理和復制可以 被協(xié)作地分布在多個數據倉庫120之中,或者由被配置成既用作數據 倉庫又用作管理器的特定數據倉庫120來實現(xiàn)。
在某些情況下由數據倉庫120存儲的各個數據集合可能相當大, 例如在幾百百兆字節(jié)(MB)或幾百千兆字節(jié)(GB)的量級上。此外, 即使由管理器110例如響應于從數據源160對新的可操作數據的定期 提取而對給定數據集合進行的部分更新也可能包括相當大量的待傳送 給一給定數據倉庫120的數據。如果跨越幾個數據倉庫120對數據集 合進行復制,最終會將包括該數據集合在內的數據以及對該數據正在 進行的更新存儲在這幾個數據倉庫120之中。然而,這種存儲處理可 能不是同時發(fā)生的。例如,即使管理器110同時開始將相同的數據存 儲到數據倉庫120a和120b中,在這兩個數據倉庫120a和120b中該 數據存儲處理也可能不是同時完成的。諸如不同的計算負荷(如,對 查詢的服務)以及基本資源配置之類的因素可能使得一個數據倉庫 120比另一個更快地完成存儲操作。因此,在這兩個數據倉庫120a和 120b上完成存儲操作之前的任何給定時刻,在數據倉庫120a和120b 上正在被存儲的數據集合的狀態(tài)可能不同。在此狀態(tài)下,也可以將該數據集合稱為不具同步性或不同步。對于試圖檢索數據的客戶機140來說,不同步數據可能會帶來問 題。例如,如果在管理器IIO接收到以給定的經復制的數據集合為目 標的查詢時該給定數據集合在數據倉庫120a和120b上處于兩個不同 的狀態(tài),那么根據該給定數據集合在該查詢被指示以進行評估的特定 數據倉庫120中的狀態(tài),該查詢可能返回兩個不同的結果,這種不一 致可能會導致不一致的客戶機操作,尤其是如果在多個數據倉庫120 (或者更廣泛地說,數據倉庫系統(tǒng)100的總體結構)中對數據集合的 復制對于客戶機140來說是透明的話。一個防止由于對不同步數據的不受控制的訪問而產生的不一致的客戶機行為的方法可能包括當被復制的數據集合在多個數據倉庫 120之中是不同步的時,管理器IIO防止對該數據集合進行任何訪問。 例如,在一個實施例中,可以將管理器110配置成將對被復制數據集 合的更新實現(xiàn)為原子操作或事務操作。 一般來講,相對于其他操作來 說,將涉及跨多個實體的同步的原子操作或事務操作視為不可分的; 即,在允許進行以所涉及的實體為目標的另一操作之前,這種原子操 作或事務操作要么對于這些實體中的所有實體來說都完成了,要么對 于這些實體中的沒有一個實體來說完成了。由此,在一個實施例中, 管理器110可能不允許在完成了存儲在所有有關數據倉庫120上的所 有數據集合副本之前對正在被存儲或修改的被復制數據集合進行訪問 的嘗試,從而確保了客戶機在嘗試訪問被復制的數據集合時不會接收 到不一致的結果。然而,跨所有數據集合副本執(zhí)行原子或事務同步可能會顯著降低 數據倉庫系統(tǒng)100的性能。例如,在一給定的被復制數據集合4艮大的 情況下,在可以訪問該數據集合之前等待對所有數據集合副本的更新 都完成的過程中,可能出現(xiàn)顯著的等待時間。因此,在一個實施例中, 可以將管理器110配置成對跨多個數據倉庫120而復制的數據集合進 行粗同步。在一個實施例中,對數據集合的粗同步可以包括使對特 定數據倉庫120內的被復制數據集合的更新原子地同步,而同時允許訪問由其他數據倉庫120存儲的該數據集合的其他副本。即,在一個 實施例中,管理器110可以在對特定數據倉庫120的特定表(如圖2 所示的數據倉庫120a的客戶定單數據表)進行更新的同時針對其他讀 或寫訪問原子地鎖定該特定表。同時,管理器110可以有條件地允許 訪問該特定的被鎖定表在另一數據倉庫120上的副本(例如,數據倉 庫120b的被復制客戶定單數據表)。在另選實施例中,管理器110 在對存儲在數據倉庫120中的數據集合進行更新的同時可以原子地鎖 定整個數據倉庫120,或者可以只鎖定正在被更新的數據集合的一部 分(如表內的一行);作出如下構思可以由管理器110采用任何合 適的鎖定粒度。作出如下附加的構思在某些實施例中,可以將管理 器110配置成鎖定給定數據倉庫120上的正在被更新的數據集合的一 部分,而允許分開地訪問該給定數據倉庫120上的同一數據集合的未 鎖定部分以進行讀取或更新。在一個實施例中,管理器110可以有條件地允許在對一數據集合 副本進行更新的同時,如果對另一數據集合副本的訪問不依賴于該數 據更新的話,有條件地訪問所述另一數據集合副本。例如,客戶機140 可能提交對于前一整個日歷季度(例如,排除當前日歷季度)的所有 客戶運貨數據進行請求的查詢。同時,管理器IIO可能處于從許多客 戶履行地點(其中每一個都可以包括數據源160)提取前一天的客戶 運貨數據的過程中。可以將管理器110配置成利用任何適當的鎖定 方案以確保在多個數據倉庫120內的同步,來對由這些數據倉庫120 存儲的客戶運貨數據表進行更新。在對倉庫120a進行更新的同時,可 以不允許針對其客戶貨運數據的副本的查詢(或者,在某些實施例中, 不允許針對倉庫120a內的任何數據的查詢)。然而,可以將管理器 110配置成檢測到所提交的針對前一日歷季度的客戶運貨數據的查 詢并不依賴于當前正在對數據倉庫120a進行的更新。即,盡管數據倉 庫120b內的客戶貨運數據并不完全與數據倉庫120a內的副本相同步, 但是滿足所述查詢所必需的所有數據都可能存在于數據倉庫120b內。 因此,在已將客戶貨運數據更新存儲于數據倉庫120b之前,管理器110可以允許由數據倉庫120b對所述查詢進行評估。在該示例中,所 討論的數據集合在數據倉庫120a到120b之間并不是完全同步的,而 是粗略地同步的,在此情況下允許具有用于對一查詢進行評估的足夠 數據的數據倉庫120對該查詢進行評估,即使它們不具有所討論的數 據集合的最新版本。在圖1所示的數據倉庫系統(tǒng)100的實施例中,可以將管理器IIO 配置成利用操作數據庫130來保持與由數據倉庫120存儲的數據集合 有關的信息,如標識了存儲有給定數據集合的位置(例如,具有該給 定數據集合的唯一拷貝或副本的特定數據倉庫120)的信息,以及針 對任何正在進行的更新活動而標識了數據集合的每個拷貝的狀態(tài)的信 息。例如,在一個實施例中,操作數據庫130可以包括與由數據倉庫 120存儲的客戶貨運數據表的每個拷貝相對應的相應記錄。對于圖2 所示的實施例,操作數據庫130可以存儲兩個這種記錄,其中每一個 都將相應的數據倉庫120a到120b標識為存儲有客戶貨運數據表的相 應副本。此外,每個記錄都可以包括表明該表在對應的數據倉庫120a 和120b內的狀態(tài)的字段。參考在上一段中給出的示例,在管理器IIO 正在對數據倉庫120a內的客戶貨運數據表的更新進行協(xié)調的同時,操 作數據庫130內的對應記錄可以表明該副本正在被更新、不可用或者 其他合適的狀態(tài)。與之對照的是,針對由數據倉庫120b存儲的客戶貨 運數據副本的記錄可以表明該副本不是正在被更新或已完成對該副本 的更新。在各種實施例中,可以將操作數據庫130配置成存儲對數據集合 的位置和狀態(tài)進行標識的不同類型的數據。例如,位置標識數據可以 包括數據倉庫120的唯一標識符,如系統(tǒng)名稱、網際協(xié)議(IP)地址、 或其他合適的標識符。狀態(tài)信息可以涵蓋從表明是否正在更新某個給 定數據集合的簡單信號到表征給定數據集合的狀態(tài)的復雜字段的范 圍。例如,在某些實施例中,與數據集合相對應的狀態(tài)信息可以表明 更新該數據集合的最后一次、用以執(zhí)行該更新的數據源160、該更新 的原因(例如,由于調度操作或手動操作),或者任何其他合適的狀態(tài)信息。在某些實施例中,(例如,在將管理器110配置成支持對數 據倉庫120的多個并發(fā)讀或寫操作的實施例中)可以將管理器110配 置成利用事務操作來讀取和/或修改操作數據庫130以確保操作狀態(tài)的 同步。在一個實施例中,管理器IIO可以利用由操作數據庫130存儲的 位置和狀態(tài)信息來實現(xiàn)由多個數據倉庫120存儲的數據的粗同步。即, 可以將管理器110配置成在從數據倉庫120提取數據并向數據倉庫 120存儲數據時以及在接收到檢索所存儲的數據的操作(例如,查詢) 時查閱操作數據庫130。圖3例示了利用粗同步將所提取的數據存儲 在數據倉庫120中的方法的一個實施例。共同地參照圖1到圖3,操 作始于塊300,在該塊中,開始從一個或更多個數據源提取數據集合 的操作。例如,在一個實施例中,可以將管理器110配置成重復地(例 如每小時、每晚、每周)從一個或更多個數據源160 (如分布在整個 企業(yè)中的客戶履行地點)中提取諸如客戶貨運數據的數據集合。作為 另 一種選擇,用戶或應用可以經由客戶機140請求提取和存儲數據集 合。在某些實施例中,作出如下構思可以從數據源160同時提取多 個數據集合并在一個或更多個數據倉庫120內對它們進行更新。例如, 作為批作業(yè)或批處理,如調度批作業(yè),可以同時提取并存儲多個數據 集合;或者可以從數據源160動態(tài)地流式傳輸多個數據集合并在數據 倉庫120內對它們進行更新。隨后,管理器110例如通過向數據源160發(fā)出查詢或其他命令來 檢索所提取的數據以抽出數據(塊302)。如果有必要的話,可以對 所提取的數據進行變換(塊304)。例如,如上所述,可能需要改變 所提取的數據的格式,或者根據數據倉庫120的數據存儲要求而需要 修改數據本身。管理器110接著確定哪個數據倉庫120容納有所提取的數據集合 (塊306)。例如,在一個實施例中,管理器110可以查閱操作數據 庫130以根據其中存儲的記錄來確定所提取的數據集合所在的位置。 管理器110接著選擇要使用所提取的數據集合來進行更新的特定數據倉庫120,并更新與該數據集合相關聯(lián)的狀態(tài)信息以表明發(fā)生了所述 更新(塊308)。在某些實施例中,可以將管理器110配置成按并行 或交疊方式對容納有所提取的數據集合的每個數據倉庫120進行更 新,盡管這些更新可以在不同的時間開始或結束。在圖3中針對塊308 到312中的重復塊例示了這種并行性,可以對若干不同數據集合或數 據集合副本中的每一個并行地執(zhí)行這些塊。例如,可以將管理器110 配置成在若干不同數據倉庫120上同時開始對所提取的數據集合進 行更新;或者可以交錯進行這些更新,使得它們在時間上部分地交疊。 而且,需要指出的是,在某些實施例中,可以在多個不同數據倉庫120 內同時更新多個不同數據集合。在其他實施例中,可以將管理器110配置成按串行或有條件的方 式對數據倉庫120進行更新。例如,如果數據倉庫120的一子集復制 了所提取出的數據集合,那么管理器IIO可以隨機地選擇特定數據倉 庫120來開始進行更新。作為另一種選擇,管理器110可以選擇所述 子集中的最不繁忙的數據倉庫120,或者可以利用某些其他選擇準則。 在操作數據庫130對未處理數據集合讀操作進行跟蹤的某些實施例 中,如果當前正在讀取該數據集合(例如,通過查詢),那么可以不 選擇一數據倉庫120來進行數據集合更新。 一旦選擇了數據倉庫120, 在一個實施例中,管理器IIO可以對在操作數據庫130中存儲的與該 數據集合和所選擇的數據倉庫120相關聯(lián)的記錄中的狀態(tài)信息進行更 新,以表明在所選擇的數據倉庫中正在對該數據集合進行修改。如以 上指出的,在某些實施例中,管理器IIO可以利用事務操作來與操作 數據庫130相交互,以例如確保多個并發(fā)操作的適當排序。接著將所提取出的數據集合存儲于所選擇的數據倉庫120 (塊 310)。需要指出的是,可以經由其他數據倉庫120對該數據集合的其 他副本進行訪問和/或更新,同時對所選擇的數據倉庫120的更新繼續(xù) 進行。 一旦完成了該更新,管理器110就對與該數據集合相關聯(lián)的狀 態(tài)信息進行更新以表明完成了該更新(塊312)。作出如下構思在某些實施例中,管理器110在將所提取的數據集合存儲到其對應的數據倉庫120中時不必對該數據集合進行緩沖。 在一個另選實施例中,管理器IIO在開始從數據源160進行數據提取 之前可以選擇數據倉庫120來進行更新。管理器110接著可以將所提 取的數據(施加適當的變換)流式傳輸或者使得該數據被流式傳輸到 所選擇的數據倉庫120,并且可以隨后使用更新后的數據倉庫120作 為用于對其他數據倉庫120進行更新的數據源。進一步作出如下構思 在某些實施例中,可以同時(而不是順序地)對多個數據倉庫120進 行更新。例如,如果在3個數據倉庫120中復制有某個給定的數據集 合,則可以同時對這些數據倉庫中的2個進行更新,而留下第3個數 據倉庫以供對該給定數據集合進行查詢。最后,在某些實施例中,通 過同時對所有數據倉庫120 (或其選定子集)進行更新,在操作數據 庫130中適當地表示出狀態(tài),可以實現(xiàn)(與粗同步相對的)完全同步。 在圖4中例示了利用粗同步對由多個數據倉庫120存儲的數據進 行查詢的方法的一個實施例。共同地參照圖l到圖4,操作始于塊400, 在該塊中,接收到依賴于由多個數據倉庫120存儲的一個或更多個數 據集合的查詢操作。例如,在一個實施例中,可以將管理器110配置 成從客戶機140接收這種查詢,而不是直接或經由web服務接口 150 來接收。隨后,管理器IIO對所接收到的查詢進行分析以確定該查詢的數 據集合依賴性(塊402)。在一個實施例中,對數據集合依賴性的確 定可以包括對由該查詢引用的特定數據集合的確定,以及對與所依賴 的這些數據集合有關的任何附加狀態(tài)信息的確定。例如,在一個實施 例中,管理器110可能確定一特定查詢依賴于圖2所例示的客戶貨運 數據表,進而確定所依賴的數據是前一日歷季度的數據。管理器110接著確定所依賴的數據集合在數據倉庫120內的位 置,和與所存儲的數據集合相關聯(lián)的當前狀態(tài)信息(塊404)。例如, 管理器110可以查閱操作數據庫130,以針對所依賴的每個數據集合 來確定哪個數據倉庫120容納有該數據集合的拷貝,以及與該拷貝相 關聯(lián)的狀態(tài)信息(例如,當前正在被更新、自某個日期起是最新的由于維護而離線,等等)?;诠芾砥?10對所接收到的查詢對數據集合依賴性以及與數據 集合在數據倉庫120內的位置和狀態(tài)有關的信息的分析,管理器110 確定是否任何數據倉庫120具有用以對所接收到的查詢進行評估的足 夠數據(塊406)。例如,在一個實施例中,如果一數據倉庫120具 有某個給定查詢所依賴的每個數據集合的拷貝,如果不是正在更新所 依賴的每個數據集合(例如,通過諸如圖3所例示的那樣的提取和存 儲操作),并且如果所依賴的每個數據集合都滿足該查詢的狀態(tài)要求 (例如,每個數據集合都至少與由該查詢所指定的任何日期范圍一樣 新),那么管理器110可以確定該數據倉庫120具有足夠數據來對該 查詢進行評估。在其他實施例中,管理器110可以采用不同或附加的 準則來確定一給定數據倉庫120對于給定查詢是否具備數據充足性。 例如,這種準則可以包括與數據倉庫120的能力或資源(如其對某些 類型的查詢語言進行評估的能力或其可用于處理復雜查詢的計算資 源)有關的信息。在某些實施例中,可以將一個或更多個數據倉庫120配置成例如 通過對可以由給定數據倉庫120同時評估的查詢的數量進行限制來對 查詢評估資源進行管理。例如,可以將數據倉庫120配置成為查詢 的執(zhí)行提供一定數量的"作業(yè)時間片",并且可以在所有時間片都被占 用的情況下不可接受其他查詢。在某些實施例中,無論一給定查詢的 復雜度如何,該查詢都可以對應于一個可用作業(yè)時間片。在其他實施 例中,更復雜的查詢可以占用多個作業(yè)時間片,或者數據倉庫120可 以采用其他類型的負載平衡策略。在某些實施例中,管理器110在確 定給定數據倉庫120是否具有用以對給定查詢進行評估的足夠數據時 還可以考慮該給定數據倉庫120的可用查詢評估資源。例如,在一個 實施例中,管理器110可以不選擇具有用以對查詢進行評估的足夠數 據但是沒有用于進行查詢評估的可用資源的數據倉庫120。如果沒有數據倉庫120具有用以對所接收到的查詢進行評估的足 夠數據(或者,在某些實施例中,如果沒有數據倉庫120具有用以對所接收到的查詢進行評估的足夠的可用資源),那么管理器110可以 將該查詢入隊,直到諸如可以識別出足夠的數據倉庫120的時間為止 (塊408)。例如,在一個實施例中,管理器110可能識別出所接收 到的查詢依賴于當前正在被更新到特定數據倉庫120中的數據集合, 并且在完成了該更新時可以在該特定數據倉庫120上對要評估的該查 詢進行調度。作為另一種選擇,管理器110有時可以對已入隊的查詢 進行再評估,以確定是否有數據倉庫120已變得可用于對查詢進行評 估。在某些實施例中,為了避免客戶機死鎖,管理器110可以對查詢 可以保持入隊狀態(tài)的時間長度加以限制,并且可以在其查詢超過了入 隊時間限制的情況下向客戶機返回錯誤情況。如果識別出足以對所接收到的查詢進行評估的數據倉庫120,那 么管理器110將所接收到的查詢傳送給該數據倉庫120以進行評估(塊 410)。需要指出的是,在粗同步下,可以在由一個數據倉庫120對以 特定數據集合為目標的查詢進行評估的同時,在另一數據倉庫120上 對該特定數據集合的副本進行更新。圖5A示出了例示出在粗同步下對數據集合的更新與對數據集合 的查詢之間的關系的一個實施例的時序圖。在所例示的時序圖中,管 理器110在時刻Tl處開始對特定數據集合進行更新,此時數據倉庫 120a和120b復制有該數據集合。隨后,在時刻T2處由管理器110 接收到以正在被更新的數據集合為目標的查詢。在比T2晚的時刻T3 時在數據倉庫120a處完成了該數據集合更新,而在比T3晚的時刻 T4時在數據倉庫120b處完成了該數據集合更新。在所例示的實施例中,示出了對所接收到的查詢進行評估的3個 可能的時段。在第一情況下,該查詢可以由正在被更新的數據集合的 更新前的內容來滿足。例如,管理器110連同操作數據庫130—起可 以確定對該查詢進行評估所必需的數據并不依賴于當前的更新。在此 情況下,在時刻T2之后可以由容納了有關數據集合的任何可用數據 倉庫120來評估該查詢。即,在接收到該查詢之后一旦可以實施就可 以對其進行評估,在某些情況下這可能會引起延時。例如,在某些實施例中,如以上指出的,可能不允許針對當前正在被更新的數據倉庫
120,對查詢進行評估。此外,在某些情況下,數據倉庫120可能太繁 忙,以至于不能立即接受該查詢。然而,在某些實施例中,在該查詢 依賴于更新前的數據的情況下,不必對在時刻T2之后何時可以執(zhí)行 該查詢進行與任何更新有關的時間限制。
在第二和第三情況下,該查詢可能依賴于正在被更新的數據集合 的更新后的內容。即,該查詢可能要求對在時刻Tl時開始的數據集 合更新中反映的數據進行正確的評估。在所例示的實施例中,該更新 在時刻T3時在數據倉庫120a處完成,而在時刻T4時在數據倉庫120b 處完成。相對應的,可以在時刻T3之后的任何時刻由數據倉庫120a 對該查詢進行評估,而在時刻T4之后的任何時刻由數據倉庫120b對 該查詢進行評估。如先前指出的并且如圖5A所例示的,在粗同步下, 可以在已更新了被一查詢作為目標的數據集合的所有副本之前由特定 數據倉庫120對該查詢進行評估,而在某些情況下(例如,在該查詢 依賴于更新前的數據的情況下)可以在已更新了該數據集合在該特定 數據倉庫120上的副本之前對該查詢進行評估。如以上指出的,在某 些實施例中,可以在由一個數據倉庫120對以特定數據集合為目標的 查詢進行評估的同時,將該特定數據集合存儲到另一數據倉庫120。 此外,在某些實施例中,在已將該特定數據集合存儲到任意給定數據 倉庫120之后,該給定數據倉庫120可以對針對該特定數據集合的查 詢進行評估。例如,在已將經復制的數據集合更新到某些或所有對應 的數據倉庫120之后,任何更新后的數據倉庫120都可能能夠滿足對 經復制的數據集合的查詢。
而且,需要指出的是,在采用用于鎖定數據集合的某些部分的細 粒度機制的某些實施例中,如上所述,容納有正在被更新的數據集合 的一給定數據倉庫120可能在該更新完成之前可用于對針對該數據集 合的查詢進行評估。例如,在某些實施例中,可以將管理器110和操 作數據庫130配置成跟蹤數據集合的多個部分的狀態(tài)(例如,表的各 行或多行的集合)。盡管針對給定數據倉庫120正在更新特定數據集合的一個部分,但是管理器IIO可以確定一給定查詢依賴于該特定數
據集合的當前沒有被更新的部分,因此可以允許由該給定數據倉庫
120對該查詢進行評估。在這種實施例中,可以在功能上將針對數據 集合中的不在進行更新的部分的查詢處理成好像該查詢依賴于與正在 被更新的數據集合無關的數據集合一樣,并且可以允許與該更新無關 地對其進行評估。在圖5A的環(huán)境下,可以在不與時刻T3和T4處的 更新完成點同步的情況下允許在時刻T2時接收到該查詢之后的任何 時間對這種查詢進行評估。
圖5B到5D與圖5A所示的各種時間點相關地例示了利用粗同步 所復制的數據集合的一個實施例的具體示例。在圖5B到5D所示的實 施例中,將客戶定單數據集合配置成由數據倉庫120a和120b來復制。 圖5B例示了在更新開始之前的時刻(例如,在圖5A所示的時刻Tl 之前的時刻)時該客戶定單數據集合的副本。在圖5B中,按更新前 的狀態(tài)示出客戶定單數據集合的兩個副本。
圖5C例示了在已更新了數據倉庫120a的副本之后但是在更新了 數據倉庫12b0的副本之前(例如,在圖5A所示的時刻T3與T4之 間的時刻)時該客戶定單數據集合的副本。如圖5C所示,客戶定單 數據集合的這兩個副本處于不相似的狀態(tài)。最后,圖5D例示了在已 更新了所述兩個副本之后的時刻(例如,在圖5A所示的時刻T4之后 的時刻)時該客戶定單數據集合的副本。如上所述,對客戶定單數據 集合的查詢可能在對該數據集合的更新開始之后的任何時刻發(fā)生。根 據其數據集合要求,可以允許在完成了對兩個數據倉庫120a和120b 的更新之前(包括在這兩個數據集合副本具有不相似的內容(例如, 如圖5C所示)時的時刻)針對數據倉庫120a和120b中的任一個執(zhí) 行特定查詢。
需要指出的是,在某些實施例中,數據倉庫系統(tǒng)100的組織可能 對于被配置成與系統(tǒng)100相交互的客戶機140來說是完全透明的。即, 在某些實施例中,客戶機140可能不具有數據倉庫120內的給定數據 集合的位置或狀態(tài)的直接知識。在某些這種實施例中,可以將管理器110配置成將多個數據倉庫120呈現(xiàn)為當從客戶機140的觀點來看是 單個虛擬數據倉庫(例如,可以將管理器110配置成對多個數據倉庫 120進行虛擬化)。由此,在某些這種實施例中,管理器110可以在 任意程度上自由地復制數據集合,重新確定數據集合在多個數據倉庫 120之中的位置,或者改變存儲在系統(tǒng)100內的數據的組織結構,同 時將單個、穩(wěn)定的界面(如查詢界面)呈現(xiàn)給客戶機140。
在一個實施例中,在任意給定時刻,由數據倉庫120存儲的多個 數據集合可供給定客戶機140來進行查詢,并且在任意給定的時刻所
存儲的多個數據集合中的一個可能與所存儲的多個數據集合中的另一 個不相似。例如,所存儲的兩個數據集合可能由于它們被定義成存儲 不同類型的數據而不相似。作為另一種選擇,可以將所存儲的兩個數 據集合配置成復制同一數據,但是可以在某個給定時刻由于如上所述 的粗同步的操作而不相似。在某些實施例中,在這些場景中的任一場 景下的多個數據集合都可供客戶機140查詢,并且可以將管理器110 配置成對如何按對于客戶機140透明的方式在數據倉庫系統(tǒng)100內安 排和操縱這種數據集合的詳情進行管理。
對于客戶機140來說,可以與是否復制存儲在數據倉庫120內的 數據集合無關地進行數據倉庫120的虛擬化。圖6例示了對于客戶機 140將數據倉庫120虛擬化成單個數據倉庫的方法的一個實施例。共 同地參照圖1到圖6,操作始于塊600,在該塊中,管理器110存儲與 數據倉庫120中的數據集合有關的位置信息。例如,在一個實施例中, 管理器110可以將每個數據集合的位置信息連同對數據集合的狀態(tài)、 數據集合是否被復制等進行標識的其他信息 一起存儲在操作數據庫 130。
隨后,管理器IIO接收到以存儲在數據倉庫系統(tǒng)100內的特定數 據集合為目標的查詢(塊602)。作為響應,管理器110對能夠評估 所接收到的查詢的特定數據倉庫120進行識別(塊604)。例如,可 以將管理器110配置成對該查詢進行分析以檢測如上所述的數據集合 和狀態(tài)依賴性,并查閱操作數據庫130以識別出可以評估該查詢的一個數據倉庫120 (或者一個以上,如果復制了該數據集合的話)。諸 如正在進行的數據集合更新、數據倉庫工作負荷等之類的其他因素也 會影響對用于進行查詢評估的合適數據倉庫120的識別。
一旦識別出用以評估所接收到的查詢的數據倉庫120,管理器110 就將該查詢傳送給所選擇的數據倉庫120以進行評估(塊606)。接 著對該查詢進行評估(塊608),然后經由管理器110將結果返回給 進行請求的客戶機140 (塊610)。需要指出的是,在某些實施例中, 在提交查詢與接收查詢結果之間的所有步驟都可以是對客戶機140透 明的。還要指出的是,在某些情況下,管理器IIO可以在不能立即識 別出用于進行評估的合適數據倉庫120的情況下將該查詢入隊。此外, 在某些情況下,例如如果一查詢有形式錯誤或者對數據倉庫120的等 待超時了 ,管理器110可以將錯誤情況返回給進行請求的客戶機140。
數據倉庫計算基礎設施
每個數據倉庫120都可以包括計算硬件以及被配置成實現(xiàn)數據倉 儲功能的操作系統(tǒng)軟件和數據倉儲軟件(例如數據庫軟件)的相應集 合。在某些實施例中,所使用的計算硬件可以包括專用、高端多處理 器計算機系統(tǒng),可以細致地將該計算機系統(tǒng)與專用于特定安裝的定制 的操作系統(tǒng)和數據倉儲軟件集成起來。然而,對于購買、管理以及維 護來說這種配置可能是昂貴的。因此,在某些實施例中,任意或所有 數據倉庫120均可以包括由運行廣泛發(fā)布的或開放源碼的操作系統(tǒng)和/ 或數據倉儲軟件的多個較不昂貴(例如商用)計算機系統(tǒng)所組裝成的 相應計算集群。
圖7例示了可以實現(xiàn)數據倉庫120的計算集群的一個實施例。在 所例示的實施例中,數據倉庫集群700 (或簡稱為集群700)包括多個 計算節(jié)點710 (或簡稱為節(jié)點710)。每個節(jié)點710都耦合到多個交換 機720中的每一個,并且每個交換機720都耦合到相應的多個存儲器 陣列730。由此,在所例示的實施例中,每個節(jié)點710都可以通過合 適的交換機720來訪問任一存儲器陣列730。在一個實施例中,集群 700可以包括16個節(jié)點710、 8個交換機720以及64個存儲器陣列730。然而,需要指出的是,在各種實施例中,可以釆用任意多個節(jié)點710、 交換機720以及存儲器陣列730,以及用于將這些組成要素互連的各 種拓樸結構。
在一個實施例中,如以下結合圖8的描述更詳細地描述的,每個 節(jié)點710都可以包括單處理器或多處理器計算機系統(tǒng)。在某些實施例 中,節(jié)點710可以包括由包括Sun Microsystems、 Hewlett-Packard, IBM、戴爾或任何合適的系統(tǒng)制造商在內的多個廠商中的任何廠商提 供的通用服務器、個人計算機或工作站系統(tǒng)。此外,可以將節(jié)點710 配置成執(zhí)行一個或更多個合適的操作系統(tǒng),如與Linux、 Microsoft Windows、 Solaris、 HP-UX、 AIX或任何其他合適的通用或專用操作 系統(tǒng)的某個版本兼容的操作系統(tǒng)。
一般來講,每個節(jié)點710都可以進行操作以針對可以經由存儲器 陣列730存儲的數據集合對經由管理器110接收到的查詢以及其他數 據倉庫操作進行評估,同時交換機730提供節(jié)點710與存儲器陣列730 之間的互連性。由此,在所例示的實施例中,在特定節(jié)點710上被評 估的查詢可以均勻地訪問存儲在任何存儲器陣列730上的數據集合。 在其他實施例中,可以將數據集合不均勻地提供給節(jié)點710。例如, 可以將給定節(jié)點710映射到包括某些數據集合但是不包括其他數據集 合的特定一個或更多個存儲器陣列730。在這種實施例中,根據特定 查詢所依賴的數據集合如何分布在多個存儲器陣列730上,多個節(jié)點 710可能需要參與對該特定查詢的評估。
在某些實施例中,交換機720和存儲器陣列730可以包括存儲區(qū) 域網(SAN)。例如,可以利用光纖信道互連或其他合適的SAN互連 和管理技術將交換機720耦合到節(jié)點710和存儲器陣列730。然而, 作出如下構思可以使用任何合適類型的網絡來將集群700的多個設 備互連。例如,在一個實施例中,作為互連技術,可以采用吉比特以 太網或10吉比特以太網。
每個存儲器陣列730都可以包括一個或更多個大容量存儲裝置, 如固定磁盤裝置。例如,在一個實施例中,每個存儲器陣列730都可以包括被配置成獨立盤冗余陣列(RAID陣列)的相同數量個SCSI(小 型計算機系統(tǒng)接口 )硬盤驅動器??梢杂纱鎯ζ麝嚵?30自身來管理 由存儲器陣列730支持的各種存儲特征,如盤分段(disk striping )、 鏡像以及數據奇偶校驗。例如,除了大容量存儲裝置以外,存儲器陣 列730還可以包括被配置成對這些裝置進行管理的附加硬件。作為另 一種選擇,存儲器陣列730可以是相對被動的,可以由智能交換機720 來管理其存儲特征。作出如下構思除了磁盤以外或者作為磁盤的替 代物, 一給定存儲器陣列730可以包括其他類型的存儲裝置,如光學 介質或磁帶。此外,作出如下構思在某些實施例中,可以對各存儲 器陣列730進行相同的配置,而在其他實施例中,存儲器陣列730在 它們的配置和/或特征集合方面可以是不同種類的。
在某些實施例中,可以容易地對集群700進行擴縮以使其與給定 數據倉庫120的預期工作負荷相匹配。例如,如果數據倉庫120預期 要容納接收不頻繁或相對簡單的查詢的大量數據,那么可以將存儲器 陣列730配備成存儲所預期量的數據(包括如上所述的任何期望的數 據集合復制),同時可以基于所預期的工作負荷獨立地配備節(jié)點710。 如果查詢工作負荷或存儲要求萬一增加了,那么隨后可以添加附加的 節(jié)點710、交換機720和/或存儲器陣列730。
作出如下構思在某些實施例中,可以將上述任何方法或技術(例 如,管理器IIO或數據倉庫120的功能,或圖3、 4以及6所例示的方 法)實現(xiàn)為能夠經由計算機可訪問的介質來存儲或傳送的程序指令和 數據??梢詧?zhí)行這種程序指令以執(zhí)行特定計算功能,如數據倉儲和虛 擬化、存儲管理、查詢和數據集合分析、查詢評估、操作系統(tǒng)功能、 應用、和/或任何其他合適的功能。在一個實施例中,節(jié)點710可以包 括計算機可訪問介質。圖8例示了可以作為給定節(jié)點710的例示的計 算機系統(tǒng)的一個實施例。在所例示的實施例中,計算機系統(tǒng)800包括 經由輸入/輸出(I/O)接口 830耦合到系統(tǒng)存儲器820的一個或更多 個處理器810。節(jié)點710還包括均耦合到I/O接口 830的網絡接口 840 和SAN接口 850。需要指出的是,在某些實施例中,可以將計算機系統(tǒng)800的實例 配置成與集群700分開,并將該實例配置成執(zhí)行數據倉庫系統(tǒng)100內 的其他應用或功能。例如,在一個實施例中,可以將計算機系統(tǒng)800 的一個或更多個實例配備在集群700的外部,并配置成執(zhí)行可以經由 計算機可訪問介質來存儲或傳送的程序指令和數據并配置成實現(xiàn)管理 器110。在某些這種實施例中,被配置成實現(xiàn)管理器110的計算機系 統(tǒng)800的實例的配置可以與圖8所示的配置不同。例如,在某些實施 例中,計算機系統(tǒng)800的這種實例可以包括更多個或更少個處理器 810。此外,盡管在某些實施例中這種實例可以保留SAN接口 850, 但是也可以略去該接口 。
如以上指出的,在各種實施例中,計算機系統(tǒng)800可以是包括一 個處理器810的單處理器系統(tǒng)或包括若干個(如2、 4、 8或其他合適 的數量)處理器810的多處理器系統(tǒng)。處理器810可以是能夠執(zhí)行指 令的任何合適的處理器。例如,在各種實施例中,處理器810可以是 實現(xiàn)任何不同指令集架構(ISA )(如x86、 PowerPc、 SPARC或MIPS ISA或任何其他合適的ISA)的通用或嵌入式處理器。在多處理器系 統(tǒng)中,每個處理器810都可以共同地但非必要地實現(xiàn)同一 ISA,
可以將系統(tǒng)存儲器820配置成存儲可由處理器810訪問的指令和 數據。在各種實施例中,可以采用任何合適的存儲器技術,如靜態(tài)隨 機存取存儲器(SRAM)、同步動態(tài)RAM (SDRAM)、非易失性/ 閃速型存儲器或任何其他類型的存儲器,來實現(xiàn)系統(tǒng)存儲器820。在 所例示的實施例中,將實現(xiàn)期望功能(如上述那些功能)的程序指令 和數據示出為作為代碼825存儲在系統(tǒng)存儲器820內。
在一個實施例中,可以將I/0接口 830配置成對處理器810、系 統(tǒng)存儲器820以及設備內的任何外圍設備(包括網絡接口 840、 SAN 接口 850或其他外圍接口 )之間的I/O業(yè)務量進行協(xié)調。在某些實施 例中,1/0接口 830可以執(zhí)行任何必需的協(xié)議、定時或其他數據變換 以將來自一個組件(例如系統(tǒng)存儲器820)的數據信號轉換成適合于 由另一組件(例如處理器810)使用的格式。在某些實施例中,1/0接口 830可以包括對通過各種類型的外圍總線連接的設備的支持,如外 圍組件互連(PCI)總線標準或通用串行總線(USB)標準的變型。 在某些實施例中,可以將I/0接口 830的功能分成2個或更多個分開 的組件,如北橋和南橋。而且,在某些實施例中,可以將I/0接口 830 的某些或所有功能(如到系統(tǒng)存儲器820的接口 )直接并入處理器810 中。
可以將網絡接口 840配置成允許在計算機系統(tǒng)800與連接到網絡 的其他設備之間交換數據。例如,可以將管理器110配置成在集群700 的外部的計算機系統(tǒng)800上執(zhí)行,并且被配置成集群700內的節(jié)點710 的特定計算機系統(tǒng)800可以經由網絡接口 840與位于外部系統(tǒng)上的管 理器110相通信。在各種實施例中,網絡接口 840可以支持經由以下 網絡進行通信有線或無線通用數據網絡,如任何合適類型的以太網; 電信/電話網絡,如模擬話音網絡或數字光纖通信網絡;存儲器局域網, 如光纖通道SAN;或任何其他合適類型的網絡和/或協(xié)議。
在一個實施例中,可以將SAN接口 850配置成允許經由交換機 720在計算機系統(tǒng)800與存儲器陣列730之間交換數據。在某些實施 例中,如上所述,SAN接口 850可以包括光纖通道接口或另一合適的 接口。然而,作出如下構思在某些實施例中,可以通過標準的網絡 接口來實現(xiàn)SAN連接性。在這種實施例中,計算機系統(tǒng)800可以提供 單個網絡接口 (例如網絡接口 840)以與存儲裝置和其他計算機系統(tǒng) 相通信,或者計算機系統(tǒng)800可以將存儲裝置和通用網絡通信均勻地 散布在幾個類似配置的網絡接口上。
在某些實施例中,系統(tǒng)存儲器820可以是被配置成存儲如上所述 的程序指令和數據的計算機可訪問介質的一個實施例。然而,在其他 實施例中,可以接收、發(fā)送或在不同類型的計算機可訪問介質上存儲 程序指令和/或數據。 一般來講,計算機可訪問介質可以包括諸如磁或 光介質之類的存儲介質或存儲器介質,例如,經由I/O接口 830耦合 到計算機系統(tǒng)800的盤、CD-ROM或DVD-ROM,或經由SAN接口 850耦合到計算機系統(tǒng)800的存儲器陣列730。計算機可訪問介質還可以包括可以作為系統(tǒng)存儲器820或另 一類型的存儲器而包括在某些實 施例的計算機系統(tǒng)800中的任何易失性或非易失性介質,如RAM(例 如SDRAM、 DDR SDRAM 、 RDRAM、 SRAM等)、ROM等。此夕卜, 計算機可訪問介質可以包括傳輸介質或信號,該信號例如是經由諸如 網絡和/或無線鏈接的通信介質而傳送的諸如電、電磁或數字的信號, 使得可以經由網絡接口 840或SAN接口 850來實現(xiàn)。
盡管詳細地描述了以上實施例,但是本領域的技術人員一旦全面 理解了以上公開內容就將明了許多變型和修改。應當將以下權利要求 解釋成包括所有這種變型和修改。
權利要求
1、一種系統(tǒng),該系統(tǒng)包括多個數據倉庫;和數據倉庫管理器,其被配置成從一個或更多個數據源提取數據集合以存儲在所述多個數據倉庫中的一個或更多個中;其中包括所述多個數據倉庫中的兩個或更多個數據倉庫的第一子集中的每個數據倉庫都被配置成存儲由所述數據倉庫管理器提取的第一數據集合的相應副本;并且其中所述數據倉庫管理器還被配置成在所述第一數據集合的每個相應副本已被存儲到所述第一子集中的對應數據倉庫之前允許由數據倉庫的所述第一子集中的一個數據倉庫對依賴于所述第一數據集合的查詢進行評估。
2、 根據權利要求1所述的系統(tǒng),其中,在所述第一子集中的第 一數據倉庫對所述查詢進行評估的同時,所述第一子集中的另一數據 倉庫正在存儲所述第一數據集合。
3、 根據權利要求1所述的系統(tǒng),其中,所述數據倉庫管理器還 被配置成在所述第一數據集合已被存儲到任何給定數據倉庫之后允許 由所述第 一子集中的任何給定數據倉庫來評估所述查詢。
4、 根據權利要求1所述的系統(tǒng),至少部分同時地將所述第一數 據集合存儲到數據倉庫的所述第 一子集中的每個數據倉庫。
5、 根據權利要求1所述的系統(tǒng),其中所述多個數據倉庫中的一 個給定數據倉庫被配置成存儲由所述數據倉庫管理器提取的第二數據 集合,并且其中所述多個數據倉庫中的至少另 一數據倉庫不存儲所述 第二數據集合的任何副本。
6、 根據權利要求1所述的系統(tǒng),其中所述多個數據倉庫中的每 一個都包括相應的關系數據庫。
7、 根據權利要求1所述的系統(tǒng),其中所述數據倉庫管理器還被 配置成在操作數據庫中存儲與存儲在所述多個數據倉庫內的每個數據集合相對應的標識信息。
8、 根據權利要求7所述的系統(tǒng),其中,對于所述第一數據集合, 所述標識信息包括數據倉庫的所述第一子集中每個數據倉庫的相應標 識符,以及表明是否已將所述第一數據集合存儲到數據倉庫的所述第 一子集中的一個對應數據倉庫中的相應狀態(tài)信息。
9、 根據權利要求8所述的系統(tǒng),其中所述數據倉庫管理器還被 配置成根據所述相應狀態(tài)信息來確定數據倉庫的所述第一子集中的 一個給定數據倉庫具有足夠的數據來對所述查詢進行評估,并且被配 置成響應性地將所述查詢傳送給所述第一子集中的所述一個給定數據 倉庫以進行評估。
10、 根據權利要求l所述的系統(tǒng),其中所述多個數據倉庫中的至 少兩個位于不同的物理地點。
11、 根據權利要求l所述的系統(tǒng),其中所述多個數據倉庫中的每 一個都包括相應的計算集群,其中給定的相應計算集群包括經由存儲 區(qū)域網耦合到多個存儲裝置的至少 一個計算節(jié)點。
12、 根據權利要求11所述的系統(tǒng),其中所述至少一個計算節(jié)點 被配置成實施與一版本的Linux兼容的操作系統(tǒng)。
13、 根據權利要求l所述的系統(tǒng),其中所述數據倉庫管理器被配 置成經由web服務接口從進行請求的應用接收所述查詢。
14、 一種方法,該方法包括以下步驟從一個或更多個數據源提取數據集合以存儲在多個數據倉庫中 的一個或更多個中;將第 一數據集合的相應副本存儲在包括所述多個數據倉庫中的兩個或更多個數據倉庫的第一子集中的每個數據倉庫中;以及在所述第 一數據集合的每個相應副本被存儲到所述第 一子集中 的對應數據倉庫之前允許由數據倉庫的所述第一子集中的一個數據倉 庫對依賴于所述第 一數據集合的查詢進行評估。
15、 根據權利要求14所述的方法,該方法還包括以下步驟在 所述第一子集中的第一數據倉庫對所述查詢進行評估的同時,所述第一子集中的另 一數據倉庫正在存儲所述第一數據集合。
16、 根據權利要求14所述的方法,該方法還包括以下步驟在 所述第 一數據集合已被存儲到任何給定數據倉庫之后,允許由所述第 一子集中的任何給定數據倉庫來評估所述查詢。
17、 根據權利要求14所述的方法,該方法還包括以下步驟至 少部分同時地將所述第一數據集合存儲到數據倉庫的所述第一子集中 的每個數據倉庫。
18、 根據權利要求14所述的方法,其中所述多個數據倉庫中的 一個給定數據倉庫被配置成存儲由所述數據倉庫管理器提取的第二數 據集合,并且其中所述多個數據倉庫中的至少另 一數據倉庫不存儲所 述第二數據集合的任何副本。
19、 根據權利要求14所述的方法,其中所述多個數據倉庫中的 每一個都包括相應的關系數據庫。
20、 根據權利要求14所述的方法,該方法還包括以下步驟在 操作數據庫中存儲與存儲在所述多個數據倉庫內的每個數據集合相對 應的標識信息。
21、 根據權利要求20所述的方法,其中,對于所述第一數據集 合,所述標識信息包括數據倉庫的所述第一子集中每個數據倉庫的相 應標識符,以及表明是否已將所述第一數據集合存儲到數據倉庫的所 述第一子集中的一個對應數據倉庫中的相應狀態(tài)信息。
22、 根據權利要求21所述的方法,該方法還包括以下步驟 根據所述相應狀態(tài)信息來確定數據倉庫的所述第一子集中的一個給定數據倉庫具有足夠的數據來對所述查詢進行評估;以及響應于所述確定將所述查詢傳送給所述第一子集中的所述一個給定數據倉庫以進行評估。
23、 根據權利要求14所述的方法,其中所述多個數據倉庫中的 至少兩個位于不同的物理地點。
24、 根據權利要求14所述的方法,其中所述多個數據倉庫中的 每一個都包括相應的計算集群,其中給定的相應計算集群包括經由存儲區(qū)域網耦合到多個存儲裝置的至少 一個計算節(jié)點。
25、 根據權利要求24所述的方法,其中所述至少一個計算節(jié)點 被配置成實施與一版本的Linux兼容的操作系統(tǒng)。
26、 根據權利要求14所述的方法,該方法還包括以下步驟經 由web服務接口從進行請求的應用接收所述查詢。
27、 一種包括有程序指令的計算機可訪問介質,其中可以由計算 機系統(tǒng)執(zhí)行所述程序指令以從一個或更多個數據源提取數據集合以存儲在多個數據倉庫中 的一個或更多個中;將第一數據集合的相應副本存儲在包括所述多個數據倉庫中的兩個或更多個數據倉庫的第一子集中的每個數據倉庫中;以及在所述第 一數據集合的每一個相應副本被存儲到所述第 一子集 中的對應數據倉庫之前允許由數據倉庫的所述第一子集中的一個數據 倉庫對依賴于所述第 一數據集合的查詢進行評估。
28、 根據權利要求27所述的計算機可訪問介質,其中,在所述 笫 一子集中的第一數據倉庫對所述查詢進行評估的同時,所述第 一子 集中的另 一數據倉庫正在存儲所述第 一數據集合。
29、 根據權利要求27所述的計算機可訪問介質,其中所述程序 指令還可以執(zhí)行以在所述第一數據集合已被存儲到任何給定數據倉 庫之后,允許由所述第一子集中的任何給定數據倉庫來評估所述查詢。
30、 根據權利要求27所述的計算機可訪問介質,其中至少部分 同時地將所述第一數據集合存儲到數據倉庫的所述第一子集中的每個 數據倉庫。
31、 根據權利要求27所述的計算機可訪問介質,其中所述多個 數據倉庫中的每一個都包括相應的關系數據庫。
32、 根據權利要求27所述的計算機可訪問介質,其中所述程序 指令還可以執(zhí)行以在操作數據庫中存儲與存儲在所述多個數據倉庫 內的每一個數據集合相對應的標識信息。
33、 根據權利要求32所述的計算機可訪問介質,其中,對于所述第一數據集合,所述標識信息包括數據倉庫的所述第一子集中每一 個數據倉庫的相應標識符,以及表明是否已將所述第一數據集合存儲 到數據倉庫的所述第一子集中的一個對應數據倉庫中的相應狀態(tài)信 息。
34、 根據權利要求33所述的計算機可訪問介質,其中所述程序 指令還可以執(zhí)行以根據所述相應狀態(tài)信息來確定數據倉庫的所述第一子集中的一 個給定數據倉庫具有足夠的數據來對所述查詢進行評估;以及響應于所述確定將所述查詢傳送給所述第一子集中的所述一個 給定數據倉庫以進行評估。
35、 根據權利要求27所述的計算機可訪問介質,其中所述程序 指令還可以執(zhí)行以實施與一版本的Linux兼容的操作系統(tǒng)。
36、 根據權利要求27所述的計算機可訪問介質,其中所述程序 指令還可以執(zhí)行以經由web服務接口從進行請求的應用接收所述查 詢。
37、 一種系統(tǒng),該系統(tǒng)包括多個數據倉庫,其被配置成存儲從一個或更多個數據源提取的數 據集合;以及數據倉庫管理器,其被配置成將所述多個數據倉庫作為單個數據 倉庫呈現(xiàn)給客戶機,其中所述多個數據倉庫內的所述數據集合的位置 對于所述客戶機是透明的;其中,在給定時刻,由所述多個數據倉庫中的第一數據倉庫存儲 的并且在所述給定時刻可供所述客戶機進行查詢的第 一數據集合與由 所述多個數據倉庫中的第二數據倉庫存儲的并且在所述給定時刻可供 所述客戶機進行查詢的第二數據集合不相似;并且其中,響應于接收到來自所述客戶機的針對由所述多個數據倉庫 中的一個或更多個數據倉庫存儲的數據集合的查詢,所述數據倉庫管 理器還被配置成識別所述多個數據倉庫中的能夠對所述查詢進行評估 的一個特定數據倉庫,并將所述查詢傳送給所述特定數據倉庫以進行評估。
38、 根據權利要求37所述的系統(tǒng),其中包括所述多個數據倉庫 中的兩個或更多個數據倉庫的第一子集中的每個數據倉庫都被配置成 存儲給定數據集合的相應副本。
39、 根據權利要求38所述的系統(tǒng),其中所述數據倉庫管理器還 被配置成在所述給定數據集合的每個相應副本已被存儲到所述第一 子集中的對應數據倉庫之前,允許由數據倉庫的所述第一子集中的一 個數據倉庫對依賴于所述給定數據集合的查詢進行評估。
40、 根據權利要求37所述的系統(tǒng),其中所述多個數據倉庫中的 一個給定數據倉庫被配置成存儲第二數據集合,并且其中所述多個數 據倉庫中的至少另 一數據倉庫不存儲所述第二數據集合的任何副本。
41、 根據權利要求37所述的系統(tǒng),其中所述多個數據倉庫中的 每一個都包括相應的關系數據庫。
42、 根據權利要求37所述的系統(tǒng),其中所述數據倉庫管理器還 被配置成在操作數據庫中存儲與存儲在所述多個數據倉庫內的每個 數據集合相對應的標識信息。
43、 根據權利要求42所述的系統(tǒng),其中,對于給定數據集合, 所述標識信息包括存儲有或要存儲所述給定數據集合的所述一個或更 多個數據倉庫中每一個的相應標識符,并且其中所述標識信息還包括 表明是否已將所述給定數據集合存儲到對應數據倉庫的相應狀態(tài)信 息。
44、 根據權利要求43所述的系統(tǒng),其中,所述數據倉庫管理器 識別能夠對所述查詢進行評估的所述特定數據倉庫的操作還包括根據所述查詢進行評估。
45、 根據權利要求37所述的系統(tǒng),其中所述數據倉庫管理器還 被配置成經由web服務接口從進行請求的應用接收所述查詢。
46、 一種方法,該方法包括以下步驟從一個或更多個數據源提取數據集合以存儲在多個數據倉庫中的一個或更多個中;將所述多個數據倉庫作為單個數據倉庫呈現(xiàn)給客戶機,其中所述 多個數據倉庫內的所述數據集合的位置對于所述客戶機是透明的;以 及響應于接收到來自所述客戶機的針對由所述多個數據倉庫中的 一個或更多個數據倉庫存儲的數據集合的查詢,識別所述多個數據倉 庫中的能夠對所述查詢進行評估的一個特定數據倉庫,并將所述查詢 傳送給所述特定數據倉庫以進行評估,其中,在給定時刻,由所述多個數據倉庫中的第一數據倉庫存儲 的并且在所述給定時刻可供所述客戶機進行查詢的第 一數據集合與由 所述多個數據倉庫中的第二數據倉庫存儲的并且在所述給定時刻可供 所述客戶機進行查詢的第二數據集合不相似。
47、 根據權利要求46所述的方法,其中包括所述多個數據倉庫 中的兩個或更多個數據倉庫的第一子集中的每個數據倉庫都被配置成 存儲給定數據集合的相應副本。
48、 根據權利要求47所述的方法,該方法還包括以下步驟在 所述給定數據集合的每個相應副本已被存儲到所述第 一子集中的對應 數據倉庫之前,允許由數據倉庫的所述第一子集中的一個數據倉庫對 依賴于所述給定數據集合的查詢進行評估。
49、 根據權利要求46所述的方法,其中所述多個數據倉庫中的 一個給定數據倉庫被配置成存儲第二數據集合,并且其中所述多個數 據倉庫中的至少另 一數據倉庫不存儲所述第二數據集合的任何副本。
50、 根據權利要求46所述的方法,其中所述多個數據倉庫中的 每一個都包括相應的關系數據庫。
51、 根據權利要求46所述的方法,該方法還包括以下步驟在 操作數據庫中存儲與存儲在所述多個數據倉庫內的每個數據集合相對 應的標識信息。
52、 根據權利要求51所述的方法,其中,對于給定數據集合, 所述標識信息包括存儲有或要存儲所述給定數據集合的所述一個或更多個數據倉庫中每一個的相應標識符,并且其中所述標識信息還包括 表明是否已將所述給定數據集合存儲到對應數據倉庫的相應狀態(tài)信 息。
53、 根據權利要求52所述的方法,其中,識別能夠對所述查詢 進行評估的所述特定數據倉庫的步驟還包括以下步驟根據所述相應 狀態(tài)信息來確定所述特定數據倉庫是否具有足夠的數據來對所述查詢 進行評估。
54、 根據權利要求46所述的方法,該方法還包括以下步驟經 由web服務接口從進行請求的應用接收所述查詢,
55、 一種包括程序指令的計算機可訪問介質,其中所述程序指令 可以執(zhí)行以從一個或更多個數據源提取數據集合以存儲在多個數據倉庫中 的一個或更多個中;將所述多個數據倉庫作為單個數據倉庫呈現(xiàn)給客戶機,其中所述多個數據倉庫內的所述數據集合的位置對于所述客戶機是透明的;以 及響應于接收到來自所述客戶機的針對由所述多個數據倉庫中的 一個或更多個數據倉庫存儲的數據集合的查詢,識別所述多個數據倉 庫中的能夠對所述查詢進行評估的一個特定數據倉庫,并將所述查詢 傳送給所述特定數據倉庫以進行評估,其中,在給定時刻,由所述多個數據倉庫中的第一數據倉庫存儲 的并且在所述給定時刻可供所述客戶機進行查詢的第 一數據集合與由 所述多個數據倉庫中的第二數據倉庫存儲的并且在所述給定時刻可供 所述客戶機進行查詢的第二數據集合不相似。
56、 根據權利要求55所述的計算機可訪問介質,其中包括所述 多個數據倉庫中的兩個或更多個數據倉庫的第一子集中的每個數據倉 庫都被配置成存儲給定數據集合的相應副本。
57、 根據權利要求56所述的計算機可訪問介質,還包括在所 述給定數據集合的每個相應副本已被存儲到所述第一子集中的對應數據倉庫之前,允許由數據倉庫的所述第一子集中的一個數據倉庫對依 賴于所述給定數據集合的查詢進行評估。
58、 根據權利要求55所述的計算機可訪問介質,其中所述多個 數據倉庫中的一個給定數據倉庫被配置成存儲第二數據集合,并且其 中所述多個數據倉庫中的至少另 一數據倉庫不存儲所述第二數據集合 的任何副本。
59、 根據權利要求55所述的計算機可訪問介質,其中所述多個 數據倉庫中的每一個都包括相應的關系數據庫。
60、 根據權利要求55所述的計算機可訪問介質,還包括在操 作數據庫中存儲與存儲在所述多個數據倉庫內的每個數據集合相對應 的標識信息。
61、 根據權利要求60所述的計算機可訪問介質,其中,對于給 定數據集合,所述標識信息包括存儲有或要存儲所述給定數據集合的 所述一個或更多個數據倉庫中每一個的相應標識符,并且其中所述標 識信息還包括表明是否已將所述給定數據集合存儲到對應數據倉庫的 相應狀態(tài)信息。
62、 根據權利要求61所述的計算機可訪問介質,其中,識別能 夠對所述查詢進行評估的所述特定數據倉庫的操作還包括根據所述 相應狀態(tài)信息來確定所述特定數據倉庫是否具有足夠的數據來對所述 查詢進行評估。
63、 根據權利要求55所述的計算機可訪問介質,還包括經由web 服務接口從進行請求的應用接收所述查詢。
64、 一種系統(tǒng),該系統(tǒng)包括 多個數據倉庫;和數據倉庫管理器,其被配置成從一個或更多個數據源提取數據集 合以存儲在所述多個數據倉庫中的一個或更多個中;以及操作數據庫,其被配置成與所述數據倉庫管理器相交互并且存儲 與所述數據集合相關聯(lián)的數據倉庫狀態(tài)信息,其中,響應于接收到來自多個客戶機中的一個給定客戶機的針對由所述多個數據倉庫中的一個或更多個數據倉庫所存儲的數據集合的 查詢,所述數據倉庫管理器還被配置成識別所述多個數據倉庫中的能 夠對所述查詢進行評估的一個特定數據倉庫,并將所述查詢傳送給所 述特定數據倉庫以進行評估,其中所述識別操作依賴于所述數據倉庫 狀態(tài)信息。
65、 根據權利要求64所述的系統(tǒng),其中,對于給定數據集合, 與所述給定數據集合相關聯(lián)的所述數據倉庫狀態(tài)信息包括對被配置成 存儲所述給定數據集合的所述多個數據倉庫中的一個或更多個進行標 識的信息。
66、 根據權利要求64所述的系統(tǒng),其中,對于給定數據集合, 與所述給定數據集合相關聯(lián)的所述數據倉庫狀態(tài)信息包括針對修改所 述給定數據集合的內容的操作而標識所述給定數據集合的狀態(tài)的信 息。
67、 根據權利要求64所述的系統(tǒng),其中包括所述多個數據倉庫 中的兩個或更多個數據倉庫的第一子集中的每個數據倉庫都被配置成 存儲由所述數據倉庫管理器提取的第一數據集合的相應副本,并且其 中所述數據倉庫管理器還被配置成在所述第一數據集合的每個相應 副本已被存儲到所述第一子集中的對應數據倉庫之前,允許由數據倉 庫的所述第一子集中的一個數據倉庫對依賴于所述第一數據集合的查 詢進行評估。
68、 根據權利要求64所述的系統(tǒng),其中所述數據倉庫管理器還 被配置成將所述多個數據倉庫作為單個數據倉庫呈現(xiàn)給所述給定客戶 機,其中所述多個數據倉庫內的所述數據集合的位置對于所述給定客 戶機是透明的。
69、 根據權利要求68所述的系統(tǒng),其中,在給定時刻,由所述 多個數據倉庫中的第一數據倉庫存儲的并且在所述給定時刻可供所述 給定客戶機進行查詢的第 一數據集合與由所述多個數據倉庫中的第二 數據倉庫存儲的并且在所述給定時刻可供所述給定客戶機進行查詢的 第二數據集合不相似
全文摘要
一種用于實現(xiàn)數據倉儲系統(tǒng)的設備和方法。根據第一實施例,一種系統(tǒng)可以包括多個數據倉庫;和數據倉庫管理器,其被配置成從一個或更多個數據源提取數據集合以存儲在所述多個數據倉庫中的一個或更多個中。包括所述多個數據倉庫中的兩個或更多個數據倉庫的第一子集中的每個數據倉庫都被配置成存儲由所述數據倉庫管理器提取的第一數據集合的相應副本。此外,所述數據倉庫管理器還可以被配置成在所述第一數據集合的每個相應副本被存儲到所述第一子集中的對應數據倉庫之前允許由數據倉庫的所述第一子集中的一個數據倉庫對依賴于所述第一數據集合的查詢進行評估。
文檔編號G06F17/30GK101305365SQ200580047505
公開日2008年11月12日 申請日期2005年12月14日 優(yōu)先權日2004年12月17日
發(fā)明者保羅·J·博得, 克里斯托弗·R·貝爾, 馬克·E·鄧拉普 申請人:亞馬遜科技公司