專(zhuān)利名稱(chēng):數(shù)據(jù)集成的方案合約的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及計(jì)算機(jī)領(lǐng)域中的數(shù)據(jù)處理。
背景技術(shù):
相關(guān)數(shù)據(jù)庫(kù)通常包括一個(gè)或多個(gè)表。每一表具有一個(gè)或多個(gè)記錄,并且表的每一記錄具有一個(gè)或多個(gè)字段。表的記錄被稱(chēng)為行,而字段被稱(chēng)為列。每一列具有相關(guān)聯(lián)的元數(shù)據(jù),該元數(shù)據(jù)為每一記錄描述在字段中的數(shù)據(jù)的類(lèi)型、大小或其他屬性。方案包括每一表的每一列的元數(shù)據(jù)以及每一表的其他規(guī)范,諸如排序字段、鍵等等。提取、變換和加載系統(tǒng)(ETL)是從特定數(shù)據(jù)源提取數(shù)據(jù)、變換數(shù)據(jù)以將其轉(zhuǎn)換成所需狀態(tài)并且將所變換的數(shù)據(jù)加載到指定目的地的基于計(jì)算機(jī)的系統(tǒng)。ETL系統(tǒng)可用于各種環(huán)境中。例如,異構(gòu)系統(tǒng)可具有按第一格式、方案或安排來(lái)存儲(chǔ)的某些數(shù)據(jù),以及使用不同的格式、方案或安排的系統(tǒng)的其他部分。ETL系統(tǒng)可被用于集成兩個(gè)子系統(tǒng)。變換可包括諸如重新格式化、排序、過(guò)濾、對(duì)數(shù)據(jù)的列進(jìn)行組合、或其他類(lèi)型的修改。ETL系統(tǒng)的輸入數(shù)據(jù)和輸出數(shù)據(jù)各自具有一種方案。輸入方案與輸入方案可以是相同或不同的。ETL所采用的輸入和輸出方案通常是固定的。為適應(yīng)各方案中的改變,開(kāi)發(fā)者可按需修改方案。在某些系統(tǒng)中,可由ETL動(dòng)態(tài)地處理方案的各部分。然而,動(dòng)態(tài)過(guò)程可能導(dǎo)致數(shù)據(jù)流實(shí)現(xiàn)中的低效。例如,存儲(chǔ)器塊對(duì)于特定數(shù)據(jù)流可能不是最佳的。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡(jiǎn)化形式介紹將在以下的具體實(shí)施方式
中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并不旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于限定所要求保護(hù)的主題的范圍。簡(jiǎn)言之,系統(tǒng)、方法和各組件用于便于從輸入源提取數(shù)據(jù)、變換數(shù)據(jù)并且將所變換的數(shù)據(jù)加載到輸出目的地。在一個(gè)實(shí)施方式中,方案合約包括用于驗(yàn)證輸入數(shù)據(jù)列類(lèi)型集合并且將它們轉(zhuǎn)換成實(shí)際類(lèi)型集合的約束。在一個(gè)實(shí)施方式中,將數(shù)據(jù)映射在方案合約中允許將輸入數(shù)據(jù)列映射到數(shù)據(jù)集成組件所使用的數(shù)據(jù)列。在一個(gè)實(shí)施方式中,映射組件允許對(duì)可選列或多組一個(gè)或多個(gè)列的指定。輸入列可按各種方式來(lái)安排,并且可被映射到數(shù)據(jù)集成組件所使用的數(shù)據(jù)列。輸入列的安排、名稱(chēng)、或類(lèi)型定義可以變化。系統(tǒng)允許使用不同的輸入數(shù)據(jù)源來(lái)重新使用方案合約,其中每一輸入數(shù)據(jù)源的列類(lèi)型規(guī)范是不同的。示例差別包括輸入列的類(lèi)型定義的變化。例如,來(lái)自不同源的對(duì)應(yīng)列可具有與其他源不同的串長(zhǎng)度。在一個(gè)實(shí)施方式中,在接收每一數(shù)據(jù)流的數(shù)據(jù)之前,生成列類(lèi)型集合,每一列類(lèi)型對(duì)應(yīng)于與該數(shù)據(jù)流相關(guān)聯(lián)的相應(yīng)的輸入數(shù)據(jù)列。生成可基于受約束的方案合約集合以及對(duì)應(yīng)于輸入數(shù)據(jù)列的元數(shù)據(jù)。為了實(shí)現(xiàn)前述及相關(guān)目的,在這里結(jié)合以下描述及附圖來(lái)描述系統(tǒng)的某些說(shuō)明性方面。然而,這些方面僅指示了可采用本發(fā)明的原理的各種方法中的少數(shù)幾種,且本發(fā)明旨在包括所有這樣的方面及其等效方面。通過(guò)結(jié)合附圖考慮本發(fā)明的以下詳細(xì)描述,本發(fā)明的其它優(yōu)點(diǎn)以及新穎的特征將變得顯而易見(jiàn)。
參考以下附圖來(lái)描述本發(fā)明的非限制性且非窮盡性實(shí)施方式。在各附圖中,除非另外指明,否則在全部附圖中相同的附圖標(biāo)記指代相同的部分。為了幫助理解本發(fā)明,將參考以下與附圖相關(guān)聯(lián)地閱讀的具體實(shí)施方式
,附圖中圖1是其中可部署此處描述的機(jī)制的數(shù)據(jù)集成環(huán)境的框圖;圖2是其中可部署此處描述的機(jī)制的示例數(shù)據(jù)集成系統(tǒng)的框圖;圖3是示出可實(shí)現(xiàn)提取、變換和加載系統(tǒng)的示例系統(tǒng)的框圖;圖4是示出便于數(shù)據(jù)集成系統(tǒng)中的靈活的約束規(guī)范的過(guò)程的示例實(shí)施方式的流程圖;圖5是示出生成包括約束規(guī)范的包的過(guò)程的示例實(shí)施方式的流程圖;圖6是示出執(zhí)行包括約束規(guī)范的包的過(guò)程的示例實(shí)施方式的流程圖;圖7是示出執(zhí)行數(shù)據(jù)流的過(guò)程的示例實(shí)施方式的流程圖;圖8是示出對(duì)實(shí)際數(shù)據(jù)類(lèi)型執(zhí)行運(yùn)行時(shí)驗(yàn)證的示例過(guò)程的流程圖;圖9A-B示出約束規(guī)范與物理輸入源之間的映射的示例;以及圖10是示出計(jì)算設(shè)備的一個(gè)實(shí)施方式的框圖,它示出可用于執(zhí)行此處描述的功能的所選擇的計(jì)算設(shè)備的組件。
具體實(shí)施例方式下文中將參考附圖來(lái)更全面地描述本發(fā)明的各示例實(shí)施方式,附圖構(gòu)成實(shí)施方式的一部分且在其中作為示例示出了可在其中實(shí)踐本發(fā)明的各特定示例實(shí)施方式。然而,本發(fā)明可被實(shí)現(xiàn)為許多不同的形式并且不應(yīng)被解釋為被限于此處描述的各實(shí)施方式;相反, 提供這些實(shí)施方式以使得本公開(kāi)變得透徹和完整,并且將本發(fā)明的范圍完全傳達(dá)給本領(lǐng)域技術(shù)人員。特別地,本發(fā)明可被實(shí)現(xiàn)為方法或設(shè)備。因此,本發(fā)明可采用完全硬件實(shí)施方式、 完全軟件實(shí)施方式或者結(jié)合軟件和硬件方面實(shí)施方式的形式。因此,以下詳細(xì)描述并非是局限性的。貫穿說(shuō)明書(shū)和權(quán)利要求書(shū),下列術(shù)語(yǔ)采用此處顯式相關(guān)聯(lián)的含義,除非該上下文在其他地方另有清楚指示。如此處所使用的,短語(yǔ)“在一個(gè)實(shí)施方式中”盡管它可以但不一定指前一實(shí)施方式。此外,如此處所使用的,短語(yǔ)“在另一個(gè)實(shí)施方式中”盡管它可以但不一定指一不同的實(shí)施方式。因此,可以容易地組合本發(fā)明的各實(shí)施方式而不背離本發(fā)明的范圍或精神。類(lèi)似地,如此處所使用的,短語(yǔ)“在一個(gè)實(shí)現(xiàn)中”盡管它可以但不一定指相同的實(shí)現(xiàn),并且可以組合各種實(shí)現(xiàn)的技術(shù)。另外,如此處所使用的,術(shù)語(yǔ)“或”是包括性“或”運(yùn)算符,并且等價(jià)于術(shù)語(yǔ)“和/ 或”,除非上下文清楚地另外指明。術(shù)語(yǔ)“基于”并非窮盡性的并且允許基于未描述的其他因素,除非上下文清楚地另外指明。另外,在本說(shuō)明書(shū)全文中,“一”、“一種”和“所述”的含義包括復(fù)數(shù)引用?!霸?.....中”的含義包括“在......中”和“在......上”。此處所描述的組件可以從其上具有數(shù)據(jù)結(jié)構(gòu)的各種計(jì)算機(jī)可讀介質(zhì)來(lái)執(zhí)行。組件可通過(guò)本地或遠(yuǎn)程過(guò)程諸如按照具有一或多個(gè)數(shù)據(jù)分組(例如,來(lái)自一個(gè)通過(guò)信號(hào)與本地系統(tǒng)、分布式系統(tǒng)中的另一組件交互或跨諸如因特網(wǎng)的網(wǎng)絡(luò)與其它系統(tǒng)交互的組件的數(shù)據(jù))的信號(hào)來(lái)通信。例如,根據(jù)本發(fā)明的各實(shí)施方式,軟件組件可被存儲(chǔ)在非瞬態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上,包括但不限于專(zhuān)用集成電路(ASIC)、緊致盤(pán)(⑶)、數(shù)字多功能盤(pán) (DVD)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、軟盤(pán)、硬盤(pán)、電可擦除可編程只讀存儲(chǔ)器 (EEPROM)、閃存或記憶棒。如此處所用的術(shù)語(yǔ)計(jì)算機(jī)可讀介質(zhì)既包括非瞬態(tài)存儲(chǔ)介質(zhì)又包括通信介質(zhì)。通信介質(zhì)通常以諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來(lái)體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù),并包括任何信息傳遞介質(zhì)。作為示例而非限制,通信介質(zhì)包括有線(xiàn)介質(zhì),如有線(xiàn)網(wǎng)絡(luò)或直接線(xiàn)連接,以及諸如聲學(xué)、無(wú)線(xiàn)電、紅外線(xiàn)及其他無(wú)線(xiàn)介質(zhì)之類(lèi)的無(wú)線(xiàn)介質(zhì)。圖1是其中可部署此處所描述的機(jī)制的示例數(shù)據(jù)集成環(huán)境100的框圖??蓪⒏鲗?shí)施方式部署在各種環(huán)境中;環(huán)境100提供一個(gè)這樣的示例。實(shí)施方式100可以是較大的數(shù)據(jù)集成環(huán)境的一部分。如圖所示,環(huán)境100包括輸入數(shù)據(jù)源102。數(shù)據(jù)源102可包括一個(gè)或多個(gè)文件、數(shù)據(jù)庫(kù)、存儲(chǔ)器結(jié)構(gòu)、網(wǎng)絡(luò)資源、數(shù)據(jù)流等、或其組合。數(shù)據(jù)源102用作提取、變換和加載系統(tǒng) (ETL) 104的輸入。ETL 104接收來(lái)自數(shù)據(jù)源102的數(shù)據(jù),對(duì)數(shù)據(jù)執(zhí)行各種操作,并且提供數(shù)據(jù)輸出106。數(shù)據(jù)輸出106可具有數(shù)據(jù)源102的特性,諸如被實(shí)現(xiàn)在文件、數(shù)據(jù)庫(kù)等中。數(shù)據(jù)源102可具有輸入方案,該輸入方案提供各種表和包含在表中的列的屬性。 數(shù)據(jù)輸出106可具有輸出方案,該輸出方案提供各種表和包含在表中的列(或更具體地是由ETL104輸出的列)的屬性。ETL 104可包括在將數(shù)據(jù)提供到目的地之前執(zhí)行輸入數(shù)據(jù)的一個(gè)或多個(gè)變換的一系列操作。由此,數(shù)據(jù)可以說(shuō)是隨著數(shù)據(jù)前進(jìn)或被變換而從每一輸入源流過(guò)ETL。某些變換可導(dǎo)致輸出方案與輸入方案不同。示例變換可串接兩個(gè)串列以產(chǎn)生第三列。輸入方案可包括各自的串長(zhǎng)度為30的兩列的規(guī)范。輸出方案可用串長(zhǎng)度為60的單個(gè)列替換這兩列。另一示例變換可對(duì)表的行進(jìn)行排序,產(chǎn)生等效于輸入方案的每一列的方案。 輸入方案與輸出方案之間的多種配置和關(guān)系是可能的。圖2是其中可部署此處所描述的機(jī)制的示例數(shù)據(jù)集成系統(tǒng)200的框圖。系統(tǒng)200 更詳細(xì)地示出環(huán)境100的各方面。如圖所示,系統(tǒng)200包括輸入源的三種類(lèi)型文件202、數(shù)據(jù)庫(kù)204以及其他源 205。輸入源的這三種類(lèi)型可表示環(huán)境100的輸入數(shù)據(jù)源102。系統(tǒng)200還示出ETL系統(tǒng)的三個(gè)組件。源組件208、變換組件214以及目的地組件220可以是ETL 104的組件。在一個(gè)配置中,源組件208可從輸入源中提取數(shù)據(jù);變換組件214可修改、概括或以其他方式處理從源組件208接收的數(shù)據(jù);目的地組件220可將輸出數(shù)據(jù)加載到諸如文件224、數(shù)據(jù)庫(kù)2 或其他目的地?cái)?shù)據(jù)2 等輸出數(shù)據(jù)存儲(chǔ)中。ETL系統(tǒng)此處還被稱(chēng)為數(shù)據(jù)集成系統(tǒng)。源組件 208、變換組件214以及目的地組件220被稱(chēng)為數(shù)據(jù)集成組件。在所示的示例系統(tǒng)200中,源組件208、變換組件214以及目的地組件220中的每一個(gè)具有其自身的輸入接口和輸出接口。這些輸入接口和輸出接口與對(duì)應(yīng)的接口或數(shù)據(jù)連接,以便在數(shù)據(jù)源102與數(shù)據(jù)輸出106之間形成數(shù)據(jù)流。如圖所示,外部列接口 206向源組件208提供輸入,并且接收來(lái)自文件202、數(shù)據(jù)庫(kù)204或其他源205的數(shù)據(jù)。源組件208的輸出接口 210與變換組件214的輸入接口 212連接。變換組件214的輸出接口 216與目的地組件220的輸入接口 218連接。外部列222可以是與輸出源文件224、數(shù)據(jù)庫(kù)2 或其他目的地?cái)?shù)據(jù)2 連接的目的地組件220的輸出。源組件208、變換組件214以及目的地組件220可形成流水線(xiàn),其中數(shù)據(jù)從數(shù)據(jù)源被接收、由這些組件中的每一個(gè)來(lái)處理、并且隨后輸出到數(shù)據(jù)輸出??梢酝瑫r(shí)執(zhí)行該流水線(xiàn)內(nèi)的操作。例如,目的地組件220可能正處理從變換組件214接收的數(shù)據(jù),同時(shí)變換組件正處理從源組件208接收的數(shù)據(jù),而源組件208同時(shí)處理從數(shù)據(jù)源接收的新數(shù)據(jù)。盡管圖2 示出簡(jiǎn)單的配置,但可通過(guò)將源組件208、變換組件214或目的地組件220的附加實(shí)例添加到ETL系統(tǒng)中來(lái)配置更復(fù)雜的系統(tǒng)。在某些配置中,源組件、變換組件或目的地組件可執(zhí)行其他組件的功能。例如,變換組件可導(dǎo)入來(lái)自外部源的數(shù)據(jù)并且將其與存儲(chǔ)器中的數(shù)據(jù)結(jié)合,由此用作源組件和變換組件的組合。在另一示例中,變換組件可將數(shù)據(jù)寫(xiě)入外部目的地。在某些配置中,源組件、 變換組件或目的地組件可具有多個(gè)輸入或多個(gè)目的地。例如,這可被用于結(jié)合各輸入,或?qū)⒁粋€(gè)輸入拆分成多個(gè)輸出。圖3是示出可實(shí)現(xiàn)諸如圖1的ETL 104等ETL的示例數(shù)據(jù)集成系統(tǒng)300的框圖。 圖3只是合適的系統(tǒng)配置的一個(gè)示例,并且不旨在對(duì)本發(fā)明的使用范圍或功能提出任何限制。因此,可采用各種系統(tǒng)配置而不背離此處描述的機(jī)制的范圍或精神。系統(tǒng)300的組件可以分布在一個(gè)或多個(gè)計(jì)算設(shè)備間,這些計(jì)算設(shè)備中的每一個(gè)通過(guò)采用諸如IP、TCP/IP、UDP、HTTP、SSL、TLS、FTP、SMTP、WAP、藍(lán)牙、WLAN等各種有線(xiàn)或無(wú)線(xiàn)通信協(xié)議中的一種或多種來(lái)彼此通信。計(jì)算設(shè)備可以是專(zhuān)用或通用計(jì)算設(shè)備。示例計(jì)算設(shè)備包括大型計(jì)算機(jī)、服務(wù)器、刀片服務(wù)器、個(gè)人計(jì)算機(jī)、便攜式計(jì)算機(jī)、通信設(shè)備、消費(fèi)電子產(chǎn)品等。圖9示出了可被用于實(shí)現(xiàn)系統(tǒng)300或其各部分的計(jì)算設(shè)備的示例實(shí)施方式。圖3包括虛線(xiàn)中的用戶(hù)302,以便指示用戶(hù)302不是系統(tǒng)300的一部分,但可與該系統(tǒng)交互。在一個(gè)實(shí)施方式中,用戶(hù)302將方案合約304中的一個(gè)或多個(gè)約束提供給系統(tǒng) 300。方案合約可包括約束集合,盡管它可包括附加數(shù)據(jù)。約束本身可以是類(lèi)型規(guī)范。在某些實(shí)施方式中,約束可以是通用類(lèi)型規(guī)范。例如,串的約束可適應(yīng)各種類(lèi)型或長(zhǎng)度的串類(lèi)型。整數(shù)的約束可適應(yīng)各種整數(shù)類(lèi)型。在一個(gè)實(shí)施方式中,方案合約包括映射數(shù)據(jù)以供將輸入數(shù)據(jù)與一個(gè)或多個(gè)數(shù)據(jù)集成組件所使用的規(guī)范相匹配。映射數(shù)據(jù)可指定處理可變的列數(shù)量的方式。例如,約束可指定任何類(lèi)型的一個(gè)或多個(gè)列,或任何類(lèi)型的零或多個(gè)列。另一示例約束可指定串的一個(gè)或多個(gè)列。約束可指定單個(gè)可選列,以及類(lèi)型約束和默認(rèn)值。如果可選輸入列被省略,則可將默認(rèn)值和類(lèi)型約束插入到數(shù)據(jù)流。某些映射數(shù)據(jù)可提供規(guī)范,以便啟用輸入列與數(shù)據(jù)集成組件所處理的列之間的映射,同時(shí)保留列的語(yǔ)義信息。例如,映射機(jī)制可通過(guò)名稱(chēng)來(lái)指定列。如果對(duì)應(yīng)的列位于相對(duì)于其他列的、數(shù)據(jù)集成組件期望之外的不同位置,則該對(duì)應(yīng)的列可由列名稱(chēng)規(guī)范來(lái)映射。在某些實(shí)施方式中,名稱(chēng)規(guī)范可通過(guò)諸如使用通配字符或其他機(jī)制來(lái)概括,以便匹配輸入列名稱(chēng)。例如,約束可指定被稱(chēng)為“AB*”的一個(gè)或多個(gè)串列,并且映射到以字符“AB”開(kāi)始的列。在一個(gè)實(shí)現(xiàn)中,內(nèi)容映射可提供物理列引用與內(nèi)部引用之間的對(duì)應(yīng)關(guān)系。當(dāng)系統(tǒng)的組件被改變但提供了等效的列時(shí),映射機(jī)制便于每一列的自動(dòng)重新映射。在一個(gè)實(shí)施方式中,系統(tǒng)可向用戶(hù)呈現(xiàn)期望的列和實(shí)際輸入列的語(yǔ)義上下文,并且使得用戶(hù)能夠指示一個(gè)或多個(gè)列的列映射。圖9提供列映射的示例。在方案合約304中的約束可按多種形式中的任意一種存在,并且可按各種方式來(lái)生成。在一個(gè)實(shí)施方式中,方案處理器306接收來(lái)自對(duì)應(yīng)于圖1的輸入數(shù)據(jù)源102的輸入源 322的元數(shù)據(jù)323。以虛線(xiàn)示出的輸入源322和元數(shù)據(jù)323在系統(tǒng)300的外部,但可作為輸入提供給系統(tǒng)。元數(shù)據(jù)323可包括從輸入源322接收的數(shù)據(jù)的實(shí)際類(lèi)型。方案處理器306 可便于來(lái)自實(shí)際類(lèi)型的約束的規(guī)范。在一個(gè)實(shí)施方式中,方案處理器306可指示每一列的實(shí)際類(lèi)型,并且使得用戶(hù)302能夠用方案合約304中的約束類(lèi)型替換實(shí)際類(lèi)型。在一個(gè)實(shí)施方式中,方案處理器306可執(zhí)行處理以確定可從元數(shù)據(jù)323中得到的且對(duì)系統(tǒng)有效的約束。例如,可檢查下游組件輸入,并且確定可使實(shí)際類(lèi)型成為更通用的約束。例如,下游輸入可指示一般串長(zhǎng)度為50的列的規(guī)范。對(duì)應(yīng)的實(shí)際類(lèi)型可指定統(tǒng)一字符編碼串的長(zhǎng)度為30。方案處理器306可確定將實(shí)際類(lèi)型改變?yōu)橐话愦募s束。方案處理器306可向用戶(hù)302呈現(xiàn)所提議的約束類(lèi)型,并且便于接受或改變所提議的類(lèi)型。約束的細(xì)節(jié)可以變化。約束的某些示例是長(zhǎng)度為50的串;串;任何精度數(shù);任何類(lèi)型;可任選的列;或一個(gè)或多個(gè)列。在一個(gè)實(shí)施方式中,方案處理器306可分析方案合約304中的約束,以便基于下游組件的輸入或輸出接口來(lái)確定該約束是否有效。在一個(gè)實(shí)施方式中,每一數(shù)據(jù)集合組件可用輸入約束規(guī)范來(lái)配置。在一個(gè)實(shí)施方式中,可通過(guò)確定數(shù)據(jù)集成組件輸入約束規(guī)范是否可適應(yīng)數(shù)據(jù)流的對(duì)應(yīng)的約束來(lái)執(zhí)行確認(rèn)。例如,如果下游組件將整數(shù)類(lèi)型指定為數(shù)據(jù)流的輸入,則數(shù)值類(lèi)型的約束類(lèi)型可被認(rèn)為無(wú)效。在一個(gè)實(shí)施方式中,ETL的每一數(shù)據(jù)集成組件可實(shí)現(xiàn)使方案處理器306能夠查詢(xún)其輸入或輸出接口的接口。在一個(gè)實(shí)施方式中,組件接口可提供基于一個(gè)或多個(gè)對(duì)應(yīng)輸入數(shù)據(jù)類(lèi)型來(lái)輸出的數(shù)據(jù)類(lèi)型??稍谙掠螖?shù)據(jù)集成組件的后續(xù)查詢(xún)中使用輸出類(lèi)型數(shù)據(jù)??墒褂眠@一信息來(lái)確認(rèn)方案合約304中的約束的每一類(lèi)型。在一個(gè)實(shí)施方式中,方案處理器306可向用戶(hù)302提供警告或出錯(cuò)消息,以便指示無(wú)效或可能無(wú)效的類(lèi)型規(guī)范。由此,用戶(hù)302可執(zhí)行任何數(shù)量的迭代,以便產(chǎn)生方案合約 304中的約束。在所示的實(shí)施方式中,方案處理器306可將方案合約304轉(zhuǎn)換成包308。在一個(gè)實(shí)施方式中,包308可以是可擴(kuò)展標(biāo)記語(yǔ)言(XML)文件,盡管可使用各種其他格式。在一個(gè)實(shí)施方式中,包308可以是對(duì)象模型的形式。在一個(gè)實(shí)施方式中,可使用諸如XML等第一格式,隨后該第一格式被轉(zhuǎn)換成諸如對(duì)象模型等第二格式。包可包括控制流規(guī)范以及一個(gè)或多個(gè)數(shù)據(jù)流規(guī)范??刂屏髟乜砂ㄌ峁┙Y(jié)構(gòu)的一個(gè)或多個(gè)容器、提供功能的任務(wù)、以及將容器和任務(wù)連接到排序的控制流的優(yōu)先級(jí)約束。 控制流任務(wù)可定義并且執(zhí)行提取數(shù)據(jù)、應(yīng)用變換且加載數(shù)據(jù)的數(shù)據(jù)流。
如示例系統(tǒng)300中所示,可從另一源接收包308。例如,XML文件可通過(guò)另一過(guò)程來(lái)生成并且向系統(tǒng)300提供,而無(wú)需方案處理器306的幫助。某些實(shí)現(xiàn)可由此允許從內(nèi)部或外部過(guò)程接收包308。在一個(gè)實(shí)施方式中,包處理器310可接收包308并將其變換成運(yùn)行時(shí)使用的形式。 包處理器310可對(duì)包含在包308內(nèi)的方案執(zhí)行設(shè)計(jì)確認(rèn)。在一個(gè)實(shí)現(xiàn)中,這一確認(rèn)基本上可與由方案處理器306執(zhí)行的設(shè)計(jì)確認(rèn)類(lèi)似。在某些配置中,可跳過(guò)方案處理器306的設(shè)計(jì)確認(rèn),諸如在從另一源接收包308的配置中。由此,包處理器310的設(shè)計(jì)確認(rèn)可重復(fù)某些確認(rèn),或可執(zhí)行先前未執(zhí)行過(guò)的確認(rèn)。注意,盡管對(duì)于這一討論,方案處理器306和包處理器310被示為不同組件,但在某些實(shí)現(xiàn)中,可至少部分地將它們組合成一個(gè)或多個(gè)組件。在一個(gè)實(shí)施方式中,包處理器310可開(kāi)始對(duì)包308的執(zhí)行。這可包括對(duì)與工作流不同的一個(gè)或多個(gè)任務(wù)的執(zhí)行。例如,對(duì)應(yīng)于包308的任務(wù)可包括將一個(gè)或多個(gè)電子郵件或其他消息發(fā)送給指定收件人,經(jīng)由FTP或其他協(xié)議傳送一個(gè)或多個(gè)文件,執(zhí)行指定腳本, 或其他動(dòng)作。在一個(gè)實(shí)現(xiàn)中,包處理器310可啟動(dòng)工作流過(guò)程。該工作流過(guò)程可包括對(duì)約束編譯器312的執(zhí)行。在一個(gè)實(shí)施方式中,約束編譯器312接收在包308內(nèi)指定的約束,并基于從輸入源 322接收的元數(shù)據(jù)323將其變換成實(shí)際列類(lèi)型314。元數(shù)據(jù)323可指示對(duì)應(yīng)數(shù)據(jù)的實(shí)際類(lèi)型。在一個(gè)實(shí)現(xiàn)中,約束編譯器312可執(zhí)行在包308中指定的列約束的運(yùn)行時(shí)確認(rèn),確定各種數(shù)據(jù)集成組件是否被配置成處理對(duì)應(yīng)類(lèi)型。如果約束有效,則約束編譯器312可基于元數(shù)據(jù)323和包308生成實(shí)際列類(lèi)型314。在一個(gè)實(shí)現(xiàn)中,可將實(shí)際列類(lèi)型314包含在包308 內(nèi),盡管在某些實(shí)現(xiàn)中,可不同于包308。作為示例,諸如變換組件314等數(shù)據(jù)集成組件可接收包括具有統(tǒng)一字符編碼串30 的實(shí)際類(lèi)型規(guī)范的第一列以及具有統(tǒng)一字符編碼串40的實(shí)際類(lèi)型規(guī)范的第二列。變換組件214可具有指定串輸入的約束。系統(tǒng)可確定基于串接這兩列的操作讓變換組件具有統(tǒng)一字符編碼串70的輸出類(lèi)型規(guī)范。實(shí)際列類(lèi)型314包括要從輸入源322接收的每一輸入類(lèi)型的類(lèi)型規(guī)范。在一個(gè)實(shí)施方式中,約束編譯器312可確定對(duì)每一數(shù)據(jù)集成組件的每一輸入列的實(shí)際列類(lèi)型,并且將這一信息包括在實(shí)際列類(lèi)型314中。由此,可確定并包括對(duì)應(yīng)于外部列206、輸入接口 212 或輸入接口 218的輸入列規(guī)范。注意,可使用由此處所描述的系統(tǒng)基于第一輸入源322創(chuàng)建的包308來(lái)處理第二輸入源322。第二輸入源322可具有于第一輸入源322不同的類(lèi)型。當(dāng)執(zhí)行第二輸入源322 時(shí),實(shí)際列類(lèi)型314可以與當(dāng)處理第一輸入源322時(shí)生成的實(shí)際列類(lèi)型相同或不同。在一個(gè)實(shí)施方式中,計(jì)劃生成器316可接收包括實(shí)際列類(lèi)型314的包308,并且基于包308和實(shí)際列類(lèi)型314來(lái)生成執(zhí)行計(jì)劃318。執(zhí)行計(jì)劃318可包括表維度、要分配的存儲(chǔ)器塊、要采用的多個(gè)線(xiàn)程以及線(xiàn)程之間的關(guān)系、要調(diào)用的過(guò)程以及過(guò)程的時(shí)序、工作流的一個(gè)或多個(gè)圖、或其他這樣的數(shù)據(jù)的規(guī)范。執(zhí)行計(jì)劃318可用作工作流執(zhí)行的藍(lán)圖。執(zhí)行計(jì)劃318可由任何一個(gè)或多個(gè)數(shù)據(jù)集成組件使用。在一個(gè)實(shí)現(xiàn)中,在從輸入源322接收數(shù)據(jù)之前生成執(zhí)行計(jì)劃318。它可在執(zhí)行工作流期間保持固定。具有固定的執(zhí)行計(jì)劃提供了可改進(jìn)性能、減少資源使用或提供其他益處的操作效率。在一個(gè)實(shí)施方式中,流水線(xiàn)執(zhí)行器320可接收?qǐng)?zhí)行計(jì)劃318,并且分配諸如存儲(chǔ)器326、線(xiàn)程328、數(shù)據(jù)結(jié)構(gòu)、對(duì)象等資源。流水線(xiàn)處理器320可通過(guò)諸如源組件208、變換組件 214或目的地組件220等各種組件來(lái)啟動(dòng)或管理工作流的執(zhí)行。輸出320可通過(guò)流水線(xiàn)執(zhí)行來(lái)產(chǎn)生。輸出3M可包括數(shù)據(jù)輸出106。它還可包括向用戶(hù)呈現(xiàn)的數(shù)據(jù),諸如狀態(tài)數(shù)據(jù)、 消息等。在一個(gè)實(shí)施方式中,每一數(shù)據(jù)集成組件實(shí)現(xiàn)便于此處描述的機(jī)制的接口。具體地, 數(shù)據(jù)集成組件可接收指定供執(zhí)行的實(shí)際類(lèi)型的一個(gè)或多個(gè)列的方法調(diào)用??筛檶?duì)輸出列的改變,并將其傳播到下游組件。圖4是示出便于數(shù)據(jù)集成系統(tǒng)中的方案合約的過(guò)程400的示例實(shí)施方式的流程圖。在一個(gè)實(shí)施方式中,過(guò)程400的至少某些動(dòng)作是由圖3的系統(tǒng)300的組件執(zhí)行的。過(guò)程400的所示部分可在框402啟動(dòng),在那里包被生成,該包包括一個(gè)或多個(gè)靈活的約束或映射數(shù)據(jù)。包308是這樣的包的一個(gè)示例???02的動(dòng)作在圖5以及相關(guān)聯(lián)的討論中更詳細(xì)地示出和描述。該過(guò)程可前進(jìn)至循環(huán)404,該循環(huán)為輸入源的每一集合以及對(duì)應(yīng)執(zhí)行迭代。如此處討論的,可使用具有包括一個(gè)或多個(gè)不同列類(lèi)型的不同元數(shù)據(jù)的一個(gè)或多個(gè)輸入源集合來(lái)重復(fù)使用由此處描述的機(jī)制生成的包。循環(huán)404的每一迭代與數(shù)據(jù)集成執(zhí)行以及對(duì)應(yīng)的數(shù)據(jù)源集合相對(duì)應(yīng)。在所示實(shí)施方式中,循環(huán)404包括塊406-408并且由塊410終止。該過(guò)程可前進(jìn)至框406,在那里接收輸入數(shù)據(jù)源的新集合。該過(guò)程可前進(jìn)至框 408,在那里執(zhí)行當(dāng)前的包。圖6示出用于執(zhí)行包的過(guò)程的示例實(shí)施方式。該過(guò)程可前進(jìn)至框410,并且基于系統(tǒng)配置或用戶(hù)的控制動(dòng)作可選擇地執(zhí)行循環(huán) 404的另一迭代。在退出循環(huán)404之后,該過(guò)程可前進(jìn)至完成框412,并且退出或返回到調(diào)用程序。圖5是示出用于生成包括約束規(guī)范或映射數(shù)據(jù)的包(諸如圖3的包308)的過(guò)程 500的示例實(shí)施方式的流程圖。過(guò)程500或其變型可執(zhí)行圖4的框402的至少某些動(dòng)作。 過(guò)程500的所示部分可在框502啟動(dòng),在那里系統(tǒng)便于方案合約的生成。如此處討論的,諸如方案處理器306的系統(tǒng)組件可執(zhí)行諸如從輸入源接收元數(shù)據(jù)、分析該元數(shù)據(jù)、以及使得用戶(hù)能夠?qū)?shí)際方案變換成約束集合的動(dòng)作。這可包括將至少某些類(lèi)型規(guī)范自動(dòng)地修改成對(duì)應(yīng)的約束規(guī)范。它可包括向用戶(hù)呈現(xiàn)規(guī)范,以及接收命令以修改規(guī)范。該過(guò)程可前進(jìn)至框504,在那里可基于方案合約以及諸如源組件208、變換組件 214和目的地組件220等數(shù)據(jù)集成系統(tǒng)的配置來(lái)執(zhí)行設(shè)計(jì)確認(rèn)。該過(guò)程可前進(jìn)至框506,在那里,基于設(shè)計(jì)確認(rèn)來(lái)選擇性地發(fā)出警告或出錯(cuò)消息。如箭頭507所示,在某些實(shí)施方式中,該過(guò)程可回到框502以執(zhí)行約束生成的附加便利???02、504和506可以是迭代過(guò)程的一部分,在那里用戶(hù)生成并修改一個(gè)或多個(gè)約束或映射數(shù)據(jù)。該過(guò)程可從框506回到框508,在那里流程規(guī)范被保存到包中,數(shù)據(jù)流規(guī)范包括一個(gè)或多個(gè)約束規(guī)范或映射數(shù)據(jù)。該過(guò)程可前進(jìn)至完成框510,并且退出或返回到調(diào)用程序, 諸如過(guò)程400。圖6是示出用于執(zhí)行包括約束規(guī)范或映射數(shù)據(jù)的包的過(guò)程600的示例實(shí)施方式的流程圖。過(guò)程600或其變型可執(zhí)行圖4的框408的至少某些動(dòng)作。過(guò)程600的所示部分可在框602啟動(dòng),在那里可開(kāi)始包的執(zhí)行。這可包括啟動(dòng)如在包中指定的各種動(dòng)作,諸如對(duì)腳本等的執(zhí)行。該過(guò)程可前進(jìn)至框604,在那里可執(zhí)行對(duì)包的設(shè)計(jì)確認(rèn)。盡管在圖6中未示出,但在一個(gè)實(shí)施方式中,如果出錯(cuò)未找到,則該過(guò)程可退出或提示用戶(hù)輸入命令。該過(guò)程可前進(jìn)至循環(huán)606,該循環(huán)為在包中指定的每一數(shù)據(jù)流迭代。包可包括一個(gè)或多個(gè)數(shù)據(jù)流規(guī)范。取決于配置和系統(tǒng)能力,可同時(shí)執(zhí)行對(duì)某些數(shù)據(jù)流的執(zhí)行。某些數(shù)據(jù)流可取決于其他數(shù)據(jù)流并被順序地執(zhí)行。對(duì)某些數(shù)據(jù)流可存在同時(shí)執(zhí)行和順序執(zhí)行的組合。盡管循環(huán)606被示為順序循環(huán),但可以理解,可至少部分地并行執(zhí)行循環(huán)606的多個(gè)迭代。在每一迭代中,對(duì)應(yīng)的數(shù)據(jù)流被稱(chēng)為當(dāng)前數(shù)據(jù)流。該過(guò)程可前進(jìn)至框608,在那里執(zhí)行當(dāng)前的數(shù)據(jù)流。圖7示出用于執(zhí)行數(shù)據(jù)流的過(guò)程的示例實(shí)施方式。該過(guò)程可前進(jìn)至框610,并且基于系統(tǒng)配置或用戶(hù)的控制動(dòng)作可選擇地執(zhí)行循環(huán)606的另一迭代。在退出循環(huán)606之后,該過(guò)程可前進(jìn)至完成框612,并且退出或返回到調(diào)用程序,諸如過(guò)程500。圖7是示出用于執(zhí)行數(shù)據(jù)流的過(guò)程700的示例實(shí)施方式的流程圖。過(guò)程700或其變型可執(zhí)行圖6的框608的至少某些動(dòng)作。在一個(gè)實(shí)施方式中,過(guò)程700的至少一部分動(dòng)作可由圖3的流水線(xiàn)執(zhí)行器320來(lái)執(zhí)行或管理。過(guò)程700的所示部分可在框702啟動(dòng),在那里從諸如輸入源322等數(shù)據(jù)源檢索諸如圖3的元數(shù)據(jù)323等外部元數(shù)據(jù)。這一元數(shù)據(jù)可包括來(lái)自數(shù)據(jù)源的每一列的數(shù)據(jù)的實(shí)際類(lèi)型。該過(guò)程可前進(jìn)至框704,在那里確認(rèn)對(duì)應(yīng)于當(dāng)前數(shù)據(jù)流的實(shí)際類(lèi)型,并且生成實(shí)際數(shù)據(jù)類(lèi)型。在一個(gè)實(shí)施方式中,執(zhí)行實(shí)際類(lèi)型的運(yùn)行時(shí)確認(rèn)的過(guò)程可查詢(xún)接收數(shù)據(jù)流的每一數(shù)據(jù)集成組件,以便確認(rèn)每一輸入類(lèi)型并指定對(duì)應(yīng)的輸出類(lèi)型。隨后可提供對(duì)應(yīng)的輸出類(lèi)型作為到下一下游數(shù)據(jù)集成組件的輸入。如果確認(rèn)成功,則框704的動(dòng)作可生成每一數(shù)據(jù)集成組件的輸入的實(shí)際列類(lèi)型。當(dāng)前列類(lèi)型可因此基于來(lái)自組件查詢(xún)過(guò)程的元數(shù)據(jù)或響應(yīng)而被確定。圖8示出在運(yùn)行時(shí)確認(rèn)數(shù)據(jù)流并生成實(shí)際列類(lèi)型的示例過(guò)程。該過(guò)程可前進(jìn)至框708,在那里基于實(shí)際列類(lèi)型生成執(zhí)行計(jì)劃。在某些實(shí)施方式, 執(zhí)行計(jì)劃可指定要分配的存儲(chǔ)器塊的大小、操作的順序、要分配的多個(gè)執(zhí)行線(xiàn)程、執(zhí)行線(xiàn)程之中的過(guò)程分布、要分配或解除分配的其他資源、或要作為數(shù)據(jù)流執(zhí)行的一部分來(lái)執(zhí)行的其他動(dòng)作。執(zhí)行計(jì)劃用作后續(xù)執(zhí)行的藍(lán)圖。在一個(gè)實(shí)施方式中,在接收對(duì)應(yīng)的數(shù)據(jù)流的數(shù)據(jù)之前,執(zhí)行框704和708的動(dòng)作,包括生成實(shí)際列類(lèi)型以及生成執(zhí)行計(jì)劃。該過(guò)程可前進(jìn)至框710,在那里執(zhí)行對(duì)數(shù)據(jù)流的執(zhí)行。這可包括從輸入數(shù)據(jù)源檢索數(shù)據(jù)、分配存儲(chǔ)器、線(xiàn)程或其他資源、調(diào)度和執(zhí)行各種過(guò)程等。該過(guò)程可前進(jìn)至完成框712, 并且退出或返回到調(diào)用程序,諸如過(guò)程600。圖8是示出執(zhí)行實(shí)際數(shù)據(jù)類(lèi)型的運(yùn)行時(shí)生成和確認(rèn)的示例過(guò)程800的流程圖過(guò)程 800或其變型可執(zhí)行圖7的框704的至少某些動(dòng)作。過(guò)程800的所示部分可在框802啟動(dòng), 在那里可檢索數(shù)據(jù)流的布局。數(shù)據(jù)流布局可指定構(gòu)成數(shù)據(jù)流以及其他信息的組件的順序。該過(guò)程可前進(jìn)至框804,在那里檢索對(duì)應(yīng)于當(dāng)前輸入源的實(shí)際數(shù)據(jù)類(lèi)型。例如,它們可被接收為圖3的元數(shù)據(jù)323的一部分。該過(guò)程可前進(jìn)至循環(huán)806,該循環(huán)按數(shù)據(jù)流的次序?yàn)閿?shù)據(jù)流的每一數(shù)據(jù)集成組件循環(huán)。循環(huán)806包括框808-812并由框814終止。每一迭代的數(shù)據(jù)集成組件被稱(chēng)為當(dāng)前組件。迭代的順序和當(dāng)前組件可基于在框802檢索的數(shù)據(jù)流布局。該過(guò)程可前進(jìn)至框808,在那里向當(dāng)前組件提供一個(gè)或多個(gè)輸入類(lèi)型。例如,如果當(dāng)前組件接收兩個(gè)數(shù)據(jù)列,則系統(tǒng)可向該組件提供每一數(shù)據(jù)列的實(shí)際數(shù)據(jù)類(lèi)型。該過(guò)程可前進(jìn)至框810,在那里當(dāng)前組件可基于其配置來(lái)確認(rèn)實(shí)際輸入數(shù)據(jù)類(lèi)型。如果組件不能正確地處理輸入數(shù)據(jù)類(lèi)型,則它可返回一無(wú)效狀態(tài)。盡管未示出,但在某些實(shí)現(xiàn)中,如果返回?zé)o效狀態(tài),則循環(huán)806可退出并且該過(guò)程可退出。該過(guò)程可前進(jìn)至框812,在那里可從當(dāng)前組件檢索一個(gè)或多個(gè)輸出數(shù)據(jù)類(lèi)型。當(dāng)前組件可確定基于輸入類(lèi)型的輸出類(lèi)型,并且返回這些輸出類(lèi)型。如此處討論的,輸出列的數(shù)量可與輸入列的數(shù)量不同。隨后可向后續(xù)組件提供所返回的輸出類(lèi)型作為循環(huán)806的后續(xù)迭代,該后續(xù)組件要接收這些輸出類(lèi)型一個(gè)或多個(gè)作為其輸入類(lèi)型。在一個(gè)實(shí)現(xiàn)中,數(shù)據(jù)流的每一數(shù)據(jù)集成組件可實(shí)現(xiàn)包括接收一個(gè)或多個(gè)輸入類(lèi)型并返回一個(gè)或多個(gè)輸出類(lèi)型以及確認(rèn)狀態(tài)的方法的接口。由此,在某些實(shí)現(xiàn)中,框808、810 和812的動(dòng)作可采用這一接口。在各種實(shí)現(xiàn)中,可使用其他接口或機(jī)制來(lái)執(zhí)行框808-812 的動(dòng)作,并且控制各數(shù)據(jù)集成組件與流水線(xiàn)執(zhí)行器320之中的交互。該過(guò)程可前進(jìn)至框814,并且基于系統(tǒng)配置、每一確認(rèn)的狀態(tài)或用戶(hù)的控制動(dòng)作可選擇地執(zhí)行循環(huán)806的另一迭代。循環(huán)806可對(duì)數(shù)據(jù)流的每一下游組件重復(fù)。在退出循環(huán) 806之后,該過(guò)程可前進(jìn)至完成框816,并且退出或返回到調(diào)用程序,諸如過(guò)程700。在運(yùn)行時(shí)確認(rèn)的示例中,變換組件可被配置成接收兩個(gè)輸入串列并且輸出串接的串列。串接的串列的長(zhǎng)度取決于輸入列的長(zhǎng)度。輸入串列的每一個(gè)可具有無(wú)指定長(zhǎng)度的串類(lèi)型的約束。從這一變換組件接收輸入的目的地組件可被指定為接收不長(zhǎng)于60個(gè)字符的串。由約束編譯器312的運(yùn)行時(shí)確認(rèn)可接收指示第一輸入串的實(shí)際長(zhǎng)度為40以及第二輸入串的實(shí)際長(zhǎng)度為15的元數(shù)據(jù)。變化組件可指示輸入類(lèi)型是有效的以及串的輸出列類(lèi)型的長(zhǎng)為55。對(duì)下游數(shù)據(jù)集成組件的后續(xù)查詢(xún)可指示輸入列具有長(zhǎng)度為55的串類(lèi)型。使用相同示例,使用相同約束的另一源輸入可提供指示第一輸入串列的長(zhǎng)度為40 以及第二輸入串列的長(zhǎng)度為30的元數(shù)據(jù)。變換組件可指示輸入列的組合是無(wú)效的,因?yàn)樗M合的長(zhǎng)度將超過(guò)其60的限制。用戶(hù)隨后可重新配置該系統(tǒng),或根據(jù)需要以其他方式執(zhí)行修改。由此,設(shè)計(jì)類(lèi)型規(guī)范的靈活性允許輸入源類(lèi)型的變型,盡管這可導(dǎo)致某些配置的運(yùn)行時(shí)無(wú)效性。圖9A-B示出約束規(guī)范與物理輸入源之間的映射900的示例。這些示出此處描述的映射與編譯機(jī)制。表904示出示例數(shù)據(jù)集成組件的約束規(guī)范。該規(guī)范可包括三個(gè)列引用“輸入1”、 “輸入2”以及“輸入3”,它們具有的相應(yīng)數(shù)據(jù)類(lèi)型約束為整數(shù)、串、以及串>=100。表902 示出輸入數(shù)據(jù)源的三列的實(shí)際數(shù)據(jù)類(lèi)型?!癐D”、“名稱(chēng)”以及“描述”三列分別映射到數(shù)據(jù)集成組件的列引用“輸入1”、“輸入2”以及“輸入3”。箭頭930示出示例映射。輸入列的數(shù)據(jù)類(lèi)型相對(duì)于數(shù)據(jù)集成組件的約束是有效的。表906示出輸入數(shù)據(jù)源的所修改的實(shí)際數(shù)據(jù)類(lèi)型。修改可由于輸入數(shù)據(jù)源的改變、將不同的數(shù)據(jù)源用作輸入數(shù)據(jù)源、數(shù)據(jù)流的中間改變、或環(huán)境中的另一改變。與表902 相比,表906包括插入在被稱(chēng)為“描述”的列之前的第三位置且被稱(chēng)為“分類(lèi)”的附加列。表908示出與表904相同的約束規(guī)范。箭頭932示出表908的列引用與表906的列引用之間的映射。如圖所示,如表902與表904之間的原始映射那樣,列“輸入3 ”繼續(xù)被映射到列“描述”。如此處討論的,諸如列名稱(chēng)的使用、內(nèi)部映射或來(lái)自用戶(hù)的規(guī)范等穩(wěn)健的映射機(jī)制可使得系統(tǒng)能夠在輸入數(shù)據(jù)源的列改變之后維護(hù)正確的列映射。
表910示出輸入數(shù)據(jù)中另一改變。與表902的輸入數(shù)據(jù)相比,表910的輸入數(shù)據(jù)包括與表906相似的附加列,即“分類(lèi)”。箭頭934示出按與箭頭932所示的相似方式來(lái)保留原始映射。表910還示出列“名稱(chēng)”的實(shí)際類(lèi)型中的改變。在表910中,數(shù)據(jù)類(lèi)型是 VarChaH40),它指示長(zhǎng)度為40。在表902中,“名稱(chēng)”的數(shù)據(jù)類(lèi)型是VarChar (30)。由此, 這一字段的大小增加了。如表912所示,數(shù)據(jù)集成組件的對(duì)應(yīng)列的約束是“任何串”,該“任何串”可適應(yīng)列VarChar(30)。如圖所示,約束的使用由此允許輸入數(shù)據(jù)類(lèi)型的至少某些改變。圖9B示出映射機(jī)制的另一示例。如表916所示,數(shù)據(jù)集成組件包括列引用“輸入 1”、“輸入2”以及“輸入3”,它們具有相應(yīng)的數(shù)據(jù)類(lèi)型約束即整數(shù)、串以及串>=100。列引用“輸入4”具有默認(rèn)值為空的“任何日期”的對(duì)應(yīng)約束。另一列引用“輸入5”具有的對(duì)應(yīng)約束為“*”。在一個(gè)實(shí)施方式中,約束可指定列是可任選的,并且由此可從輸入源中省略。約束可指定列被省略的配置中使用的默認(rèn)值。表916的“輸入4”的約束提供了這樣的規(guī)范的一個(gè)示例,盡管各種實(shí)現(xiàn)可使用指定默認(rèn)列或默認(rèn)值的其他格式或方式。在一個(gè)實(shí)施方式中,數(shù)據(jù)集成組件可提供用于添加此處被稱(chēng)為原型的一個(gè)或多個(gè)新的列的機(jī)制。在一個(gè)實(shí)現(xiàn)中,一個(gè)或多個(gè)原型列由星號(hào)來(lái)指定,盡管具體機(jī)制可不同。當(dāng)確認(rèn)實(shí)際數(shù)據(jù)類(lèi)型時(shí)以及當(dāng)編譯數(shù)據(jù)流時(shí),實(shí)際列集可與原型列相對(duì)應(yīng),并插入實(shí)際類(lèi)型。 如箭頭936所示,在圖9B的示例中,原型列“輸入5”被映射到列“分類(lèi)”和“證明”。表916示出基于輸入數(shù)據(jù)源的數(shù)據(jù)類(lèi)型來(lái)生成、作為對(duì)表914的約束進(jìn)行編譯的結(jié)果的實(shí)際列類(lèi)型的示例。在一個(gè)實(shí)現(xiàn)中,編譯可由圖3的約束編譯器312來(lái)執(zhí)行或控制。如圖所示,表914的每一列的約束具有帶有表916中的實(shí)際數(shù)據(jù)類(lèi)型的一個(gè)或多個(gè)列。列“輸入1”具有實(shí)際數(shù)據(jù)類(lèi)型為長(zhǎng)度(Long);列“輸入2”具有的實(shí)際數(shù)據(jù)類(lèi)型為 VarChar (40);列“輸入3”具有的實(shí)際數(shù)據(jù)類(lèi)型為WVarChar (120)。這些數(shù)據(jù)類(lèi)型的每一個(gè)與來(lái)自表912中所示的輸入源的對(duì)應(yīng)數(shù)據(jù)類(lèi)型相匹配。所指定的實(shí)際列“輸入4”具有的實(shí)際類(lèi)型為值為空的日期時(shí)間,如表914的約束所指定的。由于輸入數(shù)據(jù)源省略了對(duì)應(yīng)的列,因此可以提供這個(gè)值。在輸入數(shù)據(jù)源具有對(duì)應(yīng)的列的環(huán)境中,該列的值將作為輸入來(lái)接收。原型列的約束“輸入5”被變換成兩個(gè)列規(guī)范,以便匹配對(duì)應(yīng)的數(shù)據(jù)列。由此,“輸入5a”接收實(shí)際類(lèi)型VarChaH20),該實(shí)際類(lèi)型VarChaH20)從表912的列“分類(lèi)”中接收; “輸入5b”接收實(shí)際類(lèi)型Char (80),該實(shí)際類(lèi)型Char(SO)從列“證明”中接收。注意,基于不同輸入源的所編譯的實(shí)際類(lèi)型集合可有相當(dāng)大的變化。如圖3所示以及此處所討論的,可使用所編譯的列類(lèi)型來(lái)生成執(zhí)行計(jì)劃,并且按有效方式執(zhí)行每一流水線(xiàn)。圖10是示出計(jì)算設(shè)備1000的一個(gè)實(shí)施方式的框圖,示出可用于實(shí)現(xiàn)系統(tǒng)300或執(zhí)行此處所描述的功能(包括過(guò)程400、500、600、700或800)的計(jì)算設(shè)備的所選組件。計(jì)算設(shè)備1000可包括比所示多得多的組件,或可包括比所示全部組件要少的組件。計(jì)算設(shè)備 1000可以是獨(dú)立計(jì)算設(shè)備或諸如具有一個(gè)或多個(gè)刀片的機(jī)箱中的某一刀片之類(lèi)的集成系統(tǒng)的一部分。如所示,計(jì)算設(shè)備1000包括一個(gè)或多個(gè)處理器1002,處理器執(zhí)行動(dòng)作以執(zhí)行各種計(jì)算機(jī)程序的指令。在一個(gè)配置中,每個(gè)處理器1002可包括一個(gè)或多個(gè)中央處理單元、一個(gè)或多個(gè)處理器核、一個(gè)或多個(gè)ASIC、高速緩存存儲(chǔ)器或其他硬件處理組件和相關(guān)程序邏輯。如所示,計(jì)算設(shè)備1000包括操作系統(tǒng)1004。操作系統(tǒng)1004可以是通用或?qū)S貌僮飨到y(tǒng)。華盛頓州雷蒙德市的微軟公司的Windows 系列操作系統(tǒng)是可在計(jì)算設(shè)備1000上執(zhí)行的操作系統(tǒng)的示例。存儲(chǔ)器和存儲(chǔ)1006可包括各種類(lèi)型的非瞬態(tài)計(jì)算機(jī)存儲(chǔ)介質(zhì)中的一個(gè)或多個(gè), 包括易失性或非易失性存儲(chǔ)器、RAM、ROM、固態(tài)存儲(chǔ)器、盤(pán)驅(qū)動(dòng)器、光學(xué)存儲(chǔ)、或可用于存儲(chǔ)數(shù)字信息的任何其他介質(zhì)。存儲(chǔ)器和存儲(chǔ)1006可存儲(chǔ)此處所述的一個(gè)或多個(gè)組件或其他組件。在一個(gè)實(shí)施方式中,存儲(chǔ)器和存儲(chǔ)1006存儲(chǔ)系統(tǒng)300的軟件組件或其一部分。存儲(chǔ)器和存儲(chǔ)1006可存儲(chǔ)輸入源322、元數(shù)據(jù)323或它們的一部分。這些組件中的任何一個(gè)或多個(gè)可通過(guò)操作系統(tǒng)1004或其他組件被移動(dòng)到RAM、非易失性存儲(chǔ)器中的不同位置,或在RAM和非易失性存儲(chǔ)器之間移動(dòng)。計(jì)算設(shè)備1000可包括便于將程序代碼或其他信息顯示給用戶(hù)的視頻顯示適配器 1012。盡管在圖10中未示出,但是計(jì)算設(shè)備1000可包括基本輸入/輸出系統(tǒng)(BIOS),以及相關(guān)聯(lián)的組件。計(jì)算設(shè)備1000還可包括用于與網(wǎng)絡(luò)通信的網(wǎng)絡(luò)接口單元1010。系統(tǒng)200 或300的軟件組件可經(jīng)瞬態(tài)介質(zhì)和網(wǎng)絡(luò)接口單元1010被接收。計(jì)算設(shè)備1000可包括一個(gè)或多個(gè)顯示監(jiān)視器1014。計(jì)算設(shè)備1000的實(shí)施方式可包括一個(gè)或多個(gè)輸入設(shè)備1016,諸如鍵盤(pán)、定點(diǎn)設(shè)備、音頻組件、話(huà)筒、語(yǔ)音識(shí)別組件、或其他輸入/輸出機(jī)制。將理解圖4-8的流程圖的每個(gè)框以及流程圖中的框的組合可由軟件指令來(lái)實(shí)現(xiàn)。 這些程序指令可被提供給處理器以生成機(jī)器,使得在處理器上執(zhí)行的指令創(chuàng)建用于實(shí)現(xiàn)某一流程框或多個(gè)框中指定的動(dòng)作的手段。這些軟件指令可由處理器執(zhí)行來(lái)提供用于實(shí)現(xiàn)某一流程框或多個(gè)框中指定的動(dòng)作的步驟。此外,流程圖中的一個(gè)或多個(gè)框或框的組合也可與其他框或框的組合同時(shí)執(zhí)行,或甚至以與所示不同的順序執(zhí)行,而不背離本發(fā)明的范圍和精神。以上說(shuō)明、示例和數(shù)據(jù)提供了對(duì)本發(fā)明的組成部分的制造和使用的全面描述。因?yàn)榭梢栽诓槐畴x本發(fā)明的精神和范圍的情況下做出本發(fā)明的許多實(shí)施方式,所以本發(fā)明落在所附權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種將來(lái)自輸入源的輸入數(shù)據(jù)列的輸入集合變換成輸出數(shù)據(jù)列的輸出集合的基于計(jì)算機(jī)的方法,所述方法包括a)接收包括對(duì)應(yīng)于所述輸入集合的一個(gè)或多個(gè)約束的方案合約;b)接收描述所述輸入數(shù)據(jù)列的集合的元數(shù)據(jù),所述元數(shù)據(jù)包括對(duì)應(yīng)于每一輸入數(shù)據(jù)列的類(lèi)型定義;c)接收標(biāo)識(shí)所述輸入集合的一個(gè)或多個(gè)數(shù)據(jù)流的數(shù)據(jù)流配置數(shù)據(jù);d)執(zhí)行由所述數(shù)據(jù)流配置數(shù)據(jù)指定的每一數(shù)據(jù)流;以及e)在接收每一數(shù)據(jù)流的數(shù)據(jù)之前,基于所述元數(shù)據(jù)和所述約束集合來(lái)生成列類(lèi)型集, 每一列類(lèi)型對(duì)應(yīng)于與所述數(shù)據(jù)流相關(guān)聯(lián)的各輸入數(shù)據(jù)列。
2.如權(quán)利要求1所述的基于計(jì)算機(jī)的方法,其特征在于,所述方案合約包括描述所述輸入數(shù)據(jù)列的一個(gè)或多個(gè)列與所述方案合約的相關(guān)聯(lián)的約束之間的映射的數(shù)據(jù),所述方法還包括采用所述映射將所述輸入數(shù)據(jù)列的每一個(gè)與數(shù)據(jù)集成組件的輸入規(guī)范相匹配。
3.如權(quán)利要求1所述的基于計(jì)算機(jī)的方法,其特征在于,還包括采用接口以基于輸入列類(lèi)型定義來(lái)向一個(gè)或多個(gè)數(shù)據(jù)集成組件查詢(xún)輸出列類(lèi)型。
4.如權(quán)利要求1所述的基于計(jì)算機(jī)的方法,其特征在于,還包括采用接口以基于輸入列類(lèi)型定義來(lái)執(zhí)行對(duì)一個(gè)或多個(gè)數(shù)據(jù)集成組件的一個(gè)或多個(gè)查詢(xún)以尋找輸出列類(lèi)型定義; 以及基于所述一個(gè)或多個(gè)查詢(xún)來(lái)確定所述方案合約是否有效。
5.如權(quán)利要求1所述的基于計(jì)算機(jī)的方法,其特征在于,還包括基于所述列類(lèi)型的集合來(lái)分配一個(gè)或多個(gè)存儲(chǔ)器塊;接收來(lái)自所述輸入源的數(shù)據(jù);以及將來(lái)自所述輸入源的數(shù)據(jù)存儲(chǔ)在所述一個(gè)或多個(gè)存儲(chǔ)器塊中。
6.如權(quán)利要求1所述的基于計(jì)算機(jī)的方法,其特征在于,還包括a)接收來(lái)自另一輸入源的輸入數(shù)據(jù)列的另一集合;b)接收描述數(shù)據(jù)列的另一集合的其他元數(shù)據(jù),所述其他元數(shù)據(jù)包括不同于與所述輸入數(shù)據(jù)列的集合相關(guān)聯(lián)的對(duì)應(yīng)列類(lèi)型定義的一個(gè)或多個(gè)列類(lèi)型定義;c)基于所述方案合約來(lái)生成對(duì)應(yīng)于所述其他輸入源的列類(lèi)型的另一集合。
7.如權(quán)利要求1所述的基于計(jì)算機(jī)的方法,其特征在于,所述方案合約包括可任選列的規(guī)范以及對(duì)應(yīng)于所述可任選列的默認(rèn)值,所述方法還包括如果所述可任選列從所述數(shù)據(jù)列的輸入集合被省略,則生成具有對(duì)應(yīng)于所述默認(rèn)值的數(shù)據(jù)的列。
8.如權(quán)利要求1所述的基于計(jì)算機(jī)的方法,其特征在于,所述方案合約包括表示可變數(shù)量的列的原型列的規(guī)范,所述方法還包括a)確定對(duì)應(yīng)于所述原型列的數(shù)據(jù)列的輸入集合的一個(gè)或多個(gè)列;b)在所述一個(gè)或多個(gè)所確定的列中確定多個(gè)列;以及c)提供所確定的一個(gè)或多個(gè)列作為對(duì)數(shù)據(jù)集成組件的輸入。
9.如權(quán)利要求1所述的基于計(jì)算機(jī)的方法,其特征在于,還包括a)執(zhí)行對(duì)所述方案合約的一個(gè)或多個(gè)約束的設(shè)計(jì)確認(rèn);以及b)在每一數(shù)據(jù)流的執(zhí)行之前,執(zhí)行對(duì)應(yīng)于每一輸入數(shù)據(jù)列的所述類(lèi)型定義的運(yùn)行時(shí)確認(rèn)。
10.一種用于便于將輸入數(shù)據(jù)變換成輸出數(shù)據(jù)的基于計(jì)算機(jī)的系統(tǒng),所述系統(tǒng)包括a) 一個(gè)或多個(gè)數(shù)據(jù)集成組件,每一數(shù)據(jù)集成組件被配置成接收輸入數(shù)據(jù)列并且基于所述輸入數(shù)據(jù)列來(lái)生成輸出數(shù)據(jù)列;b)方案處理器,被配置成接收包括一個(gè)或多個(gè)約束和列映射數(shù)據(jù),并且確認(rèn)所述方案合約;c)約束編譯器,被配置成接收所述一個(gè)或多個(gè)約束,接收描述來(lái)自輸入源的數(shù)據(jù)列的元數(shù)據(jù),并且生成實(shí)際列類(lèi)型集合,以供所述一個(gè)或多個(gè)數(shù)據(jù)集成組件使用來(lái)變換所述輸入數(shù)據(jù)列;系統(tǒng)被配置成采用所述方案合約,以供變換輸入數(shù)據(jù)的第一集合以及變換輸入數(shù)據(jù)的第二集合,所述輸入數(shù)據(jù)的第一集合以及所述輸入數(shù)據(jù)的第二集合各自具有與輸入列類(lèi)型規(guī)范的其他集合不同的相應(yīng)的輸入列類(lèi)型規(guī)范集合。
11.如權(quán)利要求10所述的基于計(jì)算機(jī)的系統(tǒng),其特征在于,所述輸入數(shù)據(jù)的第一集合具有第一數(shù)量的數(shù)據(jù)列,所述輸入數(shù)據(jù)的第二集合具有不同于所述第一數(shù)量的數(shù)據(jù)列的第二數(shù)量的數(shù)據(jù)列。
12.如權(quán)利要求10所述的基于計(jì)算機(jī)的系統(tǒng),其特征在于,所述約束編譯器被配置成采用所述列映射數(shù)據(jù)將所述輸入數(shù)據(jù)列與所述實(shí)際列類(lèi)型的集合相匹配。
13.如權(quán)利要求10所述的基于計(jì)算機(jī)的系統(tǒng),其特征在于,所述約束編譯器包括用于確認(rèn)所述方案合約的裝置。
14.如權(quán)利要求10所述的基于計(jì)算機(jī)的系統(tǒng),其特征在于,所述約束編譯器被配置成通過(guò)查詢(xún)所述數(shù)據(jù)集成組件來(lái)確認(rèn)所述方案合約。
15.—種包括用于便于將輸入數(shù)據(jù)變換成輸出數(shù)據(jù)的計(jì)算機(jī)程序指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述程序指令可由一個(gè)或多個(gè)處理器執(zhí)行以執(zhí)行包括以下動(dòng)作a)接收一個(gè)或多個(gè)列約束集合;b)接收描述來(lái)自輸入源的輸入列集合的元數(shù)據(jù);c)基于所述列約束來(lái)確認(rèn)所述元數(shù)據(jù);d)基于所述列約束將所述元數(shù)據(jù)轉(zhuǎn)換成實(shí)際列類(lèi)型集合;以及e)向一個(gè)或多個(gè)數(shù)據(jù)集成組件提供所述實(shí)際列類(lèi)型以便于變換從所述輸入源接收的數(shù)據(jù)。
16.如權(quán)利要求15所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,還包括接收列映射數(shù)據(jù); 將元數(shù)據(jù)轉(zhuǎn)換成實(shí)際列類(lèi)型集合,包括基于所述列映射數(shù)據(jù)將所述輸入列集合中的每一個(gè)映射到對(duì)應(yīng)的實(shí)際列類(lèi)型。
17.如權(quán)利要求15所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,還包括使得所述一個(gè)或多個(gè)數(shù)據(jù)集成組件能夠變換從另一數(shù)據(jù)源接收的其他數(shù)據(jù),所述其他數(shù)據(jù)具有在類(lèi)型上不同于所述輸入列集合的另一輸入列集合。
18.如權(quán)利要求15所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,還包括基于所述元數(shù)據(jù)來(lái)確定第一數(shù)據(jù)集成組件的輸出數(shù)據(jù)類(lèi)型,以及基于所述輸出數(shù)據(jù)類(lèi)型和第二數(shù)據(jù)集成組件的輸入數(shù)據(jù)類(lèi)型來(lái)確定所述元數(shù)據(jù)和所述約束集合的有效性。
全文摘要
本發(fā)明公開(kāi)了數(shù)據(jù)集成的方案合約。一種用于從輸入源提取數(shù)據(jù)、變換該數(shù)據(jù)并且將所變換的數(shù)據(jù)加載到輸出目的地的系統(tǒng)和方法。使用包括約束的方案合約來(lái)確認(rèn)輸入數(shù)據(jù)列類(lèi)型集合,并且將它們轉(zhuǎn)換成實(shí)際類(lèi)型集合。映射該方案合約中的數(shù)據(jù)允許將輸入數(shù)據(jù)列映射到數(shù)據(jù)集成組件所使用的數(shù)據(jù)列。該約束和映射數(shù)據(jù)在變換具有不同的輸入數(shù)據(jù)列類(lèi)型集合的數(shù)據(jù)集合中提供靈活性,同時(shí)提供類(lèi)型的固定集合以供在數(shù)據(jù)流執(zhí)行期間使用。靈活性可允許可任選列、一個(gè)或多個(gè)列集合、列的不同安排、以及每一列的類(lèi)型定義的變化。
文檔編號(hào)G06F17/30GK102298607SQ20111016009
公開(kāi)日2011年12月28日 申請(qǐng)日期2011年5月27日 優(yōu)先權(quán)日2010年5月27日
發(fā)明者D·諾爾, M·卡羅爾 申請(qǐng)人:微軟公司