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

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

文檔序號:6550876閱讀:169來源:國知局
單獨(dú)可訪問數(shù)據(jù)單元的管理存儲的制作方法
【專利摘要】一種單獨(dú)可訪問數(shù)據(jù)單元的管理存儲。本發(fā)明公開了一種方法、裝置和計(jì)算機(jī)可讀的介質(zhì)。所述方法包括:向第一文件和向緩沖器添加來自數(shù)據(jù)流的數(shù)據(jù);響應(yīng)于滿足預(yù)定義條件,將添加到緩沖器的數(shù)據(jù)轉(zhuǎn)移為壓縮文件;以及在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后,向第二文件和向緩沖器添加來自數(shù)據(jù)流的數(shù)據(jù)。
【專利說明】單獨(dú)可訪問數(shù)據(jù)單元的管理存儲
[0001]本申請是申請日為2009年5月13日、申請?zhí)枮?00980117202.1 (國際申請?zhí)枮镻CT/US2009/043737)、發(fā)明名稱為“單獨(dú)可訪問數(shù)據(jù)單元的管理存儲”的發(fā)明專利申請的分案申請。

【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及單獨(dú)可存儲的數(shù)據(jù)單元的管理存儲。

【背景技術(shù)】
[0003]數(shù)據(jù)庫系統(tǒng)可以以任何各種格式存儲單獨(dú)可訪問的數(shù)據(jù)單元或“記錄”。每個記錄可以對應(yīng)于諸如信用卡交易的邏輯實(shí)體,且典型地具有用于唯一地標(biāo)識該記錄的關(guān)聯(lián)首要鍵(primary key)。該記錄可以包括與記錄格式的相應(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)容】

[0004]通常,在一個方面中,一種方法包括確定文件的長度并在第一存儲器位置中存儲該文件的長度。確定在該文件內(nèi)的最后完整的記錄的結(jié)束點(diǎn),以及在第二存儲器位置中存儲該結(jié)束點(diǎn)。在第一存儲器位置中存儲的文件的長度與該文件的當(dāng)前長度比較,且如果該文件的當(dāng)前長度超過在第一存儲器位置中存儲的文件的長度,則更新與在結(jié)束點(diǎn)處開始的文件關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。
[0005]各方面可以包括一個或多個以下特征。該數(shù)據(jù)結(jié)構(gòu)可以是關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu),諸如哈希(hash)表或二進(jìn)制樹。該結(jié)束點(diǎn)還可以表示文件的結(jié)束。該結(jié)束點(diǎn)可以在文件的不完整記錄之前??梢詸z查該文件以尋找錯誤。檢查該文件以尋找錯誤可以包括確定該文件的當(dāng)前長度是否小于在第一存儲器位置中存儲的文件的長度。該文件可以是未壓縮數(shù)據(jù)文件。
[0006]通常,在另一方面,一種方法包括向第一文件且向緩沖器同時添加來自數(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ù)。
[0007]各方面可以包括一個或多個以下特征。在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后,可以刪除第一文件。狀態(tài)信息可以標(biāo)識第一文件是否有效。在與緩沖器關(guān)聯(lián)的數(shù)據(jù)正被轉(zhuǎn)移為壓縮文件的同時,可以鎖閉該狀態(tài)信息??梢愿略摖顟B(tài)信息以反映第二文件的創(chuàng)建、第一文件的刪除和在緩沖器和壓縮文件之間的數(shù)據(jù)的轉(zhuǎn)移。當(dāng)狀態(tài)信息被鎖閉(lock)時,可能通過索引或搜索操作不能訪問該狀態(tài)信息。該狀態(tài)信息可以在其被更新了之后被解鎖。該第一文件可以在該狀態(tài)信息被更新了之后被刪除。該預(yù)定義條件可以基于時間。該預(yù)定義條件可以基于第一文件的尺寸。該預(yù)定義條件可以基于記錄的數(shù)量。
[0008]通常,在另一方面,一種計(jì)算機(jī)可讀介質(zhì)存儲用于從設(shè)備信號獲取值的可執(zhí)行指令,所述指令導(dǎo)致計(jì)算機(jī)確定文件的長度并在第一存儲器位置中存儲文件的長度??梢源_定在該文件內(nèi)的最后完整的記錄的結(jié)束點(diǎn),以及可以在第二存儲器位置中存儲該結(jié)束點(diǎn)。可以比較在第一存儲器位置中存儲的文件的長度與該文件的當(dāng)前長度。如果該文件的當(dāng)前長度超過在第一存儲器位置中存儲的文件的長度,則可以更新與在結(jié)束點(diǎn)處開始的文件關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)。
[0009]各方面可以包括一個或多個以下特征。該數(shù)據(jù)結(jié)構(gòu)可以是關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu),諸如哈希表或二進(jìn)制樹。該結(jié)束點(diǎn)還可以表示文件的結(jié)束。該結(jié)束點(diǎn)可以在文件的不完整記錄之前。這些指令還可以使得計(jì)算機(jī)檢查該文件以尋找錯誤。檢查該文件以尋找錯誤可以包括確定該文件的當(dāng)前長度是否小于在第一存儲器位置中存儲的文件的長度。該文件可以是未壓縮數(shù)據(jù)文件。
[0010]通常,在另一方面,一種計(jì)算機(jī)可讀介質(zhì)存儲用于從設(shè)備信號獲取值的可執(zhí)行指令,所述指令導(dǎo)致計(jì)算機(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ù)。
[0011]各方面可以包括一個或多個以下特征。在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后,可以刪除第一文件。狀態(tài)信息可以標(biāo)識第一文件是否有效。在與緩沖器關(guān)聯(lián)的數(shù)據(jù)正被轉(zhuǎn)移為壓縮文件的同時,可以鎖閉該狀態(tài)信息??梢愿略摖顟B(tài)信息,以反映第二文件的創(chuàng)建、第一文件的刪除和在緩沖器和壓縮文件之間的數(shù)據(jù)的轉(zhuǎn)移。當(dāng)狀態(tài)信息被鎖閉時,可能通過索引或搜索操作不能訪問該狀態(tài)信息。該狀態(tài)信息可以在其被更新了之后被解鎖。該第一文件可以在該狀態(tài)信息被更新了之后被刪除。該預(yù)定義條件可以基于時間。該預(yù)定義條件可以基于第一文件的尺寸。該預(yù)定義條件可以基于記錄的數(shù)量。
[0012]通常,在一個方面中,一種系統(tǒng)包括用于確定文件的長度并在第一存儲器位置中存儲該文件的長度的裝置。該系統(tǒng)還包括用于確定在該文件內(nèi)的最后完整的記錄的結(jié)束點(diǎn)、并在第二存儲器位置中存儲該結(jié)束點(diǎn)的裝置。該系統(tǒng)還包括用于比較在第一存儲器位置中存儲的文件的長度與該文件的當(dāng)前長度的裝置,以及用于如果該文件的當(dāng)前長度超過在第一存儲器位置中存儲的文件的長度、則更新與在結(jié)束點(diǎn)處開始的文件關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)的裝置。
[0013]通常,在另一方面,一種系統(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ù)的裝置。
[0014]在再一方面,一種方法包括:向第一文件和向緩沖器添加來自數(shù)據(jù)流的數(shù)據(jù);響應(yīng)于滿足預(yù)定義條件,將添加到緩沖器的數(shù)據(jù)轉(zhuǎn)移為壓縮文件;以及在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后,向第二文件和向緩沖器添加來自數(shù)據(jù)流的數(shù)據(jù)。
[0015]在又一方面,一種計(jì)算機(jī)可讀的介質(zhì)存儲用于從設(shè)備信號獲得值的可執(zhí)行指令,所述指令用于使得計(jì)算機(jī)執(zhí)行如下操作:向第一文件和向緩沖器添加來自數(shù)據(jù)流的數(shù)據(jù);響應(yīng)于滿足預(yù)定義條件,將添加到緩沖器的數(shù)據(jù)轉(zhuǎn)移為壓縮文件;以及在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后,向第二文件和向緩沖器添加來自數(shù)據(jù)流的數(shù)據(jù)。
[0016]在再又一方面,一種系統(tǒng),包括:用于向第一文件和向緩沖器添加來自數(shù)據(jù)流的數(shù)據(jù)的裝置;用于響應(yīng)于滿足預(yù)定義條件,將添加到緩沖器的數(shù)據(jù)轉(zhuǎn)移為壓縮文件的裝置;以及用于在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后,向第二文件和向緩沖器添加來自數(shù)據(jù)流的數(shù)據(jù)的裝置。

