專利名稱:用于數(shù)據(jù)庫的事務(wù)一致變化的跟蹤的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)據(jù)庫系統(tǒng)領(lǐng)域。本發(fā)明尤其涉及數(shù)據(jù)庫系統(tǒng)中的復(fù)制。
背景技術(shù):
數(shù)據(jù)庫復(fù)制是一個處理過程,通過它存于一個位置上(源位置)的數(shù)據(jù)表中的數(shù)據(jù)可以應(yīng)用在其它位置上(目的位置)。尤其是,它是保持存于表中的目的數(shù)據(jù)的處理過程,隨著時間源表出現(xiàn)變化時,與包含在源表中的源數(shù)據(jù)同步。
事務(wù)型數(shù)據(jù)庫是支持被稱作事務(wù)的工作邏輯單元中的數(shù)據(jù)變化的數(shù)據(jù)庫。一個事務(wù)通過一個被稱為提交的機(jī)制持續(xù)變化。提交前,對于事務(wù)型數(shù)據(jù)庫的其他用戶而言數(shù)據(jù)變化是不可見的。相反,通過一個被稱為反轉(zhuǎn)的機(jī)制,一個事務(wù)可以移動正在進(jìn)行的提交之前將被完成的變化。一個事務(wù)型數(shù)據(jù)庫上可見的所有數(shù)據(jù)表示在那個時間點(diǎn)存在的邏輯提交數(shù)據(jù)狀態(tài)。
事務(wù)中的數(shù)據(jù)變化可能影響多個表,表組中這些事務(wù)的一致性是事務(wù)型數(shù)據(jù)庫的一個重要的特征。也就是說,通過事務(wù)的使用,有可能調(diào)整一個橫跨多個數(shù)據(jù)庫表的狀態(tài)變化,這樣在用戶看來全部表是同時更新的。數(shù)據(jù)庫應(yīng)用經(jīng)常依賴于它們訪問的底層數(shù)據(jù)庫表的事務(wù)一致性。
事務(wù)復(fù)制是一種復(fù)制的形式,其當(dāng)保留源系統(tǒng)的事務(wù)狀態(tài)時從源到目的地移動該數(shù)據(jù)變化以致于目的數(shù)據(jù)總是表示該源數(shù)據(jù)的明顯提交的狀態(tài)。事務(wù)復(fù)制確保目的表持續(xù)反映該復(fù)制源表的事務(wù)一致性。這可與非事務(wù)復(fù)制系統(tǒng)形成對比,該非事務(wù)的復(fù)制系統(tǒng)將該變化從源移動至目的地并且以一種不保證目的表的狀態(tài)與來自該源表中數(shù)據(jù)的一特定事務(wù)狀態(tài)相匹配的方法提交它們。
復(fù)制的實(shí)施需要一個用于使該源表的數(shù)據(jù)狀態(tài)和目的表同步的有效算法。以最簡形式,每當(dāng)數(shù)據(jù)庫之間的狀態(tài)被同步時可以執(zhí)行事務(wù)復(fù)制以從源到目的地移動復(fù)制數(shù)據(jù)的全部組。有效的事務(wù)復(fù)制的執(zhí)行經(jīng)常從初始狀態(tài)的完全同步開始并且跟蹤增加的源數(shù)據(jù)庫的數(shù)據(jù)變化,在后來的同步期間僅將增加的更新數(shù)據(jù)傳送到目的數(shù)據(jù)庫中。
用于跟蹤數(shù)據(jù)庫復(fù)制的數(shù)據(jù)變化的算法分成兩個基本類型基于記錄的和基于觸發(fā)的?;谟涗浀乃惴ㄊ钱?dāng)源數(shù)據(jù)庫發(fā)生變化時通過讀取源數(shù)據(jù)庫事務(wù)記錄跟蹤該源數(shù)據(jù)庫的變化。此數(shù)據(jù)庫事務(wù)記錄包含所有發(fā)生在該數(shù)據(jù)庫中的變化以致于它們可以通過該提交時間進(jìn)行處理過程。用于執(zhí)行復(fù)制變化跟蹤的基于該數(shù)據(jù)庫記錄讀取的算法是有效率的,并且提供一種自然的方法來監(jiān)控該源數(shù)據(jù)庫的狀態(tài)變化。
基于觸發(fā)的算法提供一種可替換的技術(shù)用于在數(shù)據(jù)庫復(fù)制期間跟蹤源數(shù)據(jù)庫狀態(tài)變化。數(shù)據(jù)庫觸發(fā)是一段可根據(jù)數(shù)據(jù)庫內(nèi)發(fā)生的特定事件執(zhí)行軟件代碼。商業(yè)數(shù)據(jù)庫經(jīng)常為插入、更新和刪除表數(shù)據(jù)而提供觸發(fā)事件。用于變化跟蹤的復(fù)制觸發(fā)以一種方法進(jìn)行構(gòu)造,該方法在每一復(fù)制表上的插入、更新或刪除會引發(fā)執(zhí)行依次存儲有關(guān)已發(fā)生變化的信息的觸發(fā)代碼。后來使用這一存儲信息來確定為使其狀態(tài)反映源表狀態(tài)而必須用于目的表的變化。
當(dāng)基于觸發(fā)的算法沒有基于記錄的算法有效率時,在變化跟蹤中利用觸發(fā)的技術(shù)在整個數(shù)據(jù)庫產(chǎn)品中可以比從數(shù)據(jù)庫記錄中提取變化的能力更廣泛地使用到。而且,以比記錄讀取能力更一致的方式在整個數(shù)據(jù)庫產(chǎn)品中實(shí)現(xiàn)觸發(fā)。當(dāng)橫跨多數(shù)據(jù)庫平臺提供復(fù)制時使用跟蹤復(fù)制變化的觸發(fā)可以提供執(zhí)行中的一致性。為復(fù)制變化跟蹤而使用觸發(fā)的一個傳統(tǒng)缺點(diǎn)是對于基于觸發(fā)的解決方案很難維持必要的事務(wù)特性來支持事務(wù)復(fù)制。本發(fā)明克服現(xiàn)有技術(shù)的局限和缺點(diǎn),描述了一種基于觸發(fā)的用于在執(zhí)行一個事務(wù)復(fù)制解決方案時跟蹤變化的方法和系統(tǒng)。
發(fā)明概述本發(fā)明是針對用于保持在事務(wù)復(fù)制期間該源數(shù)據(jù)和目的數(shù)據(jù)一致性的變化跟蹤系統(tǒng)和方法。根據(jù)本發(fā)明的一個功能特性為它是一個事務(wù)型數(shù)據(jù)庫復(fù)制技術(shù)。另一個特性是該技術(shù)支持一個源系統(tǒng)事務(wù)狀態(tài)的增量跟蹤。該技術(shù)進(jìn)一步特性是滿足前述特性時利用觸發(fā)來跟蹤變化。
本發(fā)明另一特點(diǎn)和優(yōu)點(diǎn)將通過以下參照附圖進(jìn)行的說明性實(shí)施例的詳細(xì)描述變得顯而易見。
附圖簡要說明上文的概述,和下列優(yōu)選實(shí)施例的詳細(xì)說明在結(jié)合附圖閱讀時可以更好理解。為了說明本發(fā)明,圖中顯示了本發(fā)明的示范性結(jié)構(gòu);然而,本發(fā)明并不局限于所揭露的這些特定方法和手段。圖中
圖1是表示一示范性計算環(huán)境的方框圖,在該環(huán)境中可實(shí)現(xiàn)本發(fā)明的一些方面;圖2說明圖3-5一個示范性處理過程的流程圖;圖3是根據(jù)本發(fā)明變化檢測的一個示范性處理過程的流程圖;圖4是根據(jù)本發(fā)明把所檢測的變化分成一致組的一個示范性處理過程的流程圖;圖5是根據(jù)本發(fā)明將與一致組有關(guān)的變化應(yīng)用于一目的數(shù)據(jù)庫的一個示范性處理過程的流程圖;圖6是一個根據(jù)本發(fā)明表明各種示范性按需要使用的表的示意圖。
優(yōu)選實(shí)施例的詳細(xì)說明概述本發(fā)明提供一種有效的基于觸發(fā)的機(jī)制,用于跟蹤發(fā)生在一個源數(shù)據(jù)庫上的變化并且以一種事務(wù)一致的方式將結(jié)果的變化聲明應(yīng)用到一組目的表中。為更好地解釋隨后的實(shí)施例,提供以下定義定義與一群數(shù)據(jù)庫表有關(guān)的一組變化,相對于那些表而言,如果,對于組中的任何變化,所有其它與那些表有關(guān)的變化以及作為特定變化在相同事務(wù)中提交的,也在該組中,稱為事務(wù)一致。
變化跟蹤觸發(fā)是一個應(yīng)用于在將插入、更新或刪除操作應(yīng)用于源表時而激活源表的觸發(fā)。該觸發(fā)用于捕獲有關(guān)為將變化應(yīng)用于目的表所需的變化的信息。
變化跟蹤表是一個用于存儲當(dāng)一變化跟蹤觸發(fā)激活時收集的變化數(shù)據(jù)的摘要描述的表。
一致組表是用于將變化跟蹤表中的變化分成事務(wù)一致的組的表。
變化聲明是一種數(shù)據(jù)庫修改聲明,優(yōu)選結(jié)構(gòu)化查詢語言(SQL),針對一個目的數(shù)據(jù)庫可被執(zhí)行以將一源數(shù)據(jù)庫的變化應(yīng)用到目的數(shù)據(jù)庫中。
示范性計算環(huán)境圖1說明一個適當(dāng)?shù)挠嬎阆到y(tǒng)環(huán)境100的例子,在該計算系統(tǒng)環(huán)境中本發(fā)明可被實(shí)現(xiàn)。該計算系統(tǒng)環(huán)境100僅是一個適當(dāng)?shù)挠嬎悱h(huán)境的例子,無意對本發(fā)明的使用范圍或功能性提出任何限制。該計算環(huán)境100也不應(yīng)被解釋為具有任何與在該示范性操作環(huán)境100中說明的組件中任意一個或組合有關(guān)的的從屬性或必要條件。
本發(fā)明對于具有許多其它一般目的的或特殊目的的計算系統(tǒng)環(huán)境或結(jié)構(gòu)是可操作的??蛇m用于本發(fā)明的周知的計算系統(tǒng)、環(huán)境和/或結(jié)構(gòu)的例子包括,但不局限于,個人電腦、服務(wù)器計算機(jī)、手提式或膝上型電腦設(shè)備、多處理機(jī)系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程用戶電子設(shè)備、網(wǎng)絡(luò)PC、小型計算機(jī)、大型計算機(jī),包括任何上述系統(tǒng)或設(shè)備的分布式計算環(huán)境等。
本發(fā)明可在一般的計算機(jī)可執(zhí)行指令環(huán)境,諸如由一個計算機(jī)執(zhí)行的程序模塊,中進(jìn)行描述。通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。本發(fā)明也可在分布式計算環(huán)境中實(shí)現(xiàn),在該環(huán)境中由通過一通信網(wǎng)絡(luò)或其它數(shù)據(jù)傳輸媒體被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在一分布式計算環(huán)境中,程序模塊及其它數(shù)據(jù)放置在本地機(jī)和遠(yuǎn)程計算機(jī)存儲介質(zhì)中,包括存儲器存儲設(shè)備。
參照圖1,用于實(shí)現(xiàn)本發(fā)明的示范性系統(tǒng)包括以計算機(jī)110的形式表示的一個通用計算設(shè)備。計算機(jī)110的的組件可包括,但不局限于,一個處理單元120,一個系統(tǒng)存儲器130和一將包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件連接到該處理過程單元120上的系統(tǒng)總線121,。該系統(tǒng)總線121可以是幾種總線結(jié)構(gòu)類型中的任何一種,該包括存儲器總線或存儲控制器、外圍總線和使用各種總線體系結(jié)構(gòu)中的任何一種的局部總線。舉例來說,并非限定,這種體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MCA)總線,增強(qiáng)型工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(EISA)總線,視頻電子標(biāo)準(zhǔn)協(xié)會(VESA)局部總線和外設(shè)部件互連(PCT)總線(亦稱附加板總線)。
計算機(jī)110一般包括多種計算機(jī)可讀介質(zhì)。計算機(jī)可讀介質(zhì)可以是任何可用的計算機(jī)110可訪問的介質(zhì),包括易失性和非易失性介質(zhì),可移動和不可移動介質(zhì)。舉例來說,并非限定,計算機(jī)可讀介質(zhì)可以包括計算機(jī)存儲介質(zhì)和通信介質(zhì)。計算機(jī)存儲介質(zhì)包括易失性和非易失性,可移動和不可移動介質(zhì),其可以任何方法或技術(shù)實(shí)現(xiàn),用于存儲諸如計算機(jī)可讀指令,數(shù)據(jù)結(jié)構(gòu),程序模塊或其它數(shù)據(jù)的信息。計算機(jī)存儲介質(zhì)包括,但不局限于,RAM、ROM、電可擦除只讀存儲器(EEPROM)、閃速存儲器(flash memory)或其它存儲技術(shù),CD-ROM,數(shù)字光碟盤(DVD)或其它光盤存儲器、磁帶盒、磁帶、磁盤存儲器或其它的磁存儲器設(shè)備或任何其它可用于存儲所希望的信息和可以通過計算機(jī)110訪問的介質(zhì)。通信介質(zhì)一般包含計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或在一個諸如載波或其它傳送機(jī)構(gòu)的已調(diào)數(shù)據(jù)信號中的其它的數(shù)據(jù)并且包括任何信息傳送介質(zhì)。術(shù)語″已調(diào)數(shù)據(jù)信號″指的是具有一個或多個以信號中編碼信息的方式固定或改變的特征的信號。舉例來說,并非限定,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接有線連接的有線介質(zhì)和無線介質(zhì)諸如聲波,射頻,紅外線及其它的無線介質(zhì)。上述任何組合也應(yīng)包括在計算機(jī)可讀介質(zhì)的范圍內(nèi)。
該系統(tǒng)存儲器130包括易失性和/或非易失性存儲器諸如ROM131和RAM132形式的計算機(jī)存儲介質(zhì)。一個基本輸入/輸出系統(tǒng)133(BIOS)一般存儲在ROM131中,該基本輸入/輸出系統(tǒng)133包含基本的諸如在啟動時助于轉(zhuǎn)移計算機(jī)110內(nèi)各部件之間信息的例程。RAM132一般包含可由處理單元120立即訪問的和/或由該處理單元馬上處理操作的數(shù)據(jù)和/或程序模塊。舉例來說,并非限定,圖1說明操作系統(tǒng)134、應(yīng)用程序135、其它程序模塊136和程序數(shù)據(jù)137。
計算機(jī)110也可以包括其它可移動/不可移動,易失性/非易失性計算機(jī)存儲介質(zhì)。僅舉例說,圖1說明一個從不可移動,非易失性磁介質(zhì)中讀取或?qū)懭朐摻橘|(zhì)的硬盤驅(qū)動器140,可移動,易失性一個從一個可移動,非易失性磁盤152中讀取或?qū)懭朐摯疟P的磁盤驅(qū)動器151可移動易失性,以及一個從一個可移動,非易失性光盤156,諸如一個CD-ROM或其它的光學(xué)介質(zhì)中讀取或?qū)懭朐摴獗P的光盤驅(qū)動器155可移動易失性。其它的可被用于該示范性操作環(huán)境中的可移動/不可移動,易失性/非易失性計算機(jī)存儲介質(zhì)包括,但不局限于,盒式磁帶、快擦寫存儲卡、數(shù)字光碟盤、數(shù)字視頻磁帶、固態(tài)RAM、固態(tài)ROM等。該硬盤驅(qū)動器141一般通過一個不可移動存儲器接口比如接口140連接到該系統(tǒng)總線121上,并且磁盤驅(qū)動器151和光盤驅(qū)動器155一般通過一個可移動存儲接口比如接口150連接到該系統(tǒng)總線121上。
上述在圖1中討論和說明的,各驅(qū)動器和它們相關(guān)的計算機(jī)存儲介質(zhì),提供用于計算機(jī)110的計算機(jī)可讀指令,數(shù)據(jù)結(jié)構(gòu),程序模塊及其它的數(shù)據(jù)的存儲。圖1中,例如,硬盤驅(qū)動器141示例地存儲操作系統(tǒng)144、應(yīng)用程序145、其它程序模塊146和程序數(shù)據(jù)147。注意這些組件可與操作系統(tǒng)134,應(yīng)用程序135,其它程序模塊136和程序數(shù)據(jù)137相同于或不同。操作系統(tǒng)144、應(yīng)用程序145、其它的程序模塊146和程序數(shù)據(jù)147在這里以不同的標(biāo)號來說明,至少,它們是不同的復(fù)制。一個用戶可以通過輸入設(shè)備諸如一個鍵盤162和指示設(shè)備161,通常被認(rèn)為是一個鼠標(biāo),跟蹤球或觸摸板將命令和信息輸入計算機(jī)110中。其它的輸入設(shè)備(未顯示)可以包括一個麥克風(fēng),操縱桿,游戲基座,圓盤式衛(wèi)星電視天線,掃描器,等等。這些及其它的輸入設(shè)備常常通過一個被連接到該系統(tǒng)總線上的用戶輸入接口160連接到該處理單元120上,但是輸入設(shè)備也可通過其它接口和總線結(jié)構(gòu),諸如一個并行端口,游戲端口或一個通用串行總線(USB)進(jìn)行連接。一個監(jiān)視器191或其它類型的顯示設(shè)備也經(jīng)由一個接口,諸如一個視頻接口190連接到該系統(tǒng)總線121上。除該監(jiān)視器外,計算機(jī)也可以包括其它通過一個輸出外圍接口190進(jìn)行連接的外圍輸出設(shè)備諸如揚(yáng)聲器197和打印機(jī)196。
計算機(jī)110可以在一個使用邏輯連接至一個或多個遠(yuǎn)程計算機(jī),諸如一個遠(yuǎn)程計算機(jī)180的網(wǎng)絡(luò)環(huán)境中運(yùn)行。該遠(yuǎn)程計算機(jī)180可以是個人電腦,一個服務(wù)器,一個路由器,一個網(wǎng)絡(luò)PC,一對等設(shè)備或其它公用網(wǎng)絡(luò)節(jié)點(diǎn),一般包括上述與計算機(jī)110有關(guān)的許多或全部元件,盡管在圖1中已說明只有一個存儲器存儲設(shè)備181。所述邏輯連接包括一局域網(wǎng)(LAN)171和一廣域網(wǎng)(WAN)173,但也可包括其它的網(wǎng)絡(luò)。這樣的網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)計算機(jī)網(wǎng)絡(luò)、內(nèi)部網(wǎng)和因特網(wǎng)中是很常見的。
當(dāng)用于局域網(wǎng)網(wǎng)絡(luò)環(huán)境中時,計算機(jī)110通過一個網(wǎng)絡(luò)接口或適配器170連接到該局域網(wǎng)171。當(dāng)用于廣域網(wǎng)網(wǎng)絡(luò)環(huán)境中時,計算機(jī)110一般包括一個調(diào)制解調(diào)器172或其它用于在該廣域網(wǎng)173,諸如國際互連網(wǎng),建立通信連接的設(shè)備??梢允莾?nèi)部的或外部的調(diào)制解調(diào)器172可經(jīng)由該用戶輸入接口160或其它適當(dāng)?shù)臋C(jī)構(gòu)連接到該系統(tǒng)總線121上。在網(wǎng)絡(luò)環(huán)境中,所述與計算機(jī)110或它的一部分有關(guān)的程序模塊,可存儲在該遠(yuǎn)程存儲器存儲設(shè)備中。舉例來說,并非限定,圖1舉例說明遠(yuǎn)程應(yīng)用程序185駐留在存儲設(shè)備181上。應(yīng)當(dāng)理解所示網(wǎng)絡(luò)連接是示范性的,可以使用其它的設(shè)備在計算機(jī)之間建立通信連接。
示范性分布式計算框架或體系結(jié)構(gòu)各種分布式計算框架由于個人計算和國際互連網(wǎng)的會聚已經(jīng)并且正在發(fā)展。個人和商業(yè)用戶同樣的被提供一個無縫的能共同使用的和網(wǎng)絡(luò)使能的接口用于應(yīng)用軟件和計算設(shè)備,使得計算行為越來越朝著網(wǎng)絡(luò)瀏覽器或網(wǎng)絡(luò)的方向發(fā)展。
例如,微軟公司的網(wǎng)絡(luò)平臺包括服務(wù)器,標(biāo)準(zhǔn)元件構(gòu)成的服務(wù)程序,比如基于網(wǎng)絡(luò)的數(shù)據(jù)存儲和可下載的設(shè)備軟件。一般而言,該網(wǎng)絡(luò)平臺提供(1)使全范圍的計算設(shè)備一起工作和自動更新用戶信息及使它們?nèi)客降哪芰Γ?2)提高網(wǎng)絡(luò)站點(diǎn)的交互能力,通過更多使用XML而不是HTML實(shí)現(xiàn),(3)以按客戶具體要求的訪問和自一中央起點(diǎn)向用戶進(jìn)行產(chǎn)品和服務(wù)的傳輸用于不同應(yīng)用系統(tǒng)的管理比如電子郵件,例如,或軟件,諸如辦公室網(wǎng)絡(luò)為特征的在線服務(wù),(4)集中數(shù)據(jù)存儲,不僅提高了用戶和設(shè)備間的同步性而且提高了訪問信息的效率和容易程度,(5)集成各種通訊媒體,比如電子郵件,傳真,和電話的能力,(6)對于開發(fā)者,創(chuàng)建可重用模塊的能力,從而提高生產(chǎn)率并減少編程錯誤的數(shù)目,和(7)以及許多其它的跨平臺集成特征。
在此描述的示范性實(shí)施例連同駐留在計算設(shè)備中的軟件,本發(fā)明的一個或多個部分也可經(jīng)由一操作系統(tǒng)、應(yīng)用程序接口(API)或一個協(xié)處理過程器和請求對象之間的″中間人″對象實(shí)現(xiàn),這樣服務(wù)機(jī)構(gòu)可以通過所有網(wǎng)絡(luò)語言和服務(wù)程序來執(zhí)行,可在所有網(wǎng)絡(luò)語言和服務(wù)程序中被支持或通過所有網(wǎng)絡(luò)語言和服務(wù)程序被訪問,在其它分布式計算框架中也是同樣的。
示范性實(shí)施例正如本發(fā)明所涉及的,變化跟蹤處理過程監(jiān)控所關(guān)心的源表中的數(shù)據(jù)的變化,捕獲關(guān)于那些變化的信息,以及把所捕獲的變化數(shù)據(jù)分為一致的、隨后被用于更新目的表的組。本發(fā)明的一個示范性跟蹤設(shè)備在目的地有效地保持事務(wù)一致的復(fù)制。
圖2是說明圖3-5一個示范性處理過程的流程圖。每個處理過程可取地相對于其它處理過程異步運(yùn)行,盡管設(shè)想的是對于一個特定事件,圖3的處理流程后面依次有圖4和5的處理過程。
圖6是一個根據(jù)本發(fā)明表明各種示范性按需使用的表的示意圖。圖6顯示了兩個源表300、350,兩個變化跟蹤表400、450,一個用于識別一致變化的組的一致組表500,以及目的表600、650。根據(jù)本發(fā)明,預(yù)期使用任何數(shù)目的源表,變化跟蹤表,一致組表以及目的表。
圖3是根據(jù)本發(fā)明變化捕獲的一個示范性過程的流程圖。初始化時,以事務(wù)一致的方式識別要被復(fù)制的源表,并為每個源表創(chuàng)建一變化跟蹤表。該變化跟蹤表用于記錄關(guān)于發(fā)生在它們相關(guān)的源表的行上的事件活動(例如插入、更新和刪除動作)的細(xì)節(jié)。變化跟蹤觸發(fā)用于實(shí)現(xiàn)該變化檢測處理過程。觸發(fā)代碼與每個源表相結(jié)合并且當(dāng)一個事件諸如插入、更新或刪除操作在該源表內(nèi)的行上發(fā)生時執(zhí)行。
圖6中,跟蹤觸發(fā)302和352應(yīng)用于源表300,350中。這些觸發(fā)用于捕獲表402、452中的變化數(shù)據(jù)并且在恰當(dāng)?shù)囊詾?00,450表示的跟蹤表中存儲那個數(shù)據(jù)。優(yōu)選地,每個公布表都有一個跟蹤表。人們注意到該變化跟蹤表可取地僅反映發(fā)生在它們的相關(guān)源表上的變化。這樣,觸發(fā)302、352可取地被放置在每個公布表300、350上并且用于將變化信息402、452寫入到該變化跟蹤表(多個)400,450中。
圖3步驟210中,一個數(shù)據(jù)被改變的事件發(fā)生(例如,將插入、更新或刪除應(yīng)用于一源表中),從而引發(fā)步驟220執(zhí)行源表的相關(guān)變化跟蹤觸發(fā)(例如,圖6觸發(fā)302或352)。步驟230產(chǎn)生一個順序標(biāo)識符,其允許后續(xù)處理過程對關(guān)于其它變化的這個變化進(jìn)行排序。優(yōu)選的,所產(chǎn)生的標(biāo)識符是個嚴(yán)格遞增的數(shù)字。步驟240,將該順序標(biāo)識符和事件數(shù)據(jù)(例如,402)存儲在與該源表(例如,300)有聯(lián)系的變化跟蹤表中(例如400)。特別的,通過一個變化跟蹤觸發(fā),存儲在變化跟蹤表中的每行事件數(shù)據(jù)402、452具有一個有關(guān)聯(lián)的順序標(biāo)識符(例如,SeqID404)。
通過該觸發(fā)捕獲的事件數(shù)據(jù)包括需要構(gòu)造一個數(shù)據(jù)庫聲明的數(shù)據(jù),當(dāng)應(yīng)用于目的數(shù)據(jù)庫時,該聲明引起目的表處于與源表相同的狀態(tài)。對于一個插入操作,更可取的是將該新列值連同它的操作類型(插入)和順序標(biāo)識符一起輸入到該變化跟蹤表中。對于一個刪除操作,更可取的是將該舊列值連同它的操作類型(刪除)和順序標(biāo)識符一起輸入到該變化跟蹤表中。對于一個更新操作,更可取的是將新舊列值連同其操作類型(更新)和順序標(biāo)識符一起輸入到該變化跟蹤表中。
圖4是根據(jù)本發(fā)明將變化分成一致的組的一個示范性處理過程的流程圖。在啟動期間,創(chuàng)建一個一致組表。該一致組表500用于將該變化跟蹤表400、450中的輸入與關(guān)于源數(shù)據(jù)庫上的一個事務(wù)時間點(diǎn)的變化的特定一致組聯(lián)系起來。該一致組定義將要被分組在一起的并且作為單個事務(wù)應(yīng)用于目的數(shù)據(jù)庫的變化跟蹤表中的變化。步驟310,為該組獲得一個順序標(biāo)識符,其用于當(dāng)它們被用于目的表時對該組排序。步驟320,將該變化跟蹤表中的輸入分組以獲得一個與這個組標(biāo)識符相聯(lián)系的變化的一致的組。步驟330,作為屬于這個一致組的識別特定變化的信息存儲在一致組表中。
當(dāng)識別一個一致組時,獲取每一行的標(biāo)識符以用于分配給一個組之后的所有已提交的跟蹤表的輸入。將該行標(biāo)識符連同該組標(biāo)識符一起存儲在一致組表500中。
圖5是根據(jù)本發(fā)明將與一致組相聯(lián)系的變化應(yīng)用于目的表中的一個示范性處理過程的流程圖。一個示范性處理過程是當(dāng)改變目的數(shù)據(jù)庫的狀態(tài)時從該變化跟蹤表中提取該變化并且運(yùn)用它們以創(chuàng)建將被使用的變化聲明。與相同的組標(biāo)識符相聯(lián)系的變化聲明優(yōu)選地在目的地作為單個事務(wù)提交,允許維持事務(wù)一致性。
參見圖5,步驟410,查詢該一致組表以確定處理過程的下一組標(biāo)識符。步驟420,查詢每個源表的相關(guān)的變化跟蹤表以檢索與帶有組標(biāo)識符的該一致組表相關(guān)的變化。步驟430,對于該變化跟蹤表中每個選擇的輸入,產(chǎn)生一個適當(dāng)?shù)淖兓暶鞑⑵鋺?yīng)用于該相關(guān)目的表中(圖6,600和650)??扇〉兀缓筇峤凰袑δ康谋硭龅妮斎?。在該處理過程中,由項(xiàng)目302和352表示的圖6中的觸發(fā)繼續(xù)在該變化跟蹤表400、450中儲存將在后續(xù)處理的作為后繼組一部分的數(shù)據(jù)。
圖5中,步驟430,與一個一致組有關(guān)的該變化聲明被用于目的表中,使用來自圖6中的變化跟蹤表,項(xiàng)目400和450中的輸入的該順序標(biāo)識符對該變化進(jìn)行排序。后來的一致組被用于通過組ID排序的目的地中(圖6,502)。當(dāng)為一個特定組提取變化時,如果新的輸入出現(xiàn)在變化跟蹤表中,新輸入將不會出現(xiàn)在具有現(xiàn)在組標(biāo)識符的一致組表500中,并且這樣將不會作為現(xiàn)在的組的一部分被提取。
概括地說,通過將變化分組為一致變化的組,該變化被應(yīng)用于單個事務(wù)范圍的目的地中,在目的數(shù)據(jù)庫中保持關(guān)于源數(shù)據(jù)庫的一個時間點(diǎn)的事務(wù)一致性。
如上所述,已經(jīng)對與各種計算設(shè)備和體系結(jié)構(gòu)相關(guān)的本發(fā)明示范性實(shí)施例進(jìn)行了描述,基本概念可應(yīng)用于任何可取地提供復(fù)制的計算設(shè)備或系統(tǒng)中。這樣,根據(jù)本發(fā)明用于復(fù)制的技術(shù)可被應(yīng)用于各種各樣的應(yīng)用軟件和設(shè)備中。在此選擇示范性編程語言名稱和示例作為各種選擇的代表,這些語言、名稱和示例并非是限定的。
在此描述的各種技術(shù)可結(jié)合硬件或軟件或,在適當(dāng)?shù)牡胤?,結(jié)合兩者實(shí)現(xiàn)。這樣,本發(fā)明的方法和設(shè)備,或它的某些方面或部分,可以采用包含在有形介質(zhì)中的程序代碼的形式(即,指令),該有形介質(zhì)諸如軟盤,CD-ROM,硬盤,或任何其它機(jī)器可讀的存儲介質(zhì),其中,當(dāng)該程序代碼被載入一個機(jī)器,諸如一個計算機(jī)并由其執(zhí)行時,該機(jī)器成為一個用于實(shí)現(xiàn)本發(fā)明的裝置。程序代碼在可編程計算機(jī)上執(zhí)行的情況下,該計算設(shè)備通常將包括一個處理器,一個由該處理器可讀的存儲介質(zhì)(包括易失性和非易失性存儲器和/或存儲元件),至少一個輸入設(shè)備和至少一個輸出設(shè)備。另外,與本發(fā)明結(jié)合使用的任何存儲技術(shù)可一律是軟硬件的組合。
當(dāng)已經(jīng)對本發(fā)明與各附圖的優(yōu)選實(shí)施例相結(jié)合進(jìn)行了描述時,應(yīng)當(dāng)理解其它類似的實(shí)施例在不偏離本發(fā)明的情況下執(zhí)行相同的功能。此外,應(yīng)當(dāng)強(qiáng)調(diào)的是可以考慮各種計算機(jī)平臺,包括手提式設(shè)備操作系統(tǒng)及其它應(yīng)用的特定操作系統(tǒng),尤其當(dāng)無線網(wǎng)絡(luò)設(shè)備的數(shù)目持續(xù)激增長時。此外,本發(fā)明可在多個處理芯片或設(shè)備中或橫跨多個處理芯片或設(shè)備實(shí)現(xiàn),存儲同樣可以橫跨多個設(shè)備來實(shí)現(xiàn)。因此,本發(fā)明不應(yīng)被限制在任何單一的實(shí)施例中,而應(yīng)根據(jù)所附權(quán)利要求從廣度和范圍上加以理解。
權(quán)利要求
1.一種保持在一個目的數(shù)據(jù)庫的表組事務(wù)一致的方法,包括從一個源數(shù)據(jù)庫中捕獲多種變化;將該變化至少分為一個一致組;以及將至少一個變化一致組應(yīng)用于目的數(shù)據(jù)庫。
2.如權(quán)利要求1所述的方法,其中捕獲多種變化包括對于每個事件識別一個數(shù)據(jù)庫事件;激活響應(yīng)該事件的觸發(fā);為該事件產(chǎn)生一個識別碼;以及存儲與該事件相關(guān)的數(shù)據(jù)及變化跟蹤表中作為變化的識別碼。
3.如權(quán)利要求2所述的方法,其中將變化分組包括識別多種變化一致組,及存儲信息以恢復(fù)一致組表中的一致組。
4.如權(quán)利要求1所述的方法,其中每個一致組包括多種變化的一部分,并且對于該部分中的每個變化,所有其它以相同事務(wù)方式提交的源表的變化也在該組中。
5.如權(quán)利要求1所述的方法,其中將該變化聲明應(yīng)用于目的數(shù)據(jù)庫包括從基于一致組中的隸屬關(guān)系的變化跟蹤表中提取一組變化;和將變化組以一個事務(wù)方式應(yīng)用于目的數(shù)據(jù)庫。
6.如權(quán)利要求1所述的方法,其中該捕獲、分組和應(yīng)用的步驟是異步的。
7.如權(quán)利要求1所述的方法,其中每個變化對應(yīng)一個事件,事件是對源數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行插入、更新和刪除的操作之一。
8.一種計算機(jī)可讀介質(zhì),其上存儲的計算機(jī)可執(zhí)行指令用于執(zhí)行一種保持在目的數(shù)據(jù)庫上的目的表的事務(wù)一致組的方法,包括從源數(shù)據(jù)庫中捕獲多種變化;將該變化至少分為一個一致組;將至少一個變化一致組應(yīng)用于目的數(shù)據(jù)庫。
9.如權(quán)利要求8所述的計算機(jī)可讀介質(zhì),其中捕獲多種變化包括對于每個事件識別一個數(shù)據(jù)庫事件;激活響應(yīng)該事件的觸發(fā);對該事件產(chǎn)生一個識別碼;以及存儲與該事件相關(guān)的數(shù)據(jù)及變化跟蹤表中作為變化的識別碼。
10.如權(quán)利要求9所述的計算機(jī)可讀介質(zhì),其中將變化分組包括識別多種變化一致組,及存儲信息以恢復(fù)一致組表中的一致組。
11.如權(quán)利要求8所述的計算機(jī)可讀介質(zhì),其中每個一致組包括多種變化的一部分,并且對于該部分中的每個變化,所有其它以相同事務(wù)方式提交的源表的變化也在該組中。
12.如權(quán)利要求8所述的計算機(jī)可讀介質(zhì),其中將該變化聲明應(yīng)用于目的數(shù)據(jù)庫,包括從基于一致組中的隸屬關(guān)系的變化跟蹤表中提取一組變化;及將該變化組以一個事務(wù)方式應(yīng)用于目的數(shù)據(jù)庫。
13.如權(quán)利要求8所述的計算機(jī)可讀介質(zhì),其中捕獲、分組和應(yīng)用的步驟是異步的。
14.如權(quán)利要求8所述的計算機(jī)可讀介質(zhì),其中每個變化對應(yīng)一個事件,該事件是對源數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行插入、更新和刪除的操作之一。
15.一個保持源數(shù)據(jù)庫中的源表和目的數(shù)據(jù)庫中的目的表之間事務(wù)一致性的系統(tǒng),包括至少一個具有相關(guān)觸發(fā)的源表,該觸發(fā)響應(yīng)一個事件而執(zhí)行,每一個源表與該源數(shù)據(jù)庫相聯(lián)系;至少一個變化跟蹤表用于記錄與該變化事件相關(guān)的數(shù)據(jù);以及一個一致組表將至少一個變化跟蹤表的輸入分組為至少一個排序一致組。
16.如權(quán)利要求15所述的系統(tǒng),其中每個源表有至少一個相應(yīng)的變化跟蹤表。
17.如權(quán)利要求15所述的系統(tǒng),其中變化跟蹤表中有與事件相聯(lián)系的數(shù)據(jù)和用于響應(yīng)觸發(fā)執(zhí)行的事件的識別碼。
18.如權(quán)利要求17所述的系統(tǒng),其中將輸入分組為變化一致組。
19.如權(quán)利要求15所述的系統(tǒng),其中對于多個相應(yīng)于變化的事件,每個一致組包括多種變化的一部分,對于該部分中的每個變化,所有其它以相同事務(wù)方式提交的源表的變化也在該部分中。
20.如權(quán)利要求15所述的系統(tǒng),其中該變化跟蹤表包括至少一種將用于目的數(shù)據(jù)庫的變化。
21.如權(quán)利要求15所述的系統(tǒng),其中數(shù)據(jù)從基于經(jīng)由一致組表識別的變化一致組中的隸屬關(guān)系的變化跟蹤表中進(jìn)行提取。
22.如權(quán)利要求21所述的系統(tǒng),其中一組提取的變化以一個事務(wù)方式應(yīng)用于目的數(shù)據(jù)庫中。
全文摘要
一種用于在事務(wù)復(fù)制期間保持源數(shù)據(jù)與目的數(shù)據(jù)一致性的變化跟蹤技術(shù)。第一功能特性為它是一個事務(wù)型數(shù)據(jù)庫復(fù)制技術(shù)。第二特性是該技術(shù)支持一源系統(tǒng)事務(wù)狀態(tài)的遞增跟蹤。該技術(shù)的第三特性是當(dāng)滿足前兩個特性時,利用觸發(fā)來跟蹤變化。
文檔編號G06F12/00GK1540513SQ20041003523
公開日2004年10月27日 申請日期2004年4月1日 優(yōu)先權(quán)日2003年4月1日
發(fā)明者S·L·沃德, J·M·賀林斯沃斯, S L 沃德, 賀林斯沃斯 申請人:微軟公司