亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

管理可獨立訪問的數(shù)據(jù)單元的存儲的制作方法

文檔序號:6352152閱讀:241來源:國知局
專利名稱:管理可獨立訪問的數(shù)據(jù)單元的存儲的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及管理可獨立訪問的數(shù)據(jù)單元的存儲。
背景技術(shù)
數(shù)據(jù)庫系統(tǒng)可以以多種格式中的任何一種格式來存儲可獨立訪問的數(shù)據(jù)單元或者“記錄”。每個記錄可以對應于諸如信用卡交易之類的邏輯實體,并且典型地具有用于唯一地標識記錄的關(guān)聯(lián)主鍵(key)。記錄可以包括與記錄格式的各個字段相關(guān)聯(lián)的多個值。記錄可以被存儲在一個或多個文件中(例如,平面文件(flat files)或結(jié)構(gòu)化數(shù)據(jù)文件(structured data files),諸如XML文件)。在壓縮數(shù)據(jù)庫系統(tǒng)中,獨立的記錄或者記錄內(nèi)的值在存儲時可以被壓縮,并且在被訪問時可以被解壓縮以減少系統(tǒng)的存儲需求。

發(fā)明內(nèi)容
在一個方面中,一般地,一種管理數(shù)據(jù)的方法包括在輸入設備或端口上接收至少一組可獨立訪問的數(shù)據(jù)單元,每個數(shù)據(jù)單元由鍵值標識,所接收的數(shù)據(jù)單元的鍵值被排序以使得標識在給定的第二數(shù)據(jù)單元之前接收的給定的第一數(shù)據(jù)單元的鍵值在排序次序中比標識給定的第二數(shù)據(jù)單元的鍵值出現(xiàn)得更早;以及處理數(shù)據(jù)單元以在數(shù)據(jù)存儲系統(tǒng)中存儲。所述處理包括存儲多個數(shù)據(jù)塊,所述塊中的一個或更多個的每個是通過組合多個數(shù)據(jù)單元而生成的;對于每個塊提供包括條目的索引,其中所述條目中的一個或更多個使得能夠基于所提供的鍵值來定位包括與包括所提供的鍵值的鍵值范圍相對應的數(shù)據(jù)單元的塊;以及生成與所存儲的塊關(guān)聯(lián)的多個篩選(screening)數(shù)據(jù)結(jié)構(gòu)以便確定包括給定鍵值的數(shù)據(jù)單元被包括在該組可獨立訪問的數(shù)據(jù)單元中的概率,所述多個篩選數(shù)據(jù)結(jié)構(gòu)包括用于篩選所述多個塊中的一個或更多個塊的第一集合的第一篩選數(shù)據(jù)結(jié)構(gòu)、和用于篩選所述多個塊中的一個或更多個塊的第二集合的第二篩選數(shù)據(jù)結(jié)構(gòu)。各方面可以包括以下特征中的一個或更多個。在多個塊的一個或更多個的第二集合中包括的全部數(shù)據(jù)單元具有在排序次序中比在多個塊的一個或更多個的第一集合中包括的數(shù)據(jù)單元的任何鍵值出現(xiàn)得更晚的鍵值。多個篩選數(shù)據(jù)結(jié)構(gòu)中的每個對應于標識在一個或更多個塊的對應集合中存儲的數(shù)據(jù)單元的不同的非重疊鍵值范圍。在累積了在多個塊的一個或更多個塊的第一集合中存儲的第一集合數(shù)據(jù)單元中的預定數(shù)量的區(qū)別鍵值之后生成第一篩選數(shù)據(jù)結(jié)構(gòu),而在接收在多個塊的一個或更多個塊的第二集合中存儲的第二集合數(shù)據(jù)單元的同時生成第二篩選數(shù)據(jù)結(jié)構(gòu)。該方法還包括使用索引和多個篩選數(shù)據(jù)結(jié)構(gòu)來搜索具有給定鍵值的數(shù)據(jù)單元。所述搜索包括對于多個篩選數(shù)據(jù)結(jié)構(gòu)中的每一個檢查指示具有給定鍵值的數(shù)據(jù)單元可能被包括在該組可獨立訪問的數(shù)據(jù)單元中的肯定結(jié)果。該方法還包括響應于對于對應篩選數(shù)據(jù)結(jié)構(gòu)的肯定結(jié)果,搜索索引以確定給定鍵值是否落入跨越被對應篩選數(shù)據(jù)結(jié)構(gòu)所篩選的一個或更多個塊的鍵值范圍內(nèi)。
該方法還包括響應于給定鍵值落入跨越被對應篩選數(shù)據(jù)結(jié)構(gòu)所篩選的多個塊的鍵值范圍內(nèi),搜索索引以找到用于搜索具有給定鍵值的數(shù)據(jù)單元的特定塊。對于給定鍵值,給定篩選數(shù)據(jù)結(jié)構(gòu)確定包括給定鍵值的數(shù)據(jù)單元必定沒有被包括,或者包括給定鍵值的數(shù)據(jù)單元可能被包括。在數(shù)據(jù)單元沒有被包括時給定篩選數(shù)據(jù)結(jié)構(gòu)確定包括給定鍵值的數(shù)據(jù)單元可能被包括的概率取決于數(shù)據(jù)結(jié)構(gòu)的大小。該方法還包括基于標識生成塊所依據(jù)的數(shù)據(jù)單元的區(qū)別鍵值的數(shù)量,而選擇給定篩選數(shù)據(jù)結(jié)構(gòu)的大小。在輸入設備或端口上接收給定數(shù)據(jù)單元之前,標識給定數(shù)據(jù)單元的鍵值對應于與給定數(shù)據(jù)單元關(guān)聯(lián)的一個或更多個字段。
該方法還包括在接收數(shù)據(jù)單元時累積區(qū)別鍵值,并且在接收到該組可獨立訪問的數(shù)據(jù)單元中的數(shù)據(jù)單元之后對所累積的區(qū)別鍵值進行計數(shù)。在輸入設備或端口上接收給定數(shù)據(jù)單元之后,標識該給定數(shù)據(jù)單元的鍵值才被分配給該給定數(shù)據(jù)單元。鍵值是單調(diào)分配的。所有分配的鍵值均有區(qū)別。與所存儲的塊關(guān)聯(lián)的篩選數(shù)據(jù)結(jié)構(gòu)的數(shù)量基于標識該組可獨立訪問的數(shù)據(jù)單元中的數(shù)據(jù)單元的區(qū)別鍵值的數(shù)量、以及與篩選數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)的目標錯誤肯定概率。索引是包括至少第一級別索引和第二級別索引的分層級索引。第一級別索引被劃分為多個條目區(qū)域,其使得能夠基于所提供的鍵值來定位包括與包括所提供的鍵值的鍵值范圍對應的數(shù)據(jù)單元的塊,每個區(qū)域足夠小以便完全容納在與該數(shù)據(jù)存儲系統(tǒng)耦接的存儲器內(nèi)。索引中條目的一個或更多個條目標識與生成對應塊所依據(jù)的數(shù)據(jù)單元對應的鍵值范圍。索引中條目的至少一些中的每個條目標識對應塊的存儲位置。第二級別索引足夠小以完全容納在存儲器內(nèi)。第二級別索引包括用于多個區(qū)域中每個區(qū)域的相應條目。第二級別索引中條目的一個或更多個條目使得能夠基于所提供的鍵值來定位包括與包括所提供的鍵值的鍵值范圍對應的條目的第一級別索引的區(qū)域。在另一方面中,一般地,一種計算機可讀介質(zhì)存儲用于管理數(shù)據(jù)的計算機程序,該計算機程序包括使得計算機執(zhí)行以下操作的指令在輸入設備或端口上接收至少一組可獨立訪問的數(shù)據(jù)單元,每個數(shù)據(jù)單元由鍵值標識,所接收的數(shù)據(jù)單元的鍵值被排序以使得標識在給定的第二數(shù)據(jù)單元之前接收的給定的第一數(shù)據(jù)單元的鍵值在排序次序中比標識給定的第二數(shù)據(jù)單元的鍵值出現(xiàn)得更早;以及處理數(shù)據(jù)單元以在數(shù)據(jù)存儲系統(tǒng)中存儲。所述處理包括存儲多個數(shù)據(jù)塊,所述塊中的一個或更多個的每個是通過組合多個數(shù)據(jù)單元而生成的;對于每個塊提供包括條目的索引,其中所述條目中的一個或更多個使得能夠基于所提供的鍵值來定位包括與包括所提供的鍵值的鍵值范圍相對應的數(shù)據(jù)單元的塊;以及生成與所存儲的塊關(guān)聯(lián)的多個篩選數(shù)據(jù)結(jié)構(gòu)以便確定包括給定鍵值的數(shù)據(jù)單元被包括在該組可獨立訪問的數(shù)據(jù)單元中的概率,所述多個篩選數(shù)據(jù)結(jié)構(gòu)包括用于篩選所述多個塊中的一個或更多個塊的第一集合的第一篩選數(shù)據(jù)結(jié)構(gòu)、和用于篩選所述多個塊中的一個或更多個塊的第二集合的第二篩選數(shù)據(jù)結(jié)構(gòu)。在另一方面中,一般地,一種管理數(shù)據(jù)的系統(tǒng)包括輸入設備或端口,被配置為接收至少一組可獨立訪問的數(shù)據(jù)單元,每個數(shù)據(jù)單元由鍵值標識,所接收的數(shù)據(jù)單元的鍵值被排序以使得標識在給定的第二數(shù)據(jù)單元之前接收的給定的第一數(shù)據(jù)單元的鍵值在排序次序中比標識給定的第二數(shù)據(jù)單元的鍵值出現(xiàn)得更早;以及至少一個處理器,被配置為處理數(shù)據(jù)單元以在數(shù)據(jù)存儲系統(tǒng)中存儲。所述處理包括存儲多個數(shù)據(jù)塊,所述塊中的一個或更多個的每個是通過組合多個數(shù)據(jù)單元而生成的;對于每個塊提供包括條目的索引,其中所述條目中的一個或更多個使得能夠基于所提供的鍵值來定位包括與包括所提供的鍵值的鍵值范圍相對應的數(shù)據(jù)單元的塊;以及生成與所存儲的塊關(guān)聯(lián)的多個篩選數(shù)據(jù)結(jié)構(gòu)以便確定包括給定鍵值的數(shù)據(jù)單元被包括在該組可獨立訪問的數(shù)據(jù)單元中的概率,所述多個篩選數(shù)據(jù)結(jié)構(gòu)包括用于篩選所述多個塊中的一個或更多個塊的第一集合的第一篩選數(shù)據(jù)結(jié)構(gòu)、和用于篩選所述多個塊中的一個或更多個塊的第二集合的第二篩選數(shù)據(jù)結(jié)構(gòu)。在另一方面中,一般地,一種管理數(shù)據(jù)的系統(tǒng)包括用于接收至少一組可獨立訪問的數(shù)據(jù)單元的部件,每個數(shù)據(jù)單元由鍵值標識,所接收的數(shù)據(jù)單元的鍵值被排序以使得標·識在給定的第二數(shù)據(jù)單元之前接收的給定的第一數(shù)據(jù)單元的鍵值在排序次序中比標識給定的第二數(shù)據(jù)單元的鍵值出現(xiàn)得更早;以及用于處理數(shù)據(jù)單元以在數(shù)據(jù)存儲系統(tǒng)中存儲的部件。所述處理包括存儲多個數(shù)據(jù)塊,所述塊中的一個或更多個的每個是通過組合多個數(shù)據(jù)單元而生成的;對于每個塊提供包括條目的索引,其中所述條目中的一個或更多個使得能夠基于所提供的鍵值來定位包括與包括所提供的鍵值的鍵值范圍相對應的數(shù)據(jù)單元的塊;以及生成與所存儲的塊關(guān)聯(lián)的多個篩選數(shù)據(jù)結(jié)構(gòu)以便確定包括給定鍵值的數(shù)據(jù)單元被包括在該組可獨立訪問的數(shù)據(jù)單元中的概率,所述多個篩選數(shù)據(jù)結(jié)構(gòu)包括用于篩選所述多個塊中的一個或更多個塊的第一集合的第一篩選數(shù)據(jù)結(jié)構(gòu)、和用于篩選所述多個塊中的一個或更多個塊的第二集合的第二篩選數(shù)據(jù)結(jié)構(gòu)。各方面可以包括以下優(yōu)點中的一項或更多項。通過壓縮多個記錄的塊,與獨立地壓縮各記錄相比,可以實現(xiàn)更大程度的壓縮。加索引的塊提供了在無需從壓縮記錄的文件的開頭進行解壓縮的情況下訪問給定記錄的能力。塊的大小可以被選擇為足夠大以提供高壓縮,并且足夠小以限制訪問塊中的給定記錄所需的解壓縮量??梢允褂脽o需提供從壓縮塊中的任意位置開始解壓縮的能力的壓縮技術(shù),來壓縮每個塊。因此,可以使用提供大程度壓縮的技術(shù)。通過存儲標識與生成對應塊所依據(jù)的記錄相對應的鍵值范圍的索引,由于該索引不需要對于每個記錄都具有條目,因此該索引可以保持較小(例如,足夠小以容納在相對塊的存儲器中)。索引條目使得能夠定位可以被裝載和解壓縮的一個或更多個塊,以便恢復可以用于搜索期望記錄的記錄集合。將篩選數(shù)據(jù)結(jié)構(gòu)(例如,重疊編碼的簽名或其它類型的位圖)與壓縮塊關(guān)聯(lián)可以指示期望記錄不存在,排除了裝載和解壓縮該壓縮塊以搜索記錄的需要。可以使用自適應技術(shù)來以不使用額外存儲空間的方式遞增地生成篩選數(shù)據(jù)結(jié)構(gòu)??梢允褂酶鞣N技術(shù)來避免錯誤肯定的概率的額外增加,否則通過檢查許多不同的篩選數(shù)據(jù)結(jié)構(gòu)可能引起錯誤肯定的概率的額外增加。為了搜索潛在大的索引,用于生成索引的分層級技術(shù)通過降低需要訪問相對更慢的非本地存儲裝置的次數(shù),而加速了索引搜索。
其它特征和優(yōu)點將從以下描述并且從權(quán)利要求書中變得顯而易見。


