專利名稱:在數(shù)據(jù)庫環(huán)境通過背景同步的數(shù)據(jù)完整性的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在數(shù)據(jù)庫環(huán)境中保持?jǐn)?shù)據(jù)的完整性,特別是在數(shù)據(jù)庫環(huán)境中通過背景同步保持?jǐn)?shù)據(jù)的完整性。
背景技術(shù):
在當(dāng)今不斷擴(kuò)展的計(jì)算環(huán)境中,許多企業(yè)員工使用便攜式、移動(dòng)計(jì)算裝置如個(gè)人筆記本電腦、平板電腦、個(gè)人數(shù)碼助理、智能電話和其它類似裝置來執(zhí)行工作。這些遠(yuǎn)程系統(tǒng)通常運(yùn)行采取“始終可用”或“偶然連接”的架構(gòu)的移動(dòng)商務(wù)應(yīng)用程序。在這種方式下, 遠(yuǎn)程系統(tǒng)在本地存儲(chǔ)數(shù)據(jù),使自己的數(shù)據(jù)應(yīng)用程序在網(wǎng)絡(luò)是否可用時(shí)都可以繼續(xù)使用。盡管有本地?cái)?shù)據(jù)存儲(chǔ),為商務(wù)應(yīng)用程序使用的數(shù)據(jù)的最終來源不是遠(yuǎn)程系統(tǒng),而是公司服務(wù)器上的綜合數(shù)據(jù)庫。每隔一段時(shí)間,在流動(dòng)員工中被利用和更新的數(shù)據(jù)需要通過有線或無線網(wǎng)絡(luò)連接與綜合數(shù)據(jù)庫的中央數(shù)據(jù)存儲(chǔ)同步,以確保數(shù)據(jù)的完整性。雖然數(shù)據(jù)同步顯然是必要的,以保持移動(dòng)計(jì)算環(huán)境中的數(shù)據(jù)一致,但是從移動(dòng)裝置移動(dòng)數(shù)據(jù)到綜合服務(wù)器并從綜合服務(wù)器移動(dòng)數(shù)據(jù)到移動(dòng)裝置的同步操作會(huì)需要大量的計(jì)算機(jī)和網(wǎng)絡(luò)資源,往往需要很長時(shí)間才能完成。這些操作包括追蹤移動(dòng)裝置和服務(wù)器上的數(shù)據(jù)變化、傳輸正確的變化、確保數(shù)據(jù)的唯一鍵值被保留并確定和解決沖突的發(fā)生。通常情況下,數(shù)據(jù)同步進(jìn)程的必要控制要求在同步進(jìn)程發(fā)生時(shí)遠(yuǎn)程系統(tǒng)中的數(shù)據(jù)訪問受到限制,以最多只允許數(shù)據(jù)的唯讀訪問。然而,當(dāng)同步操作進(jìn)行其間缺少對(duì)遠(yuǎn)程數(shù)據(jù)庫的同時(shí)事務(wù)訪問的支持會(huì)降低性能和效率。因此,在遠(yuǎn)程數(shù)據(jù)庫環(huán)境中通過在數(shù)據(jù)修改操作的背景運(yùn)行的同步以確保數(shù)據(jù)完整性的方法是有需要的。本發(fā)明解決這樣的需要。
發(fā)明內(nèi)容
本發(fā)明涉及數(shù)據(jù)庫環(huán)境中保持?jǐn)?shù)據(jù)完整性的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。在一個(gè)實(shí)施例中,本發(fā)明在遠(yuǎn)程數(shù)據(jù)系統(tǒng)開始一個(gè)進(jìn)程以同步來自遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)的遠(yuǎn)程數(shù)據(jù)與綜合數(shù)據(jù)庫的綜合數(shù)據(jù),并在同步進(jìn)程發(fā)生時(shí)利用遠(yuǎn)程數(shù)據(jù)的每一行元數(shù)據(jù)以允許事務(wù)訪問。本發(fā)明的更多特征、優(yōu)點(diǎn)、以及各實(shí)施方式的結(jié)構(gòu)和運(yùn)作將連同參照附圖在以下詳細(xì)描述。需注意本文描述的具體實(shí)施方式
只示意作說明用途,而本發(fā)明并不局限于此。本發(fā)明所教導(dǎo)內(nèi)容使相關(guān)領(lǐng)域技術(shù)人員顯而易見地聯(lián)想到更多的實(shí)施方式。
納入本說明并構(gòu)成本文一部分的附圖,描繪了本發(fā)明的實(shí)施方式。附圖及其描述進(jìn)一步說明了本發(fā)明的原理,并容許相關(guān)領(lǐng)域技術(shù)人員制作及使用本發(fā)明。圖1展示了本發(fā)明一個(gè)實(shí)施例中實(shí)現(xiàn)背景同步的計(jì)算環(huán)境例子的框圖。圖2說明了本發(fā)明一個(gè)實(shí)施例中在數(shù)據(jù)庫環(huán)境下確保數(shù)據(jù)完整性的同步進(jìn)程的整體流程的框圖。圖3說明了本發(fā)明一個(gè)實(shí)施例中保持同步進(jìn)程的元數(shù)據(jù)的整體流程的框圖。圖4說明了本發(fā)明一個(gè)實(shí)施例中確定元數(shù)據(jù)的上傳狀態(tài)值部分的整體流程的框圖。圖5說明了本發(fā)明一個(gè)實(shí)施例中解釋上載狀態(tài)值影響同步進(jìn)程的整體流程的框圖。圖6說明了一個(gè)實(shí)施本發(fā)明的有用計(jì)算機(jī)的例子。當(dāng)結(jié)合附圖和以下的詳細(xì)描述,本發(fā)明的特點(diǎn)和優(yōu)勢(shì)將更加明顯。在附圖中,參考編號(hào)通常指相同、功能相似和/或結(jié)構(gòu)相似的組件。一般來說,參考編號(hào)最左方的數(shù)字指出該參考編號(hào)最初出現(xiàn)的附圖的號(hào)碼。
具體實(shí)施例方式在移動(dòng)環(huán)境中,特別是手持式計(jì)算機(jī)系統(tǒng),本地?cái)?shù)據(jù)庫應(yīng)用的利用必須支持本地?cái)?shù)據(jù)庫與網(wǎng)絡(luò)服務(wù)器上的綜合數(shù)據(jù)庫的數(shù)據(jù)同步的需要。一個(gè)已知的數(shù)據(jù)庫應(yīng)用在名稱為數(shù)據(jù)庫系統(tǒng)和從便攜式裝置訪問數(shù)據(jù)庫的方法并專利權(quán)已轉(zhuǎn)讓給受讓人的美國專利 634U88中描述了,其在多個(gè)裝置之間更具便攜性,該多個(gè)裝置包括具有有限計(jì)算能力的裝置。隨著計(jì)算能力、存儲(chǔ)裝置、和移動(dòng)系統(tǒng)的其它系統(tǒng)組件已在近年來有所改善以支持多線程處理,相應(yīng)地,在當(dāng)今快速節(jié)奏和移動(dòng)辦公環(huán)境中,有必要增加一個(gè)不僅可以保持?jǐn)?shù)據(jù)的完整性,而且還可以作為背景運(yùn)作以允許大量連續(xù)的事務(wù)訪問并改善效率和性能的同步工序。圖1展示了本發(fā)明一個(gè)實(shí)施例中實(shí)現(xiàn)背景同步的移動(dòng)計(jì)算環(huán)境102的框圖。其中包括中央系統(tǒng)104和一個(gè)或多個(gè)遠(yuǎn)程系統(tǒng)106如便攜式、手持移動(dòng)計(jì)算裝置,例如筆記本電腦裝置、個(gè)人數(shù)碼助理、手機(jī)和相類似的。中央系統(tǒng)104和遠(yuǎn)程系統(tǒng)106之間通過通信網(wǎng)絡(luò) 108的任何已知手段(例如互聯(lián)網(wǎng),但不限于互聯(lián)網(wǎng))來通信。中央系統(tǒng)104包括同步系統(tǒng)110和綜合數(shù)據(jù)庫系統(tǒng)112。綜合數(shù)據(jù)庫系統(tǒng)112 作為數(shù)據(jù)庫管理器和數(shù)據(jù)庫來運(yùn)作,其中數(shù)據(jù)庫可以進(jìn)一步包括索引和表數(shù)據(jù),而數(shù)據(jù)庫管理器可以是任何數(shù)據(jù)庫管理系統(tǒng)(DBMS)的形式,并可以包括但不限于擁有處理器和內(nèi)存以執(zhí)行和儲(chǔ)存指令的裝置。在一個(gè)不是為了限制本發(fā)明例子,綜合數(shù)據(jù)庫系統(tǒng)112可包括軟件、固件和硬件或它們的組合,數(shù)據(jù)庫管理器可以是如SYBASE Adaptive Sever Enterprise 的DBMS。該軟件可以包含一個(gè)或多個(gè)應(yīng)用程序和操作系統(tǒng)。硬件可以包括但不限于處理器、內(nèi)存和用戶界面顯示屏。自選的輸入裝置如鍵盤、鼠標(biāo)、手寫筆或任何其它指示裝置也可以使用。數(shù)據(jù)庫管理器可以存儲(chǔ)和操作在數(shù)據(jù)庫中的數(shù)據(jù)。數(shù)據(jù)庫管理器可直接被系統(tǒng)用戶作為軟件包的組件來使用,或可用于提供各種服務(wù)到獨(dú)立的軟件包。每個(gè)遠(yuǎn)程系統(tǒng)106優(yōu)選地包含遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)114。遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)114可進(jìn)一步包含在綜合數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)庫中的數(shù)據(jù)子集,該數(shù)據(jù)子集包括數(shù)據(jù)庫索引和表數(shù)據(jù)。遠(yuǎn)程系統(tǒng)106可以包括但不限于擁有處理器和內(nèi)存以執(zhí)行和儲(chǔ)存指令的裝置。在一個(gè)不是為了限制本發(fā)明的例子,遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)114可被提供作為SYBASE SQL Anywhere UltraLite ,并可以包括軟件、固件和硬件或它們的組合。該軟件可以包含一個(gè)或多個(gè)應(yīng)用程序和操作系統(tǒng)。硬件可以包括但不限于處理器、內(nèi)存和用戶界面的顯示屏。自選的輸
5入裝置如鍵盤、手寫筆或任何其它指示裝置也可以使用。在綜合數(shù)據(jù)庫系統(tǒng)112的數(shù)據(jù)庫和在遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)114的該數(shù)據(jù)庫的子集可以是根據(jù)本領(lǐng)域中已知的不同邏輯數(shù)據(jù)模型或存儲(chǔ)的數(shù)據(jù)的視圖來管理和操作的數(shù)據(jù)集合。 在目前的數(shù)據(jù)庫市場(chǎng),邏輯數(shù)據(jù)模型的例子包括采用行業(yè)標(biāo)準(zhǔn)SQL查詢語言的關(guān)系模型。 數(shù)據(jù)庫表對(duì)本領(lǐng)域的技術(shù)人員來說是已知的,數(shù)據(jù)庫表可以進(jìn)一步包括幾個(gè)記錄,每個(gè)記錄由幾個(gè)列組成。作為一個(gè)例子,在關(guān)系架構(gòu)系統(tǒng)中操作數(shù)據(jù)包括對(duì)存在于數(shù)據(jù)庫中的表、共享列和索引的操作。例如,在遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)114,行映圖存儲(chǔ)結(jié)構(gòu)可以維持從行標(biāo)識(shí)符到行狀態(tài)(行狀態(tài)在下文進(jìn)一步說明)和行處理的映射。該行標(biāo)識(shí)符可以被添加到列目錄的末尾以作為提供列和行標(biāo)識(shí)符的有序目錄的索引鍵的一部份。行處理可以包含存儲(chǔ)結(jié)構(gòu)中的行數(shù)據(jù)的坐標(biāo)。從概念上講,行映圖是線性陣列并被行標(biāo)識(shí)符索引。通過分配該陣列的數(shù)據(jù)段到存儲(chǔ)頁并用內(nèi)部尋址節(jié)把數(shù)據(jù)段連接一起到樹的方法來存儲(chǔ)數(shù)組,其在樹的深度相當(dāng)于該行映圖的大小。與已知的B-樹結(jié)構(gòu)相似,樹的葉子包含實(shí)際的數(shù)組。根和內(nèi)部節(jié)點(diǎn)用來確定擁有最少輸入/輸出成本的陣列。同步系統(tǒng)110運(yùn)行以確保綜合數(shù)據(jù)庫系統(tǒng)的112的數(shù)據(jù)庫與在遠(yuǎn)程數(shù)據(jù)庫系統(tǒng) 114中該數(shù)據(jù)庫的子集之間數(shù)據(jù)完整性。在一個(gè)不是為了限制的本發(fā)明例子中,同步系統(tǒng) 110可提供作為SYBASE SQL Anywhere MobiLink ,也可以包括軟件、固件和硬件或它們的組合。通過通信數(shù)據(jù)的變更,遠(yuǎn)程系統(tǒng)106和中央系統(tǒng)104之間可實(shí)現(xiàn)高效數(shù)據(jù)同步。在一個(gè)優(yōu)選的實(shí)施例,移動(dòng)計(jì)算環(huán)境102的背景同步進(jìn)程在及時(shí)知道甚么數(shù)據(jù)變更應(yīng)上傳到中央系統(tǒng)104和什么數(shù)據(jù)變更應(yīng)該被忽略時(shí)通過創(chuàng)建遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)114的數(shù)據(jù)“快照”來實(shí)現(xiàn)。該快照以多類型位值的形式使用元數(shù)據(jù),包括上載值以作為每數(shù)據(jù)行的行狀態(tài)。此元數(shù)據(jù)必須負(fù)責(zé)追蹤僅僅超過一個(gè)簡單單一位的行情況以表示插入或刪除行, 因?yàn)樵诒尘罢煌降男幸部赡茉谇熬氨桓淖儭R虼?,即使一背景同步被處理以確保下一背景同步進(jìn)程的任何修改被捕獲,本發(fā)明的元數(shù)據(jù)也可以追蹤和識(shí)別數(shù)據(jù)庫操作過程中被修改的行?,F(xiàn)在參考圖2,本發(fā)明一個(gè)實(shí)施例中在數(shù)據(jù)庫環(huán)境下確保數(shù)據(jù)完整性的同步進(jìn)程的整體流程的框圖被展示了。正如將要描述的,在同步過程中會(huì)有一些不同的信息交換,從而限制了協(xié)議的“聊天”。當(dāng)通信可能會(huì)比較慢和具有較高的延遲時(shí),這可能是有利的,例如當(dāng)使用電話線路或公共無線網(wǎng)絡(luò)連接,本領(lǐng)域的技術(shù)人員非常理解。通常,當(dāng)用戶選擇執(zhí)行數(shù)據(jù)同步(框塊200),遠(yuǎn)程系統(tǒng)106和中央系統(tǒng)104之間通過通信網(wǎng)絡(luò)108建立了連接,同步進(jìn)程開始發(fā)生了。要同步的數(shù)據(jù)在上載流中從遠(yuǎn)程系統(tǒng) 106傳送到中央系統(tǒng)104(框塊20 。在一個(gè)優(yōu)選的實(shí)施例,上載流的建設(shè)依賴于使用行狀態(tài)元數(shù)據(jù)以確定哪些行傳送到中央系統(tǒng)104和這些行的情況。通過使用行狀態(tài)元數(shù)據(jù),同步功能可發(fā)生而無需使用在本領(lǐng)域中共知的且更復(fù)雜和費(fèi)時(shí)的典型日志事務(wù)追蹤和聯(lián)合。當(dāng)接收到上載流,中央系統(tǒng)104把上載流應(yīng)用到綜合數(shù)據(jù)庫系統(tǒng)112(框塊204), 并在綜合數(shù)據(jù)庫系統(tǒng)112(框塊206)執(zhí)行上載流的變更。隨著執(zhí)行數(shù)據(jù)變更以完成同步進(jìn)程的上傳階段,中央系統(tǒng)通過發(fā)送回復(fù)到遠(yuǎn)程系統(tǒng)106以表明在中央系統(tǒng)106 (框塊210) 的上載流已經(jīng)完成執(zhí)行以啟動(dòng)下載階段。中央系統(tǒng)104然后建立并傳送下載流到遠(yuǎn)程系統(tǒng) 106(框塊210)。遠(yuǎn)程系統(tǒng)106調(diào)整已成功上載的行(框塊212)的行元數(shù)據(jù)狀態(tài)并應(yīng)用于接收到下載流(框塊214)?;趤碜韵螺d流的數(shù)據(jù),進(jìn)行必要的調(diào)整到行狀態(tài)以執(zhí)行來自遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)114(框塊216)的數(shù)據(jù)并完成同步過程。現(xiàn)在參考圖3,根據(jù)本發(fā)明的一個(gè)實(shí)施例,圖3展示了維持元數(shù)據(jù)來實(shí)現(xiàn)圖2中同步進(jìn)程的整體步驟。當(dāng)遠(yuǎn)程系統(tǒng)106的用戶實(shí)行數(shù)據(jù)庫操作(框塊300)如刪除、更新或添加操作,該進(jìn)程啟動(dòng)了。根據(jù)操作的發(fā)生,行狀態(tài)的元數(shù)據(jù)用來反映任何變化。如下面的列表所示,在一個(gè)優(yōu)選的實(shí)施例,元數(shù)據(jù)包括四個(gè)一起提供行狀態(tài)的值插入類型(正常,插入,后影像);刪除類型(無,刪除,移除);執(zhí)行狀態(tài)(插入執(zhí)行,插入沒有執(zhí)行,或許);及上載狀態(tài)(沒有計(jì)算,包括,除外)。為了讓每個(gè)值的三個(gè)情況得到允許,8位(每個(gè)值2位)可以用來提供元數(shù)據(jù)。作為例子,在一個(gè)行初步插入的數(shù)據(jù)庫操作,插入類型值=插入、刪除類型值= 無、執(zhí)行狀態(tài)值=插入沒有執(zhí)行以及上載狀態(tài)值=沒有計(jì)算。在行的更新,新版本的行被標(biāo)記為刪除類型值=無、執(zhí)行狀態(tài)值=插入沒有執(zhí)行以及上載狀態(tài)值=沒有計(jì)算。對(duì)于行更新的插入類型值,如果行的舊版本擁有刪除類型值不等于刪除和插入類型值是后影像或刪除類型值不等于移除并且執(zhí)行狀態(tài)值等于或許或者插入執(zhí)行,后影像值的情況會(huì)被使用。 當(dāng)行變更“可能“已上載,但因?yàn)檫€沒有收到確認(rèn)而產(chǎn)生不確定性時(shí),“或許”這個(gè)詞會(huì)被使用。否則,插入類型值=插入。無論新行的插入類型值是后影像或插入,已更新的行的舊版本會(huì)被更改為刪除類型=刪除。在行刪除上,通常刪除類型值=刪除。然而,在一個(gè)實(shí)施例中,停止同步設(shè)置可能被用來允許某些數(shù)據(jù)不進(jìn)行同步進(jìn)程。該功能的目的是減少每個(gè)遠(yuǎn)程系統(tǒng)106持有來自綜合數(shù)據(jù)庫114的行子集。也就是說,在綜合數(shù)據(jù)庫114看來,刪除并沒有真正從中刪除了, 所以他們不應(yīng)該被上傳。刪除類型的移除值用于反映這一點(diǎn)。在實(shí)行數(shù)據(jù)庫操作后,進(jìn)程可以通過執(zhí)行數(shù)據(jù)庫操作(框塊30 來繼續(xù)。數(shù)據(jù)庫的操作執(zhí)行取決于是否存在受影響的行的在先同步。對(duì)于刪除,如果該行從來沒有被同步, 那么它會(huì)被刪除。如果該行已被同步,那么它不會(huì)被刪除,因?yàn)閯h除操作需要首先同步到綜合數(shù)據(jù)庫。當(dāng)更新行的事務(wù)被執(zhí)行,受該事務(wù)影響的所有行狀態(tài)會(huì)被修改,以反映該執(zhí)行。 當(dāng)更新被同步了,行的新老版本都需要允許沖突檢測(cè)和解決。然后,舊行從數(shù)據(jù)庫中刪除, 而新行就變成一個(gè)普通的行。行的新增使該行被標(biāo)記為已執(zhí)行。對(duì)于每個(gè)數(shù)據(jù)庫操作(插入、更新和刪除),在同步(框塊306)其間,當(dāng)對(duì)同步進(jìn)程的檢測(cè)是肯定的(框塊304),額外的標(biāo)記通過更新行狀態(tài)元數(shù)據(jù)的上載狀態(tài)值情況來進(jìn)行。如果沒有同步進(jìn)程正在進(jìn)行(框塊304是否定的),遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)忽略行狀態(tài)的上載狀態(tài)值部分,并繼續(xù)數(shù)據(jù)庫事務(wù)(框塊300)的標(biāo)準(zhǔn)處理。如上面的目錄所示,在一個(gè)優(yōu)選的實(shí)施例,上載狀態(tài)值情況包括沒有計(jì)算,包括和除外,其中沒有計(jì)算值是用來表示行沒有發(fā)生執(zhí)行同步的上載開始了,包括值是用來表示行應(yīng)該是同步的一部分,而除外值是用來表示行不是同步的一部分。這些行狀態(tài)元數(shù)據(jù)的上載狀態(tài)值使得上載開始的一刻同步操作與數(shù)據(jù)庫的執(zhí)行狀態(tài)的快照一起作業(yè)。有了這個(gè)快照,數(shù)據(jù)庫中的變改不會(huì)影響上載的數(shù)據(jù),并且上載數(shù)據(jù)的完整性得到保證因?yàn)檫h(yuǎn)程系統(tǒng)106會(huì)繼續(xù)處理數(shù)據(jù)庫事務(wù)。
圖4的框塊流程圖展示了確定行狀態(tài)元數(shù)據(jù)的上傳狀態(tài)值部分的進(jìn)程。上載狀態(tài)值的初步檢測(cè)發(fā)生以確定實(shí)際上其是否需要設(shè)置(框塊400)。一般來說,當(dāng)同步其間行的執(zhí)行發(fā)生,行狀態(tài)的上載狀態(tài)值會(huì)被設(shè)置為包括或除外,而同步完成時(shí),行狀態(tài)的上載狀態(tài)值會(huì)被改回沒有計(jì)算。因此,如果上載狀態(tài)值已設(shè)置為包括或除外,則沒有需要對(duì)上載狀態(tài)值做變更,因?yàn)橐言O(shè)置的上載狀態(tài)值表明自從上載開始后這不是第一次在該行執(zhí)行。此外,如果行狀態(tài)的執(zhí)行狀態(tài)值情況是或許,那么該行已經(jīng)被上傳但尚未被確定為成功完成,并且沒有需要對(duì)該行的上載狀態(tài)值部分做變更。在這種情況下,維持上載狀態(tài)值(框塊40 并完成該進(jìn)程。如果上載狀態(tài)值確實(shí)需要設(shè)置(框塊400是肯定的),即執(zhí)行狀態(tài)值情況不等于或許以及上載狀態(tài)值情況等于沒有計(jì)算,則做出測(cè)定以判定如果該行在還沒執(zhí)行的狀態(tài)時(shí) (框塊404)如何處理該行。如果確定系統(tǒng)將上載該行(框塊404是肯定的),那么上載值設(shè)置為包括(框塊406)。否則,上載值設(shè)置為除外(框塊408)。在一個(gè)優(yōu)選的實(shí)施例中,對(duì)于擁有行狀態(tài)為插入類型=正常、執(zhí)行狀態(tài)=插入執(zhí)行以及刪除類型=沒有或刪除的行,不需要對(duì)其進(jìn)行上載并把其上載狀態(tài)情況設(shè)置為除外。如果刪除類型值情況等于刪除和插入類型值情況等于正常,或者刪除類型值情況等于移除和插入類型值情況不等于正常,該行需要被上載而上載狀態(tài)值情況設(shè)置為包括。圖5說明了本發(fā)明一個(gè)實(shí)施例中解釋上載狀態(tài)值影響同步進(jìn)程的整體流程的框圖。在本發(fā)明的一個(gè)實(shí)施例,在上載其間確定每一行如何上載的進(jìn)程利用以下方法識(shí)別四個(gè)狀態(tài)指標(biāo)中之其一表明該行沒有得到上載的零狀態(tài);表明該行會(huì)被上載并作為插入的插入狀態(tài);表明該行會(huì)被上載并作為刪除的刪除狀態(tài);或表明該行會(huì)被上載并作為遺失插入的遺失插入狀態(tài)。遺失插入與插入非常相似,但其幫助解釋附有移除設(shè)置的行作為刪除類型以作為停止同步設(shè)置的結(jié)果。在一般情況下,同步系統(tǒng)110不會(huì)下載剛剛上載的行。 也就是說,如果綜合數(shù)據(jù)庫系統(tǒng)112確定遺失插入行應(yīng)該被下載到遠(yuǎn)程系統(tǒng)106,同步系統(tǒng) 110通常會(huì)優(yōu)化下載以省略下載該行,因?yàn)橥较到y(tǒng)110知道遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)106已包含該行。然而,通過使用遺失插入狀態(tài),該行會(huì)被同步系統(tǒng)110識(shí)別為正在從遠(yuǎn)程數(shù)據(jù)庫中刪除。這禁用了正常的優(yōu)化,并允許該行被下載到遠(yuǎn)程系統(tǒng)106。在假設(shè)正被考慮的行不在'正常'狀態(tài)的情況下,進(jìn)程開始實(shí)施,因?yàn)樵谝粋€(gè)優(yōu)選的實(shí)施例,行上的迭代映射會(huì)跳過'正常'行,即擁有插入類型=正常、刪除類型=無、 執(zhí)行狀態(tài)值=插入執(zhí)行以及上載狀態(tài)值=沒有計(jì)算的行。對(duì)于不在'正常'狀態(tài)的行,進(jìn)程判斷行狀態(tài)是否等同于'移除'狀態(tài)(框塊500)?!畡h除'狀態(tài)通常指插入類型=正常、刪除類型=移除、執(zhí)行狀態(tài)值=插入執(zhí)行以及上載狀態(tài)值=沒有計(jì)算。當(dāng)行在'移除' 狀態(tài)時(shí),不需要考慮其的上載(框塊502)并且其會(huì)標(biāo)示為零狀態(tài)。如果行不在'正常'狀態(tài)或'移除'狀態(tài),進(jìn)程會(huì)繼續(xù)進(jìn)行并確定行狀態(tài)值是否 =或許(框塊504)。如果是這樣,該行在正在進(jìn)行的同步進(jìn)程中已經(jīng)被上載,并不需要考慮再次上載。因此,會(huì)顯示零狀態(tài)(框塊50 。該檢查確保上載發(fā)生為兩階段的進(jìn)程,例如, 第一階段上載插入和更新,第二階段上載刪除,而每個(gè)階段使用映射迭代來實(shí)施。當(dāng)行執(zhí)行狀態(tài)值不是或許,進(jìn)程會(huì)繼續(xù)進(jìn)行并檢測(cè)行的上載狀態(tài)值。如果上載狀態(tài)值=除外(框塊506),那么不需要上載該行并標(biāo)示其狀態(tài)為零(框塊502)。如果上載狀態(tài)值=包括(框塊508),那么標(biāo)示其狀態(tài)為刪除(框塊510),因?yàn)樯陷d開始后的插入執(zhí)行不會(huì)被上載,因此上載狀態(tài)值不會(huì)是插入。為了說明行已經(jīng)被修改但還沒有執(zhí)行(即上載狀態(tài)值=沒有計(jì)算),進(jìn)程會(huì)繼續(xù)進(jìn)行并確定該行是否還沒執(zhí)行(框塊51 和插入(框塊514)。如果是這樣,那么該行被跳過,因?yàn)檫€沒執(zhí)行的插入不上載,并且狀態(tài)顯示為零(框塊50幻。如果不是,該行是還沒執(zhí)行的刪除,并且插入類型會(huì)被檢查(框塊516)。如果插入類型是正常,該行不需要包括在同步里而其狀態(tài)會(huì)標(biāo)示為零(框塊50幻。對(duì)于除了正常之外的插入類型,其狀態(tài)會(huì)標(biāo)示為插入(框塊518)。如果這些情況沒有找到,那么該行是在上載之前已執(zhí)行的行。刪除類型值情況是用來確定狀態(tài)標(biāo)識(shí)(框塊520)。對(duì)于刪除類型=無,進(jìn)程會(huì)返回插入標(biāo)識(shí)(框塊518)。對(duì)于刪除類型=移除,該進(jìn)程會(huì)返回遺失插入標(biāo)識(shí)(框塊52 。而對(duì)于刪除類型=刪除,該進(jìn)程會(huì)返回刪除標(biāo)識(shí)(框塊510)。在這種方式下,同步進(jìn)程發(fā)生并保證即每行的元數(shù)據(jù)正確反映準(zhǔn)確的行狀態(tài)。正如所述,加入上載值情況允許當(dāng)同步正在進(jìn)行時(shí)對(duì)遠(yuǎn)程數(shù)據(jù)庫的同時(shí)訪問,而不需要只允許只讀模式的訪問或提高試圖修改遠(yuǎn)程數(shù)據(jù)庫所產(chǎn)生的錯(cuò)誤。因此,對(duì)遠(yuǎn)程數(shù)據(jù)庫的有效和無縫利用產(chǎn)生了,尤其有利于移動(dòng)數(shù)據(jù)庫環(huán)境。示范計(jì)算機(jī)系統(tǒng)實(shí)施例在本發(fā)明的一個(gè)實(shí)施例中,這里所述的實(shí)施例中的系統(tǒng)和組件是使公知的計(jì)算器來實(shí)施,如圖6所示的例子計(jì)算器602。例如,中央系統(tǒng)104或遠(yuǎn)程系統(tǒng)106可以用計(jì)算機(jī) 602來實(shí)現(xiàn)。計(jì)算機(jī)602可以是任何商業(yè)可用的和眾所周知的并有能力執(zhí)行這里所述的功能的計(jì)算機(jī),如 IBM、Apple、Sun、HP、Dell、Compaq、Digital、Cray 等可用的計(jì)算器。計(jì)算機(jī)602包括一個(gè)或多個(gè)處理器(也稱為中央處理單元,或CPU),如處理器 606。該處理器606連接到通信總線604。計(jì)算機(jī)602還包括主內(nèi)存608,如隨機(jī)存取存儲(chǔ)器(RAM)。主內(nèi)存608已儲(chǔ)存控制邏輯625A(電腦軟件)和數(shù)據(jù)在其中。計(jì)算機(jī)602還包括一個(gè)或多個(gè)輔助存儲(chǔ)裝置610。輔助存儲(chǔ)裝置610包括如硬盤驅(qū)動(dòng)器612和/或可移除的存儲(chǔ)裝置或驅(qū)動(dòng)器614以及其它類型的存儲(chǔ)裝置如存儲(chǔ)卡和記憶棒??梢瞥拇鎯?chǔ)驅(qū)動(dòng)器614代表了軟盤驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器、光存儲(chǔ)裝置、 磁帶備份等??梢瞥拇鎯?chǔ)驅(qū)動(dòng)器614與可移除的存儲(chǔ)單元616互動(dòng)。可移除的存儲(chǔ)單元616 包括電腦可用或可讀的存儲(chǔ)媒介624,存儲(chǔ)媒介6M中存儲(chǔ)有計(jì)算機(jī)軟件628B (控制邏輯) 和/或數(shù)據(jù)??梢瞥拇鎯?chǔ)單元616代表軟盤、磁帶、光盤、DVD、光存儲(chǔ)盤或任何其它計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)裝置??梢瞥拇鎯?chǔ)驅(qū)動(dòng)器614以公知的方式讀取來自和/或?qū)懭氲娇梢瞥拇鎯?chǔ)單元616。計(jì)算機(jī)602還包括輸入/輸出/顯示裝置622,如顯示器、鍵盤、指示裝置等。計(jì)算機(jī)602還包括通訊或網(wǎng)絡(luò)接口 618。網(wǎng)絡(luò)接口 618使計(jì)算機(jī)602可以和遠(yuǎn)程裝置進(jìn)行通信。例如,網(wǎng)絡(luò)接口 618允許計(jì)算機(jī)602通過通信網(wǎng)絡(luò)或媒介624B(代表計(jì)算機(jī)可用或可讀媒介的形式)如局域網(wǎng)、廣域網(wǎng)、互聯(lián)網(wǎng)等進(jìn)行通信。網(wǎng)絡(luò)接口 618可通過有線或無線連接與遠(yuǎn)程站點(diǎn)通信。通過通信媒介624B,計(jì)算機(jī)602可以傳送或接收控制邏輯628C。更具體地說,計(jì)算機(jī)602可以通過通信媒介624B來接收和傳送與控制邏輯630調(diào)制的載波(電磁信號(hào))。這里所述的任何包括存儲(chǔ)有控制邏輯(軟件)的計(jì)算器可用或可讀的介質(zhì)的儀器或產(chǎn)品都統(tǒng)稱為計(jì)算機(jī)程序產(chǎn)品或程序存儲(chǔ)裝置。這包括但不限于計(jì)算器602、主內(nèi)存 608、輔助存儲(chǔ)裝置610、可移除的存儲(chǔ)單元616和與控制邏輯630調(diào)制的載波。這種計(jì)算機(jī)程序產(chǎn)品包含當(dāng)一個(gè)或多個(gè)數(shù)據(jù)處理裝置被執(zhí)行時(shí)可引致數(shù)據(jù)處理裝置如這里所述般運(yùn)作的控制邏輯,并代表了本發(fā)明實(shí)施例。除了本文所述的,本發(fā)明可以用其它軟件、硬件和/或操作系統(tǒng)來實(shí)現(xiàn)。任何適合用于執(zhí)行本文所述的功能的軟件、硬件和操作系統(tǒng)都可以使用。雖然本發(fā)明以移動(dòng)計(jì)算環(huán)境來描述,本發(fā)明的背景同步可以應(yīng)用到移動(dòng)計(jì)算環(huán)境或可從本文所述的功能得益,但這只是作為說明性的,而不是限制本發(fā)明的使用環(huán)境。
權(quán)利要求
1.一種確保在數(shù)據(jù)庫環(huán)境中數(shù)據(jù)完整性的方法,該方法包括在遠(yuǎn)程數(shù)據(jù)系統(tǒng)開始一個(gè)進(jìn)程以同步來自遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)的遠(yuǎn)程數(shù)據(jù)與綜合數(shù)據(jù)庫的綜合數(shù)據(jù);和在同步進(jìn)程發(fā)生時(shí)利用遠(yuǎn)程數(shù)據(jù)的每一行元數(shù)據(jù)以允許事務(wù)訪問。
2.如權(quán)利要求1所述的方法還包括維持所述遠(yuǎn)程數(shù)據(jù)的每一行元數(shù)據(jù)在遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)。
3.如權(quán)利要求2所述的方法,其中所述元數(shù)據(jù)包括最少一上載情況值以表示同步其間行處理的情況。
4.如權(quán)利要求3所述的方法,其中第一上載情況值表示在同步開始之后沒有事務(wù)執(zhí)行發(fā)生。
5.如權(quán)利要求4所述的方法,其中第二上載情況值表示行需要同步。
6.如權(quán)利要求5所述的方法,其中第三上載情況值表示行不需要同步。
7.如權(quán)利要求3所述的方法還包括在同步其間當(dāng)行執(zhí)行發(fā)生時(shí)最少設(shè)置所述的上載情況值,并當(dāng)同步完成時(shí)最少清除上載情況值。
8.如權(quán)利要求1所述的方法,其中利用元數(shù)據(jù)還包括利用遠(yuǎn)程數(shù)據(jù)的每一行的上載情況值來表示每一行是否包括在或排除在同步進(jìn)程。
9.一種確保在數(shù)據(jù)庫環(huán)境中數(shù)據(jù)完整性的系統(tǒng),該系統(tǒng)包括 通信網(wǎng)絡(luò);連接到所述通信網(wǎng)路并包括綜合數(shù)據(jù)庫的第一系統(tǒng);和最少一連接到所述通信網(wǎng)路并包括綜合數(shù)據(jù)庫的第二系統(tǒng),所述第二系統(tǒng)開始一個(gè)進(jìn)程以同步來自遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)的遠(yuǎn)程數(shù)據(jù)與綜合數(shù)據(jù)庫的綜合數(shù)據(jù)并當(dāng)同步進(jìn)程發(fā)生時(shí)利用遠(yuǎn)程數(shù)據(jù)的每一行元數(shù)據(jù)以允許事務(wù)訪問到最少一第二系統(tǒng)的遠(yuǎn)程數(shù)據(jù)。
10.如權(quán)利要求9所述的系統(tǒng),其中所述第一系統(tǒng)還包括連接到綜合數(shù)據(jù)庫的同步系統(tǒng)。
11.如權(quán)利要求9所述的系統(tǒng),其中所述最少一第二系統(tǒng)通過使用遠(yuǎn)程數(shù)據(jù)的每行上載情況值來利用元數(shù)據(jù)以表示每一行是包括在或不包括在同步進(jìn)程之內(nèi)。
12.如權(quán)利要求9所述的系統(tǒng),其中所述最少一第二系統(tǒng)當(dāng)數(shù)據(jù)庫事務(wù)發(fā)生在遠(yuǎn)程數(shù)據(jù)庫時(shí)識(shí)別甚么時(shí)候同步進(jìn)程被啟動(dòng),并在行執(zhí)行發(fā)生時(shí)確定最少一上載值情況以表示同步其間行處理的情況。
13.如權(quán)利要求12所述的系統(tǒng),其中第一上載情況值表示在同步開始之后沒有事務(wù)執(zhí)行發(fā)生,其中第二上載情況值表示行需要同步,其中第三上載情況值表示行不需要同步。
14.如權(quán)利要求9所述的系統(tǒng),其中所述最少一第二系統(tǒng)包括移動(dòng)計(jì)算裝置。
15.一種包括記錄有計(jì)算器程序邏輯的計(jì)算器可用媒介以使處理器能夠確定數(shù)據(jù)庫環(huán)境中數(shù)據(jù)完整性的計(jì)算器程序產(chǎn)品,所述計(jì)算器程序邏輯包括使處理器能夠開始一個(gè)進(jìn)程以同步來自遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)的遠(yuǎn)程數(shù)據(jù)與綜合數(shù)據(jù)庫的綜合數(shù)據(jù)的手段;和使處理器能夠在同步進(jìn)程發(fā)生時(shí)利用遠(yuǎn)程數(shù)據(jù)的每一行元數(shù)據(jù)以允許事務(wù)訪問的手段。
16.如權(quán)利要求15所述的計(jì)算器程序產(chǎn)品,其中所述計(jì)算器程序邏輯還包括使處理器能夠維持遠(yuǎn)程數(shù)據(jù)的每一行元數(shù)據(jù)在遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)的手段。
17.如權(quán)利要求16所述的計(jì)算器程序產(chǎn)品,其中所述維持手段包括 使處理器能夠包括最少一上載情況值以表示同步其間行處理的情況的手段。
18.如權(quán)利要求17所述的計(jì)算器程序產(chǎn)品還包括使處理器能夠在同步其間當(dāng)行執(zhí)行發(fā)生時(shí)最少設(shè)置所述的上載情況值并當(dāng)同步完成時(shí)最少清除上載情況值的手段。
19.如權(quán)利要求17所述的計(jì)算器程序產(chǎn)品還包括使處理器能夠表示在同步開始之后沒有事務(wù)執(zhí)行發(fā)生時(shí)的第一上載情況值、行需要同步的第二上載情況值、行不需要同步的第三上載情況值的手段。
20.如權(quán)利要求15所述的計(jì)算器程序產(chǎn)品還包括使處理器能夠利用遠(yuǎn)程數(shù)據(jù)的每一行元數(shù)據(jù)的上載情況值來表示每一行是否包括在或排除在同步進(jìn)程的手段。
全文摘要
本發(fā)明描述了數(shù)據(jù)庫環(huán)境中維持?jǐn)?shù)據(jù)完整性的系統(tǒng)、方法和計(jì)算器程序產(chǎn)品。在運(yùn)作中,在遠(yuǎn)程數(shù)據(jù)系統(tǒng)開始一個(gè)進(jìn)程以同步來自遠(yuǎn)程數(shù)據(jù)庫系統(tǒng)的遠(yuǎn)程數(shù)據(jù)與綜合數(shù)據(jù)庫的綜合數(shù)據(jù)。在同步進(jìn)程發(fā)生時(shí)遠(yuǎn)程數(shù)據(jù)的每一行元數(shù)據(jù)被利用以允許事務(wù)訪問到遠(yuǎn)程數(shù)據(jù)。
文檔編號(hào)G06F17/00GK102272751SQ200980153521
公開日2011年12月7日 申請(qǐng)日期2009年12月3日 優(yōu)先權(quán)日2008年12月17日
發(fā)明者麥克·索德 申請(qǐng)人:移動(dòng)解決方案公司