【專利附圖】

【附圖說明】
[0017]圖1是用于存儲和檢索記錄的系統(tǒng)的方框圖。
[0018]圖2A、圖2B、圖2C、和圖2D是由系統(tǒng)處理且在系統(tǒng)中存儲的數(shù)據(jù)的示意圖。
[0019]圖3A和圖3B是示出不同簽名尺寸的偽造(false)肯定概率的表。
[0020]圖4A和圖4B是用于搜索記錄的過程的流程圖。
[0021]圖5是查詢記錄的過程的流程圖。
[0022]圖6A和圖6B是可附屬查找文件的示意圖。
[0023]圖7是查詢可附屬查找文件的過程的流程圖。
[0024]圖8是存儲數(shù)據(jù)的過程的流程圖。

【具體實(shí)施方式】
[0025]參考圖1,記錄存儲和檢索系統(tǒng)100從一個或多個源(諸如源A-源C)接受數(shù)據(jù)。數(shù)據(jù)包括可以表示為單獨(dú)可存取數(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ù)。
[0026]記錄處理模塊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個記錄)。
[0027]文件管理模塊104管理可附屬查找文件(在其被使用的情形下)和壓縮查找文件兩者。當(dāng)管理壓縮記錄文件時,文件管理模塊104將每組記錄壓縮為壓縮的數(shù)據(jù)塊。這些壓縮塊被存儲在記錄存儲器106中(例如,在諸如一個或多個硬盤驅(qū)動的非易失性存儲介質(zhì)中)的壓縮記錄文件中。
[0028]該系統(tǒng)100還包括索引和搜索模塊108,其提供包括對壓縮記錄文件中的每個塊的入口的索引。該索引被用于定位可能包括給定記錄的塊,如以下更詳細(xì)描述的。該索引可以被存儲在索引存儲器110中的索引文件中。例如,當(dāng)可以在相同存儲介質(zhì)中存儲索引文件作為壓縮記錄文件時,優(yōu)選地可以在相對更快速的存儲器(例如,諸如動態(tài)隨機(jī)存取存儲器的易失性存儲介質(zhì))中存儲索引文件,因?yàn)樗饕募湫偷乇葔嚎s記錄文件小得多。該索引還可以是被維持作為存儲器內(nèi)數(shù)據(jù)結(jié)構(gòu)的動態(tài)索引114。動態(tài)索引114的一些例子是哈希表、二進(jìn)制樹和b樹。索引和搜索模塊108還提供用于搜索可附屬查找文件的接口,如以下更詳細(xì)地描述的。
[0029]在系統(tǒng)100的替換實(shí)施方式中,各組記錄可以被處理以使用除了壓縮以外或取代壓縮的其他函數(shù)來生成塊,以按某種方式組合這些記錄(即,使得塊不僅僅是級聯(lián)的一組記錄)。例如,一些系統(tǒng)可以處理一組記錄來生成加密數(shù)據(jù)的塊。
[0030]接口模塊112向人和/或計(jì)算機(jī)代理(諸如代理A-代理D)提供對存儲的記錄的訪問。例如,接口模塊112可以實(shí)現(xiàn)在線賬戶系統(tǒng),用于信用卡客戶來監(jiān)視其交易。可以由系統(tǒng)100處理對滿足各種準(zhǔn)則的交易信息的請求,且可以從記錄存儲器106中存儲的壓縮塊內(nèi)檢索對應(yīng)的記錄。
[0031 ] 來自一個或多個源的到來記錄流可以在被處理以生成壓縮記錄文件之前被臨時存儲。
[0032]圖2A-圖2D、圖3A-圖3B、和圖4A-圖4B示出了管理在壓縮記錄文件中的記錄的例子。圖5和圖6A-圖6B示出了使用可附屬查找文件管理記錄的例子。參考圖2A,系統(tǒng)100接收要在壓縮記錄文件中存儲的一組記錄200,且根據(jù)首要鍵的值來對這些記錄分類。
[0033]首要鍵值可以唯一地標(biāo)識可以由一個或多個記錄表示的數(shù)據(jù)庫中的給定項(xiàng)目(例如,具有給定首要鍵值的每個記錄可以對應(yīng)于該項(xiàng)目的不同更新版本)。首要鍵可以是對應(yīng)于記錄的一個或多個現(xiàn)有字段的“自然鍵”。如果沒有保證對每個項(xiàng)目唯一的字段,首要鍵可以是包括記錄的多個字段的復(fù)合鍵,其一起保證或很可能對每個項(xiàng)目是唯一的?;蛘撸滓I可以是可以在被接收之后分配給每個記錄的“合成鍵”。例如,系統(tǒng)100可以分配唯一的首要鍵值為順序遞增的整數(shù),或某種其他順序的單調(diào)遞進(jìn)的值(例如,時間戳)。在該情況下,表示相同項(xiàng)目的不同版本的記錄可以被分配不同的合成鍵值。如果使用整數(shù),(例如,如由使用的位數(shù)確定的)可能的首要鍵值的范圍可以足夠大,以至于如果首要鍵浮動(roll over),則已經(jīng)從壓縮記錄文件中移除先前被分配了給定首要鍵值的任何記錄。例如,可以移除和存檔或丟棄舊的交易。
[0034]在圖2A所示的例子中,記錄200由字母分類的首要鍵值標(biāo)識:A,AB, CZ,…。系統(tǒng)100壓縮具有首要鍵值A(chǔ)-DD的第一組N個記錄,以生成標(biāo)為塊I的對應(yīng)的壓縮塊。下一組記錄包括具有首要鍵值DX-GF的接下來的N個分類記錄。文件管理模塊104可以使用各種無損數(shù)據(jù)壓縮算法(例如,Lempel-Ziv型算法)中的任意。從壓縮記錄文件202組合每個相繼的壓縮塊。
[0035]用于生成壓縮塊的數(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+0M/N。因此,更大的N值可以在某些情況下通過減少R并減少耗費(fèi)對文件的尺寸的開銷貢獻(xiàn)來提供更大的壓縮。更小的N值減少了解壓縮給定的壓縮塊來訪問可以在塊中包含的記錄所需的時間。
[0036]在其他實(shí)施方式中,不同的壓縮塊可以包括不同數(shù)量的記錄。每個塊可以具有根據(jù)預(yù)定范圍的許多記錄。例如,第一塊包括具有首要鍵值1-1000的記錄,且第二塊包括具有首要鍵值1001-2000的記錄,等等。在該例子中的壓縮塊中的記錄的數(shù)量可以不同,因?yàn)椴灰欢ù嬖诿總€首要鍵值(例如,在現(xiàn)有數(shù)值字段用作自然鍵的情況下)。
[0037]在一些實(shí)施方式中,不同的壓縮塊在一些情況下可以包括目標(biāo)數(shù)量的記錄,且在例外情況下可以包括更多或更少的記錄。例如,如果一組記錄以如下記錄結(jié)束,即其首要鍵值不同于按分類的順序接下來的記錄的首要鍵值的記錄,則使用那些記錄以生成壓縮塊。如果一組記錄以如下的記錄結(jié)束,即其首要鍵值相同于按分類的順序接下來的記錄的首要鍵值的記錄,則向該組添加具有該首要鍵值的所有的附加的記錄。以此方式,相同的首要鍵值不從一個壓縮塊橫跨到下一個。
[0038]索引和搜索模塊108為每個壓縮塊在索引文件204中生成入口。索引入口包括鍵字段206,其例如通過在對應(yīng)的未壓縮的該組記錄中的第一記錄的首要鍵值來標(biāo)識每個壓縮塊。這些入口還包括標(biāo)識所標(biāo)識的壓縮塊在壓縮記錄文件202內(nèi)的存儲位置的位置字段208。例如,位置字段可以包含以記錄存儲器106中的絕對地址形式、或以從記錄存儲器106中的壓縮記錄文件202的開始的地址的偏移量的形式的指針。
[0039]為了搜索壓縮記錄文件202中的給定記錄,模塊108可以基于鍵字段206執(zhí)行索引文件204的搜索(例如二進(jìn)制搜索)。對于提供的鍵值(例如由代理之一提供),模塊108定位包括與包括提供的鍵值的鍵值范圍對應(yīng)的記錄的塊。具有提供的鍵值的記錄可以或可以不被包括在用于生成所定位的塊的該組記錄中,但是如果在記錄200中存在該記錄,則該記錄已經(jīng)被包括,因?yàn)橛涗?00先前根據(jù)首要鍵值分類了。然后,模塊108解壓縮所定位的塊,并搜索具有提供的鍵值的記錄。在首要鍵值對每個記錄不唯一的情況下,模塊108可以在壓縮塊中找到具有提供的鍵值的多個記錄。在鍵字段206包括一組中的第一記錄的首要鍵的該例子中,模塊208搜索分別具有比提供的鍵值更早和更后的鍵值的兩個連貫的索引入口,并返回與具有之前的鍵值的入口對應(yīng)的塊。在一些情況下,提供的鍵值可以與索引入口中的鍵值相同,在該情況下,模塊208返回對應(yīng)于該入口的塊。
[0040]在不同實(shí)施方式中,存在不同方式使得索引文件204中的入口標(biāo)識與從其中生成對應(yīng)塊的記錄對應(yīng)的鍵值范圍。如在圖2A所示的實(shí)施方式中,鍵值的范圍可以是在用于生成塊的記錄的兩個極值鍵值(例如,在字母分類順序的首要鍵值中的第一和最后,或在數(shù)值分類順序的首要鍵值中的最小和最大)之間的范圍。該索引入口可以包括定義該范圍的任一或兩個極值。在一些實(shí)施方式中,如果索引入口包括定義給定塊的范圍的最小鍵值,則與壓縮記錄文件中的最后塊關(guān)聯(lián)的最后索引入口還可以包括定義該塊的范圍的最大鍵值。然后,該最大鍵值可以在搜索壓縮記錄文件以確定給定鍵值何時超出范圍時使用。
[0041]或者,鍵值的范圍可以是延伸超過用于生成塊的記錄的鍵值的范圍。例如,在塊從具有I和1000之間的數(shù)值首要鍵值的記錄中生成的情況下,在記錄中表示的最小鍵值可以大于1,且在記錄中表示的最大鍵值可以小于1000。該索引入口可以包括定義該范圍的極值I和1000中的任一或兩者。
[0042]當(dāng)在記錄的最初的組被處理以生成壓縮記錄文件之后附加的記錄到達(dá)時,那些記錄可以以未壓縮形式被存儲在緩沖器中且被搜索。或者,可以遞增地處理附加組的記錄,并將其存儲為可由附加的索引文件訪問的附加的壓縮記錄文件。在一些情況下,即使當(dāng)壓縮小數(shù)量的附加記錄可能不提供存儲尺寸的大程度減少時,壓縮附加的記錄以維持用于存取記錄的統(tǒng)一過程也可能是有利的??梢园匆?guī)則的時間間隔(例如,每30秒或每5分鐘)或在已經(jīng)接收了預(yù)定數(shù)量的附加記錄之后(例如,每1000個記錄或每10000個記錄),重復(fù)地處理附加的記錄。如果基于時間間隔來處理到來的記錄,在一些間隔中,可能沒有到來的記錄或存在全被壓縮為單個壓縮塊的很少量記錄。
[0043]參考圖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。
[0044]可以被附屬任意數(shù)量的壓縮記錄文件以形成復(fù)合壓縮記錄文件。如果索引和搜索模塊108正在復(fù)合壓縮記錄文件內(nèi)搜索具有給定鍵值的記錄,則模塊108使用對應(yīng)的索引文件搜索每個附屬壓縮記錄文件內(nèi)的記錄?;蛘撸埱蠼o定記錄的代理可以指定要搜索的具有復(fù)合壓縮記錄文件的一些數(shù)量的壓縮記錄文件(例如,最近生成的10個,或最近一小時內(nèi)生成的任何)。
[0045]在給定量的時間(例如,每24小時)之后或在已經(jīng)附屬了給定數(shù)量的壓縮記錄文件之后,系統(tǒng)100可以整合(consolidate)這些文件以從復(fù)合壓縮記錄文件和新的對應(yīng)的索引文件生成單個壓縮記錄文件。在整合之后,可以搜索單個索引以定位可能包含給定記錄的壓縮塊,得到更有效的記錄訪問。在整合時,系統(tǒng)100解壓縮這些壓縮記錄文件以恢復(fù)對應(yīng)組的已分類記錄,通過首要鍵值對這些記錄分類,并生成新的壓縮記錄文件和索引。由于已經(jīng)對恢復(fù)的各組記錄的每個進(jìn)行了分類,因此可以通過根據(jù)首要鍵值合并先前分類的列表以生成單組分類的記錄來有效地對記錄分類。
[0046]參考圖2C,取決于多少附加記錄已經(jīng)到達(dá)以及已經(jīng)多么頻繁地處理這些記錄,復(fù)合壓縮記錄文件211包括初始的壓縮記錄文件202、附加的壓縮記錄文件210和一些附加的壓縮記錄文件220、221……。每個壓縮記錄文件可以具有可以用于搜索該文件的壓縮塊內(nèi)的給定記錄的關(guān)聯(lián)索引文件。在該例子中,壓縮記錄文件220之一足夠小以至于僅具有單個壓縮塊(BL0CK95),且因此不一定需要關(guān)聯(lián)索引文件,但可能具有指示在該塊中的首要鍵值的范圍和其在存儲器中的位置的關(guān)聯(lián)數(shù)據(jù)。在整合之后,從不同附屬壓縮記錄文件恢復(fù)的記錄被處理以生成單個壓縮記錄文件230。
[0047]在單調(diào)地分配首要鍵的情況下,不僅在壓縮記錄文件內(nèi)而且從一個文件到下一個文件自動地對記錄分類,而不需要整合文件以便在單個索引搜索中訪問記錄。參考圖2D,系統(tǒng)100接收一組記錄250,由作為記錄的首要鍵的按到達(dá)順序分配的連貫整數(shù)來標(biāo)識該組記錄250。因此,記錄250由首要鍵自動分類。在該例子中,初始壓縮記錄文件252包括每個包括100個記錄的壓縮塊,且索引文件254包括用于壓縮塊中的第一記錄的首要鍵值的鍵字段256、和標(biāo)識對應(yīng)的存儲位置的位置字段258。由于在已經(jīng)生成了初始壓縮記錄文件252之后到達(dá)的記錄將自動地具有分類的順序中稍后的首要鍵值,因此附屬壓縮記錄文件260和對應(yīng)的索引文件262不需要被整合,以基于單個索引搜索來使能有效的記錄訪問。例如,索引文件262可以僅被附屬到索引文件254,且兩個索引可以被一起搜索(例如,在單個二進(jìn)制搜索中)以在壓縮記錄文件252或260的任一中定位壓縮塊。
[0048]復(fù)合壓縮記錄文件261可以可選地被整合以消除可能已經(jīng)被插入在壓縮記錄文件252的末尾的不完整的塊。在這種整合中,將僅需要解壓縮第一文件252中的最后壓縮塊,且取代合并解壓縮的各組記錄,可以將各組記錄簡單地級聯(lián)以形成新的分類的一組記錄以被劃分為各組100個記錄,然后各組100個記錄被再次壓縮以形成新的壓縮記錄文件。
[0049]使用連貫整數(shù)合成首要鍵值的另一優(yōu)點(diǎn)在于,如果正要基于首要鍵值來對這些記錄分區(qū),則由于在鍵值之間不存在間斷,因此可以自動地平衡這些分區(qū)。
[0050]可以使用各種技術(shù)的任一種來更新記錄并無效可能存在于壓縮記錄文件中的任何先前版本的記錄。在一些情況下,記錄不需要被單獨(dú)移除或更新(例如,日志、交易、電話呼叫)。在這些情況下,在預(yù)定數(shù)量的壓縮塊的組中,例如從壓縮記錄文件的開始,移除和丟棄或存檔舊的記錄。在一些情況下,可以移除全部壓縮記錄文件。
[0051]在一些情況下,通過添加用于在壓縮塊中存儲的新的更新記錄來更新記錄的一個或多個值,且先前接收的記錄版本(具有相同的首要鍵值)可以留下來被存儲在不同的壓縮塊中。然后,可能存在記錄的多個版本,且使用某種技術(shù)來確定哪個是記錄的有效版本。例如,出現(xiàn)在任何壓縮記錄文件的(最近接收的)最后版本可以含蓄地或明示地指示為有效版本,且任何其他版本是無效的。在該情況下搜索具有給定首要鍵的記錄可以包括找到按出現(xiàn)順序由該首要鍵標(biāo)識的最后記錄?;蛘?,記錄可以通過寫“無效記錄”被無效,該“無效記錄”指示任何先前版本的記錄都不是有效,而不一定添加新的版本的記錄。
[0052]系統(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)歷修改的任何不完整的部分。
[0053]系統(tǒng)100存儲使能基于除了首要鍵以外的記錄屬性來搜索記錄的附加數(shù)據(jù)。壓縮記錄文件的次要索引包括基于被指定為次要鍵(secondary key)的屬性值提供一個或多個首要鍵值的信息。被指定為次要鍵的每個屬性可以與對應(yīng)的次要索引關(guān)聯(lián)。例如,每個次要索引可以被組織為具有根據(jù)關(guān)聯(lián)次要鍵分類的行的表。每行包括次要鍵值和包括次要鍵值的記錄的一個或多個首要鍵值。因此,如果代理開始搜索包括給定次要鍵值的任何記錄,則系統(tǒng)100查找(多個)首要鍵以用來搜索包括(多個)記錄的(多個)壓縮塊的壓縮記錄文件的索引。次要索引可以大(例如,以記錄的數(shù)量的量級),且在某些情況下可以被存儲在存儲了壓縮記錄文件的存儲介質(zhì)中。
[0054]在一些情況下,被指定為次要鍵的屬性值可以對每個記錄是唯一的。在這種情況下,存在在次要鍵和首要鍵之間的一一對應(yīng),且接口模塊112可以向代理呈現(xiàn)次要鍵屬性,好像其是首要鍵一樣。
[0055]可以在新的壓縮記錄文件被附屬到復(fù)合壓縮記錄文件時更新每個次要索引?;蛘?,次要鍵可以與每個壓縮記錄文件的不同次要索引關(guān)聯(lián),且當(dāng)壓縮記錄文件被整合時可以將次要索引整合到單個次要索引中。
[0056]篩選(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é)果,而無需花費(fèi)時間解壓縮和搜索壓縮塊來尋找不存在的記錄。OES的尺寸影響了肯定結(jié)果隔多久成為假肯定,且更大的OES尺寸通常導(dǎo)致更少的假肯定結(jié)果。對于給定的OES尺寸,更少的不同可能的鍵值通常導(dǎo)致更少的假肯定。
[0057]其他類型的篩選數(shù)據(jù)結(jié)構(gòu)是可能的。可以為每個壓縮記錄文件提供用于給定的首要或次要鍵的篩選數(shù)據(jù)結(jié)構(gòu)。或者,可以為每個壓縮塊提供用于鍵的篩選數(shù)據(jù)結(jié)構(gòu)。
[0058]圖3A和圖3B示出了如下的表,該表提供用于獲得各種尺寸的示例OES篩選數(shù)據(jù)結(jié)構(gòu)的鍵值(列)和在壓縮記錄文件中表示的各種數(shù)量的不同鍵值(行)的假肯定結(jié)果的可能性值。對于0ES,取決于OES的尺寸和不同鍵值的數(shù)量,可以在OES的相同部分中指示存在多于一個鍵值,潛在地導(dǎo)致如果存在另一個則那些鍵值之一的假肯定結(jié)果。該示例OES的尺寸從210 = 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)的其他例子可以得出假肯定可能性的不同表。
[0059]由于可能不知道在壓縮記錄文件中表示的不同鍵值的數(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間。
[0060]與壓縮記錄文件關(guān)聯(lián)的篩選數(shù)據(jù)結(jié)構(gòu)的尺寸可以取決于該文件是對應(yīng)于記錄的初始或整合的大數(shù)據(jù)庫還是對應(yīng)于對更大的數(shù)據(jù)庫的更小更新。可以使用相對更小的篩選數(shù)據(jù)結(jié)構(gòu)尺寸用于在規(guī)則的更新間隔期間附屬的壓縮記錄文件,因?yàn)樵诿總€更新中通常存在更少的不同鍵值。而且,隨著在許多更新之后壓縮記錄文件的數(shù)量增長,小尺寸可以減少所需的存儲空間。篩選數(shù)據(jù)結(jié)構(gòu)的尺寸可以基于在更新中的預(yù)期的記錄數(shù)量和/不同的鍵值,且基于預(yù)期更新數(shù)量。例如,如果通過24小時時間段每5分鐘附屬更新文件,將在該天結(jié)束時存在288個壓縮記錄文件。至少一個假肯定結(jié)果的可能性將是來自圖3A和圖3B的表的適當(dāng)值的288倍(假設(shè)不同更新的結(jié)果是獨(dú)立的)。在整合之后,更大的篩選數(shù)據(jù)結(jié)構(gòu)可適用于整合的壓縮記錄文件,因?yàn)椴煌I值的數(shù)量可能顯著地增加。
[0061]壓縮記錄文件可以具有用于首要鍵和用于次要鍵或用于鍵的一些子集的篩選數(shù)據(jù)結(jié)構(gòu)。例如,系統(tǒng)100可以為首要鍵提供篩選數(shù)據(jù)結(jié)構(gòu),并且僅僅為那些預(yù)期在搜索記錄時最經(jīng)常使用的次要鍵提供篩選數(shù)據(jù)結(jié)構(gòu)。
[0062]圖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)行篩選。
[0063]在搜索408索引之后,如果找到410與包括給定首要鍵值的鍵值范圍關(guān)聯(lián)的壓縮塊,則過程400解壓縮412處于由索引入口標(biāo)識的位置上的塊,且搜索414得到的記錄以尋找具有給定首要鍵值的一個或多個記錄。然后,過程檢查416下一壓縮記錄文件,且如果該文件存在則在該文件上重復(fù)。如果沒找到壓縮塊(例如,如果給定的首要鍵值小于第一塊中的最小鍵值或大于最后塊中的最大鍵值),則該過程400檢查416下一壓縮記錄文件,并且如果該文件存在則在該文件上重復(fù)。
[0064]圖4B示出了用于搜索具有給定的次要鍵值的一個或多個記錄的過程450的流程圖。過程450確定452是否存在與第一壓縮記錄文件關(guān)聯(lián)的篩選數(shù)據(jù)結(jié)構(gòu)。如果是,過程450處理454篩選數(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)行篩選。
[0065]對于找到的每個首要鍵,過程450搜索460索引以尋找可包含具有給定首要鍵值的記錄的塊。在搜索460索引之后,如果找到462與包括給定首要鍵值的鍵值范圍關(guān)聯(lián)的壓縮塊,則過程450解壓縮464處于由索引入口標(biāo)識的位置上的塊,且搜索466得到的記錄以尋找具有給定首要鍵值的一個或多個記錄。然后,該過程檢查468下一壓縮記錄文件,且在該文件上一如果其存在一重復(fù)。如果沒有找到壓縮塊,則過程450檢查468下一壓縮記錄文件,且如果該文件存在則在該文件上重復(fù)。
[0066]可以按出現(xiàn)的順序通過過程400或過程450來返回用給定的首要或次要鍵找到的多個記錄,或者在某些情況下,僅返回記錄的最后版本。
[0067]文件管理模塊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)資源。
[0068]通常,可附屬查找表是未壓縮數(shù)據(jù)文件,其容忍在文件的末尾處添加的部分記錄??筛綄俨檎椅募軌蜃R別不完整的記錄,且即使當(dāng)查詢的文件包含不完整記錄時也能夠處理查詢請求??筛綄俨檎椅募痪哂袎嚎s記錄文件的如上所述的那類索引文件;而是,可附屬查找文件具有映射每個記錄在相對快工作存儲器(例如,易失性存儲介質(zhì),諸如動態(tài)隨機(jī)存取存儲器)中存儲的數(shù)據(jù)結(jié)構(gòu)中的位置的“動態(tài)索引”。例如,這些動態(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所確定的長度。
[0069]然后,系統(tǒng)確定512 “結(jié)束點(diǎn)”,其是表示文件內(nèi)的最后完整的記錄的結(jié)束的位置。在一些情況下,諸如當(dāng)沒有新的數(shù)據(jù)正被寫入該文件時,該結(jié)束點(diǎn)將僅表示該文件的結(jié)束。結(jié)束點(diǎn)還可以表示在新數(shù)據(jù)的第一片段(segment)之前緊挨著的位置(見圖6)。在已經(jīng)確定512 了結(jié)束點(diǎn)之后,在存儲器位置(諸如在主要存儲器中)存儲514它。
[0070]在查詢處理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é)束點(diǎn)開始,更新518關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)。以此方式,可以更新關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)而不必須整個重新載入或重新建立它。相反,已經(jīng)被載入存儲器中的數(shù)據(jù)維持被載入,且在先前存儲的結(jié)束點(diǎn)開始附屬新的數(shù)據(jù)。在處理該查詢之前,還更新520文件長度和結(jié)束點(diǎn)。在此處理中可以執(zhí)行諸如錯誤檢查的其他步驟。例如,如果系統(tǒng)確定該文件的當(dāng)前長度小于先前存儲的文件長度,可以標(biāo)記錯誤。
[0071 ] 圖6A和圖6B是文件內(nèi)的結(jié)束點(diǎn)的位置的例子,如由圖5中的步驟512確定的。在圖6a中,可附屬查找文件600包括完整的記錄602和不完整的記錄604。在該情況下,結(jié)束點(diǎn)606是表示可附屬查找文件600內(nèi)的最后完整的記錄的結(jié)尾的位置,且就在不完整記錄604的開始之前。
[0072]在圖6B的例子中,可附屬查找文件650由完全完整的記錄652構(gòu)成。在該情況下,結(jié)束點(diǎn)654再次表示可附屬查找文件650內(nèi)的最后的完整記錄的結(jié)尾;但是,結(jié)束點(diǎn)654還表示該文件的結(jié)尾。
[0073]數(shù)據(jù)可以連續(xù)的附屬到可附屬查找文件,其依次被連續(xù)地更新。因此,可附屬查找文件變得在尺寸上越來越大,且其載入可附屬查找文件所花費(fèi)的時間相應(yīng)地增加??筛綄俨檎椅募梢耘c其他形式的動態(tài)可載入的索引文件相組合以避免可附屬查找文件變得太大以不能在可期望的時間量內(nèi)載入。
[0074]在一些應(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ù)量。
[0075]在滿足預(yù)定義條件之后,已經(jīng)在緩沖器中積累的數(shù)據(jù)塊被添加到壓縮記錄文件用于長期存儲。在數(shù)據(jù)被添加到壓縮記錄文件之后,創(chuàng)建新的可附屬查找文件,且開始從數(shù)據(jù)流收集數(shù)據(jù)。舊的可附屬查找文件完成,且在壓縮記錄文件包含所有對應(yīng)的數(shù)據(jù)之后被刪除。
[0076]當(dāng)由緩沖器和可附屬查找文件兩者接收數(shù)據(jù)的同時,可以對緩沖器中的數(shù)據(jù)分類。因?yàn)榉诸愒摂?shù)據(jù)消耗了大量時間和系統(tǒng)資源,所以盡可能早地開始分類處理以允許更快地將數(shù)據(jù)轉(zhuǎn)移為壓縮記錄文件是有利的。
[0077]或者,可以使用可附屬查找文件作為緩沖器。在該實(shí)施例中,該數(shù)據(jù)在可附屬查找文件中累積直到滿足預(yù)定義條件。然后,可附屬查找文件的內(nèi)容被添加到壓縮記錄文件,同時舊的可附屬查找表完成,并創(chuàng)建新的可附屬查找文件,且開始從數(shù)據(jù)流收集數(shù)據(jù)。再次,舊的可附屬查找文件在壓縮記錄文件包含所有對應(yīng)的數(shù)據(jù)之后被刪除。
[0078]在該處理的每個循環(huán)期間,將可期望同時向壓縮記錄文件添加數(shù)據(jù)并刪除可附屬查找文件中的所有數(shù)據(jù)。但是,因?yàn)閮蓚€更新可能導(dǎo)致競爭(race)情況,因此將存在顯著的窗口,其中已經(jīng)刪除了舊的可附屬查找文件但還沒有利用其數(shù)據(jù)來更新壓縮記錄文件。這將導(dǎo)致臨時的數(shù)據(jù)丟失。為了防止這一點(diǎn),可以在該處理的附加循環(huán)中保持舊的可附屬查找文件。索引和搜索模塊108被配置為檢測其中可能在可附屬查找文件和壓縮記錄文件兩者中存在復(fù)制數(shù)據(jù)的情況,且如果在該情況期間進(jìn)行查詢,則索引和搜索模塊108過濾出復(fù)制數(shù)據(jù)。
[0079]或者,文件管理模塊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移除舊的可附屬查找文件。
[0080]索引和搜索模塊108遵循以下示例協(xié)議:其鎖閉狀態(tài)信息文件以防止文件管理模塊104更新它;其根據(jù)在狀態(tài)信息文件中標(biāo)識的可附屬查找文件和壓縮數(shù)據(jù)文件來執(zhí)行該查詢;其解鎖狀態(tài)信息文件以再一次允許文件管理模塊104來更新狀態(tài)信息文件。
[0081 ] 狀態(tài)信息文件107可以被存儲在盤或存儲器中。該協(xié)議保證搜索模塊將或者看到在從舊的可附屬查找文件并入數(shù)據(jù)之前的舊的可附屬查找文件和壓縮數(shù)據(jù)文件,或者看到新的可附屬查找文件和更新的壓縮數(shù)據(jù)文件。
[0082]當(dāng)在同時存在新的可附屬查找文件和舊的可附屬查找文件時進(jìn)行查詢時,在一個實(shí)現(xiàn)中,系統(tǒng)查看目錄以看到哪個可附屬查找文件是當(dāng)前有效的(例如,由于新的可附屬查找表可能不變?yōu)橛行е钡狡浔粍?chuàng)建之后的某個量的延遲,因此新的可附屬查找文件或舊的可附屬查找文件可能是有效的)。或者,當(dāng)系統(tǒng)處理查詢時,其首先查看最新的可附屬查找文件,然后查看舊的可附屬查找文件。如果還沒有定位被查詢的數(shù)據(jù),則系統(tǒng)查看壓縮記錄文件。
[0083]在圖7中,由系統(tǒng)100執(zhí)行的過程700確定文件的長度702,并將文件的長度存儲在第一存儲器位置中704。過程700確定文件內(nèi)的最后完整的記錄的結(jié)束點(diǎn)706,并在第二存儲器位置中存儲該結(jié)束點(diǎn)708。該過程比較在第一存儲器位置中存儲的文件長度與文件的當(dāng)前長度710,并如果文件的當(dāng)前長度超過在第一存儲器位置中存儲的文件的長度,在該結(jié)束點(diǎn)開始,更新與該文件關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)712。
[0084]在圖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。
[0085]可以使用在計(jì)算機(jī)上執(zhí)行的軟件來實(shí)現(xiàn)上述記錄存儲和檢索方法,包括系統(tǒng)100的模塊和由系統(tǒng)100進(jìn)行的過程。例如,軟件形成在一個或多個已編程或可編程計(jì)算機(jī)系統(tǒng)(其可以是各種架構(gòu),諸如分布式、客戶端/服務(wù)器式、或網(wǎng)格式)上執(zhí)行的一個或多個計(jì)算機(jī)程序中的過程,該計(jì)算機(jī)系統(tǒng)各自包括至少一個處理器、至少一個數(shù)據(jù)存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備或端口和至少一個輸出設(shè)備或端口。軟件可以形成例如提供與計(jì)算圖的設(shè)計(jì)和配置相關(guān)的其他服務(wù)的更大程序的一個或多個模塊。圖中的節(jié)點(diǎn)和元件可以被實(shí)現(xiàn)為在計(jì)算機(jī)可讀介質(zhì)中存儲的數(shù)據(jù)結(jié)構(gòu)、或符合在數(shù)據(jù)儲存庫中儲存的數(shù)據(jù)模型的其他組織的數(shù)據(jù)。
[0086]軟件可以被提供在諸如可由通用或?qū)S每删幊逃?jì)算機(jī)讀取的CD-ROM之類的存儲介質(zhì)上,或通過網(wǎng)絡(luò)的通信介質(zhì)將其傳遞(在傳播的信號中被編碼)到它被執(zhí)行的計(jì)算機(jī)。所有功能可以在專用計(jì)算機(jī)上或使用專用硬件(諸如協(xié)處理器)來執(zhí)行。軟件可以按分布式方式實(shí)現(xiàn),其中由軟件指定的計(jì)算的不同部分被不同計(jì)算機(jī)執(zhí)行。每個這種計(jì)算機(jī)程序優(yōu)選地被存儲在或被下載到可由通用或?qū)S每删幊逃?jì)算機(jī)讀取的存儲介質(zhì)或設(shè)備(例如,固態(tài)存儲器或介質(zhì)、或磁或光介質(zhì)),用于當(dāng)存儲介質(zhì)或設(shè)備被計(jì)算機(jī)系統(tǒng)讀取時配置和操作該計(jì)算機(jī)以進(jìn)行在此描述的過程。本發(fā)明的系統(tǒng)還可以被考慮實(shí)現(xiàn)為用計(jì)算機(jī)程序配置的計(jì)算機(jī)可讀存儲介質(zhì),其中如此配置的存儲介質(zhì)使得計(jì)算機(jī)系統(tǒng)按規(guī)定且預(yù)定義的方式操作以進(jìn)行在此描述的功能。
[0087]已經(jīng)描述了本發(fā)明的大量實(shí)施例。但是,將理解,可以在不脫離本發(fā)明的精神和范圍的情況下進(jìn)行各種修改。例如,上述步驟的一些可以是無關(guān)順序的,且因此可以按不同于上述順序的順序來執(zhí)行。
[0088]要理解,上述描述意欲例示而非限制本發(fā)明的范圍,本發(fā)明的范圍由所附權(quán)利要求的范圍限定。例如,上述大量功能步驟可以按不同的順序執(zhí)行,而不實(shí)質(zhì)影響整個處理。其他實(shí)施例也在以下權(quán)利要求的范圍內(nèi)。
【權(quán)利要求】
1.一種方法,包括: 向第一文件和向緩沖器添加來自數(shù)據(jù)流的數(shù)據(jù); 響應(yīng)于滿足預(yù)定義條件,將添加到緩沖器的數(shù)據(jù)轉(zhuǎn)移為壓縮文件;以及 在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后,向第二文件和向緩沖器添加來自數(shù)據(jù)流的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1的方法,其中,第一文件和第二文件是同一文件。
3.根據(jù)權(quán)利要求1的方法,其中, 來自數(shù)據(jù)流的數(shù)據(jù)在被添加到第一文件、緩沖器或兩者之前被復(fù)制,并且 來自數(shù)據(jù)流的數(shù)據(jù)在被添加到第二文件、緩沖器或兩者之前被復(fù)制。
4.根據(jù)權(quán)利要求1的方法,包括在緩沖器中的數(shù)據(jù)被轉(zhuǎn)移為壓縮文件之前分類緩沖器中的該數(shù)據(jù)。
5.根據(jù)權(quán)利要求4的方法,其中當(dāng)來自數(shù)據(jù)流的數(shù)據(jù)被添加到緩沖器時在緩沖器中分類來自數(shù)據(jù)流的該數(shù)據(jù)。
6.根據(jù)權(quán)利要求1的方法,其中添加到第一文件的數(shù)據(jù)和添加到第二文件的數(shù)據(jù)具有非壓縮形式。
7.根據(jù)權(quán)利要求1的方法,其中添加到第一文件的數(shù)據(jù)和添加到第二文件的數(shù)據(jù)是可搜索的。
8.根據(jù)權(quán)利要求7的方法,其中添加到第一文件的數(shù)據(jù)在被添加到第一文件的同時是可搜索的,添加到第二文件的數(shù)據(jù)在被添加到第二文件的同時是可搜索的。
9.根據(jù)權(quán)利要求1的方法,包括在來自緩沖器的文件已被轉(zhuǎn)移為壓縮文件之后刪除第一文件。
10.根據(jù)權(quán)利要求1的方法,包括在添加到緩沖器的數(shù)據(jù)正被轉(zhuǎn)移為壓縮文件的同時,鎖閉指示第一文件的狀態(tài)的狀態(tài)信息。
11.根據(jù)權(quán)利要求1的方法,包括基于第二文件的創(chuàng)建、第一文件的刪除以及從緩沖器向壓縮文件的數(shù)據(jù)轉(zhuǎn)移中的一個或多個更新指示第一文件的狀態(tài)的狀態(tài)信息。
12.根據(jù)權(quán)利要求10的方法,其中在狀態(tài)信息被鎖閉的同時,通過索引或搜索操作不能訪問該狀態(tài)信息。
13.根據(jù)權(quán)利要求11的方法,包括在狀態(tài)信息已經(jīng)更新之后解鎖該狀態(tài)信息。
14.根據(jù)權(quán)利要求13的方法,包括在已經(jīng)更新狀態(tài)信息之后,刪除所述第一文件。
15.根據(jù)權(quán)利要求1的方法,其中,所述預(yù)定義條件基于時間。
16.根據(jù)權(quán)利要求1的方法,其中,所述預(yù)定義條件基于第一文件的尺寸。
17.根據(jù)權(quán)利要求1的方法,其中,所述預(yù)定義條件基于記錄的數(shù)量。
18.一種計(jì)算機(jī)可讀的介質(zhì),其存儲用于從設(shè)備信號獲得值的可執(zhí)行指令,所述指令用于使得計(jì)算機(jī)執(zhí)行如下操作: 向第一文件和向緩沖器添加來自數(shù)據(jù)流的數(shù)據(jù); 響應(yīng)于滿足預(yù)定義條件,將添加到緩沖器的數(shù)據(jù)轉(zhuǎn)移為壓縮文件;以及 在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后,向第二文件和向緩沖器添加來自數(shù)據(jù)流的數(shù)據(jù)。
19.根據(jù)權(quán)利要求18的計(jì)算機(jī)可讀的介質(zhì),其中,第一文件和第二文件是同一文件。
20.根據(jù)權(quán)利要求18的計(jì)算機(jī)可讀的介質(zhì),其中, 來自數(shù)據(jù)流的數(shù)據(jù)在被添加到第一文件、緩沖器或兩者之前被復(fù)制,并且 來自數(shù)據(jù)流的數(shù)據(jù)在被添加到第二文件、緩沖器或兩者之前被復(fù)制。
21.根據(jù)權(quán)利要求18的計(jì)算機(jī)可讀的介質(zhì),包括用于使得計(jì)算機(jī)在緩沖器中的數(shù)據(jù)被轉(zhuǎn)移為壓縮文件之前分類緩沖器中的該數(shù)據(jù)的指令。
22.根據(jù)權(quán)利要求21的計(jì)算機(jī)可讀的介質(zhì),其中當(dāng)來自數(shù)據(jù)流的數(shù)據(jù)被添加到緩沖器時在緩沖器中分類來自數(shù)據(jù)流的該數(shù)據(jù)。
23.根據(jù)權(quán)利要求18的計(jì)算機(jī)可讀的介質(zhì),其中添加到第一文件的數(shù)據(jù)和添加到第二文件的數(shù)據(jù)具有非壓縮形式。
24.根據(jù)權(quán)利要求18的計(jì)算機(jī)可讀的介質(zhì),其中添加到第一文件的數(shù)據(jù)和添加到第二文件的數(shù)據(jù)是可搜索的。
25.根據(jù)權(quán)利要求24的計(jì)算機(jī)可讀的介質(zhì),其中添加到第一文件的數(shù)據(jù)在被添加到第一文件的同時是可搜索的,添加到第二文件的數(shù)據(jù)在被添加到第二文件的同時是可搜索的。
26.根據(jù)權(quán)利要求18的計(jì)算機(jī)可讀的介質(zhì),包括用于使得計(jì)算機(jī)在來自緩沖器的文件已被轉(zhuǎn)移為壓縮文件之后刪除第一文件的指令。
27.根據(jù)權(quán)利要求18的計(jì)算機(jī)可讀的介質(zhì),包括用于使得計(jì)算機(jī)在添加到緩沖器的數(shù)據(jù)正被轉(zhuǎn)移為壓縮文件的同時,鎖閉指示第一文件的狀態(tài)的狀態(tài)信息的指令。
28.根據(jù)權(quán)利要求18的計(jì)算機(jī)可讀的介質(zhì),包括用于使得計(jì)算機(jī)基于第二文件的創(chuàng)建、第一文件的刪除以及從緩沖器向壓縮文件的數(shù)據(jù)轉(zhuǎn)移中的一個或多個更新指示第一文件的狀態(tài)的狀態(tài)信息的指令。
29.根據(jù)權(quán)利要求27的計(jì)算機(jī)可讀的介質(zhì),其中在狀態(tài)信息被鎖閉的同時,通過索引或搜索操作不能訪問該狀態(tài)信息。
30.根據(jù)權(quán)利要求28的計(jì)算機(jī)可讀的介質(zhì),包括用于使得計(jì)算機(jī)在狀態(tài)信息已經(jīng)更新之后解鎖該狀態(tài)信息的指令。
31.根據(jù)權(quán)利要求30的計(jì)算機(jī)可讀的介質(zhì),包括用于使得計(jì)算機(jī)在已經(jīng)更新狀態(tài)信息之后刪除所述第一文件的指令。
32.根據(jù)權(quán)利要求18的計(jì)算機(jī)可讀的介質(zhì),其中,所述預(yù)定義條件基于時間。
33.根據(jù)權(quán)利要求18的計(jì)算機(jī)可讀的介質(zhì),其中,所述預(yù)定義條件基于第一文件的尺寸。
34.根據(jù)權(quán)利要求18的計(jì)算機(jī)可讀的介質(zhì),其中,所述預(yù)定義條件基于記錄的數(shù)量。
35.一種系統(tǒng),包括: 用于向第一文件和向緩沖器添加來自數(shù)據(jù)流的數(shù)據(jù)的裝置; 用于響應(yīng)于滿足預(yù)定義條件,將添加到緩沖器的數(shù)據(jù)轉(zhuǎn)移為壓縮文件的裝置;以及 用于在來自緩沖器的數(shù)據(jù)已經(jīng)被轉(zhuǎn)移為壓縮文件之后,向第二文件和向緩沖器添加來自數(shù)據(jù)流的數(shù)據(jù)的裝置。
36.根據(jù)權(quán)利要求35的系統(tǒng),其中,第一文件和第二文件是同一文件。
37.根據(jù)權(quán)利要求35的系統(tǒng),其中, 來自數(shù)據(jù)流的數(shù)據(jù)在被添加到第一文件、緩沖器或兩者之前被復(fù)制,并且 來自數(shù)據(jù)流的數(shù)據(jù)在被添加到第二文件、緩沖器或兩者之前被復(fù)制。
38.根據(jù)權(quán)利要求35的系統(tǒng),包括用于在緩沖器中的數(shù)據(jù)被轉(zhuǎn)移為壓縮文件之前分類緩沖器中的該數(shù)據(jù)的裝置。
39.根據(jù)權(quán)利要求38的系統(tǒng),其中當(dāng)來自數(shù)據(jù)流的數(shù)據(jù)被添加到緩沖器時在緩沖器中分類來自數(shù)據(jù)流的該數(shù)據(jù)。
40.根據(jù)權(quán)利要求35的系統(tǒng),其中添加到第一文件的數(shù)據(jù)和添加到第二文件的數(shù)據(jù)具有非壓縮形式。
41.根據(jù)權(quán)利要求35的系統(tǒng),其中添加到第一文件的數(shù)據(jù)和添加到第二文件的數(shù)據(jù)是可搜索的。
42.根據(jù)權(quán)利要求41的系統(tǒng),其中添加到第一文件的數(shù)據(jù)在被添加到第一文件的同時是可搜索的,添加到第二文件的數(shù)據(jù)在被添加到第二文件的同時是可搜索的。
43.根據(jù)權(quán)利要求35的系統(tǒng),包括用于在來自緩沖器的文件已被轉(zhuǎn)移為壓縮文件之后刪除第一文件的裝置。
44.根據(jù)權(quán)利要求35的系統(tǒng),包括用于在添加到緩沖器的數(shù)據(jù)正被轉(zhuǎn)移為壓縮文件的同時,鎖閉指示第一文件的狀態(tài)的狀態(tài)信息的裝置。
45.根據(jù)權(quán)利要求35的系統(tǒng),包括用于基于第二文件的創(chuàng)建、第一文件的刪除以及從緩沖器向壓縮文件的數(shù)據(jù)轉(zhuǎn)移中的一個或多個更新指示第一文件的狀態(tài)的狀態(tài)信息的裝置。
46.根據(jù)權(quán)利要求44的系統(tǒng),其中在狀態(tài)信息被鎖閉的同時,通過索引或搜索操作不能訪問該狀態(tài)信息。
47.根據(jù)權(quán)利要求45的系統(tǒng),包括用于在狀態(tài)信息已經(jīng)更新之后解鎖該狀態(tài)信息的裝置。
48.根據(jù)權(quán)利要求47的系統(tǒng),包括用于在已經(jīng)更新狀態(tài)信息之后,刪除所述第一文件的裝置。
49.根據(jù)權(quán)利要求35的系統(tǒng),其中,所述預(yù)定義條件基于時間。
50.根據(jù)權(quán)利要求35的系統(tǒng),其中,所述預(yù)定義條件基于第一文件的尺寸。
51.根據(jù)權(quán)利要求35的系統(tǒng),其中,所述預(yù)定義條件基于記錄的數(shù)量。
【文檔編號】G06F17/30GK104199816SQ201410290632
【公開日】2014年12月10日 申請日期:2009年5月13日 優(yōu)先權(quán)日:2008年5月14日
【發(fā)明者】伊弗雷姆.M.維施尼亞克, 克雷格.W.斯坦菲爾 申請人:起元技術(shù)有限責(zé)任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
武穴市| 玉屏| 贵定县| 浑源县| 手游| 谷城县| 张掖市| 自贡市| 吉水县| 广宁县| 凤翔县| 定襄县| 青田县| 霍山县| 中阳县| 公安县| 乌兰察布市| 英吉沙县| 柏乡县| 榕江县| 梁河县| 汝南县| 晋州市| 沛县| 陆河县| 泸水县| 门源| 舒兰市| 麻栗坡县| 腾冲县| 越西县| 巩留县| 克拉玛依市| 项城市| 修文县| 锡林郭勒盟| 红河县| 承德市| 冀州市| 郯城县| 汉源县|