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

用于對udt的數(shù)據(jù)格式執(zhí)行流式檢查的系統(tǒng)和方法

文檔序號:6556578閱讀:182來源:國知局
專利名稱:用于對udt的數(shù)據(jù)格式執(zhí)行流式檢查的系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及一致性檢查,尤其涉及便于經(jīng)由流式檢查對用戶定義類型(UDT)片段的分析和驗(yàn)證一致性,而無需對數(shù)據(jù)進(jìn)行批發(fā)復(fù)制的系統(tǒng)和方法。
背景技術(shù)
數(shù)據(jù)庫是由預(yù)定義格式的數(shù)據(jù)庫管理系統(tǒng)(DBMS)創(chuàng)建和管理的相關(guān)文件或數(shù)據(jù)的集合。例如,DBMS可被排列在包含行與列的表格中??筛鶕?jù)查詢語言(例如,結(jié)構(gòu)化查詢語言(SQL))來構(gòu)造查詢以便于訪問數(shù)據(jù)庫中表格的內(nèi)容。類似地,數(shù)據(jù)可經(jīng)由外部源被輸入(例如導(dǎo)入)到表格中。通常,DBMS可管理任何形式的數(shù)據(jù),包括文本、圖像、聲音和視頻。據(jù)此,數(shù)據(jù)庫和文件結(jié)構(gòu)是由軟件應(yīng)用程序確定的。
DBMS可使用預(yù)定義的簡單數(shù)據(jù)類型,它們可指根據(jù)存儲其中的數(shù)據(jù)種類確定的變量的類別。例如,整數(shù)、浮點(diǎn)、字符串、日期、二進(jìn)制數(shù)、布爾、字符、短整型和長整型都是常用的簡單數(shù)據(jù)類型。近來,人們針對用戶定義類型(UDT)的使用投入大量精力,以提高DBMS的存儲靈活性和管理。更特別地,UDT的功能向開發(fā)者和用戶提供了創(chuàng)建與特定數(shù)據(jù)庫應(yīng)用程序相兼容的UDT的靈活性(例如,經(jīng)由聲明性語言)。
UDT實(shí)現(xiàn)存儲環(huán)境(例如,DBMS)內(nèi)對復(fù)型的建模和操縱。UDT還提供諸如繼承、包含和多值嵌入等概念。UDT可包括一系列不同類型的片段(例如,整數(shù)、浮點(diǎn)、字符串、日期、二進(jìn)制數(shù)、布爾、字符、短整型、長整型……)。例如UDT片段可以是具有相關(guān)聯(lián)元數(shù)據(jù)的UDT的一部分(例如,對于與個(gè)人相關(guān)的UDT,一個(gè)片段可保存該個(gè)人的名字,另一個(gè)片斷可與該個(gè)人的地址相關(guān)……)。UDT片段的大小可根據(jù)其類型和/或相關(guān)聯(lián)的有效負(fù)荷而變化。UDT可被存儲在一個(gè)或多個(gè)數(shù)據(jù)頁中和/或作為一個(gè)或多個(gè)數(shù)據(jù)分組的一部分被傳輸。由于它們變化大小的原因,在存儲時(shí)UDT和/或UDT片段可在不同的數(shù)據(jù)頁之間拆分(或者在傳輸時(shí)在不同的數(shù)據(jù)分組之間拆分)。例如,如果在一數(shù)據(jù)頁內(nèi)沒有足夠的空閑空間來存儲UDT和/或UDT片段,則該UDT和/或UDT片段可被拆分。例如,10,000字節(jié)的UDT不能被存儲在一個(gè)8192字節(jié)的數(shù)據(jù)頁中;因此,該UDT在數(shù)據(jù)頁之間被拆分。此外,根據(jù)UDT拆分的位置,UDT片段的各個(gè)部分可在不同的數(shù)據(jù)頁之間被分開。UDT片段的拆分可能引起簡單數(shù)據(jù)類型被拆分;作為示例,四字節(jié)的整數(shù)可被存儲為第一字節(jié)存儲在第一數(shù)據(jù)頁中,而其余三個(gè)字節(jié)存儲在另外的一個(gè)或多個(gè)數(shù)據(jù)頁中。
通常,在對分段執(zhí)行一致性檢查以前,必須在存儲器中使整個(gè)片段物化。因此,在片段在兩個(gè)不同的數(shù)據(jù)頁或數(shù)據(jù)分組之間拆分的情形中,該片段的兩個(gè)部分必須都被復(fù)制到存儲器的另一個(gè)區(qū)域中以便于進(jìn)一步處理。因此,當(dāng)前所采用的技術(shù)在存儲器和處理資源的意義上是昂貴的。此外,當(dāng)片段大小(因而相關(guān)聯(lián)數(shù)據(jù)頁或數(shù)據(jù)分組的數(shù)量)增長時(shí),這一開銷也隨之增長。

發(fā)明內(nèi)容
以下給出本發(fā)明的簡單概述以提供對本發(fā)明的一些方面的基本理解。此概述不是本發(fā)明的詳盡概覽。它既不試圖標(biāo)識本發(fā)明的關(guān)鍵性或決定性元素,也不試圖界定本發(fā)明的范圍。它唯一的目的是以簡化形式給出本發(fā)明的一些概念以作為稍后給出的更詳細(xì)描述的序言。
本發(fā)明涉及使用數(shù)據(jù)流對用戶定義類型(UDT)片段執(zhí)行一致性檢查而無需對數(shù)據(jù)進(jìn)行批發(fā)復(fù)制的系統(tǒng)和方法。流式一致性檢查便于盡快發(fā)現(xiàn)無效片段,從而不必讀取、存儲、分析整個(gè)UDT片段等等。此外,UDT片段無需完全物化即可進(jìn)行評估;因此,與常規(guī)技術(shù)相比,使用本發(fā)明的系統(tǒng)和/或方法可通過減少所需資源和實(shí)現(xiàn)無效結(jié)構(gòu)的更快檢測而產(chǎn)生改善的性能。
根據(jù)本發(fā)明的一個(gè)方面,提供一種便于評估用戶定義類型(UDT)片段是否有錯(cuò)誤的系統(tǒng)。該系統(tǒng)包括數(shù)據(jù)塊處理組件,它接收包括UDT片段的數(shù)據(jù)塊流,標(biāo)識每個(gè)UDT片段的片段類型(例如當(dāng)遇到新片段的開始時(shí)),并在處理數(shù)據(jù)塊時(shí)將其丟棄。此外,該系統(tǒng)還包括檢查對象,它部分地基于對應(yīng)的已標(biāo)識片段類型來檢查UDT片段,并在適當(dāng)?shù)臅r(shí)候生成錯(cuò)誤指示。檢查對象可便于例如物化已在數(shù)據(jù)塊之間拆分的基本數(shù)據(jù)類型。
依照本發(fā)明的另一個(gè)方面,提供一種便于對UDT進(jìn)行一致性檢查的方法。該方法可包括接收包含UDT片段的數(shù)據(jù)塊,標(biāo)識這些UDT片段的類型,使用相應(yīng)的檢查對象來確定其中是否有任何UDT片段包括錯(cuò)誤,并在處理數(shù)據(jù)塊之后將其丟棄。
根據(jù)本發(fā)明的又一個(gè)方面,可提供一種分析數(shù)據(jù)結(jié)構(gòu)是否有錯(cuò)誤的系統(tǒng)。該系統(tǒng)可包括用于接收包括數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)塊流的裝置、用于標(biāo)識不同類型的數(shù)據(jù)塊的裝置,使用相應(yīng)的檢查對象來標(biāo)識數(shù)據(jù)結(jié)構(gòu)中所包括錯(cuò)誤的裝置、以及用于在處理數(shù)據(jù)塊時(shí)將其從流中丟棄的裝置。
以下描述和附圖詳細(xì)地闡述了本發(fā)明的某些示例性方面。但是,這些方面僅指示了可使用本發(fā)明原理的各種方式中的幾種,并且旨在使本發(fā)明包括所有這些方面及其等效技術(shù)方案。當(dāng)結(jié)合附圖考慮時(shí),本發(fā)明的其它優(yōu)點(diǎn)和新穎特征將從以下對本發(fā)明的詳細(xì)描述中變得顯而易見。


