專利名稱:對(duì)順序存取存儲(chǔ)介質(zhì)上變長(zhǎng)度數(shù)據(jù)的有效存取的制作方法
一般地,本發(fā)明是關(guān)于順序存取存儲(chǔ)介質(zhì)的,特別是關(guān)于在順序存取存儲(chǔ)介質(zhì)上,存取可變長(zhǎng)度數(shù)據(jù)段。
順序存取存儲(chǔ)介質(zhì),如磁帶和WORM(一次寫(xiě)入、多次讀取)光盤(pán),典型地用于存儲(chǔ)大量數(shù)據(jù)。相對(duì)于其它存儲(chǔ)方法的選擇,如磁盤(pán)、磁盤(pán)陣列或隨機(jī)存取存儲(chǔ)器(RAM),順序存取存儲(chǔ)介質(zhì)提供了一種低成本存儲(chǔ)的選擇。但是,順序存取存儲(chǔ)介質(zhì)的缺點(diǎn)是,對(duì)介質(zhì)上特定位置的定位過(guò)程相對(duì)慢。對(duì)磁帶來(lái)說(shuō),這種定位一般包括介質(zhì)的機(jī)械前繞和/或后繞以便在磁帶上定位于所需數(shù)據(jù)的適當(dāng)位置。這樣,對(duì)磁帶上特定數(shù)據(jù)偏移量的定位,會(huì)導(dǎo)致順序存取存儲(chǔ)介質(zhì)上,檢索記錄數(shù)據(jù)的整個(gè)進(jìn)程產(chǎn)生大量的操作。
將大量的數(shù)據(jù)流寫(xiě)到順序存取存儲(chǔ)介質(zhì)時(shí),最好將數(shù)據(jù)流分成較小的數(shù)據(jù)段,因?yàn)橛袔讉€(gè)原因第一,數(shù)據(jù)分段分配提高了錯(cuò)誤恢復(fù)性。一個(gè)數(shù)據(jù)段含有一個(gè)首部和錯(cuò)誤恢復(fù)參數(shù),如校驗(yàn)和參數(shù)。如果一個(gè)很大的數(shù)據(jù)流包含一個(gè)數(shù)據(jù)段,在該數(shù)據(jù)段被確認(rèn)前,整個(gè)數(shù)據(jù)流必須被讀取。整個(gè)一個(gè)數(shù)據(jù)段的數(shù)據(jù)流還可能因?yàn)橐粋€(gè)較小的錯(cuò)誤而不可恢復(fù)。因此,如果數(shù)據(jù)流被分配成多個(gè)較小的數(shù)據(jù)段,單一數(shù)據(jù)段中的錯(cuò)誤不會(huì)使整個(gè)數(shù)據(jù)流不可恢復(fù)。
第二,最好使用較小的數(shù)據(jù)段,是因?yàn)閿?shù)據(jù)段可以作為界線,以適應(yīng)系統(tǒng)緩存的數(shù)據(jù)自動(dòng)清空。一般地,在數(shù)據(jù)被實(shí)際存儲(chǔ)到順序存取存儲(chǔ)介質(zhì)前,應(yīng)用程序?qū)⒁粔K會(huì)話數(shù)據(jù)“寫(xiě)”到系統(tǒng)緩存。一些系統(tǒng)使用數(shù)據(jù)段界線來(lái)定義數(shù)據(jù),使系統(tǒng)自動(dòng)將緩存的數(shù)據(jù)清空,并記錄到介質(zhì)上。
第三,最好使用較小的數(shù)據(jù)段,因?yàn)楫?dāng)“寫(xiě)”操作被初始化時(shí),對(duì)應(yīng)用程序來(lái)說(shuō),整個(gè)數(shù)據(jù)流的長(zhǎng)度未知,這樣就不能在數(shù)據(jù)段首部中存儲(chǔ)數(shù)據(jù)段長(zhǎng)度了??蛇x地,如果數(shù)據(jù)流被分成多個(gè)數(shù)據(jù)段,甚至當(dāng)整個(gè)數(shù)據(jù)流的長(zhǎng)度還未知時(shí),應(yīng)用程序也可以指定數(shù)據(jù)段的長(zhǎng)度。
一項(xiàng)減少在順序存取存儲(chǔ)介質(zhì)上定位的操作耗費(fèi)的技術(shù),是使用固定長(zhǎng)度數(shù)據(jù)段。即記錄在順序存取存儲(chǔ)介質(zhì)上的數(shù)據(jù),被分配成存儲(chǔ)在介質(zhì)上的固定長(zhǎng)度數(shù)據(jù)段。每個(gè)數(shù)據(jù)段典型地含有一個(gè)固定長(zhǎng)度首部,連接在每個(gè)數(shù)據(jù)段的開(kāi)始部分,例如,數(shù)據(jù)段索引,用來(lái)指定數(shù)據(jù)段內(nèi)的數(shù)據(jù)開(kāi)始部分、段內(nèi)的數(shù)據(jù)長(zhǎng)度和填充符的量。如果記錄在段內(nèi)的數(shù)據(jù)比整個(gè)固定長(zhǎng)度數(shù)據(jù)段短,段內(nèi)剩余部分被填充(也就是,后續(xù)會(huì)話數(shù)據(jù)被記錄在下一個(gè)數(shù)據(jù)段,而不是當(dāng)前數(shù)據(jù)段的其余部分)。
應(yīng)理解介質(zhì)偏移量代表沿介質(zhì)方向的順序偏移量,包括首部、數(shù)據(jù)、校驗(yàn)和、和填充符;而數(shù)據(jù)偏移量只代表數(shù)據(jù)的順序偏移量,不包括首部、數(shù)據(jù)、校驗(yàn)和、和填充符。為了定位特定的數(shù)據(jù)偏移量Od,程序(例如,操作系統(tǒng),應(yīng)用程序,系統(tǒng)驅(qū)動(dòng),或嵌入程序)使用簡(jiǎn)單的確定算術(shù)方法,計(jì)算出對(duì)于包含特定數(shù)據(jù)偏移量Od的數(shù)據(jù)段的介質(zhì)偏移量。固定長(zhǎng)度數(shù)據(jù)段的一個(gè)缺點(diǎn)是,數(shù)據(jù)段傾向于固定在大的值上(例如64KB(千字節(jié))),這樣,需要大量填充符,通過(guò)在介質(zhì)上引入必要的浪費(fèi)空間,減小了存儲(chǔ)效率。
為減少固定長(zhǎng)度數(shù)據(jù)段引入的浪費(fèi)空間,現(xiàn)有的一種途徑使用可變長(zhǎng)度數(shù)據(jù)段以減少固定長(zhǎng)度數(shù)據(jù)段方法中過(guò)多的填充符??勺冮L(zhǎng)度數(shù)據(jù)段意味著,數(shù)據(jù)段不必遵從預(yù)設(shè)固定長(zhǎng)度,甚至在一些或多數(shù)數(shù)據(jù)段都具有相同長(zhǎng)度時(shí)也是如此。但是,在固定長(zhǎng)度數(shù)據(jù)段的方法中使用的簡(jiǎn)單確定位置的方法,在可變長(zhǎng)度數(shù)據(jù)段中不起作用。因而,可變長(zhǎng)度數(shù)據(jù)段方法包括,使每個(gè)讀取頭沿介質(zhì)方向移動(dòng),將讀取頭按一個(gè)特定數(shù)據(jù)偏移量定位。沿介質(zhì)上的每個(gè)首部的數(shù)據(jù)偏移量,和數(shù)據(jù)長(zhǎng)度信息被順序估算,直到到達(dá)包含特定數(shù)據(jù)偏移量Od的數(shù)據(jù)段。這一移動(dòng)機(jī)制是費(fèi)時(shí)的,特別是特定數(shù)據(jù)偏移量位于介質(zhì)的尾部時(shí)更是如此。
根據(jù)本發(fā)明,上述的和其它問(wèn)題,通過(guò)將可變長(zhǎng)度數(shù)據(jù)段結(jié)合到順序存取存儲(chǔ)介質(zhì)上解決,而不需要在順序存取存儲(chǔ)介質(zhì)順序移動(dòng)讀取頭。
提供在順序存取存儲(chǔ)介質(zhì)上,存取具有可變長(zhǎng)度數(shù)據(jù)段數(shù)據(jù)的方法和程序產(chǎn)品。每個(gè)可變長(zhǎng)度數(shù)據(jù)段包括一個(gè)具有預(yù)設(shè)標(biāo)志字段的首部。
在順序存取存儲(chǔ)介質(zhì)上存儲(chǔ)數(shù)據(jù)時(shí),數(shù)據(jù)段按預(yù)設(shè)排列間隔排列。數(shù)據(jù)段被記錄在順序存取存儲(chǔ)介質(zhì)上,使得與預(yù)設(shè)標(biāo)志字段匹配的會(huì)話數(shù)據(jù),不按預(yù)設(shè)排列間隔排列。
從特定數(shù)據(jù)偏移量檢索會(huì)話數(shù)據(jù)時(shí),一個(gè)或多個(gè)估計(jì)介質(zhì)偏移量被迭代估計(jì)以便在順序存取存儲(chǔ)介質(zhì)上定位特定數(shù)據(jù)偏移量,每次估計(jì)從介質(zhì)的上次估計(jì)向前或向后移動(dòng)。定位在估計(jì)介質(zhì)偏移量的每個(gè)數(shù)據(jù)段被估算以便確定它是否包含特定數(shù)據(jù)偏移量。當(dāng)特定數(shù)據(jù)偏移量被找到,讀寫(xiě)頭定位在相應(yīng)數(shù)據(jù)段并且記錄在相應(yīng)數(shù)據(jù)段中的所需數(shù)據(jù)被檢索到。
還提供在順序存取存儲(chǔ)介質(zhì)上存取會(huì)話數(shù)據(jù)的系統(tǒng)。將會(huì)話數(shù)據(jù)存儲(chǔ)到順序存儲(chǔ)介質(zhì)上時(shí),緩存接收并存儲(chǔ)會(huì)話數(shù)據(jù)。分配模塊在緩存中可變長(zhǎng)度數(shù)據(jù)段分配會(huì)話數(shù)據(jù)。每個(gè)可變長(zhǎng)度數(shù)據(jù)段,包括一個(gè)含有預(yù)設(shè)標(biāo)志字段的首部。排列模塊按預(yù)設(shè)排列間隔,將每個(gè)首部排列在順序存取存儲(chǔ)介質(zhì)上。記錄模塊將每個(gè)可變長(zhǎng)數(shù)據(jù)段記錄到順序存取存儲(chǔ)介質(zhì)上,從而使與預(yù)設(shè)標(biāo)志字段匹配的會(huì)話數(shù)據(jù),不按預(yù)設(shè)排列間隔排列。
在含有可變長(zhǎng)度數(shù)據(jù)段的順序存取存儲(chǔ)介質(zhì)上,從特定數(shù)據(jù)偏移量檢索記錄數(shù)據(jù)時(shí),估算模塊迭代估計(jì)一個(gè)或多個(gè)與數(shù)據(jù)段相聯(lián)系的數(shù)據(jù)偏移量。讀取頭被設(shè)定,從順序存取存儲(chǔ)介質(zhì)上,根據(jù)給出的介質(zhì)偏移量讀取數(shù)據(jù)。估算模塊估算順序存取存儲(chǔ)介質(zhì)上的估計(jì)介質(zhì)偏移量,確定定位在每個(gè)估計(jì)介質(zhì)偏移量的數(shù)據(jù)段,是否包含特定的數(shù)據(jù)偏移量。定位模塊將讀取頭定位在順序存取存儲(chǔ)介質(zhì),包含特定數(shù)據(jù)偏移量的數(shù)據(jù)段上。輸入模塊從讀取頭輸入,定位在特定數(shù)據(jù)偏移量數(shù)據(jù)段上的記錄數(shù)據(jù)。
圖1示出了本發(fā)明一項(xiàng)具體實(shí)施例可以實(shí)現(xiàn)在其上的適當(dāng)計(jì)算環(huán)境的方框圖;圖2A和圖2B示出了本發(fā)明一項(xiàng)實(shí)施例中,含有可變長(zhǎng)度數(shù)據(jù)段的順序存取存儲(chǔ)介質(zhì);圖3示出了本發(fā)明一項(xiàng)實(shí)施例中對(duì)于順序存儲(chǔ)介質(zhì)存取以可變長(zhǎng)度數(shù)據(jù)段記錄的會(huì)話數(shù)據(jù)的操作的流程圖;圖4示出了本發(fā)明一項(xiàng)實(shí)施例中在順序存儲(chǔ)介質(zhì)上存儲(chǔ)會(huì)話數(shù)據(jù)的操作的流程圖;圖5A和圖5B示出了本發(fā)明一項(xiàng)實(shí)施例中從順序存儲(chǔ)介質(zhì)上按指定數(shù)據(jù)偏移量,檢索數(shù)據(jù)的操作的流程圖。
本發(fā)明一項(xiàng)實(shí)施例提供了在含有可變長(zhǎng)度數(shù)據(jù)段的順序存儲(chǔ)介質(zhì)上會(huì)話數(shù)據(jù)的存取。會(huì)話數(shù)據(jù)以可變長(zhǎng)度數(shù)據(jù)段記錄,按預(yù)設(shè)排列間隔排列。每個(gè)數(shù)據(jù)段含有一個(gè)預(yù)設(shè)標(biāo)記域,用來(lái)識(shí)別數(shù)據(jù)段的首部。會(huì)話數(shù)據(jù)記錄在介質(zhì)上,防止與標(biāo)記域匹配的會(huì)話數(shù)據(jù),以預(yù)設(shè)排列間隔排列。在順序存取存儲(chǔ)介質(zhì)上檢索會(huì)話數(shù)據(jù),是根據(jù)估計(jì)介質(zhì)偏移量,迭代查找特定數(shù)據(jù)偏移量。
圖1和隨后的討論用來(lái)對(duì)一個(gè)合適的計(jì)算環(huán)境提供一個(gè)簡(jiǎn)略和普遍的描述,本發(fā)明一項(xiàng)實(shí)施例運(yùn)行其上。盡管不是必須的,本發(fā)明的實(shí)施例將用計(jì)算機(jī)可執(zhí)行的指令,以普通文本描述,例如程序模塊、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等,它們實(shí)現(xiàn)特定任務(wù),或使用特定的抽象數(shù)據(jù)類型。而且那些本技術(shù)領(lǐng)域的專業(yè)人士會(huì)意識(shí)到,本發(fā)明可以在其它設(shè)置的計(jì)算機(jī)系統(tǒng)上實(shí)現(xiàn),如手持設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程的消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)PC、微型計(jì)算機(jī)、巨型計(jì)算機(jī)及類似系統(tǒng)。本發(fā)明同樣可以在分布式計(jì)算環(huán)境上實(shí)現(xiàn),在那種系統(tǒng)中,任務(wù)由通訊網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備完成。在分布式計(jì)算環(huán)境中,程序模塊可以同時(shí)駐留本地和遠(yuǎn)程的記憶存儲(chǔ)設(shè)備。而且,程序模塊可以嵌入固件,并且可以由存儲(chǔ)控制器的微處理器執(zhí)行。
參考圖1,本發(fā)明一項(xiàng)實(shí)施例的操作環(huán)境是計(jì)算機(jī)系統(tǒng)100,包括計(jì)算機(jī)102,帶有至少一個(gè)高速處理單元(CPU)104;連接一個(gè)存儲(chǔ)系統(tǒng)106;一個(gè)輸入設(shè)備或模塊108;和一個(gè)輸出設(shè)備或模塊110。這些部件通過(guò)至少一個(gè)總線結(jié)構(gòu)112相互連接。
上述CPU104的設(shè)計(jì)是為人所熟悉的,包括一個(gè)算術(shù)邏輯單元(ALU)114,用來(lái)實(shí)現(xiàn)計(jì)算;一組寄存器116,用來(lái)臨時(shí)存儲(chǔ)數(shù)據(jù)和指令;和一個(gè)控制單元118,用來(lái)控制計(jì)算機(jī)系統(tǒng)100的操作。CPU104可以是各種結(jié)構(gòu)的處理器,包括x86,由Intel和其他公司如Cyrix和AMD設(shè)計(jì);或PowerPC,由IBM和Motorola設(shè)計(jì)。
存儲(chǔ)系統(tǒng)106通常包括高速主存儲(chǔ)器120,其介質(zhì)形式包括隨機(jī)存儲(chǔ)器(RAM)和只讀存儲(chǔ)器(ROM)半導(dǎo)體設(shè)備;長(zhǎng)期存儲(chǔ)器,包括第一存儲(chǔ)器122和第二存儲(chǔ)器124,每個(gè)的介質(zhì)形式包括軟盤(pán)、硬盤(pán)、磁帶、CD-ROM、快閃存儲(chǔ)器、光盤(pán)和其他設(shè)備,使用電、磁、光或其它記錄介質(zhì)存貯數(shù)據(jù)。主存儲(chǔ)器120還包括通過(guò)顯示設(shè)備顯示圖像的視頻顯示存儲(chǔ)器。那些本技術(shù)領(lǐng)域的專業(yè)人士會(huì)意識(shí)到,存儲(chǔ)系統(tǒng)106可以包括大量具有不同存儲(chǔ)性能的可選元件。在優(yōu)選實(shí)施例中,第二存儲(chǔ)器124的形式是,包含可變長(zhǎng)度數(shù)據(jù)段的順序存取存儲(chǔ)介質(zhì),根據(jù)本發(fā)明,按預(yù)設(shè)排列間隔排列的。在可選實(shí)施例中,根據(jù)本發(fā)明的系統(tǒng)可以由存儲(chǔ)控制器或磁帶驅(qū)動(dòng)器實(shí)現(xiàn),它們與計(jì)算機(jī)系統(tǒng)分離,從計(jì)算機(jī)系統(tǒng)、外圍設(shè)備或網(wǎng)絡(luò)接收數(shù)據(jù)流。
輸入設(shè)備108和輸出設(shè)備110同樣是為人所熟悉的。輸入設(shè)備108包括鍵盤(pán)、鼠標(biāo)、物理轉(zhuǎn)換器(例如麥克風(fēng))等等。輸出設(shè)備110包括顯示器、打印機(jī)、轉(zhuǎn)換器(例如揚(yáng)聲器)等等。例如在本發(fā)明一項(xiàng)實(shí)施例中,磁帶的讀取頭是輸入設(shè)備,而磁帶的記錄頭是輸出設(shè)備。
正如那些本技術(shù)領(lǐng)域的專業(yè)人士所熟悉的,計(jì)算機(jī)系統(tǒng)100還包括一個(gè)操作系統(tǒng)和通常一個(gè)或多個(gè)應(yīng)用程序。操作系統(tǒng)包括一組程序,控制計(jì)算機(jī)系統(tǒng)100的操作、資源的分配、為用戶提供圖形操作介面,并且還包括必要的應(yīng)用程序,如電子郵件系統(tǒng)。應(yīng)用程序是運(yùn)行在操作系統(tǒng)軟件之上的軟件,使用由操作系統(tǒng)提供的計(jì)算機(jī)資源,完成用戶需要的特定任務(wù)。在本發(fā)明的優(yōu)選實(shí)施例中,電子郵件系統(tǒng)結(jié)合在操作系統(tǒng)中。電子郵件系統(tǒng)也可以結(jié)合在應(yīng)用程序中。它們都駐留在上述存儲(chǔ)系統(tǒng)106中。操作系統(tǒng)最好使用圖形操作介面,應(yīng)用程序的顯示輸出,被顯示在輸出設(shè)備110屏幕上的矩形區(qū)域內(nèi);操作系統(tǒng)是多任務(wù)的(以多線程執(zhí)行計(jì)算任務(wù)),例如Microsoft公司的“WINDOWS95”、“WINDOWS98”、“WINDOWS NT”操作系統(tǒng),IBM的OS/2WARP,Apple的MACINTOSH SYSTEM 8操作系統(tǒng),X-window等。
與計(jì)算機(jī)編程領(lǐng)域?qū)I(yè)人士的實(shí)踐相一致,除非另外說(shuō)明,本發(fā)明的如下描述參考了由計(jì)算機(jī)系統(tǒng)100、分離存儲(chǔ)控制器或分離磁帶驅(qū)動(dòng)器(未示出),執(zhí)行的動(dòng)作和操作的符號(hào)表示。上述的動(dòng)作和操作有時(shí)被稱作是計(jì)算機(jī)可執(zhí)行的。應(yīng)該知道,動(dòng)作和符號(hào)表示的操作包括表示引起電信號(hào)表示產(chǎn)生的變換和簡(jiǎn)化的數(shù)據(jù)位的電信號(hào)的CPU104的處理,和在存儲(chǔ)系統(tǒng)106的存儲(chǔ)位置上數(shù)據(jù)位的保持,以便像其它運(yùn)算信號(hào)一樣,重新配置或改變計(jì)算機(jī)系統(tǒng)的操作。保持?jǐn)?shù)據(jù)位的存儲(chǔ)位置是具有根據(jù)數(shù)據(jù)位的,特定的電、磁、光性能的物理單元。
計(jì)算機(jī)系統(tǒng)100可以通過(guò)與一或多臺(tái)遠(yuǎn)程計(jì)算機(jī)或外圍設(shè)備邏輯連接,運(yùn)行在網(wǎng)絡(luò)環(huán)境中,在此情況下,網(wǎng)絡(luò)介面或調(diào)制解調(diào)器可以被用作輸入設(shè)備108和/或輸出設(shè)備110。遠(yuǎn)程計(jì)算機(jī)可以是桌面計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC(個(gè)人計(jì)算機(jī))、同位體設(shè)備或其它普通網(wǎng)絡(luò)節(jié)點(diǎn),典型地包括與計(jì)算機(jī)系統(tǒng)100相聯(lián)系的很多或所有上述元件。邏輯連接包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)。這樣的網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)級(jí)計(jì)算機(jī)網(wǎng)、內(nèi)聯(lián)網(wǎng)和Internet中是普通的。
圖2A示出了本發(fā)明一項(xiàng)實(shí)施例的邏輯圖,描述具有可變長(zhǎng)度數(shù)據(jù)段的順序存取存儲(chǔ)介質(zhì)200。順序存取存儲(chǔ)介質(zhì)200可以代表,任何順序存儲(chǔ)和檢索數(shù)據(jù)的存儲(chǔ)設(shè)備,而非隨機(jī)存取方式的設(shè)備,包括無(wú)限盤(pán)式磁帶、盒式磁帶和WORM光盤(pán)。應(yīng)理解數(shù)據(jù)段201、202和203具有不同的長(zhǎng)度。在圖2B中,預(yù)設(shè)排列間隔(例如圖210所示)沿存儲(chǔ)介質(zhì)長(zhǎng)度方向,邏輯地和一致地間隔。在優(yōu)選實(shí)施例中,盡管其它的間隔也在本發(fā)明的范圍之內(nèi),間隔210與需要與磁帶上記錄1千字節(jié)(1KB)數(shù)據(jù)的磁帶長(zhǎng)度相符合。在可選實(shí)施例中,預(yù)設(shè)排列間隔210被確定為任意的,但是典型地,間隔210根據(jù)傳統(tǒng)排列單元確定,傳統(tǒng)排列單元與系統(tǒng)中定義的,順序存取存儲(chǔ)控制器參數(shù)或操作系統(tǒng)參數(shù)相聯(lián)系,用來(lái)優(yōu)化性能。
圖2B示出了本發(fā)明一項(xiàng)實(shí)施例中,數(shù)據(jù)段202更細(xì)節(jié)的表示。數(shù)據(jù)段202最好包括固定長(zhǎng)度數(shù)據(jù)段首部206,數(shù)據(jù)區(qū)208,可選的填充區(qū)212,和可選的4位校驗(yàn)和區(qū)211。首部206(同時(shí)數(shù)據(jù)段202)按預(yù)設(shè)排列間隔204排列,預(yù)設(shè)排列間隔204也就是圖2A中的一個(gè)預(yù)設(shè)排列間隔210。在優(yōu)選實(shí)施例中,數(shù)據(jù)段首部包括一個(gè)標(biāo)志(或類型)域、一個(gè)屬性域、一個(gè)段編號(hào)域、一個(gè)數(shù)據(jù)偏移量域、一個(gè)數(shù)據(jù)長(zhǎng)度域、一個(gè)填充長(zhǎng)度域、前段數(shù)據(jù)段長(zhǎng)度域和一個(gè)校驗(yàn)和域。在一個(gè)可選實(shí)施例中,前段數(shù)據(jù)段長(zhǎng)度被去掉。
標(biāo)志字段存儲(chǔ)預(yù)設(shè)的和一致的標(biāo)志,用于識(shí)別首部的開(kāi)始,例如,標(biāo)志與任意的會(huì)話數(shù)據(jù)相對(duì)。檢索進(jìn)程通過(guò)以預(yù)設(shè)排列間隔,查找標(biāo)志來(lái)找到首部。但是,有一種可能,由于巧合,收到的任意會(huì)話數(shù)據(jù)與首部的標(biāo)志匹配。如果這個(gè)匹配的會(huì)話數(shù)據(jù)也按預(yù)設(shè)排列間隔排列,檢索進(jìn)程會(huì)將會(huì)話數(shù)據(jù)誤認(rèn)為首部數(shù)據(jù)。因此,本發(fā)明實(shí)施例的存儲(chǔ)進(jìn)程保證,不使與預(yù)設(shè)標(biāo)志字段匹配的會(huì)話數(shù)據(jù),按預(yù)設(shè)排列間隔排列。
屬性域包括描述數(shù)據(jù)段的參數(shù),以提高性能。例如,屬性域包括指示數(shù)據(jù)段是否包含填充域和校驗(yàn)和域的標(biāo)志,或指示當(dāng)前數(shù)據(jù)段是否是記錄的會(huì)話數(shù)據(jù)的最后一個(gè)數(shù)據(jù)段。段編號(hào)域用來(lái)保持?jǐn)?shù)據(jù)段的順序。數(shù)據(jù)偏移量域提供當(dāng)前數(shù)據(jù)段中,數(shù)據(jù)區(qū)第一個(gè)字節(jié)的預(yù)設(shè)數(shù)據(jù)偏移量。數(shù)據(jù)長(zhǎng)度域提供當(dāng)前數(shù)據(jù)段的數(shù)據(jù)區(qū)中數(shù)據(jù)的長(zhǎng)度。填充長(zhǎng)度域提供在數(shù)據(jù)段結(jié)束時(shí)包括的填充符長(zhǎng)度。前段數(shù)據(jù)段長(zhǎng)度域提供順序中前段數(shù)據(jù)段的長(zhǎng)度,以實(shí)現(xiàn)反向檢索。校驗(yàn)和域存儲(chǔ)數(shù)據(jù)段首部自身的校驗(yàn)和。
數(shù)據(jù)區(qū)208包括由計(jì)算機(jī)系統(tǒng)提供的,用于記錄在順序存儲(chǔ)介質(zhì)200上的會(huì)話數(shù)據(jù)部分。圖2B中的數(shù)據(jù)區(qū)208在每個(gè)介質(zhì)偏移量206處結(jié)束,介質(zhì)偏移量206不按預(yù)設(shè)間隔排列。填充區(qū)212代表位于數(shù)據(jù)區(qū)208尾部和下一個(gè)預(yù)設(shè)排列間隔218之間的區(qū)域。如本方式所采用的,這一區(qū)域被填充(例如,會(huì)話數(shù)據(jù)不被存儲(chǔ)在填充區(qū)212的可用空間),下一個(gè)數(shù)據(jù)段按下一個(gè)預(yù)設(shè)排列單元218排列。如圖所示,下一個(gè)數(shù)據(jù)段的首部214按下一個(gè)預(yù)設(shè)排列間隔218排列。然而有一種可能性,數(shù)據(jù)區(qū)長(zhǎng)度在預(yù)設(shè)排列間隔結(jié)束處,這樣減少在數(shù)據(jù)段中填充符的需要(見(jiàn)例中的數(shù)據(jù)段201)。在包括數(shù)據(jù)段校驗(yàn)和域的實(shí)施例中,校驗(yàn)和域的長(zhǎng)度包括在填充域的長(zhǎng)度中。
理解下述問(wèn)題是很重要的,在順序存取介質(zhì)中,使用了兩個(gè)不同類的偏移量(1)介質(zhì)偏移量,代表沿介質(zhì)記錄的信息的順序偏移量,包括首部、數(shù)據(jù)域、校驗(yàn)和和填充域。(2)數(shù)據(jù)偏移量,代表記錄在介質(zhì)上數(shù)據(jù)的順序偏移量,不包括首部、校驗(yàn)和和填充域。由此,預(yù)設(shè)排列間隔是根據(jù)介質(zhì)偏移量沿介質(zhì)方向的空間。而且,在介質(zhì)上讀和寫(xiě)數(shù)據(jù)的存儲(chǔ)設(shè)備,根據(jù)介質(zhì)偏移量定位。相反,當(dāng)用戶需要存儲(chǔ)在存儲(chǔ)介質(zhì)上的數(shù)據(jù)時(shí),用戶提供一個(gè)特定數(shù)據(jù)偏移量。本發(fā)明一項(xiàng)實(shí)施例適應(yīng)了介質(zhì)偏移量和數(shù)據(jù)偏移量的不同,在包含可變長(zhǎng)度數(shù)據(jù)段的介質(zhì)中,根據(jù)特定的數(shù)據(jù)偏移量找到介質(zhì)偏移量。
圖3示出了本發(fā)明一個(gè)實(shí)施例的流程圖,描述存取會(huì)話數(shù)據(jù)的操作,會(huì)話數(shù)據(jù)以可變長(zhǎng)度數(shù)據(jù)段記錄在順序存儲(chǔ)介質(zhì)上?!按嫒 蓖ǔJ侵复鎯?chǔ)數(shù)據(jù)、檢索數(shù)據(jù)或兼指二者(如圖3所說(shuō)明的)。進(jìn)程由操作300開(kāi)始,會(huì)話數(shù)據(jù)被接收到緩存中。操作302將會(huì)話數(shù)據(jù)分配成可變長(zhǎng)度數(shù)據(jù)段。操作304按預(yù)設(shè)排列間隔排列每個(gè)數(shù)據(jù)段。操作306在順序存儲(chǔ)介質(zhì)上,根據(jù)排列記錄每個(gè)數(shù)據(jù)段,并保證不使與預(yù)設(shè)標(biāo)志字段匹配的會(huì)話數(shù)據(jù),按預(yù)設(shè)排列間隔排列。如圖4所示,本發(fā)明一項(xiàng)實(shí)施例將具有上述匹配的數(shù)據(jù)段,分成兩個(gè)不同的數(shù)據(jù)段,使標(biāo)志匹配的會(huì)話數(shù)據(jù)不按預(yù)設(shè)排列間隔排列。
在操作308中,特定數(shù)據(jù)偏移量從用戶所需數(shù)據(jù)中得到,所需數(shù)據(jù)將從順序存儲(chǔ)介質(zhì)中被讀取。操作310估計(jì)介質(zhì)偏移量,它試圖估計(jì)介質(zhì)上數(shù)據(jù)段首部的位置。操作312根據(jù)估計(jì)介質(zhì)偏移量定位數(shù)據(jù)段,并估算數(shù)據(jù)段的首部。操作314確定特定數(shù)據(jù)偏移量是否包含在定位的數(shù)據(jù)段中。如果不在,一個(gè)新的介質(zhì)偏移量根據(jù)前一個(gè)估計(jì)數(shù)據(jù)偏移量估計(jì),進(jìn)程繼續(xù)操作312,迭代定位特定介質(zhì)偏移量。如果特定的數(shù)據(jù)偏移量被定位,操作318從定位的數(shù)據(jù)段中檢索數(shù)據(jù)。進(jìn)程在操作320結(jié)束。
圖4示出了在本發(fā)明實(shí)施例的流程圖,描述在順序存儲(chǔ)介質(zhì)上存儲(chǔ)會(huì)話數(shù)據(jù)的操作。操作400初始化存儲(chǔ)進(jìn)程。在操作402中,會(huì)話數(shù)據(jù)的數(shù)據(jù)流通過(guò)服務(wù)器(或用戶),從數(shù)據(jù)源用戶(或產(chǎn)生者)接收到緩存。數(shù)據(jù)源用戶可以是任何應(yīng)用程序或系統(tǒng)服務(wù),它們?cè)诠烙?jì)或不估計(jì)總會(huì)話數(shù)據(jù)初始長(zhǎng)度的情況下,發(fā)送數(shù)據(jù)存儲(chǔ)到順序存取存儲(chǔ)介質(zhì)上。服務(wù)器代表一個(gè)進(jìn)程或服務(wù),將一個(gè)或多個(gè)數(shù)據(jù)源的數(shù)據(jù)匯集到緩存,并在介質(zhì)上產(chǎn)生記錄。
“會(huì)話”是指將一組數(shù)據(jù)記錄到順序存儲(chǔ)介質(zhì)上的完整進(jìn)程。數(shù)據(jù)源在每個(gè)會(huì)話中產(chǎn)生一個(gè)或多個(gè)“寫(xiě)”操作。寫(xiě)操作產(chǎn)生的會(huì)話數(shù)據(jù)匯集在一個(gè)或多個(gè)緩存中,直到緩存溢出。“溢出”操作使緩存數(shù)據(jù)從緩存“溢出”,并記錄到介質(zhì)上。溢出操作可能由數(shù)據(jù)源用戶或服務(wù)器自身產(chǎn)生(例如自動(dòng)溢出)。典型地,超時(shí)條件或其它事件作為服務(wù)器自動(dòng)溢出的觸發(fā)器,溢出數(shù)據(jù)由數(shù)據(jù)段邊界定義。
在操作404中,會(huì)話數(shù)據(jù)被分配成數(shù)據(jù)段。在本發(fā)明一項(xiàng)實(shí)施例中,分配開(kāi)始根據(jù)傳統(tǒng)的數(shù)據(jù)段長(zhǎng)度(如64KB),為預(yù)設(shè)排列間隔(如1KB)的倍數(shù)。但是,分配到最后一個(gè)數(shù)據(jù)段的會(huì)話數(shù)據(jù),可能不會(huì)填滿整個(gè)傳統(tǒng)數(shù)據(jù)段的長(zhǎng)度。這樣,順序中的最后一個(gè)數(shù)據(jù)段需要填充符。
操作406選擇順序中第一個(gè)數(shù)據(jù)段為當(dāng)前數(shù)據(jù)段來(lái)操作。操作408估算當(dāng)前數(shù)據(jù)段的數(shù)據(jù)區(qū),確定按預(yù)設(shè)排列間隔排列的會(huì)話數(shù)據(jù)是否與標(biāo)志匹配。應(yīng)理解數(shù)據(jù)段首部長(zhǎng)度也應(yīng)該在估算中考慮。例如,如果數(shù)據(jù)段為40字節(jié),預(yù)設(shè)排列間隔為1024字節(jié),那么第一次估算為當(dāng)前數(shù)據(jù)段的數(shù)據(jù)區(qū)中是986字節(jié),下一個(gè)估算為其后1024字節(jié)的間隔,直到數(shù)據(jù)段結(jié)束。
如果按預(yù)設(shè)排列間隔檢測(cè)到的會(huì)話數(shù)據(jù)與標(biāo)志匹配,操作410會(huì)將進(jìn)程轉(zhuǎn)到操作412。如果沒(méi)有檢測(cè)到匹配,進(jìn)程繼續(xù)到操作414。操作412通過(guò)在匹配位置終止當(dāng)前數(shù)據(jù)段,有效地將當(dāng)前數(shù)據(jù)段分成兩個(gè)數(shù)據(jù)段。數(shù)據(jù)段中的其余數(shù)據(jù)被分成新的數(shù)據(jù)段,分配為順序中的下一個(gè)數(shù)據(jù)段。這一進(jìn)程保證,不存在按預(yù)設(shè)排列間隔排列并與標(biāo)志匹配會(huì)話數(shù)據(jù)。操作413向數(shù)據(jù)段中插入填充符,保證數(shù)據(jù)段以預(yù)設(shè)排列間隔結(jié)束,并以預(yù)設(shè)排列間隔開(kāi)始下一個(gè)數(shù)據(jù)段的首部。操作416以首部數(shù)據(jù)結(jié)構(gòu)輸入當(dāng)前數(shù)據(jù)段的首部信息。操作418將當(dāng)前數(shù)據(jù)段,包括首部、數(shù)據(jù)區(qū)、和可選的校驗(yàn)和以及任何所需的填充區(qū),記錄到順序存取存儲(chǔ)介質(zhì)上。
如果還有附加的數(shù)據(jù)段需要處理,操作422將進(jìn)程轉(zhuǎn)到操作426,它檢索下一個(gè)數(shù)據(jù)段,進(jìn)程在其余數(shù)據(jù)段中重復(fù)步驟。如果沒(méi)有附加的數(shù)據(jù)段需要處理,操作424終止存儲(chǔ)進(jìn)程。最后一個(gè)數(shù)據(jù)段不必像前面的數(shù)據(jù)段一樣,具有相同的長(zhǎng)度,只需是預(yù)設(shè)排列間隔的幾倍。這樣,最后一個(gè)數(shù)據(jù)段的會(huì)話數(shù)據(jù)被記錄在介質(zhì)上,數(shù)據(jù)段(如果有的話,包括校驗(yàn)和域)被填充,按預(yù)設(shè)排列間隔排列在數(shù)據(jù)段的尾部。
圖5A和圖5B示出了本發(fā)明實(shí)施例的流程圖,描述在順序存取存儲(chǔ)介質(zhì)上按特定數(shù)據(jù)偏移量檢索數(shù)據(jù)的操作。操作500初始化檢索進(jìn)程。操作502從用戶接收的特定數(shù)據(jù)偏移量Od和所需要的長(zhǎng)度Ld。檢索進(jìn)程的一個(gè)目的是定位介質(zhì)偏移量Oi,到包含數(shù)據(jù)的在數(shù)據(jù)偏移量Od的數(shù)據(jù)段。
檢索進(jìn)程依靠存儲(chǔ)在磁帶中數(shù)據(jù)的各種已知的和預(yù)測(cè)的參數(shù)。參數(shù)可以存儲(chǔ)在介質(zhì)上(也就是在線參數(shù))并且/或者存儲(chǔ)在系統(tǒng)內(nèi)。參數(shù)“A”代表段中大約的或平均的數(shù)據(jù)區(qū)長(zhǎng)度。在本發(fā)明的實(shí)施例中,參數(shù)A代表由存儲(chǔ)設(shè)備或操作系統(tǒng)所寫(xiě)入的,或?qū)懭虢橘|(zhì)中的統(tǒng)計(jì)平均數(shù)據(jù)段長(zhǎng)度。在本發(fā)明的可選實(shí)施例中,參數(shù)A代表初始的缺省數(shù)據(jù)區(qū)長(zhǎng)度,是特別根據(jù)傳統(tǒng)數(shù)據(jù)區(qū)長(zhǎng)度而定的。參數(shù)“H”代表固定長(zhǎng)度首部的長(zhǎng)度,在優(yōu)選實(shí)施例中為40字節(jié)。參數(shù)“O0”代表介質(zhì)上第一個(gè)數(shù)據(jù)段的開(kāi)始介質(zhì)偏移量。參數(shù)“P”代表每個(gè)數(shù)據(jù)段中大約的或平均的填充區(qū)長(zhǎng)度,并且可以以參數(shù)A相似的方式初始定義。P合理的初始值是零。在優(yōu)選實(shí)施例中,參數(shù)A和P在每次迭代后刷新,以提高估計(jì)的精度。參數(shù)m代表預(yù)設(shè)的排列間隔,在本發(fā)明的實(shí)施例中是1KB。
O0與Od之間的數(shù)據(jù)段編號(hào)可以被估計(jì)為N=(Od/A),其中“/”操作代表整除(也就是Od/A得到商的整數(shù)部分)。操作504確定初始介質(zhì)偏移量的估計(jì)值O1,其中O1=O0+N*(A+H+P),其中A+H+P代表估計(jì)的數(shù)據(jù)段長(zhǎng)度,“*”操作代表乘。如果數(shù)據(jù)段校驗(yàn)和包含在數(shù)據(jù)段中,校驗(yàn)和域的長(zhǎng)度也應(yīng)包含在估計(jì)數(shù)據(jù)段長(zhǎng)度中。在操作506中,Ok被設(shè)為等于O1,操作508通過(guò)設(shè)置Ok=Ok-(Okmod m),排列Ok到m邊界(也就是預(yù)設(shè)排列間隔),其中“=”代表普通賦值操作。“mod”操作確定Ok被m除的余數(shù)。操作508設(shè)置Ok到預(yù)設(shè)排列間隔,等于或超前一個(gè)估計(jì)介質(zhì)偏移量Ok。
在操作510中,在操作508中確定的從Ok開(kāi)始的順序介質(zhì)數(shù)據(jù)的一個(gè)窗口,被從順序存儲(chǔ)介質(zhì)中檢索到緩存內(nèi)。在本發(fā)明一項(xiàng)實(shí)施例中,窗口長(zhǎng)度(“window_length”)為100KB長(zhǎng),雖然其它窗口長(zhǎng)度用在可選實(shí)施例中。操作512在預(yù)設(shè)邊界間隔內(nèi)順序掃描緩存,直到以介質(zhì)偏移量Ok定位標(biāo)志,或超出窗口。如果標(biāo)志沒(méi)有被發(fā)現(xiàn),操作514將進(jìn)程轉(zhuǎn)到操作526,操作526從介質(zhì)Ok+window_length檢索一個(gè)新的數(shù)據(jù)窗口到緩存中。這一循環(huán)重復(fù),直到標(biāo)志定位在操作514中。意外進(jìn)程的存在是為了處理,第一個(gè)估計(jì)到達(dá)介質(zhì)最后一個(gè)數(shù)據(jù)段的情況,在此情況下,根據(jù)操作514,首部永遠(yuǎn)不會(huì)在循環(huán)中找到。意外進(jìn)程產(chǎn)生一個(gè)需要處理的錯(cuò)誤,或再計(jì)算一個(gè)具有較小介質(zhì)偏移量的第一估計(jì),并繼續(xù)到操作508。
定位一個(gè)標(biāo)志后(從而第i數(shù)據(jù)段的首部),操作516檢索第i數(shù)據(jù)段的數(shù)據(jù)偏移量Oi和長(zhǎng)度Li。操作518通過(guò)使用條件Oi<=Od<Oi+Li,判斷第i數(shù)據(jù)段是否包含特定數(shù)據(jù)偏移量Od。如果操作518的條件為真(也就是第i數(shù)據(jù)段包括特定數(shù)據(jù)偏移量Oi),進(jìn)程通過(guò)連接符(A)繼續(xù)到圖5B的操作528,在操作528中,所需數(shù)據(jù)定位在等于Ok’+H+(Od-Oi)的介質(zhì)偏移量,并且返回給用戶。進(jìn)程繼續(xù)通過(guò)連接符(D)來(lái)結(jié)束進(jìn)程。
如果操作518的條件為假,那么操作520通過(guò)使用條件Od<Oi,確定所需數(shù)據(jù)偏移量Od是否定位在第i數(shù)據(jù)段前(也就是在介質(zhì)上數(shù)據(jù)段的較低編號(hào))。如果是,進(jìn)程繼續(xù)通過(guò)連接符(B)到操作530,操作530使用第i數(shù)據(jù)段首部的數(shù)據(jù),各自刷新參數(shù)A和P。在本發(fā)明一項(xiàng)實(shí)施例中,從第i數(shù)據(jù)段首部中的已知數(shù)據(jù)長(zhǎng)度和填充符長(zhǎng)度,與參數(shù)A和P各自平均。然后平均值適當(dāng)分配給A和P。在本發(fā)明的可選實(shí)施例中,可以用其它刷新技術(shù)刷新參數(shù)A和P。
使用刷新的A和P的值,操作532以O(shè)k=Ok’-((Oi-Od)/(A+H+P))*(A+H+P)確定新的介質(zhì)偏移量估計(jì),其中“/”操作代表整除。然后進(jìn)程繼續(xù)通過(guò)連接符(E)到操作508,在新的估計(jì)附近查找適當(dāng)?shù)臄?shù)據(jù)段。在本發(fā)明的可選實(shí)施例中,前段數(shù)據(jù)長(zhǎng)度域包括在首部中,中間操作插入到操作532前,估算與數(shù)據(jù)偏移量的值相聯(lián)系的,首部中前段數(shù)據(jù)長(zhǎng)度的值,以確定特定數(shù)據(jù)偏移量Od是否包含在前段數(shù)據(jù)段中。
如果操作520中的條件為假,操作522通過(guò)使用條件Od>=Oi+Li,確定所需數(shù)據(jù)段偏移量是否定位在第i數(shù)據(jù)段后。如果是這樣,進(jìn)程繼續(xù)通過(guò)連接符(C)到操作534,刷新參數(shù)A和P。通過(guò)使用A和P的刷新值,操作536以O(shè)k=Ok’+Li-((Od-Oi-Li)/(A+H+P))*(A+H+P)確定一個(gè)新的介質(zhì)偏移量估計(jì),其中“/”操作代表整除。然后進(jìn)程通過(guò)連接符(E)到操作508,在新的估計(jì)附近查找合適的數(shù)據(jù)段。如果操作522為假,進(jìn)程繼續(xù)到操作524來(lái)結(jié)束進(jìn)程,特別是提交一個(gè)錯(cuò)誤條件,其中特定數(shù)據(jù)偏移量Od定位失效。
本發(fā)明各種實(shí)施例的邏輯操作以如下方式執(zhí)行(1)作為計(jì)算系統(tǒng)中運(yùn)行的計(jì)算機(jī)執(zhí)行步驟序列;和/或(2)作為計(jì)算機(jī)系統(tǒng)中相互連接的機(jī)器模塊。指令序列根據(jù)計(jì)算機(jī)系統(tǒng)應(yīng)用本發(fā)明的性能來(lái)選擇。于是,在此描述的組成本發(fā)明實(shí)施例的邏輯操作,可以選擇地涉及到操作、步驟或模塊。
上述特點(diǎn)、例子和數(shù)據(jù)提供了一個(gè)完整的生產(chǎn)描述,使用了本發(fā)明的組成部分。由于本發(fā)明的很多實(shí)施例,可以不必從本發(fā)明的思想和領(lǐng)域分離出來(lái)而實(shí)現(xiàn),本發(fā)明存在于后面附加的權(quán)利要求書(shū)中。
權(quán)利要求
1.一種個(gè)可被計(jì)算系統(tǒng)讀取,和編碼用于執(zhí)行在順序存取存儲(chǔ)介質(zhì)上存取會(huì)話數(shù)據(jù)的計(jì)算機(jī)處理的計(jì)算機(jī)程序的計(jì)算機(jī)程序存儲(chǔ)介質(zhì),該計(jì)算機(jī)程序包括指令分配會(huì)話數(shù)據(jù)給多個(gè)可變長(zhǎng)度數(shù)據(jù)段,每個(gè)可變長(zhǎng)度數(shù)據(jù)段包括含有一個(gè)預(yù)設(shè)的標(biāo)志字段的一個(gè)首部;將每個(gè)首部按與順序存取存儲(chǔ)介質(zhì)相關(guān)的預(yù)設(shè)排列間隔排列;在順序存取存儲(chǔ)介質(zhì)上記錄每個(gè)可變長(zhǎng)度數(shù)據(jù)段,使得與預(yù)設(shè)標(biāo)志字段匹配的會(huì)話數(shù)據(jù)不按預(yù)設(shè)排列間隔排列;接收包含該會(huì)話數(shù)據(jù)的記錄數(shù)據(jù)部分的特定數(shù)據(jù)偏移量;疊代估計(jì)一個(gè)或多個(gè)與數(shù)據(jù)段相聯(lián)系的估計(jì)介質(zhì)偏移量;在順序存取存儲(chǔ)介質(zhì)上對(duì)每個(gè)估計(jì)介質(zhì)偏移量定位,確定定位在每個(gè)估計(jì)介質(zhì)偏移量的數(shù)據(jù)段,是否包含該特定數(shù)據(jù)偏移量;在順序存取存儲(chǔ)介質(zhì)上定位包含該特定數(shù)據(jù)偏移量的數(shù)據(jù)段;并且檢索定位在數(shù)據(jù)段中特定數(shù)據(jù)偏移量的記錄數(shù)據(jù)部分。
2.權(quán)利要求書(shū)1中的計(jì)算機(jī)程序存儲(chǔ)介質(zhì),其中估計(jì)指令,包括根據(jù)特定數(shù)據(jù)偏移量和估計(jì)數(shù)據(jù)段長(zhǎng)度,估算估計(jì)介質(zhì)偏移量的指令。
3.一種在順序存取存儲(chǔ)介質(zhì)上存儲(chǔ)會(huì)話數(shù)據(jù)的方法,該方法包括分配會(huì)話數(shù)據(jù)給多個(gè)可變長(zhǎng)度數(shù)據(jù)段,每個(gè)可變長(zhǎng)度數(shù)據(jù)段包括含有一個(gè)預(yù)設(shè)標(biāo)志字段的一個(gè)首部;在順序存取存儲(chǔ)介質(zhì)上按預(yù)設(shè)排列間隔排列每個(gè)首部;并且記錄每個(gè)可變長(zhǎng)度數(shù)據(jù)段到順序存取存儲(chǔ)介質(zhì)上,使得與預(yù)設(shè)標(biāo)志字段匹配的會(huì)話數(shù)據(jù)不按預(yù)設(shè)排列間隔排列。
4.權(quán)利要求書(shū)3的方法,其中記錄操作包括估算按預(yù)設(shè)排列間隔排列的會(huì)話數(shù)據(jù)部分,確定是否其中一部分與預(yù)設(shè)標(biāo)志字段匹配;如果其中一部分與預(yù)設(shè)標(biāo)志字段匹配,在匹配位置將可變長(zhǎng)度數(shù)據(jù)段分成為第一數(shù)據(jù)段和第二數(shù)據(jù)段;以按預(yù)設(shè)排列間隔排列的第一首部記錄第一數(shù)據(jù)段;并且以按預(yù)設(shè)排列間隔排列的第二首部記錄第二數(shù)據(jù)段。
5.一個(gè)具有存儲(chǔ)在計(jì)算機(jī)可讀取介質(zhì)上的用來(lái)執(zhí)行權(quán)利要求書(shū)3的操作的程序指令的計(jì)算機(jī)可執(zhí)行的程序產(chǎn)品。
6.一種在包括一組可變長(zhǎng)度數(shù)據(jù)段的順序存取存儲(chǔ)介質(zhì)上按特定數(shù)據(jù)偏移量,檢索記錄數(shù)據(jù)的方法,該方法包括疊代估計(jì)一個(gè)或多個(gè)與數(shù)據(jù)段相聯(lián)系的估計(jì)介質(zhì)偏移量;估算順序存取存儲(chǔ)介質(zhì)上的每個(gè)估計(jì)介質(zhì)偏移量,確定定位在每個(gè)估計(jì)介質(zhì)偏移量的數(shù)據(jù)段是否包含特定數(shù)據(jù)偏移量;在順序存取存儲(chǔ)介質(zhì)上,定位包含指定數(shù)據(jù)偏移量的數(shù)據(jù)段;并且在數(shù)據(jù)段中以特定數(shù)據(jù)偏移量檢索記錄數(shù)據(jù)。
7.權(quán)利要求書(shū)6的方法,其中的估計(jì)操作包括,根據(jù)特定數(shù)據(jù)偏移量和估計(jì)數(shù)據(jù)段長(zhǎng)度,估算估計(jì)介質(zhì)偏移量。
8.權(quán)利要求書(shū)6的方法,其中的估計(jì)操作包括確定第一介質(zhì)偏移量;根據(jù)特定數(shù)據(jù)偏移量和第一數(shù)據(jù)偏移量,估計(jì)第二介質(zhì)偏移量;以第二介質(zhì)偏移量定位當(dāng)前數(shù)據(jù)段的首部;并且如果特定數(shù)據(jù)偏移量包含在當(dāng)前數(shù)據(jù)段中,在當(dāng)前數(shù)據(jù)段的特定數(shù)據(jù)偏移量中檢索記錄數(shù)據(jù)。
9.權(quán)利要求書(shū)8的方法,其中估計(jì)第二介質(zhì)偏移量的操作包括根據(jù)特定數(shù)據(jù)偏移量和預(yù)設(shè)數(shù)據(jù)偏移量和當(dāng)前數(shù)據(jù)段長(zhǎng)度,確定特定數(shù)據(jù)偏移量,定位在當(dāng)前數(shù)據(jù)段之前還是之后。
10.權(quán)利要求書(shū)8的方法還包括根據(jù)特定數(shù)據(jù)偏移量和第二介質(zhì)偏移量估計(jì)第三介質(zhì)偏移量。
11.權(quán)利要求書(shū)8的方法還包括根據(jù)與第二介質(zhì)偏移量相聯(lián)系的數(shù)據(jù)段首部信息,刷新估計(jì)的數(shù)據(jù)段長(zhǎng)度,提供一個(gè)刷新的估計(jì)數(shù)據(jù)段長(zhǎng)度;并且根據(jù)特定數(shù)據(jù)段偏移量、第二介質(zhì)偏移量、和修改的數(shù)據(jù)段長(zhǎng)度,估計(jì)第三介質(zhì)偏移量。
12.一個(gè)具有存儲(chǔ)在計(jì)算機(jī)可讀取介質(zhì)上的用來(lái)執(zhí)行權(quán)利要求書(shū)6的操作的程序指令的計(jì)算機(jī)可執(zhí)行的程序產(chǎn)品。
13.一個(gè)存儲(chǔ)會(huì)話數(shù)據(jù)到順序存取存儲(chǔ)介質(zhì)上的系統(tǒng),該系統(tǒng)包括接收會(huì)話數(shù)據(jù)的一個(gè)緩存;一個(gè)分配模塊,分配緩存中的會(huì)話數(shù)據(jù)到多個(gè)可變長(zhǎng)度數(shù)據(jù)段,每個(gè)可變長(zhǎng)度數(shù)據(jù)段包括一個(gè)含有預(yù)設(shè)標(biāo)志字段的首部;一個(gè)排列模塊,按預(yù)設(shè)排列間隔排列每個(gè)首部到順序存取存儲(chǔ)介質(zhì)上;和一個(gè)記錄模塊,記錄每個(gè)可變長(zhǎng)度數(shù)據(jù)段到順序存取存儲(chǔ)介質(zhì)上,使與預(yù)設(shè)標(biāo)志字段匹配的會(huì)話數(shù)據(jù),不以預(yù)設(shè)排列間隔排列。
14.權(quán)利要求書(shū)13的系統(tǒng),其中記錄模塊設(shè)置成,如果數(shù)據(jù)段包含以預(yù)設(shè)排列間隔排列,并與預(yù)設(shè)標(biāo)志字段匹配的會(huì)話數(shù)據(jù),則將可變長(zhǎng)度數(shù)據(jù)段分成第一數(shù)據(jù)段和第二數(shù)據(jù)段。
15.在包含一組可變長(zhǎng)度數(shù)據(jù)段的順序存取存儲(chǔ)介質(zhì)上,按特定數(shù)據(jù)偏移量檢索記錄數(shù)據(jù)的一個(gè)系統(tǒng),該方法包括一個(gè)估計(jì)模塊,用來(lái)疊代估計(jì)一個(gè)或多個(gè)與數(shù)據(jù)段相聯(lián)系的估計(jì)介質(zhì)偏移量;一個(gè)讀取頭,根據(jù)提供的介質(zhì)偏移量,設(shè)置為從順序存取存儲(chǔ)介質(zhì)上讀取數(shù)據(jù);一個(gè)估算模塊,估算順序存取存儲(chǔ)介質(zhì)上的每個(gè)介質(zhì)偏移量,確定按每個(gè)估計(jì)介質(zhì)偏移量定位的數(shù)據(jù)段,是否包括特定數(shù)據(jù)偏移量;一個(gè)定位模塊,將讀取頭定位在順序存取存儲(chǔ)介質(zhì)的包含特定數(shù)據(jù)偏移量的數(shù)據(jù)段上;和一個(gè)輸入模塊,接收從讀取頭讀取的,以特定數(shù)據(jù)偏移量定位在數(shù)據(jù)段中的記錄數(shù)據(jù)。
16.權(quán)利要求書(shū)15的系統(tǒng)還包括記錄在順序存取存儲(chǔ)介質(zhì)上的在線信息,包括一個(gè)平均數(shù)據(jù)段長(zhǎng)度,其中估算模塊使用平均數(shù)據(jù)段長(zhǎng)度估計(jì)。
17.權(quán)利要求書(shū)16的系統(tǒng),其中的在線信息根據(jù)估算模塊估算的,每個(gè)數(shù)據(jù)段的首部信息,通過(guò)每個(gè)迭代估計(jì)刷新。
18.一個(gè)通過(guò)計(jì)算系統(tǒng)和編碼用來(lái)執(zhí)行將會(huì)話數(shù)據(jù)存儲(chǔ)在順序存取存儲(chǔ)介質(zhì)上的計(jì)算機(jī)處理的計(jì)算機(jī)程序,在載波上實(shí)現(xiàn)的計(jì)算機(jī)數(shù)據(jù)信號(hào),該計(jì)算機(jī)程序包括指令分配會(huì)話數(shù)據(jù)給多個(gè)可變長(zhǎng)度數(shù)據(jù)段,每個(gè)可變長(zhǎng)度數(shù)據(jù)段包含一個(gè)具有預(yù)設(shè)標(biāo)志字段的首部;并且在順序存取存儲(chǔ)介質(zhì)上記錄按預(yù)設(shè)排列間隔排列的每個(gè)可變長(zhǎng)度數(shù)據(jù)段,使與預(yù)設(shè)標(biāo)志字段匹配的會(huì)話數(shù)據(jù),不按預(yù)設(shè)排列間隔排列。
19.一個(gè)通過(guò)計(jì)算系統(tǒng)和編碼用來(lái)執(zhí)行,在包含多個(gè)可變長(zhǎng)度數(shù)據(jù)段的順序存取存儲(chǔ)介質(zhì)上,按特定數(shù)據(jù)偏移量檢索記錄數(shù)據(jù)計(jì)算機(jī)數(shù)據(jù)信號(hào)的計(jì)算機(jī)程序,在載波上實(shí)現(xiàn)的計(jì)算機(jī)數(shù)據(jù)信號(hào),該計(jì)算機(jī)程序包括指令迭代估計(jì)一個(gè)或多個(gè)與數(shù)據(jù)段相聯(lián)系的估計(jì)介質(zhì)偏移量;估算順序存取存儲(chǔ)介質(zhì)上的每個(gè)估計(jì)介質(zhì)偏移量,確定定位在每個(gè)估計(jì)介質(zhì)偏移量的數(shù)據(jù)段,是否包含特定數(shù)據(jù)偏移量;并且檢索數(shù)據(jù)段中定位在特定數(shù)據(jù)偏移量的記錄數(shù)據(jù)。
全文摘要
一個(gè)系統(tǒng)、方法和程序產(chǎn)品提供了根據(jù)估計(jì)介質(zhì)偏移量,使用迭代查找特定數(shù)據(jù)偏移量,在順序存取存儲(chǔ)介質(zhì)上對(duì)于可變長(zhǎng)度數(shù)據(jù)段的存取。以可變長(zhǎng)度數(shù)據(jù)段記錄的數(shù)據(jù),按預(yù)設(shè)排列間隔排列。每個(gè)數(shù)據(jù)段包含一個(gè)預(yù)設(shè)標(biāo)志字段,用來(lái)識(shí)別每個(gè)數(shù)據(jù)段的首部。記錄在介質(zhì)上的會(huì)話數(shù)據(jù),用來(lái)防止與標(biāo)志字段匹配的會(huì)話數(shù)據(jù),按預(yù)設(shè)排列間隔排列。數(shù)據(jù)段長(zhǎng)度的大約或缺省參數(shù)用于每一個(gè)估計(jì),并根據(jù)從介質(zhì)上數(shù)據(jù)段首部得到的實(shí)際數(shù)據(jù),在每次疊代中刷新。
文檔編號(hào)G06F17/30GK1294387SQ0012862
公開(kāi)日2001年5月9日 申請(qǐng)日期2000年8月18日 優(yōu)先權(quán)日1999年8月20日
發(fā)明者L·F·卡布拉, A·S·克哈利得, S·R·斯特納 申請(qǐng)人:微軟公司