欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

文檔序號:6593544閱讀:159來源:國知局
專利名稱:單獨可訪問數(shù)據(jù)單元的管理存儲的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及單獨可存儲的數(shù)據(jù)單元的管理存儲。
技術(shù)背景
數(shù)據(jù)庫系統(tǒng)可以以任何各種格式存儲單獨可訪問的數(shù)據(jù)單元或“記錄”。每個 記錄可以對應(yīng)于諸如信用卡交易的邏輯實體,且典型地具有用于唯一地標(biāo)識該記錄的關(guān) 聯(lián)首要鍵(primarykey)。該記錄可以包括與記錄格式的相應(yīng)字段關(guān)聯(lián)的多個值。這些記 錄可以被存儲在一個或多個文件(例如,平面文件或諸如XML文件的結(jié)構(gòu)化數(shù)據(jù)文件) 中。在壓縮的數(shù)據(jù)庫系統(tǒng)中,記錄內(nèi)的各個記錄或值可以當(dāng)被存儲時被壓縮,且當(dāng)被訪 問以減少系統(tǒng)的存儲需求時被解壓縮。發(fā)明內(nèi)容
通常,在一個方面中,一種方法包括確定文件的長度并在第一存儲器位置中存 儲該文件的長度。確定在該文件內(nèi)的最后完整的記錄的結(jié)束點,以及在第二存儲器位置 中存儲該結(jié)束點。在第一存儲器位置中存儲的文件的長度與該文件的當(dāng)前長度比較,且 如果該文件的當(dāng)前長度超過在第一存儲器位置中存儲的文件的長度,則更新與在結(jié)束點 處開始的文件關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。
各方面可以包括一個或多個以下特征。該數(shù)據(jù)結(jié)構(gòu)可以是關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu),諸 如哈希(hash)表或二進(jìn)制樹。該結(jié)束點還可以表示文件的結(jié)束。該結(jié)束點可以在文件 的不完整記錄之前??梢詸z查該文件以尋找錯誤。檢查該文件以尋找錯誤可以包括確定 該文件的當(dāng)前長度是否小于在第一存儲器位置中存儲的文件的長度。該文件可以是未壓 縮數(shù)據(jù)文件。
通常,在另一方面,一種方法包括向第一文件且向緩沖器同時添加來自數(shù)據(jù)流 的數(shù)據(jù)。在滿足預(yù)定義條件之后,將與緩沖器關(guān)聯(lián)的數(shù)據(jù)轉(zhuǎn)移為壓縮文件。在來自緩沖 器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后,創(chuàng)建第二文件以從數(shù)據(jù)流接收數(shù)據(jù)。
各方面可以包括一個或多個以下特征。在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮 文件之后,可以刪除第一文件。狀態(tài)信息可以標(biāo)識第一文件是否有效。在與緩沖器關(guān)聯(lián) 的數(shù)據(jù)正被轉(zhuǎn)移為壓縮文件的同時,可以鎖閉該狀態(tài)信息。可以更新該狀態(tài)信息以反映 第二文件的創(chuàng)建、第一文件的刪除和在緩沖器和壓縮文件之間的數(shù)據(jù)的轉(zhuǎn)移。當(dāng)狀態(tài)信 息被鎖閉(lock)時,可能通過索引或搜索操作不能訪問該狀態(tài)信息。該狀態(tài)信息可以在 其被更新了之后被解鎖。該第一文件可以在該狀態(tài)信息被更新了之后被刪除。該預(yù)定義 條件可以基于時間。該預(yù)定義條件可以基于第一文件的尺寸。該預(yù)定義條件可以基于記 錄的數(shù)量。
通常,在另一方面,一種計算機(jī)可讀介質(zhì)存儲用于從設(shè)備信號獲取值的可執(zhí)行 指令,所述指令導(dǎo)致計算機(jī)確定文件的長度并在第一存儲器位置中存儲文件的長度???以確定在該文件內(nèi)的最后完整的記錄的結(jié)束點,以及可以在第二存儲器位置中存儲該結(jié)束點。可以比較在第一存儲器位置中存儲的文件的長度與該文件的當(dāng)前長度。如果該文 件的當(dāng)前長度超過在第一存儲器位置中存儲的文件的長度,則可以更新與在結(jié)束點處開 始的文件關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。
各方面可以包括一個或多個以下特征。該數(shù)據(jù)結(jié)構(gòu)可以是關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu),諸 如哈希表或二進(jìn)制樹。該結(jié)束點還可以表示文件的結(jié)束。該結(jié)束點可以在文件的不完整 記錄之前。這些指令還可以使得計算機(jī)檢查該文件以尋找錯誤。檢查該文件以尋找錯誤 可以包括確定該文件的當(dāng)前長度是否小于在第一存儲器位置中存儲的文件的長度。該文 件可以是未壓縮數(shù)據(jù)文件。
通常,在另一方面,一種計算機(jī)可讀介質(zhì)存儲用于從設(shè)備信號獲取值的可執(zhí)行 指令,所述指令導(dǎo)致計算機(jī)向第一文件且向緩沖器同時添加來自數(shù)據(jù)流的數(shù)據(jù)。在滿足 預(yù)定義條件之后,將與緩沖器關(guān)聯(lián)的數(shù)據(jù)轉(zhuǎn)移為壓縮文件。在來自緩沖器的數(shù)據(jù)已經(jīng)被 轉(zhuǎn)移為壓縮文件之后,創(chuàng)建第二文件以從數(shù)據(jù)流接收數(shù)據(jù)。
各方面可以包括一個或多個以下特征。在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮 文件之后,可以刪除第一文件。狀態(tài)信息可以標(biāo)識第一文件是否有效。在與緩沖器關(guān)聯(lián) 的數(shù)據(jù)正被轉(zhuǎn)移為壓縮文件的同時,可以鎖閉該狀態(tài)信息。可以更新該狀態(tài)信息,以反 映第二文件的創(chuàng)建、第一文件的刪除和在緩沖器和壓縮文件之間的數(shù)據(jù)的轉(zhuǎn)移。當(dāng)狀態(tài) 信息被鎖閉時,可能通過索引或搜索操作不能訪問該狀態(tài)信息。該狀態(tài)信息可以在其被 更新了之后被解鎖。該第一文件可以在該狀態(tài)信息被更新了之后被刪除。該預(yù)定義條件 可以基于時間。該預(yù)定義條件可以基于第一文件的尺寸。該預(yù)定義條件可以基于記錄的 數(shù)量。
通常,在一個方面中,一種系統(tǒng)包括用于確定文件的長度并在第一存儲器位置 中存儲該文件的長度的裝置。該系統(tǒng)還包括用于確定在該文件內(nèi)的最后完整的記錄的結(jié) 束點、并在第二存儲器位置中存儲該結(jié)束點的裝置。該系統(tǒng)還包括用于比較在第一存儲 器位置中存儲的文件的長度與該文件的當(dāng)前長度的裝置,以及用于如果該文件的當(dāng)前長 度超過在第一存儲器位置中存儲的文件的長度、則更新與在結(jié)束點處開始的文件關(guān)聯(lián)的 數(shù)據(jù)結(jié)構(gòu)的裝置。
通常,在另一方面,一種系統(tǒng)包括用于向第一文件且向緩沖器同時添加來自數(shù) 據(jù)流的數(shù)據(jù)的裝置。該系統(tǒng)還包括用于在滿足預(yù)定義條件之后、將與緩沖器關(guān)聯(lián)的數(shù)據(jù) 轉(zhuǎn)移為壓縮文件的裝置,以及用于在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后、創(chuàng) 建第二文件以從數(shù)據(jù)流接收數(shù)據(jù)的裝置。