圖1根據(jù)本發(fā)明的一個(gè)方面示出一種便于分析數(shù)據(jù)結(jié)構(gòu)以確定錯(cuò)誤的存在的系統(tǒng)的框圖。
圖2根據(jù)本發(fā)明的一個(gè)方面示出一種便于經(jīng)由使用流式檢查來分析和/或驗(yàn)證UDT片段的系統(tǒng)的框圖。
圖3根據(jù)本發(fā)明的一個(gè)方面示出一種經(jīng)由對每個(gè)UDT片段類型使用相應(yīng)檢查對象來執(zhí)行流式檢查以檢測無效結(jié)構(gòu)的系統(tǒng)的框圖。
圖4根據(jù)本發(fā)明的一個(gè)方面示出一種使用可存儲最少數(shù)據(jù)的流式檢查來評估UDT片段的有效性的系統(tǒng)的框圖。
圖5根據(jù)本發(fā)明的一個(gè)方面示出一種生成可用來評估對應(yīng)UDT片段的檢查對象的系統(tǒng)的框圖。
圖6根據(jù)本發(fā)明的一個(gè)方面示出一種便于使用流式檢查來評估UDT片段是否有錯(cuò)誤的示例性方法的流程圖。
圖7根據(jù)本發(fā)明的一個(gè)方面示出一種便于經(jīng)由評估檢查的進(jìn)度來對UDT片段執(zhí)行流式一致性檢查的示例性方法的流程圖。
圖8根據(jù)本發(fā)明的一個(gè)方面示出一種便于分析UDT片段是否有錯(cuò)誤并在標(biāo)識出錯(cuò)誤時(shí)即停止流式檢查的示例性方法的流程圖。
圖9示出一種示例性網(wǎng)絡(luò)環(huán)境,其中可使用本發(fā)明的各個(gè)新穎性方面。
圖10示出一種示例性操作環(huán)境,其中可使用本發(fā)明的各個(gè)新穎性方面。
具體實(shí)施例方式
本發(fā)明涉及使用數(shù)據(jù)流對用戶定義類型(UDT)片段執(zhí)行一致性檢查而無需對數(shù)據(jù)進(jìn)行批發(fā)復(fù)制的系統(tǒng)和方法。流式一致性檢查便于盡快發(fā)現(xiàn)無效片段,從而不必讀取、存儲、分析整個(gè)UDT片段等等。此外,UDT片段無需完全物化即可進(jìn)行評估;因此,與常規(guī)技術(shù)相比,使用本發(fā)明的系統(tǒng)和/或方法可通過減少所需資源和實(shí)現(xiàn)無效結(jié)構(gòu)的更快檢測而產(chǎn)生改善的性能。
如在此申請中所使用的,術(shù)語“組件”、“系統(tǒng)”、“對象”、“檢測器”、“檢查器”、“激活器”、“生成器”等意指計(jì)算機(jī)相關(guān)實(shí)體,這些實(shí)體是硬件、軟件(例如,執(zhí)行中的軟件)和/或固件。例如,組件可以是處理器上運(yùn)行的進(jìn)程、處理器、對象、可執(zhí)行碼、程序和/或計(jì)算機(jī)。作為示例,在服務(wù)器上運(yùn)行的應(yīng)用程序和該服務(wù)器都可以是組件。一個(gè)或多個(gè)組件可駐留在進(jìn)程內(nèi),且組件可限于一臺計(jì)算機(jī)上和/或可分布在兩臺或多臺計(jì)算機(jī)之間。
本發(fā)明參考附圖進(jìn)行描述,其中貫穿全文使用相同的參考標(biāo)號來指相同的元素。在以下描述中,為解釋目的,闡述了許多特定細(xì)節(jié)以提供對本發(fā)明的徹底理解。但是,顯然無需這些特定細(xì)節(jié)也可實(shí)施本發(fā)明。在其它實(shí)例中,以框圖形式示出眾所周知的結(jié)構(gòu)和設(shè)備以便于描述本發(fā)明。
圖1根據(jù)本發(fā)明的一個(gè)方面示出便于分析數(shù)據(jù)結(jié)構(gòu)以確定錯(cuò)誤的存在的系統(tǒng)100。系統(tǒng)100包括數(shù)據(jù)結(jié)構(gòu)流式檢查器105,它接收數(shù)據(jù)流(例如,數(shù)據(jù)塊1110、數(shù)據(jù)塊2115、……數(shù)據(jù)塊N 120,其中N是任何正整數(shù),以下稱之為數(shù)據(jù)塊110-120)并提供數(shù)據(jù)結(jié)構(gòu)一致性檢查結(jié)果。數(shù)據(jù)結(jié)構(gòu)流式檢查器105在無需對包含在數(shù)據(jù)塊110-120內(nèi)的數(shù)據(jù)進(jìn)行批發(fā)存儲就可評估包括在所輸入數(shù)據(jù)塊110-120的流內(nèi)的數(shù)據(jù)結(jié)構(gòu)(例如,用戶定義類型(UDT)片段)。由數(shù)據(jù)結(jié)構(gòu)流式檢查器105生成的數(shù)據(jù)結(jié)構(gòu)一致性檢查結(jié)果可以是錯(cuò)誤通知、表示沒有錯(cuò)誤的指示等等。該數(shù)據(jù)結(jié)構(gòu)一致性檢查結(jié)果可被系統(tǒng)100(例如,作為可用來停止數(shù)據(jù)塊110-120的流、用來中斷數(shù)據(jù)結(jié)構(gòu)流式檢查器105的處理等的反饋等)、不同的軟件應(yīng)用程序(未示出)和/或硬件設(shè)備(未示出)使用。此外(或者),可向用戶呈現(xiàn)數(shù)據(jù)結(jié)構(gòu)一致性檢查結(jié)果(例如,經(jīng)由警告、視覺顯示、日志文件、……)。
數(shù)據(jù)結(jié)構(gòu)流式檢查器105包括數(shù)據(jù)塊處理組件125和檢查對象130。數(shù)據(jù)塊處理組件125接收并處理數(shù)據(jù)塊110-120。作為示例,數(shù)據(jù)塊處理組件125可接收并處理數(shù)據(jù)塊1110直至數(shù)據(jù)塊1110窮盡,然后將數(shù)據(jù)塊1110丟棄;然后,數(shù)據(jù)塊處理組件125可類似地接收、處理和丟棄其它數(shù)據(jù)塊115-120,直至所有這些數(shù)據(jù)塊都已被評估。當(dāng)在處理數(shù)據(jù)塊1110時(shí)(以及類似地其它數(shù)據(jù)塊115-120),數(shù)據(jù)塊處理組件125可跟蹤數(shù)據(jù)塊1110內(nèi)的當(dāng)前位置,并在數(shù)據(jù)塊1110內(nèi)的特定位置激活與該數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián)的相關(guān)檢查對象130。
檢查對象130對為之激活檢查對象的數(shù)據(jù)結(jié)構(gòu)執(zhí)行一致性檢查。例如,檢查對象130可用來確定數(shù)據(jù)結(jié)構(gòu)內(nèi)錯(cuò)誤的存在。檢查對象130無需物化整個(gè)數(shù)據(jù)結(jié)構(gòu)就可以流式方式評估數(shù)據(jù)結(jié)構(gòu);相反,常規(guī)技術(shù)通常需要將整個(gè)數(shù)據(jù)結(jié)構(gòu)復(fù)制到存儲器中然后再評估所存儲的數(shù)據(jù)結(jié)構(gòu)。檢查對象130還可便于物化與已在不同的數(shù)據(jù)塊110-120之間拆分的數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián)的基本數(shù)據(jù)類型。
數(shù)據(jù)塊110-120可包括任意數(shù)量的數(shù)據(jù)結(jié)構(gòu)(例如,一個(gè)或多個(gè)UDT片段)。每個(gè)數(shù)據(jù)塊110-120都可以是一數(shù)據(jù)頁,它根據(jù)盤上格式進(jìn)行存儲,并用來存儲該一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)。此外(或者),每個(gè)數(shù)據(jù)塊110-120都可以是一個(gè)數(shù)據(jù)分組,它可在諸如網(wǎng)絡(luò)環(huán)境中的多個(gè)設(shè)備之間傳輸(例如,以線上格式、……)。
數(shù)據(jù)塊110-120可以是任意長度的(例如,1個(gè)字節(jié)、無窮大、……),只要該長度是已知的和/或可確定的。例如,數(shù)據(jù)塊110-120的大小可以是數(shù)據(jù)塊處理組件125已知的預(yù)設(shè)長度?;蛘撸瑪?shù)據(jù)塊處理組件125可標(biāo)識數(shù)據(jù)塊110-120的長度。數(shù)據(jù)塊110-120的大小在處理期間被數(shù)據(jù)塊處理組件125和/或檢查對象130用來檢測數(shù)據(jù)塊110-120的結(jié)束。根據(jù)一個(gè)示例,數(shù)據(jù)頁(和/或數(shù)據(jù)分組)的大小可以是八千字節(jié);但是本發(fā)明不限于此。
存儲在數(shù)據(jù)塊110-120(例如,數(shù)據(jù)頁、數(shù)據(jù)分組、……)內(nèi)的數(shù)據(jù)結(jié)構(gòu)的大小可根據(jù)數(shù)據(jù)類型和/或相關(guān)聯(lián)的有效負(fù)荷而有所不同?;蛘?,其中一些數(shù)據(jù)結(jié)構(gòu)可具有設(shè)定的長度和/或結(jié)構(gòu)。一個(gè)數(shù)據(jù)結(jié)構(gòu)不必全部存儲在單個(gè)數(shù)據(jù)塊(例如,數(shù)據(jù)塊1110)內(nèi)。一個(gè)數(shù)據(jù)結(jié)構(gòu)可與任意數(shù)量的數(shù)據(jù)塊110-120和/或數(shù)據(jù)塊110-120的各個(gè)部分相關(guān)聯(lián)。根據(jù)一個(gè)示例,一數(shù)據(jù)結(jié)構(gòu)的一半可以在第一數(shù)據(jù)塊(例如,數(shù)據(jù)塊1110)的結(jié)束處,而該片段的另一半可存在于下一個(gè)數(shù)據(jù)塊(例如,數(shù)據(jù)塊2115)內(nèi)。數(shù)據(jù)結(jié)構(gòu)拆分的位置可以是與數(shù)據(jù)塊(例如,數(shù)據(jù)塊1110)相關(guān)聯(lián)的可用空間量的函數(shù),從而該數(shù)據(jù)結(jié)構(gòu)的其余部分可按需存在于一個(gè)或多個(gè)后續(xù)數(shù)據(jù)塊內(nèi)(例如,數(shù)據(jù)塊2115、……、數(shù)據(jù)塊N 120)。
參考圖2,所示為根據(jù)本發(fā)明的一個(gè)方面的便于經(jīng)由流式檢查來分析和/或驗(yàn)證UDT片段的系統(tǒng)200。系統(tǒng)200包括片段流式檢查器205(例如,數(shù)據(jù)結(jié)構(gòu)流式檢查器105),它分析所輸入數(shù)據(jù)塊(例如,數(shù)據(jù)塊1210、數(shù)據(jù)塊2215……數(shù)據(jù)塊N 220)的流并生成UDT一致性檢查結(jié)果。片段流式檢查器205可確定例如包括在數(shù)據(jù)塊210-220內(nèi)的UDT片段包括一個(gè)或多個(gè)錯(cuò)誤,或者該UDT片段沒有錯(cuò)誤??缮傻腻e(cuò)誤的例子有UDT片段是未知類型、短于其類型的最小長度、和/或保留位有不正確的值;但是,本發(fā)明不限于此。
片段流式檢查器205包括接收所輸入數(shù)據(jù)塊210-220的流的數(shù)據(jù)塊處理組件225以及檢查對象230。數(shù)據(jù)塊處理組件225還包括片段類型檢測器235。片段類型檢測器235評估與經(jīng)由數(shù)據(jù)塊處理組件225接收的數(shù)據(jù)塊210-220相關(guān)聯(lián)的數(shù)據(jù)。特別地,片段類型檢測器235標(biāo)識數(shù)據(jù)塊210-220內(nèi)特定UDT片段的唯一結(jié)構(gòu)屬性,以確定該片段的數(shù)據(jù)類型。例如,片段類型檢測器235可分析UDT片段開始處指示片段類型的類型字;但是本發(fā)明不限于此。
因此,作為示例,數(shù)據(jù)塊處理組件225可接收數(shù)據(jù)塊1210,而數(shù)據(jù)塊1210可提供給片段類型檢測器235。片段類型檢測器235可確定UDT片段位于數(shù)據(jù)塊210內(nèi)的特定位置。此外,片段類型檢測器235可標(biāo)識與每個(gè)UDT片段相關(guān)聯(lián)的數(shù)據(jù)類型(例如,整數(shù)、浮點(diǎn)、字符串、日期、二進(jìn)制數(shù)、布爾、字符、短整型、長整型、……)和/或UDT片段是集合的開始、集合的結(jié)束、空值還是UDT開始;但是,本發(fā)明不限于此。片段類型檢測器235然后可將所標(biāo)識的類型信息提供給檢查對象230,后者可基于類型適當(dāng)?shù)貦z查該UDT片段?;蛘?另外),片段類型檢測器235可啟動與所標(biāo)識類型相關(guān)的特定檢查對象230。然后,檢查對象230對特定UDT片段執(zhí)行一致性檢查,這可產(chǎn)生UDT一致性檢查結(jié)果。
片段流式檢查器205可分析存在于數(shù)據(jù)塊210-220內(nèi)的UDT片段。UDT是實(shí)現(xiàn)存儲環(huán)境內(nèi)對復(fù)型的建模和操縱的一種數(shù)據(jù)庫可擴(kuò)展性機(jī)制。UDT可包括一系列不同類型(例如,整數(shù)、浮點(diǎn)、字符串、日期、二進(jìn)制數(shù)、布爾、字符、短整型、長整型、……)的片段。UDT片段可包括指示片段類型的元數(shù)據(jù)。此元數(shù)據(jù)可被片段類型檢測器235用來確定片段類型。例如,可基于所確定的片段類型來使用相應(yīng)的檢查對象230。此外(或者),檢查對象230可就所確定的片段類型來評估UDT片段以標(biāo)識錯(cuò)誤的存在。片段的大小根據(jù)數(shù)據(jù)類型和/或相關(guān)聯(lián)的有效負(fù)荷而變化?;蛘?,一些片段可具有設(shè)定的長度和/或結(jié)構(gòu)。
作為示例而非限制,可使用UDT來標(biāo)識與人相關(guān)聯(lián)的信息。因此,UDT可具有與名、姓、年齡、性別、電話號碼列表、地址列表、相關(guān)聯(lián)人員列表(例如,親戚、同事、……)等相關(guān)聯(lián)的不同片段。依照此例,可對與名和姓相關(guān)聯(lián)的片段使用字符數(shù)據(jù)類型,可使用整數(shù)數(shù)據(jù)類型來表示年齡,并使用布爾數(shù)據(jù)類型來表示性別(例如,男或女)。此外,電話號碼可作為列表來存儲,其中每個(gè)電話號碼都使用字符數(shù)據(jù)類型。此外,每個(gè)地址可以是各種類型的組合,因?yàn)榈刂房砂ㄩT牌號、街道、房間號、鎮(zhèn)/市、州、郵政編碼、國家等等。UDT還可具有表示UDT在數(shù)據(jù)塊210-220內(nèi)的起點(diǎn)的開始片段、分別指示列表的開始和結(jié)束的集合開始和集合結(jié)束、和/或空元素。開始片段、集合開始、結(jié)合結(jié)束和/或空元素可具有設(shè)定的長度和/或結(jié)構(gòu)。集合的一個(gè)示例為電話號碼列表,而集合開始和集合結(jié)束可指定其間為集合成員的某些UDT片段。
UDT片段不必全部存儲在一數(shù)據(jù)頁內(nèi)。例如,一個(gè)片段的一半可在一個(gè)數(shù)據(jù)頁的結(jié)束處,而該片段的另一半可存儲在下一個(gè)數(shù)據(jù)頁上。本發(fā)明設(shè)想U(xiǎn)DT片段可跨越數(shù)據(jù)頁的任意部分和/或任意數(shù)量的數(shù)據(jù)頁。拆分片段的位置可以是任意的,從而UDT片段根據(jù)可用空間的大小被部分地存儲在第一數(shù)據(jù)頁上,而其余部分被分開存儲在另一不同的數(shù)據(jù)頁上。根據(jù)示例,如果UDT片段是6000字節(jié),但一數(shù)據(jù)頁只有2000字節(jié)的可用空間(例如,數(shù)據(jù)塊1210只有2000字節(jié)可用),則其余的4000字節(jié)將存儲在另一不同的數(shù)據(jù)頁上(例如,數(shù)據(jù)塊2215可存儲其余部分)。依照此例,片段流式檢查器205可在數(shù)據(jù)塊210-220正在流式傳輸時(shí)提供數(shù)據(jù)結(jié)構(gòu)一致性檢查結(jié)果。當(dāng)UDT片段在不同的數(shù)據(jù)塊210-220之間拆分時(shí),檢查對象230可跟蹤在第一數(shù)據(jù)塊(例如,數(shù)據(jù)塊1210)窮盡的點(diǎn)上該檢查在UDT片段上已進(jìn)展到什么程度,并可僅存儲與UDT片段相關(guān)聯(lián)的最少元數(shù)據(jù)以便于檢查在下一個(gè)數(shù)據(jù)塊(例如,數(shù)據(jù)塊2215)中開始的該UDT片段的其余部分。所存儲的元數(shù)據(jù)可使檢查對象230能夠繼續(xù)檢查UDT片段的其余部分,而無須重新評估與第一數(shù)據(jù)塊(例如,數(shù)據(jù)塊1210)相關(guān)聯(lián)的先前已分析部分。此外,元數(shù)據(jù)可描述UDT片段的結(jié)構(gòu),而不存儲UDT片段的列值?;蛘?,與上例相關(guān)的常規(guī)技術(shù)將把2000字節(jié)部分和4000字節(jié)部分都復(fù)制到存儲器中,然后再處理數(shù)據(jù)。
UDT片段可在用于傳輸?shù)臄?shù)據(jù)分組中進(jìn)行類似的格式化。當(dāng)前所使用的數(shù)據(jù)分組一致性檢查的技術(shù)產(chǎn)生額外的成本,該成本不是因所存儲的數(shù)據(jù)頁而導(dǎo)致的,而是與不能夠在從網(wǎng)絡(luò)接收整個(gè)片段以前確定片段的有效性相關(guān)。經(jīng)由結(jié)合本發(fā)明使用的片段流式檢查器205還可降低此成本。
參看圖3,所示為根據(jù)本發(fā)明的一個(gè)方面經(jīng)由對每個(gè)UDT片段類型使用相應(yīng)的檢查對象來執(zhí)行流式檢查以檢測無效結(jié)構(gòu)的系統(tǒng)300。系統(tǒng)300包括片段流式檢查器305,它接收并處理數(shù)據(jù)塊310、315、320以確定UDT一致性檢查結(jié)果。片段流式檢查器305可在特定時(shí)間接收一組數(shù)據(jù)塊310-320中的一個(gè)數(shù)據(jù)塊。因此,根據(jù)此例,片段流式檢查器305可接收第一數(shù)據(jù)塊(例如,數(shù)據(jù)塊1310),它可進(jìn)行處理直至窮盡,然后再丟棄;此時(shí),片段流式檢查器302可順序獲得第二數(shù)據(jù)塊(例如,數(shù)據(jù)塊2315),并且類似地完整評估并移除該數(shù)據(jù)塊,等等。
片段流式檢查器305包括數(shù)據(jù)塊處理組件325,它接收并處理數(shù)據(jù)塊310-320。數(shù)據(jù)塊處理組件325可包括片段類型檢測器330、位置跟蹤組件335和檢查對象激活器340。片段流式檢查器305還包括其中每一個(gè)評估一特定片段類型的一組檢查對象(例如,檢查對象1345……檢查對象M350,其中M是任何正整數(shù),以下稱為檢查對象345-350)。
數(shù)據(jù)塊處理組件325可一次接收例如一組數(shù)據(jù)塊310-320中的一個(gè)數(shù)據(jù)塊(例如,數(shù)據(jù)塊1310)。位置跟蹤組件335跟蹤所接收的數(shù)據(jù)塊1310內(nèi)正被評估的當(dāng)前位置。在當(dāng)前所評估的位置上,片段類型檢測器330標(biāo)識UDT片段的類型(例如,整數(shù)、浮點(diǎn)、字符串、日期、二進(jìn)制、布爾、字符、短整型、長整型、集合開始、集合結(jié)束、空值、UDT開始、……)。UDT片段的類型被檢查對象激活器340所使用,它可從檢查對象組345-350中激活并調(diào)用相關(guān)檢查對象(例如,檢查對象1345)。所調(diào)用的檢查對象(例如,檢查對象1345)評估數(shù)據(jù)塊1310內(nèi)的UDT片段是否有任何錯(cuò)誤,并生成UDT一致性檢查結(jié)果。檢查對象(例如,檢查對象1345)可向數(shù)據(jù)塊處理組件325提供通知,以指示已經(jīng)完成UDT片段的評估。此外(或者),位置跟蹤組件335可確定當(dāng)前正被評估的位置是在數(shù)據(jù)塊1310的結(jié)束處,還是在為其調(diào)用該檢查對象(例如,檢查對象1345)的UDT片段之外。此外,位置跟蹤組件335可確定活動檢查對象(例如,檢查對象1345)正在等待來自不同數(shù)據(jù)塊的UDT片段的另一部分。如果數(shù)據(jù)塊處理組件325沒有接收到該UDT片段的附加部分,則可產(chǎn)生信號以指示該UDT片段是不完整的。
相關(guān)檢查對象(檢查對象345-350之一)在完成UDT片段的評估后,位置跟蹤組件335即確定數(shù)據(jù)塊1310的下一個(gè)位置處是否有另一個(gè)UDT片段(例如,整個(gè)片段、片段的一部分、……)或是數(shù)據(jù)塊1310是否已窮盡。例如,如果數(shù)據(jù)塊1310包括UDT片段的至少另一部分,則片段類型檢測器330和檢查對象激活器340被再次用來從檢查對象組345-350中確定適當(dāng)?shù)臋z查對象,而該檢查對象被用來評估該UDT片段?;蛘?,如果位置跟蹤組件335指示數(shù)據(jù)塊1310已窮盡,則數(shù)據(jù)塊處理組件325將數(shù)據(jù)塊1310丟棄,并且如果另一個(gè)數(shù)據(jù)塊2315是該流的一部分則接收和處理后續(xù)數(shù)據(jù)塊2315。依照示例,片段流式檢查器305可接收指示數(shù)據(jù)塊310-320的流的結(jié)束和/或標(biāo)識該流的結(jié)束的信號。例如,在接收到指示流的結(jié)束的信號之后,片段流式檢查器305即可例如生成錯(cuò)誤(例如,如果最后一個(gè)UDT片段不完整,……)和/或停止執(zhí)行。
圖4根據(jù)本發(fā)明的一個(gè)方面示出使用能存儲最少數(shù)據(jù)的流式檢查來評估UDT片段有效性的系統(tǒng)400。系統(tǒng)400包括片段流式檢查器405,它接收和分析數(shù)據(jù)塊410、415、420(例如,數(shù)據(jù)頁、數(shù)據(jù)分組、……)的流并生成UDT片段一致性檢查結(jié)果。數(shù)據(jù)塊410-420可包括可具有變化大小的眾多UDT片段。此外,這些UDT片段可被包含在數(shù)據(jù)塊的一部分內(nèi)(例如,數(shù)據(jù)塊1410的一部分),有一段是第一數(shù)據(jù)塊(例如,數(shù)據(jù)塊1410)的一部分、一段是第二數(shù)據(jù)塊(例如,數(shù)據(jù)塊2415)的一部分,或可被包括為任意數(shù)量的數(shù)據(jù)塊410-420的一部分。
片段流式檢查器405還包括數(shù)據(jù)塊處理組件425、任意數(shù)量的檢查對象430、以及數(shù)據(jù)存儲435。數(shù)據(jù)塊處理組件425接收并處理數(shù)據(jù)塊410-420的輸入流。數(shù)據(jù)塊處理組件425跟蹤數(shù)據(jù)塊(例如,數(shù)據(jù)塊1410)內(nèi)的當(dāng)前位置,并可確定當(dāng)前位置處的UDT片段的類型。此外,片段類型信息可被用來啟動專用于該UDT片段類型的適當(dāng)檢查對象430。數(shù)據(jù)塊處理組件424可重復(fù)跟蹤、確定片段類型和激活相關(guān)檢查對象430,直至找到錯(cuò)誤或窮盡數(shù)據(jù)塊(例如,數(shù)據(jù)塊1410)。應(yīng)當(dāng)認(rèn)識到,數(shù)據(jù)塊處理組件425可包括片段類型檢測器330(圖3)、位置跟蹤組件335(圖3)和/或檢查對象激活器340(圖3)。
檢查對象430被用來如經(jīng)由數(shù)據(jù)塊處理組件425所命令地檢查特定UDT片段。根據(jù)一個(gè)示例,當(dāng)數(shù)據(jù)塊處理組件425正在接收和處理數(shù)據(jù)塊410-420的流時(shí),檢查對象430可標(biāo)識無效UDT片段結(jié)構(gòu)。檢測到錯(cuò)誤(例如,無需物化整個(gè)數(shù)據(jù)塊410-420)之后,檢查對象430就可提供指示該UDT片段包括錯(cuò)誤的信號。例如,在檢查對象430作出此類確定之后,數(shù)據(jù)塊處理組件425即可中斷對包含該錯(cuò)誤的特定數(shù)據(jù)塊410-420和/或UDT片段的處理。
檢查對象430還可跟蹤UDT片段檢查的進(jìn)度。因此,特定檢查對象430可與具有雙字節(jié)數(shù)據(jù)的固定格式的數(shù)據(jù)類型相關(guān)聯(lián),該雙字節(jié)數(shù)據(jù)表示例如兩者都必須經(jīng)過確認(rèn)的兩個(gè)單字節(jié)值。依照此例,檢查對象430可標(biāo)識例如檢查已經(jīng)進(jìn)展了一個(gè)字節(jié)但尚未發(fā)現(xiàn)任何錯(cuò)誤。所標(biāo)識的進(jìn)度(例如,還剩另一個(gè)字節(jié)值要確認(rèn))可被存儲在數(shù)據(jù)存儲435中,可被提供給數(shù)據(jù)塊處理組件425(例如,以指示后續(xù)數(shù)據(jù)塊410-420應(yīng)包含該UDT片段的其余部分)等等。應(yīng)當(dāng)注意,無需存儲迄今已處理的字節(jié)值。
作為另一示例,數(shù)據(jù)類型可具有包含表示字符串長度的整數(shù)值的固定格式,且字符串中的最后一個(gè)字符應(yīng)包含某個(gè)值(例如,‘*’)。一旦已處理了該整數(shù)值,檢查對象430就知道要檢查字符串結(jié)束處的字符。跳過數(shù)據(jù)的量被存儲在字符串的長度中。檢查對象430讀到數(shù)據(jù)塊(例如,數(shù)據(jù)塊1410)的結(jié)束處,并跟蹤在到達(dá)最后字符之前還要再讀該字符串的多少個(gè)字節(jié)。因此,字符串的長度和還要再讀的字節(jié)數(shù)可存儲在數(shù)據(jù)存儲435中,而不是存儲迄今已處理的整個(gè)字符串。一旦接收到下一個(gè)數(shù)據(jù)塊(例如,數(shù)據(jù)塊2415)并將其傳遞給檢查對象430,它就會繼續(xù)讀取,直至它到達(dá)并確認(rèn)該字符串的最后一個(gè)字符。因此,存儲量與常規(guī)技術(shù)相比降低了,因?yàn)檎麄€(gè)片段無需被全部物化。
檢查對象430還可將檢查UDT片段的其余部分所需的任何數(shù)據(jù)存儲在數(shù)據(jù)存儲435中。根據(jù)一個(gè)示例,數(shù)據(jù)塊處理組件425可確定(例如,經(jīng)由片段類型檢測器330(圖3))數(shù)據(jù)塊(例如,數(shù)據(jù)塊1410)包括4字節(jié)整數(shù)的UDT片段。數(shù)據(jù)塊處理組件425可激活(例如,經(jīng)由檢查對象激活器340(圖3))專門檢查整數(shù)類型片段的相關(guān)檢查對象430。所激活的檢查對象430評估UDT片段是否存在任何錯(cuò)誤,并可同時(shí)跟蹤評估的進(jìn)度。如果到達(dá)數(shù)據(jù)塊(例如,數(shù)據(jù)塊1410)的結(jié)束處,卻只讀了組成該整數(shù)的共四個(gè)字節(jié)中的一個(gè),則所激活的檢查對象430可將進(jìn)度(例如,迄今讀了單個(gè)字節(jié))存儲在數(shù)據(jù)存儲435中。此外,與所讀的一個(gè)字節(jié)相關(guān)聯(lián)的元數(shù)據(jù)可存儲在數(shù)據(jù)存儲435中(例如,已經(jīng)讀了一個(gè)字節(jié),且在可例示并確認(rèn)該整數(shù)值以前還必須再讀三個(gè)字節(jié))。在處理下一個(gè)數(shù)據(jù)塊(例如,數(shù)據(jù)塊2415)之后,即可從數(shù)據(jù)存儲435中獲得所存儲的元數(shù)據(jù)并在讀取其余三個(gè)字節(jié)時(shí)使用。一旦已經(jīng)讀取這些字節(jié),組成該整數(shù)的所有四個(gè)字節(jié)就都可用,并可示例和確認(rèn)該整數(shù)。根據(jù)另一個(gè)示例,描述一部分結(jié)構(gòu)的元數(shù)據(jù)可在檢查對象430分析UDT片段的同時(shí)存儲在數(shù)據(jù)存儲435中。
數(shù)據(jù)存儲435可以是例如易失性存儲器或非易失性存儲器,或可同時(shí)包括易失性和非易失性存儲器。作為示例,而非限制,非易失性存儲器可包括只讀存儲器(ROM)、可編程ROM(PROM)、電可編程ROM(EPROM)、電可擦除ROM(EEPROM)或閃存。易失性存儲器可包括隨機(jī)存取存儲器(RAM),它用作外部高速緩存存儲器。作為示例而非限制,RAM有多種形式可用,諸如同步RAM(SRAM)、動態(tài)RAM(DRAM)、同步DRAM(SDRAM)、雙數(shù)據(jù)速率SDRAM(DDR SDRAM)、增強(qiáng)型SDRAM(ESDRAM)、同步鏈路DRAM(SLDRAM)和直接Rambus RAM(DDRAM)。本發(fā)明的系統(tǒng)和方法的數(shù)據(jù)存儲435旨在包括但不限于這些及其它任何合適類型的存儲器。本發(fā)明設(shè)想數(shù)據(jù)存儲435可以是片段流式檢查器405的一個(gè)部分(如圖所示),檢查對象435的一個(gè)部分,獨(dú)立的組件、或其組合。此外,例如,數(shù)據(jù)存儲435可包括存儲在硬盤上并在執(zhí)行時(shí)加載到存儲器中的文件和/或數(shù)據(jù)庫。
參考圖5,所示為根據(jù)本發(fā)明的一個(gè)方面的生成可被用來評估對應(yīng)UDT片段類型的檢查對象的系統(tǒng)500。系統(tǒng)500包括片段流式檢查器505,它進(jìn)一步包括眾多檢查對象510。每一個(gè)檢查對象510被用來如上所述地評估對應(yīng)UDT片段。本發(fā)明設(shè)想使用任意數(shù)量的檢查對象510。
系統(tǒng)500還包括檢查對象生成器515,它實(shí)現(xiàn)在引入新的片段類型時(shí)片段流式檢查器505作為整體的可擴(kuò)展性。檢查對象生成器515可產(chǎn)生對應(yīng)于新的UDT片段類型(例如,在檢查對象510的組中先前沒有對應(yīng)檢查對象的UDT片段類型)的新的檢查對象,它可被添加到現(xiàn)有的檢查對象510的組中。因此,當(dāng)片段流式檢查器505評估新類型的UDT片段時(shí),經(jīng)由檢查對象生成器515創(chuàng)建的新的檢查對象被用來評估該片段。檢查對象生成器515在引入新的片段類型時(shí)可自動生成新的檢查對象。或者,用戶可提供信息以生成新的檢查對象。
圖6-8示出根據(jù)本發(fā)明的各方法。為簡化說明起見,將這些方法示意和描述為一系列動作。應(yīng)當(dāng)理解并認(rèn)識到,本發(fā)明不受所示動作和/或動作順序的限制,例如,動作可按各種順序發(fā)生和/或并行發(fā)生,并且還可有未在本文中給出和描述的其它動作。此外,不是所有示出的動作都是實(shí)現(xiàn)根據(jù)本發(fā)明的方法所必需的。此外,本領(lǐng)域技術(shù)人員將會理解并認(rèn)識到,這些方法可經(jīng)由狀態(tài)圖或事件被可選地表示為一系列相關(guān)的狀態(tài)。
圖6根據(jù)本發(fā)明的一個(gè)方面示出便于使用流式檢查來評估用戶定義類型(UDT)片段是否有錯(cuò)誤的方法600。在610,包括UDT片段的數(shù)據(jù)塊被接收。這些數(shù)據(jù)塊可以是例如用于存儲信息的數(shù)據(jù)頁和/或用于傳輸信息的數(shù)據(jù)分組。例如,一次可接收一個(gè)數(shù)據(jù)塊,從而第一數(shù)據(jù)塊被完整地接收并處理,接下來第二數(shù)據(jù)塊被接收并處理,依此類推??山?jīng)由網(wǎng)絡(luò)連接(例如,無線連接、有線連接、兩者的組合、……)來接收數(shù)據(jù)塊??蛇x地或另外地,可從存儲(例如,數(shù)據(jù)庫等)接收數(shù)據(jù)塊。在620,UDT片段類型被標(biāo)識。作為示例,可經(jīng)由評估UDT片段開始處的類型字來確定UDT片段類型;但是,本發(fā)明不限于此。在630,使用相應(yīng)的檢查對象來標(biāo)識UDT片段內(nèi)的錯(cuò)誤。每個(gè)UDT片段類型都可具有便于檢查該特定類型的流式數(shù)據(jù)的相關(guān)聯(lián)檢查對象。此外,在640,數(shù)據(jù)塊一經(jīng)處理即被丟棄。這與常規(guī)技術(shù)不同,后者通常在存儲器中物化整個(gè)UDT片段,然后再分析所存儲數(shù)據(jù)是否有錯(cuò)誤。
參看圖7,所示為根據(jù)本發(fā)明的一個(gè)方面的便于經(jīng)由評估檢查的進(jìn)展來對UDT片段執(zhí)行流式一致性檢查的方法700。在710,包含UDT片段的數(shù)據(jù)塊被接收。在720,UDT片段類型被標(biāo)識。例如,UDT片段的類型可在處理數(shù)據(jù)塊時(shí)被確定。此外,可跟蹤通過數(shù)據(jù)塊的進(jìn)度。在730,使用一組檢查對象中的一個(gè)檢查對象來標(biāo)識該UDT片段是否包括任何錯(cuò)誤。該檢查對象組中的每個(gè)檢查對象都可被指派給特定的UDT片段類型。在740跟蹤UDT片段檢查的進(jìn)度。在750,存儲可被用來完成UDT片段的一致性檢查的元數(shù)據(jù)。根據(jù)一個(gè)示例,如果UDT片段的一部分在第一數(shù)據(jù)塊內(nèi),而該UDT片段的其余部分是第二數(shù)據(jù)塊的一部分,則可存儲與結(jié)合第一數(shù)據(jù)塊執(zhí)行的評估相關(guān)聯(lián)的元數(shù)據(jù)。因此,可存儲描述UDT片段結(jié)構(gòu)的一部分的元數(shù)據(jù),而不是存儲實(shí)際的列值(通常由常規(guī)技術(shù)所執(zhí)行)。在760,數(shù)據(jù)塊一經(jīng)處理即被丟棄。
圖8根據(jù)本發(fā)明的一個(gè)方面示出便于分析UDT片段是否有錯(cuò)誤、并在標(biāo)識出錯(cuò)誤時(shí)即停止流式檢查的方法800。在810,包含UDT片段的數(shù)據(jù)塊被接收。在820,檢查所接收的數(shù)據(jù)塊內(nèi)的UDT片段并確定片段類型。在830,使用與所標(biāo)識的UDT片段類型相關(guān)的相應(yīng)檢查對象。在840,確定UDT片段是否包含錯(cuò)誤。該確定可例如無需物化整個(gè)UDT片段而作出。如果在UDT片段中標(biāo)識出錯(cuò)誤,則在850可中斷流式檢查,并發(fā)布指示已標(biāo)識出錯(cuò)誤的出錯(cuò)標(biāo)志。或者,如果沒有標(biāo)識出任何錯(cuò)誤,則在860確定數(shù)據(jù)塊是否已窮盡。如果數(shù)據(jù)塊尚未窮盡,則該方法返回820以確定下一個(gè)UDT片段的類型。但是,如果在860確定該數(shù)據(jù)塊已窮盡,則在870丟棄該數(shù)據(jù)塊。
為了提供用于實(shí)現(xiàn)本發(fā)明的各個(gè)方面的額外上下文,圖9-10及以下討論旨在提供可在其中實(shí)現(xiàn)本發(fā)明各個(gè)方面的合適計(jì)算環(huán)境的簡要、一般描述。盡管以上是在本地計(jì)算機(jī)和/或遠(yuǎn)程計(jì)算機(jī)上運(yùn)行的計(jì)算機(jī)程序的計(jì)算機(jī)可執(zhí)行指令的通用上下文中描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員將會認(rèn)識到,本發(fā)明還可結(jié)合其它程序模塊來實(shí)現(xiàn)。一般而言,程序模塊包括執(zhí)行特定任務(wù)和/或?qū)崿F(xiàn)特定抽象數(shù)據(jù)結(jié)構(gòu)的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)等等。
此外,本領(lǐng)域技術(shù)人員將會認(rèn)識到,這些發(fā)明性方法可用其它計(jì)算機(jī)系統(tǒng)配置來實(shí)施,包括單處理器或多處理器計(jì)算機(jī)系統(tǒng)、小型計(jì)算機(jī)、大型計(jì)算機(jī)、以及個(gè)人計(jì)算機(jī)、手持式計(jì)算設(shè)備、基于微處理器和/或可編程消費(fèi)電器等等,其中的每一個(gè)都可操作地與一個(gè)或多個(gè)相關(guān)聯(lián)設(shè)備通信。所示的本發(fā)明各方面還可在分布式計(jì)算環(huán)境中實(shí)施,其中某些任務(wù)是由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的。但是,本發(fā)明的部分(如果不是所有)方面可在獨(dú)立計(jì)算機(jī)上實(shí)施。在分布式計(jì)算環(huán)境中,程序模塊可位于本地和/或遠(yuǎn)程記憶存儲設(shè)備中。
圖9是本發(fā)明可與之交互的示例計(jì)算環(huán)境900的示意性框圖。系統(tǒng)900包括一個(gè)或多個(gè)客戶機(jī)910??蛻魴C(jī)910可以是硬件和/或軟件(例如,線程、進(jìn)程、計(jì)算設(shè)備)。系統(tǒng)900還包括一個(gè)或多個(gè)服務(wù)器920。服務(wù)器920可以是硬件和/或軟件(例如,線程、進(jìn)程、計(jì)算設(shè)備)。例如,服務(wù)器920可容納線程以例如通過使用本發(fā)明來執(zhí)行變換。
客戶機(jī)910和服務(wù)器920之間一種可能的通信可以是適應(yīng)于在兩個(gè)或多個(gè)計(jì)算機(jī)進(jìn)程之間傳輸?shù)臄?shù)據(jù)分組的形式。系統(tǒng)900包括通信框架940,它可用來便于客戶機(jī)910和服務(wù)器920之間的通信??蛻魴C(jī)910可操作地被連接到一個(gè)或多個(gè)客戶機(jī)數(shù)據(jù)存儲950,它們可用來將信息本地存儲到客戶機(jī)910。類似地,服務(wù)器920可操作地被連接到一個(gè)或多個(gè)服務(wù)器數(shù)據(jù)存儲930,它們可被用來將信息本地存儲到服務(wù)器920。
參考圖10,用于實(shí)現(xiàn)本發(fā)明的各個(gè)方面的示例性環(huán)境1000包括計(jì)算機(jī)1012。計(jì)算機(jī)1012包括處理單元1014、系統(tǒng)存儲器1016、以及系統(tǒng)總線1018。系統(tǒng)總線1018將包括、但不限于系統(tǒng)存儲器1016在內(nèi)的系統(tǒng)組件耦合到處理單元1014。處理單元1014可以是各種可用處理器中的任一種。雙微處理器和其它多處理器體系結(jié)構(gòu)也可被用作處理單元1014。
系統(tǒng)總線1018可以是若干類型的總線結(jié)構(gòu)中的任何一種,包括存儲器總線或存儲器控制器、外圍總線或外部總線、和/或使用各種可用總線體系結(jié)構(gòu)中的任一種的局部總線,這些總線體系結(jié)構(gòu)包括,但不限于,工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)、微信道體系結(jié)構(gòu)(MSA)、擴(kuò)展ISA(EISA)、智能驅(qū)動器電子設(shè)備(IDE)、VESA局部總線(VLB)、外圍組件互連(PCI)、插件總線、通用串行總線(USB)、高級圖形端口(AGP)、個(gè)人計(jì)算機(jī)存儲卡國際協(xié)會總線(PCMCIA)、火線(IEEE1394)、以及小型計(jì)算機(jī)系統(tǒng)接口(SCSI)。
系統(tǒng)存儲器1016包括易失性存儲器1020和非易失性存儲器1022。包含諸如在啟動期間幫助在計(jì)算機(jī)1012內(nèi)部各元件間傳送信息的基本例程的基本輸入輸出系統(tǒng)(BIOS)存儲在非易失性存儲器1022中。作為示例而非限制,非易失性存儲器1022可包括只讀存儲器(ROM)、可編程ROM(PROM)、電可編程ROM(EPROM)、電可擦除ROM(EEPROM)或閃存。易失性存儲器1020包括用作外部高速緩存的隨機(jī)存取存儲器(RAM)。作為示例而非限制,RAM有多種形式可用,諸如同步RAM(SRAM)、動態(tài)RAM(DRAM)、同步DRAM(SDRAM)、雙數(shù)據(jù)速率SDRAM(DDR SDRAM)、增強(qiáng)型SDRAM(ESDRAM)、同步鏈路DRAM(SLDRAM),及直接Rambus RAM(DRRAM)。
計(jì)算機(jī)1012還包括可移動/不可移動,易失性/非易失性計(jì)算機(jī)存儲介質(zhì)。例如圖10示出磁盤存儲1024。磁盤存儲1024包括,但不限于,如磁盤驅(qū)動器、軟盤驅(qū)動器、磁帶驅(qū)動器、Jaz驅(qū)動器、Zip驅(qū)動器、LS-100驅(qū)動器、閃存卡或記憶棒等設(shè)備。此外,磁盤存儲1024可單獨(dú)包括存儲介質(zhì)或與其它存儲介質(zhì)相結(jié)合,其它存儲介質(zhì)包括但不限于光盤驅(qū)動器,諸如光盤ROM設(shè)備(CD-ROM)、CD可記錄驅(qū)動器(CD-R驅(qū)動器)、CD可重寫驅(qū)動器(CD-RW驅(qū)動器)或數(shù)字多功能盤ROM驅(qū)動器(DVD-ROM)。為便于磁盤存儲設(shè)備1024與系統(tǒng)總線1018的連接,通常使用諸如接口1026等可移動或不可移動接口。
應(yīng)當(dāng)理解,圖10描述了在用戶與在合適操作環(huán)境1000中所述的基本計(jì)算機(jī)資源之間用作中介的軟件。這些軟件包括操作系統(tǒng)1028??纱鎯υ诖疟P存儲1024上的操作系統(tǒng)1028用來控制和分配計(jì)算機(jī)系統(tǒng)1012的資源。系統(tǒng)應(yīng)用程序1030通過存儲在系統(tǒng)存儲器1016中或磁盤存儲1024上的程序模塊1032和程序數(shù)據(jù)1034來利用操作系統(tǒng)1028對資源的管理。應(yīng)當(dāng)認(rèn)識到,本發(fā)明可以用各種操作系統(tǒng)或其組合來實(shí)現(xiàn)。
用戶通過一個(gè)或多個(gè)輸入設(shè)備1036將命令或信息輸入到計(jì)算機(jī)1012中。輸入設(shè)備1036包括,但不限于,諸如鼠標(biāo)、跟蹤球、電子筆、觸摸板等定位設(shè)備、鍵盤、話筒、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀、電視調(diào)諧卡、數(shù)碼照相機(jī)、數(shù)碼攝像機(jī)、網(wǎng)絡(luò)攝像頭等等。這些及其它輸入設(shè)備經(jīng)由接口端口1038通過系統(tǒng)總線1018連接到處理單元1014。接口端口1038包括例如串行端口、并行端口、游戲端口及通用串行總線(USB)。輸出設(shè)備1040使用一些和輸入設(shè)備1036相同類型的端口。因而,例如USB端口可用于向計(jì)算機(jī)1012提供輸入,及將信息從計(jì)算機(jī)1012輸出到輸出設(shè)備1040。提供輸出適配器1042是為了說明有一些需要專用適配器的輸出設(shè)備,如監(jiān)視器、揚(yáng)聲器及打印機(jī)等。作為示例而非限制,輸出適配器1042包括,提供輸出設(shè)備1040與系統(tǒng)總線1018之間連接手段的顯卡與聲卡。應(yīng)當(dāng)注意,諸如遠(yuǎn)程計(jì)算機(jī)1044等的其它設(shè)備和/或設(shè)備系統(tǒng)同時(shí)提供輸入與輸出能力。
計(jì)算機(jī)1012可使用到諸如遠(yuǎn)程計(jì)算機(jī)1044等一臺或多臺遠(yuǎn)程計(jì)算機(jī)的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)1044可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、工作站、基于微處理器的裝置、對等設(shè)備或其它普通網(wǎng)絡(luò)節(jié)點(diǎn)等等,且通常包括相對計(jì)算機(jī)1012所描述的許多或全部元件。為簡單起見,與遠(yuǎn)程計(jì)算機(jī)1044一起示出的只有記憶存儲設(shè)備1046。遠(yuǎn)程計(jì)算機(jī)1044通過網(wǎng)絡(luò)接口1048邏輯地連接到計(jì)算機(jī)1012,然后經(jīng)由通信連接1050物理連接。網(wǎng)絡(luò)接口1048包含諸如局域網(wǎng)(LAN)和廣域網(wǎng)(WAN)等有線和/或無線通信網(wǎng)絡(luò)。LAN技術(shù)包括光纖分布式數(shù)據(jù)接口(FDDI)、銅纜分布式數(shù)據(jù)接口(CDDI)、以太網(wǎng)、令牌環(huán)等等。WAN技術(shù)包括,但不限于,點(diǎn)對點(diǎn)鏈路、如綜合業(yè)務(wù)數(shù)字網(wǎng)(ISDN)及其變體等的電路交換網(wǎng)絡(luò)、分組交換網(wǎng)絡(luò)、以及數(shù)字用戶線(DSL)。
通信連接1050是指用于將網(wǎng)絡(luò)接口1048連接到總線1018的硬件/軟件。盡管為清楚說明,將通信連接1050示為在計(jì)算機(jī)1012內(nèi)部,但是它也可在計(jì)算機(jī)1012外部。僅為示例性目的,連接到網(wǎng)絡(luò)接口1048所必需的硬件/軟件包括內(nèi)部和外部技術(shù),諸如包括常規(guī)電話級調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器及DSL調(diào)制解調(diào)器在內(nèi)的調(diào)制解調(diào)器、ISDN適配器及以太網(wǎng)卡。
以上所描述的包括本發(fā)明的若干示例。當(dāng)然,為了描述本發(fā)明而描述組件或方法的每一種可以想像的組合是不可能的,但本領(lǐng)域普通技術(shù)人員可認(rèn)識到,本發(fā)明的其它組合和變換是可能的。由此,本發(fā)明旨在包括落入所附權(quán)利要求書的精神和范圍之內(nèi)的所有這些改變、修改、以及變化。
特別地,并且就上述組件、設(shè)備、電路、系統(tǒng)等所執(zhí)行的各種功能而言,除非另外指出,用來描述這些組件的術(shù)語(包括對“手段”的引用)旨在對應(yīng)于執(zhí)行所描述組件的指定功能(例如,功能等效方案)的任何組件,即使它們在結(jié)構(gòu)上并不等于所揭示的結(jié)構(gòu),這些組件執(zhí)行在此所述的本發(fā)明各示例性方面中的功能。就此而言,還應(yīng)認(rèn)識到,本發(fā)明包括一系統(tǒng)以及具有用于執(zhí)行本發(fā)明的各種方法的動作和/或事件的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
此外,盡管僅就若干實(shí)現(xiàn)中的一種揭示了本發(fā)明的一個(gè)特定特征,但是這一特征可與其它實(shí)現(xiàn)的一個(gè)或多個(gè)其它特征結(jié)合為任何給定或特定應(yīng)用程序所需或?qū)ζ溆欣?。此外,在詳?xì)描述或所附權(quán)利要求書中使用的術(shù)語“包括”(動詞)和“包括”(連詞)及其變體的意義上,這些術(shù)語旨在如術(shù)語“包含”那樣成為包含性的。
權(quán)利要求
1.一種便于評估用戶定義類型(UDT)片段是否有錯(cuò)誤的計(jì)算機(jī)實(shí)現(xiàn)系統(tǒng),包括數(shù)據(jù)塊處理組件,它接收包括UDT片段的數(shù)據(jù)塊的流,為每個(gè)所述UDT片段標(biāo)識片段類型,并在處理所述數(shù)據(jù)塊時(shí)將其丟棄;以及檢查對象,它部分地基于對應(yīng)的所標(biāo)識片段類型來檢查所述UDT片段,并生成出錯(cuò)的指示。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述檢查對象無需完全物化所述UDT片段即可檢查所述UDT片段。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,至少一個(gè)UDT片段在不同的數(shù)據(jù)塊之間被拆分。
4.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括生成對應(yīng)于新近給出的片段類型的第二檢查對象的組件。
5.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述檢查對象還存儲與所述UDT片段之一的一部分的結(jié)構(gòu)相關(guān)聯(lián)的元數(shù)據(jù),并使用所述元數(shù)據(jù)來繼續(xù)檢查所述UDT片段之一的其余部分。
6.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述檢查對象確定檢查所述UDT片段的程度,并存儲完成所述檢查所需的數(shù)據(jù)。
7.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括片段類型檢測器,它經(jīng)由分析每個(gè)所述UDT片段的開始處的類型字來標(biāo)識每個(gè)所述UDT片段的片段類型。
8.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括位置跟蹤組件,它跟蹤對每個(gè)所述數(shù)據(jù)塊的一致性檢查的進(jìn)展。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述位置跟蹤組件還確定特定數(shù)據(jù)塊是否窮盡。
10.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括檢查對象激活器,它啟動特定檢查對象來分析特定分段類型。
11.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)塊處理組件順序地接收和處理所述數(shù)據(jù)塊的流。
12.一種便于對用戶定義類型(UDT)進(jìn)行一致性檢查的計(jì)算機(jī)實(shí)現(xiàn)方法,包括接收包含UDT片段的數(shù)據(jù)塊;標(biāo)識所述UDT片段的類型;使用相應(yīng)的檢查對象來確定是否有任何所述UDT片段包括錯(cuò)誤;以及在處理所述數(shù)據(jù)塊時(shí)將其丟棄。
13.如權(quán)利要求12所述的方法,其特征在于,還包括跟蹤片段檢查的進(jìn)展并存儲完成所述片段檢查所需的數(shù)據(jù)。
14.如權(quán)利要求12所述的方法,其特征在于,還包括存儲與UDT元數(shù)據(jù)相關(guān)聯(lián)的值的一部分,并從下一個(gè)數(shù)據(jù)塊提取所述值的其余部分。
15.如權(quán)利要求12所述的方法,其特征在于,還包括根據(jù)對應(yīng)于一公共UDT的UDT片段使所述數(shù)據(jù)塊的一子集相關(guān)聯(lián)。
16.如權(quán)利要求12所述的方法,其特征在于,還包括指派特定檢查對象檢查特定片段類型。
17.如權(quán)利要求12所述的方法,其特征在于,還包括標(biāo)識與所述UDT片段相關(guān)聯(lián)的公共的和唯一的結(jié)構(gòu)方面。
18.如權(quán)利要求12所述的方法,其特征在于,還包括順序地處理存儲在所述數(shù)據(jù)塊中的數(shù)據(jù)。
19.一種分析數(shù)據(jù)結(jié)構(gòu)是否有錯(cuò)誤的計(jì)算機(jī)實(shí)現(xiàn)系統(tǒng),包括用于接收包括數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)塊的流的裝置;用于標(biāo)識數(shù)據(jù)結(jié)構(gòu)的不同類型的裝置;用于使用相應(yīng)的檢查對象來標(biāo)識所述數(shù)據(jù)結(jié)構(gòu)內(nèi)所包括的錯(cuò)誤的裝置;以及用于在處理所述數(shù)據(jù)塊時(shí)將其丟棄的裝置。
20.如權(quán)利要求19所述的系統(tǒng),其特征在于,還包括用于在發(fā)現(xiàn)所述錯(cuò)誤的存在之后即提供與所標(biāo)識錯(cuò)誤相關(guān)的指示,而無需存儲所述數(shù)據(jù)結(jié)構(gòu)的一部分的裝置。
全文摘要
本發(fā)明涉及使用數(shù)據(jù)流對用戶定義類型(UDT)片段執(zhí)行一致性檢查而無需對數(shù)據(jù)進(jìn)行批發(fā)復(fù)制的系統(tǒng)和方法。流式一致性檢查便于盡快發(fā)現(xiàn)無效片段,從而不必讀取、存儲、分析整個(gè)UDT片段等等。此外,UDT片段無需完全物化就可進(jìn)行評估;因此,和常規(guī)技術(shù)相比,使用本發(fā)明的系統(tǒng)和/或方法通過減少所需資源并實(shí)現(xiàn)無效結(jié)構(gòu)的更快檢測來產(chǎn)生提高的性能。
文檔編號G06F17/30GK1841378SQ20061005156
公開日2006年10月4日 申請日期2006年2月28日 優(yōu)先權(quán)日2005年3月28日
發(fā)明者P·S·蘭多 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
岑巩县| 海兴县| 阆中市| 永寿县| 明溪县| 遵化市| 泰州市| 泾阳县| 德昌县| 拜泉县| 南丹县| 花莲市| 城市| 平凉市| 渭源县| 博爱县| 大渡口区| 洛隆县| 绍兴市| 拉萨市| 桂东县| 昔阳县| 弋阳县| 阜城县| 南靖县| 衡阳县| 崇州市| 曲靖市| 瓮安县| 长宁县| 阜阳市| 陈巴尔虎旗| 桑植县| 海淀区| 梅州市| 南康市| 岫岩| 宜川县| 大关县| 房产| 青铜峡市|