亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

多維數(shù)據(jù)庫(kù)體系的制作方法

文檔序號(hào):6592983閱讀:296來(lái)源:國(guó)知局
專利名稱:多維數(shù)據(jù)庫(kù)體系的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般地涉及信息處理系統(tǒng),更具體地涉及計(jì)算機(jī)實(shí)現(xiàn)的數(shù)據(jù)庫(kù)和促進(jìn)在數(shù) 據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù)以及從數(shù)據(jù)庫(kù)檢索數(shù)據(jù)的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)。
背景技術(shù)
早期的簡(jiǎn)單數(shù)據(jù)庫(kù)結(jié)構(gòu)包括多行或元組(tuple)和列的單個(gè)文件或表。該格式在 每行唯一時(shí)是特別有用的;也就是說(shuō),沒(méi)有數(shù)據(jù)是冗余的。然而,數(shù)據(jù)庫(kù)迅速地變得復(fù)雜起 來(lái)。它們開(kāi)始包括其中每行并不唯一的信息。例如,考慮包含與作者以及他們所寫(xiě)的書(shū)籍 有關(guān)的信息的數(shù)據(jù)庫(kù)。如果作者已經(jīng)寫(xiě)了多本書(shū)籍,則簡(jiǎn)單數(shù)據(jù)庫(kù)模式中的每一行將包括 作者的姓名以及一本書(shū)籍的標(biāo)識(shí)。從而如果一位作者寫(xiě)了“η”本書(shū)籍,則表將包括“η”行; 并且該作者的姓名將在這“η”行中的每一行中出現(xiàn)。諸如作者姓名的相同值在多行中的該重復(fù)被稱作“冗余”。冗余帶來(lái)了特定問(wèn)題。 例如,存儲(chǔ)冗余數(shù)據(jù)不必要地消耗存儲(chǔ)器,并且存儲(chǔ)器在當(dāng)時(shí)是有限且昂貴的。該問(wèn)題已經(jīng) 隨著時(shí)間而被最小化。然而,還沒(méi)有被最小化的問(wèn)題包括改變數(shù)據(jù)的更新以及保持一致數(shù) 據(jù)的需要。如果數(shù)據(jù)庫(kù)包括作者及其地址并且一個(gè)作者的地址有所改變,則必須要改變用 于該作者所寫(xiě)的每本書(shū)籍的記錄中的該地址。如果更新過(guò)程由于任何原因而中斷,則該作 者的一些地址可能已經(jīng)改變而其它則沒(méi)有。所產(chǎn)生的數(shù)據(jù)將是不一致的。保持?jǐn)?shù)據(jù)一致性 是當(dāng)前數(shù)據(jù)庫(kù)所必需的。接著研發(fā)出了關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS或“關(guān)系模型”)。這些系統(tǒng)仍然作為 現(xiàn)有數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)的規(guī)定的基礎(chǔ)。在20世紀(jì)70年代引入的關(guān)系模型倡導(dǎo)數(shù)據(jù) 獨(dú)立,通過(guò)形式代數(shù)以及相關(guān)聯(lián)的被稱作結(jié)構(gòu)查詢語(yǔ)言(“SQL”)的描述查詢語(yǔ)言支持。在 該語(yǔ)言中,“SQL查詢”或“查詢”是與各種表中的數(shù)據(jù)進(jìn)行交互的主要工具。通常,RDBMS系統(tǒng)根據(jù)表中的關(guān)系存儲(chǔ)模式存儲(chǔ)數(shù)據(jù)。每個(gè)表在數(shù)據(jù)存儲(chǔ)機(jī)構(gòu)中 被存儲(chǔ)為行的序列集合,所述數(shù)據(jù)存儲(chǔ)機(jī)構(gòu)諸如盤、主存儲(chǔ)器和其它存儲(chǔ)器。許多系統(tǒng)還將 索引實(shí)現(xiàn)為額外的數(shù)據(jù)結(jié)構(gòu)以使得能夠?qū)μ囟ǖ囊恍谢蚨嘈羞M(jìn)行快速的隨機(jī)訪問(wèn)。索引以 促進(jìn)基于鍵值而導(dǎo)航到行的方式對(duì)一列或若干列(索引的鍵)進(jìn)行編碼。每個(gè)索引導(dǎo)致了 在數(shù)據(jù)改變的情況下構(gòu)造和維護(hù)索引數(shù)據(jù)結(jié)構(gòu)的增加成本。然而,用戶被呈現(xiàn)以作為表的 數(shù)據(jù)的非冗余視圖,并且通常意識(shí)不到這點(diǎn)和其它的潛在冗余。兩個(gè)其它概念也在該研發(fā)期間得以融合,即“規(guī)范化”和“關(guān)系”?!耙?guī)范化”通過(guò)將 數(shù)據(jù)劃分為多個(gè)表而使得冗余最小化。在之前的示例中,對(duì)單個(gè)冗余的作者_(dá)書(shū)籍表進(jìn)行 規(guī)范化產(chǎn)生獨(dú)立的作者和書(shū)籍表。作者表包括與一個(gè)時(shí)期的每個(gè)作者相關(guān)的信息;書(shū)籍表 則包括與一個(gè)時(shí)期的每本書(shū)籍相關(guān)的信息。圖1以邏輯形式公開(kāi)了簡(jiǎn)單的規(guī)范化數(shù)據(jù)庫(kù)30,其記錄了與每個(gè)作者和書(shū)籍相關(guān) 的信息,以及與多個(gè)顧客、他們的訂單和與每個(gè)訂單相關(guān)聯(lián)的書(shū)籍中的每一個(gè)相關(guān)的信息。 該信息的組織將包括數(shù)據(jù)信息的分析以利用單獨(dú)的表定義“規(guī)范化”數(shù)據(jù)庫(kù)。一個(gè)或多個(gè)單 獨(dú)的表可以是相關(guān)的。例如,出于解釋的目的,假設(shè)數(shù)據(jù)庫(kù)設(shè)計(jì)者對(duì)圖1中的該數(shù)據(jù)進(jìn)行分析,并且任意定義了相關(guān)表的三個(gè)群組,諸如作者群組31、客戶群組32和狀態(tài)群組33。作 者群組31包含與作者及其書(shū)籍相關(guān)的所有信息,并且包括作者表34和書(shū)籍表35??蛻羧?組32與客戶及其訂單相關(guān),并且包括客戶表36、訂單表37和項(xiàng)目表40。狀態(tài)群組33與狀 態(tài)信息相關(guān),并且包括狀態(tài)表41。顯而易見(jiàn)的是,狀態(tài)群組能夠包括多個(gè)表,并且項(xiàng)目表40 可以是作者群組31的成員。雖然圖1描繪了這些單獨(dú)的表之間的關(guān)系,但是所述關(guān)系不是明確定義的。相反, 主鍵和外部鍵提供了能夠根據(jù)其定義關(guān)系的信息。存在許多字段命名慣例,尤其是關(guān)于命 名主鍵和外部鍵。該討論假設(shè)在一個(gè)表中向主鍵名稱添加前綴“fk”來(lái)形成另一相關(guān)表中 的外部鍵名稱。在該特定示例中,作者表34包括主鍵字段AUTH0RID ;書(shū)籍表35中外部鍵 字段為fkAUTHORID。這樣的關(guān)系通常被描述為一對(duì)多關(guān)系,原因在于書(shū)籍表35的多行中的 相同外部鍵與每個(gè)作者相關(guān)。也就是說(shuō),單個(gè)或者“一個(gè)”作者鏈接到一個(gè)或多個(gè)該作者所 寫(xiě)的書(shū)籍,例如“許多”書(shū)籍。圖1中的鏈接42在邏輯等級(jí)表示了 AUTH0RID和fkAUTHORID 字段所定義的關(guān)系。圖1中的客戶群組32包括通過(guò)鏈接43和鏈接46所定義的類似一對(duì)多關(guān)系。兩 個(gè)鏈接44和45定義了不同群組中的表之間的關(guān)系。鏈接44將作者群組31中的表鏈接 到客戶群組32中的表。特別地,項(xiàng)目表40具有外部鍵fkORDERID和fkBOOKID。外部鍵 fkORDERID將一個(gè)項(xiàng)目鏈接到一個(gè)訂單。外部鍵fkBOOKID將一個(gè)項(xiàng)目鏈接到一本書(shū)。鏈 接45利用客戶表36中鏈接到狀態(tài)表41中的STATEID字段的fkSTATEID字段定義了客戶 表36和狀態(tài)表41之間的關(guān)系。在圖1利用一些也稱作“屬性”的代表性字段描繪了每個(gè)表的同時(shí),圖2利用行、列 和代表性數(shù)據(jù)以數(shù)據(jù)圖表描繪了所述表。每個(gè)表具有主鍵;一些具有外部鍵。更具體地,作 者表34包含主鍵AUTH0RID加上作者的姓氏、名字、出生日期和可選聯(lián)系信息的屬性。書(shū)籍 表35包括主鍵B00KID、外部鍵fkAUTHORID以及標(biāo)題、定價(jià)(LIST)、出版日期(PUBLISHED) 和描述的屬性。出于該討論的目的,假設(shè)每本書(shū)僅由一位作者所寫(xiě)。其余表和屬性的組織 對(duì)于本領(lǐng)域技術(shù)人員是顯而易見(jiàn)的。SQL查詢從數(shù)據(jù)庫(kù)請(qǐng)求信息并且創(chuàng)建所請(qǐng)求信息的“結(jié)果集合”?!敖Y(jié)果集合”是 在存儲(chǔ)器中保存數(shù)據(jù)副本的對(duì)象并且與數(shù)據(jù)源斷開(kāi)連接。最為常見(jiàn)的SQL查詢或命令檢索 數(shù)據(jù)并且利用聲明性SELECT關(guān)鍵詞以及若干可選關(guān)鍵詞和從句來(lái)執(zhí)行,包括FR0M、WHERE、 GROUP BY、HAVING和ORDER BY從句。對(duì)任意查詢的響應(yīng)必須從不同文件位置獨(dú)立檢索每 個(gè)所識(shí)別的表,并接著根據(jù)關(guān)系對(duì)來(lái)自不同表的相應(yīng)行進(jìn)行匹配。WHERE從句的內(nèi)容明確定義了與請(qǐng)求相關(guān)的每個(gè)關(guān)系并且提供了作為“連接 (join) ”操作的基礎(chǔ)的“反規(guī)范化”信息。WHERE從句尤其定義了所要連接的表以及提供關(guān) 系的字段或?qū)傩?。例如,要定義作者和書(shū)籍表34和35之間的關(guān)系的WHERE從句將識(shí)別作 者表34和主鍵AUTH0RID以及書(shū)籍表35和外部鍵fkAUTHORID。也就是說(shuō),WHERE從句的執(zhí) 行使用主鍵AUTH0RID和外部鍵fkAUTHORID連接兩個(gè)表以再生其中每行將包括作者的信息 以及一本書(shū)籍的標(biāo)識(shí)的原始數(shù)據(jù)。查詢響應(yīng)必須對(duì)所需要解決的每個(gè)關(guān)系執(zhí)行一次連接操 作。有效執(zhí)行連接操作是困難的。這樣的低效性在諸如圖1和2所示的相對(duì)小的數(shù)據(jù) 庫(kù)中是可以容忍的。然而,現(xiàn)實(shí)的數(shù)據(jù)庫(kù)變得日益復(fù)雜??蛻魧?shí)體可以包括許多等級(jí)的信息,包括訂單、項(xiàng)目、地址、電話、交互歷史和到其它家庭成員的鏈接。規(guī)范化將每個(gè)等級(jí)的 信息放置在專門的表中。在數(shù)據(jù)庫(kù)具有許多具有復(fù)雜關(guān)系的表時(shí)所存在的關(guān)系增加了連接 的數(shù)目。在大小和復(fù)雜度的量級(jí)高于如圖1和2所示數(shù)據(jù)庫(kù)的量級(jí)的數(shù)據(jù)庫(kù)中,連接操作 的低效性的累積效應(yīng)是無(wú)法容忍的。正常情況下,數(shù)據(jù)庫(kù)在包括盤片、主存儲(chǔ)器、緩存和其它存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)設(shè)備中 單獨(dú)或組合存儲(chǔ)和處理。每個(gè)這樣的存儲(chǔ)器具有反應(yīng)時(shí)間特性。通常,“反應(yīng)時(shí)間”是在對(duì) 數(shù)據(jù)的請(qǐng)求和開(kāi)始實(shí)際數(shù)據(jù)傳輸之間所流逝的時(shí)間。例如,盤片延遲具有三個(gè)分量,即查找 時(shí)間、旋轉(zhuǎn)反應(yīng)時(shí)間和傳輸速度。查找時(shí)間是盤片頭移動(dòng)到正訪問(wèn)的盤片柱面所需時(shí)間的 量度。旋轉(zhuǎn)反應(yīng)時(shí)間是特定盤片塊到達(dá)盤片頭所需時(shí)間的量度,而傳輸速度(“帶寬”)是 數(shù)據(jù)以其在盤片頭下通過(guò)的速率的量度。對(duì)于順序訪問(wèn)而言,查找和旋轉(zhuǎn)時(shí)間的確定僅需 要對(duì)于第一數(shù)據(jù)塊發(fā)生。對(duì)于讀和寫(xiě)操作而言,盤片和存儲(chǔ)器帶寬隨時(shí)間的改進(jìn)已經(jīng)使得能夠進(jìn)行非常高 效的順序訪問(wèn)。然而,盤片和存儲(chǔ)器反應(yīng)時(shí)間卻沒(méi)有相應(yīng)得以改進(jìn),使得隨機(jī)訪問(wèn)非常低 效。帶寬與反應(yīng)時(shí)間相比的顯著改進(jìn)意味著順序訪問(wèn)變得比隨機(jī)訪問(wèn)更為“廉價(jià)”。此外, 順序訪問(wèn)優(yōu)于隨機(jī)訪問(wèn)的性能優(yōu)勢(shì)隨時(shí)間呈指數(shù)增加。對(duì)各個(gè)表的訪問(wèn)可能需要廣泛的隨 機(jī)盤片和存儲(chǔ)器訪問(wèn),尤其在連接操作期間更是如此。訪問(wèn)客戶實(shí)體的所有部分要求大量 的隨機(jī)訪問(wèn),所述客戶實(shí)體每個(gè)存在于離散表中單獨(dú)的行中。這進(jìn)一步增加了有效執(zhí)行連 接操作以及其它查詢操作的難度。SQL查詢?cè)趦山M數(shù)據(jù)庫(kù)交互應(yīng)用中得以使用,也就是OLTP (聯(lián)機(jī)事務(wù)處理)和 OLAP (聯(lián)機(jī)分析處理),其最初被稱作DSS (決策支持系統(tǒng))應(yīng)用。OLTP應(yīng)用處理聯(lián)機(jī)事務(wù)。 使用傳統(tǒng)的存儲(chǔ)方案,與這樣的事務(wù)相關(guān)聯(lián)的信息能夠被有效添加到單個(gè)表或者從單個(gè)表 進(jìn)行檢索,諸如圖1所示的那些表中的任意一個(gè)。然而,隨著實(shí)體跨越來(lái)越多的表,所增加 的連接操作和隨機(jī)訪問(wèn)的成本使得這樣的查詢愈發(fā)低效。對(duì)于具有簡(jiǎn)單關(guān)系的小型數(shù)據(jù)庫(kù)而言,能夠以合理的效率對(duì)針對(duì)信息的OLAP應(yīng) 用請(qǐng)求進(jìn)行處理。在復(fù)雜數(shù)據(jù)庫(kù)中,OLAP應(yīng)用從包含許多行的表內(nèi)的僅幾列搜索、檢索并 整合數(shù)據(jù)。必須針對(duì)沒(méi)有被索引的任意維度或者沒(méi)有預(yù)先計(jì)算的任意聚合對(duì)每個(gè)表進(jìn)行全 面掃描。結(jié)果,針對(duì)相對(duì)復(fù)雜的關(guān)系數(shù)據(jù)庫(kù)的任意分析查詢不太可能都會(huì)在合理時(shí)間內(nèi)產(chǎn) 生結(jié)果數(shù)據(jù)集。例如,圖3A描繪了試圖列出給定客戶所預(yù)定的每本書(shū)的標(biāo)題和銷售價(jià)格的OLTP 查詢50。SELECT從句51以每個(gè)項(xiàng)目一行的方式定義了從客戶表36所選擇的客戶的姓氏 和名字、從書(shū)籍表35所選擇的書(shū)籍標(biāo)題以及從項(xiàng)目表40所選擇的銷售價(jià)格的最終結(jié)果數(shù) 據(jù)集。FROM從句52標(biāo)識(shí)了要在SQL查詢50的執(zhí)行期間訪問(wèn)的每個(gè)表。在該特定示例 中,所述表分別是客戶、訂單、項(xiàng)目和書(shū)籍表36、37、40和35。WHERE從句53標(biāo)識(shí)了要從每個(gè)表檢索的行并且建立連接。在該示例中,第一條件 54要求客戶表36中的CUST0MERID值等于訂單表37中fkCUSTOMERID字段中的值。條件 55和56在訂單表37中的0RDERID字段和項(xiàng)目表40中fkORDERID字段中的值之間以及書(shū) 籍表35中的BOOKID值和項(xiàng)目表40中的fkBOOKID字段之間建立類似的關(guān)系和連接。最后 的條件57建立客戶表36中的⑶ST0MERID字段等于“20”的標(biāo)準(zhǔn)。
如圖4中邏輯示出和已知的,數(shù)據(jù)處理系統(tǒng)58響應(yīng)于SQL查詢50的接收以通過(guò) 對(duì)該SQL查詢進(jìn)行解析、優(yōu)化和執(zhí)行來(lái)產(chǎn)生最終的結(jié)果集合。查詢解析器59使用數(shù)據(jù)字典 60中的信息將每個(gè)SQL查詢轉(zhuǎn)換為一系列SQL類。查詢優(yōu)化器61響應(yīng)于SQL查詢以及來(lái) 自查詢解析器59和數(shù)據(jù)字典60的信息生成查詢計(jì)劃。執(zhí)行單元62對(duì)所述查詢計(jì)劃以及 來(lái)自數(shù)據(jù)字典60和數(shù)據(jù)存儲(chǔ)63的信息進(jìn)行處理以產(chǎn)生結(jié)果集合。通常來(lái)說(shuō),數(shù)據(jù)字典包括具有數(shù)據(jù)元素的定義和表示的元數(shù)據(jù)。在DBMS的背景 下,數(shù)據(jù)字典是表和視圖的集合,并且保持與數(shù)據(jù)元素的定義相關(guān)的信息、用戶名、行和特 權(quán)、模式對(duì)象、完整性約束、存儲(chǔ)過(guò)程和觸發(fā)器、一般數(shù)據(jù)庫(kù)結(jié)構(gòu)和空間分配信息。在該實(shí)施 例中,圖4中的數(shù)據(jù)字典60包括表?xiàng)l目的集合64。集合64中的每個(gè)表?xiàng)l目包括屬性或字 段定義的集合65。集合65中的每個(gè)定義包含每個(gè)屬性或字段的特性的集合66。改變?nèi)罩?7促進(jìn)了所有數(shù)據(jù)插入、刪除和更新操作的持久性。如已知的,諸如改 變?nèi)罩?7的改變?nèi)罩居涗浿T如盤片或光驅(qū)的任意類型的非易失性存儲(chǔ)裝置中的任意改 變。數(shù)據(jù)庫(kù)系統(tǒng)可以在任意處理系統(tǒng)中操作并且使用任意數(shù)量的計(jì)算機(jī)、進(jìn)程、線程 等。每個(gè)應(yīng)用可以被多次復(fù)制或例示以滿足性能或其它考慮。此外,不同系統(tǒng)可以以不同 方式來(lái)處理SQL查詢。圖3B描繪了一種用于圖3A中的SQL查詢50的這樣的查詢計(jì)劃70 ; 并且圖3C和3D描繪了在執(zhí)行單元62對(duì)查詢計(jì)劃70進(jìn)行處理時(shí)將產(chǎn)生的中間和最終結(jié)果 集合。一起參見(jiàn)圖3B和3C,最初的步驟71將定義第一中間結(jié)果集合71A,其包括客戶表36 中⑶ST0MERID值為“20”的記錄。在該特定示例中,該第一結(jié)果集合將僅包含來(lái)自客戶表 36的一條記錄。將顯而易見(jiàn)的是,這樣的選擇將響應(yīng)于姓名信息來(lái)進(jìn)行以包含⑶ST0MERID 值,所述姓名信息在該示例中為客戶Adam Apple。步驟72表示第一連接操作,其中訂單表37將被掃描以識(shí)別與⑶ST0MERID = 20 相對(duì)應(yīng)的任意訂單。因此,步驟72產(chǎn)生第二中間結(jié)果集合72A,其將包含來(lái)自訂單表37的 與Adam Apple相關(guān)的每條記錄以及客戶數(shù)據(jù)。第二連接操作73使用中間結(jié)果集合72A中的主鍵0RDERID值以及項(xiàng)目表40中的 fkORDERID值來(lái)識(shí)別Adam Apple已經(jīng)進(jìn)行了預(yù)定的那些項(xiàng)目。將產(chǎn)生第三結(jié)果集合73A。 第三連接操作74將在步驟73中把那些行進(jìn)行合并以產(chǎn)生結(jié)果集合,其具有步驟73A的結(jié) 果集合中的通過(guò)外部鍵fkBOOKID的值和書(shū)籍表35的主鍵BOOKID的值而來(lái)自書(shū)籍表35的 相應(yīng)書(shū)籍,以產(chǎn)生第四結(jié)果集合74A。投影操作75將該第四結(jié)果集合74A轉(zhuǎn)換為最終的結(jié) 果集合75A,其包括如SQL查詢50所定義的客戶的姓氏和名字以及Adam Apple所購(gòu)買的每 本書(shū)的銷售價(jià)格和標(biāo)題。雖然圖3A中SQL查詢50的所需結(jié)果相對(duì)簡(jiǎn)單,但是系統(tǒng)必須訪問(wèn)四個(gè)不同的表 并且處理三個(gè)連接操作以重新組合客戶實(shí)體并且提取相應(yīng)的書(shū)籍標(biāo)題。此外,客戶實(shí)體的
每個(gè)部分存在于不同表中,使得必須利用低效的隨機(jī)訪問(wèn)來(lái)獨(dú)立訪問(wèn)每個(gè)訂單和每個(gè)項(xiàng)目。作為更具分析性的查詢的示例,圖5A描繪了假設(shè)書(shū)籍價(jià)格和項(xiàng)目?jī)r(jià)格不同的情 況下用于按州獲取書(shū)籍的平均現(xiàn)金折扣的SQL查詢80。SQL查詢80包括SELECT語(yǔ)句81, 其識(shí)別兩個(gè)要素,即州代碼和所計(jì)算的現(xiàn)金折扣值。所述折扣值被建立為圖2的書(shū)籍表35 的LIST屬性所記錄的書(shū)籍定價(jià)和項(xiàng)目表40中的SALE屬性所記錄的實(shí)際銷售價(jià)格之間的現(xiàn)金差值。在該特定的SQL查詢中,F(xiàn)ROM語(yǔ)句82識(shí)別客戶表36、訂單表37、書(shū)籍表35和 州表41。WHERE語(yǔ)句83建立了四個(gè)條件,由此以與關(guān)于圖3A所描述的相同方式建立了適 當(dāng)?shù)年P(guān)系。GR0UPBY語(yǔ)句84涉及對(duì)所要分組的多個(gè)列的處理。這使得能夠利用一條命令對(duì) 多個(gè)列執(zhí)行整合功能。最后的結(jié)果集合產(chǎn)生一個(gè)兩列報(bào)告。一列包含州名;而另一列則包 含針對(duì)該州客戶的所有銷售的平均現(xiàn)金折扣。圖5B描繪了與圖3B所示類似的用于對(duì)圖5A中的SQL查詢80進(jìn)行處理的過(guò)程。 在該示例中,WHERE從句定義了產(chǎn)生所需結(jié)果所必需的四個(gè)連接。更具體地,查詢計(jì)劃90 最初將識(shí)別客戶表36。第一連接操作91將響應(yīng)于圖5A中WHERE從句83的第一元素關(guān)于 在CUST0MERID值將客戶表36和訂單表37連接起來(lái)。第二連接操作92將把操作91所產(chǎn) 生的數(shù)據(jù)集合與項(xiàng)目表40連接起來(lái)。第三連接操作93接著將基于連接操作92的輸出以 及來(lái)自書(shū)籍表35的相應(yīng)值產(chǎn)生結(jié)果集合。最后的連接操作94將把連接操作93所產(chǎn)生的 結(jié)果集合與州表41中的數(shù)據(jù)相結(jié)合。投影操作95將生成州代碼、書(shū)籍價(jià)格和項(xiàng)目?jī)r(jià)格的 值。整合操作96將基于州代碼生成折扣價(jià)格的平均值并且在97產(chǎn)生結(jié)果集合。如將顯而 易見(jiàn)的,一旦構(gòu)建了查詢計(jì)劃90,執(zhí)行單元63將處理查詢計(jì)劃90并生成指定的結(jié)果集合。雖然圖5A中SQL查詢80的所需結(jié)果僅對(duì)三列進(jìn)行運(yùn)算并且似乎相對(duì)簡(jiǎn)單,但是 系統(tǒng)必須處理四個(gè)連接操作,這是因?yàn)樗璧臄?shù)據(jù)存在于五個(gè)獨(dú)立的表中。即使連接操作 相對(duì)有效的實(shí)施方式也需要顯著的系統(tǒng)資源。隨著表的大小增加,連接實(shí)現(xiàn)也會(huì)受到影響。 當(dāng)必須處理大量連接操作時(shí),處理延遲會(huì)增加,有時(shí)會(huì)達(dá)到不可接受的水平。盡管存在這些 問(wèn)題,但是大多數(shù)數(shù)據(jù)庫(kù)繼續(xù)在緊密遵循關(guān)系邏輯數(shù)據(jù)模型的規(guī)范化表中存儲(chǔ)數(shù)據(jù),作為 由序列行和屬性列構(gòu)成的多個(gè)相關(guān)的表。表之間的邏輯關(guān)系通常不影響數(shù)據(jù)在表中實(shí)際存 儲(chǔ)的方式。數(shù)據(jù)庫(kù)系統(tǒng)必須執(zhí)行連接來(lái)為所有的表建立關(guān)系,并且需要大量的隨機(jī)訪問(wèn)來(lái) 匹配相關(guān)的部分。另一種在諸如圖1和2所示的各種表中存儲(chǔ)數(shù)據(jù)的方法認(rèn)識(shí)到了之前的問(wèn)題,并 且提出通過(guò)垂直定位表的所有列來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)的表。當(dāng)處理OLAP應(yīng)用時(shí),這優(yōu)化了用于檢 索的數(shù)據(jù)。例如,F(xiàn)rench的美國(guó)專利No. 5794229(1998)公開(kāi)了這樣的存儲(chǔ)方案。該系統(tǒng) 使用諸如圖1所示的傳統(tǒng)邏輯關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)表。相反,不同于如本說(shuō)明書(shū)圖2所示 的以傳統(tǒng)的行結(jié)構(gòu)存儲(chǔ)數(shù)據(jù),所述系統(tǒng)僅通過(guò)屬性名稱以列存儲(chǔ)數(shù)據(jù)。每一列包括以相鄰 的方式在數(shù)據(jù)頁(yè)面上進(jìn)行布置的多個(gè)單元(即,特定記錄的列值),在本公開(kāi)中圖1的背景 下,表34至37、40和41中的每個(gè)表將以列配置進(jìn)行存儲(chǔ)。響應(yīng)于查詢,該系統(tǒng)僅分析感興趣數(shù)據(jù)的那些列并且使用優(yōu)化器來(lái)選擇表的連接 順序。所述系統(tǒng)不對(duì)由查詢很不感興趣的信息所構(gòu)成的基于行的數(shù)據(jù)頁(yè)面進(jìn)行檢索。如果 不是完全包含,所檢索的基于列的頁(yè)面也將很大程度上包含查詢所感興趣的信息。這允許 更大的塊I/O傳輸以及由此更快的執(zhí)行OLAP類型的查詢。由于僅有主鍵和外部鍵列中的 數(shù)據(jù)需要檢索和連接,所以每個(gè)連接操作的執(zhí)行都可以有所改善。然而,所有的列都需要被 連接。因此,連接操作的數(shù)量根據(jù)屬性的數(shù)量而不是表的數(shù)量進(jìn)行增長(zhǎng)?;诹械南到y(tǒng)僅 對(duì)于低投射性(projectivity)和低選擇性的查詢良好工作。換句話說(shuō),這些系統(tǒng)適用于僅 有一些屬性被投影,并且來(lái)自大比例的行的數(shù)據(jù)被使用的查詢。執(zhí)行每個(gè)表訪問(wèn)許多屬性 的查詢將會(huì)是非常低效的,原因在于其需要對(duì)相同表中的所有屬性執(zhí)行許多連接。因此,即 使處理最為簡(jiǎn)單的OLTP查詢也會(huì)是非常低效的。例如,僅檢索圖1和2中的客戶表36中的一行也需要取出均位于不同列中的7個(gè)屬性值。Sah等人的美國(guó)專利No. 7024414(2006)也公開(kāi)了列數(shù)據(jù)的存儲(chǔ)。該系統(tǒng)將表的數(shù) 據(jù)解析為值的列。每列被格式化為數(shù)據(jù)流以便作為數(shù)據(jù)的連續(xù)帶傳輸?shù)酱鎯?chǔ)裝置。公開(kāi)了 單列和多列存儲(chǔ)結(jié)構(gòu)。每列被存儲(chǔ)為作為壓縮數(shù)據(jù)的連續(xù)帶的數(shù)據(jù)流而與存儲(chǔ)裝置的頁(yè)面 大小無(wú)關(guān)。這些方法通過(guò)對(duì)關(guān)于使用模式的查詢處理的存儲(chǔ)進(jìn)行優(yōu)化而提供優(yōu)勢(shì),所述使用 模式諸如訪問(wèn)許多行的幾個(gè)完整列的OLAP應(yīng)用。然而,它們對(duì)OLTP查詢進(jìn)行處理時(shí)低效。 此外,為了組合單個(gè)完整實(shí)體,必須利用隨機(jī)訪問(wèn)從分立的二進(jìn)制表檢索每個(gè)屬性。從而使 用水平存儲(chǔ)方案的系統(tǒng)處理OLAP查詢低效,而使用垂直存儲(chǔ)方案的系統(tǒng)處理OLTP查詢低 效。H^j "Weaving Relations for Cache Performance" (Ailamaki ^A, Proc 27th VLDB Conf. Rome, 2001)的文章描述了又一種可替選的數(shù)據(jù)存儲(chǔ)方案。在傳統(tǒng)的N元存儲(chǔ)模 型(NSM)中,數(shù)據(jù)表的行在存儲(chǔ)器中跨頁(yè)面分布。所描述的分區(qū)屬性交叉(PAX)系統(tǒng)將每 個(gè)頁(yè)面中的數(shù)據(jù)轉(zhuǎn)換為垂直分區(qū)以改善緩存利用和性能。然而,丟失了行格式的數(shù)據(jù);僅存 在數(shù)據(jù)的一個(gè)副本。為了重構(gòu)行,需要在包含所述行的頁(yè)面內(nèi)的垂直分區(qū)之間執(zhí)行“小型連 接”。小型連接由于其并不必考慮超過(guò)一個(gè)頁(yè)面而帶來(lái)最少的成本。查詢響應(yīng)要求系統(tǒng)掃 描每個(gè)頁(yè)面,并且取出或者檢索查詢所定義的每個(gè)屬性的垂直分區(qū)。滿足條件的行或記錄 被識(shí)別并重構(gòu)。雖然本文描述了由于這種改變而導(dǎo)致的性能提升,但是任何這樣的系統(tǒng)仍 然必須處理所有的連接,所有連接將利用根據(jù)NSM方案存儲(chǔ)的數(shù)據(jù)庫(kù)進(jìn)行處理。此外,處理 單個(gè)屬性仍然需要取出并處理其中數(shù)據(jù)表的行所存在的頁(yè)面的完整集合。所提出的一種降低連接操作的成本是使用之前所定義的物化(materialized)視 圖而不是使用基礎(chǔ)表來(lái)對(duì)查詢進(jìn)行應(yīng)答。物化視圖表示預(yù)先計(jì)算的查詢結(jié)果,其被存儲(chǔ)為 具體的表并且可以隨時(shí)間根據(jù)原始的基礎(chǔ)表進(jìn)行更新。Galindo-Legaria等人的美國(guó)專利 No. 6510422(2003)、Larson等人的美國(guó)專利No. 6850933(2005)和Colby等人的美國(guó)專利 No. 6199063(2001)公開(kāi)了使用物化視圖以便對(duì)查詢進(jìn)行應(yīng)答的類似方法,其也被稱作“視 圖利用”問(wèn)題。也就是說(shuō),所述方法是通過(guò)對(duì)已經(jīng)以連接格式進(jìn)行存儲(chǔ)的物化視圖進(jìn)行處理 來(lái)減少應(yīng)答給定查詢所需的連接操作的數(shù)量。Lohman等人的美國(guó)專利No. 6356889(2002) 和Tao的美國(guó)專利No. 7191169(2007)給出了針對(duì)相關(guān)的“視圖選擇”問(wèn)題的若干種方法,其 中選擇一組要物化的視圖以使得估算給定查詢集合的成本最低并且使得視圖保持在預(yù)先 定義的存儲(chǔ)空間約束之內(nèi)。物化視圖方法能夠針對(duì)所物化的這些連接削減連接操作成本。 然而,這是以很大的確定、維護(hù)和存儲(chǔ)視圖集合的成本所實(shí)現(xiàn)的,并且將其應(yīng)用僅局限于大 多數(shù)資源密集的查詢。此外,由于物化視圖以高度非規(guī)范化的形式存儲(chǔ)數(shù)據(jù),所以它們趨于 消耗大量的存儲(chǔ)空間而使得問(wèn)題甚至更加嚴(yán)重。另一篇題為"A Case for Fractured Mirrors”的文章(Ramamurthy 等,Proc. 28th VLDB Conf. ,Hong Kong, 2002)描述了一種數(shù)據(jù)庫(kù)鏡像存儲(chǔ)方案,其中數(shù)據(jù)依據(jù)NSM模型和 分解存儲(chǔ)模型(DSM)進(jìn)行存儲(chǔ)。對(duì)兩個(gè)盤片進(jìn)行鏡像。在一種方法中,第一盤片以NSM格 式存儲(chǔ)數(shù)據(jù)的主要副本;第二盤片則根據(jù)DSM格式存儲(chǔ)數(shù)據(jù)的主要副本。在另一種方法中, 跨兩個(gè)物理鏡像存儲(chǔ)數(shù)據(jù)的分段以在兩個(gè)副本之間實(shí)現(xiàn)更好的負(fù)載平衡。例如,如果系統(tǒng) 包括按照NSM和DSM模型存儲(chǔ)的數(shù)據(jù),則第一鏡像盤片可以存儲(chǔ)來(lái)自NSM模型的第一分段NSMO以及來(lái)自DSM模型的第二分段DSM1。相反,第二鏡像盤片將存儲(chǔ)來(lái)自DSM模型的第 一分段DSMO和來(lái)自NSM模型的第二分段NSMl。雖然該系統(tǒng)提供了每個(gè)存儲(chǔ)分段的復(fù)制副 本,但是其主要目標(biāo)是合并替代其它RAID鏡像方案的鏡像方案,并且其中針對(duì)不同的目的 而使用不同的方案(一種用于OLAP類型的負(fù)載而另一種則用于OLTP負(fù)載)。該系統(tǒng)還必 須對(duì)將利用根據(jù)NSM方案存儲(chǔ)的數(shù)據(jù)庫(kù)進(jìn)行處理的所有連接進(jìn)行處理。需要一種數(shù)據(jù)庫(kù)管理系統(tǒng),其為復(fù)雜數(shù)據(jù)庫(kù)產(chǎn)生高吞吐量并且對(duì)OLTP和OLAP查 詢兩者的響應(yīng)進(jìn)行優(yōu)化,并且能夠處理針對(duì)信息的日益復(fù)雜的請(qǐng)求、日益復(fù)雜的數(shù)據(jù)模型 以及日益大量的數(shù)據(jù)。還需要一種數(shù)據(jù)庫(kù)管理系統(tǒng),其使得存儲(chǔ)器特別是盤片存儲(chǔ)器中對(duì) 連接的處理最小化、使得順序訪問(wèn)最大化并且使得隨機(jī)訪問(wèn)操作最小化,同時(shí)維持?jǐn)?shù)據(jù)的 兩個(gè)完整副本。