圖1是用于存儲和檢索記錄的系統(tǒng)的方框圖。
圖2A、圖2B、圖2C、和圖2D是由系統(tǒng)處理且在系統(tǒng)中存儲的數(shù)據(jù)的示意圖。
圖3A和圖3B是示出不同簽名尺寸的偽造(false)肯定概率的表。
圖4A和圖4B是用于搜索記錄的過程的流程圖。
圖5是查詢記錄的過程的流程圖。
圖6A和圖6B是可附屬查找文件的示意圖。
圖7是查詢可附屬查找文件的過程的流程圖。
圖8是存儲數(shù)據(jù)的過程的流程圖。
具體實施方式
參考圖1,記錄存儲和檢索系統(tǒng)100從一個或多個源(諸如源A-源C)接受數(shù) 據(jù)。數(shù)據(jù)包括可以表示為單獨可存取數(shù)據(jù)單元的信息。例如,信用卡公司可以從各種 零售公司接收表示各個交易的數(shù)據(jù)。每個交易與表示諸如客戶名稱、日期、購買量等的 屬性的值關(guān)聯(lián)。記錄處理模塊102保證根據(jù)預(yù)定義記錄格式來格式化該數(shù)據(jù),以便與交 易關(guān)聯(lián)的值被存儲在記錄中。在一些情況下,這可以包括根據(jù)記錄格式變換來自源的數(shù) 據(jù)。在其他情況下,一個或多個源可以提供已經(jīng)根據(jù)記錄格式格式化了的數(shù)據(jù)。
記錄處理模塊102準(zhǔn)備記錄用于以取決于各種因素的各類數(shù)據(jù)結(jié)構(gòu)存儲,各種 因素諸如是否有必要快速訪問所存儲的記錄。當(dāng)準(zhǔn)備記錄用于在可附屬查找文件中快速 訪問時,處理模塊102在記錄到達(dá)時將這些記錄附屬到可附屬查找文件中,并維持存儲 器內(nèi)(in-memory)索引,如以下更詳細(xì)描述的。當(dāng)準(zhǔn)備記錄用于在壓縮記錄文件中的壓 縮存儲時,處理模塊102通過標(biāo)識每個記錄的首要鍵值(例如,標(biāo)識單個記錄的唯一鍵、 或標(biāo)識記錄的多個更新版本的鍵)來將記錄分類,并將這些記錄劃分為對應(yīng)于首要鍵值 的不重疊范圍的記錄組。例如,每組記錄可以對應(yīng)于預(yù)定義數(shù)量的記錄(例如100個記 錄)。
文件管理模塊104管理可附屬查找文件(在其被使用的情形下)和壓縮查找文件 兩者。當(dāng)管理壓縮記錄文件時,文件管理模塊104將每組記錄壓縮為壓縮的數(shù)據(jù)塊。這 些壓縮塊被存儲在記錄存儲器106中(例如,在諸如一個或多個硬盤驅(qū)動的非易失性存儲 介質(zhì)中)的壓縮記錄文件中。
該系統(tǒng)100還包括索引和搜索模塊108,其提供包括對壓縮記錄文件中的每個塊 的入口的索引。該索引被用于定位可能包括給定記錄的塊,如以下更詳細(xì)描述的。該索 引可以被存儲在索引存儲器110中的索引文件中。例如,當(dāng)可以在相同存儲介質(zhì)中存儲 索引文件作為壓縮記錄文件時,優(yōu)選地可以在相對更快速的存儲器(例如,諸如動態(tài)隨 機(jī)存取存儲器的易失性存儲介質(zhì))中存儲索引文件,因為索引文件典型地比壓縮記錄文 件小得多。該索引還可以是被維持作為存儲器內(nèi)數(shù)據(jù)結(jié)構(gòu)的動態(tài)索引114。動態(tài)索引114 的一些例子是哈希表、二進(jìn)制樹和b樹。索引和搜索模塊108還提供用于搜索可附屬查 找文件的接口,如以下更詳細(xì)地描述的。
在系統(tǒng)100的替換實施方式中,各組記錄可以被處理以使用除了壓縮以外或取 代壓縮的其他函數(shù)來生成塊,以按某種方式組合這些記錄(即,使得塊不僅僅是級聯(lián)的 一組記錄)。例如,一些系統(tǒng)可以處理一組記錄來生成加密數(shù)據(jù)的塊。
接口模塊Il2向人和/或計算機(jī)代理(諸如代理A-代理D)提供對存儲的記錄 的訪問。例如,接口模塊112可以實現(xiàn)在線賬戶系統(tǒng),用于信用卡客戶來監(jiān)視其交易。 可以由系統(tǒng)100處理對滿足各種準(zhǔn)則的交易信息的請求,且可以從記錄存儲器106中存儲 的壓縮塊內(nèi)檢索對應(yīng)的記錄。
來自一個或多個源的到來記錄流可以在被處理以生成壓縮記錄文件之前被臨時存儲。
圖2A-圖2D、圖3A_圖3B、和圖4A_圖4B示出了管理在壓縮記錄文件中的記錄的例子。圖5和圖6A-圖6B示出了使用可附屬查找文件管理記錄的例子。參考圖 2A,系統(tǒng)100接收要在壓縮記錄文件中存儲的一組記錄200,且根據(jù)首要鍵的值來對這些 記錄分類。
首要鍵值可以唯一地標(biāo)識可以由一個或多個記錄表示的數(shù)據(jù)庫中的給定項目 (例如,具有給定首要鍵值的每個記錄可以對應(yīng)于該項目的不同更新版本)。首要鍵可以 是對應(yīng)于記錄的一個或多個現(xiàn)有字段的“自然鍵”。如果沒有保證對每個項目唯一的字 段,首要鍵可以是包括記錄的多個字段的復(fù)合鍵,其一起保證或很可能對每個項目是唯 一的?;蛘?,首要鍵可以是可以在被接收之后分配給每個記錄的“合成鍵”。例如,系 統(tǒng)100可以分配唯一的首要鍵值為順序遞增的整數(shù),或某種其他順序的單調(diào)遞進(jìn)的值(例 如,時間戳)。在該情況下,表示相同項目的不同版本的記錄可以被分配不同的合成鍵 值。如果使用整數(shù),(例如,如由使用的位數(shù)確定的)可能的首要鍵值的范圍可以足夠 大,以至于如果首要鍵浮動(roll over),則已經(jīng)從壓縮記錄文件中移除先前被分配了給定 首要鍵值的任何記錄。例如,可以移除和存檔或丟棄舊的交易。
在圖2A所示的例子中,記錄200由字母分類的首要鍵值標(biāo)識A,AB, CZ,…。系統(tǒng)100壓縮具有首要鍵值A(chǔ)-DD的第一組N個記錄,以生成標(biāo)為塊1的對應(yīng) 的壓縮塊。下一組記錄包括具有首要鍵值DX-GF的接下來的N個分類記錄。文件管理 模塊104可以使用各種無損數(shù)據(jù)壓縮算法(例如,Lempel-Ziv型算法)中的任意。從壓 縮記錄文件202組合每個相繼的壓縮塊。
用于生成壓縮塊的數(shù)目為N的記錄可以被選擇以在壓縮效率和解壓縮速度之間 折衷。該壓縮可以用取決于正被壓縮的數(shù)據(jù)的特性和正被壓縮的數(shù)據(jù)的尺寸的給定因子 R來減少平均的數(shù)據(jù)尺寸(例如,當(dāng)更多數(shù)據(jù)正被壓縮時R通常更小)。壓縮還可以具 有平均尺寸O的關(guān)聯(lián)開銷(例如壓縮相關(guān)數(shù)據(jù))。從每個尺寸X的M個記錄中生成的得 到的壓縮記錄文件的平均尺寸可以被表述為「M/N」(RNX+0),其對于大量塊可以近似 為RMY+OM/N。因此,更大的N值可以在某些情況下通過減少R并減少耗費對文件的 尺寸的開銷貢獻(xiàn)來提供更大的壓縮。更小的N值減少了解壓縮給定的壓縮塊來訪問可以 在塊中包含的記錄所需的時間。
在其他實施方式中,不同的壓縮塊可以包括不同數(shù)量的記錄。每個塊可以具有 根據(jù)預(yù)定范圍的許多記錄。例如,第一塊包括具有首要鍵值1-1000的記錄,且第二塊包 括具有首要鍵值1001-2000的記錄,等等。在該例子中的壓縮塊中的記錄的數(shù)量可以不 同,因為不一定存在每個首要鍵值(例如,在現(xiàn)有數(shù)值字段用作自然鍵的情況下)。
在一些實施方式中,不同的壓縮塊在一些情況下可以包括目標(biāo)數(shù)量的記錄,且 在例外情況下可以包括更多或更少的記錄。例如,如果一組記錄以如下記錄結(jié)束,即其 首要鍵值不同于按分類的順序接下來的記錄的首要鍵值的記錄,則使用那些記錄以生成 壓縮塊。如果一組記錄以如下的記錄結(jié)束,即其首要鍵值相同于按分類的順序接下來的 記錄的首要鍵值的記錄,則向該組添加具有該首要鍵值的所有的附加的記錄。以此方 式,相同的首要鍵值不從一個壓縮塊橫跨到下一個。
索引和搜索模塊108為每個壓縮塊在索引文件204中生成入口。索引入口包括 鍵字段206,其例如通過在對應(yīng)的未壓縮的該組記錄中的第一記錄的首要鍵值來標(biāo)識每個 壓縮塊。這些入口還包括標(biāo)識所標(biāo)識的壓縮塊在壓縮記錄文件202內(nèi)的存儲位置的位置字段208。例如,位置字段可以包含以記錄存儲器106中的絕對地址形式、或以從記錄存 儲器106中的壓縮記錄文件202的開始的地址的偏移量的形式的指針。
為了搜索壓縮記錄文件202中的給定記錄,模塊108可以基于鍵字段206執(zhí)行索 引文件204的搜索(例如二進(jìn)制搜索)。對于提供的鍵值(例如由代理之一提供),模塊 108定位包括與包括提供的鍵值的鍵值范圍對應(yīng)的記錄的塊。具有提供的鍵值的記錄可 以或可以不被包括在用于生成所定位的塊的該組記錄中,但是如果在記錄200中存在該 記錄,則該記錄已經(jīng)被包括,因為記錄200先前根據(jù)首要鍵值分類了。然后,模塊108 解壓縮所定位的塊,并搜索具有提供的鍵值的記錄。在首要鍵值對每個記錄不唯一的情 況下,模塊108可以在壓縮塊中找到具有提供的鍵值的多個記錄。在鍵字段206包括一 組中的第一記錄的首要鍵的該例子中,模塊208搜索分別具有比提供的鍵值更早和更后 的鍵值的兩個連貫的索引入口,并返回與具有之前的鍵值的入口對應(yīng)的塊。在一些情況 下,提供的鍵值可以與索引入口中的鍵值相同,在該情況下,模塊208返回對應(yīng)于該入 口的塊。
在不同實施方式中,存在不同方式使得索引文件204中的入口標(biāo)識與從其中生 成對應(yīng)塊的記錄對應(yīng)的鍵值范圍。如在圖2A所示的實施方式中,鍵值的范圍可以是在用 于生成塊的記錄的兩個極值鍵值(例如,在字母分類順序的首要鍵值中的第一和最后, 或在數(shù)值分類順序的首要鍵值中的最小和最大)之間的范圍。該索引入口可以包括定義 該范圍的任一或兩個極值。在一些實施方式中,如果索引入口包括定義給定塊的范圍的 最小鍵值,則與壓縮記錄文件中的最后塊關(guān)聯(lián)的最后索引入口還可以包括定義該塊的范 圍的最大鍵值。然后,該最大鍵值可以在搜索壓縮記錄文件以確定給定鍵值何時超出范 圍時使用。
或者,鍵值的范圍可以是延伸超過用于生成塊的記錄的鍵值的范圍。例如,在 塊從具有1和1000之間的數(shù)值首要鍵值的記錄中生成的情況下,在記錄中表示的最小鍵 值可以大于1,且在記錄中表示的最大鍵值可以小于1000。該索引入口可以包括定義該 范圍的極值1和1000中的任一或兩者。
當(dāng)在記錄的最初的組被處理以生成壓縮記錄文件之后附加的記錄到達(dá)時,那些 記錄可以以未壓縮形式被存儲在緩沖器中且被搜索。或者,可以遞增地處理附加組的記 錄,并將其存儲為可由附加的索引文件訪問的附加的壓縮記錄文件。在一些情況下,即 使當(dāng)壓縮小數(shù)量的附加記錄可能不提供存儲尺寸的大程度減少時,壓縮附加的記錄以維 持用于存取記錄的統(tǒng)一過程也可能是有利的??梢园匆?guī)則的時間間隔(例如,每30秒或 每5分鐘)或在已經(jīng)接收了預(yù)定數(shù)量的附加記錄之后(例如,每1000個記錄或每10000 個記錄),重復(fù)地處理附加的記錄。如果基于時間間隔來處理到來的記錄,在一些間隔 中,可能沒有到來的記錄或存在全被壓縮為單個壓縮塊的很少量記錄。
參考圖2B,在已經(jīng)生成了初始壓縮的記錄文件202之后已經(jīng)由系統(tǒng)100接收了 附加記錄的例子中,附加的壓縮記錄文件210可以被附屬到初始的壓縮記錄文件202以形 成復(fù)合壓縮記錄文件211。系統(tǒng)100通過首要鍵值對附加的記錄進(jìn)行分類,并壓縮這些組 N個記錄來生成壓縮記錄文件210的壓縮塊。在標(biāo)為塊91的附屬文件210中的第一壓縮 塊具有首要鍵值BA-FF。模塊108生成包括可用于搜索在附屬文件210內(nèi)表示的附加記 錄的入口的附加索引文件212。該新的索引文件212可以被附屬到先前的索引文件204。9
可以被附屬任意數(shù)量的壓縮記錄文件以形成復(fù)合壓縮記錄文件。如果索引和搜 索模塊108正在復(fù)合壓縮記錄文件內(nèi)搜索具有給定鍵值的記錄,則模塊108使用對應(yīng)的索 引文件搜索每個附屬壓縮記錄文件內(nèi)的記錄?;蛘?,請求給定記錄的代理可以指定要搜 索的具有復(fù)合壓縮記錄文件的一些數(shù)量的壓縮記錄文件(例如,最近生成的10個,或最 近一小時內(nèi)生成的任何)。
在給定量的時間(例如,每M小時)之后或在已經(jīng)附屬了給定數(shù)量的壓縮記錄 文件之后,系統(tǒng)100可以整合(consolidate)這些文件以從復(fù)合壓縮記錄文件和新的對應(yīng)的 索引文件生成單個壓縮記錄文件。在整合之后,可以搜索單個索引以定位可能包含給定 記錄的壓縮塊,得到更有效的記錄訪問。在整合時,系統(tǒng)100解壓縮這些壓縮記錄文件 以恢復(fù)對應(yīng)組的已分類記錄,通過首要鍵值對這些記錄分類,并生成新的壓縮記錄文件 和索引。由于已經(jīng)對恢復(fù)的各組記錄的每個進(jìn)行了分類,因此可以通過根據(jù)首要鍵值合 并先前分類的列表以生成單組分類的記錄來有效地對記錄分類。
參考圖2C,取決于多少附加記錄已經(jīng)到達(dá)以及已經(jīng)多么頻繁地處理這些記錄, 復(fù)合壓縮記錄文件211包括初始的壓縮記錄文件202、附加的壓縮記錄文件210和一些附 加的壓縮記錄文件220、221......。每個壓縮記錄文件可以具有可以用于搜索該文件的壓縮塊內(nèi)的給定記錄的關(guān)聯(lián)索引文件。在該例子中,壓縮記錄文件220之一足夠小以至于僅 具有單個壓縮塊(BLOCK 95),且因此不一定需要關(guān)聯(lián)索引文件,但可能具有指示在該 塊中的首要鍵值的范圍和其在存儲器中的位置的關(guān)聯(lián)數(shù)據(jù)。在整合之后,從不同附屬壓 縮記錄文件恢復(fù)的記錄被處理以生成單個壓縮記錄文件230。
在單調(diào)地分配首要鍵的情況下,不僅在壓縮記錄文件內(nèi)而且從一個文件到下一 個文件自動地對記錄分類,而不需要整合文件以便在單個索引搜索中訪問記錄。參考圖 2D,系統(tǒng)100接收一組記錄250,由作為記錄的首要鍵的按到達(dá)順序分配的連貫整數(shù)來標(biāo) 識該組記錄250。因此,記錄250由首要鍵自動分類。在該例子中,初始壓縮記錄文件 252包括每個包括100個記錄的壓縮塊,且索引文件邪4包括用于壓縮塊中的第一記錄的 首要鍵值的鍵字段256、和標(biāo)識對應(yīng)的存儲位置的位置字段258。由于在已經(jīng)生成了初始 壓縮記錄文件252之后到達(dá)的記錄將自動地具有分類的順序中稍后的首要鍵值,因此附 屬壓縮記錄文件260和對應(yīng)的索引文件262不需要被整合,以基于單個索引搜索來使能有 效的記錄訪問。例如,索引文件262可以僅被附屬到索引文件254,且兩個索引可以被 一起搜索(例如,在單個二進(jìn)制搜索中)以在壓縮記錄文件252或沈0的任一中定位壓縮 塊。
復(fù)合壓縮記錄文件261可以可選地被整合以消除可能已經(jīng)被插入在壓縮記錄文 件252的末尾的不完整的塊。在這種整合中,將僅需要解壓縮第一文件252中的最后壓 縮塊,且取代合并解壓縮的各組記錄,可以將各組記錄簡單地級聯(lián)以形成新的分類的一 組記錄以被劃分為各組100個記錄,然后各組100個記錄被再次壓縮以形成新的壓縮記錄 文件。
使用連貫整數(shù)合成首要鍵值的另一優(yōu)點在于,如果正要基于首要鍵值來對這些 記錄分區(qū),則由于在鍵值之間不存在間斷,因此可以自動地平衡這些分區(qū)。
可以使用各種技術(shù)的任一種來更新記錄并無效可能存在于壓縮記錄文件中的任 何先前版本的記錄。在一些情況下,記錄不需要被單獨移除或更新(例如,日志、交易、電話呼叫)。在這些情況下,在預(yù)定數(shù)量的壓縮塊的組中,例如從壓縮記錄文件的開 始,移除和丟棄或存檔舊的記錄。在一些情況下,可以移除全部壓縮記錄文件。
在一些情況下,通過添加用于在壓縮塊中存儲的新的更新記錄來更新記錄的一 個或多個值,且先前接收的記錄版本(具有相同的首要鍵值)可以留下來被存儲在不同的 壓縮塊中。然后,可能存在記錄的多個版本,且使用某種技術(shù)來確定哪個是記錄的有效 版本。例如,出現(xiàn)在任何壓縮記錄文件的(最近接收的)最后版本可以含蓄地或明示地指 示為有效版本,且任何其他版本是無效的。在該情況下搜索具有給定首要鍵的記錄可以 包括找到按出現(xiàn)順序由該首要鍵標(biāo)識的最后記錄?;蛘?,記錄可以通過寫“無效記錄” 被無效,該“無效記錄”指示任何先前版本的記錄都不是有效,而不一定添加新的版本 的記錄。
系統(tǒng)100通過不同的處理來協(xié)調(diào)對在記錄存儲器106中存儲的壓縮記錄文件的 訪問。各種同步技術(shù)中的任一個可用于協(xié)調(diào)對一個或多個壓縮記錄文件內(nèi)的壓縮塊的訪 問。系統(tǒng)100保證修改文件的任何處理(例如,通過附屬或整合數(shù)據(jù))不互相干擾。例 如,如果新的記錄在正發(fā)生整合時到達(dá),系統(tǒng)100可以等待直到完成了整合處理,或可 以生成壓縮塊,并且在將它們附屬到現(xiàn)有壓縮記錄文件之前臨時存儲它們。從壓縮記錄 文件讀取的處理可以負(fù)載完整的文件的一部分,且可以忽略可能正經(jīng)歷修改的任何不完 整的部分。
系統(tǒng)100存儲使能基于除了首要鍵以外的記錄屬性來搜索記錄的附加數(shù)據(jù)。壓 縮記錄文件的次要索引包括基于被指定為次要鍵(secondary key)的屬性值提供一個或多 個首要鍵值的信息。被指定為次要鍵的每個屬性可以與對應(yīng)的次要索引關(guān)聯(lián)。例如,每 個次要索引可以被組織為具有根據(jù)關(guān)聯(lián)次要鍵分類的行的表。每行包括次要鍵值和包括 次要鍵值的記錄的一個或多個首要鍵值。因此,如果代理開始搜索包括給定次要鍵值的 任何記錄,貝IJ系統(tǒng)100查找(多個)首要鍵以用來搜索包括(多個)記錄的(多個)壓縮 塊的壓縮記錄文件的索引。次要索引可以大(例如,以記錄的數(shù)量的量級),且在某些情 況下可以被存儲在存儲了壓縮記錄文件的存儲介質(zhì)中。
在一些情況下,被指定為次要鍵的屬性值可以對每個記錄是唯一的。在這種情 況下,存在在次要鍵和首要鍵之間的一一對應(yīng),且接口模塊112可以向代理呈現(xiàn)次要鍵 屬性,好像其是首要鍵一樣。
可以在新的壓縮記錄文件被附屬到復(fù)合壓縮記錄文件時更新每個次要索引。或 者,次要鍵可以與每個壓縮記錄文件的不同次要索引關(guān)聯(lián),且當(dāng)壓縮記錄文件被整合時 可以將次要索引整合到單個次要索引中。
篩選(screening)數(shù)據(jù)結(jié)構(gòu)可以與壓縮記錄文件關(guān)聯(lián),以確定包括給定屬性值的 記錄被包括在該文件的壓縮塊中的可能性。例如,使用重疊編碼的簽名(OES)作為篩 選數(shù)據(jù)結(jié)構(gòu)使得系統(tǒng)100能夠確定具有給定鍵值(首要鍵或次要鍵)的記錄一定不存在 (“否定”結(jié)果)或具有給定鍵值的記錄是否具有存在的可能性(“肯定”結(jié)果)。對 于肯定結(jié)果,系統(tǒng)訪問適當(dāng)?shù)膲嚎s塊以檢索記錄(“確定的肯定”結(jié)果),或確定該記錄 不存在(“假肯定”結(jié)果)。對于否定結(jié)果,系統(tǒng)可以向代理給出否定結(jié)果,而無需花 費時間解壓縮和搜索壓縮塊來尋找不存在的記錄。OES的尺寸影響了肯定結(jié)果隔多久成 為假肯定,且更大的OES尺寸通常導(dǎo)致更少的假肯定結(jié)果。對于給定的OES尺寸,更少的不同可能的鍵值通常導(dǎo)致更少的假肯定。
其他類型的篩選數(shù)據(jù)結(jié)構(gòu)是可能的??梢詾槊總€壓縮記錄文件提供用于給定的 首要或次要鍵的篩選數(shù)據(jù)結(jié)構(gòu)?;蛘?,可以為每個壓縮塊提供用于鍵的篩選數(shù)據(jù)結(jié)構(gòu)。
圖3A和圖3B示出了如下的表,該表提供用于獲得各種尺寸的示例OES篩選數(shù) 據(jù)結(jié)構(gòu)的鍵值(列)和在壓縮記錄文件中表示的各種數(shù)量的不同鍵值(行)的假肯定結(jié) 果的可能性值。對于OES,取決于OES的尺寸和不同鍵值的數(shù)量,可以在OES的相同 部分中指示存在多于一個鍵值,潛在地導(dǎo)致如果存在另一個則那些鍵值之一的假肯定結(jié) 果。該示例OES的尺寸從21° = 1024位(在圖3A的表中)到228 = 256兆位(圖3B的 表中)改變。該不同鍵值的數(shù)量從100(在圖3A的表中)到100000000(圖3B的表中) 改變。對于這兩個表,在右上的空白單元對應(yīng)于0%,且左下的空白單元對應(yīng)于100%。 對于其中假肯定可能性低(例如接近零)的單元,篩選數(shù)據(jù)結(jié)構(gòu)可能大于提供足夠篩選所 必需的。對于其中假肯定可能性顯著(例如> 50% )的單元,篩選數(shù)據(jù)結(jié)構(gòu)可能太小以 至于不能提供足夠的篩選。該例子對應(yīng)于用于使用每個鍵值四個哈希碼來生成OES的技 術(shù)。對于給定數(shù)量的不同鍵,OES篩選數(shù)據(jù)結(jié)構(gòu)的其他例子可以得出假肯定可能性的不 同表。
由于可能不知道在壓縮記錄文件中表示的不同鍵值的數(shù)量,因此系統(tǒng)100可以 基于從其生成了該文件的記錄的數(shù)量來選擇壓縮記錄文件的篩選數(shù)據(jù)結(jié)構(gòu)的尺寸。在選 擇尺寸時,在減少假肯定可能性和存儲篩選數(shù)據(jù)結(jié)構(gòu)所需的存儲器空間之間存在折衷。 在該折衷種的一個因素為搜索不存在的鍵值的可能性。如果要被查找的大多數(shù)鍵值很可 能存在于解壓縮記錄中,則完全可以不需要篩選數(shù)據(jù)結(jié)構(gòu)。如果存在將無法找到鍵值的 顯著可能性,則為相對大的篩選數(shù)據(jù)結(jié)構(gòu)分配存儲空間可以節(jié)省相當(dāng)?shù)臅r間。
與壓縮記錄文件關(guān)聯(lián)的篩選數(shù)據(jù)結(jié)構(gòu)的尺寸可以取決于該文件是對應(yīng)于記錄的 初始或整合的大數(shù)據(jù)庫還是對應(yīng)于對更大的數(shù)據(jù)庫的更小更新??梢允褂孟鄬Ω〉暮Y 選數(shù)據(jù)結(jié)構(gòu)尺寸用于在規(guī)則的更新間隔期間附屬的壓縮記錄文件,因為在每個更新中通 常存在更少的不同鍵值。而且,隨著在許多更新之后壓縮記錄文件的數(shù)量增長,小尺寸 可以減少所需的存儲空間。篩選數(shù)據(jù)結(jié)構(gòu)的尺寸可以基于在更新中的預(yù)期的記錄數(shù)量和/ 不同的鍵值,且基于預(yù)期更新數(shù)量。例如,如果通過M小時時間段每5分鐘附屬更新文 件,將在該天結(jié)束時存在288個壓縮記錄文件。至少一個假肯定結(jié)果的可能性將是來自 圖3A和圖3B的表的適當(dāng)值的288倍(假設(shè)不同更新的結(jié)果是獨立的)。在整合之后, 更大的篩選數(shù)據(jù)結(jié)構(gòu)可適用于整合的壓縮記錄文件,因為不同鍵值的數(shù)量可能顯著地增 加。
壓縮記錄文件可以具有用于首要鍵和用于次要鍵或用于鍵的一些子集的篩選數(shù) 據(jù)結(jié)構(gòu)。例如,系統(tǒng)100可以為首要鍵提供篩選數(shù)據(jù)結(jié)構(gòu),并且僅僅為那些預(yù)期在搜索 記錄時最經(jīng)常使用的次要鍵提供篩選數(shù)據(jù)結(jié)構(gòu)。
圖4A示出了用于搜索具有給定的首要鍵值的一個或更個記錄的過程400的流程 圖。過程400確定402是否存在與第一壓縮記錄文件關(guān)聯(lián)的篩選數(shù)據(jù)結(jié)構(gòu)。如果是,過 程400處理404篩選數(shù)據(jù)結(jié)構(gòu)以獲得肯定或否定的結(jié)果。如果給定的首要鍵值沒有通過 篩選(否定結(jié)果),則該過程400檢查406下一壓縮記錄文件,并且如果該文件存在則在 該文件上重復(fù)。如果給定的首要鍵值通過篩選(肯定結(jié)果),則該過程400搜索408索引以尋找可包含具有給定首要鍵值的記錄的塊。如果沒有篩選數(shù)據(jù)結(jié)構(gòu)與壓縮記錄文件關(guān) 聯(lián),則過程400搜索408索引而不進(jìn)行篩選。
在搜索408索引之后,如果找到410與包括給定首要鍵值的鍵值范圍關(guān)聯(lián)的壓縮 塊,則過程400解壓縮412處于由索引入口標(biāo)識的位置上的塊,且搜索414得到的記錄以 尋找具有給定首要鍵值的一個或多個記錄。然后,過程檢查416下一壓縮記錄文件,且 如果該文件存在則在該文件上重復(fù)。如果沒找到壓縮塊(例如,如果給定的首要鍵值小 于第一塊中的最小鍵值或大于最后塊中的最大鍵值),則該過程400檢查416下一壓縮記 錄文件,并且如果該文件存在則在該文件上重復(fù)。
圖4B示出了用于搜索具有給定的次要鍵值的一個或多個記錄的過程450的流程 圖。過程450確定452是否存在與第一壓縮記錄文件關(guān)聯(lián)的篩選數(shù)據(jù)結(jié)構(gòu)。如果是,過 程450處理妨4篩選數(shù)據(jù)結(jié)構(gòu)以獲得肯定或否定的結(jié)果。如果給定的次要鍵值沒有通過 篩選(否定結(jié)果),則該過程450檢查456下一壓縮記錄文件,并且如果該文件存在則在 該文件上重復(fù)。如果給定次要鍵值通過篩選(肯定結(jié)果),則該過程450查找458與包含 給定次要鍵的記錄對應(yīng)的首要鍵。如果沒有篩選數(shù)據(jù)結(jié)構(gòu)與壓縮記錄文件關(guān)聯(lián),則過程 450查找458首要鍵,而不進(jìn)行篩選。
對于找到的每個首要鍵,過程450搜索460索引以尋找可包含具有給定首要鍵值 的記錄的塊。在搜索460索引之后,如果找到462與包括給定首要鍵值的鍵值范圍關(guān)聯(lián) 的壓縮塊,則過程450解壓縮464處于由索引入口標(biāo)識的位置上的塊,且搜索466得到的 記錄以尋找具有給定首要鍵值的一個或多個記錄。然后,該過程檢查468下一壓縮記錄 文件,且在該文件上——如果其存在——重復(fù)。如果沒有找到壓縮塊,則過程450檢查 468下一壓縮記錄文件,且如果該文件存在則在該文件上重復(fù)。
可以按出現(xiàn)的順序通過過程400或過程450來返回用給定的首要或次要鍵找到的 多個記錄,或者在某些情況下,僅返回記錄的最后版本。
文件管理模塊104還使用可附屬查找文件來管理記錄的存儲和訪問。在使用可 附屬查找文件的一個例子中,系統(tǒng)100管理大的首要數(shù)據(jù)集合(例如,包括幾百個百萬兆 字節(jié)的首要數(shù)據(jù))。該首要數(shù)據(jù)集合將通常被存儲在(可能被級聯(lián)為復(fù)合壓縮記錄文件 的)一個或一系列多壓縮記錄文件中。但是,如果在其到達(dá)之后很短時間地(例如在一分 鐘或更少時間內(nèi))需要數(shù)據(jù)可見,則用可附屬查找文件補(bǔ)充壓縮記錄文件可能有用。該 可附屬查找文件能夠減少在新數(shù)據(jù)到達(dá)的時間與該數(shù)據(jù)變得可用于各種查詢處理的時間 之間的延遲。新的數(shù)據(jù)可以從例如有效地寫數(shù)據(jù)到文件的另一處理得到。系統(tǒng)100能夠 管理對可能不完整的部分可附屬查找文件的訪問。在一些系統(tǒng)中,如果查詢處理遇到部 分文件,則將導(dǎo)致程序錯誤。為了避免這種程序錯誤,這些系統(tǒng)中的一些將在每次查詢 文件時重新載入與該文件關(guān)聯(lián)的索引。在每次查詢時重新載入索引可能在某些情形下是 低效的,且可能消耗相當(dāng)量的系統(tǒng)資源。
通常,可附屬查找表是未壓縮數(shù)據(jù)文件,其容忍在文件的末尾處添加的部分記 錄??筛綄俨檎椅募軌蜃R別不完整的記錄,且即使當(dāng)查詢的文件包含不完整記錄時也 能夠處理查詢請求??筛綄俨檎椅募痪哂袎嚎s記錄文件的如上所述的那類索引文件; 而是,可附屬查找文件具有映射每個記錄在相對快工作存儲器(例如,易失性存儲介 質(zhì),諸如動態(tài)隨機(jī)存取存儲器)中存儲的數(shù)據(jù)結(jié)構(gòu)中的位置的“動態(tài)索引”。例如,這13些動態(tài)索引可以具有哈希表、二進(jìn)制樹、b_樹或另一類型的關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)。圖5是通過 其查詢可附屬查找文件的處理的例子。關(guān)于可附屬查找文件的操作的處理流程500包括 載入處理502和查詢處理504。在文件被載入506之后(諸如當(dāng)該文件被查詢時),確定 508該文件的長度。在已經(jīng)確定508 了該文件的長度之后,在存儲器位置(諸如在工作的 存儲器中)存儲510所確定的長度。
然后,系統(tǒng)確定512 “結(jié)束點”,其是表示文件內(nèi)的最后完整的記錄的結(jié)束的位 置。在一些情況下,諸如當(dāng)沒有新的數(shù)據(jù)正被寫入該文件時,該結(jié)束點將僅表示該文件 的結(jié)束。結(jié)束點還可以表示在新數(shù)據(jù)的第一片段(segment)之前緊挨著的位置(見圖6)。 在已經(jīng)確定512 了結(jié)束點之后,在存儲器位置(諸如在主要存儲器中)存儲514它。
在查詢處理504期間,系統(tǒng)100決定是處理該查詢522還是更新518與所查詢的 文件關(guān)聯(lián)的關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)。為了進(jìn)行該確定,該系統(tǒng)比較516該文件的當(dāng)前長度與先前 確定并在存儲器中存儲的文件長度??梢砸源罅糠绞絹磉M(jìn)行該確定。例如,該系統(tǒng)可以 審查文件元數(shù)據(jù)、文件頭,或可以搜索該文件以尋找新的行字符(line character)。如果該 文件的長度不超過先前存儲的文件長度,則沒有新的數(shù)據(jù)被添加到數(shù)據(jù)文件的結(jié)尾,且 處理522該查詢。如果該文件的當(dāng)前長度超過先前存儲的文件長度,在先前存儲的結(jié)束 點開始,更新518關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)。以此方式,可以更新關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)而不必須整個重 新載入或重新建立它。相反,已經(jīng)被載入存儲器中的數(shù)據(jù)維持被載入,且在先前存儲的 結(jié)束點開始附屬新的數(shù)據(jù)。在處理該查詢之前,還更新520文件長度和結(jié)束點。在此處 理中可以執(zhí)行諸如錯誤檢查的其他步驟。例如,如果系統(tǒng)確定該文件的當(dāng)前長度小于先 前存儲的文件長度,可以標(biāo)記錯誤。
圖6A和圖6B是文件內(nèi)的結(jié)束點的位置的例子,如由圖5中的步驟512確定的。 在圖虹中,可附屬查找文件600包括完整的記錄602和不完整的記錄604。在該情況下, 結(jié)束點606是表示可附屬查找文件600內(nèi)的最后完整的記錄的結(jié)尾的位置,且就在不完整 記錄604的開始之前。
在圖6B的例子中,可附屬查找文件650由完全完整的記錄652構(gòu)成。在該情況 下,結(jié)束點肪4再次表示可附屬查找文件650內(nèi)的最后的完整記錄的結(jié)尾;但是,結(jié)束點 654還表示該文件的結(jié)尾。
數(shù)據(jù)可以連續(xù)的附屬到可附屬查找文件,其依次被連續(xù)地更新。因此,可附屬 查找文件變得在尺寸上越來越大,且其載入可附屬查找文件所花費的時間相應(yīng)地增加。 可附屬查找文件可以與其他形式的動態(tài)可載入的索引文件相組合以避免可附屬查找文件 變得太大以不能在可期望的時間量內(nèi)載入。
在一些應(yīng)用中,要被載入到可查詢數(shù)據(jù)結(jié)構(gòu)的連續(xù)流的數(shù)據(jù)可以以高速率到 達(dá),且可以期望在其到達(dá)之后很快訪問該數(shù)據(jù)。當(dāng)數(shù)據(jù)到達(dá)時,由雙處理來處理它。首 先,復(fù)制數(shù)據(jù),且同時被添加到可附屬查找文件(以便其立即可見且可由文件系統(tǒng)訪問) 和第二文件或“緩沖器”兩者。該數(shù)據(jù)繼續(xù)在可附屬查找文件和緩沖器兩者中累積直到 滿足預(yù)定義條件。該預(yù)定義條件可以是大量的準(zhǔn)則。例如,預(yù)定義準(zhǔn)則可以是時間長 度、文件尺寸、數(shù)據(jù)量或數(shù)據(jù)內(nèi)的記錄數(shù)量。
在滿足預(yù)定義條件之后,已經(jīng)在緩沖器中積累的數(shù)據(jù)塊被添加到壓縮記錄文件 用于長期存儲。在數(shù)據(jù)被添加到壓縮記錄文件之后,創(chuàng)建新的可附屬查找文件,且開始從數(shù)據(jù)流收集數(shù)據(jù)。舊的可附屬查找文件完成,且在壓縮記錄文件包含所有對應(yīng)的數(shù)據(jù) 之后被刪除。
當(dāng)由緩沖器和可附屬查找文件兩者接收數(shù)據(jù)的同時,可以對緩沖器中的數(shù)據(jù)分 類。因為分類該數(shù)據(jù)消耗了大量時間和系統(tǒng)資源,所以盡可能早地開始分類處理以允許 更快地將數(shù)據(jù)轉(zhuǎn)移為壓縮記錄文件是有利的。
或者,可以使用可附屬查找文件作為緩沖器。在該實施例中,該數(shù)據(jù)在可附屬 查找文件中累積直到滿足預(yù)定義條件。然后,可附屬查找文件的內(nèi)容被添加到壓縮記錄 文件,同時舊的可附屬查找表完成,并創(chuàng)建新的可附屬查找文件,且開始從數(shù)據(jù)流收集 數(shù)據(jù)。再次,舊的可附屬查找文件在壓縮記錄文件包含所有對應(yīng)的數(shù)據(jù)之后被刪除。
在該處理的每個循環(huán)期間,將可期望同時向壓縮記錄文件添加數(shù)據(jù)并刪除可附 屬查找文件中的所有數(shù)據(jù)。但是,因為兩個更新可能導(dǎo)致競爭(race)情況,因此將存在 顯著的窗口,其中已經(jīng)刪除了舊的可附屬查找文件但還沒有利用其數(shù)據(jù)來更新壓縮記錄 文件。這將導(dǎo)致臨時的數(shù)據(jù)丟失。為了防止這一點,可以在該處理的附加循環(huán)中保持舊 的可附屬查找文件。索引和搜索模塊108被配置為檢測其中可能在可附屬查找文件和壓 縮記錄文件兩者中存在復(fù)制數(shù)據(jù)的情況,且如果在該情況期間進(jìn)行查詢,則索引和搜索 模塊108過濾出復(fù)制數(shù)據(jù)。
或者,文件管理模塊104可以在例如狀態(tài)信息文件107中維持狀態(tài)信息,以在數(shù) 據(jù)緩沖器已經(jīng)被寫入壓縮查找文件或可附屬查找文件的內(nèi)容已經(jīng)被添加到了壓縮查找文 件之后調(diào)整可附屬查找文件的引退。狀態(tài)信息文件107標(biāo)識當(dāng)前有效的記錄關(guān)聯(lián)數(shù)據(jù)結(jié) 構(gòu)。例如,狀態(tài)信息文件107標(biāo)識所有壓縮數(shù)據(jù)文件和它們包含的塊數(shù)量以及當(dāng)前有效 的所有可附屬查找文件。索引和搜索模塊108將忽視不在狀態(tài)信息文件中出現(xiàn)的任何可 附屬查找文件、壓縮數(shù)據(jù)文件和壓縮數(shù)據(jù)文件內(nèi)的塊。當(dāng)創(chuàng)建新的可附屬查找文件時, 接下來是由文件管理模塊104觀察的協(xié)議的例子。文件管理模塊104向壓縮數(shù)據(jù)文件添 加新的數(shù)據(jù),并創(chuàng)建新的可附屬查找文件;文件管理模塊104鎖閉狀態(tài)信息文件以防止 其被索引和搜索模塊108訪問;文件管理模塊更新狀態(tài)信息文件以將新數(shù)據(jù)的添加、舊 的可附屬查找文件的移除和新的可附屬查找文件的創(chuàng)建反映給壓縮數(shù)據(jù)文件;文件管理 模塊解鎖狀態(tài)信息文件,允許其再次被索引和搜索模塊108訪問;文件管理模塊104移除 舊的可附屬查找文件。
索引和搜索模塊108遵循以下示例協(xié)議其鎖閉狀態(tài)信息文件以防止文件管理 模塊104更新它;其根據(jù)在狀態(tài)信息文件中標(biāo)識的可附屬查找文件和壓縮數(shù)據(jù)文件來執(zhí) 行該查詢;其解鎖狀態(tài)信息文件以再一次允許文件管理模塊104來更新狀態(tài)信息文件。
狀態(tài)信息文件107可以被存儲在盤或存儲器中。該協(xié)議保證搜索模塊將或者看 到在從舊的可附屬查找文件并入數(shù)據(jù)之前的舊的可附屬查找文件和壓縮數(shù)據(jù)文件,或者 看到新的可附屬查找文件和更新的壓縮數(shù)據(jù)文件。
當(dāng)在同時存在新的可附屬查找文件和舊的可附屬查找文件時進(jìn)行查詢時,在一 個實現(xiàn)中,系統(tǒng)查看目錄以看到哪個可附屬查找文件是當(dāng)前有效的(例如,由于新的可 附屬查找表可能不變?yōu)橛行е钡狡浔粍?chuàng)建之后的某個量的延遲,因此新的可附屬查找文 件或舊的可附屬查找文件可能是有效的)?;蛘?,當(dāng)系統(tǒng)處理查詢時,其首先查看最新的 可附屬查找文件,然后查看舊的可附屬查找文件。如果還沒有定位被查詢的數(shù)據(jù),則系統(tǒng)查看壓縮記錄文件。
在圖7中,由系統(tǒng)100執(zhí)行的過程700確定文件的長度702,并將文件的長度存 儲在第一存儲器位置中704。過程700確定文件內(nèi)的最后完整的記錄的結(jié)束點706,并在 第二存儲器位置中存儲該結(jié)束點708。該過程比較在第一存儲器位置中存儲的文件長度 與文件的當(dāng)前長度710,并如果文件的當(dāng)前長度超過在第一存儲器位置中存儲的文件的長 度,在該結(jié)束點開始,更新與該文件關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)712。
在圖8中,由系統(tǒng)100進(jìn)行的過程800同時向第一文件和緩沖器添加來自數(shù)據(jù)流 的數(shù)據(jù)802,且在滿足預(yù)定義條件之后將與緩沖器關(guān)聯(lián)的數(shù)據(jù)轉(zhuǎn)移為壓縮文件804。過程 800在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后,創(chuàng)建第二文件以從數(shù)據(jù)流接收數(shù)據(jù) 806。
可以使用在計算機(jī)上執(zhí)行的軟件來實現(xiàn)上述記錄存儲和檢索方法,包括系統(tǒng)100 的模塊和由系統(tǒng)100進(jìn)行的過程。例如,軟件形成在一個或多個已編程或可編程計算機(jī) 系統(tǒng)(其可以是各種架構(gòu),諸如分布式、客戶端/服務(wù)器式、或網(wǎng)格式)上執(zhí)行的一個或 多個計算機(jī)程序中的過程,該計算機(jī)系統(tǒng)各自包括至少一個處理器、至少一個數(shù)據(jù)存儲 系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備或端口和至少 一個輸出設(shè)備或端口。軟件可以形成例如提供與計算圖的設(shè)計和配置相關(guān)的其他服務(wù)的 更大程序的一個或多個模塊。圖中的節(jié)點和元件可以被實現(xiàn)為在計算機(jī)可讀介質(zhì)中存儲 的數(shù)據(jù)結(jié)構(gòu)、或符合在數(shù)據(jù)儲存庫中儲存的數(shù)據(jù)模型的其他組織的數(shù)據(jù)。
軟件可以被提供在諸如可由通用或?qū)S每删幊逃嬎銠C(jī)讀取的CD-ROM之類的存 儲介質(zhì)上,或通過網(wǎng)絡(luò)的通信介質(zhì)將其傳遞(在傳播的信號中被編碼)到它被執(zhí)行的計算 機(jī)。所有功能可以在專用計算機(jī)上或使用專用硬件(諸如協(xié)處理器)來執(zhí)行。軟件可以 按分布式方式實現(xiàn),其中由軟件指定的計算的不同部分被不同計算機(jī)執(zhí)行。每個這種計 算機(jī)程序優(yōu)選地被存儲在或被下載到可由通用或?qū)S每删幊逃嬎銠C(jī)讀取的存儲介質(zhì)或設(shè) 備(例如,固態(tài)存儲器或介質(zhì)、或磁或光介質(zhì)),用于當(dāng)存儲介質(zhì)或設(shè)備被計算機(jī)系統(tǒng)讀 取時配置和操作該計算機(jī)以進(jìn)行在此描述的過程。本發(fā)明的系統(tǒng)還可以被考慮實現(xiàn)為用 計算機(jī)程序配置的計算機(jī)可讀存儲介質(zhì),其中如此配置的存儲介質(zhì)使得計算機(jī)系統(tǒng)按規(guī) 定且預(yù)定義的方式操作以進(jìn)行在此描述的功能。
已經(jīng)描述了本發(fā)明的大量實施例。但是,將理解,可以在不脫離本發(fā)明的精神 和范圍的情況下進(jìn)行各種修改。例如,上述步驟的一些可以是無關(guān)順序的,且因此可以 按不同于上述順序的順序來執(zhí)行。
要理解,上述描述意欲例示而非限制本發(fā)明的范圍,本發(fā)明的范圍由所附權(quán)利 要求的范圍限定。例如,上述大量功能步驟可以按不同的順序執(zhí)行,而不實質(zhì)影響整個 處理。其他實施例也在以下權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種方法,包括確定文件的長度、并在第一存儲器位置中存儲該文件的長度;確定在該文件內(nèi)的最后完整的記錄的結(jié)束點、并在第二存儲器位置中存儲該結(jié)束點 比較在第一存儲器位置中 存儲的文件的長度與該文件的當(dāng)前長度;以及 如果該文件的當(dāng)前長度超過在第一存儲器位置中存儲的文件的長度,則更新與在結(jié) 束點處開始的文件關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。
2.根據(jù)權(quán)利要求1的方法,其中,所述數(shù)據(jù)結(jié)構(gòu)是關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。
3.根據(jù)權(quán)利要求2的方法,其中,所述數(shù)據(jù)結(jié)構(gòu)是二進(jìn)制樹或哈希表。
4.根據(jù)權(quán)利要求1的方法,其中,所述結(jié)束點還表示文件的結(jié)束。
5.根據(jù)權(quán)利要求1的方法,其中,該結(jié)束點在文件中的不完整記錄之前。
6.根據(jù)權(quán)利要求1的方法,還包括檢查該文件以尋找錯誤。
7.根據(jù)權(quán)利要求6的方法,其中,所述檢查該文件以尋找錯誤的步驟包括確定該文件 的當(dāng)前長度是否小于在第一存儲器位置中存儲的文件的長度
8.根據(jù)權(quán)利要求1的方法,其中,所述文件是未壓縮數(shù)據(jù)文件。
9.一種方法,包括向第一文件和向緩沖器同時添加來自數(shù)據(jù)流的數(shù)據(jù);在滿足預(yù)定義條件之后,將與緩沖器關(guān)聯(lián)的數(shù)據(jù)轉(zhuǎn)移為壓縮文件;以及在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后,創(chuàng)建第二文件以從數(shù)據(jù)流接收數(shù)據(jù)。
10.根據(jù)權(quán)利要求9的方法,其中,在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之 后,刪除第一文件。
11.根據(jù)權(quán)利要求9的方法,其中,狀態(tài)信息標(biāo)識第一文件是否有效。
12.根據(jù)權(quán)利要求11的方法,其中,在與緩沖器關(guān)聯(lián)的數(shù)據(jù)正被轉(zhuǎn)移為壓縮文件的同 時,鎖閉該狀態(tài)信息。
13.根據(jù)權(quán)利要求11的方法,其中,更新所述狀態(tài)信息,以反映第二文件的創(chuàng)建、第 一文件的刪除以及在緩沖器和壓縮文件之間的數(shù)據(jù)轉(zhuǎn)移。
14.根據(jù)權(quán)利要求12的方法,在所述狀態(tài)信息被鎖閉的同時,通過索引或搜索操作不 能訪問該狀態(tài)信息。
15.根據(jù)權(quán)利要求13的方法,其中,所述狀態(tài)信息在它已經(jīng)更新之后被解鎖。
16.根據(jù)權(quán)利要求15的方法,其中,在已經(jīng)更新狀態(tài)信息之后,刪除所述第一文件。
17.根據(jù)權(quán)利要求9的方法,其中,所述預(yù)定義條件基于時間。
18.根據(jù)權(quán)利要求9的方法,其中,所述預(yù)定義條件基于第一文件的尺寸。
19.根據(jù)權(quán)利要求9的方法,其中,所述預(yù)定義條件基于記錄的數(shù)量。
20.—種計算機(jī)可讀的介質(zhì),其存儲用于從設(shè)備信號獲得值的可執(zhí)行指令,所述指令 用于使得計算機(jī)執(zhí)行如下操作確定文件的長度并在第一存儲器位置中存儲所述文件的長度;確定在該文件內(nèi)的最后完整的記錄的結(jié)束點,并在第二存儲器位置中存儲該結(jié)束點。比較在第一存儲器位置中存儲的文件的長度與文件的當(dāng)前長度;以及 如果所述文件的當(dāng)前長度超過在第一存儲器位置中存儲的文件的長度,則更新與在 結(jié)束點處開始的文件關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。
21.根據(jù)權(quán)利要求20的計算機(jī)可讀介質(zhì),其中,所述數(shù)據(jù)結(jié)構(gòu)是關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。
22.根據(jù)權(quán)利要求21的計算機(jī)可讀介質(zhì),其中,所述數(shù)據(jù)結(jié)構(gòu)是二進(jìn)制樹或哈希表。
23.根據(jù)權(quán)利要求20的計算機(jī)可讀介質(zhì),其中,所述結(jié)束點還表示文件的結(jié)束。
24.根據(jù)權(quán)利要求20的計算機(jī)可讀介質(zhì),其中,所述結(jié)束點在文件中的不完整記錄之
25.根據(jù)權(quán)利要求20的計算機(jī)可讀介質(zhì),其中,所述指令還使得計算機(jī)檢查該文件以尋找錯誤。
26.根據(jù)權(quán)利要求25的計算機(jī)可讀介質(zhì),其中,所述檢查該文件以尋找錯誤的步驟包 括確定該文件的當(dāng)前長度是否小于在第一存儲器位置中存儲的文件的長度。
27.根據(jù)權(quán)利要求20的計算機(jī)可讀介質(zhì),其中,所述文件是未壓縮數(shù)據(jù)文件。
28.—種計算機(jī)可讀介質(zhì),其存儲用于從設(shè)備信號獲得值的可執(zhí)行指令,所述指令用 于使得計算機(jī)進(jìn)行向第一文件且向緩沖器同時添加來自數(shù)據(jù)流的數(shù)據(jù);在滿足預(yù)定義條件之后,將與緩沖器關(guān)聯(lián)的數(shù)據(jù)轉(zhuǎn)移為壓縮文件;以及在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后,創(chuàng)建第二文件以從數(shù)據(jù)流接收數(shù)據(jù)。
29.根據(jù)權(quán)利要求28的計算機(jī)可讀介質(zhì),其中,在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓 縮文件之后,刪除第一文件。
30.根據(jù)權(quán)利要求28的計算機(jī)可讀介質(zhì),其中,狀態(tài)信息標(biāo)識第一文件是否有效。
31.根據(jù)權(quán)利要求30的計算機(jī)可讀介質(zhì),其中,在與緩沖器關(guān)聯(lián)的數(shù)據(jù)被轉(zhuǎn)移為壓縮 文件的同時,鎖閉該狀態(tài)信息。
32.根據(jù)權(quán)利要求30的計算機(jī)可讀介質(zhì),其中,更新該狀態(tài)信息,以反映第二文件的 創(chuàng)建、第一文件的刪除以及在緩沖器和壓縮文件之間的數(shù)據(jù)轉(zhuǎn)移。
33.根據(jù)權(quán)利要求31的計算機(jī)可讀介質(zhì),當(dāng)狀態(tài)信息被鎖閉時,通過索引或搜索操作 不能訪問該狀態(tài)信息。
34.根據(jù)權(quán)利要求32的計算機(jī)可讀介質(zhì),其中,所述狀態(tài)信息在其已經(jīng)被更新之后被 解鎖。
35.根據(jù)權(quán)利要求34的計算機(jī)可讀介質(zhì),其中,在狀態(tài)信息已經(jīng)被更新之后,刪除所 述第一文件。
36.根據(jù)權(quán)利要求28的計算機(jī)可讀介質(zhì),其中,所述預(yù)定義條件基于時間。
37.根據(jù)權(quán)利要求28的計算機(jī)可讀介質(zhì),其中,所述預(yù)定義條件基于第一文件的尺寸。
38.根據(jù)權(quán)利要求28的計算機(jī)可讀介質(zhì),其中,所述預(yù)定義條件基于記錄的數(shù)量。
39.—種系統(tǒng),包括用于確定文件的長度并在第一存儲器位置中存儲該文件的長度的裝置; 用于確定在該文件內(nèi)的最后完整的記錄的結(jié)束點、并在第二存儲器位置中存儲該結(jié)束點的裝置;用于比較在第一存儲器位置中存儲的文件的長度與該文件的當(dāng)前長度的裝置;以及 用于如果該文件的當(dāng)前長度超過在第一存儲器位置中存儲的文件的長度、則更新與 在結(jié)束點處開始的文件關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)的裝置。
40.—種系統(tǒng),包括用于向第一文件且向緩沖器同時添加來自數(shù)據(jù)流的數(shù)據(jù)的裝置; 用于在滿足預(yù)定義條件之后、將與緩沖器關(guān)聯(lián)的數(shù)據(jù)轉(zhuǎn)移為壓縮文件的裝置;以及 用于在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后、創(chuàng)建第二文件以從數(shù)據(jù)流接 收數(shù)據(jù)的裝置。
全文摘要
一種方法包括確定文件的長度(702)并在第一存儲器位置中存儲該文件的長度(704)。確定在該文件內(nèi)的最后完整的記錄的結(jié)束點(706),以及在第二存儲器位置中存儲該結(jié)束點(708)。比較在第一存儲器位置中存儲的文件的長度與該文件的當(dāng)前長度(710),以及如果該文件的當(dāng)前長度超過在第一存儲器位置中存儲的文件的長度,則更新與在結(jié)束點處開始的文件關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)(712)。
文檔編號G06F13/00GK102027457SQ200980117202
公開日2011年4月20日 申請日期2009年5月13日 優(yōu)先權(quán)日2008年5月14日
發(fā)明者伊弗雷姆·M·維施尼亞克, 克雷格·W·斯坦菲爾 申請人:起元技術(shù)有限責(zé)任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
嘉禾县| 勐海县| 五家渠市| 昔阳县| 红安县| 林芝县| 萝北县| 天祝| 通州区| 霍邱县| 舞阳县| 苍梧县| 武宣县| 卢氏县| 共和县| 综艺| 康乐县| 凉山| 禹州市| 曲沃县| 天全县| 车致| 昆山市| 桐梓县| 宝山区| 桑植县| 杭州市| 亳州市| 柯坪县| 永城市| 寻乌县| 健康| 梅州市| 湖南省| 临清市| 安西县| 闵行区| 凌源市| 梧州市| 繁峙县| 深泽县|