圖I是用于存儲和檢索記錄的系統(tǒng)的框圖。圖2A、2B、2C和2D是由該系統(tǒng)處理并在該系統(tǒng)中存儲的數(shù)據(jù)的示意圖。圖3A和3B是示出不同簽名大小的錯誤肯定概率的表格。圖4A和4B是搜索記錄的例程的流程圖。圖5是加索引和搜索模塊的框圖。
具體實施方式

參考圖I,記錄存儲和檢索系統(tǒng)100從一個或更多個源(諸如源A —源C)接受數(shù)據(jù)。數(shù)據(jù)包括可以被表示為可獨立訪問的數(shù)據(jù)單元的信息。例如,信用卡公司可以從各個零售公司接收表示獨立交易的數(shù)據(jù)。每個交易與表示屬性(諸如,顧客姓名、日期、購買量等)的值關(guān)聯(lián)。記錄處理模塊102保證數(shù)據(jù)根據(jù)預定記錄格式而被格式化,從而與交易關(guān)聯(lián)的值被存儲在記錄中。在一些情況下,這可能包括根據(jù)記錄格式轉(zhuǎn)換來自源的數(shù)據(jù)。在其它情況下,一個或更多個源可能提供已經(jīng)根據(jù)記錄格式被格式化的數(shù)據(jù)。記錄處理模塊102根據(jù)標識每個記錄的主鍵值(例如,標識單個記錄的唯一鍵,或者標識記錄的多個更新版本的鍵)將記錄排序,并且將記錄劃分為與主鍵值的非重疊范圍對應的記錄集合。例如,記錄的每個集合可以對應于預定數(shù)量的記錄(例如,100個記錄)。壓縮模塊104將記錄的每個集合壓縮為壓縮數(shù)據(jù)塊。這些壓縮塊被存儲在記錄存儲裝置106 (例如,非易失性存儲介質(zhì),諸如一個或更多個硬盤驅(qū)動器)中的壓縮記錄文件中。系統(tǒng)100還包括加索引和搜索模塊108,其為每個塊提供包括條目的索引114。索引114被用來定位可能包括給定記錄的塊,如下面更詳細描述的。加索引和搜索模塊108還包括篩選數(shù)據(jù)結(jié)構(gòu)116,其被用來確定何時可能需要在記錄存儲裝置106中搜索給定記錄,如下面更詳細描述的。索引114和篩選數(shù)據(jù)結(jié)構(gòu)116可以作為壓縮記錄文件被存儲在相同的存儲介質(zhì)中,或者在一些實現(xiàn)方式中,索引114和篩選數(shù)據(jù)結(jié)構(gòu)116的至少一部分可以被優(yōu)選地存儲在模塊108可訪問的相對更快的本地存儲裝置(例如,諸如動態(tài)隨機訪問存儲器的易失性存儲介質(zhì))中,這是由于索引文件典型地比壓縮記錄文件小得多。在這些實現(xiàn)方式中,索引114和/或篩選數(shù)據(jù)結(jié)構(gòu)116的剩余部分可以被存儲在索引存儲裝置110 (例如,諸如一個或更多個硬盤驅(qū)動器的非易失性存儲介質(zhì))中,直至需要它們并將它們移動到模塊108的本地存儲裝置中。記錄存儲裝置106和索引存儲裝置110可以駐留在相同的存儲介質(zhì)或者在不同的存儲介質(zhì)上。在系統(tǒng)100的替代實現(xiàn)方式中,除了壓縮以外或者替代壓縮,可以使用其它功能來處理記錄的集合以生成塊,以便以某種方式組合記錄(即,使得塊不僅僅是記錄的串連(concatenated)集合)。例如,一些系統(tǒng)可以處理記錄集合以生成加密數(shù)據(jù)的塊。接口模塊112向人和/或計算機代理(諸如代理A-代理D)提供對所存儲的記錄的訪問。例如,接口模塊112可以實現(xiàn)信用卡顧客的在線賬戶系統(tǒng),以監(jiān)視他們的交易。系統(tǒng)100可以處理對滿足各種準則的交易信息的請求,并且可以從存儲在記錄存儲裝置106中的壓縮塊內(nèi)提取對應記錄。
來自一個或更多個源的輸入記錄流在被處理以生成壓縮記錄文件之前,可以被暫時存儲。參考圖2A,系統(tǒng)100接收要被存儲在壓縮記錄文件中的記錄200的集合,并且根據(jù)主鍵的值來對記錄進行排序。主鍵值可以唯一地標識數(shù)據(jù)庫中的可以由一個或更多個記錄表示的給定項目(例如,具有給定主鍵值的每個記錄可能對應于項目的不同更新版本)。該主鍵可以是與記錄的一個或多個現(xiàn)有字段對應的“自然鍵”。如果不存在確保對于每個項目唯一的字段,則主鍵可以是包括記錄的多個字段的合成鍵,所述多個字段一起確?;蛘叻浅?赡軐τ诿總€項目唯一。替代地,主鍵可以是可以在每個記錄被接收到之后分配給該記錄的“合成(synthetic)鍵”。例如,系統(tǒng)100可以將唯一的主鍵值分配為依序遞增的整數(shù),或者某種其它單調(diào)演變的值(例如,時間戳)的序列。在此情況下,表示同一項目的不同版本的記錄可以被分配有不同的復合鍵值。如果使用整數(shù),則可能的主鍵值范圍(例如,如由所使用的比特數(shù)量所確定的)可以足夠大,從而如果主鍵回轉(zhuǎn),則之前被分配了給定主鍵值的任何記錄都可能已經(jīng)從壓縮記錄文件中移除了。例如,舊的交易可能被移除并且被歸檔或丟棄。在圖2A所示的示例中,記錄200被按字母表排序的主鍵值A(chǔ)、AB、CZ···來標識。系統(tǒng)100壓縮具有主鍵值A(chǔ)-DD的N個記錄的第一集合,以生成被標記為塊I的對應壓縮塊。 記錄的下一個集合包括所排序的具有主鍵值DX-GF的N個記錄。壓縮模塊104可以使用多種無損數(shù)據(jù)壓縮算法(例如,Lempel-Ziv型算法)中的任一種。組合每個連續(xù)的壓縮塊以形成壓縮記錄文件202??梢赃x擇用來生成壓縮塊的記錄的數(shù)量N,以便在壓縮效率和解壓縮速度之間折衷。壓縮可以平均地將數(shù)據(jù)的大小減小給定因子R,其取決于正在壓縮的數(shù)據(jù)的特性和正在壓縮的數(shù)據(jù)的大小(例如,當壓縮更多數(shù)據(jù),R典型地更小)。壓縮還可以具有平均大小O的關(guān)聯(lián)開銷(例如,壓縮相關(guān)數(shù)據(jù))。從M個記錄(每個大小X)生成的作為結(jié)果的壓縮記錄文件的平均大小可以被表示為pW7iV"|l (RNX+0),對于大量塊,該表達式可以被近似為RMX+0M/N。因此,在一些情況下,通過減小R并且減小開銷對文件大小的貢獻,N值越大,可以提供更大的壓縮。N值越小則減少了解壓縮給定壓縮塊以訪問可能在該塊中包含的記錄所需的時間。在其他實現(xiàn)方式中,不同壓縮塊可以包括不同數(shù)量的記錄。每個塊可以具有根據(jù)給定范圍的數(shù)量的記錄。例如,第一塊包括具有主鍵值1-1000的記錄,第二塊包括具有主鍵值1001-2000的記錄,等等。在該示例中壓縮塊中記錄的數(shù)量可以不同,這是因為不是每個主鍵值都必須存在(例如,在現(xiàn)有數(shù)字字段被用作自然鍵的情況下)。在一些實現(xiàn)方式中,不同的壓縮塊在一些情況下可以包括目標數(shù)量的記錄,而在例外情況下可以包括更多或更少的記錄。例如,如果記錄的集合以其主鍵值與在排序次序中接下來的記錄的主鍵值不同的記錄結(jié)束,則那些記錄被用來生成壓縮塊。如果記錄的集合以其主鍵值與在排序次序中接下來的記錄的主鍵值相同的記錄結(jié)束,則具有該主鍵值的所有附加記錄被添加到該集合。以此方式,相同的主鍵值不從一個壓縮塊跨到下一個壓縮塊。加索引和搜索模塊108對于每個壓縮塊生成索引文件204中的條目。索引條目包括鍵字段206,其例如通過記錄的對應未壓縮集合中第一個記錄的主鍵來標識每個壓縮塊。條目還包括位置字段208,其標識所標識的壓縮塊在壓縮記錄文件202中的存儲位置。例如,位置字段可以包含以記錄存儲裝置106中絕對地址的形式、或者以從記錄存儲裝置106中壓縮記錄文件202的開頭的地址的偏移的形式的指針。為了搜索壓縮記錄文件202中的給定記錄,模塊108可以基于鍵字段206執(zhí)行索引文件204的搜索(例如,二值搜索)。對于提供的(例如,由代理之一提供的)給定鍵值,模塊108定位包括與包括所提供的鍵值的鍵值范圍對應的記錄的塊。具有所提供的鍵值的記錄可能或者可能不包括在被用來生成所定位的塊的記錄的集合中,但是如果該記錄存在于記錄200中,則由于記錄200是按照主鍵值被排序的,因此必將包括該記錄。模塊108然后解壓縮所定位的塊并且搜索具有所提供的鍵值的記錄。在主鍵值對于每個記錄不唯一的情況下,模塊108可能在壓縮塊中找到具有所提供的鍵值的多個記錄。在鍵字段206包括集合中第一個記錄的主鍵的示例中,模塊108搜索分別具有比所提供的鍵值更早和更晚的鍵值的兩個連續(xù)索引條目,并且返回與具有更早的鍵值的條目對應的塊。在一些情況下,所提供的鍵值可能與索引條目中的鍵值相同,在此情況下,模塊108返回與該條目對應的塊。
在不同的實現(xiàn)方式中,對于索引文件204中的條目而言,存在標識與生成對應塊所依據(jù)的記錄對應的鍵值范圍的不同的方式。如在圖2A中所示的實現(xiàn)方式中,鍵值范圍可以是被用來生成塊的記錄的兩個極端鍵值(例如按字母表順序的主鍵值的排序序列中的第一個和最后,或者按數(shù)字順序的主鍵值的排序序列中的最小值和最大值)。索引條目可以包括定義該范圍的極值的任一個或兩個。在一些實現(xiàn)方式中,如果索引條目包括定義用于給定塊的范圍的最小鍵值,則與壓縮記錄文件中的最后塊關(guān)聯(lián)的最后索引條目也可以包括定義用于該塊的范圍的最大鍵值。然后,當搜索該壓縮記錄文件時,該最大鍵值可以被用來確定何時給定鍵值超出范圍。替代地,鍵值范圍可以是超過被用來生成塊的記錄的鍵值而延伸的范圍。例如,在從具有介于I和1000之間的數(shù)字主鍵值的記錄生成塊的情況下,在記錄中所表示的最小鍵值可能大于I并且在記錄中所表示的最大鍵值可能小于1000。索引條目可以包括定義該范圍的極值I和1000中的任一個或兩個。當在已經(jīng)處理了初始記錄組以生成壓縮記錄文件之后附加記錄來到時,那些記錄可以被存儲在緩存器中并且以未壓縮形式被搜索。替代地,附加記錄組可以被以增量方式處理并且被存儲為可由附加索引文件訪問的附加壓縮記錄文件。在一些情況下,即使壓縮較少數(shù)量的附加記錄可能不提供存儲大小的大量減少,壓縮附加記錄以保持訪問記錄的統(tǒng)一例程仍是有利的??梢砸砸?guī)則的時間間隔(例如,每30秒或者每5分鐘),或者在已經(jīng)接收了預定數(shù)量的附加記錄(例如,每1000個記錄或者每10000個記錄)之后重復地處理附加記錄。如果輸入記錄是基于時間間隔被處理的,則在一些間隔中,可能沒有輸入記錄,或者有全部被壓縮到單個壓縮塊中的較少數(shù)量的記錄。參考圖2B,在已經(jīng)生成了初始壓縮記錄文件202之后接收到附加記錄的示例中,附加壓縮記錄文件210可以被添加到初始壓縮記錄文件202以形成復合壓縮記錄文件211。系統(tǒng)100按照主鍵值對附加記錄排序,并且壓縮N個記錄的集合以生成壓縮記錄文件210的壓縮塊。被標記為塊91的添加文件210中的第一壓縮塊具有主鍵值BA — FF。模塊108生成附加索引文件212,其包括可以被用來搜索在添加文件210中表示的附加記錄的條目。新索引文件212可以被添加到之前的索引文件204。可以添加任何數(shù)量的壓縮記錄文件,以便形成復合壓縮記錄文件。如果加索引和搜索模塊108在復合壓縮記錄文件內(nèi)搜索具有給定鍵值的記錄,則模塊108使用對應的索引文件來搜索每個添加壓縮記錄文件內(nèi)的記錄。替代地,請求給定記錄的代理可以指定要搜索的復合壓縮記錄文件中的壓縮記錄文件的某種數(shù)量(例如,10個最近生成的壓縮記錄文件,或者在前一小時內(nèi)生成的任何壓縮記錄文件)。在給定時間量(例如,每24小時)之后或者在已經(jīng)添加了給定數(shù)量的壓縮記錄文件之后,系統(tǒng)100可以合并文件以生成源自復合壓縮記錄文件的單個壓縮記錄文件和新的對應索引文件。在合并之后,可以搜索單個索引以定位可能包含給定記錄的壓縮塊,產(chǎn)生更高效的記錄訪問。在合并時間,系統(tǒng)100解壓縮所述壓縮記錄文件以恢復對應的排序記錄的集合,按照主鍵值對記錄排序,并且生成新的壓縮記錄文件和索引。由于每個所恢復的記錄集合已經(jīng)被排序,因此通過根據(jù)主鍵值融合之前排序的列表來生成單個排序記錄的集合,可以聞效地對記錄排序。參考圖2C,復合壓縮記錄文件211包括初始壓縮記錄文件202、附加壓縮記錄文件 210、以及多個附加壓縮記錄文件220、221、…,附加壓縮記錄文件220、221、…的數(shù)量取決于已經(jīng)接收到多少附加記錄以及已經(jīng)多么頻繁地處理記錄。每個壓縮記錄文件可以具有關(guān)聯(lián)的索引文件,其可以被用來搜索該文件的壓縮塊中的給定記錄。在該示例中,壓縮記錄文件220之一足夠小從而僅具有單個壓縮塊(塊95),因此不必需要關(guān)聯(lián)的索引文件,但是可以具有指示該塊中的主鍵值的范圍以及其在存儲裝置中的位置的關(guān)聯(lián)數(shù)據(jù)。在合并之后,從不同的添加壓縮記錄文件中恢復的記錄被處理以生成單個壓縮記錄文件230。在單調(diào)分配的主鍵的情況下,不僅在壓縮記錄文件內(nèi)自動地對記錄排序,而且還從一個文件到下一個文件自動地對記錄排序,這排除了合并文件以便在單個索引搜索中訪問記錄的需要。參考圖2D,系統(tǒng)100接收通過按照到達順序為記錄作為主鍵而分配的連續(xù)整數(shù)標識的記錄250的集合。因此,記錄250按照主鍵被自動排序。初始壓縮記錄文件252包括壓縮塊,在該示例中每個壓縮塊包括100個記錄,并且索引文件254包括用于壓縮塊中第一個記錄的主鍵值的鍵字段256、以及標識對應的存儲位置的位置字段258。由于在初始壓縮記錄文件252已經(jīng)被生成之后到達的記錄將自動地具有在排序次序中更晚的主鍵值,因此添加壓縮記錄文件260和對應的索引文件262不需要被合并來使能基于單個索引搜索的高效記錄訪問。例如,索引文件262可以簡單地被添加到索引文件254,并且這兩個索引可以一起被搜索(例如,在單個二值搜索中)以在壓縮記錄文件252或260的任一個中定位壓縮塊。復合壓縮記錄文件261可以可選地被合并以消除可能已經(jīng)被插入在壓縮記錄文件252結(jié)尾的不完整塊。在這樣的合并中,僅僅第一文件252中最后的壓縮塊將需要被解壓縮,并且取代融合記錄的未壓縮集合,記錄的集合可以簡單地被合并以形成新的記錄的排序集合,所述新的記錄的排序集合要被劃分為100個記錄的集合,其然后再被壓縮以形成新的壓縮記錄文件。使用連續(xù)的整數(shù)合成主鍵值的另一優(yōu)點是如果記錄將基于主鍵值被分區(qū),則由于在鍵值之間沒有空隙,因此分區(qū)可以被自動地平衡??梢允褂枚喾N技術(shù)中的任何技術(shù)來更新記錄,并且使可能存在于壓縮記錄文件中的記錄的任何之前版本無效。在一些情況下,記錄無需被獨立地移除或更新(例如,日志、交易、電話呼叫)。在這些情況下,例如從壓縮記錄文件的開頭開始,在預定數(shù)量的壓縮塊的組中移除并且丟棄或存檔舊的記錄。在一些情況下,可以移除整個壓縮記錄文件。在一些情況下,通過附加新的更新記錄以存儲在壓縮塊中來更新記錄的一個或更多個值,并且記錄的之前接收的版本(具有相同的主鍵值)可以被保留存儲在不同的壓縮塊中。然后可能存在記錄的多個版本,并且使用某種技術(shù)來確定哪個是記錄的有效版本。例如,在任何壓縮記錄文件中出現(xiàn)的最后版本(最近接收的)可以隱含地或明確地被指示為有效版本,并且任何其它版本是無效的。在此情況下搜索具有給定主鍵的記錄可以包括找到由該主鍵標識的在出現(xiàn)次序上最后的記錄。替代地,通過寫入“無效記錄”(其指示記錄的任何之前本均不是有效的),可以在無需附加記錄的新版本的情況下使記錄無效。系統(tǒng)100通過不同的處理來傳達對存儲在記錄存儲裝置106中的壓縮記錄文件的訪問??梢允褂枚喾N同步技術(shù)中的任一種來傳達對一個或更多個壓縮記錄文件內(nèi)的壓縮塊的訪問。系統(tǒng)100確保修改文件的任何處理(例如,通過添加或合并數(shù)據(jù))不相互影響。例如,如果在合并正在發(fā)生時新記錄到達,則系統(tǒng)100可以等待直至合并處理完成,或者可以生成壓縮塊并且在將它們添加到現(xiàn)有壓縮記錄文件之前將它們暫時存儲。從壓縮記錄文件進行讀取的處理可以裝載文件的完整部分,并且可以忽略可能經(jīng)過修改的任何不完整部 分。系統(tǒng)100存儲使得能夠基于記錄的除了主鍵之外的屬性來搜索記錄的附加數(shù)據(jù)。壓縮記錄文件的輔索引包括基于被指定為輔鍵的屬性的值而提供一個或更多個主鍵值的信息。被指定為輔鍵的每個屬性可以與對應的輔索引關(guān)聯(lián)。例如,每個輔索引可以被組織為表格,該表格具有按照關(guān)聯(lián)的輔鍵排序的行。每行包括輔鍵值以及包括該輔鍵值的記錄的一個或更多個主鍵值。因此,如果代理發(fā)起對包括給定輔鍵值的任何記錄的搜索,則系統(tǒng)100查找(多個)主鍵以用于在壓縮記錄文件的索引中搜索包括所述(多個)記錄的(多個)壓縮塊。輔索引可以較大(例如,記錄的數(shù)量的量級),并且在一些情況下可以存儲在存儲壓縮記錄文件的存儲介質(zhì)中。在一些情況下,被指定為輔鍵的屬性的值可以對于每個記錄唯一。在這種情況下,在輔鍵和主鍵之間存在一一對應,并且接口模塊112可以向代理呈現(xiàn)輔鍵屬性,好像它是
主鍵一樣。在新的壓縮記錄文件被添加到復合壓縮記錄文件時,可以更新每個輔索引。替代地,對于每個壓縮記錄文件,輔鍵可以與不同的輔索引關(guān)聯(lián),并且當壓縮記錄文件被合并時輔索引可以被合并到單個輔索引中。篩選數(shù)據(jù)結(jié)構(gòu)116可以與壓縮記錄文件關(guān)聯(lián),以便確定包括給定屬性值的記錄被包括在文件的壓縮塊中的概率。例如,使用重疊編碼簽名(OES)來作為篩選數(shù)據(jù)結(jié)構(gòu),使得系統(tǒng)100能夠確定具有給定鍵值(主鍵或輔鍵)的記錄必定不存在(“否定”結(jié)果),還是具有給定鍵值的記錄具有出現(xiàn)的概率(“肯定”結(jié)果)。對于肯定結(jié)果,系統(tǒng)訪問適當?shù)膲嚎s塊以便檢索記錄(“確認肯定”結(jié)果),或者確定該記錄不存在(“錯誤肯定”結(jié)果)。對于否定結(jié)果,系統(tǒng)可以向代理給出否定結(jié)果而無需花費時間來解壓縮該壓縮塊并搜索不存在的記錄。OES的大小影響肯定結(jié)果是錯誤肯定的頻繁程度,OES大小越大,對于給定數(shù)量的區(qū)別(即,唯一)可能鍵值,通常產(chǎn)生越少的錯誤肯定結(jié)果。對于給定OES大小,區(qū)別可能鍵值越少,通常產(chǎn)生越少的錯誤肯定。其它類型的篩選數(shù)據(jù)結(jié)構(gòu)是可能的??梢詾榘瑝嚎s塊集合的每個壓縮記錄文件提供用于給定主或輔鍵的篩選數(shù)據(jù)結(jié)構(gòu)。替代地,可以為每個壓縮塊提供用于鍵的篩選數(shù)據(jù)結(jié)構(gòu),或者可以為壓縮記錄文件內(nèi)的多個壓縮塊集合的每個提供用于鍵的篩選數(shù)據(jù)結(jié)構(gòu)。圖3A和3B示出了提供對于示例性OES篩選數(shù)據(jù)結(jié)構(gòu)的各種大小(列)和在壓縮記錄文件中表示的區(qū)別鍵值的各種數(shù)量(行)、獲得鍵值的錯誤肯定結(jié)果的概率值的表格。對于0ES,取決于OES的大小和區(qū)別鍵值的數(shù)量,可以在OES的同一部分中指示出現(xiàn)多于一個鍵值,對于那些鍵值之一而言,如果出現(xiàn)其它鍵值,則潛在地導致對于所述鍵值的錯誤肯定結(jié)果。該示例性OES的大小從210 = 1024比特(圖3A的表格中)到228 = 256兆比特(圖3B的表格中)變化。區(qū)別鍵值的數(shù)量從100 (圖3A的表格中)到100,000, 000 (圖3B的表格中)變化。對于兩個表格,右上方的空單元對應于0%,左下方的空單元對應于100%。對于錯誤肯定概率較低(例如,接近零)的單元,篩選數(shù)據(jù)結(jié)構(gòu)可能比提供足夠篩選所需的大小更大。對于錯誤肯定概率顯著(例如,>50%)的單元,篩選數(shù)據(jù)結(jié)構(gòu)可能太小而不能提供足夠篩選。該示例對應于每個鍵值使用四個散列碼來生成OES的技術(shù)。OES篩選數(shù)據(jù)結(jié)構(gòu)的其它示例可能對于給定數(shù)量的區(qū)別鍵產(chǎn)生不同的錯誤肯定概率表格。
由于可能不知道在壓縮記錄文件中表示的區(qū)別鍵值的數(shù)量,因此系統(tǒng)100可以基于生成該文件所依據(jù)的記錄的數(shù)量來選擇用于壓縮記錄文件的篩選數(shù)據(jù)結(jié)構(gòu)的大小。在選擇大小時,在降低錯誤肯定概率和存儲篩選數(shù)據(jù)結(jié)構(gòu)所需的存儲器空間之間存在折衷。該折衷的一個因素是搜索不存在的鍵值的可能。如果要查找的鍵值大多數(shù)很可能出現(xiàn)在解壓縮記錄中,則可能根本不需要篩選數(shù)據(jù)結(jié)構(gòu)。如果存在將找不到鍵值的顯著概率,則向相對大的篩選數(shù)據(jù)結(jié)構(gòu)分配存儲空間可能節(jié)省相當時間。與壓縮記錄文件關(guān)聯(lián)的篩選數(shù)據(jù)結(jié)構(gòu)的大小可以取決于該文件對應于記錄的初始數(shù)據(jù)庫、合并的較大數(shù)據(jù)庫、還是對應于對較大數(shù)據(jù)庫的較小更新。對于在規(guī)則的更新間隔期間添加的壓縮記錄文件,可以使用相對較小的篩選數(shù)據(jù)結(jié)構(gòu),這是因為在每個更新中通常存在較少的區(qū)別鍵值。而且,較小的大小可以降低隨著在許多更新之后壓縮記錄文件的數(shù)量增長而需要的存儲空間。篩選數(shù)據(jù)結(jié)構(gòu)的大小可以基于更新中的記錄和/或區(qū)別鍵值的期望數(shù)量,并且基于更新的期望數(shù)量。例如,如果在24小時時段中每五分鐘添加一次更新文件,則在一天結(jié)束時將有288個復合壓縮記錄文件。至少一個錯誤肯定結(jié)果的概率將是來自圖3A和3B表格的適當值的288倍(假設不同更新的結(jié)果是獨立的)。在合并之后,對于合并的壓縮記錄文件而言,因為區(qū)別鍵值的數(shù)量可能顯著增加,因此更大的篩選數(shù)據(jù)結(jié)構(gòu)可能是合適的。壓縮記錄文件可以具有用于主鍵和用于每個輔鍵、或者用于鍵的某些子集合的篩選數(shù)據(jù)結(jié)構(gòu)。例如,系統(tǒng)100可以提供用于主鍵并且僅僅用于在記錄搜索中期望被最頻繁使用的那些輔鍵的篩選數(shù)據(jù)結(jié)構(gòu)。圖4A示出了用于搜索具有給定主鍵值的一個或更多個記錄的例程400的流程圖。例程400確定402是否存在與第一壓縮記錄文件相關(guān)的篩選數(shù)據(jù)結(jié)構(gòu)。如果存在,則例程400處理404該篩選數(shù)據(jù)結(jié)構(gòu)以獲得肯定或否定結(jié)果。如果給定主鍵值沒有通過篩選(否定結(jié)果),則例程400檢查406下一個壓縮記錄文件,并且如果所述下一個壓縮記錄文件存在,則在該文件上重復例程。如果給定主鍵值通過篩選(肯定結(jié)果),則例程400在索引中搜索
408可能包含具有給定主鍵值的記錄的塊。如果沒有篩選數(shù)據(jù)結(jié)構(gòu)與壓縮記錄文件關(guān)聯(lián),則例程400搜索408索引而不執(zhí)行篩選。在搜索408索引之后,如果找到了 410與包括給定主鍵值的鍵值范圍關(guān)聯(lián)的壓縮塊,則例程400解壓縮412在由索引條目標識的位置處的塊,并且在作為結(jié)果的記錄中搜索414具有給定主鍵值的一個或更多個記錄。該例程然后檢查416下一個壓縮記錄文件,并且如果所述下一個壓縮記錄文件存在,則在該文件上重復例程。如果沒有找到壓縮塊(例如,如果給定主鍵值小于第一個塊中的最小鍵值,或者大于最后塊中的最大鍵值),則例程400檢查416下一個壓縮記錄文件,并且如果所述下一個壓縮記錄文件存在,則在該文件上重復例程。圖4B示出了用于搜索具有給定輔鍵值的一個或更多個記錄的例程450的流程圖。例程450確定452是否存在與第一壓縮記錄文件相關(guān)的篩選數(shù)據(jù)結(jié)構(gòu)。如果存在,則例程450處理454該篩選數(shù)據(jù)結(jié)構(gòu)以獲得肯定或否定結(jié)果。如果給定輔鍵值沒有通過篩選(否定結(jié)果),則例程450檢查456下一個壓縮記錄文件,并且如果所述下一個壓縮記錄文件存在,則在該文件上重復例程。如果給定輔鍵值通過篩選(肯定結(jié)果),則例程450查找458與包含給定輔鍵的記錄對應的主鍵。如果沒有篩選數(shù)據(jù)結(jié)構(gòu)與壓縮記錄文件關(guān)聯(lián),則例程450 查找458主鍵而不執(zhí)行篩選。對于找到的每個主鍵,例程450在索引中搜索460可能包含具有給定主鍵值的記錄的塊。在搜索460索引之后,如果找到了 462與包括給定主鍵值的鍵值范圍關(guān)聯(lián)的壓縮塊,則例程450解壓縮464在由索引條目標識的位置處的塊,并且在作為結(jié)果的記錄中搜索466具有給定主鍵值的一個或更多個記錄。該例程然后檢查468下一個壓縮記錄文件,并且如果所述下一個壓縮記錄文件存在,則在該文件上重復例程。如果沒有找到壓縮塊,則例程450檢查468下一個壓縮記錄文件,并且如果所述下一個壓縮記錄文件存在,則在該文件上重復例程。例程400或例程450可以按照出現(xiàn)順序返回所發(fā)現(xiàn)的具有給定主鍵或輔鍵的多個記錄,或者在一些情況下,僅僅返回記錄的最后版本。如上所述,可以作為篩選數(shù)據(jù)結(jié)構(gòu)的大小(越大的數(shù)據(jù)結(jié)構(gòu)將降低錯誤肯定的概率)以及在該數(shù)據(jù)結(jié)構(gòu)中表示的用于標識在塊中存儲的記錄組的區(qū)別鍵的數(shù)量(越大數(shù)量的區(qū)別鍵將增加錯誤肯定的概率,區(qū)別鍵的數(shù)量傾向于隨著使用篩選數(shù)據(jù)結(jié)構(gòu)的塊的數(shù)量而增加)的函數(shù)而度量篩選數(shù)據(jù)結(jié)構(gòu)返回錯誤肯定的概率。因而,控制篩選數(shù)據(jù)結(jié)構(gòu)的大小是影響錯誤肯定結(jié)果的概率的一種方式。然而,選擇比實現(xiàn)可接受的錯誤肯定概率所需的大小更大的大小,可能使用不必要的大量的珍貴存儲空間??梢岳缁谟脩糨斎攵_定可接受的概率。在一些實現(xiàn)方式中,為了在接收到記錄時選擇給定記錄組所需的篩選數(shù)據(jù)結(jié)構(gòu)的適當大小,在記錄正被接收并存儲在壓縮塊中的同時累積與這些記錄相關(guān)的區(qū)別鍵。基于該累積,然后可以通過對存儲器中的區(qū)別鍵的數(shù)量進行計數(shù)來確定實現(xiàn)預定的錯誤肯定概率P所需的篩選數(shù)據(jù)結(jié)構(gòu)的大小。然后,記錄處理模塊102生成所確定大小的篩選數(shù)據(jù)。因此,直至該組中的所有記錄都已經(jīng)被接收到之后,才創(chuàng)建篩選數(shù)據(jù)結(jié)構(gòu)。因此,可以基于所累積的區(qū)別鍵的數(shù)量來確定篩選數(shù)據(jù)結(jié)構(gòu)的大小,并且為了實現(xiàn)概率P,篩選數(shù)據(jù)結(jié)構(gòu)的大小將不一定很大。然而,在存儲器中存儲鍵使用了在一些系統(tǒng)中可能相對受限的系統(tǒng)資源(例如,易失性存儲器)。盡管鍵還可以被存儲在更多的冗余存儲裝置(例如,非易失性存儲器)中,但是該技術(shù)將增加訪問所存儲的鍵的輸入/輸出(I/o)成本。在一些實現(xiàn)方式中,在該組中的記錄正在被接收時可以自適應地生成一個或更多個篩選數(shù)據(jù)結(jié)構(gòu),以便限制錯誤肯定率,而無需等待累積不確定的和/或大數(shù)量的區(qū)別鍵,并且也無需等待直至已經(jīng)接收到所有記錄。在該自適應技術(shù)中,接收該記錄組,記錄的鍵按照排序次序被排序。例如,在一些情況下,記錄具有自然主鍵,所述自然主鍵已知要被記錄處理模塊102接收并且已經(jīng)根據(jù)它們的鍵被排序。在其它情況下,記錄具有復合主鍵,所述復合主鍵是由記錄處理模塊102分配的,使得它們按照它們被分配的鍵(例如,作為遞增整數(shù)、或時間戳、或其它單調(diào)增加值的鍵)而被排序。如果所分配的復合鍵也是唯一的,則不需要將區(qū)別鍵存儲在存儲器中來以確定已經(jīng)接收了多少區(qū)別鍵,相反,所接收到的記錄的數(shù)量的計數(shù)可以被增加以確定已經(jīng)接收到多少區(qū)別鍵。在一些情況下,記錄組對應于要以批處理模式處理的單批記錄。例如可以通過預定令牌或消息來表明該批中的最后記錄。在其它情況下,記錄組對應于通過重復定界符分離的連續(xù)流中的多個被定界部分之一。在任何連續(xù)的定界符對之間,如上所述,根據(jù)鍵對記錄組進行排序。替代需要等待直至已經(jīng)接收到該組中的所有記錄才生成用于該組的篩選數(shù)據(jù)結(jié)·構(gòu),可以在正在接收記錄時,記錄處理模塊102開始生成預定大小為S的篩選數(shù)據(jù)結(jié)構(gòu)。一旦確定了大小,則可以在記錄到達時,例如通過設置位圖的比特而構(gòu)建篩選數(shù)據(jù)結(jié)構(gòu)。隨著與篩選數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)的區(qū)別鍵的數(shù)量增長(以及所設置的比特的數(shù)量增長),錯誤肯定概率也增長。如果在錯誤肯定概率達到P之前到達該組的結(jié)束,并且如果需要的話,則可以基于區(qū)別鍵的實際數(shù)量而減小篩選數(shù)據(jù)結(jié)構(gòu)的大小,以便實現(xiàn)更接近P的錯誤肯定概率。如果錯誤肯定概率達到P (基于到目前為止的區(qū)別鍵的數(shù)量),則可以存儲第一篩選數(shù)據(jù)結(jié)構(gòu),并且可以開始生成大小為S的第二篩選數(shù)據(jù)結(jié)構(gòu)。可以丟棄存儲在存儲器中的任何區(qū)別鍵,以便為累積與接下來所接收的記錄相關(guān)的新區(qū)別鍵而騰出空間。該處理可以繼續(xù),直至接收到該組中的最后記錄為止。對于給定記錄組,將存在一個或更多個篩選數(shù)據(jù)結(jié)構(gòu),每個篩選數(shù)據(jù)結(jié)構(gòu)具有被選擇來實現(xiàn)預定的錯誤肯定概率(例如,等于或接近P)的大小,并且每個篩選數(shù)據(jù)結(jié)構(gòu)在無需累積任意大數(shù)量的區(qū)別鍵或者等待直至已經(jīng)接收到最后記錄的情況下被構(gòu)建。由于按照該組中記錄的鍵的排序次序接收到記錄,因此用于該組的每個篩選數(shù)據(jù)結(jié)構(gòu)(如果存在多個篩選數(shù)據(jù)結(jié)構(gòu))對應于不同的非重疊鍵值范圍??梢曰诙喾N因素(諸如系統(tǒng)100的特性)中的任何因素來選擇大小S。例如,大小S可以基于在該系統(tǒng)中可以高效訪問的最大大小。在一些實現(xiàn)方式中,從主鍵生成預定大小的散列值(例如,32比特散列),并且可以基于該預定散列值大小來選擇大小S。在一些實現(xiàn)方式中,可以并行地構(gòu)建兩個(或更多個)篩選數(shù)據(jù)結(jié)構(gòu)。例如,可以(例如利用實現(xiàn)概率P的區(qū)別鍵的數(shù)量K)來構(gòu)建大小S,并且可以(例如利用實現(xiàn)概率P的區(qū)別鍵的數(shù)量K/2)來構(gòu)建大小S/2。基于該組中記錄的區(qū)別鍵的實際數(shù)量,可以選擇數(shù)據(jù)結(jié)構(gòu)之一(并且如果需要的話可以將其減小到適當大小)并且可以丟棄其它數(shù)據(jù)結(jié)構(gòu)。例如,如果區(qū)別鍵的數(shù)量小于或等于K/2,則可以使用大小為S/2的篩選數(shù)據(jù)結(jié)構(gòu),并且如果需要的話可以將其減小以實現(xiàn)概率P。如果區(qū)別鍵的數(shù)量介于K和K/2之間,則可以使用大小為S的篩選數(shù)據(jù)結(jié)構(gòu),并且如果需要的話可以將其減小以實現(xiàn)概率P。如果區(qū)別鍵的數(shù)量超過K,則可以存儲大小為S的篩選數(shù)據(jù)結(jié)構(gòu)并且可以構(gòu)建第二篩選數(shù)據(jù)結(jié)構(gòu)(并且可以使用相同的并行技術(shù)來構(gòu)建)。并行地構(gòu)建第二篩選數(shù)據(jù)結(jié)構(gòu)的成本可能低于通過對于區(qū)別鍵的實際數(shù)量更接近實現(xiàn)期望概率P所需的最優(yōu)大小而實現(xiàn)的節(jié)省。在一些實現(xiàn)方式中,對于記錄的數(shù)量較小(并且因此區(qū)別鍵的數(shù)量較小)的情況,可以進一步降低自適應地生成篩選數(shù)據(jù)結(jié)構(gòu)的時間。以大小為S/2的篩選數(shù)據(jù)結(jié)構(gòu)開始并且然后將其減少到基于區(qū)別鍵的數(shù)量的適當大小,可能在一些情況下由于執(zhí)行減少所需的操作(例如,使用“對折”操作,使用6對折可以實現(xiàn)從216比特的大小減少到21°比特的大小)的數(shù)量而相對較慢。取代在正在接收記錄時并行地生成多個篩選數(shù)據(jù)結(jié)構(gòu),可以在存儲器內(nèi)的鍵緩存器中累積鍵,直至該鍵緩存器變滿或者直至在該組中沒有更多記錄為止。如果鍵緩存器變滿,則可以使用所緩存的鍵來構(gòu)建適當大小的(例如大小S的)篩選數(shù)據(jù)結(jié)構(gòu)。鍵緩存器然后可以被丟棄,并且然后在正在接收組中所有隨后記錄時,可以使用該組中所有隨后記錄的鍵來生成另一篩選數(shù)據(jù)結(jié)構(gòu)。如果在鍵緩存器變滿之前接收到該組中的所有記錄,則可以從所緩存的鍵生成適當大小的篩選數(shù)據(jù)結(jié)構(gòu),避免了在該(小數(shù)量的區(qū)別鍵)情況下否則將需要的任何減少操作。
下面是生成作為最大大小S為216比特(或8k字節(jié))的位圖的篩選數(shù)據(jù)結(jié)構(gòu)的示例,所述篩選數(shù)據(jù)結(jié)構(gòu)對應于用于假定數(shù)量的區(qū)別鍵的給定目標錯誤肯定概率。在該示例中,16比特地址足以尋址該位圖中的每個比特。在輸入記錄被接收到時,它們的鍵被進行散列以生成32比特散列值。該散列的最低有效16比特被用來確定該比特在為對應鍵設置的位圖中的位置。在已經(jīng)接收到該組中的所有記錄之后,例如基于區(qū)別鍵的數(shù)量,如果最優(yōu)位圖大小為21°比特,則位圖可以被從216比特減少到21°比特。如果大小為216的位圖被劃分為相等大小的兩部分,則存在兩個位圖,每個大小為215比特。使用邏輯“或(0R)”操作將兩個位圖的每個比特組合在一起,產(chǎn)生大小為215比特的對折位圖。這是一個對折操作。再將該對折操作重復五次(總共六個對折操作),給出了大小為21°比特的位圖,使用32比特散列值的最低有效10比特可以對該位圖進行尋址。大小為21°比特的位圖比大小為216比特的位圖具有更高的錯誤肯定率。然而,由于接收到的區(qū)別鍵比假設數(shù)量的區(qū)別鍵更少,因此該位圖仍實現(xiàn)給定的目標錯誤肯定概率。使用生成篩選數(shù)據(jù)結(jié)構(gòu)的該自適應方法,可能存在多個篩選數(shù)據(jù)結(jié)構(gòu),每個被用來篩選按照主鍵的排序次序存儲在一組塊中的記錄組的不同子集。因此,多個篩選數(shù)據(jù)結(jié)構(gòu)中的每個與該組塊中的不同對應子集關(guān)聯(lián),并且與對應于存儲在這些塊中的記錄的不同范圍的鍵值關(guān)聯(lián)。使用用于確定給定記錄可能存儲在哪個塊中的索引,可以定位和搜索用于該組中(例如存儲在單個壓縮記錄文件中)所有記錄的塊。在“塊索引搜索”中,(例如,使用二值搜索)可能找到可能包含給定記錄的單個塊。在一些情況下,當搜索索引時,不需要定位可能包含給定記錄的單個塊,相反可能僅需要執(zhí)行“塊范圍索引搜索”以確定給定記錄的鍵是否落入跨越由篩選數(shù)據(jù)結(jié)構(gòu)中的對應一個所篩選的多個塊的鍵值范圍內(nèi),如下面更具體描述的。為了便于該塊范圍索引搜索,加索引和搜索模塊108可以與每個篩選數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)地存儲對應的鍵值范圍的指示,如下面更具體描述的。通過檢查與該組塊關(guān)聯(lián)的多個篩選數(shù)據(jù)結(jié)構(gòu)中的每一個,并且在至少一個肯定結(jié)果的情況下然后搜索索引以確定哪個塊可能包含該記錄,可以使用例程400和450來搜索記錄。然而,由于肯定結(jié)果可能是錯誤肯定,因此在定位并解壓縮塊以找到記錄(如果被不必要地執(zhí)行,則其是所采取的可能顯著減緩搜索處理的費力動作)之前,可以采取其它步驟以捕捉至少一些錯誤肯定。例如,可以使用塊范圍索引搜索來確定該記錄的鍵是否落入與給出肯定結(jié)果的篩選數(shù)據(jù)結(jié)構(gòu)對應的鍵值范圍內(nèi)。如果該鍵值沒有落入該鍵值范圍內(nèi),則該肯定結(jié)果必然是錯誤肯定。如果該鍵值落入該鍵值范圍內(nèi),則錯誤肯定未被排除,并且加索引和搜索模塊108執(zhí)行塊索引搜索以找到特定塊用于解壓縮并搜索具有給定鍵的記錄。檢查多個篩選數(shù)據(jù)結(jié)構(gòu)中的每一個以搜索具有給定鍵的記錄的結(jié)果是錯誤肯定概率被復合,并且隨著所搜索的篩選數(shù)據(jù)結(jié)構(gòu)的數(shù)量增加而增加(相對于單個篩選數(shù)據(jù)結(jié)構(gòu)的錯誤肯定概率P而言)。對于小數(shù)量的篩選數(shù)據(jù)結(jié)構(gòu),這可能不明顯,但是對于大數(shù)量的篩選數(shù)據(jù)結(jié)構(gòu),可以通過首先執(zhí)行塊范圍索引搜索來標識多個篩選數(shù)據(jù)結(jié)構(gòu)中哪個對應于包括給定鍵的鍵值范圍來提高性能。然后,僅僅對于所標識的篩選數(shù)據(jù)結(jié)構(gòu)檢查肯定結(jié)果,從而將錯誤肯定概率限制到P。下面的示例示出了可以如何執(zhí)行塊范圍索引搜索。每個篩選數(shù)據(jù)結(jié)構(gòu)被用來篩選存儲在壓縮塊中的記錄的不同的非重疊鍵值范圍,其中每個壓縮塊由對應索引條目定位。由于每個索引條目(除了最后索引條目之外)包含由該索引條目定位的壓縮數(shù)據(jù)塊中的第 一個記錄的鍵值,因此由給定篩選數(shù)據(jù)結(jié)構(gòu)篩選的鍵值范圍可以通過標識與該給定篩選數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)的索引條目范圍來確定。在以下的簡化示例中,存在被標記為“位圖O”和“位圖I”的兩個篩選數(shù)據(jù)結(jié)構(gòu)。在該示例中,索引被按照陣列存儲,并且可以使用對應的向陣列中的索引依序分配的整數(shù)值(被稱為“索引條目索引”(IEI))來檢索給定索引條目。以下表格為該索引中的六個索引條目的每個示出了其對應的IEI值以及哪個位圖被用來篩選存儲在由特定鍵條目定位的塊中的記錄。該表格以“終止索引條目”結(jié)束,該“終止索引條目”包含由最后標準索引條目定位的壓縮數(shù)據(jù)塊中的最后記錄的鍵值。
位圖IEI索引條目
OO鍵10,偏移O
OI鍵丨丨0,偏移2000
02鍵210,偏移 4000
13鍵310,偏移 6000
I4 鍵410,偏移 8000
I5鍵510,偏移 10000
N/A6鍵610,偏移 N/A位圖O對應于具有從O到2的IEI值的索引條目范圍,位圖I對應于具有從3到5的IEI值的索引條目范圍。每個索引條目將由所存儲的偏移定位的壓縮數(shù)據(jù)塊中的第一個記錄的鍵值包含到存儲壓縮塊的文件中。在該示例中,位圖O對應于從10 (包含)到310(不包含)的鍵值范圍,位圖I對應于從310 (包含)到610 (包含)的鍵值范圍。將單個IEI值與每個位圖相關(guān)聯(lián)存儲,足以指示用于該位圖的對應的鍵值范圍,諸如包含該范圍的第一個鍵值的索引條目的IEI值。例如,IEI值O可以與位圖相關(guān)聯(lián)地存儲,且IEI值3可以與位圖I相關(guān)聯(lián)地存儲。終止索引條目的最終IEI值也可以被存儲來指示用于最后位圖的最后鍵值。用于該示例的篩選數(shù)據(jù)結(jié)構(gòu)和對應的IEI值的結(jié)果列表將是
位圖 IEI
00
13 N/A 6使用該列表、索引、以及位圖來來搜索具有鍵值509的記錄的示例如下。I.塊范圍索引搜索在由該列表中的IEI值(0,3,6)標識的索引條目中包含的所有鍵值(10,310,610)中,搜索(例如,使用二值搜索)與包含最接近但是不大于509的鍵值的索引條目的IEI配對的位圖。這產(chǎn)生與IEI3配對的位圖I,這是因為對應的索引條目具有鍵值 310,并且 310〈509〈610。2.執(zhí)行篩選相對于在塊范圍索引搜索中標識的篩選數(shù)據(jù)結(jié)構(gòu)(位圖I)來篩選鍵509。3a.如果篩選產(chǎn)生肯定結(jié)果執(zhí)行塊索引搜索。在與篩選數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)的索引條目中包含的所有鍵值(310,410,510,610 )中,搜索(例如,使用二值搜索)包含最接近但是不大于509的鍵值的索引條目。這產(chǎn)生包含鍵值410的索引條目,因為410〈509〈610。這意味著與鍵值509匹配的記錄可能存儲在由偏移800處的索引條目定位的壓縮塊中。該壓縮塊被解壓縮以搜索匹配記錄并且如果找到匹配記錄則將其返回。3b.如果篩選產(chǎn)生否定結(jié)果無需執(zhí)行塊索引搜索,這是因為具有鍵值509的記錄沒有被存儲在與位圖I關(guān)聯(lián)的三個塊的任何塊中。圖5示出了加索引和搜索模塊108的示例實現(xiàn)方式,其包括用于所接收的記錄組的索引114、以及被如上所述地自適應生成的多個關(guān)聯(lián)的篩選結(jié)構(gòu)502、504和506等等。索引114包含一系列條目,每個條目包括來自已經(jīng)在其中存儲了所接收的記錄組的一組塊(例如塊506A-506I)中的塊的地址、以及表示在該塊中存儲的第一個記錄的主鍵的鍵字段。如上所述,塊中的記錄被按照主鍵排序。篩選數(shù)據(jù)結(jié)構(gòu)502、504和506每個與那些塊中的不同相應子集關(guān)聯(lián)(例如,塊集合508A、508B或508C)。在該示例中,為了簡化,每個子集合包括三個塊,但是篩選數(shù)據(jù)結(jié)構(gòu)典型地與大數(shù)量的塊關(guān)聯(lián)。在一些實現(xiàn)方式中,如果與該記錄組關(guān)聯(lián)的篩選數(shù)據(jù)結(jié)構(gòu)的數(shù)量大于預定閾值(例如,10或100的閾值),則加索引和搜索模塊108執(zhí)行塊范圍索引搜索以便標識篩選數(shù)據(jù)結(jié)構(gòu)之一進行檢查。例如,如果模塊108確定給定鍵大于指示存儲在塊506D中的第一個鍵的條目501D的鍵字段并且小于指示存儲在塊506g中的第一個鍵的條目501F的鍵字段,則模塊108檢查與塊集合508B對應的篩選數(shù)據(jù)結(jié)構(gòu)504。如果篩選數(shù)據(jù)結(jié)構(gòu)504產(chǎn)生否定結(jié)果,則具有給定鍵的記錄不存在于該記錄組中。如果篩選數(shù)據(jù)結(jié)構(gòu)504產(chǎn)生肯定結(jié)果,則索引114被用來找到集合508B的塊中可能包含該記錄的塊,并且模塊108解壓縮該塊以搜索該記錄。在一些情況下,有可能索引114的大小可能變得太大而不能容納在存儲器中。搜索索引的一些技術(shù)(例如,二值搜索技術(shù))導致在log2(t)量級上的讀取多個索引條目,其中t是該索引中條目的總數(shù)量。(在任何給定搜索期間讀取的條目的實際數(shù)量可能少于或多于該量。)如果所讀取的顯著數(shù)量的這些索引條目不是在此時碰巧被裝載在存儲器中的那部分索弓丨,則由于需要將不同部分的索引裝載到存儲器的時間,因此搜索該索引所需的時間可能被顯著增加。在一些實現(xiàn)方式中,通過構(gòu)建分層級的或“多層”索引,可以減少與搜索索引關(guān)聯(lián)的訪問時間。在多層索引的一個示例中,存在兩層索引,存儲在索引存儲裝置110(例如,較慢的和/或非易失性存儲裝置)中的主索引包含定位記錄的壓縮塊的條目,且存儲在本地存儲器(例如,較快的和/或易失性存儲裝置)中的輔索引包含用來確定主索引的哪部分要被裝載到本地存儲器中的條目。為了生成這樣的兩層索引,如上所述,利用按照鍵排序的條目生成包含用于壓縮塊的條目的初始索引。該初始索引是主索引并且被劃分為條目的連續(xù)區(qū)域,每個區(qū)域足夠小以便完全容納在本地存儲器中(例如,每個區(qū)域在長度上是一 “盤頁”)。每個區(qū)域內(nèi)的索引條目可以可選地被壓縮(例如壓縮為與上述的塊類似的、但是存儲索引條目而不是記錄的一個或更多個塊)。在被壓縮時,該區(qū)域?qū)⑸踔粮?,但是在被解壓縮時該區(qū)域的大小將仍完全容納在本地存儲器中。然后,生成輔索引,其也足夠小以便完全容納在本地存儲器中。在該輔索引中,為所述多個區(qū)域中的每個區(qū)域創(chuàng)建條目。每個輔索引條目包括區(qū)域在索引存儲裝置110中的地址(例如,存儲該區(qū)域的盤頁的地址)。每個輔索引 條目還包括標識存儲在該區(qū)域中的第一個主索引條目的主鍵的鍵字段。如果輔索引保持足夠小以便容納在本地存儲器中,則可以降低訪問成本(例如,執(zhí)行輸入/輸出(I/o)操作所需的時間)。例如,為了檢索期望記錄,在輔索引(其被包含在本地存儲器中)中執(zhí)行第一搜索以便確定主索引的哪個區(qū)域包含與存儲期望記錄的塊關(guān)聯(lián)的條目。一旦(例如使用二值搜索)確定了主索引的適當區(qū)域,則從索引存儲裝置110到本地存儲器中檢索主索引的該區(qū)域,并且搜索該區(qū)域以便找到定位存儲該記錄的塊的主索引條目。因此,在該示例中,在容納在本地存儲器中的輔索引內(nèi)執(zhí)行第一搜索,然后在一次I/o操作之后,在主索引也容納在本地存儲器中的區(qū)域內(nèi)執(zhí)行輔搜索。由于主索弓I被劃分為在長度上為一個盤頁的區(qū)域,因此可以減少訪問該索引的I/o成本。如果輔索引太大(或變得太大)而不能被完全容納在本地存儲器內(nèi),則可以生成多層索引的第三層(以及第四層,等等),使得最高層完全容納在本地存儲器內(nèi),并且每個較低層被劃分為區(qū)域,每個區(qū)域被完全容納在本地存儲器內(nèi)。最低層是存儲記錄的壓縮塊的主索引。上述的記錄存儲和檢索記錄可以使用在計算機運行的軟件來實現(xiàn)。例如,軟件以在一個或更多個編程的或可編程的計算機系統(tǒng)(其可能是各種架構(gòu),諸如分布式、客戶端/服務器、或網(wǎng)格)運行的一個或更多個計算機程序的形式形成例程,每個計算機系統(tǒng)包括至少一個處理器、至少一個數(shù)據(jù)存儲系統(tǒng)(包括易失性和非易失性存儲器、和/或存儲元件)、至少一個輸入設備或端口、以及至少一個輸出設備或端口。軟件可以形成更大程序的一個或更多個模塊,例如,該更大程序提供與計算圖的設計和配置相關(guān)的其它服務。該圖的節(jié)點和元素可以被實現(xiàn)為存儲在計算機可讀介質(zhì)中的數(shù)據(jù)結(jié)構(gòu)、或者符合存儲在數(shù)據(jù)倉庫中的數(shù)據(jù)模型的其它組織數(shù)據(jù)。軟件可以被提供在可由通用或?qū)S每删幊逃嬎銠C讀取的介質(zhì)(諸如CD-ROM)上、或者可以在其運行時通過網(wǎng)絡被遞送到(被編碼在傳播信號中)該計算機。可以在專用計算機上、或者使用專用硬件(諸如協(xié)處理器)執(zhí)行所有功能。軟件可以以分布式方式實現(xiàn),其中由該軟件指定的計算的不同部分由不同計算機執(zhí)行。每個這樣的計算機程序優(yōu)選地存儲在或者下載到可由通用或?qū)S每删幊逃嬎銠C讀取的存儲介質(zhì)或設備上(例如,固態(tài)存儲器或介質(zhì)、或者磁或光介質(zhì)),用于在該存儲介質(zhì)或設備被計算機系統(tǒng)讀取時配置并操作計算機執(zhí)行這里描述的例程。本發(fā)明的系統(tǒng)還可以被考慮為實現(xiàn)為配置有計算機程序的計算機可讀存儲介質(zhì),其中如此配置的存儲介質(zhì)使得計算機系統(tǒng)以特定和預定方式操作以執(zhí)行這里描述的功能。已經(jīng)描述了本發(fā)明的多個實施例。然而,將理解可以在不偏離本發(fā)明的精神和范圍的情況下做出各種修改。例如,上面描述的一些步驟可以是順序獨立的,并且因此可以以與所描述的順序不同的順序來執(zhí)行。
應理解,前面的描述意圖說明并且不限制本發(fā)明的范圍,本發(fā)明的范圍由所附權(quán)利要求書的范圍來定義。例如,上述的多個功能步驟可以以不同順序執(zhí)行,而沒有實質(zhì)上影響整體處理。其它實施例在所附權(quán)利要求書的范圍內(nèi)。
權(quán)利要求
1.一種管理數(shù)據(jù)的方法,該方法包括 在輸入設備或端口上接收至少一組可獨立訪問的數(shù)據(jù)單元,每個數(shù)據(jù)單元由鍵值標識,所接收的數(shù)據(jù)單元的鍵值被排序以使得標識在給定的第二數(shù)據(jù)單元之前接收的給定的第一數(shù)據(jù)單元的鍵值在排序次序中比標識給定的第二數(shù)據(jù)單元的鍵值出現(xiàn)得更早;以及 處理數(shù)據(jù)單元以在數(shù)據(jù)存儲系統(tǒng)中存儲,所述處理包括 存儲多個數(shù)據(jù)塊,所述塊中的一個或更多個的每個是通過組合多個數(shù)據(jù)單元而生成的; 對于每個塊提供包括條目的索引,其中所述條目中的一個或更多個使得能夠基于所提供的鍵值來定位包括與包括所提供的鍵值的鍵值范圍相對應的數(shù)據(jù)單元的塊;以及 生成與所存儲的塊關(guān)聯(lián)的多個篩選數(shù)據(jù)結(jié)構(gòu)以便確定包括給定鍵值的數(shù)據(jù)單元被包括在該組可獨立訪問的數(shù)據(jù)單元中的概率,所述多個篩選數(shù)據(jù)結(jié)構(gòu)包括用于篩選所述多個塊中的一個或更多個塊的第一集合的第一篩選數(shù)據(jù)結(jié)構(gòu)、和用于篩選所述多個塊中的一個或更多個塊的第二集合的第二篩選數(shù)據(jù)結(jié)構(gòu)。
2.如權(quán)利要求I所述的方法,其中,在多個塊的一個或更多個塊的第二集合中包括的全部數(shù)據(jù)單元具有在排序次序中比在多個塊的一個或更多個塊的第一集合中包括的數(shù)據(jù)單元的任何鍵值出現(xiàn)得更晚的鍵值。
3.如權(quán)利要求2所述的方法,其中,多個篩選數(shù)據(jù)結(jié)構(gòu)中的每個對應于標識在一個或更多個塊的對應集合中存儲的數(shù)據(jù)單元的不同的非重疊鍵值范圍。
4.如權(quán)利要求I所述的方法,其中,在累積了在多個塊的一個或更多個塊的第一集合中存儲的第一集合數(shù)據(jù)單元中的預定數(shù)量的區(qū)別鍵值之后生成第一篩選數(shù)據(jù)結(jié)構(gòu),而在接收在多個塊的一個或更多個塊的第二集合中存儲的第二集合數(shù)據(jù)單元的同時生成第二篩選數(shù)據(jù)結(jié)構(gòu)。
5.如權(quán)利要求I所述的方法,還包括使用索引和多個篩選數(shù)據(jù)結(jié)構(gòu)來搜索具有給定鍵值的數(shù)據(jù)單元。
6.如權(quán)利要求5所述的方法,其中,所述搜索包括檢查多個篩選數(shù)據(jù)結(jié)構(gòu)中的每一個,以得到指示具有給定鍵值的數(shù)據(jù)單元可能被包括在該組可獨立訪問的數(shù)據(jù)單元中的肯定結(jié)果。
7.如權(quán)利要求6所述的方法,還包括響應于對于對應篩選數(shù)據(jù)結(jié)構(gòu)的肯定結(jié)果,搜索索引以確定給定鍵值是否落入跨越被對應篩選數(shù)據(jù)結(jié)構(gòu)所篩選的一個或更多個塊的鍵值范圍內(nèi)。
8.如權(quán)利要求7所述的方法,還包括響應于給定鍵值落入跨越被對應篩選數(shù)據(jù)結(jié)構(gòu)所篩選的多個塊的鍵值范圍內(nèi),搜索索引以找到用于搜索具有給定鍵值的數(shù)據(jù)單元的特定塊。
9.如權(quán)利要求I所述的方法,其中,對于給定鍵值,給定篩選數(shù)據(jù)結(jié)構(gòu)確定包括給定鍵值的數(shù)據(jù)單元必定沒有被包括,或者包括給定鍵值的數(shù)據(jù)單元可能被包括。
10.如權(quán)利要求9所述的方法,其中,在數(shù)據(jù)單元沒有被包括時給定篩選數(shù)據(jù)結(jié)構(gòu)確定包括給定鍵值的數(shù)據(jù)單元可能被包括的概率取決于數(shù)據(jù)結(jié)構(gòu)的大小。
11.如權(quán)利要求10所述的方法,還包括基于標識生成塊所依據(jù)的數(shù)據(jù)單元的區(qū)別鍵值的數(shù)量,而選擇給定篩選數(shù)據(jù)結(jié)構(gòu)的大小。
12.如權(quán)利要求I所述的方法,其中,在輸入設備或端口上接收給定數(shù)據(jù)單元之前,標識給定數(shù)據(jù)單元的鍵值對應于與給定數(shù)據(jù)單元關(guān)聯(lián)的一個或更多個字段。
13.如權(quán)利要求12所述的方法,還包括在接收數(shù)據(jù)單元時累積區(qū)別鍵值,并且在接收到該組可獨立訪問的數(shù)據(jù)單元中的數(shù)據(jù)單元之后對所累積的區(qū)別鍵值進行計數(shù)。
14.如權(quán)利要求I所述的方法,其中,在輸入設備或端口上接收給定數(shù)據(jù)單元之后,標識該給定數(shù)據(jù)單元的鍵值才被分配給該給定數(shù)據(jù)單元。
15.如權(quán)利要求14所述的方法,其中,鍵值是單調(diào)分配的。
16.如權(quán)利要求15所述的方法,其中,所有分配的鍵值是有區(qū)別的。
17.如權(quán)利要求I所述的方法,其中,與所存儲的塊關(guān)聯(lián)的篩選數(shù)據(jù)結(jié)構(gòu)的數(shù)量基于標識該組可獨立訪問的數(shù)據(jù)單元中的數(shù)據(jù)單元的區(qū)別鍵值的數(shù)量、以及與篩選數(shù)據(jù)結(jié)構(gòu)關(guān)聯(lián)的目標錯誤肯定概率。
18.如權(quán)利要求I所述的方法,其中,索引是包括至少第一級別索引和第二級別索引的分層級索引。
19.如權(quán)利要求18所述的方法,其中,第一級別索引被劃分為多個條目區(qū)域,其使得能夠基于所提供的鍵值來定位包括與包括所提供的鍵值的鍵值范圍對應的數(shù)據(jù)單元的塊,每個區(qū)域足夠小被完全容納在與該數(shù)據(jù)存儲系統(tǒng)耦接的存儲器內(nèi)。
20.如權(quán)利要求19所述的方法,其中,索引中條目的一個或更多個條目標識與生成對應塊所依據(jù)的數(shù)據(jù)單元對應的鍵值范圍。
21.如權(quán)利要求20所述的方法,其中,索引中條目的至少一些中的每個條目標識對應塊的存儲位置。
22.如權(quán)利要求19所述的方法,其中,第二級別索引足夠小以被完全容納在存儲器內(nèi)。
23.如權(quán)利要求22所述的方法,其中,第二級別索引包括用于多個區(qū)域中每個區(qū)域的相應條目。
24.如權(quán)利要求23所述的方法,其中,第二級別索引中條目的一個或更多個條目使得能夠基于所提供的鍵值來定位包括與包括所提供的鍵值的鍵值范圍對應的條目的第一級別索引的區(qū)域。
25.一種存儲用于管理數(shù)據(jù)的計算機程序的計算機可讀介質(zhì),該計算機程序包括使得計算機執(zhí)行以下操作的指令 在輸入設備或端口上接收至少一組可獨立訪問的數(shù)據(jù)單元,每個數(shù)據(jù)單元由鍵值標識,所接收的數(shù)據(jù)單元的鍵值被排序以使得標識在給定的第二數(shù)據(jù)單元之前接收的給定的第一數(shù)據(jù)單元的鍵值在排序次序中比標識給定的第二數(shù)據(jù)單元的鍵值出現(xiàn)得更早;以及 處理數(shù)據(jù)單元以在數(shù)據(jù)存儲系統(tǒng)中存儲,所述處理包括 存儲多個數(shù)據(jù)塊,所述塊中的一個或更多個的每個是通過組合多個數(shù)據(jù)單元而生成的; 對于每個塊提供包括條目的索引,其中所述條目中的一個或更多個使得能夠基于所提供的鍵值來定位包括與包括所提供的鍵值的鍵值范圍相對應的數(shù)據(jù)單元的塊;以及 生成與所存儲的塊關(guān)聯(lián)的多個篩選數(shù)據(jù)結(jié)構(gòu)以便確定包括給定鍵值的數(shù)據(jù)單元被包括在該組可獨立訪問的數(shù)據(jù)單元中的概率,所述多個篩選數(shù)據(jù)結(jié)構(gòu)包括用于篩選所述多個塊中的一個或更多個塊的第一集合的第一篩選數(shù)據(jù)結(jié)構(gòu)、和用于篩選所述多個塊中的一個或更多個塊的第二集合的第二篩選數(shù)據(jù)結(jié)構(gòu)。
26.—種管理數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括 輸入設備或端口,被配置為接收至少一組可獨立訪問的數(shù)據(jù)單元,每個數(shù)據(jù)單元由鍵值標識,所接收的數(shù)據(jù)單元的鍵值被排序以使得標識在給定的第二數(shù)據(jù)單元之前接收的給定的第一數(shù)據(jù)單元的鍵值在排序次序中比標識給定的第二數(shù)據(jù)單元的鍵值出現(xiàn)得更早;以及 至少一個處理器,被配置為處理數(shù)據(jù)單元以在數(shù)據(jù)存儲系統(tǒng)中存儲,所述處理包括 存儲多個數(shù)據(jù)塊,所述塊中的一個或更多個的每個是通過組合多個數(shù)據(jù)單元而生成的; 對于每個塊提供包括條目的索引,其中所述條目中的一個或更多個使得能夠基于所提供的鍵值來定位包括與包括所提供的鍵值的鍵值范圍相對應的數(shù)據(jù)單元的塊;以及 生成與所存儲的塊關(guān)聯(lián)的多個篩選數(shù)據(jù)結(jié)構(gòu)以便確定包括給定鍵值的數(shù)據(jù)單元被包括在該組可獨立訪問的數(shù)據(jù)單元中的概率,所述多個篩選數(shù)據(jù)結(jié)構(gòu)包括用于篩選所述多個塊中的一個或更多個塊的第一集合的第一篩選數(shù)據(jù)結(jié)構(gòu)、和用于篩選所述多個塊中的一個或更多個塊的第二集合的第二篩選數(shù)據(jù)結(jié)構(gòu)。
27.—種管理數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括 用于接收至少一組可獨立訪問的數(shù)據(jù)單元的部件,每個數(shù)據(jù)單元由鍵值標識,所接收的數(shù)據(jù)單元的鍵值被排序以使得標識在給定的第二數(shù)據(jù)單元之前接收的給定的第一數(shù)據(jù)單元的鍵值在排序次序中比標識給定的第二數(shù)據(jù)單元的鍵值出現(xiàn)得更早;以及用于處理數(shù)據(jù)單元以在數(shù)據(jù)存儲系統(tǒng)中存儲的部件,所述處理包括 存儲多個數(shù)據(jù)塊,所述塊中的一個或更多個的每個是通過組合多個數(shù)據(jù)單元而生成的; 對于每個塊提供包括條目的索引,其中所述條目中的一個或更多個使得能夠基于所提供的鍵值來定位包括與包括所提供的鍵值的鍵值范圍相對應的數(shù)據(jù)單元的塊;以及 生成與所存儲的塊關(guān)聯(lián)的多個篩選數(shù)據(jù)結(jié)構(gòu)以便確定包括給定鍵值的數(shù)據(jù)單元被包括在該組可獨立訪問的數(shù)據(jù)單元中的概率,所述多個篩選數(shù)據(jù)結(jié)構(gòu)包括用于篩選所述多個塊中的一個或更多個塊的第一集合的第一篩選數(shù)據(jù)結(jié)構(gòu)、和用于篩選所述多個塊中的一個或更多個塊的第二集合的第二篩選數(shù)據(jù)結(jié)構(gòu)。
全文摘要
管理數(shù)據(jù)包括接收至少一組可獨立訪問的數(shù)據(jù)單元(200),每個數(shù)據(jù)單元由鍵值標識,所接收的數(shù)據(jù)單元的鍵值被排序;以及處理數(shù)據(jù)單元以在數(shù)據(jù)存儲系統(tǒng)(100)中存儲。所述處理包括存儲多個數(shù)據(jù)塊(202);對于每個塊提供包括條目的索引(114);以及生成與所存儲的塊關(guān)聯(lián)的多個篩選數(shù)據(jù)結(jié)構(gòu)(116)以便確定包括給定鍵值的數(shù)據(jù)單元被包括在該組可獨立訪問的數(shù)據(jù)單元中的概率,所述多個篩選數(shù)據(jù)結(jié)構(gòu)包括用于篩選所述多個塊中的一個或更多個塊的第一集合的第一篩選數(shù)據(jù)結(jié)構(gòu)、和用于篩選所述多個塊中的一個或更多個塊的第二集合的第二篩選數(shù)據(jù)結(jié)構(gòu)。
文檔編號G06F12/00GK102893265SQ201080066735
公開日2013年1月23日 申請日期2010年3月10日 優(yōu)先權(quán)日2010年3月10日
發(fā)明者V.庫爾卡尼, S.施密特, C.W.斯坦菲爾, E.M.維施尼亞克 申請人:起元技術(shù)有限責任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1