專利名稱:外部元數(shù)據(jù)處理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及信息技術(shù)領(lǐng)域,尤其涉及關(guān)于數(shù)據(jù)流的元數(shù)據(jù)的創(chuàng)建和更新,以元數(shù)據(jù)的使用以允許確認數(shù)據(jù)流。
背景技術(shù):
數(shù)據(jù)的大集合可以用復雜的方式來使用。例如,數(shù)據(jù)集合,如文件、數(shù)據(jù)庫和其它數(shù)據(jù)存儲手段可以被打開、查詢或用作長活動串的一部分,其中對數(shù)據(jù)出現(xiàn)不同的變換活動,并然后儲存所得的數(shù)據(jù)。
例如,圖1所示是具有兩個數(shù)據(jù)輸入和兩個數(shù)據(jù)輸出的數(shù)據(jù)流。如圖1所示,文件A和數(shù)據(jù)庫表A都被打開。如圖1所示,從文件A 1000讀取數(shù)據(jù),并且從數(shù)據(jù)庫表A 1010讀取數(shù)據(jù)。在這兩個數(shù)據(jù)集上執(zhí)行并操作1020。檢查并操作的結(jié)果,以確定(框1030),對數(shù)據(jù)的并集中的每一記錄,儲存在相關(guān)聯(lián)的年齡字段中的值是否小于50。對于其中相關(guān)聯(lián)的年齡字段小于50的記錄,將這些記錄按性別聚集(1040),并儲存在數(shù)據(jù)庫表B中(1050)。對于其中相關(guān)聯(lián)的年齡字段小于50的記錄,將這些記錄儲存在文件B中(1060)。
為允許使用數(shù)據(jù)的大的、復雜的集合,開發(fā)了ETL(提取變換加載)工具。這些工具提供了使用數(shù)據(jù)集合執(zhí)行操作的自動化方法。ETL工具自動化了提取數(shù)據(jù)的任務-從數(shù)據(jù)源取出數(shù)據(jù);變換數(shù)據(jù)的任務-使用提取的數(shù)據(jù);以及加載數(shù)據(jù)的任務-儲存變換的結(jié)果以供以后使用。例如,行動中所示的行動由ETL工具執(zhí)行。
為允許對這一ETL功能的簡易使用并擴展可用的功能,開發(fā)了允許使用文件或其它數(shù)據(jù)集合的過程的可視設計的設計工具。一種這樣的設計工具被稱為數(shù)據(jù)變換服務(DTS),它可從微軟公司獲得。DTS允許用戶可視地設計過程,可通過這些過程使用文件、數(shù)據(jù)庫或其它數(shù)據(jù)集合中的數(shù)據(jù)。由DTS設計的過程中的操作可包括但不限于通過標準ETL工具可得的那些操作。例如,DTS設計的數(shù)據(jù)流可允許用戶指定某些文件被刪除、獲取其它文件(例如,通過文件傳輸協(xié)議(FTP)從指定的源獲取)、以及然后在如此獲得的每一文件上執(zhí)行特定的ETL過程。
由ETL工具或諸如DTS等設計工具設計的數(shù)據(jù)庫在其使用前被設計。這可導致當使用數(shù)據(jù)流時的岐義。例如,一數(shù)據(jù)流被設計成打開數(shù)據(jù)源,并對數(shù)據(jù)源中的每一記錄讀取特定列A和列C中的信息。然而,在運行時,在打開數(shù)據(jù)源之后,數(shù)據(jù)源可能對每一記錄包含列A、列B、列C和列D中的信息。
數(shù)據(jù)流的設計者可能知道列B將包括在數(shù)據(jù)源中。如果是,則可作出不從列B讀取信息的設計選擇,以最小化如此完成的時間和其它計算成本。,由此,在運行時詢問用戶列B是否應當被包括在內(nèi)會導致不必要的混淆和延遲。
然而,數(shù)據(jù)流的設計者可能不知道列D被包括在數(shù)據(jù)源中,并且數(shù)據(jù)流的用戶將發(fā)現(xiàn)列D以包括在數(shù)據(jù)流中是有用的。由此,在運行時詢問用戶列D是否應當包括將是有用的。
然而,沒有方法在數(shù)據(jù)被有意地不包括在數(shù)據(jù)源中的情況,以及數(shù)據(jù)源改變的情況之間進行區(qū)分。由此,要么在運行時向用戶發(fā)出不必要的問題,要么丟失有用的數(shù)據(jù)。
另外,可以對數(shù)據(jù)集合作出改變。例如,列A的類型可以已從所期望的改變。這可以與在數(shù)據(jù)流中為列A所設計的操作兼容或不兼容。數(shù)據(jù)類型的某些改變可允許操作成功地繼續(xù)進行,但帶有不期望的結(jié)果。然而,沒有方法來說出改變是預期的還是非預期的。再一次,要么向用戶咨詢數(shù)據(jù)類型的不兼容性,即使是在改變?yōu)轭A期的情況下,要么不向用戶咨詢,這允許問題繼續(xù)發(fā)展。
由此,需要一種克服本領(lǐng)域中這些缺陷的系統(tǒng)和方法。本發(fā)明著眼于上述需求并用此處所闡明的附加優(yōu)點解決了這些需求。
發(fā)明內(nèi)容
本發(fā)明允許儲存關(guān)于外部數(shù)據(jù)文件(或數(shù)據(jù)集合)的外部元數(shù)據(jù),以供數(shù)據(jù)流使用。由于這一信息的存儲,稍后可檢查數(shù)據(jù)集合的內(nèi)容并使用外部元數(shù)據(jù),以確定對數(shù)據(jù)集合是否發(fā)生了任何改變,以及如果是則可采取什么行動。檢查描述數(shù)據(jù)流的數(shù)據(jù)流信息以及在數(shù)據(jù)流中使用的關(guān)于數(shù)據(jù)集合的所儲存的外部元數(shù)據(jù),以確定信息是否一致。如果不是,則可向用戶咨詢,或可發(fā)生自動的手段(如類型轉(zhuǎn)換)。
當數(shù)據(jù)集合不可用時,仍可使用外部元數(shù)據(jù),以確定數(shù)據(jù)流是否與外部元數(shù)據(jù)中反映的數(shù)據(jù)集合兼容??筛淖償?shù)據(jù)流以確保兼容性。
外部元數(shù)據(jù)的重新同步可更新外部元數(shù)據(jù),以確保得自外部元數(shù)據(jù)存儲的連續(xù)益處。
本發(fā)明的其它特征將在下文描述。
當結(jié)合附圖閱讀時,可以更好地理解以上概述以及以下較佳實施例的詳細描述。為說明本發(fā)明的目的,附圖中示出了本發(fā)明的示例性構(gòu)造;然而,本發(fā)明不限于所解釋的特定方法和手段。附圖中圖1是數(shù)據(jù)流的圖示;圖2是其中可實現(xiàn)本發(fā)明的各方面的示例性計算環(huán)境的框圖;圖3是依照本發(fā)明的一個實施例,使用至少一個外部數(shù)據(jù)文件準備關(guān)于數(shù)據(jù)流的數(shù)據(jù)流信息的方法的流程圖;以及圖4是依照本發(fā)明的一個實施例評估數(shù)據(jù)流模型的方法的流程圖。
具體實施例方式
示例性計算環(huán)境圖2示出了可在其中實現(xiàn)本發(fā)明的各方面的示例性計算環(huán)境。計算系統(tǒng)環(huán)境100僅為合適的計算環(huán)境的一個示例,并非暗示對本發(fā)明的使用范圍或功能的任何局限。也不應將計算環(huán)境100解釋為對示例性操作環(huán)境100中示出的任一組件或其組合具有任何依賴或需求。
本發(fā)明可以使用眾多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置來操作。適合使用本發(fā)明的眾所周知的計算系統(tǒng)、環(huán)境和/或配置包括但不限于個人計算機、服務器計算機、手持式或膝上設備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機頂盒、可編程消費者電子設備、網(wǎng)絡PC、小型機、大型機、嵌入式系統(tǒng)、包括任一上述系統(tǒng)或設備的分布式計算環(huán)境等等。
本發(fā)明可以在諸如由計算機執(zhí)行的程序模塊等計算機可執(zhí)行指令的一般上下文環(huán)境中描述。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等,執(zhí)行特定的任務或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。本發(fā)明也可以在分布式計算環(huán)境中實踐,其中,任務由通過通信網(wǎng)絡或其它數(shù)據(jù)傳輸介質(zhì)連接的遠程處理設備來執(zhí)行。在分布式計算環(huán)境中,程序模塊可以位于包括存儲器存儲設備的本地和遠程計算機存儲介質(zhì)中。
參考圖2,用于實現(xiàn)本發(fā)明的示例性系統(tǒng)包括計算機110形式的通用計算裝置。計算機110的組件可包括但不限于,處理單元120、系統(tǒng)存儲器130以及將包括系統(tǒng)存儲器的各類系統(tǒng)組件耦合至處理單元120的系統(tǒng)總線121。處理單元120可表示諸如多線程處理器上支持的多個邏輯處理單元。系統(tǒng)總線121可以是若干種總線結(jié)構(gòu)類型的任一種,包括存儲器總線或存儲器控制器、外圍總線以及使用各類總線體系結(jié)構(gòu)的局部總線。作為示例而非局限,這類體系結(jié)構(gòu)包括工業(yè)標準體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強型ISA(EISA)總線、視頻電子技術(shù)標準協(xié)會(VESA)局部總線以及外圍部件互連(PCI)總線(也稱為Mezzanine總線)。系統(tǒng)總線121也可被實現(xiàn)為點對點鏈接、交換光纖等其它通信設備。
計算機110通常包括各種計算機可讀介質(zhì)。計算機可讀介質(zhì)可以是可由計算機110訪問的任一可用介質(zhì),包括易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。作為示例而非局限,計算機可讀介質(zhì)包括計算機存儲介質(zhì)和通信介質(zhì)。計算機存儲介質(zhì)包括以用于儲存諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任一方法或技術(shù)實現(xiàn)的易失性和非易失性,可移動和不可移動介質(zhì)。計算機存儲介質(zhì)包括但不限于,RAM、ROM、EEPROM、閃存或其它存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁盒、磁帶、磁盤存儲或其它磁存儲設備、或可以用來儲存所期望的信息并可由計算機110訪問的任一其它介質(zhì)。通信介質(zhì)通常在諸如載波或其它傳輸機制的已調(diào)制數(shù)據(jù)信號中包含計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任一信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”指以對信號中的信息進行編碼的方式設置或改變其一個或多個特征的信號。作為示例而非局限,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡或直接連線連接,以及無線介質(zhì),如聲學、RF、紅外和其它無線介質(zhì)。上述任一的組合也應當包括在計算機可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲器130包括以易失性和/或非易失性存儲器形式的計算機存儲介質(zhì),如只讀存儲器(ROM)131和隨機存取存儲器(RAM)132?;据斎?輸出系統(tǒng)133(BIOS)包括如在啟動時幫助在計算機110內(nèi)的元件之間傳輸信息的基本例程,通常儲存在ROM 131中。RAM 132通常包含處理單元120立即可訪問或者當前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非局限,圖1示出了操作系統(tǒng)134、應用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計算機110也可包括其它可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)。僅作示例,圖2示出了對不可移動、非易失性磁介質(zhì)進行讀寫的硬盤驅(qū)動器141、對可移動、非易失性磁盤152進行讀寫的磁盤驅(qū)動器151以及對可移動、非易失性光盤156,如CD ROM或其它光介質(zhì)進行讀寫的光盤驅(qū)動器155??梢栽谑纠圆僮鳝h(huán)境中使用的其它可移動/不可移動、易失性/非易失性計算機存儲介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字視頻帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動器141通常通過不可移動存儲器接口,如接口140連接到系統(tǒng)總線121,磁盤驅(qū)動器151和光盤驅(qū)動器155通常通過可移動存儲器接口,如接口150連接到系統(tǒng)總線121。
上文討論并在圖2示出的驅(qū)動器及其關(guān)聯(lián)的計算機存儲介質(zhì)為計算機110提供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲。例如,在圖2中,示出硬盤驅(qū)動器141儲存操作系統(tǒng)144、應用程序145、其它程序模塊146和程序數(shù)據(jù)147。注意,這些組件可以與操作系統(tǒng)134、應用程序135、其它程序模塊136和程序數(shù)據(jù)137相同,也可以與它們不同。這里對操作系統(tǒng)144、應用程序145、其它程序模塊146和程序數(shù)據(jù)147給予不同的標號來說明至少它們是不同的副本。用戶可以通過輸入設備,如鍵盤162和定點設備161(通常指鼠標、跟蹤球或觸摸板)向計算機110輸入命令和信息。其它輸入設備(未示出)可包括麥克風、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設備通常通過耦合至系統(tǒng)總線的用戶輸入接口160連接至處理單元120,但是也可以通過其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器191或其它類型的顯示設備也通過接口,如視頻接口190連接至系統(tǒng)總線121。除監(jiān)視器之外,計算機也可包括其它外圍輸出設備,如揚聲器197和打印機196,它們通過輸出外圍接口195連接。
計算機110可以在使用到一個或多個遠程計算機,如遠程計算機180的邏輯連接的網(wǎng)絡化環(huán)境中操作。遠程計算機180可以是個人計算機、服務器、路由器、網(wǎng)絡PC、對等設備或其它公用網(wǎng)絡節(jié)點,并通常包括許多或所有相對于計算機110所描述的元件,盡管在圖2中僅示出了存儲器存儲設備181。圖2描述的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可包括其它網(wǎng)絡。這類網(wǎng)絡環(huán)境常見于辦公室、企業(yè)范圍計算機網(wǎng)絡、內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。
當在LAN網(wǎng)絡環(huán)境中使用時,計算機110通過網(wǎng)絡接口或適配器170連接至LAN 171。當在WAN網(wǎng)絡環(huán)境中使用時,計算機110可包括調(diào)制解調(diào)器172或用于通過WAN 173,如因特網(wǎng)建立通信的其它裝置。調(diào)制解調(diào)器172可以是內(nèi)置或外置的,通過用戶輸入接口160或其它適當?shù)臋C制連接至系統(tǒng)總線121。在網(wǎng)絡化環(huán)境中,相對于計算機110所描述的程序模塊或其部分可儲存在遠程存儲器存儲設備中。作為示例而非局限,圖2示出遠程應用程序185駐留在存儲器設備181上??梢岳斫猓境龅木W(wǎng)絡連接是示例性的,也可以使用在計算機之間建立通信鏈路的其它裝置。
外部元數(shù)據(jù)處理系統(tǒng)當創(chuàng)建數(shù)據(jù)流時,為數(shù)據(jù)流標識輸入和輸出數(shù)據(jù)集合。查詢數(shù)據(jù)流的這些輸入和輸出數(shù)據(jù)集合,并且檢索外部元數(shù)據(jù)(關(guān)于用于數(shù)據(jù)流的外部數(shù)據(jù)源的元數(shù)據(jù))并對每一數(shù)據(jù)集合儲存。數(shù)據(jù)集合的元數(shù)據(jù)描述了數(shù)據(jù)集合中可用的信息。
在一個實施例中,輸入或輸出數(shù)據(jù)集合包括記錄信息。對于每一記錄,儲存多個列。對數(shù)據(jù)集合檢索的外部元數(shù)據(jù)將對數(shù)據(jù)集合中可用的每一列儲存描述以下列的各種元數(shù)據(jù)數(shù)據(jù)類型儲存在列中的數(shù)據(jù)的類型長度儲存在列中的數(shù)據(jù)的長度精度儲存在列中的數(shù)據(jù)的精度代碼頁如果列的數(shù)據(jù)類型是基于字符的,則為儲存在列中的數(shù)據(jù)的代碼頁。代碼頁是其中向代碼頁中的每一字符分配數(shù)字值的字符的有序集合。
標度如果數(shù)據(jù)本質(zhì)上是數(shù)字的,則為儲存在列中的數(shù)據(jù)的標度。標度是數(shù)據(jù)的小數(shù)點右邊的數(shù)字位數(shù)。
在其它實施例中,也可儲存描述可用列的元數(shù)據(jù)的其它變化。
該外部元數(shù)據(jù)最初在設置或配置數(shù)據(jù)流時儲存。外部元數(shù)據(jù)的第一版本描述了當設計數(shù)據(jù)流時存在的數(shù)據(jù)集合。然后可在運行時對數(shù)據(jù)流使用外部元數(shù)據(jù),以確定是否對數(shù)據(jù)流發(fā)生了改變。如下文所描述的,可通過重新同步來更新外部元數(shù)據(jù)。
確認和重新同步當要使用數(shù)據(jù)流時,可使用外部元數(shù)據(jù)來確認數(shù)據(jù)流對當前時刻存在的數(shù)據(jù)集合的使用。以此方式,可檢測到對數(shù)據(jù)集合的任何相關(guān)改變。另外,可使用確認信息來確定如何可解決所檢測到的任何改變。
圖3是依照本發(fā)明的一個實施例,使用至少一個外部數(shù)據(jù)文件準備關(guān)于數(shù)據(jù)流的數(shù)據(jù)流信息的方法的流程圖。如圖3所示,在步驟300,儲存數(shù)據(jù)流模型。該數(shù)據(jù)流模塊包括描述數(shù)據(jù)流以及描述數(shù)據(jù)流中來自多個外部數(shù)據(jù)文件(數(shù)據(jù)集合)的每一個的至少一個列的使用的信息。在步驟310,儲存元數(shù)據(jù)。儲存的外部元數(shù)據(jù)描述了外部數(shù)據(jù)文件/數(shù)據(jù)集合中存在的列。然后,在步驟320,使用儲存的元數(shù)據(jù)來確定數(shù)據(jù)流的模型和外部數(shù)據(jù)文件是否一致。這被稱為確認。
確認可以是連接或斷開的。連接的確認在數(shù)據(jù)集合可用(連接)時發(fā)生,并可被查詢以確定關(guān)于數(shù)據(jù)集合的內(nèi)容的信息,并將其與儲存的外部元數(shù)據(jù)比較。連接的確認確定了當前數(shù)據(jù)集合的每一個的相關(guān)狀態(tài)是否在外部元數(shù)據(jù)中令人滿意地表示,或者是否由于數(shù)據(jù)集合中的某一改變或破壞而存在問題。在一個實施例中,確定每一數(shù)據(jù)集合的確認狀態(tài)。如果任一數(shù)據(jù)集合被分配了指示存在問題的確認狀態(tài),則向用戶查詢,以確定應當采取什么行動。另外,連接的確認也將每一數(shù)據(jù)集合的相關(guān)狀態(tài)與數(shù)據(jù)流所需的信息進行比較。再一次,這一狀態(tài)信息用于檢測數(shù)據(jù)集合中在數(shù)據(jù)流運行時導致問題的改變。
斷開的確認將外部元數(shù)據(jù)與數(shù)據(jù)流所需的信息進行比較,而不參考數(shù)據(jù)集合中的任何改變。用戶可例如在數(shù)據(jù)集合不可用時選擇執(zhí)行斷開的確認。由此,例如,當從向用戶提供對數(shù)據(jù)集合的訪問的網(wǎng)絡斷開時,缺少到數(shù)據(jù)集合的當前連接的用戶仍可執(zhí)行斷開的確認。這一確認將允許用戶標識對數(shù)據(jù)流的潛在的有問題的改變,而無需到數(shù)據(jù)集合的連接。
重新同步改變數(shù)據(jù)流,以維持其與當前數(shù)據(jù)集合(在聯(lián)機的重新同步的情況下)或與當前儲存的外部元數(shù)據(jù)(斷開的重新同步)的兼容性。作出修補,它最小化了對數(shù)據(jù)流中剩余對象的改變,并最小化了必要的用戶交互。
連接的確認和重新同步如所討論的,當發(fā)生連接的確認時,再一次查詢數(shù)據(jù)集合,以確定對于該數(shù)據(jù)連接外部元數(shù)據(jù)是什么。對該數(shù)據(jù)集合的儲存的外部元數(shù)據(jù)作出比較。如果存在差異,則它們都因此被檢測。
如表1中所示,在確認時可出現(xiàn)若干情形
表1連接的確認-在將數(shù)據(jù)集合與儲存的外部元數(shù)據(jù)比較的確認時的可能情形在第一情形中,列存在于數(shù)據(jù)集合中,但不存在于儲存的外部元數(shù)據(jù)中。由此,推論是,當創(chuàng)建外部元數(shù)據(jù)時的確存在的列已從數(shù)據(jù)集合中刪除。在第二情形中,在收集儲存的外部元數(shù)據(jù)時不存在的列現(xiàn)在存在于數(shù)據(jù)集合中,由此,推論是,列被添加到數(shù)據(jù)集合。在第三和第四情形中,列存在于數(shù)據(jù)集合中,也存在于儲存的外部元數(shù)據(jù)中。在第三情形中,在儲存的外部元數(shù)據(jù)中收集的類型信息與數(shù)據(jù)集合中的類型信息一致。由此,沒有檢測到外部元數(shù)據(jù)中對列的改變。然而,在第四情形中,列具有數(shù)據(jù)集合中改變的數(shù)據(jù)類型。在這一情形中,在一個實施例中,將向用戶通知該不一致性。在一個實施例中,可給予用戶修補儲存的外部元數(shù)據(jù)中的數(shù)據(jù)類型的機會。
另外,在一個實施例中,也參考由數(shù)據(jù)流對數(shù)據(jù)集合實際使用的列來執(zhí)行確認。可出現(xiàn)的情形在表2中示出
表2連接的確認-在將數(shù)據(jù)集合與數(shù)據(jù)流信息比較的確認時的可能情形由此,如可在表2的第一情形中看到的,當列存在于數(shù)據(jù)流中而不存在于數(shù)據(jù)集合中時,出現(xiàn)確認問題。數(shù)據(jù)流中使用的列不存在于數(shù)據(jù)集合中。在這一情形中,在一個實施例中,請求用戶輸入以解決確認問題。
在第二和第三情形中,未遇到任何確認問題。數(shù)據(jù)集合中的列未在數(shù)據(jù)流中被引用,或者數(shù)據(jù)集合中的列在數(shù)據(jù)流中被引用,且所有的類型信息都對應。在這些情形中,未遇到確認問題?;蛘吡胁辉跀?shù)據(jù)流中使用,或列被使用且類型信息如所期望的。
在第四情形中,列存在于數(shù)據(jù)集合中,并在數(shù)據(jù)流中被引用,然而,類型信息改變。在這一情況下,在一個實施例中,作出解決不一致性的嘗試。如果類型兼容,使得存在可解決任何類型不一致性的轉(zhuǎn)換,則可使用該轉(zhuǎn)化,并因此解決了不一致性。如果類型兼容,但是情況可以由數(shù)據(jù)流以某一其它方式(例如,通過數(shù)據(jù)流中實現(xiàn)的方法)來修補,則該不一致性也是可解決的。然而,如果類型不兼容,且情況不能被修補,則由于不兼容性確認不能完成。在一個實施例中,提示用戶解決該不兼容性。
作為確認的結(jié)果,可返回確認狀態(tài)。例如,在一個實施例中,確認狀態(tài)ISVALID反映了確認沒有問題。確認狀態(tài)ISBROKEN指示存在問題,但是該問題可由用戶或通過數(shù)據(jù)流中的方法來解決。例如,如上所述,可解決類型不一致性的類型不一致性轉(zhuǎn)換可以是可用的。確認狀態(tài)NEEDSNEWMETADATA指示應當執(zhí)行重新同步(下文描述)。確認狀態(tài)ISCORRUPT指示不能被簡單地解決的問題。
當數(shù)據(jù)集合改變時,儲存的元數(shù)據(jù)反映了在先前的時刻數(shù)據(jù)集合的狀態(tài)。重新同步將儲存的外部元數(shù)據(jù)與數(shù)據(jù)集合信息(連接的重新同步)或數(shù)據(jù)流信息(斷開的重新同步)重新同步。
對于連接的重新同步,改變儲存的外部元數(shù)據(jù)以與找到的數(shù)據(jù)集合信息協(xié)調(diào)。在一個實施例中,當發(fā)現(xiàn)數(shù)據(jù)集合中存在儲存的外部元數(shù)據(jù)中未找到的列時,將關(guān)于該列的信息添加到儲存的外部元數(shù)據(jù)中。當列存在于儲存的外部元數(shù)據(jù)和數(shù)據(jù)集合中,但是類型信息已改變,則用來自數(shù)據(jù)集合的新類型信息更新儲存的外部元數(shù)據(jù)。
類似地,在連接的重新同步中,更新數(shù)據(jù)流以反映數(shù)據(jù)集合信息的改變。當數(shù)據(jù)流中引用的列在數(shù)據(jù)集合中不再可用時,從數(shù)據(jù)流中刪除該列。另外,如上文參考確認所討論的,當對于在儲存的外部元數(shù)據(jù)中找到信息的列改變了類型時,可以有解決差異的方法,并且重新同步中的差異可被解決(如果可能的話)。在一個實施例中,可以調(diào)用數(shù)據(jù)流的所展示的方法,以解決不一致性,并且數(shù)據(jù)流被改變。在另一實施例中,向用戶作出解決不一致性的請求。
斷開的確認和重新同步如所討論的,當發(fā)生斷開的確認時,不查詢數(shù)據(jù)集合。將儲存的外部元數(shù)據(jù)與數(shù)據(jù)流比較,以確保它們兼容??赡艿那樾卧诒?中示出
表3連接的確認-在將儲存的外部元數(shù)據(jù)與數(shù)據(jù)流信息進行比較的確認時的可能情形由此,如可以在表3的第一情形中見到的,當列存在于數(shù)據(jù)流中但不存在于儲存的外部元數(shù)據(jù)中,出現(xiàn)確認問題。數(shù)據(jù)流中使用的列不被儲存的外部元數(shù)據(jù)指示為存在于數(shù)據(jù)集合中。在這一情形中,在一個實施例中,請求用戶輸入,以解決確認問題。
在第二和第三情形中,未遇到確認問題。被指示為存在于儲存的外部元數(shù)據(jù)中的列不在數(shù)據(jù)流中被引用,或者被指示為存在于儲存的外部元數(shù)據(jù)中的列在數(shù)據(jù)流中被引用,且所有的類型信息都對應。在這些情形中,未遇到確認問題?;蛘吡胁辉跀?shù)據(jù)流中使用,或者使用了列且類型信息是所期望的。
在第四情形中,列存在于儲存的外部元數(shù)據(jù)中且在數(shù)據(jù)流中被引用,然而類型信息已改變。在這一情況下,在一個實施例中,作出解決不一致性的嘗試。如果類型兼容,使得存在可解決任何類型不一致性的轉(zhuǎn)換,則使用該轉(zhuǎn)換,并因此解決不一致性。如果類型不兼容,但情況可由數(shù)據(jù)流以某一其它方式(例如,通過數(shù)據(jù)流組件的接口)來修補,則該不一致性也是可解決的。然而,如果類型不兼容,且情況不能被修補,則由于不兼容性確認不能完成。在一個實施例中,提示用戶解決不兼容性。
圖4是依照本發(fā)明的一個實施例評估數(shù)據(jù)流模型的流程圖。在步驟400,檢索描述外部數(shù)據(jù)文件的元數(shù)據(jù)。在步驟410,使用該數(shù)據(jù)來確定數(shù)據(jù)流模型和元數(shù)據(jù)是否一致。
當執(zhí)行斷開的重新同步而非斷開的確認時,改變數(shù)據(jù)流以與儲存的外部元數(shù)據(jù)中反映的數(shù)據(jù)集合的理解協(xié)調(diào)。由此,在一個實施例中,如果列存在于數(shù)據(jù)流中而不存在于儲存的外部元數(shù)據(jù)中,則刪除數(shù)據(jù)流中的列以反映對該列在數(shù)據(jù)集合中不可用的理解,如由儲存的外部元數(shù)據(jù)中的列的缺乏所指示的。另外,如果數(shù)據(jù)流和儲存的外部元數(shù)據(jù)包含列的不同類型信息,則解決差異(如果可能的話)。在一個實施例中,可調(diào)用數(shù)據(jù)流的所展示的方法來解決不一致性,并且改變數(shù)據(jù)流。在另一實施例中,向用戶作出解決不一致性的請求。
結(jié)論注意,上述示例僅為了解釋的目的而提供,并且決不被解釋為限制本發(fā)明。盡管參考各種實施例描述了本發(fā)明,可以理解,此處所使用的詞語是描述和說明的詞語,而非限制的詞語。此外,盡管參考特定的裝置、材料和實施例描述了本發(fā)明,然而本發(fā)明并不打算限于此處所解釋的細節(jié);相反,本發(fā)明延及如在所附權(quán)利要求書范圍內(nèi)的所有功能上等效的結(jié)構(gòu)、方法和使用。從本說明書的教導中獲益的本領(lǐng)域的技術(shù)人員可以在不脫離本發(fā)明的各方面的范圍和精神的情況下對其實現(xiàn)各種修改并可作出改變。
權(quán)利要求
1.一種使用至少一個外部數(shù)據(jù)文件準備關(guān)于數(shù)據(jù)流的數(shù)據(jù)流信息的方法,每一所述外部數(shù)據(jù)文件包括信息列,所述方法包括儲存一數(shù)據(jù)流模型,所述數(shù)據(jù)流模型包括對所述至少一個外部數(shù)據(jù)文件的每一個描述來自所述外部數(shù)據(jù)文件的至少一個列的使用的使用數(shù)據(jù);儲存比較描述所述至少一個外部數(shù)據(jù)文件的每一個的至少一個列的數(shù)據(jù)的元數(shù)據(jù);以及使用所述儲存的元數(shù)據(jù)來確定所述數(shù)據(jù)流模型是否與所述外部數(shù)據(jù)文件相一致。
2.如權(quán)利要求1所述的方法,其特征在于,描述至少一個列的所述數(shù)據(jù)包括涉及所述至少一個列的類型數(shù)據(jù)。
3.如權(quán)利要求1所述的方法,其特征在于,使用所述儲存的元數(shù)據(jù)來確定所述數(shù)據(jù)流模型是否與所述外部數(shù)據(jù)文件相一致包括對于每一外部數(shù)據(jù)文件,驗證所述儲存的元數(shù)據(jù)與所述外部數(shù)據(jù)文件的當前狀態(tài)相一致。
4.如權(quán)利要求3所述的方法,其特征在于,驗證所述儲存的元數(shù)據(jù)與所述外部數(shù)據(jù)文件的當前狀態(tài)相一致包括確定所述儲存的元數(shù)據(jù)中描述的每一列是否存在于所述外部數(shù)據(jù)文件中;以及確定所述外部數(shù)據(jù)文件中的每一列是否在所述儲存的元數(shù)據(jù)中描述。
5.如權(quán)利要求4所述的方法,其特征在于,描述至少一個列的所述數(shù)據(jù)包括描述儲存在列中的數(shù)據(jù)的類型的類型數(shù)據(jù),并且其中,驗證所述儲存的元數(shù)據(jù)與所述外部數(shù)據(jù)文件的當前狀態(tài)相一致還包括確定所述儲存的元數(shù)據(jù)中描述的每一列的所述類型數(shù)據(jù)是否與所述外部數(shù)據(jù)文件中的所述列的類型數(shù)據(jù)相一致。
6.如權(quán)利要求3所述的方法,其特征在于,使用所述儲存的元數(shù)據(jù)來確定所述數(shù)據(jù)流模型和所述外部數(shù)據(jù)文件是否相一致還包括提供一指示所述儲存的元數(shù)據(jù)是否與所述外部數(shù)據(jù)文件的所述當前狀態(tài)相一致的確認狀態(tài)。
7.如權(quán)利要求3所述的方法,其特征在于,使用所述儲存的元數(shù)據(jù)來確定所述數(shù)據(jù)流模型與所述外部數(shù)據(jù)文件是否相一致還包括如果所述儲存的元數(shù)據(jù)與所述外部數(shù)據(jù)文件的所述當前狀態(tài)不一致,則解決所述不一致性。
8.如權(quán)利要求7所述的方法,其特征在于,所述不一致性的所述解決包括向用戶查詢以解決所述不一致性。
9.如權(quán)利要求7所述的方法,其特征在于,所述不一致性的所述解決包括使用所述數(shù)據(jù)流的接口來解決所述不一致性。
10.如權(quán)利要求1所述的方法,其特征在于,還包括重新同步所述儲存的元數(shù)據(jù)以包括反映每一所述外部數(shù)據(jù)文件中儲存的當前數(shù)據(jù)的數(shù)據(jù)。
11.如權(quán)利要求1所述的方法,其特征在于,還包括通過確定給定每一所述外部數(shù)據(jù)文件的當前狀態(tài),所述使用數(shù)據(jù)中描述的所述外部數(shù)據(jù)文件的至少一個列的每一所述使用是否可能,來確定所述數(shù)據(jù)流模型與所述外部數(shù)據(jù)文件是否相一致。
12.如權(quán)利要求11所述的方法,其特征在于,通過確定給定每一所述外部數(shù)據(jù)文件的當前狀態(tài),所述使用數(shù)據(jù)中描述的所述外部數(shù)據(jù)文件的至少一個列的每一所述使用是否可能,來確定所述數(shù)據(jù)流模型與所述外部數(shù)據(jù)文件是否相一致包括提供一指示所述數(shù)據(jù)流模型是否與所述外部數(shù)據(jù)文件的所述當前狀態(tài)相一致的確認狀態(tài)。
13.如權(quán)利要求11所述的方法,其特征在于,通過確定給定每一所述外部數(shù)據(jù)文件的當前狀態(tài),所述使用數(shù)據(jù)中描述的所述外部數(shù)據(jù)集文件的至少一個列的每一所述使用是否可能,來確定所述數(shù)據(jù)流模型與所述外部數(shù)據(jù)文件是否相一致包括如果所述儲存的元數(shù)據(jù)與所述外部數(shù)據(jù)文件的所述當前狀態(tài)不一致,則解決所述不一致性。
14.如權(quán)利要求13所述的方法,其特征在于,所述不一致性的所述解決包括查詢用戶以解決所述不一致性。
15.如權(quán)利要求13所述的方法,其特征在于,所述不一致性的所述解決包括使用所述數(shù)據(jù)流的接口來解決所述不一致性。
16.如權(quán)利要求11所述的方法,還包括重新同步所述數(shù)據(jù)流以反映所述外部數(shù)據(jù)文件的所述當前狀態(tài)。
17.如權(quán)利要求1所述的方法,其特征在于,所述使用所述儲存的元數(shù)據(jù)來確定所述數(shù)據(jù)流模型是否與所述外部數(shù)據(jù)文件相一致包括驗證所述儲存的元數(shù)據(jù)與所述數(shù)據(jù)流相一致。
18.如權(quán)利要求17所述的方法,其特征在于,所述驗證所述儲存的元數(shù)據(jù)與所述數(shù)據(jù)流相一致包括確定所述使用數(shù)據(jù)中描述的所述外部數(shù)據(jù)文件的至少一個列的每一所述使用是否與所述儲存的元數(shù)據(jù)相一致。
19.如權(quán)利要求18所述的方法,其特征在于,還包括如果所述使用數(shù)據(jù)中描述的所述外部數(shù)據(jù)文件的至少一個列的每一所述使用與所述儲存的元數(shù)據(jù)不一致,則解決所述不一致性。
20.攜帶用于執(zhí)行權(quán)利要求1所述的方法的計算機可執(zhí)行指令的操作系統(tǒng)、其上儲存多個計算機可執(zhí)行指令的計算機可讀介質(zhì)、協(xié)處理設備、計算設備以及已調(diào)制數(shù)據(jù)信號的至少一個。
21.一種評估數(shù)據(jù)流模型的方法,所述數(shù)據(jù)流模型包括關(guān)于數(shù)據(jù)流的信息,所述信息包括對至少一個外部數(shù)據(jù)文件描述來自所述外部數(shù)據(jù)文件的至少一個列的使用的使用數(shù)據(jù),所述方法包括檢索包括描述所述至少一個外部數(shù)據(jù)文件的每一個的至少一個列的數(shù)據(jù)的元數(shù)據(jù);以及使用所述元數(shù)據(jù)來確定所述數(shù)據(jù)流模型與所述元數(shù)據(jù)是否相一致。
22.如權(quán)利要求21所述的方法,其特征在于,使用所述儲存的元數(shù)據(jù)來確定所述數(shù)據(jù)流模型與所述元數(shù)據(jù)是否相一致包括提供一指示所述儲存的元數(shù)據(jù)是否與所述元數(shù)據(jù)相一致的確認狀態(tài)。
23.如權(quán)利要求21所述的方法,其特征在于,使用所述元數(shù)據(jù)來確定所述數(shù)據(jù)流模型與所述元數(shù)據(jù)是否相一致還包括如果所述儲存的元數(shù)據(jù)與所述外部數(shù)據(jù)文件的所述當前狀態(tài)不一致,則解決所述不一致性。
24.如權(quán)利要求23所述的方法,其特征在于,所述不一致性的所述解決包括查詢所述用戶以解決所述不一致性。
25.如權(quán)利要求23所述的方法,其特征在于,所述不一致性的所述解決包括使用所述數(shù)據(jù)流的接口來解決所述不一致性。
26.如權(quán)利要求21所述的方法,其特征在于,還包括重新同步所述儲存的元數(shù)據(jù)以包括反映儲存在每一所述外部數(shù)據(jù)文件中的當前數(shù)據(jù)的數(shù)據(jù)。
27.一種用于使用至少一個外部數(shù)據(jù)文件準備關(guān)于數(shù)據(jù)流的數(shù)據(jù)流信息的數(shù)據(jù)流建模系統(tǒng),每一所述外部數(shù)據(jù)文件包括信息列,所述數(shù)據(jù)流建模系統(tǒng)包括儲存數(shù)據(jù)流模型的數(shù)據(jù)流模型存儲,所述數(shù)據(jù)流模型包括對所述至少一個外部數(shù)據(jù)文件的每一個描述來自所述外部數(shù)據(jù)文件的至少一個列的使用的使用數(shù)據(jù);儲存元數(shù)據(jù)的元數(shù)據(jù)存儲,包括描述所述至少一個外部數(shù)據(jù)文件的每一個的至少一個列的數(shù)據(jù);以及一致性核查器,它使用所述儲存的元數(shù)據(jù)來確定所述數(shù)據(jù)流模型與所述外部數(shù)據(jù)文件是否相一致。
28.如權(quán)利要求27所述的數(shù)據(jù)流建模系統(tǒng),其特征在于,描述至少一個列的所述數(shù)據(jù)包括涉及所述至少一個列的類型數(shù)據(jù)。
29.如權(quán)利要求27所述的數(shù)據(jù)流建模系統(tǒng),其特征在于,所述一致性核查器對每一外部數(shù)據(jù)文件驗證所述儲存的元數(shù)據(jù)是否與所述外部數(shù)據(jù)文件的當前狀態(tài)相一致。
30.如權(quán)利要求29所述的數(shù)據(jù)流建模系統(tǒng),其特征在于,所述一致性核查器包括確認狀態(tài)確定器,用于提供一指示所述儲存的元數(shù)據(jù)是否與所述外部數(shù)據(jù)文件的所述當前狀態(tài)相一致的確認狀態(tài)。
31.如權(quán)利要求27所述的數(shù)據(jù)流建模系統(tǒng),其特征在于,還包括元數(shù)據(jù)重新同步器,它修改所述儲存的元數(shù)據(jù)以包括反映儲存在每一所述外部數(shù)據(jù)文件中的當前數(shù)據(jù)的數(shù)據(jù)。
32.如權(quán)利要求27所述的數(shù)據(jù)流建模系統(tǒng),其特征在于,所述一致性核查器包括一致性驗證器,用于驗證所述儲存的元數(shù)據(jù)與所述數(shù)據(jù)流相一致。
33.如權(quán)利要求32所述的數(shù)據(jù)流建模系統(tǒng),其特征在于,所述一致性驗證器確定所述使用數(shù)據(jù)中描述的所述外部數(shù)據(jù)文件的至少一個列的每一所述使用是否與所述儲存的元數(shù)據(jù)相一致。
34.如權(quán)利要求32所述的數(shù)據(jù)流建模系統(tǒng),其特征在于,還包括解決器,用于如果所述使用數(shù)據(jù)中描述的所述外部數(shù)據(jù)文件的至少一個列的每一所述使用與所述儲存的元數(shù)據(jù)不一致,則解決所述不一致性。
35.一種用于評估數(shù)據(jù)流模型的數(shù)據(jù)流建模系統(tǒng),所述數(shù)據(jù)流模型包括關(guān)于數(shù)據(jù)流的信息,所述信息包括對至少一個外部數(shù)據(jù)文件的每一個描述來自所述外部數(shù)據(jù)文件的至少一個列的使用的使用數(shù)據(jù),所述數(shù)據(jù)流建模系統(tǒng)包括儲存元數(shù)據(jù)的元數(shù)據(jù)存儲,包括描述所述至少一個外部數(shù)據(jù)文件的每一個的至少一個列的數(shù)據(jù);以及一致性核查器,它使用所述元數(shù)據(jù)來確定所述數(shù)據(jù)流模型與所述元數(shù)據(jù)是否相一致。
36.如權(quán)利要求35所述的數(shù)據(jù)流建模系統(tǒng),其特征在于,所述一致性核查器包括確認狀態(tài)指示器,它指示所述儲存的元數(shù)據(jù)是否與所述元數(shù)據(jù)相一致。
37.如權(quán)利要求34所述的數(shù)據(jù)流建模系統(tǒng),其特征在于,還包括不一致性解決器,用于如果所述儲存的元數(shù)據(jù)與所述外部數(shù)據(jù)文件的所述當前狀態(tài)不一致,則解決所述不一致性。
38.如權(quán)利要求35所述的數(shù)據(jù)流建模系統(tǒng),其特征在于,還包括重新同步器,用于重新同步所述儲存的元數(shù)據(jù)以包括反映儲存在每一所述外部數(shù)據(jù)文件中的當前數(shù)據(jù)的數(shù)據(jù)。
全文摘要
數(shù)據(jù)流的操作通過提供數(shù)據(jù)流與它所工作的外部數(shù)據(jù)文件的一致性的確認來改進,即使在面對那些外部數(shù)據(jù)文件的改變的情況下。儲存關(guān)于外部數(shù)據(jù)文件的元數(shù)據(jù)。由于外部數(shù)據(jù)文件可能改變,因此當確定外部數(shù)據(jù)文件是否仍與數(shù)據(jù)流兼容時使用該元數(shù)據(jù)。在執(zhí)行這一確認時,元數(shù)據(jù)跟蹤外部數(shù)據(jù)文件中出現(xiàn)了什么改變,并允許更靈活地向用戶呈現(xiàn)選項或自動修補數(shù)據(jù)流以與外部數(shù)據(jù)文件的改變相對應。當外部數(shù)據(jù)文件不可用時,可使用儲存的元數(shù)據(jù)來將數(shù)據(jù)流確認至關(guān)于外部數(shù)據(jù)文件的最后信息??蓪⑼獠吭獢?shù)據(jù)與數(shù)據(jù)流或外部數(shù)據(jù)文件重新同步,以提供更新的外部元數(shù)據(jù)供以后的確認。
文檔編號G06F17/30GK1722137SQ200510082378
公開日2006年1月18日 申請日期2005年6月15日 優(yōu)先權(quán)日2004年7月15日
發(fā)明者J·K·豪威, J·R·本哈德特, T·T·李 申請人:微軟公司