發(fā)明內(nèi)容
因此,本發(fā)明的目標(biāo)是提供一種提供高吞吐量的數(shù)據(jù)庫(kù)管理系統(tǒng)和方法。本發(fā)明的另一個(gè)目標(biāo)是提供一種數(shù)據(jù)庫(kù)管理系統(tǒng)和方法,其以兩個(gè)維度或存儲(chǔ)方 案存儲(chǔ)表數(shù)據(jù)以便優(yōu)化性能和吞吐量。本發(fā)明的再一個(gè)目標(biāo)是提供一種數(shù)據(jù)庫(kù)管理系統(tǒng)和方法,表數(shù)據(jù)通過(guò)其被存儲(chǔ)在 沿兩個(gè)維度組織的數(shù)據(jù)結(jié)構(gòu)中。本發(fā)明的又一個(gè)目標(biāo)是提供一種數(shù)據(jù)庫(kù)管理系統(tǒng)和方法,表數(shù)據(jù)通過(guò)其被存儲(chǔ)在 兩個(gè)數(shù)據(jù)集合中,所述兩個(gè)數(shù)據(jù)集合中的每一個(gè)以不同方式進(jìn)行組織由此使得能夠針對(duì)特 定使用模式進(jìn)行順序訪問(wèn)。本發(fā)明的再一個(gè)目標(biāo)是提供一種數(shù)據(jù)庫(kù)管理系統(tǒng)和方法,其中以經(jīng)修改的行格式 存儲(chǔ)數(shù)據(jù)的第一副本,并且以列格式存儲(chǔ)數(shù)據(jù)的另一副本。本發(fā)明的再一個(gè)目標(biāo)是提供一種數(shù)據(jù)庫(kù)管理系統(tǒng)和方法,通過(guò)其傳統(tǒng)查詢被轉(zhuǎn)換 為查詢計(jì)劃,所述查詢計(jì)劃確定是訪問(wèn)以經(jīng)修改的行格式的數(shù)據(jù)副本還是以列格式的數(shù)據(jù) 副本。本發(fā)明的再一個(gè)目標(biāo)是提供一種數(shù)據(jù)庫(kù)管理系統(tǒng)和方法,其中以嵌入連接信息的 經(jīng)修改的行格式存儲(chǔ)數(shù)據(jù)副本。實(shí)現(xiàn)本發(fā)明的最佳方式依據(jù)本發(fā)明的第一方面,一種數(shù)據(jù)庫(kù)管理系統(tǒng)包括用于邏輯數(shù)據(jù)庫(kù)模型的數(shù)據(jù)的 數(shù)據(jù)庫(kù)存儲(chǔ),所述邏輯數(shù)據(jù)庫(kù)模型包括至少一個(gè)表群組,其中每個(gè)表群組包括一個(gè)根表以 及與其相關(guān)的至少一個(gè)其它表,并且其中每個(gè)邏輯表被表征為具有屬性列和數(shù)據(jù)行。所述 數(shù)據(jù)庫(kù)存儲(chǔ)包括第一和第二數(shù)據(jù)存儲(chǔ)。所述第一數(shù)據(jù)存儲(chǔ)以第一維度定位在多個(gè)存儲(chǔ)器位 置中的數(shù)據(jù)庫(kù)中的所有數(shù)據(jù),其中所述多個(gè)存儲(chǔ)器位置中的每一個(gè)包括來(lái)自根表中一行的 所有數(shù)據(jù)以及來(lái)自與那一個(gè)根表行的數(shù)據(jù)相關(guān)的該表群組中的其它表的所有相關(guān)數(shù)據(jù)。該 存儲(chǔ)方案允許對(duì)該根表行及其在其它相關(guān)表中的其相關(guān)行中的所有數(shù)據(jù)進(jìn)行順序訪問(wèn)。所 述第二數(shù)據(jù)存儲(chǔ)以第二維度在多個(gè)存儲(chǔ)器位置中定位所述數(shù)據(jù)庫(kù)中的所有數(shù)據(jù),其中每個(gè) 存儲(chǔ)器位置包括來(lái)自數(shù)據(jù)庫(kù)中的屬性中的一個(gè)的所有數(shù)據(jù)以及所有的相應(yīng)值,由此允許對(duì) 每個(gè)屬性中的數(shù)據(jù)進(jìn)行順序訪問(wèn)。依據(jù)本發(fā)明的另一方面,對(duì)邏輯數(shù)據(jù)庫(kù)模型中所包含的數(shù)據(jù)生成數(shù)據(jù)結(jié)構(gòu),所述邏輯數(shù)據(jù)庫(kù)模型具有處于不同關(guān)系的表和數(shù)據(jù)字典?;谒鰯?shù)據(jù)字典中的數(shù)據(jù)從邏輯數(shù) 據(jù)庫(kù)中的表形成表群組,對(duì)于每個(gè)表群組,包括根表和與其相關(guān)的表。為所有表群組創(chuàng)建第 一數(shù)據(jù)存儲(chǔ)單元,在其中以第一維度存儲(chǔ)所述數(shù)據(jù)庫(kù)的數(shù)據(jù),其中多個(gè)存儲(chǔ)器位置中的每 一個(gè)包括來(lái)自所述根表中一行的所有數(shù)據(jù)以及來(lái)自相關(guān)表的相關(guān)數(shù)據(jù),由此允許對(duì)該根表 行和相關(guān)表行中的所有數(shù)據(jù)進(jìn)行順序訪問(wèn)。創(chuàng)建第二數(shù)據(jù)存儲(chǔ)單元,用于以第二維度在多 個(gè)存儲(chǔ)器位置中存儲(chǔ)數(shù)據(jù)庫(kù)中的數(shù)據(jù),其中每個(gè)存儲(chǔ)器位置包括來(lái)自所述數(shù)據(jù)庫(kù)中屬性的 所有數(shù)據(jù)以及所有的相應(yīng)值,由此允許對(duì)每個(gè)屬性存儲(chǔ)器位置中的數(shù)據(jù)進(jìn)行順序訪問(wèn)。依據(jù)本發(fā)明的又一個(gè)方面,對(duì)邏輯數(shù)據(jù)庫(kù)進(jìn)行查詢,所述邏輯數(shù)據(jù)庫(kù)具有處于不 同關(guān)系的根表和相關(guān)表以及數(shù)據(jù)字典,所述數(shù)據(jù)字典識(shí)別數(shù)據(jù)庫(kù)中的每個(gè)表以及該表的表 群組。每個(gè)表包括列中的屬性以及行中的數(shù)據(jù)。第一數(shù)據(jù)存儲(chǔ)單元以第一維度存儲(chǔ)數(shù)據(jù)庫(kù) 中的數(shù)據(jù),其中多個(gè)存儲(chǔ)器位置中的每一個(gè)包括來(lái)自所述根表的一行的所有數(shù)據(jù)以及來(lái)自 所述相關(guān)表的相關(guān)數(shù)據(jù)。第二數(shù)據(jù)存儲(chǔ)單元以第二維度在多個(gè)存儲(chǔ)器位置中存儲(chǔ)所述數(shù)據(jù) 庫(kù)中的數(shù)據(jù),其中每個(gè)存儲(chǔ)器位置包括來(lái)自所述數(shù)據(jù)庫(kù)中的屬性中的一個(gè)的所有數(shù)據(jù)以及 所有的相應(yīng)值。響應(yīng)于所述查詢,識(shí)別所述查詢中的表群組和表。解析查詢包括將數(shù)據(jù)字典 所提供的表群組中的表與所識(shí)別的查詢表相比較。提取所述查詢中的包含在所述數(shù)據(jù)庫(kù)和 查詢共用的表中的屬性列表。該信息使得能夠識(shí)別多種處理選項(xiàng)中的一個(gè)。在所選擇的選 項(xiàng)下進(jìn)行處理的期間,獲取滿足與所述表群組相關(guān)的查詢的那些部分的中間結(jié)果集合。通 過(guò)組合中間結(jié)果集合獲得最終結(jié)果集合。


所附權(quán)利要求特別指出并清楚地要求本發(fā)明的主題。通過(guò)結(jié)合附圖閱讀以下詳細(xì) 描述,本發(fā)明的各種目標(biāo)、優(yōu)勢(shì)和新穎特征將更為全面地變得顯而易見(jiàn),在附圖中相同的附 圖標(biāo)記指代相同的部分,其中圖1描繪了現(xiàn)有技術(shù)的用于樣本數(shù)據(jù)庫(kù)的典型關(guān)系圖,所述樣本數(shù)據(jù)庫(kù)包括作 者、書(shū)籍、客戶、訂單、項(xiàng)目和州表;圖2呈現(xiàn)了現(xiàn)有技術(shù)中圖1的每個(gè)表的數(shù)據(jù)圖表,其具有一些代表性數(shù)據(jù);圖3A描繪了用于從圖1和2所示的系統(tǒng)檢索感興趣數(shù)據(jù)的特定SQL查詢;圖3B 描繪了現(xiàn)有技術(shù)的系統(tǒng)通過(guò)其解釋命令的查詢計(jì)劃;并且圖3C和3D共同描繪了在執(zhí)行圖 3B的查詢計(jì)劃期間所產(chǎn)生的中間結(jié)果集合和最終結(jié)果集合;圖4是公開(kāi)用于實(shí)現(xiàn)根據(jù)現(xiàn)有技術(shù)的數(shù)據(jù)庫(kù)的系統(tǒng)單元的典型配置的功能框圖;圖5A描繪了用于從圖1和2所示的系統(tǒng)檢索感興趣數(shù)據(jù)的另一特定SQL查詢;并 且圖5B描繪了現(xiàn)有技術(shù)中用于圖5A的SQL查詢的查詢計(jì)劃;圖6是公開(kāi)用于實(shí)現(xiàn)本發(fā)明的系統(tǒng)單元的一個(gè)實(shí)施例的功能框圖;圖7是依據(jù)本發(fā)明的第一維度的數(shù)據(jù)庫(kù)的存儲(chǔ)方案的邏輯描繪;圖8是依據(jù)本發(fā)明的第二維度的數(shù)據(jù)庫(kù)的存儲(chǔ)方案的邏輯描繪;圖9是公開(kāi)在使用本發(fā)明期間所生成的數(shù)據(jù)字典的功能框圖;圖IOA和IOB是用于產(chǎn)生圖7和8的存儲(chǔ)方案的過(guò)程的流程圖;圖IlA至IlE是理解圖IOA和IOB的過(guò)程時(shí)有用的狀態(tài)圖;圖12至12F共同公開(kāi)了具有圖2所示的數(shù)據(jù)的圖7的存儲(chǔ)方案的實(shí)施方式;
圖13公開(kāi)了具有圖2所示的數(shù)據(jù)的圖8的存儲(chǔ)方案的實(shí)施方式;圖14、14A、14B和14C描繪了用于開(kāi)發(fā)和執(zhí)行在本發(fā)明的數(shù)據(jù)庫(kù)管理器中有用的 查詢計(jì)劃的過(guò)程;圖15A描繪了圖14的方法所開(kāi)發(fā)的用于圖3A的查詢的查詢計(jì)劃;并且圖15B描 繪了在執(zhí)行圖3A的查詢期間將生成的各種結(jié)果集合;圖16描繪了圖14的方法所開(kāi)發(fā)的用于圖5A的查詢的查詢計(jì)劃;圖17是用于更新數(shù)據(jù)庫(kù)的流程圖;圖18是表示用于產(chǎn)生本發(fā)明的存儲(chǔ)方案的替選方式的XML文檔;以及圖19是表示來(lái)自根據(jù)圖18中的信息所組織的圖2的數(shù)據(jù)庫(kù)的實(shí)際數(shù)據(jù)的XML文 檔。
具體實(shí)施例方式以上對(duì)現(xiàn)有技術(shù)的數(shù)據(jù)庫(kù)管理系統(tǒng)的組織和操作的描述將有助于理解本發(fā)明及 其優(yōu)勢(shì)。通過(guò)首先描述基礎(chǔ)體系和存儲(chǔ)方案的邏輯表示,并接著通過(guò)描述特定數(shù)據(jù)庫(kù)的方 案以及通過(guò)其處理查詢的過(guò)程,能夠最好地理解本發(fā)明。更具體地,圖6至IlE以邏輯層面 呈現(xiàn)了這樣的系統(tǒng)。圖12A至13描繪了整合圖2中的數(shù)據(jù)的第一和第二存儲(chǔ)方案的特定 實(shí)施方式。圖14至16描繪了系統(tǒng)通過(guò)其將圖3A所示的SQL查詢轉(zhuǎn)換為查詢計(jì)劃的過(guò)程。 隨后在圖17至19中對(duì)用于更新數(shù)據(jù)庫(kù)中的信息的過(guò)程以及可替選的XML實(shí)施方式進(jìn)行了 描述?;A(chǔ)體系圖6是合并本發(fā)明的數(shù)據(jù)庫(kù)管理系統(tǒng)100的一種實(shí)施方式的功能框圖。在該基本 層面,系統(tǒng)100與圖4的系統(tǒng)類似,并且包括作為組件的查詢解析器101、數(shù)據(jù)字典102、查 詢處理器103和改變?nèi)罩?05。如將會(huì)顯而易見(jiàn)的,這些系統(tǒng)組件中每一個(gè)的特定實(shí)施方式 將隨本發(fā)明的特定實(shí)施方式而改變。不同于圖4中的系統(tǒng),在該實(shí)施例中,查詢處理器103 根據(jù)其所開(kāi)發(fā)的查詢計(jì)劃與第一維度的數(shù)據(jù)存儲(chǔ)單元106、第二維度的數(shù)據(jù)存儲(chǔ)單元107 或其二者進(jìn)行交互。第一和第二維度的數(shù)據(jù)存儲(chǔ)單元106和107中的每一個(gè)存儲(chǔ)所有數(shù)據(jù), 但是根據(jù)不同的存儲(chǔ)方案進(jìn)行存儲(chǔ)。結(jié)果,雖然是根據(jù)不同的存儲(chǔ)方案,但是本發(fā)明通過(guò)保 持?jǐn)?shù)據(jù)的兩個(gè)副本而提供了數(shù)據(jù)冗余。第一維度的數(shù)據(jù)存儲(chǔ)單元106第一維度的數(shù)據(jù)存儲(chǔ)單元106以“水平”方案存儲(chǔ)數(shù)據(jù)使得數(shù)據(jù)易于訪問(wèn)。如圖 7所示,第一或“水平”存儲(chǔ)容器中的數(shù)據(jù)被表征為從最粗糙的“容器”通過(guò)“集群”和“集 群行”到最精細(xì)的“屬性”按粒度排列。這些術(shù)語(yǔ)和短語(yǔ)中的每一個(gè)對(duì)應(yīng)于圖1和2所示的 邏輯數(shù)據(jù)庫(kù)中的某個(gè)部分?!凹盒小睂?duì)應(yīng)于邏輯表中的一行并且包含該行中的所有數(shù)據(jù)。 “集群”包含相關(guān)的集群行?!叭萜鳌卑o定表群組的所有集群。如應(yīng)用到圖1中的邏輯表示,圖7描繪了用于與圖2中的作者表群組31相對(duì)應(yīng)的 “作者集群”的第一容器110。第二容器111存儲(chǔ)包括來(lái)自表群組32的數(shù)據(jù)的“客戶集群”, 所述表群組32包括客戶表36、訂單表37和項(xiàng)目表40。第三容器112存儲(chǔ)保括來(lái)自表群組 33的數(shù)據(jù)的“州集群”,所述表群組33包括州表41。在容器110中,集群113包含一個(gè)或多個(gè)相關(guān)集群行115的集合114。單個(gè)集群行包含與相應(yīng)表中的一行相對(duì)應(yīng)的所有屬性和值。在每個(gè)集群中,第一集群行取自“根表”,為 了理解本發(fā)明,所述“根表”是其中數(shù)據(jù)獨(dú)立于其它表的數(shù)據(jù)的表。在圖1的邏輯數(shù)據(jù)庫(kù)的 實(shí)施方式中,作者表34、客戶表36和州表41是“根表”。每個(gè)集群行存儲(chǔ)在諸如直接訪問(wèn)的物理存儲(chǔ)裝置之類的順序存儲(chǔ)器的連續(xù)或鄰 接的存儲(chǔ)位置中。優(yōu)選地,并且為了隨后將變得顯而易見(jiàn)的原因,每個(gè)集群還應(yīng)當(dāng)被相鄰存 儲(chǔ)以便通過(guò)在一個(gè)順序讀取操作中獲取彼此相鄰定位的若干結(jié)果點(diǎn)而使得性能最大化。在 一些情況下,將所有集群存儲(chǔ)在容器中的相鄰存儲(chǔ)位置將是有益的。然而,假設(shè)所伴隨的性 能衰減是可接受的,則集群行、集群或容器不必以該方式進(jìn)行存儲(chǔ)。仍然參見(jiàn)圖7,諸如集群行115的每個(gè)集群行包括首部116和主體117。每個(gè)首 部包括描述隨后的主體的內(nèi)容的信息。在該特定實(shí)施方式中,每個(gè)首部包括集群行標(biāo)識(shí)符 (RID)字段120、集群標(biāo)識(shí)符(CID)字段121、行類型字段122、屬性位圖字段123和屬性值 位置矢量字段124。在如通過(guò)將集群行標(biāo)識(shí)符(RID)字段120與行類型字段122進(jìn)行串接的組合中, 字段唯一識(shí)別表群組的指定容器中的行。集群標(biāo)識(shí)符(CID)字段121唯一識(shí)別容器中的集 群。特別地,行類型字段122識(shí)別特定表,并且RID值的順序?qū)?yīng)于該表中行的順序。典 型地,任意表的RID值是表的行編號(hào)。當(dāng)在表中自動(dòng)增量的單個(gè)屬性主鍵可用時(shí),RID字段 120可以存儲(chǔ)該特定行的主鍵值。對(duì)于其它的主鍵實(shí)施方式而言,RID字段120可以由獨(dú)立 計(jì)數(shù)器實(shí)現(xiàn)為添加到所述表的偽列。對(duì)于圖1的數(shù)據(jù)庫(kù)而言,假設(shè)每個(gè)表具有自動(dòng)增量的主鍵,其被用作RID。典型地, CID字段121對(duì)應(yīng)于根表中相應(yīng)行的RID字段120中的值。結(jié)果,集群中的第一行在RID字 段120和CID字段121中具有相同的值。然而,任何任意的值系統(tǒng)都能夠?yàn)镽ID字段120 和CID字段121提供唯一標(biāo)識(shí)符。行類型字段122定義了主體117的數(shù)據(jù)源的性質(zhì)。也就是說(shuō),如果集群行的數(shù)據(jù) 來(lái)自于表,則行類型字段122識(shí)別對(duì)象所對(duì)應(yīng)的特定表。其它行類型值能夠識(shí)別XML歸檔 節(jié)點(diǎn)、圖片、DNA分段、“二進(jìn)制大對(duì)象(blob),,或其它行類型。屬性位圖字段123指示集群行中的每個(gè)屬性是否包含數(shù)據(jù)或空值。屬性值位置矢量字段124中的數(shù)據(jù)指向主體117中的屬性值,諸如屬性值A(chǔ) 125、 屬性值B 126和屬性值C 127。如果集群行中的數(shù)據(jù)順序存儲(chǔ),則矢量可以由地址或者從基 準(zhǔn)地址的偏移量來(lái)定義。第一維度的數(shù)據(jù)存儲(chǔ)106中數(shù)據(jù)的這種結(jié)構(gòu)提供了較大的優(yōu)勢(shì)。特別地,表群組 中的所有記錄以關(guān)系進(jìn)行存儲(chǔ)而沒(méi)有冗余,不需要系統(tǒng)執(zhí)行連接操作來(lái)從特定的表群組獲 得數(shù)據(jù)。例如,作者集群將包含具有作者的姓氏、名字、出生日期和聯(lián)系信息的作者集群行。 RID和CID字段120和121包含相應(yīng)作者的主鍵。下一個(gè)集群行將在CID字段121中具有 相同值,但是在RID字段120中具有新的值,并且將存儲(chǔ)fkAuthorID值、該作者所寫(xiě)的一本 書(shū)的標(biāo)題、定價(jià)、出版日期和描述。該集群將包含該作者所寫(xiě)的每本其它書(shū)籍的其它集群 行。每個(gè)其它集群行將在CID字段121中包含相同值,但是在RID字段120中包含唯一值。 正是這些RID和CID字段120和121允許數(shù)據(jù)根據(jù)圖1所示的隱含關(guān)系進(jìn)行存儲(chǔ),并且準(zhǔn) 備訪問(wèn)與作者及其書(shū)籍相關(guān)的所有信息,而不必執(zhí)行連接操作。如將變得顯而易見(jiàn)的,如果圖1中的表具有“自動(dòng)增量”類型的主鍵,則主鍵值還識(shí)別表的行。結(jié)果,RID值129直接對(duì)應(yīng)于主鍵值;也就是說(shuō),RID屬性120等同于所述主 鍵屬性。因此,不必在任意集群行115的主體117中存儲(chǔ)主鍵值。如果主鍵和RID值不同, 例如主鍵是電子郵件地址且不被用作RID,則主鍵屬性被存儲(chǔ)在主體117中。。第二維度的數(shù)據(jù)存儲(chǔ)單元107現(xiàn)在參見(jiàn)圖8,第二維度的數(shù)據(jù)存儲(chǔ)單元107也包括容器。在特定實(shí)施方式中,這 些是“列容器”。對(duì)于根據(jù)圖8的存儲(chǔ)方案所存儲(chǔ)的每個(gè)表屬性組合存在一個(gè)列容器。每個(gè)列容器130包括首部131,其具有列名稱字段132、列類型字段133、數(shù)據(jù)類型 字段134和附加索引字段135。列名稱字段132唯一識(shí)別列容器。一種識(shí)別方法包括將表 名稱和屬性進(jìn)行串接。例如,列名稱字段132中的AUTHOR:LASTNAME將其與另一屬性的另 一列區(qū)分開(kāi)來(lái),即使所述另一列具有相同的字段名,即⑶STOMERLASTNAME列容器。圖6中 的數(shù)據(jù)字典102包含該信息。列類型字段133指示該字段的數(shù)據(jù)的結(jié)構(gòu)。各種構(gòu)造的示例包括固定長(zhǎng)度或可變 長(zhǎng)度的字段以及固定長(zhǎng)度的代碼表。圖6中的數(shù)據(jù)字段102包含該信息。仍然參見(jiàn)圖8,數(shù) 據(jù)類型字段134也使用數(shù)據(jù)字典的信息來(lái)識(shí)別數(shù)據(jù)的性質(zhì),所述數(shù)據(jù)進(jìn)而識(shí)別該字段的存 儲(chǔ)的性質(zhì)。正常情況下,列中的所有值將是允許非常有效的壓縮的相同數(shù)據(jù)類型。字符串 和長(zhǎng)整數(shù)是數(shù)據(jù)類型的示例。附加索引字段135識(shí)別針對(duì)該屬性存在哪些索引,并且屬性 可以不具有索引,或者具有一個(gè)或多個(gè)索引。例如,日期數(shù)據(jù)字段可以具有被優(yōu)化以便檢索 日期范圍的一個(gè)索引以及被優(yōu)化以便找出特定日期的另一個(gè)索引。對(duì)于具有其中值范圍相對(duì)較小的“性別”等屬性的列而言,代碼表137指示每個(gè)代 碼及其含義。例如,在性別代碼表中,“0”可以指示男性而“1”則為女性。屬性跨幅位置矢 量140在正常情況下隨可變長(zhǎng)度的數(shù)據(jù)類型使用。所述矢量中的每個(gè)位置是指向?qū)嶋H數(shù)據(jù) 的直接或間接指針。列數(shù)據(jù)字段141包含根據(jù)首部131中所定義的格式的數(shù)據(jù)。列容器的主要特征在于其能夠通過(guò)作為列鄰接地存儲(chǔ)每個(gè)屬性的值集合而被優(yōu) 化以用于順序訪問(wèn)。也就是說(shuō),字符串?dāng)?shù)據(jù)可以以一種配置進(jìn)行存儲(chǔ),而代碼數(shù)據(jù)可以以另 一種配置進(jìn)行存儲(chǔ)以便改善訪問(wèn)。列容器的另一優(yōu)勢(shì)在于能夠以高度壓縮的格式在列容器 中存儲(chǔ)數(shù)據(jù)。特別地,列類型字段133定義了數(shù)據(jù)的不同結(jié)構(gòu),每種結(jié)構(gòu)被設(shè)計(jì)為列中的容 納特定數(shù)據(jù)類型以及數(shù)據(jù)的某些特征。例如,固定長(zhǎng)度數(shù)據(jù)的稀疏列可以利用定義了包括 BITMAP的構(gòu)造以識(shí)別哪些行包括非空值的列類型字段133以及僅存儲(chǔ)這些行的非空值的 列數(shù)據(jù)字段141。第二維度的數(shù)據(jù)存儲(chǔ)單元107中的列容器共同提供了數(shù)據(jù)庫(kù)的副本,該副本獨(dú)立 于第一維度的數(shù)據(jù)存儲(chǔ)單元106中的副本。也就是說(shuō),不同于基于如現(xiàn)有技術(shù)中的索引的 某個(gè)標(biāo)準(zhǔn)檢索特定的行,列被設(shè)計(jì)為有效檢索能夠作為查詢的結(jié)果集合的一部分進(jìn)行處理 的原始表的垂直部分。如之前所提到的,表的RID字段識(shí)別該表中的行。列結(jié)構(gòu)要求RID始終識(shí)別相應(yīng) 的列位置。也就是說(shuō),如果客戶_訂單_項(xiàng)目群組中的根表的RID為“20”,則與客戶表相 關(guān)聯(lián)的每個(gè)列容器中的第20行必須對(duì)應(yīng)于客戶表第20行中的數(shù)據(jù)。因此,如果RID屬性 120等同于主鍵屬性,則不必為主鍵創(chuàng)建容器。如果主鍵和RID值不相同,則主鍵屬性存儲(chǔ) 在相應(yīng)的列容器中。對(duì)于圖1的數(shù)據(jù)庫(kù)而言,第二維度的數(shù)據(jù)存儲(chǔ)單元107包括22列而不 是28列,原因在于圖2中的每個(gè)表具有被用作RID的自動(dòng)增量的主鍵。
形成數(shù)據(jù)庫(kù)如之前所提到的,SQL是為數(shù)據(jù)庫(kù)設(shè)計(jì)者提供到數(shù)據(jù)庫(kù)管理系統(tǒng)前端的熟悉界面 的已知和常用標(biāo)準(zhǔn)。存儲(chǔ)數(shù)據(jù)并且處理查詢的后端的任意實(shí)現(xiàn)方式對(duì)于數(shù)據(jù)庫(kù)設(shè)計(jì)者必須 是透明的。如將要論證的,本發(fā)明提供了這樣的透明,由此數(shù)據(jù)庫(kù)設(shè)計(jì)者能夠利用傳統(tǒng)的 SQL查詢與數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行交互,同時(shí)前端和后端定義并填充了根據(jù)圖7和8所示方案 的數(shù)據(jù)庫(kù),由此獲得更好的吞吐量和響應(yīng)。與現(xiàn)有技術(shù)相似,數(shù)據(jù)庫(kù)設(shè)計(jì)者通過(guò)定義表和屬性與合并本發(fā)明的數(shù)據(jù)庫(kù)管理系 統(tǒng)進(jìn)行交互。外部鍵和主鍵定義了如圖1的邏輯表中所示的表之間的關(guān)系。隨著諸如圖1 中的數(shù)據(jù)庫(kù)的邏輯數(shù)據(jù)庫(kù)被定義或更新,本領(lǐng)域中已知的處理構(gòu)建或更新數(shù)據(jù)字典并且更 新表中的數(shù)據(jù)。依據(jù)本發(fā)明的一個(gè)實(shí)施方式,諸如圖9的數(shù)據(jù)字典102的數(shù)據(jù)字典接收如 圖4所示的相同的基本元數(shù)據(jù)。表和屬性被識(shí)別,諸如與作者表34相關(guān)聯(lián)的字典元數(shù)據(jù)部 分34D中所示。本發(fā)明還需要附加信息,所述附加信息識(shí)別“表群組”,并且對(duì)于每個(gè)表群組而言, 其識(shí)別“根表”以及該表群組中的表之間的關(guān)系。該信息促進(jìn)了諸如圖1所示的邏輯數(shù)據(jù) 庫(kù)根據(jù)圖6的第一和第二維度的數(shù)據(jù)存儲(chǔ)單元106和107的各自方案的物理存儲(chǔ)。圖9、 10AU0B和IlA至IlE描繪了將圖1的邏輯表轉(zhuǎn)換為這些各種存儲(chǔ)方案的過(guò)程。首先看圖10A,在創(chuàng)建、刪除或更新關(guān)系模型中的表、關(guān)系或?qū)傩缘娜我鈺r(shí)刻,即 “更新事件”,過(guò)程151在步驟152開(kāi)始。根據(jù)圖IOB所示的步驟,子程序153響應(yīng)于數(shù)據(jù)字 典102中的信息定義表群組?,F(xiàn)在參見(jiàn)圖10B,其更為詳細(xì)地描繪了子程序153,隨后步驟 154從圖9中的字典102檢索關(guān)系數(shù)據(jù)模型,步驟155使用已知方法和圖9的數(shù)據(jù)字典中的 信息構(gòu)建如圖IlA所示的方向圖,其中所述信息包括與主鍵和外部鍵相關(guān)聯(lián)的關(guān)系。在該圖中,“表”等同于“節(jié)點(diǎn)”;而“鏈接”等同于“有向邊”。圖IlA至IlE中的節(jié) 點(diǎn)由其在圖1中的相應(yīng)表的附圖標(biāo)記加上后綴“N”進(jìn)行標(biāo)識(shí);并且有向邊由圖1中相應(yīng)鏈 接的附圖標(biāo)記加上后綴“E”進(jìn)行標(biāo)識(shí)。例如,圖1中的作者表34成為了作者節(jié)點(diǎn)34N,而 鏈接42成為了有向邊42E。在標(biāo)識(shí)了節(jié)點(diǎn)之后,有向邊被定義為從主鍵延伸到外部鍵。例 如,在圖IlA中,有向邊42E從具有其AUTH0RID屬性的作者節(jié)點(diǎn)34N延伸到書(shū)籍節(jié)點(diǎn)35N, 原因在于書(shū)籍表35包含外部鍵fkAUTHORID。下一個(gè)步驟156刪除了任意的查找邊,諸如有向邊45E,現(xiàn)在在圖IlB中被示為虛 線。查找邊的特征在于諸如州表41的查找表和諸如客戶表36的非查找表之間的高平均基 數(shù)。查找表是包含鍵屬性值的基準(zhǔn)表,所述鍵屬性值能夠鏈接到其它數(shù)據(jù)并且不頻繁改變。此后,步驟156定義“根節(jié)點(diǎn)”。“根節(jié)點(diǎn)”被定義為在任意的引導(dǎo)(leading)查找 邊被刪除之后不具有指向它的邊的節(jié)點(diǎn)。在該示例中,步驟156定義了三個(gè)根節(jié)點(diǎn),即作者 節(jié)點(diǎn)34N、客戶節(jié)點(diǎn)36N和州節(jié)點(diǎn)41N。步驟157根據(jù)其“重要性”對(duì)根結(jié)點(diǎn)進(jìn)行排序。典型地,“重要性”依賴于對(duì)每個(gè)表 群組所預(yù)期或測(cè)定的更新訪問(wèn)頻率。出于這里解釋的目的,在圖IlB的圖中所示的結(jié)構(gòu)中, 假設(shè)客戶節(jié)點(diǎn)36N將具有最高的活躍性;作者節(jié)點(diǎn)34N具有下一活躍性級(jí)別,而州節(jié)點(diǎn)41N 具有最低活躍性。步驟160選擇最為重要并且是進(jìn)入循環(huán)的入口的根節(jié)點(diǎn),所述循環(huán)包括 步驟161至164,其對(duì)每個(gè)根節(jié)點(diǎn)以及其它相關(guān)聯(lián)的節(jié)點(diǎn)和有向邊進(jìn)行處理。步驟161沿著有向邊到所有所連接的節(jié)點(diǎn)以創(chuàng)建表群組定義和“定義關(guān)系”?!岸x關(guān)系”對(duì)應(yīng)于每個(gè)群組的形成期間所沿著的有向邊。如隨后將顯而易見(jiàn)的,每個(gè)定義關(guān)系 還對(duì)應(yīng)于在依據(jù)圖IOA進(jìn)行處理時(shí)由于對(duì)表群組的構(gòu)建而從進(jìn)一步處理中消除的連接。在第一次迭代期間,步驟161在客戶節(jié)點(diǎn)36N開(kāi)始并且沿著有向邊43E到達(dá)訂單 節(jié)點(diǎn)37N,并且沿著有向邊46E到達(dá)項(xiàng)目節(jié)點(diǎn)40N。步驟161然后終止,原因在于與項(xiàng)目節(jié) 點(diǎn)40N相關(guān)聯(lián)的僅有的有向邊,即有向邊43E,指向項(xiàng)目節(jié)點(diǎn)40N。所標(biāo)識(shí)的節(jié)點(diǎn)為其相應(yīng)的 表定義群組或“表群組”。在這種情況下,客戶節(jié)點(diǎn)36N、訂單節(jié)點(diǎn)37N和項(xiàng)目節(jié)點(diǎn)40N定義 了客戶表群組165,其包括分別相應(yīng)的客戶、訂單和項(xiàng)目表36、37和40。有向邊43E和46E 建立了兩個(gè)定義關(guān)系,即(1)存儲(chǔ)在圖 9 的訂單表 37D 的屬性中的 fkCUSTOMERID = CUSTOMER: CUST0MERID, 和(2)存儲(chǔ)在項(xiàng)目表 40D 中的 fkORDERID = OREDER. 0RDERID。接著如圖IlC中的虛線所表示的,從該圖中移除與該表群組相關(guān)聯(lián)的節(jié)點(diǎn)和有向 邊。因此,在第一次迭代期間完成步驟162之后,圖中僅剩下作者、書(shū)籍和州表節(jié)點(diǎn)34N、35N 和 41N。由于存在其它的根節(jié)點(diǎn),所以步驟163將控制轉(zhuǎn)換到步驟164,以在步驟164中選 擇重要性順序中的下一個(gè)根節(jié)點(diǎn),即作者根節(jié)點(diǎn)34N。在第二次迭代期間,在該示例中,步驟 161在作者根節(jié)點(diǎn)34N開(kāi)始并且沿著有向邊42E到達(dá)書(shū)籍節(jié)點(diǎn)35N。有向邊43E不再指向 任何其它節(jié)點(diǎn),項(xiàng)目表40N已經(jīng)在形成第一或客戶群組165期間被從圖中移除。因此,當(dāng)該 迭代完成時(shí),出現(xiàn)如圖IlD所示的有向圖。作者節(jié)點(diǎn)34N和書(shū)籍節(jié)點(diǎn)35N現(xiàn)在定義了如圖 IlD所示的第二或作者群組166,其包含具有定義關(guān)系fkAUTHORID = AUTHOR. AUTH0RID的 作者表34和書(shū)籍表35。僅剩余州根節(jié)點(diǎn)41N。在第三次迭代期間,步驟164選擇州節(jié)點(diǎn)41N。由于州節(jié)點(diǎn)41N是獨(dú)立的,所以步 驟161創(chuàng)建如圖IlE中所示的如州節(jié)點(diǎn)41N所定義的第三個(gè)表或州群組167,其僅包括州 表41。由于沒(méi)有剩余的有向邊,所以沒(méi)有定義關(guān)系。圖10B中的步驟163接著轉(zhuǎn)移到步驟 165,其將圖IlE所示的信息傳送到圖10A中的其余過(guò)程,特別地,所述信息是客戶群組、作 者群組和州群組的定義。如果在圖10B的步驟157中所確定的重要性順序有所改變,則表群組定義也將發(fā) 生改變。例如,如果步驟157確定作者表是最重要的根節(jié)點(diǎn),則圖10B中循環(huán)的第一次迭代 將產(chǎn)生具有作者節(jié)點(diǎn)34N、有向邊42E、書(shū)籍節(jié)點(diǎn)35N、有向邊44E和項(xiàng)目節(jié)點(diǎn)40N的作者群 組。將生成相應(yīng)的定義關(guān)系。下一次迭代將會(huì)定義具有客戶節(jié)點(diǎn)36N、有向邊43E和訂單 節(jié)點(diǎn)27N以及單個(gè)定義關(guān)系的客戶表群組。根節(jié)點(diǎn)的順序的確定不是關(guān)鍵的。如果證明了 重要性的順序不是最優(yōu)的,則可以響應(yīng)于所累積的統(tǒng)計(jì)信息對(duì)所述順序進(jìn)行人工或自動(dòng)調(diào) 節(jié)。接下來(lái),控制回到圖10A,由此來(lái)自一系列嵌套循環(huán)的步驟170至174系統(tǒng)地對(duì)子 程序153所獲得的信息進(jìn)行處理。在多次迭代期間,所述嵌套循環(huán)為實(shí)現(xiàn)圖7和8的數(shù)據(jù) 結(jié)構(gòu)的圖6中第一和第二維度的數(shù)據(jù)存儲(chǔ)單元106和107中的每一個(gè)生成容器。對(duì)于圖1 的特定示例而言,在單元106中為每一個(gè)表群組形成容器,而在單元107中為每個(gè)表以及該 表中的屬性生成容器。特別地,步驟170確定是否需要處理任意的更多表群組。最初,所有 的表群組都要被處理,從而選擇一個(gè)。順序不重要。
步驟171使用相應(yīng)的元數(shù)據(jù)為該群組創(chuàng)建新的水平容器數(shù)據(jù)結(jié)構(gòu),所述元數(shù)據(jù)包 括利用例如“長(zhǎng)度”的屬性所存儲(chǔ)的信息以及所定義的關(guān)系。也就是說(shuō),步驟171產(chǎn)生與圖 7所示的作者容器110、客戶容器111和州容器112的數(shù)據(jù)結(jié)構(gòu)類似的數(shù)據(jù)結(jié)構(gòu)。接下來(lái),系統(tǒng)處理表及其屬性。步驟172確定群組中是否有任意的更多表需要處 理。如果沒(méi)有,則控制回到步驟170。如果還有更多表,則步驟173確定該表中是否還有任 意的更多屬性需要處理。如果沒(méi)有,則控制返回到步驟172。如果有,則步驟174為該表中 的每個(gè)屬性創(chuàng)建新的列容器數(shù)據(jù)結(jié)構(gòu),每個(gè)容器具有諸如圖8所示的數(shù)據(jù)結(jié)構(gòu)。如之前所 指出的,對(duì)于圖1所示的邏輯數(shù)據(jù)庫(kù)而言,系統(tǒng)將為作者表34創(chuàng)建4個(gè)列容器,為書(shū)籍表和 客戶表35和36中的每一個(gè)創(chuàng)建5個(gè)列容器,為訂單表37和項(xiàng)目表創(chuàng)建3個(gè)列容器,并且 為州表41創(chuàng)建兩個(gè)列容器。以上對(duì)圖IOA和IOB的描述特別針對(duì)于數(shù)據(jù)庫(kù)的創(chuàng)建。如對(duì)本領(lǐng)域技術(shù)人員將顯 而易見(jiàn)的,過(guò)程151能夠整體或部分適用于處理關(guān)系中的任意改變,或者表的添加、刪除或 修改以及屬性的添加、刪除或修改。其現(xiàn)在將有助于描述依據(jù)本發(fā)明的圖6中用于圖1和2的數(shù)據(jù)庫(kù)的第一維度的數(shù) 據(jù)存儲(chǔ)106中的容器的存儲(chǔ)方案的特定實(shí)施方式。圖12呈現(xiàn)了數(shù)據(jù)存儲(chǔ)單元106的整體 邏輯組織,在如之前所描述的連續(xù)迭代之后,所述數(shù)據(jù)存儲(chǔ)單元106具有由圖IOA中的步驟 171所產(chǎn)生的其所存儲(chǔ)的容器110、111和112。作者容器110包括每個(gè)作者的一個(gè)集群。在 圖2中數(shù)據(jù)的特定實(shí)施方式中,集群180存儲(chǔ)與作者Sam Jones相關(guān)的信息;集群181則存 儲(chǔ)與Barbara Smith相關(guān)的信息。每個(gè)集群具有一個(gè)或多個(gè)集群行。在該示例中,每個(gè)集群包括作者集群行和兩個(gè) 書(shū)籍集群行。在特定應(yīng)用中以及依據(jù)圖IlE的圖,作者集群180包括作者集群行182、書(shū)籍 集群行183和第二書(shū)籍集群行184,數(shù)據(jù)庫(kù)中由該特定作者所寫(xiě)的每本書(shū)籍有一個(gè)書(shū)籍集 群行。Barbara Smith的集群181也包括作者集群行185和兩個(gè)書(shū)籍集群行186和187。雖然圖12A和12B描繪了兩個(gè)集群的細(xì)節(jié),但是以下描述集中于圖12A中的集群 180。作者集群行182包括RID字段、CID字段、集群行類型、屬性位圖、到如集群行中存在 的列出屬性的指針,所有這些都如圖7所示。每個(gè)集群行上部的文本僅是出于解釋的目的。 僅存儲(chǔ)下部的數(shù)據(jù)。在該集群行182中,RID和CID值是相同的,指定對(duì)應(yīng)于圖2中根作者 表34中一行的根集群行。對(duì)于該作者而言,集群行位于列容器中相應(yīng)列的第200行。在該 示例中,所有屬性都具有值,從而所有的屬性位圖都具有值“1”。指針(PTR)字段直接或間 接指向所述屬性位圖所識(shí)別的四個(gè)屬性中的每一個(gè)的值。如之前所描述的,主鍵屬性不存 在于集群行的主體中,這是因?yàn)槠浔挥米鱎ID值,并且其連同集群行類型字段一起識(shí)別唯 一的表和行。集群行182和183中的每一個(gè)都具有不同的RID值,其對(duì)應(yīng)于書(shū)籍表35或作者表 群組165中的書(shū)籍的唯一值。CID字段包括與作者集群行182中的CID字段相同的值。這 將書(shū)籍建立為與作者相關(guān)聯(lián)。PTR字段指向?qū)傩晕粓D所識(shí)別的五個(gè)屬性中的每一個(gè)。圖12B中的集群181的集群行185、186和187中的每一個(gè)都具有與圖12A中的 相應(yīng)集群行182、183和184類似的結(jié)構(gòu)。存在突出本發(fā)明另一特征的一個(gè)差異。根據(jù)圖 2中的數(shù)據(jù),Adam Apple已經(jīng)提供了聯(lián)系信息;Barbara Smith則還沒(méi)有。在現(xiàn)有技術(shù)中, Barbara Smith的聯(lián)系屬性將以“空字段”進(jìn)行存儲(chǔ)。如所示出的,集群182中屬性位圖190中的“聯(lián)系(Contact)”條目包含“1”并且聯(lián)系屬性191包含數(shù)據(jù)。在集群行185中,屬性 位圖中的聯(lián)系條目192包含“0”,并且如193處的虛線所表示的,沒(méi)有為聯(lián)系屬性分配存儲(chǔ) 器空間。該特征消除了存儲(chǔ)和處理聯(lián)系屬性193的空值的需要。如顯而易見(jiàn)的,該特征導(dǎo) 致減少存儲(chǔ)空間并且簡(jiǎn)化數(shù)據(jù)設(shè)計(jì)者的SQL查詢的形成。圖12C、12D和12E呈現(xiàn)了容器111中客戶表群組165的存儲(chǔ)實(shí)施方式,所述容器 111包括來(lái)自圖1和2中客戶、訂單和項(xiàng)目表36、37和40的數(shù)據(jù)。如圖12中所示,客戶容 器111對(duì)于每個(gè)客戶包括一個(gè)集群。在圖2的數(shù)據(jù)的特定實(shí)施方式中,集群194存儲(chǔ)與Adam Apple相關(guān)的信息;集群195則存儲(chǔ)與Bonnie Bird相關(guān)的信息。參見(jiàn)作為代表性示例的圖12C和12D,集群194包括客戶集群行200和對(duì)應(yīng)于Adam Apple的兩個(gè)訂單的兩個(gè)訂單集群行201和202。每個(gè)訂單集群后跟有項(xiàng)目集群行。特別 地,訂單集群行201后跟有兩個(gè)項(xiàng)目集群行203和204,而訂單集群行202后跟有單個(gè)項(xiàng)目 集群行205。Bonnie Bird的集群195的存儲(chǔ)遵循該組織形式。由于Bonnie Bird已經(jīng)為 一本書(shū)作出了一個(gè)訂單,所以集群195包含客戶集群行206、訂單集群207和項(xiàng)目集群208。由于容器167中的州表群組僅具有一個(gè)表,所以存儲(chǔ)如圖12F所示,其中容器167 存儲(chǔ)每個(gè)周的一個(gè)州集群,示出了兩個(gè)州集群210個(gè)211。由于圖IlE在州表群組中僅包括 一個(gè)節(jié)點(diǎn),所以每個(gè)集群由單個(gè)集群行形成。如之前所指出的,圖6中的第二維度的數(shù)據(jù)存儲(chǔ)107對(duì)從圖1的邏輯數(shù)據(jù)庫(kù)中取 得的每個(gè)表_屬性組合存儲(chǔ)一個(gè)容器。如果RID字段包含主鍵值,則不需要對(duì)主鍵屬性存 儲(chǔ)列。每個(gè)容器存儲(chǔ)首部和數(shù)據(jù)。在以下討論中,如上下文所容許的,“首部”和“數(shù)據(jù),, 被用來(lái)定義諸如首部字段的特定字段或者該字段中所包含的信息。圖13描繪了圖1和2 的數(shù)據(jù)庫(kù)的列容器的三個(gè)例示,所述數(shù)據(jù)庫(kù)具有如圖8所示的一般結(jié)構(gòu)。仍然參見(jiàn)圖13,每 個(gè)容器包括“首部”和“數(shù)據(jù)”部分。也就是說(shuō),容器220包括“首部223”和“數(shù)據(jù)” 224 ;容 器221包括首部225和數(shù)據(jù)227,所述首部225具有諸如圖8所示的矢量140的屬性跨幅位 置矢量226 ;容器222包括具有代碼表231的首部230和數(shù)據(jù)232。每個(gè)列容器中的首部包括唯一標(biāo)識(shí)以及與數(shù)據(jù)的特征相關(guān)的信息。在這些例示 中,所述唯一標(biāo)識(shí)包括表名稱和該表中屬性名稱的連接。例如,列容器220的標(biāo)識(shí)為Β00Κ_ LIST。因此,列220包含書(shū)籍表35中所有書(shū)籍的定價(jià)。容器221和222中的每一個(gè)表示客 戶表36中的姓氏和性別屬性,并且分別由CUST_LASTNAME和CUST_GENDER唯一標(biāo)識(shí)。每個(gè)首部定義數(shù)據(jù)特征的部分基于數(shù)據(jù)設(shè)計(jì)者所作出的最初選擇使用來(lái)自圖9 中的數(shù)據(jù)字典的信息。容器220定義固定長(zhǎng)度的長(zhǎng)整數(shù)數(shù)據(jù);容器221定義可變長(zhǎng)度的字 符串?dāng)?shù)據(jù);并且容器222定義具有字符串?dāng)?shù)據(jù)的固定長(zhǎng)度的代碼表。在該實(shí)施方式中,假設(shè)表的主鍵為自動(dòng)增量的計(jì)數(shù)器,從而計(jì)數(shù)器值連續(xù)地識(shí)別 該表中的每一行。例如,容器220的數(shù)據(jù)224中的值“17. 00”是指該表中的行號(hào)“1”。在該 實(shí)施例中,實(shí)質(zhì)上存在與每個(gè)表相關(guān)聯(lián)的計(jì)數(shù)器,其識(shí)別該表中的特定行。必要的是,任意實(shí)施方式要求任意列容器中的數(shù)據(jù)的順序與相同表的其它列容器 以相同次序。對(duì)于相同表的屬性,在列容器中的每一行中將主鍵用作該行中數(shù)據(jù)的指針。這 種形式的標(biāo)識(shí)的使用獨(dú)立于容器中的數(shù)據(jù)。例如,容器221能夠包括具有如“JONES”的共 同姓氏的多個(gè)行。姓氏的每個(gè)實(shí)例將具有唯一的標(biāo)識(shí)符,即客戶表36的主鍵值。
查詢處理現(xiàn)在將參考圖14中用于構(gòu)建查詢計(jì)劃的迭代程序240來(lái)描述圖6中的查詢處理 器103、第一和第二數(shù)據(jù)存儲(chǔ)單元106和107以及圖9中的數(shù)據(jù)字典102之間響應(yīng)于查詢 的交互。查詢處理器103首先在步驟241識(shí)別所述查詢所涉及的所有表群組。接著,包括 步驟和子程序242至245的迭代過(guò)程在242選擇所識(shí)別的表群組。查詢解析器101最初使 用來(lái)自所述查詢和數(shù)據(jù)庫(kù)的信息來(lái)識(shí)別該表群組中的哪些表與分析相關(guān)。接下來(lái)為優(yōu)化階 段,在子程序244中確定將針對(duì)所選擇的表群組訪問(wèn)多少次數(shù)據(jù)庫(kù)并且對(duì)其進(jìn)行處理以獲 得中間結(jié)果集合,所述中間結(jié)果集合具有滿足該表群組的查詢標(biāo)準(zhǔn)的所有數(shù)據(jù)。當(dāng)步驟245 確定了已經(jīng)對(duì)所有相關(guān)表群組進(jìn)行了分析時(shí),連接/處理階段246將各個(gè)中間結(jié)果集合組 合為正式的結(jié)果集合,其包含查詢所請(qǐng)求的信息。圖14B公開(kāi)了解析階段101通過(guò)其確定相關(guān)表的步驟。特別地,步驟250使用根節(jié)點(diǎn)和來(lái)自數(shù)據(jù)字典的定義關(guān)系邊繪制所選擇表群組的 第一圖,由此提供與圖IlC中的客戶表群組165的圖類似的圖,包含客戶節(jié)點(diǎn)36N、訂單節(jié)點(diǎn) 37N和項(xiàng)目節(jié)點(diǎn)40N以及相應(yīng)有向邊43E和46E。步驟251基于查詢中的信息繪制相應(yīng)的第二圖,所述信息諸如以下表1和2所示。 在客戶表群組的情況下,步驟251使用客戶表Tl、訂單表T2和項(xiàng)目表T3以及查詢中的連接 謂項(xiàng)54和55。更為詳細(xì)地,假設(shè)圖3A中的查詢包括表“Ti”和屬性“Aj”,其中“i”和“j”表示數(shù) 字,使得Ti和Aj指定表和每個(gè)表中的屬性,步驟251能夠如下識(shí)別形成查詢的表和屬性表1
查詢識(shí)別
記憶符號(hào)定義屬性
C
記憶符號(hào)定義
Tl客戶表AltblCustomer. FirstName
T2訂單表A2tblCustomer. LastName
T3項(xiàng)目表A3tblBook. Title
T4書(shū)籍表A4tblitem. Sale
A5tblCustomer. CustomerID
A6tblOrder·. fkCustomerID
A7tblOrder·. OrderID
A8tb litem.fkOrderID
A9tblBook.BookID
AlOtb litem.fkBookID
屬性Al至A4取自圖3A中的‘‘Select”語(yǔ)句51 ;表Tl至T4取自“From”語(yǔ)句52
并且屬性A5至AlO取自“Where”語(yǔ)句53中定義謂項(xiàng)的行54至57?!癢here”語(yǔ)句53中的 行57為“選擇性(selectivity) ”謂項(xiàng)。來(lái)自行54至56的連接謂項(xiàng)被表示為表2連接謂項(xiàng)識(shí)別
連接謂項(xiàng)54Tl.A5=T2.A6
連接謂項(xiàng)55T2.A7=T3.A8
連接謂項(xiàng)56T4.A9=T3.AlO步驟252接著分析所述圖以確定哪些表和關(guān)系是兩個(gè)圖所共用的。換句話說(shuō),步 驟252識(shí)別表群組中在查詢中被涉及并且使用數(shù)據(jù)字典102中的定義關(guān)系進(jìn)行連接的那些 表。在該示例中,客戶表群組165的分析識(shí)別了客戶表群組中的所有三個(gè)表以便進(jìn)行檢索。 由于表群組中表的集合的數(shù)據(jù)可以利用其預(yù)先連接的集群從相應(yīng)集群容器中檢索得到,所 以無(wú)需進(jìn)行表間的群組連接操作來(lái)為客戶表群組中各個(gè)表定義關(guān)系??赡芤恍┍韺⒉慌c表 群組中的另一個(gè)表重疊或者不連接到所述另一個(gè)表,在這種情況下,所連接的表形成被獨(dú) 立處理的子群組。在圖14B中,步驟253提取查詢所要訪問(wèn)的所有屬性(0Τ_ΑΤΤ)的列表,并且其包 括在一個(gè)重疊的表(OT)中而且不是主鍵,所述主鍵還用作容器中給定集群的RID。在概念 上,所提取的屬性列表表示列的集合,所述集合應(yīng)當(dāng)被訪問(wèn)以便使用第二維度的數(shù)據(jù)存儲(chǔ) 單元107盤片反應(yīng)時(shí)間和帶寬、存儲(chǔ)器反應(yīng)時(shí)間和帶寬。連接操作成本的評(píng)估是處理的一 個(gè)示例。典型地,這些處理對(duì)一段時(shí)間的系統(tǒng)操作進(jìn)行統(tǒng)計(jì)分析并且定期執(zhí)行步驟253至 255的分析。例如,所述閾值能夠被計(jì)算為來(lái)自表群組的能夠在一個(gè)隨機(jī)操作期間順序讀取 的數(shù)據(jù)百分比。如果帶寬允許在執(zhí)行一個(gè)隨機(jī)讀取所花費(fèi)的時(shí)間讀取所選擇表群組的容器 中30%的集群,則該表群組的閾值可以被設(shè)置在70%。該值接著能夠基于可用統(tǒng)計(jì)進(jìn)行人 工和/或自動(dòng)調(diào)節(jié)。優(yōu)化階段244使用所提取列表中的屬性的數(shù)目以及PIR值作為選擇若干選項(xiàng)之一 的初始標(biāo)準(zhǔn)。在該實(shí)施例中,存在五個(gè)選項(xiàng)。如果在所提取列表中僅存在單個(gè)屬性,則步驟 256轉(zhuǎn)移到步驟257以處理第一選項(xiàng)。由于僅有一個(gè)屬性,所以僅需要掃描單個(gè)垂直容器。 步驟257接著為該表群組產(chǎn)生中間結(jié)果集合。如果存在多于一個(gè)的屬性,則步驟258檢查 PIR值。如果PIR值大于預(yù)先設(shè)置的閾值,則步驟258將控制轉(zhuǎn)換到表示第二選項(xiàng)的步驟 259。特別地,該決定指示圖7的相應(yīng)容器110中高百分比的集群需要被掃描以便獲得結(jié)果 集合,并且所述表群組容器中所有集群的掃描將提供最好的結(jié)果。步驟259通過(guò)對(duì)容器中 的集群行進(jìn)行順序掃描來(lái)執(zhí)行該任務(wù),并且基于該表群組中的信息獲得結(jié)果集合。因此,步 驟259的輸出為具有表群組的滿足該部分給定查詢的數(shù)據(jù)行的中間結(jié)果集合。隨著選擇性增加或者屬性比率0Τ_ΑΤΤ/0Τ下降,PIR值將落到閾值以下。步驟258 轉(zhuǎn)移到步驟260,其執(zhí)行查詢中的任意相關(guān)的非連接謂項(xiàng)由此對(duì)相應(yīng)的垂直列進(jìn)行過(guò)濾。其 返回作為位圖的中間結(jié)果集合,所述位圖表示每個(gè)相關(guān)表中所要被訪問(wèn)的行。步驟261對(duì)步驟260的結(jié)果進(jìn)行分析并且對(duì)若干替選的成本進(jìn)行統(tǒng)計(jì)分析,三種 這樣的替選在圖14B中示出并且表示第三至第五種選項(xiàng)。本發(fā)明上下文中的“成本”是完成 操作所需時(shí)間的估計(jì)。對(duì)存儲(chǔ)器中集群或垂直列的順序掃描的估計(jì)是讀取該數(shù)據(jù)的時(shí)間。 如果所述產(chǎn)生該表群組的結(jié)果集合。在客戶表群組的情況下,所列出的屬性(0Τ_ΑΤΤ)的數(shù) 目標(biāo)識(shí)客戶表36、訂單表37和項(xiàng)目表40中所有的被訪問(wèn)屬性。參見(jiàn)表1,所述列表將包括 屬性A1-A4以及A6、A8和AlO中的每一個(gè)。由于屬性A5和A7中的每一個(gè)均為用作RID的 主鍵,所以不包括它們。屬性A9由于其屬于另一個(gè)表群組而未被包括。在已經(jīng)完成了步驟253的動(dòng)作之后,開(kāi)始選擇所述表群組的處理方法,其中進(jìn)行選擇性的評(píng)估以及表群組中將被訪問(wèn)的數(shù)據(jù)的百分比?,F(xiàn)在參見(jiàn)圖14B,在步驟254中,系 統(tǒng)評(píng)估涉及步驟253的所提取列表中的屬性的非連接謂項(xiàng)的選擇性。在一種方法中,所述 系統(tǒng)檢查所指定的列容器或者非連接謂項(xiàng)中的一個(gè)或多個(gè)屬性的容器。接著,其評(píng)估由預(yù) 期要被選擇的行數(shù)與所述列容器中行的總數(shù)所確定的百分比。當(dāng)存在多個(gè)非連接謂項(xiàng)時(shí), 對(duì)結(jié)果進(jìn)行統(tǒng)計(jì)組合以獲得整體的選擇性評(píng)估。一種簡(jiǎn)單的方法是僅對(duì)一個(gè)表中的每個(gè)經(jīng) 過(guò)濾屬性乘以所評(píng)估的選擇性。選擇性能夠從高選擇性的“0”到低選擇性的“ 1,,改變,“ 1,, 指示與該屬性相關(guān)聯(lián)的所有行都將被涉及。整體選擇性趨于指示將要被訪問(wèn)的根表行或集 群的數(shù)目。以不同方式來(lái)說(shuō),整體選擇性值指示當(dāng)前表群組中需要被訪問(wèn)的集群總數(shù)的百 分比。當(dāng)已經(jīng)在步驟254中確定了整體選擇性時(shí),步驟255計(jì)算總體信息的百分比 (PIR)。PIR值趨于指示出自需要被訪問(wèn)的表群組的容器中數(shù)據(jù)總量的百分比。其被計(jì)算如 下PIR. (ESTIMATED_SELECTIVITY) * OT ATTT0TAL_ATTRIBUTES_IN_0T在圖3A的查詢的情況下并且參見(jiàn)以上的表1,0T ATT = 7并且OT = 22。如果沒(méi) 有選擇性,則PIR = 0. 58。隨著選擇性增加,如圖3Α中僅有一個(gè)客戶被非連接謂項(xiàng)57選擇 的情況,PIR降低為接近于零。步驟258將PIR值與閾值進(jìn)行比較。所述閾值根據(jù)本領(lǐng)域已知的多個(gè)因素和處理 進(jìn)行設(shè)置。所要考慮的因素的示例包括表群組大小、集群或垂直列僅處于一個(gè)盤片上,則所 述時(shí)間取決于到達(dá)第一位置的時(shí)間加上處理該屬性的序列值中的每一個(gè)的時(shí)間。對(duì)于諸如 選項(xiàng)4所涉及的隨機(jī)操作而言,將包括對(duì)屬性的每個(gè)訪問(wèn)的時(shí)間。特別地,選項(xiàng)3計(jì)算順序掃描表群組的水平容器110中的所有數(shù)據(jù)的成本。選項(xiàng)4 計(jì)算順序掃描對(duì)應(yīng)于步驟253中獲得的所提取屬性列表的每個(gè)垂直列容器中的數(shù)據(jù),連接 這些列的成本。選項(xiàng)5計(jì)算從水平容器110隨機(jī)檢索集群的成本。步驟262從步驟261所提供的包括三個(gè)選項(xiàng)的所有選項(xiàng)中選擇具有最低成本的選 項(xiàng)。也可以考慮其它選項(xiàng)。在該實(shí)施例中,步驟263立即開(kāi)始定義中間結(jié)果集合。這在多處理系統(tǒng)中是尤其 有益的,原因在于來(lái)自步驟262的信息能夠立即開(kāi)始操作,并且如果存在多個(gè)表群組,則步 驟263的功能能夠針對(duì)用于并行處理的不同處理系統(tǒng)。能夠使用其它替選。例如,來(lái)自步 驟262的數(shù)據(jù)對(duì)應(yīng)于查詢計(jì)劃中的步驟。這些步驟能夠被緩存。接著,如在查詢計(jì)劃中所 公開(kāi)的,系統(tǒng)能夠順序地處理每個(gè)表群組的信息。這結(jié)束了對(duì)在圖14中的步驟242所選擇的表群組的分析。在圖3Α的特定查詢 中,圖14中的步驟245將控制返回至步驟242以選擇第二表群組,例如,包括作者表34、書(shū) 籍表35和鏈接42的作者表群組。當(dāng)圖14Α中的步驟252將這些圖進(jìn)行重疊時(shí),僅剩下書(shū) 籍表并且感興趣的屬性僅為標(biāo)題屬性。對(duì)于該表群組沒(méi)有非連接謂項(xiàng),從而步驟254不進(jìn) 行過(guò)濾。結(jié)果,在255中計(jì)算的PIR值小于預(yù)先設(shè)置的閾值并且0Τ_ΑΤΤ= 1,從而控制再次 從步驟258轉(zhuǎn)換到步驟260。由于沒(méi)有與垂直列相關(guān)聯(lián)的非連接謂項(xiàng),所以結(jié)果識(shí)別書(shū)籍表中的每個(gè)標(biāo)題。在 這種情況下,步驟261中的分析選擇選項(xiàng)3,由此對(duì)書(shū)籍標(biāo)題(Book =Title)垂直列進(jìn)行掃描。一旦執(zhí)行,來(lái)自該掃描的結(jié)果集合將包括所有的書(shū)籍標(biāo)題并且由此產(chǎn)生所有書(shū)籍的中 間結(jié)果集合。當(dāng)已經(jīng)處理了所有表群組時(shí),步驟245將控制傳送至子程序246,其利用連接/處 理過(guò)程246對(duì)所收集的數(shù)據(jù)進(jìn)行分析并且完成查詢計(jì)劃從而提供最終結(jié)果集合。參見(jiàn)圖14C,步驟264確定在圖14B的過(guò)程已經(jīng)生成的集合中是否剩下多于一個(gè)的 結(jié)果集合。如果剩下兩個(gè)或更多結(jié)果集合,則步驟264轉(zhuǎn)換至步驟265,其選擇最小的剩余 結(jié)果集合;也就是說(shuō),具有最少行數(shù)的結(jié)果集合。步驟267執(zhí)行與對(duì)其具有連接謂項(xiàng)的下一 個(gè)較小結(jié)果集合的連接。所組合的結(jié)果集合替代連接的結(jié)果集合。當(dāng)僅剩下一個(gè)結(jié)果集合 時(shí),執(zhí)行例如歸類、整合的最終處理操作以完成查詢。特別是關(guān)于圖3A中的查詢,最小結(jié)果集合是客戶表群組的結(jié)果集合,原因在于所 述查詢識(shí)別了特定的客戶。對(duì)該信息的處理等同于圖15A中的步驟271和272。如結(jié)果集 合272A所示,中間結(jié)果集合將識(shí)別特定客戶、該客戶所作出的每個(gè)訂單以及針對(duì)每個(gè)訂單 已經(jīng)購(gòu)買的一個(gè)或多個(gè)項(xiàng)目,所述結(jié)果集合272A對(duì)每個(gè)項(xiàng)目具有一行并且具有包括外部 鍵fkBOOKID的來(lái)自客戶表36、訂單表37和項(xiàng)目表40的所有屬性的列。通過(guò)將結(jié)果集合 272A與來(lái)自步驟273的書(shū)籍標(biāo)題結(jié)果集合273A進(jìn)行連接所得到的下一個(gè)結(jié)果集合是產(chǎn)生 結(jié)果集合274A的連接操作274。步驟275產(chǎn)生投影275A,其包含SELECT從句中的所有屬 性。該結(jié)果由步驟276進(jìn)行顯示。能夠通過(guò)將圖3B和15A的查詢計(jì)劃進(jìn)行比較而意識(shí)到該系統(tǒng)的優(yōu)勢(shì)。利用本發(fā) 明,初始步驟271包括客戶容器中的所有集群。在步驟272通過(guò)選項(xiàng)4選擇具有CustomerID =20的值提供第一中間結(jié)果集合272A。沒(méi)有發(fā)生連接操作,而在圖3B中,需要兩次連接來(lái) 產(chǎn)生相當(dāng)?shù)慕Y(jié)果集合。如圖3B中的步驟74中的相應(yīng)連接,執(zhí)行連接274以產(chǎn)生第二中間 結(jié)果集合274A,區(qū)別在于僅有所需的標(biāo)題(TITLE)列被處理而不是全部的書(shū)籍表。如之前 所提到的,書(shū)籍表的RID值等同于主鍵B00KID。因此,由于列容器中的書(shū)籍標(biāo)題的順序?qū)?應(yīng)于RID值,所以其在邏輯上能夠被認(rèn)為是一個(gè)兩列的表,其中第一列是BOOKID屬性而第 二列是標(biāo)題(TITLE)屬性。由于第一中間結(jié)果集合272A中每一行中的fkBOOKID值對(duì)應(yīng)于 書(shū)籍表中的主鍵,所以系統(tǒng)基于每個(gè)項(xiàng)目中的fkBOOKID字段與書(shū)籍表中的主鍵B00KID之 間的鏈接執(zhí)行傳統(tǒng)連接。更具體地,連接操作274從第一中間結(jié)果集合272A中的每一行獲 取fkBOOKID值,并且針對(duì)該B00KID值訪問(wèn)書(shū)籍?dāng)?shù)據(jù)273A以提供相應(yīng)的標(biāo)題。然而,步驟274中的連接操作僅處理來(lái)自書(shū)籍表的標(biāo)題屬性列273,而不是如圖3B 中的步驟74那樣,必須從包括所有五個(gè)其它屬性的完整書(shū)籍表35中提取標(biāo)題屬性。因此, 僅對(duì)第五個(gè)數(shù)據(jù)列進(jìn)行處理,由此通過(guò)減少數(shù)據(jù)傳輸時(shí)間以及隨機(jī)訪問(wèn)而降低了成本,從 而允許更快的操作。如在比較了圖3C和15B之后將顯而易見(jiàn)的,本發(fā)明已經(jīng)將結(jié)果集合的 數(shù)目從五個(gè)減少為三個(gè),原因在于圖3B中的查詢計(jì)劃所需要的三次連接減少為圖15A的查 詢計(jì)劃中的一次連接操作。圖5A中的查詢遵循關(guān)于圖14的類似路徑。步驟241識(shí)別所述查詢中所涉及的 所有三個(gè)表群組,即客戶_訂單_項(xiàng)目表群組、作者_(dá)書(shū)籍表群組和州表群組。假設(shè)步驟 242首先選擇客戶-訂單-項(xiàng)目表群組,則步驟250和251的圖將再次相同,由此識(shí)別客戶 表、訂單表和項(xiàng)目表要被重疊。參見(jiàn)圖14B,在所述查詢中所選擇的屬性為CustomerID和 fkSTATEID字段。由于沒(méi)有非連接謂項(xiàng),所以不發(fā)生過(guò)濾。從而在第一次迭代中,步驟253提取7個(gè)屬性的列表,即(l)tbllTEM. SALE,(2) tblCUSTOMER. CUSTOMERID,(3) tblORDER. fkCUSTOMERID(4) tbl ITEM. fkBOOKID(5) tbl ORDER. ORDERID(6) tbl ITEM. fkORDERID(7) tblCUSTOMER. fkSTATEId因此,(2)和(5)是被用作RID值的屬性,并且在所述表群組中有5個(gè)屬性沒(méi)有被 用作RID,所以PIR= 1*5/11,為通常將大于閾值的PIR值。步驟258轉(zhuǎn)移到步驟259,其選 擇第二選項(xiàng)以使用客戶水平容器的順序掃描來(lái)生成客戶_訂單_項(xiàng)目表群組的結(jié)果集合。在下一次迭代中,步驟242選擇作者書(shū)籍表群組并且再次將書(shū)籍表定義為僅有的 感興趣的表。接著,步驟253提取包括tlbBOOK. B00KID和tblBOOK. LIST的列表,從而僅有 一個(gè)沒(méi)有被用作RID的非主鍵屬性,從而PIR = 1*1/9。在第三次迭代中,步驟242選擇州代碼。步驟253提取兩個(gè)屬性的列表,即 tbl STATE. STATEC0DE 和 tblSTATE. STATEID 屬性。在這種情況下,PIR = 1*1/2。在沒(méi)有選擇性的情況下,用于每個(gè)分析的PIR值對(duì)于州表群組分析為0.5,對(duì)于 客戶表群組為0. 11,并且對(duì)于作者表群組為0. 45。假設(shè)閾值被設(shè)置為約0. 4,則客戶-訂 單-項(xiàng)目群組的分析產(chǎn)生具有 CUSTOMERID、fkCUST0MERID、0RDERID、fkB00KID 和 fkSTATEID 屬性的值的結(jié)果集合。該結(jié)果集合將具有與項(xiàng)目表中的項(xiàng)目總數(shù)相等的多個(gè)行。作者表群組中的PIR值小于閾值,并且步驟260沒(méi)有影響,原因在于沒(méi)有與書(shū)籍表 相關(guān)聯(lián)的非連接謂項(xiàng),因此步驟261通過(guò)識(shí)別定價(jià)屬性的垂直列容器的掃描而選擇選項(xiàng)3, 所述定價(jià)屬性中的每一個(gè)將再次識(shí)別書(shū)籍表中的所有書(shū)籍。類似地,將從STATEC0DE屬性 的垂直列容器計(jì)算州代碼結(jié)果集合,其將在邏輯上包括STATEID和STATEC0DE的值并且將 對(duì)于每個(gè)州包含一行。圖16描繪了依據(jù)本發(fā)明所開(kāi)發(fā)的用于圖5A中的查詢的查詢計(jì)劃280。步驟281 從tblSTATE. STATEC0DE垂直容器產(chǎn)生結(jié)果集合。步驟282表示客戶-訂單-項(xiàng)目容器中 所有集群的掃描,這產(chǎn)生包括來(lái)自客戶表的fkSTATEID屬性、來(lái)自項(xiàng)目表的fkBOOKID屬性 以及來(lái)自項(xiàng)目表的SALE屬性的結(jié)果集合283。連接操作284產(chǎn)生結(jié)果集合,其中步驟283 的投影的每一行包括州代碼。接下來(lái),系統(tǒng)使用步驟285對(duì)具有其隱含的B00KID屬性的tblBOOK. LIST垂直容 器進(jìn)行檢索。步驟286與步驟284中的中間結(jié)果集合中的項(xiàng)目表的fkBOOKID屬性相連接。 步驟287將所述結(jié)果集合轉(zhuǎn)換為包括州代碼、價(jià)格和銷售屬性的結(jié)果集合。與圖5B中的步 驟88類似,步驟288基于州代碼提供整合并且生成步驟289的結(jié)果。作為比較,使用圖5B的現(xiàn)有技術(shù)方法處理圖5A中所示的查詢需要四個(gè)連接操作。 依據(jù)本發(fā)明并且如圖16所示,該數(shù)字被減少為兩個(gè)連接操作,并且其通過(guò)使用列容器而被 進(jìn)一步改進(jìn),所述列容器適于使得所取得的數(shù)據(jù)的量以及隨機(jī)訪問(wèn)的數(shù)量最小化。這些示例允許理解使用多個(gè)數(shù)據(jù)存儲(chǔ)單元時(shí)的優(yōu)勢(shì)?,F(xiàn)有技術(shù)的方法使用謂項(xiàng)檢 索表結(jié)構(gòu)的行或者過(guò)濾列。然而,仍然必須執(zhí)行連接操作。為了過(guò)濾沒(méi)有被索引的列,需要對(duì)整個(gè)表進(jìn)行掃描。包括本發(fā)明的系統(tǒng)存儲(chǔ)數(shù)據(jù)的多個(gè)副本。在該特定示例中,水平數(shù)據(jù) 存儲(chǔ)單元中的一個(gè)副本存儲(chǔ)集群在一起的相關(guān)行,由此消除了表群組內(nèi)的連接成本以及對(duì) 不同行的隨機(jī)訪問(wèn)??赡茉诘诙?shù)據(jù)存儲(chǔ)單元中順序地存儲(chǔ)列,使得對(duì)特定列的檢索高度 有效。這些方法在諸如集群的單元中將盡可能多的相關(guān)數(shù)據(jù)進(jìn)行組合以用于查詢所進(jìn)行的 任意動(dòng)作來(lái)優(yōu)化查詢處理。隨著數(shù)據(jù)大小、數(shù)據(jù)模型復(fù)雜度以及查詢復(fù)雜性的增加,該設(shè)計(jì) 中所固有的優(yōu)勢(shì)愈加允許更為有效的實(shí)施方式。數(shù)據(jù)庫(kù)更新本發(fā)明使用直接的方法以用于響應(yīng)于更新事件對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新。如圖17所示, 程序290處理每個(gè)更新事件。最初,與每個(gè)更新查詢相關(guān)聯(lián)的數(shù)據(jù)存儲(chǔ)在圖6中的改變?nèi)?志105中。步驟291檢索需要數(shù)據(jù)改變并且被指定為“數(shù)據(jù)改變?chǔ)帧钡母淖內(nèi)罩緱l目。步驟 292檢查其有效性。步驟293確定改變是否有效。如果無(wú)效,則控制轉(zhuǎn)換至回滾程序284, 其終止任何進(jìn)一步的更新。如果數(shù)據(jù)改變有效,則步驟293轉(zhuǎn)換到步驟295以選擇第一維度的數(shù)據(jù)存儲(chǔ)單元 106或第二維度的數(shù)據(jù)存儲(chǔ)單元107。步驟296對(duì)所選擇的數(shù)據(jù)存儲(chǔ)單元應(yīng)用數(shù)據(jù)改變。該 過(guò)程再次與現(xiàn)有技術(shù)中的相類似,區(qū)別在于步驟296根據(jù)所選擇的數(shù)據(jù)存儲(chǔ)而有所變化。 也就是說(shuō),如果選擇第一維度的數(shù)據(jù)存儲(chǔ)106并且這表示諸如新客戶的新數(shù)據(jù),則步驟296 必須對(duì)該客戶形成包括客戶預(yù)定項(xiàng)目和任意項(xiàng)目條目在內(nèi)的集群。如果沒(méi)用成功應(yīng)用改變,則步驟300將控制轉(zhuǎn)換到回滾程序294。如果其成功,則 步驟301確定是否有任意的其它數(shù)據(jù)存儲(chǔ)單元有待更新。因此,如果這是包括步驟295至 301的循環(huán)的第一次迭代的結(jié)束,則控制轉(zhuǎn)換回到步驟295以選擇第二維度的數(shù)據(jù)存儲(chǔ)單 元107。在這種情況下,通過(guò)向每個(gè)適當(dāng)列容器的結(jié)尾處進(jìn)行添加來(lái)應(yīng)用數(shù)據(jù)。而且,如果 對(duì)第二維度的數(shù)據(jù)存儲(chǔ)單元107的改變成功,則步驟300轉(zhuǎn)換回到步驟301。如果這是第二次迭代,則步驟301將控制轉(zhuǎn)換到步驟302來(lái)確定在數(shù)據(jù)改變?nèi)罩?105中是否剩余有任意的其它改變。一旦所有數(shù)據(jù)改變都已經(jīng)成功完成,則步驟303提交改 變并且終止過(guò)程290。XML 方案合并本發(fā)明的數(shù)據(jù)庫(kù)系統(tǒng)易于適用于存儲(chǔ)和檢索XML數(shù)據(jù),尤其是基于已知XML 數(shù)據(jù)模型的XML數(shù)據(jù),所述已知XML數(shù)據(jù)模型也被稱作XML方案或XSD。圖18公開(kāi)了用于 圖9中的客戶-訂單-項(xiàng)目表群組165的這樣的XML方案。如將變得顯而易見(jiàn)的,所述XML 方案定義了與客戶相關(guān)聯(lián)的所有信息,包括屬性、訂單和項(xiàng)目,并且可以直接從圖9中的數(shù) 據(jù)字典102中進(jìn)行提取而不必進(jìn)行映射。對(duì)應(yīng)于圖7中的容器110的“客戶容器”元素310后跟有分別對(duì)應(yīng)于圖9中的客 戶表36D、訂單表37D和項(xiàng)目表40D的客戶元素313、訂單元素315和項(xiàng)目元素317以及它 們各自的屬性。所述XML方案中的元素順序遵循使用根表和定義關(guān)系在圖9中的數(shù)據(jù)字典 102中所定義的順序。更具體地,所述系統(tǒng)通過(guò)在313包括對(duì)客戶表的引用而識(shí)別并建立 了該結(jié)構(gòu)。這之后為一系列元素名稱操作314以及用來(lái)為圖1中的客戶表36定義屬性的 319。接下來(lái),所述系統(tǒng)在315識(shí)別訂單表并且建立對(duì)應(yīng)于圖1中訂單表37的屬性的各種 元素316。隨后的語(yǔ)句317定義了項(xiàng)目表及其屬性318。如對(duì)于本領(lǐng)域技術(shù)人員將顯而易 見(jiàn)的,圖18中的XML方案便于適用于整體或部分地處理任意關(guān)系改變、表的添加、刪除或修改以及屬性的添加、刪除或修改。圖19描繪了根據(jù)圖18的XML方案的用于客戶-訂單-項(xiàng)目表群組的圖2中的 數(shù)據(jù)樣本。特別地,圖19公開(kāi)了對(duì)應(yīng)于圖12中如圖12C和12D所詳細(xì)示出的ADAM APPLE 194的水平集群的這種XML數(shù)據(jù)194A。塊200A對(duì)應(yīng)于包含客戶數(shù)據(jù)的集群194中的集群 行200;在這種情況下,客戶是Adam Apple。隨后是識(shí)別訂單的另一個(gè)塊201A,其對(duì)應(yīng)于集 群行201。塊203A和204A識(shí)別屬于201A中的訂單的兩個(gè)項(xiàng)目。在這種情況下并且如圖12所示,Adam Apple具有兩個(gè)訂單。因此,塊202A識(shí)別第 二個(gè)訂單,并且塊205A識(shí)別與該第二個(gè)訂單相關(guān)的單個(gè)項(xiàng)目。隨后為對(duì)應(yīng)于集群195的客 戶集群Bonnie Bird 195A的XML數(shù)據(jù),并且其僅通過(guò)參考而被示出。因此,圖19中的XML 數(shù)據(jù)等同于包含所有客戶集群的容器110中的數(shù)據(jù)。類似地,其它表群組被使用得自數(shù)據(jù) 字典150中的信息以及水平容器中的數(shù)據(jù)的XML數(shù)據(jù)文檔和XML方案進(jìn)行表示。相反,給定XML方案,能夠?yàn)閿?shù)據(jù)存儲(chǔ)單元構(gòu)建相應(yīng)的數(shù)據(jù)模型150和數(shù)據(jù)結(jié)構(gòu)。 在這樣的情況下,圖IOA中的步驟153成為冗余的,原因在于分組層級(jí)被預(yù)先定義為XML方 案的一部分。因此,將不需要在圖IlA-E中描繪的圖IOB中的算法。XML方案定義能夠直接 在集群中定義的結(jié)構(gòu)。因此,由于它們包含等同結(jié)構(gòu),所以XML數(shù)據(jù)能夠被直接加載到集群 中。在運(yùn)行時(shí),使用為SQL查詢所開(kāi)發(fā)的方法并且使用兩個(gè)數(shù)據(jù)存儲(chǔ)單元對(duì)針對(duì)所述系統(tǒng) 的XML查詢進(jìn)行內(nèi)部處理,并且結(jié)果作為XML數(shù)據(jù)返回。概況來(lái)講,依據(jù)本發(fā)明構(gòu)建的數(shù)據(jù)庫(kù)管理系統(tǒng)與利用定義屬性的列和存儲(chǔ)值的行 以及相關(guān)的主鍵與外部鍵和查詢之間的鏈接所組織的傳統(tǒng)邏輯表圖相兼容,所述查詢典型 地為例如如圖1所示的SQL查詢。例如在圖6中所示,所述數(shù)據(jù)庫(kù)管理系統(tǒng)處理每個(gè)查詢 以向或從不同存儲(chǔ)單元傳送數(shù)據(jù)。第一存儲(chǔ)單元根據(jù)第一方案存儲(chǔ)完整數(shù)據(jù)庫(kù);第二存儲(chǔ) 單元?jiǎng)t根據(jù)第二方案進(jìn)行存儲(chǔ)。因此,依據(jù)本發(fā)明的目標(biāo),雖然依據(jù)不同的方案,但是數(shù)據(jù) 庫(kù)具有該數(shù)據(jù)庫(kù)的冗余副本。利用第一存儲(chǔ)單元傳送數(shù)據(jù)包括將如圖1所示的圖的模型中的邏輯表轉(zhuǎn)換為表 群組。每個(gè)表群組將包括根表以及直接或間接鏈接到所述根表的其它邏輯表的陣列,例如 圖IOB和IlA至IlE所示。第一存儲(chǔ)單元根據(jù)容器中的一個(gè)使用模式存儲(chǔ)數(shù)據(jù),例如圖7中 所示。每個(gè)容器對(duì)于相應(yīng)根表中的每一行以及直接或間接連接到該表群組的根表的表陣列 中的所有行包括至少一個(gè)所標(biāo)識(shí)的集群。每個(gè)集群中的數(shù)據(jù)包括一個(gè)或多個(gè)集群行,所述 集群行存儲(chǔ)來(lái)自根邏輯表的行的數(shù)據(jù)以及來(lái)自鏈接到根表行中的數(shù)據(jù)的表群組中其它邏 輯表的所有數(shù)據(jù)。第二存儲(chǔ)單元根據(jù)多個(gè)列容器中的第二使用模式存儲(chǔ)數(shù)據(jù),例如圖8中 所示。對(duì)于表和其屬性之一的每個(gè)組合具有一個(gè)列容器。每個(gè)集群行中的數(shù)據(jù)在第一存儲(chǔ)單元中順序地存儲(chǔ),并且邏輯表中相應(yīng)列的每個(gè) 列容器中的屬性值順序地存儲(chǔ)。根據(jù)諸如這里所公開(kāi)的方案而順序地存儲(chǔ)數(shù)據(jù)提供了兩個(gè) 優(yōu)勢(shì)。對(duì)第一存儲(chǔ)單元中的數(shù)據(jù)進(jìn)行優(yōu)化以便基于OLTP查詢所表示的第一使用模式傳輸 數(shù)據(jù),特別是在訪問(wèn)將被限制到根表中的單個(gè)行或有限數(shù)目的行的情況下。對(duì)第二存儲(chǔ)單 元中的數(shù)據(jù)進(jìn)行優(yōu)化以便基于與OLAP查詢相關(guān)聯(lián)的第二使用模式傳輸數(shù)據(jù),所述OLAP查 詢?cè)谡G闆r下僅選擇幾列。順序地而不是隨機(jī)地存儲(chǔ)數(shù)據(jù)提高了吞吐量,原因在于所選 擇的數(shù)據(jù)能夠被順序地檢索。所述數(shù)據(jù)庫(kù)管理系統(tǒng)還包括用于檢索結(jié)果集合的多個(gè)過(guò)程,例如圖14至14C中所示??刂苹卺槍?duì)每個(gè)表群組的請(qǐng)求信息以及將要訪問(wèn)的表群組的估計(jì)比例選擇多個(gè)過(guò)程 中使得結(jié)果集合的接收最大化的一個(gè)過(guò)程。這通過(guò)使得處理查詢以獲得最終結(jié)果集合所需 的時(shí)間最小化而提高了吞吐量。在所述邏輯數(shù)據(jù)庫(kù)中所表示的所有連接操作中,僅需要每 個(gè)表群組的結(jié)果集合之間的連接。這大大減少了連接操作的數(shù)量并且進(jìn)一步改善了響應(yīng)時(shí) 間和吞吐量。本發(fā)明的其它特征提供了額外的吞吐量?jī)?yōu)勢(shì)。例如,在查詢的處理期間動(dòng)態(tài)確定 將要在查詢計(jì)劃中表示的確切序列。如圖14B所示,獲取結(jié)果集合的處理在完成對(duì)每個(gè)表 群組的分析時(shí)立即開(kāi)始。如圖14C所示,所返回的中間結(jié)果集合按照大小進(jìn)行排序。這優(yōu) 化了建立與不同表群組的關(guān)系的那些連接的執(zhí)行。所述數(shù)據(jù)庫(kù)管理系統(tǒng)還適于處理高度復(fù)雜的邏輯數(shù)據(jù)庫(kù)表示,并且適于與諸如 SQL查詢的標(biāo)準(zhǔn)查詢語(yǔ)言進(jìn)行交互。除此之外并且如圖18和19所示,所述系統(tǒng)還與XML進(jìn) 行交互以定義數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)改變。已經(jīng)關(guān)于某些實(shí)施例公開(kāi)了本發(fā)明。將顯而易見(jiàn)的是,可以對(duì)所公開(kāi)的設(shè)備進(jìn)行 許多修改而不會(huì)背離本發(fā)明。例如,該公開(kāi)描述了用于兩個(gè)特定存儲(chǔ)單元的數(shù)據(jù)結(jié)構(gòu)。本 發(fā)明同樣可應(yīng)用于其它數(shù)據(jù)結(jié)構(gòu)。如對(duì)本領(lǐng)域技術(shù)人員將顯而易見(jiàn)的,對(duì)于需要每個(gè)或兩 個(gè)存儲(chǔ)單元的數(shù)據(jù)結(jié)構(gòu)發(fā)生改變的事件的響應(yīng)能夠被修改。對(duì)于SQL查詢的響應(yīng)的公開(kāi)能 夠被修改以提供不同的內(nèi)部處理,并且提供其中對(duì)各個(gè)查詢進(jìn)行處理的序列的改變以及通 過(guò)添加、刪除或修改一個(gè)或多個(gè)選項(xiàng)所進(jìn)行的檢索選項(xiàng)的修改中的改變。
權(quán)利要求
一種數(shù)據(jù)庫(kù)管理系統(tǒng),包括用于存儲(chǔ)邏輯數(shù)據(jù)庫(kù)模型的數(shù)據(jù)的數(shù)據(jù)庫(kù)存儲(chǔ)裝置,所述邏輯數(shù)據(jù)庫(kù)模型包括至少一個(gè)表群組,其中每個(gè)表群組包括一個(gè)根表以及與其相關(guān)的至少一個(gè)其它表,每個(gè)邏輯表被表征為具有屬性列和數(shù)據(jù)行,所述數(shù)據(jù)庫(kù)存儲(chǔ)裝置包括A)第一數(shù)據(jù)存儲(chǔ)裝置,用于以第一維度在多個(gè)存儲(chǔ)器位置中存儲(chǔ)數(shù)據(jù)庫(kù)中的所有數(shù)據(jù),其中所述多個(gè)存儲(chǔ)器位置中的每一個(gè)包括來(lái)自根表中一行的所有數(shù)據(jù)以及來(lái)自與所述一個(gè)根表行的數(shù)據(jù)相關(guān)的表群組中的其它表的所有相關(guān)數(shù)據(jù),由此允許對(duì)所述根表行及其在其它相關(guān)表中的相關(guān)行中的所有數(shù)據(jù)進(jìn)行順序訪問(wèn),和B)第二數(shù)據(jù)存儲(chǔ)裝置,用于以第二維度在多個(gè)存儲(chǔ)器位置中存儲(chǔ)所述數(shù)據(jù)庫(kù)中的所有數(shù)據(jù),其中每個(gè)存儲(chǔ)器位置包括來(lái)自所述數(shù)據(jù)庫(kù)中的屬性中的一個(gè)的所有數(shù)據(jù)以及所有的相應(yīng)值,由此允許對(duì)每個(gè)屬性中的數(shù)據(jù)進(jìn)行順序訪問(wèn)。
2.如權(quán)利要求1所述的系統(tǒng),所述第一和第二數(shù)據(jù)存儲(chǔ)裝置中的存儲(chǔ)器位置中的每一 個(gè)包括鄰接的存儲(chǔ)器位置。
3.如權(quán)利要求1所述的系統(tǒng),還包括數(shù)據(jù)字典,所述數(shù)據(jù)字典填充有來(lái)自所述邏輯數(shù) 據(jù)庫(kù)模型字典的識(shí)別不同表群組中的表之間的關(guān)系的信息,所述第一數(shù)據(jù)存儲(chǔ)裝置中的所 述存儲(chǔ)器位置存儲(chǔ)與所述關(guān)系中的根表的一行和其它表相關(guān)的數(shù)據(jù),從而數(shù)據(jù)結(jié)構(gòu)固有地 依據(jù)所述關(guān)系來(lái)鏈接表,由此消除了每次訪問(wèn)這樣的關(guān)系時(shí)處理連接操作的需要。
4.如權(quán)利要求1所述的系統(tǒng),其中每個(gè)表群組的數(shù)據(jù)存儲(chǔ)在容器中,所述容器包括集 群和集群行,并且其中i)集群行包括具有集群行標(biāo)識(shí)的首部以及用于所述表群組的表中每一行的數(shù)據(jù)的主體; )集群包括所述根表中的一行以及所述表群組中的每個(gè)相關(guān)表中的相應(yīng)行的集群 行,并且iii)容器包括所述表群組的所有集群。
5.如權(quán)利要求4所述的系統(tǒng),其中所述集群行標(biāo)識(shí)包括所述集群以及所述表群組中相 應(yīng)表的標(biāo)識(shí)符。
6.如權(quán)利要求5所述的系統(tǒng),其中每個(gè)表包括其中每行的唯一標(biāo)識(shí)符,并且每個(gè)所述 集群標(biāo)識(shí)符包括根表的唯一標(biāo)識(shí)符的值,并且每個(gè)集群行標(biāo)識(shí)符包括所述表中的行的唯一 標(biāo)識(shí)符。
7.如權(quán)利要求5所述的系統(tǒng),其中每個(gè)首部還識(shí)別與集群行相關(guān)聯(lián)的邏輯數(shù)據(jù)庫(kù)中的表。
8.如權(quán)利要求5所述的系統(tǒng),其中每個(gè)首部還包括屬性標(biāo)識(shí)符,所述屬性標(biāo)識(shí)符用于 識(shí)別集群行中的每個(gè)屬性以及該集群行中是否存在所述屬性。
9.如權(quán)利要求5所述的系統(tǒng),其中每個(gè)首部還包括指向所述集群行的主體中的屬性值 的指針。
10.如權(quán)利要求5所述的系統(tǒng),其中每個(gè)集群行中的信息存儲(chǔ)在鄰接的存儲(chǔ)器位置中。
11.如權(quán)利要求10所述的系統(tǒng),其中每個(gè)集群中的信息存儲(chǔ)在鄰接的存儲(chǔ)器位置中。
12.如權(quán)利要求11所述的系統(tǒng),其中每個(gè)容器中的信息存儲(chǔ)在鄰接的存儲(chǔ)器位置中。
13.如權(quán)利要求2所述的系統(tǒng),其中所述第二數(shù)據(jù)存儲(chǔ)裝置包括表和屬性的每個(gè)組合 的列容器,每個(gè)列容器包括首部和列數(shù)據(jù)。
14.如權(quán)利要求13所述的系統(tǒng),其中每個(gè)首部包括邏輯表的標(biāo)識(shí)和其中一個(gè)屬性。
15.如權(quán)利要求14所述的系統(tǒng),其中所述容器標(biāo)識(shí)由表名稱和屬性名稱的串接所構(gòu)成。
16.如權(quán)利要求14所述的系統(tǒng),其中每個(gè)首部還包括列類型值,所述列類型值識(shí)別所 述屬性的數(shù)據(jù)的結(jié)構(gòu)。
17.如權(quán)利要求16所述的系統(tǒng),其中所述列類型值識(shí)別代碼表,并且所述首部還包括 識(shí)別每個(gè)代碼的值的代碼表字段。
18.如每個(gè)權(quán)利要求所述的系統(tǒng),所述列類型值識(shí)別具有可變長(zhǎng)度的值,所述首部還包 括屬性跨幅位置矢量,所述屬性跨幅位置矢量具有指向列數(shù)據(jù)的位置的指針。
19.如權(quán)利要求14所述的系統(tǒng),其中每個(gè)首部還包括數(shù)據(jù)類型字段,所述數(shù)據(jù)類型字 段指示所述列容器中的數(shù)據(jù)值的性質(zhì)。
20.如權(quán)利要求14所述的系統(tǒng),其中每個(gè)首部還包括屬性跨幅位置矢量,所述屬性跨 幅位置矢量指向所述列數(shù)據(jù)中的特定位置。
21.一種用于對(duì)邏輯數(shù)據(jù)庫(kù)中包含的數(shù)據(jù)生成數(shù)據(jù)結(jié)構(gòu)的方法,所述邏輯數(shù)據(jù)庫(kù)具有 處于不同關(guān)系的表和數(shù)據(jù)字典,所述方法包括步驟A)基于所述數(shù)據(jù)字典中的數(shù)據(jù)從所述邏輯數(shù)據(jù)庫(kù)中的表形成表群組,對(duì)于每個(gè)表群 組,包括根表和與其相關(guān)的表,B)為每個(gè)表群組創(chuàng)建數(shù)據(jù)存儲(chǔ)單元,用于以第一維度存儲(chǔ)所述數(shù)據(jù)庫(kù)的數(shù)據(jù),其中多 個(gè)存儲(chǔ)器位置中的每一個(gè)包括來(lái)自所述根表中一行的所有數(shù)據(jù)以及來(lái)自所述相關(guān)表的相 關(guān)數(shù)據(jù),由此允許對(duì)所述根表行和相關(guān)表行中的所有數(shù)據(jù)進(jìn)行順序訪問(wèn),和C)對(duì)所述表群組中的每個(gè)表和屬性創(chuàng)建另一個(gè)數(shù)據(jù)存儲(chǔ)單元,用于以第二維度在多個(gè) 存儲(chǔ)器位置中存儲(chǔ)所述數(shù)據(jù)庫(kù),其中每個(gè)存儲(chǔ)器位置包括來(lái)自所述數(shù)據(jù)庫(kù)中的屬性的所有 數(shù)據(jù)以及所有的相應(yīng)值,由此允許對(duì)每個(gè)屬性存儲(chǔ)器位置中的數(shù)據(jù)進(jìn)行順序訪問(wèn)。
22.—種對(duì)邏輯數(shù)據(jù)庫(kù)的查詢進(jìn)行響應(yīng)的方法,所述邏輯數(shù)據(jù)庫(kù)具有處于不同關(guān)系的 根表和相關(guān)表以及數(shù)據(jù)字典,所述數(shù)據(jù)字典識(shí)別數(shù)據(jù)庫(kù)中的每個(gè)表以及該表的表群組,其 中所述表中的每一個(gè)包括列中的屬性以及行中的數(shù)據(jù),并且所述數(shù)據(jù)庫(kù)以第一維度存儲(chǔ)在 一個(gè)數(shù)據(jù)存儲(chǔ)單元中,其中多個(gè)存儲(chǔ)器位置中的每一個(gè)包括來(lái)自所述根表的一行的所有數(shù) 據(jù)以及來(lái)自所述相關(guān)表的相關(guān)數(shù)據(jù),并且以第二維度在多個(gè)存儲(chǔ)器位置中存儲(chǔ)在另一個(gè)數(shù) 據(jù)存儲(chǔ)單元中,其中每個(gè)存儲(chǔ)器位置包括來(lái)自所述數(shù)據(jù)庫(kù)中的屬性中的一個(gè)的所有數(shù)據(jù)以 及所有的相應(yīng)值,對(duì)查詢的所述響應(yīng)對(duì)于每個(gè)表群組包括步驟A)識(shí)別所述查詢中的表和表群組,B)通過(guò)將由所述數(shù)據(jù)字典所提供的表群組中的表與所識(shí)別的查詢表相比較來(lái)解析所 述查詢,C)提取所述查詢中包含在所述數(shù)據(jù)庫(kù)和所述查詢共用的表中的屬性的列表,D)響應(yīng)于所提取的屬性的列表識(shí)別多個(gè)處理選項(xiàng)中的一個(gè),和E)處理所選擇的選項(xiàng)以從所述數(shù)據(jù)庫(kù)獲得滿足與所述表群組相關(guān)的所述查詢的那些 部分的中間結(jié)果集合中的數(shù)據(jù),和F)組合所述中間結(jié)果集合以獲得滿足所述查詢的最終結(jié)果集合。
全文摘要
一種數(shù)據(jù)庫(kù)管理系統(tǒng)將來(lái)自多個(gè)邏輯表的數(shù)據(jù)存儲(chǔ)為不同格式的獨(dú)立副本。在一個(gè)特定示例中,所述系統(tǒng)將表組織為表群組并且對(duì)每個(gè)表群組中的表進(jìn)行反規(guī)范化。其還以包括垂直列容器的第二格式對(duì)數(shù)據(jù)進(jìn)行組織,所述垂直列容器存儲(chǔ)一個(gè)屬性的所有數(shù)據(jù),每個(gè)表以及該表內(nèi)的每個(gè)屬性具有一個(gè)列容器。查詢的接收使得系統(tǒng)制定能夠與容器集合中的任一個(gè)或二者進(jìn)行交互的查詢計(jì)劃。
文檔編號(hào)G06F17/30GK101960454SQ200980107197
公開(kāi)日2011年1月26日 申請(qǐng)日期2009年1月6日 優(yōu)先權(quán)日2008年1月7日
發(fā)明者奧里·赫恩施塔特 申請(qǐng)人:奧里·赫恩施塔特
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1