專利名稱:用于驗(yàn)證遠(yuǎn)程數(shù)據(jù)庫的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例一般涉及計(jì)算機(jī)數(shù)據(jù)庫。更具體地說,這些實(shí)施例提供用于可靠地驗(yàn)證遠(yuǎn)程數(shù)據(jù)庫更新的方法和系統(tǒng)。
背景技術(shù):
隨著數(shù)據(jù)庫不斷增加的規(guī)模和高度分布式結(jié)構(gòu),已經(jīng)變得越來越難以保證網(wǎng)絡(luò)內(nèi)的相關(guān)數(shù)據(jù)庫包含相同版本的數(shù)據(jù)。如果出現(xiàn)對一個(gè)數(shù)據(jù)庫顯著的改變,則需要盡可能快地更新其它數(shù)據(jù)庫以包括這些改變。進(jìn)行這些更新可能涉及頻繁地將大量更新數(shù)據(jù)移動(dòng)到多個(gè)數(shù)據(jù)庫。這樣處理的潛在的復(fù)雜性可能是極大的。
這個(gè)問題也可能出現(xiàn)在其中通信是不可靠的系統(tǒng)內(nèi)。在這種情況下,可能在傳輸期間丟失數(shù)據(jù)。因此,必須重傳數(shù)據(jù),并再次全部更新其它數(shù)據(jù)庫。這種重復(fù)大大降低了系統(tǒng)效率以及數(shù)據(jù)庫包含最新數(shù)據(jù)的范圍。
圖1是根據(jù)本發(fā)明一種實(shí)施例的系統(tǒng)方框圖;圖2是根據(jù)本發(fā)明一種實(shí)施例的系統(tǒng)集線器的方框圖;圖3圖示根據(jù)本發(fā)明一種實(shí)施例的從本地?cái)?shù)據(jù)庫到遠(yuǎn)程數(shù)據(jù)庫的數(shù)據(jù)庫更新的示例性傳輸;圖4圖示根據(jù)本發(fā)明一種實(shí)施例的發(fā)送文件;圖5圖示根據(jù)本發(fā)明一種實(shí)施例的初始化發(fā)送文件;圖6是根據(jù)本發(fā)明一種實(shí)施例的發(fā)送文件和初始化發(fā)送文件生成的說明性定時(shí)圖;圖7是本發(fā)明一種實(shí)施例的流程圖,其中可生成本地?cái)?shù)據(jù)庫的更新文件;
圖8是本發(fā)明一種實(shí)施例的流程圖,其中遠(yuǎn)程數(shù)據(jù)庫可從本地?cái)?shù)據(jù)庫接收更新文件。
圖9是本發(fā)明另一種實(shí)施例的流程圖,其中遠(yuǎn)程數(shù)據(jù)庫可從本地?cái)?shù)據(jù)庫接收和驗(yàn)證更新文件。
圖10A是本發(fā)明一種實(shí)施例的流程圖,其中可驗(yàn)證更新文件。
圖10B是本發(fā)明一種實(shí)施例的流程圖,其中可驗(yàn)證更新文件。
圖11圖示根據(jù)本發(fā)明一種實(shí)施例的更新文件驗(yàn)證。
具體實(shí)施例方式
本發(fā)明的實(shí)施例提供用于通過網(wǎng)絡(luò)驗(yàn)證遠(yuǎn)程數(shù)據(jù)庫更新的方法和系統(tǒng)??杀容^本地?cái)?shù)據(jù)庫記錄和遠(yuǎn)程數(shù)據(jù)庫記錄,并可生成例外(exception)。每個(gè)例外可描述遠(yuǎn)程和本地?cái)?shù)據(jù)庫記錄之間的差異。例外標(biāo)識(shí)符可與每個(gè)例外相關(guān),其中例外標(biāo)識(shí)符可與記錄的標(biāo)識(shí)符相關(guān)。事件標(biāo)識(shí)符可與更新中的每個(gè)事件相關(guān),其中事件標(biāo)識(shí)符可與記錄的標(biāo)識(shí)符相關(guān)。可比較對應(yīng)于該記錄的事件和例外,以確定此更新是否有效。
圖1是圖示根據(jù)本發(fā)明一種實(shí)施例的系統(tǒng)的方框圖。通常,系統(tǒng)100可裝備有一大型常駐內(nèi)存的數(shù)據(jù)庫,接收搜索請求并通過網(wǎng)絡(luò)提供搜索響應(yīng)。例如,系統(tǒng)100可以是對稱的多處理(SMP)計(jì)算機(jī),例如由紐約的Armonk的國際商業(yè)機(jī)器公司制造的IBM RS/6000M80或S80、加利福尼亞州圣克來克的SunMicrosystems公司制造的Sun EnterprisTM10000等等。系統(tǒng)100也可以是多處理器個(gè)人計(jì)算機(jī),例如加利福尼亞州Palo Alto的Hewlett-Packard公司制造的Compaq ProLiantTMML530(包括兩個(gè)Intel PentiumIII866MHz處理器)。系統(tǒng)100還可以包括多處理操作系統(tǒng),例如IBM AIX4、Sun SolarisTM8操作環(huán)境、Red Hat Linux6.2等等。系統(tǒng)100可以通過網(wǎng)絡(luò)124接收定期更新,此更新可同時(shí)并入數(shù)據(jù)庫內(nèi)。通過在不使用數(shù)據(jù)庫鎖定或接入控制的情況下將每個(gè)更新并入數(shù)據(jù)庫,本發(fā)明的實(shí)施例可實(shí)現(xiàn)非常高的數(shù)據(jù)庫搜索和更新吞吐量。
在一種實(shí)施例中,系統(tǒng)100可包括耦合到總線101的至少一個(gè)處理器102-1。處理器102-1可包括內(nèi)存超高速緩存(例如L1超高速緩存,為了清楚未圖示出)。輔助存儲(chǔ)器超高速緩存103-1(例如L2超高速緩存、L2/L3超高速緩存等等)可駐留在處理器102-1和總線101之間。在優(yōu)選實(shí)施例中,系統(tǒng)100可包括耦合到總線101的多個(gè)處理器102-1、……、102-P。多個(gè)輔助存儲(chǔ)器超高速緩存103-1、……、103-P也可駐留在多個(gè)處理器102-1、……、102-P和總線101之間(例如監(jiān)聽(look-through)結(jié)構(gòu)),或者可選擇地,至少一個(gè)輔助存儲(chǔ)器超高速緩存103-1可耦合到總線101(例如后備模式)。系統(tǒng)100可包括耦合到總線101的存儲(chǔ)器104,例如隨機(jī)存取存儲(chǔ)器(RAM)等等,用于存儲(chǔ)信息和將由多個(gè)處理器102-1、……、102-P執(zhí)行的指令。
存儲(chǔ)器104可存儲(chǔ)大型數(shù)據(jù)庫,例如用于將因特網(wǎng)域名轉(zhuǎn)換成因特網(wǎng)地址,用于將姓名或電話號(hào)碼轉(zhuǎn)換成網(wǎng)絡(luò)地址,用于提供和更新用戶簡檔數(shù)據(jù),用于提供和更新用戶當(dāng)前數(shù)據(jù)等等。有利地,數(shù)據(jù)庫的大小和每秒轉(zhuǎn)換的數(shù)量可以非常大。例如,存儲(chǔ)器104可包括至少64GB的RAM,并可以裝備有500M(即500×106)記錄域名數(shù)據(jù)庫、500M記錄用戶數(shù)據(jù)庫、450M記錄電話號(hào)碼便攜性數(shù)據(jù)庫等等。
在示例性的64比特系統(tǒng)結(jié)構(gòu)上,例如包括耦合到至少64比特總線101和64比特存儲(chǔ)器104的至少一個(gè)64比特大型處理器102-1,可使用單個(gè)不可中斷操作將8字節(jié)指針值寫入8字節(jié)邊界上的存儲(chǔ)器地址(即,可被八整除的存儲(chǔ)器地址,或者例如8N)。通常,輔助存儲(chǔ)器超高速緩存103-1的存在可簡單地延遲8字節(jié)指針寫入存儲(chǔ)器104。例如,在一種實(shí)施例中,輔助存儲(chǔ)器超高速緩存103-1可以是操作在連續(xù)寫入(write-through)模式中的監(jiān)聽超高速緩存,所以單個(gè)的8字節(jié)存儲(chǔ)指令可在沒有中斷的情況下并在僅兩個(gè)系統(tǒng)時(shí)鐘周期內(nèi)將八字節(jié)的數(shù)據(jù)從處理器102-1移動(dòng)到存儲(chǔ)器104。在另一種實(shí)施例中,輔助存儲(chǔ)器超高速緩存1031可以是操作在回寫模式中的監(jiān)聽超高速緩存,所以8字節(jié)指針可以首先被寫入到輔助存儲(chǔ)器超高速緩存103-1,它隨后可以將該8字節(jié)指針寫入存儲(chǔ)器104,例如,當(dāng)將其中存儲(chǔ)有8字節(jié)指針的超高速緩存線寫入存儲(chǔ)器104時(shí)(即,例如當(dāng)特定的超高速緩存線或整個(gè)輔助存儲(chǔ)器超高速緩存被“清洗”時(shí))。
最后,從處理器102-1的角度來看,一旦將數(shù)據(jù)鎖存到處理器102-1的輸出引線上,在一個(gè)連續(xù)的不中斷的傳送中將所有八字節(jié)的數(shù)據(jù)寫入到存儲(chǔ)器104內(nèi),所述傳送可利用輔助存儲(chǔ)器超高速緩存103-1的作用而延遲,如果存在的話。從處理器102-2、……、102-P的角度來看,一旦將數(shù)據(jù)鎖存到處理器102-1的輸出引線上,則在一個(gè)連續(xù)的不中斷的傳送中將所有八字節(jié)的數(shù)據(jù)寫入到存儲(chǔ)器104內(nèi),這通過輔助存儲(chǔ)器超高速緩存103-1、……、103-P利用超高速緩存相干協(xié)議來實(shí)施,所述超高速緩存可延遲到存儲(chǔ)器104的寫入,如果存在的話。
然而,如果將8字節(jié)指針值被寫入到存儲(chǔ)器104內(nèi)錯(cuò)誤對準(zhǔn)的位置上,例如跨越8字節(jié)邊界的存儲(chǔ)器地址,則不能使用單個(gè)8字節(jié)存儲(chǔ)指令從存儲(chǔ)器102-1傳送所有的八字節(jié)數(shù)據(jù)。相反,處理器102-1可發(fā)出兩個(gè)單獨(dú)的不同存儲(chǔ)指令。例如,如果存儲(chǔ)器地址在8字節(jié)邊界之前的四字節(jié)開始(例如,8N-4),則第一存儲(chǔ)指令將4個(gè)最高有效字節(jié)傳送給存儲(chǔ)器104(例如,8N-4),而第二存儲(chǔ)指令將4個(gè)最低有效字節(jié)傳送給存儲(chǔ)器104(例如,8N)。重要地,在這兩個(gè)單獨(dú)的存儲(chǔ)指令之間,處理器102-1可被中斷,或者處理器102-1可放松總線101對另一系統(tǒng)組件(例如處理器102-P等等)的控制。因此,駐留在存儲(chǔ)器104內(nèi)的指針值將是無效的,直到處理器102-1可完成第二存儲(chǔ)指令。如果另一個(gè)組件開始到這個(gè)存儲(chǔ)器位置的單個(gè)不可中斷的存儲(chǔ)器讀取,則返回?zé)o效值作為估計(jì)可能有效的值。
類似地,可使用單個(gè)不可中斷的操作將新的4字節(jié)指針值寫入可被4整除的存儲(chǔ)器地址(例如4N)。注意在上面討論的例子中,可使用單個(gè)存儲(chǔ)指令將4字節(jié)指針值寫入8N-4存儲(chǔ)器位置。當(dāng)然,如果將4字節(jié)指針值寫入跨越4字節(jié)邊界的位置,例如4N-2,則不能使用單個(gè)存儲(chǔ)指令將所有的四字節(jié)數(shù)據(jù)從處理器102-1中傳送,并且在存儲(chǔ)器104內(nèi)駐留的指針值在一定的時(shí)間周期內(nèi)可能是無效的。
系統(tǒng)100還可以包括耦合到總線101的只讀存儲(chǔ)器(ROM)106或者其它的靜態(tài)存儲(chǔ)設(shè)備,用于為處理器102-1存儲(chǔ)靜態(tài)信息和指令。諸如磁盤或光盤的存儲(chǔ)設(shè)備108可被耦合到總線101,用于存儲(chǔ)信息和指令。系統(tǒng)100還可以包括耦合到總線101的顯示器110(例如LCD監(jiān)視器)和輸入設(shè)備112(例如鍵盤、鼠標(biāo)、跟蹤球等等)。系統(tǒng)100可以包括多個(gè)網(wǎng)絡(luò)接口114-1、……、114-O,其可以發(fā)送和接收承載代表各種類型信息的數(shù)字?jǐn)?shù)據(jù)流的電、電磁或光信號(hào)。在一種實(shí)施例中,網(wǎng)絡(luò)接口114-1可耦合到總線101和局域網(wǎng)(LAN)122,而網(wǎng)絡(luò)接口114-O可耦合到總線101和廣域網(wǎng)(WAN)124。多個(gè)網(wǎng)絡(luò)接口114-1……、114-O可支持各種網(wǎng)絡(luò)協(xié)議,包括諸如吉比特以太網(wǎng)(例如IEEE標(biāo)準(zhǔn)802.3-2002,2002年出版)、光纖信道(例如ANSI標(biāo)準(zhǔn)X.3230-1994,1994年出版)等等。多個(gè)網(wǎng)絡(luò)計(jì)算機(jī)120-1、……、120-N可耦合到LAN 122和WAN124。在一種實(shí)施例中,LAN 122和WAN 124可以是物理上不同的網(wǎng)絡(luò),而在另一個(gè)實(shí)施例中,LAN 122和WAN 124可以經(jīng)由網(wǎng)絡(luò)網(wǎng)關(guān)或路由器(為了清楚而未圖示出)??蛇x擇地,LAN 122和WAN 124可以是相同的網(wǎng)絡(luò)。
如上面所指出的,系統(tǒng)100可提供DNS解析(resolution)服務(wù)。在DNS解析實(shí)施例中,通??稍诰W(wǎng)絡(luò)傳送和數(shù)據(jù)查找功能之間劃分DNS解析服務(wù)。例如,系統(tǒng)100可以是為在大型數(shù)據(jù)組上數(shù)據(jù)查找而優(yōu)化的后端查找引擎(LUE),而多個(gè)網(wǎng)絡(luò)計(jì)算機(jī)120-2、……、120-N可以是為網(wǎng)絡(luò)處理和傳輸而優(yōu)化的多個(gè)前端協(xié)議引擎(PE)。LUE可以是功能強(qiáng)大的多處理器服務(wù)器,在存儲(chǔ)器104內(nèi)存儲(chǔ)整個(gè)DNS記錄集以便于高速高吞吐量搜索和更新。在一種可選實(shí)施例中,DNS解析服務(wù)可利用一系列功能強(qiáng)大的多處理器服務(wù)器或LUE來提供,每個(gè)在存儲(chǔ)器內(nèi)存儲(chǔ)整個(gè)DNS記錄集的子集以便于高速高吞吐量搜索和更新。
相反地,多個(gè)PE可以是通用的低簡檔的基于PC的機(jī)器,運(yùn)行高效的多任務(wù)操作系統(tǒng)(例如Red Hat Linux6.2),其最小化在LUE上的網(wǎng)絡(luò)處理傳送負(fù)載以最大化用于DNS解析的可用資源。PE可處理有線DNS協(xié)議的細(xì)微差異,響應(yīng)無效的DNS查詢,并通過LAN 122將有效的DNS查詢復(fù)用到LUE。在一種包括存儲(chǔ)DNS記錄子集的多個(gè)LUE的可選實(shí)施例中,PE可確定哪個(gè)LUE應(yīng)接收每個(gè)有效的DNS查詢,并復(fù)用有效的DNS查詢到合適的LUE。例如,可通過每秒將要處理的DNS查詢的數(shù)量和特定系統(tǒng)的性能特性來確定用于單個(gè)LUE的PE的數(shù)量。也可以使用其它的量度來確定合適的映射比和行為。
通常,可支持其它的大容量的基于查詢的實(shí)施例,例如包括電話號(hào)碼解析、SS7信令處理、地理位置確定、電話號(hào)碼到用戶映射、用戶位置和存在確定等等。
在一種實(shí)施例中,中央在線事務(wù)處理(OLTP)服務(wù)器140-1可耦合到WAN124,并接收來自多個(gè)信源的到數(shù)據(jù)庫142-1的添加、修改和刪除(即更新業(yè)務(wù))。OLTP服務(wù)器140-1可在WAN 124上向系統(tǒng)100發(fā)送更新,包括數(shù)據(jù)庫142-1的本地拷貝。OLTP服務(wù)器140-1可為了處理各種格式和協(xié)議的更新業(yè)務(wù)而被優(yōu)化,例如包括HyperText Transmission Protocol超文本傳輸協(xié)議(HTTP)、Registry Registrar Protocol注冊登記服務(wù)器協(xié)議(RRP)、Extensible ProvisioningProtocol可擴(kuò)展供應(yīng)協(xié)議(EPP)、Service Management System業(yè)務(wù)管理系/800Mechanized Generic Interface機(jī)械化通用接口(MGI)和其它在線提供協(xié)議。只讀LUE的格局可部署在集線器和輪輻(spoke)結(jié)構(gòu)中,以提供結(jié)合來自O(shè)LTP服務(wù)器140-1的大容量的遞增更新的高速搜索能力。
在一種可選實(shí)施例中,數(shù)據(jù)可分布在多個(gè)OLTP服務(wù)器140-1、……、140-S上,其每個(gè)都耦合到WAN 124。OLTP服務(wù)器140-1、……、140-S可從各個(gè)信源接收到對其相應(yīng)的數(shù)據(jù)庫142-1、……、142-S(為了清楚未圖示出)的添加、修改和刪除(即更新業(yè)務(wù))。OLTP服務(wù)器140-1、……、140-S可在WAN 124上向系統(tǒng)100發(fā)送更新,這可包括數(shù)據(jù)庫142-1、……、142-S的拷貝和其它動(dòng)態(tài)創(chuàng)建的數(shù)據(jù)等等。例如,在地理位置實(shí)施例中,OLTP服務(wù)器140-1、……、140-S可從多組遠(yuǎn)程傳感器接收更新業(yè)務(wù)。在另一種可選實(shí)施例中,多個(gè)網(wǎng)絡(luò)計(jì)算機(jī)120-1、……、120-N也可在WAN 124或LAN 122上從各個(gè)信源接收添加、修改和刪除(即更新業(yè)務(wù))。在這個(gè)實(shí)施例中,多個(gè)網(wǎng)絡(luò)計(jì)算機(jī)120-1、……、120-N可向系統(tǒng)100發(fā)送更新以及查詢。
在一種實(shí)施例中,系統(tǒng)100可包括遠(yuǎn)程數(shù)據(jù)庫(例如遠(yuǎn)程數(shù)據(jù)庫210)。例如可在WAN 124上從OLTP服務(wù)器140-1接收新信息或更新業(yè)務(wù)。在一種實(shí)施例中,新信息可包括對遠(yuǎn)程數(shù)據(jù)庫內(nèi)至少一個(gè)現(xiàn)有元素的修改。系統(tǒng)100可根據(jù)在網(wǎng)絡(luò)上接收到的新信息建立新的遠(yuǎn)程數(shù)據(jù)庫元素,并且不限制對遠(yuǎn)程數(shù)據(jù)庫的搜索訪問,使用單個(gè)不可中斷操作例如存儲(chǔ)指令將指向新元素的指針寫入遠(yuǎn)程數(shù)據(jù)庫。在一種實(shí)施例中,處理器102-1可包括至少n字節(jié)的字長度,存儲(chǔ)器104可包括至少n字節(jié)的寬度,并且存儲(chǔ)指令可將n字節(jié)寫入位于n字節(jié)邊界上的遠(yuǎn)程存儲(chǔ)器地址。在另一種實(shí)施例中,在將指針寫入遠(yuǎn)程數(shù)據(jù)庫之后,系統(tǒng)100可物理地從存儲(chǔ)器104刪除與新元素對應(yīng)的現(xiàn)有元素。
在DNS解析實(shí)施例中,每個(gè)PE(例如多個(gè)網(wǎng)絡(luò)計(jì)算機(jī)120-1、……、120-N中的每個(gè))可將在廣域網(wǎng)(例如WAN 124)上接收到的若干DNS查詢消息組合或復(fù)用成單個(gè)Request SuperPacket(請求超分組),并在局域網(wǎng)(例如LAN 122)上將該請求超分組發(fā)送給LUE(例如系統(tǒng)100)。LUE可將若干DNS查詢消息應(yīng)答組合或復(fù)用成單個(gè)Response SuperPacket(響應(yīng)超分組),并在局域網(wǎng)上將該響應(yīng)超分組發(fā)送給合適的PE。通常,請求或響應(yīng)超分組的最大長度可由物理網(wǎng)絡(luò)層(例如吉比特以太網(wǎng))的最大傳輸單元(MTU)來限制。例如,低于100字節(jié)和200字節(jié)的典型DNS查詢和應(yīng)答消息長度分別允許超過30個(gè)查詢被復(fù)用成單個(gè)請求超分組,以及超過15個(gè)應(yīng)答被復(fù)用成單個(gè)響應(yīng)超分組。然而,更少數(shù)量的查詢(例如20個(gè)查詢)可包括在單個(gè)請求超分組中,以避免在響應(yīng)上的MTU溢出(例如10個(gè)應(yīng)答)。對于更大的MTU長度,可相應(yīng)地增加復(fù)用的查詢和響應(yīng)的數(shù)量。
每個(gè)多任務(wù)PE可包括輸入線程和輸出線程,以便分別管理DNS查詢和應(yīng)答。例如,輸入線程可分解(un-marshal)來自廣域網(wǎng)上接收的輸入DNS查詢分組的DNS查詢組分,并將若干毫秒的查詢復(fù)用成單個(gè)請求超分組。隨后,輸入線程可在局域網(wǎng)上將該請求超分組發(fā)送給LUE。相反地,輸出線程可接收來自LUE的響應(yīng)超分組,解復(fù)用其中包含的應(yīng)答,并將各個(gè)字段安排(marshal)成有效的DNS應(yīng)答,隨后可以在廣域網(wǎng)上予以發(fā)送。通常,如上面所指出的,可以支持其它的大容量的基于查詢的實(shí)施例。
在一種實(shí)施例中,請求超分組也可以包括與每個(gè)DNS查詢有關(guān)的狀態(tài)信息,例如信源地址、協(xié)議類型等等。LUE可在響應(yīng)超分組內(nèi)包括狀態(tài)信息和相關(guān)的DNS應(yīng)答。隨后,每個(gè)PE可以使用從LUE發(fā)送的信息構(gòu)建并返回有效的DNS應(yīng)答消息。因此,每個(gè)PE可有利地作為無狀態(tài)機(jī)器操作,即可以根據(jù)在響應(yīng)超分組內(nèi)包含的信息構(gòu)成有效的DNS應(yīng)答。通常,LUE可以將響應(yīng)超分組返回給PE,從所述PE始發(fā)輸入超分組;然而,其它的變化顯然也是有可能的。
在一種可選實(shí)施例中,每個(gè)PE可維持與每個(gè)DNS查詢有關(guān)的狀態(tài)信息,并包括對請求超分組內(nèi)的狀態(tài)信息的參考或控制。LUE可在響應(yīng)超分組內(nèi)包括狀態(tài)信息參考和相關(guān)的DNS應(yīng)答。隨后,每個(gè)PE使用從LUE發(fā)送的狀態(tài)信息參考以及在其上保持的狀態(tài)信息來構(gòu)建并返回有效的DNS應(yīng)答消息。在這個(gè)實(shí)施例中,LUE可將響應(yīng)超分組返回給PE,從該P(yáng)E始發(fā)輸入超分組。
圖2是根據(jù)本發(fā)明一種實(shí)施例的集線器和輪輻結(jié)構(gòu)的方框圖。通常,該系統(tǒng)可包括本地?cái)?shù)據(jù)庫200(可包括在中央OLTP集線器140內(nèi))和通過諸如因特網(wǎng)或LAN 122的任意連接機(jī)制連接到本地?cái)?shù)據(jù)庫200的一個(gè)或多個(gè)遠(yuǎn)程數(shù)據(jù)庫210(可包括在LUE 100內(nèi))。這些數(shù)據(jù)庫可發(fā)送和接收更新數(shù)據(jù)。
參見圖3,在本發(fā)明的實(shí)施例中,本地?cái)?shù)據(jù)庫200向遠(yuǎn)程數(shù)據(jù)庫210發(fā)送F個(gè)發(fā)送文件(sendfile)300-1、……、300-F和初始化發(fā)送文件310,以更新遠(yuǎn)程數(shù)據(jù)庫210。更新文件可單獨(dú)發(fā)送或成批被發(fā)送,例如多個(gè)發(fā)送文件300、一個(gè)發(fā)送文件300和一個(gè)初始化發(fā)送文件310、多個(gè)發(fā)送文件300和一個(gè)初始化發(fā)送文件310、單獨(dú)的發(fā)送文件300或者單獨(dú)的初始化發(fā)送文件310。
在本發(fā)明的一種實(shí)施例中,處理器104可從本地?cái)?shù)據(jù)庫200接收包括更新數(shù)據(jù)的發(fā)送文件300和/或初始化發(fā)送文件310。系統(tǒng)150可通過通信接口118在遠(yuǎn)程數(shù)據(jù)庫210上接收發(fā)送文件300和初始化發(fā)送文件310。處理器104隨后可比較發(fā)送文件300或初始化發(fā)送文件310內(nèi)的更新數(shù)據(jù)與遠(yuǎn)程數(shù)據(jù)庫210內(nèi)的相應(yīng)數(shù)據(jù)。如果數(shù)據(jù)不同于遠(yuǎn)程數(shù)據(jù)庫210內(nèi)的數(shù)據(jù),則處理器104可將發(fā)送文件300或初始化發(fā)送文件310提供給遠(yuǎn)程數(shù)據(jù)庫210。因此,遠(yuǎn)程數(shù)據(jù)庫210隨后可具有與本地?cái)?shù)據(jù)庫200內(nèi)的更新數(shù)據(jù)匹配的已更新數(shù)據(jù)。
圖4圖示根據(jù)本發(fā)明一種實(shí)施例的發(fā)送文件300。文件300的字段可以包括諸如文件標(biāo)識(shí)符400、文件生成時(shí)間402、文件內(nèi)事務(wù)處理數(shù)量N 404、文件的總長度406、檢驗(yàn)和或任一這樣的錯(cuò)誤檢查指示符408和事務(wù)處理410-1、……、410-N(包括事務(wù)處理標(biāo)識(shí)符)。這些發(fā)送文件字段是用于說明本發(fā)明實(shí)施例的范疇的例子,而非限制其范疇。任何有用的字段都可以包括在發(fā)送文件300內(nèi)。
發(fā)送文件300包括在兩個(gè)時(shí)間點(diǎn)之間對本地?cái)?shù)據(jù)庫200的改變。這些改變例如可包括新標(biāo)識(shí)符的增加(即數(shù)據(jù)記錄的標(biāo)識(shí)符)、現(xiàn)有標(biāo)識(shí)符的刪除、與一標(biāo)識(shí)符相關(guān)的一個(gè)或多個(gè)數(shù)據(jù)記錄的修改、標(biāo)識(shí)符的重新命名、空操作等等。這些改變中的一個(gè)或多個(gè)可順序地出現(xiàn),或者可以是被調(diào)用的事務(wù)處理。發(fā)送文件300可包括這些事務(wù)處理的唯一標(biāo)識(shí)符。這些事務(wù)處理可以以它們出現(xiàn)在本地?cái)?shù)據(jù)庫200內(nèi)的順序被記錄在發(fā)送文件300內(nèi)。此外,對于包括一個(gè)以上改變的事務(wù)處理,這些改變可按照它們出現(xiàn)在本地?cái)?shù)據(jù)庫200內(nèi)的順序被記錄在事務(wù)處理內(nèi)。
通常,可以任意順序?qū)⑹聞?wù)處理標(biāo)識(shí)符分配給事務(wù)處理。即,事務(wù)處理標(biāo)識(shí)符不需要隨著時(shí)間單調(diào)地增加。例如,兩個(gè)順序的事務(wù)處理可具有繼之以10002的10004的事務(wù)處理標(biāo)識(shí)符。因此,可通過其在當(dāng)前文件300-F內(nèi)的位置或其在前一文件300-(F-1)內(nèi)的位置來確定事務(wù)處理出現(xiàn)的順序。通常,事務(wù)處理不可以跨越相鄰的文件300,以便在一個(gè)發(fā)送文件應(yīng)用內(nèi)全部完成遠(yuǎn)程數(shù)據(jù)庫更新。這防止由于網(wǎng)絡(luò)時(shí)延導(dǎo)致的更新中斷,所述網(wǎng)絡(luò)時(shí)延可導(dǎo)致遠(yuǎn)程數(shù)據(jù)庫210上的錯(cuò)誤數(shù)據(jù)。
圖5圖示根據(jù)本發(fā)明一種實(shí)施例的初始化發(fā)送文件310。初始化發(fā)送文件310的字段可包括諸如文件標(biāo)識(shí)符500、文件生成時(shí)間502、文件內(nèi)的事務(wù)處理數(shù)量N 504、文件的總長度506、檢驗(yàn)和或任一這樣的錯(cuò)誤檢查指示符508和整個(gè)本地?cái)?shù)據(jù)庫(數(shù)據(jù))的拷貝516。初始化發(fā)送文件310還可以包括字段510和字段512,其中字段510是在文件310生成之前生成的最后一個(gè)發(fā)送文件300的文件標(biāo)識(shí)符400,而字段512是在初始化發(fā)送文件310生成之前提交給本地?cái)?shù)據(jù)庫200的最后一個(gè)事務(wù)處理的標(biāo)識(shí)符。在本地和遠(yuǎn)程數(shù)據(jù)庫200、210內(nèi)的數(shù)據(jù)可分配給在數(shù)據(jù)庫200、210內(nèi)駐留的表格。數(shù)據(jù)庫200和210可支持任意數(shù)量的表格。所以,當(dāng)數(shù)據(jù)庫具有表格時(shí),初始化發(fā)送文件310可包括用于每個(gè)表格的字段,表示在該表格內(nèi)記錄的記錄數(shù)量。例如,域名數(shù)據(jù)庫可包括域表格和名稱服務(wù)器表格。因此,初始化發(fā)送文件可包括表示在域表格內(nèi)的記錄數(shù)量的字段和表示在名稱服務(wù)器表格內(nèi)的記錄數(shù)量的字段。該字段可指定諸如表格名稱、用于索引表格內(nèi)記錄的關(guān)鍵詞以及表格內(nèi)的記錄數(shù)量。此外,初始化發(fā)送文件310可包括表示初始化發(fā)送文件310的版本(通常是1.0)的字段。這些初始化發(fā)送文件字段是用于說明本發(fā)明實(shí)施例的范疇的例子,而非限制其范疇。任何有用的字段都可以包括在初始化發(fā)送文件310內(nèi)。
初始化發(fā)送文件310可包括諸如整個(gè)本地?cái)?shù)據(jù)庫200的讀取一致的拷貝,如先前所描述的。初始化發(fā)送文件310可以在ts和tf之間的時(shí)間點(diǎn)t上變得與本地?cái)?shù)據(jù)庫200一致,其中ts是初始化發(fā)送文件310的生成開始的時(shí)間,tf是生成完成的時(shí)間。如此,可在初始化發(fā)送文件310內(nèi)出現(xiàn)的唯一操作是“添加(add)”操作。即,當(dāng)生成初始化發(fā)送文件310時(shí),在時(shí)間t上整個(gè)本地?cái)?shù)據(jù)庫200的拷貝可記錄在初始化發(fā)送文件310內(nèi)。因此,可執(zhí)行“添加”操作,以便在初始化發(fā)送文件310內(nèi)記錄本地?cái)?shù)據(jù)庫200??梢砸匀我忭樞蛟诔跏蓟l(fā)送文件310內(nèi)記錄標(biāo)識(shí)符??蛇x擇地,在存在外部標(biāo)識(shí)符時(shí),可在參考數(shù)據(jù)記錄之前記錄參考的數(shù)據(jù)記錄。
字段510和512的添加可以在生成初始化發(fā)送文件310的同時(shí)向初始化發(fā)送文件310提供可生成并提交給遠(yuǎn)程數(shù)據(jù)庫210的發(fā)送文件300的一些知識(shí)。然而,發(fā)送文件300和初始化發(fā)送文件310的生成可對于一方的生成不取決于另一方的方面相互去耦合。這樣一種結(jié)構(gòu)和處理可防止低效的方法,其中發(fā)送文件生成和應(yīng)用可中止直到初始化發(fā)送文件生成可以被完成。通過在生成初始化發(fā)送文件310時(shí)繼續(xù)生成和應(yīng)用發(fā)送文件300,如在本發(fā)明的一種實(shí)施例中,可完成發(fā)送文件300的強(qiáng)大的錯(cuò)誤檢查,并可以在遠(yuǎn)程數(shù)據(jù)庫210上設(shè)置限制,例如唯一的限制或外部標(biāo)識(shí)符限制。限制的設(shè)置可通過不允許違反遠(yuǎn)程數(shù)據(jù)庫210的關(guān)系模型的事務(wù)處理來保護(hù)遠(yuǎn)程數(shù)據(jù)庫210內(nèi)數(shù)據(jù)的完整性。例如,唯一的限制可防止同一關(guān)鍵字被一次以上存儲(chǔ)在數(shù)據(jù)庫210內(nèi)。
圖6是根據(jù)本發(fā)明一種實(shí)施例的發(fā)送文件和初始化發(fā)送文件生成的示意定時(shí)圖。在圖6中,在規(guī)定的時(shí)間間隔上生成發(fā)送文件300(sf-1至sf-21)。在一種可選擇的實(shí)施例中,可在不規(guī)則的時(shí)間間隔上生成發(fā)送文件300。通常,發(fā)送文件的生成并不使用整個(gè)時(shí)間間隔。例如,如果在5分鐘間隔上生成文件,則并不使用整個(gè)5分鐘來完成文件的生成。此外,如果在生成發(fā)送文件300的同時(shí)在本地?cái)?shù)據(jù)庫200內(nèi)出現(xiàn)改變,則將在下一個(gè)發(fā)送文件300內(nèi)捕獲這些改變。例如,如果發(fā)送文件sf-4在12:05:00開始生成并在12:05:02完成,則在發(fā)送文件sf-5(例如300-5)內(nèi)捕獲在12:05:00和12:05:02之間出現(xiàn)的本地?cái)?shù)據(jù)庫200的任意改變,其中發(fā)送文件捕獲從12:05:00到12:10:00的時(shí)間周期。
在圖6中圖示了發(fā)送文件300-5和300-19。這些文件除了其它字段之外還圖示了文件標(biāo)識(shí)符601(sf-5、sf-19)、文件生成時(shí)間603和事務(wù)處理標(biāo)識(shí)符605(例如10002)。注意事務(wù)處理標(biāo)識(shí)符可以不被單調(diào)地排序。如前所述,事務(wù)處理標(biāo)識(shí)符可以具有隨機(jī)值。然而,相關(guān)的事務(wù)處理本身以它們出現(xiàn)在本地?cái)?shù)據(jù)庫200內(nèi)的順序被記錄在發(fā)送文件300內(nèi)。
因?yàn)槌跏蓟l(fā)送文件310生成和發(fā)送文件300生成可以被去耦合,所以可在任意時(shí)間上生成初始化發(fā)送文件310。例如,初始化發(fā)送文件310可在發(fā)送文件300的生成之前、期間或之后生成。圖6圖示在第四和第五發(fā)送文件(例如sf-4和sf-5)之間生成的初始化發(fā)送文件310。
在一種實(shí)施例中,初始化發(fā)送文件310除了其它字段之外還包括文件標(biāo)識(shí)符610(isf-1)、在初始化發(fā)送文件生成之前生成的最后一個(gè)發(fā)送文件的文件標(biāo)識(shí)符615和在初始化發(fā)送文件生成之前提交的最后一個(gè)事務(wù)處理的事務(wù)處理標(biāo)識(shí)符620。在這個(gè)例子中,所生成的最后一個(gè)發(fā)送文件是發(fā)送文件sf-4,所提交的最后一個(gè)事務(wù)處理是事務(wù)處理10001。初始化發(fā)送文件310在12:07:29上開始生成611。在初始化發(fā)送文件310開始生成的同時(shí),在發(fā)送文件300-5(sf-5)內(nèi)的前一半事務(wù)處理即事務(wù)處理10002、10005和10001已經(jīng)提交給本地?cái)?shù)據(jù)庫2000。因此,初始化發(fā)送文件310可能已經(jīng)獲知這些事務(wù)處理,并可以捕獲在初始化發(fā)送文件310內(nèi)的這些事務(wù)處理。然而,初始化發(fā)送文件310可能不知道在初始化發(fā)送文件生成開始之后出現(xiàn)的隨后的事務(wù)處理10003和10004。
在可以生成初始化發(fā)送文件310的同時(shí),開始于發(fā)送文件300-5的發(fā)送文件可繼續(xù)在規(guī)則的時(shí)間間隔上被生成。這些文件可被發(fā)送給遠(yuǎn)程數(shù)據(jù)庫210并被應(yīng)用。
初始化發(fā)送文件310可以在第18和第19發(fā)送文件300(sf-18和sf-19)的生成中間的1:15:29上完成生成,并且可以不影響第19發(fā)送文件300-19的生成。
在遠(yuǎn)程數(shù)據(jù)庫210上接收和裝載初始化發(fā)送文件310之后,遠(yuǎn)程數(shù)據(jù)庫210可以不考慮在初始化發(fā)送文件310生成之前生成的發(fā)送文件。這可能是由于例如初始化發(fā)送文件310包括在先前的發(fā)送文件300內(nèi)記錄的對本地?cái)?shù)據(jù)庫200的所有改變。在這個(gè)例子中,遠(yuǎn)程數(shù)據(jù)庫210可能不需要考慮第一至第四發(fā)送文件(sf-1至sf-4)。在這些發(fā)送文件sf-1至sf-4內(nèi)記錄的改變也可以記錄在初始化發(fā)送文件310內(nèi)。這些先前的發(fā)送文件(sf-1至sf-4)可以被刪除,或者可選擇地被歸檔。類似地,遠(yuǎn)程數(shù)據(jù)庫210可以不考慮在初始化發(fā)送文件310的生成之前提交的在后向生成的發(fā)送文件300內(nèi)包括的事務(wù)處理。當(dāng)生成初始化發(fā)送文件310時(shí),初始化發(fā)送文件310可包括這些事務(wù)處理。例如,因?yàn)檫@些事務(wù)處理,遠(yuǎn)程數(shù)據(jù)庫210可以不需要考慮發(fā)送文件sf-5的前三個(gè)事務(wù)處理10002、10005和10001。在發(fā)送文件sf-5內(nèi)記錄的這些事務(wù)處理也可以被記錄在初始化發(fā)送文件310內(nèi)。這些提交的事務(wù)處理可以被刪除,或者可選擇地被歸檔。
圖7是本發(fā)明一種實(shí)施例的流程圖,其中可生成本地?cái)?shù)據(jù)庫的更新文件。系統(tǒng)可根據(jù)本地?cái)?shù)據(jù)庫的遞增改變來生成(705)多個(gè)定期更新。每個(gè)更新可包括一個(gè)或多個(gè)事務(wù)處理。該系統(tǒng)隨后可將這些定期更新發(fā)送(710)給遠(yuǎn)程數(shù)據(jù)庫。在生成定期更新的同時(shí),系統(tǒng)可以在開始時(shí)間上生成(715)初始化更新。初始化更新可包括整個(gè)本地?cái)?shù)據(jù)庫的版本。系統(tǒng)可確定(720)在開始時(shí)間之前生成的最后一個(gè)定期更新和在開始時(shí)間之前提交的最后一個(gè)事務(wù)處理。隨后,系統(tǒng)可將初始化更新發(fā)送(725)給遠(yuǎn)程數(shù)據(jù)庫。初始化更新可包括與所生成的最后一個(gè)定期更新有關(guān)的更新標(biāo)識(shí)符和與提交的最后一個(gè)事務(wù)處理有關(guān)的事務(wù)處理標(biāo)識(shí)符。
例如,OLTP 140可在某一規(guī)則或不規(guī)則的時(shí)間間隔上生成(705)發(fā)送文件300。OLTP 140可以將發(fā)送文件300發(fā)送(710)給遠(yuǎn)程數(shù)據(jù)庫210。在生成發(fā)送文件300的同時(shí),OLTP 140可以在開始時(shí)間611上開始生成(715)初始化發(fā)送文件310。初始化發(fā)送文件310可以包括整個(gè)本地?cái)?shù)據(jù)庫200的拷貝。OLTP 140隨后可以確定在用于生成初始化發(fā)送文件310的開始時(shí)間611之前生成的最后一個(gè)發(fā)送文件300和在用于生成初始化發(fā)送文件301的開始時(shí)間611之前提交的最后一個(gè)事務(wù)處理。OLTP 140隨后可以將初始化發(fā)送文件310發(fā)送(725)給遠(yuǎn)程數(shù)據(jù)庫210。初始化發(fā)送文件310可以包括與所生成的最后一個(gè)發(fā)送文件300相關(guān)的發(fā)送文件標(biāo)識(shí)符615和與所提交的最后一個(gè)事務(wù)處理有關(guān)的事務(wù)處理標(biāo)識(shí)符620。
圖8是本發(fā)明的一種實(shí)施例的流程圖,其中遠(yuǎn)程數(shù)據(jù)庫可以從本地?cái)?shù)據(jù)庫接收更新文件。系統(tǒng)可以接收(805)多個(gè)定期更新。每個(gè)更新可包括一個(gè)或多個(gè)事務(wù)處理。定期更新可以被單獨(dú)地或成批地接收。系統(tǒng)可以在某個(gè)時(shí)間上接收(810)初始化更新。初始化更新可以包括整個(gè)本地?cái)?shù)據(jù)庫的版本。系統(tǒng)可以從初始化更新中讀取(815)最后一個(gè)定期更新標(biāo)識(shí)符和最后一個(gè)事務(wù)處理標(biāo)識(shí)符。系統(tǒng)隨后可以確定(820)與更新標(biāo)識(shí)符相關(guān)的最后一個(gè)定期更新和與事務(wù)處理標(biāo)識(shí)符有關(guān)的最后一個(gè)事務(wù)處理。定期更新和事務(wù)處理可以是在初始化更新生成之前分別生成和提交的最后一個(gè)。系統(tǒng)可以將在相應(yīng)定期更新內(nèi)剩余的未提交事務(wù)處理應(yīng)用(825)到遠(yuǎn)程數(shù)據(jù)庫。系統(tǒng)隨后可以將在最后一個(gè)定期更新之后生成的剩余定期更新應(yīng)用(830)到遠(yuǎn)程數(shù)據(jù)庫。應(yīng)用初始化更新有利地補(bǔ)償任何先前丟失的定期更新。
例如,LUE 100可在某個(gè)規(guī)則或不規(guī)則時(shí)間間隔上接收(805)發(fā)送文件300。發(fā)送文件300可以單獨(dú)或成批地被接收。LUE 100可以在某個(gè)時(shí)間上接收(810)初始化發(fā)送文件310。LUE 100可以從初始化發(fā)送文件310中讀取(815)發(fā)送文件標(biāo)識(shí)符615和事務(wù)處理標(biāo)識(shí)符620。LUE 100隨后可以確定(820)與發(fā)送文件標(biāo)識(shí)符615相關(guān)的發(fā)送文件300和與事務(wù)處理標(biāo)識(shí)符620相關(guān)的事務(wù)處理605。發(fā)送文件和事務(wù)處理可以是在初始化發(fā)送文件310生成之前所分別生成和提交的最后一個(gè)發(fā)送文件和事務(wù)處理。LUE 100可以將在相應(yīng)發(fā)送文件300內(nèi)的剩余未提交事務(wù)處理605應(yīng)用(825)到遠(yuǎn)程數(shù)據(jù)庫210。LUE 100隨后可以將在最后一個(gè)發(fā)送文件sf-4之后的剩余發(fā)送文件300應(yīng)用(830)到遠(yuǎn)程數(shù)據(jù)庫210。
在一種可選實(shí)施例中,例如,LUE 100可以丟棄或歸檔尚未應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫210和/或具有在初始化發(fā)送文件生成時(shí)間611之前的生成時(shí)間603的發(fā)送文件300。丟棄或歸檔的發(fā)送文件300可以包括與發(fā)送文件標(biāo)識(shí)符615相關(guān)的發(fā)送文件sf-4。
可以理解在應(yīng)用初始化發(fā)送文件310之后,因?yàn)檫h(yuǎn)程數(shù)據(jù)庫210可能變得與初始化發(fā)送文件310讀取一致,所以可能已經(jīng)應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫210的任意隨后的發(fā)送文件300可能被丟失。因此,可重新應(yīng)用這些隨后的發(fā)送文件300。
在本發(fā)明的一種實(shí)施例中,在沒有確認(rèn)即在沒有ACK/NACK信號(hào)以指示文件被成功接收的情況下,發(fā)送文件300和初始化發(fā)送文件310可以從本地?cái)?shù)據(jù)庫200被發(fā)送給遠(yuǎn)程數(shù)據(jù)庫210。這有利地降低了ACK/NACK信號(hào)可能產(chǎn)生的開銷。
在一種可選實(shí)施例中,ACK/NACK信號(hào)可以從遠(yuǎn)程數(shù)據(jù)庫210被發(fā)送,以表示文件的成功接收。在這個(gè)實(shí)施例中,可以在不可靠通信的系統(tǒng)內(nèi)發(fā)送ACK/NACK信號(hào)。
圖9是本發(fā)明另一種實(shí)施例的流程圖,其中系統(tǒng)可驗(yàn)證從本地?cái)?shù)據(jù)庫發(fā)送的并在遠(yuǎn)程數(shù)據(jù)庫上接收的更新文件。在此,系統(tǒng)可發(fā)送(905)多個(gè)定期更新。每個(gè)更新可包括一個(gè)或多個(gè)事務(wù)處理。定期更新可以被單獨(dú)地或成批地發(fā)送。系統(tǒng)可以在某個(gè)時(shí)間上發(fā)送(910)初始化更新,并將初始化更新應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫。初始化更新可以包括整個(gè)本地?cái)?shù)據(jù)庫的版本。系統(tǒng)可以通過比較這些數(shù)據(jù)庫首先識(shí)別(915)在本地和遠(yuǎn)程數(shù)據(jù)庫之間的差異。系統(tǒng)可以確定(920)這些差異是有效的還是錯(cuò)誤的。根據(jù)本發(fā)明的一種實(shí)施例,系統(tǒng)隨后可以將這些定期更新應(yīng)用(925)于遠(yuǎn)程數(shù)據(jù)庫。因?yàn)閺谋镜財(cái)?shù)據(jù)庫接收更新,這個(gè)實(shí)施例有利地可以保證在遠(yuǎn)程數(shù)據(jù)庫內(nèi)沒有錯(cuò)誤。
例如,OLTP 140可以在某個(gè)規(guī)則或不規(guī)則的時(shí)間間隔上將發(fā)送文件300發(fā)送(905)給遠(yuǎn)程數(shù)據(jù)庫210。發(fā)送文件300可以單獨(dú)地發(fā)送或者成批地被發(fā)送。OLTP 140可以在某個(gè)時(shí)間上將初始化發(fā)送文件310發(fā)送(910)給LUE 100,并且LUE 100可以將初始化發(fā)送文件310應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫210。OLTP 140可以比較本地?cái)?shù)據(jù)庫200與遠(yuǎn)程數(shù)據(jù)庫210,并識(shí)別(915)它們之間的差異。OLTP 140隨后可以確定(920)這些差異是有效的還是錯(cuò)誤的。根據(jù)本發(fā)明的一種實(shí)施例,OLTP 140隨后可以通知LUE 100將發(fā)送文件300應(yīng)用(925)于遠(yuǎn)程數(shù)據(jù)庫210。LUE 100隨后可以將發(fā)送文件300應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫210。
在一種可選實(shí)施例中,系統(tǒng)可以在識(shí)別和驗(yàn)證差異之前應(yīng)用發(fā)送文件和初始化發(fā)送文件。可選擇地,系統(tǒng)也可以在識(shí)別和驗(yàn)證差異之后應(yīng)用發(fā)送文件和初始化發(fā)送文件。
可以理解為了將所發(fā)送的數(shù)據(jù)應(yīng)用于目的地,可以對通過網(wǎng)絡(luò)從信源發(fā)送到目的地的任何數(shù)據(jù)執(zhí)行驗(yàn)證處理。
圖10A是根據(jù)本發(fā)明的發(fā)送文件和初始化發(fā)送文件驗(yàn)證的實(shí)施例的流程圖。在發(fā)送多個(gè)定期更新和初始化更新給遠(yuǎn)程數(shù)據(jù)庫之后,系統(tǒng)可以驗(yàn)證這些更新。每個(gè)更新可以包括在本地?cái)?shù)據(jù)庫上執(zhí)行的一個(gè)或多個(gè)事務(wù)處理。每個(gè)事務(wù)處理可以包括一個(gè)或多個(gè)事件。事件是針對數(shù)據(jù)庫內(nèi)的數(shù)據(jù)的數(shù)據(jù)庫動(dòng)作或事件,例如添加、修改和刪除等等。
首先,系統(tǒng)可以比較(1000)遠(yuǎn)程數(shù)據(jù)庫內(nèi)的記錄與本地?cái)?shù)據(jù)庫內(nèi)的相應(yīng)記錄。系統(tǒng)可以生成(1005)描述遠(yuǎn)程和本地?cái)?shù)據(jù)庫記錄之間差異的例外,其中可以為每個(gè)差異生成一個(gè)例外。差異可以是同一記錄的不同版本之間至少一個(gè)數(shù)據(jù)值中的任何不同。例如,本地?cái)?shù)據(jù)庫內(nèi)的數(shù)據(jù)記錄可以是(12345,xyz.com,123.234.345)。假定是相同的遠(yuǎn)程數(shù)據(jù)庫內(nèi)的相應(yīng)數(shù)據(jù)記錄可以是(12345,abc.com,123.234.345)。因此,在該記錄的第二數(shù)據(jù)值上存在差異。因而,本發(fā)明的一種實(shí)施例可以生成描述此差異的例外。例外可以通過簡單地表示存在差異、通過指定差異的位置、通過描述差異中兩個(gè)數(shù)據(jù)值之間的不同等來描述差異。本地?cái)?shù)據(jù)庫內(nèi)的數(shù)據(jù)記錄對應(yīng)于遠(yuǎn)程數(shù)據(jù)庫內(nèi)的數(shù)據(jù)記錄(反之亦然),如果假定這兩個(gè)記錄包含相同數(shù)據(jù)的話。
可以理解差異可以指在一個(gè)記錄內(nèi)的一個(gè)或多個(gè)數(shù)據(jù)值之間或者整個(gè)記錄的差異。
系統(tǒng)可以相關(guān)(1010)例外標(biāo)識(shí)符與每個(gè)例外,其中例外標(biāo)識(shí)符可以與記錄的標(biāo)識(shí)符相關(guān)。例如,數(shù)據(jù)記錄(12345,xyz.com,123.234.345)可以具有標(biāo)識(shí)符d10。因此,例外標(biāo)識(shí)符也可以是d10。每個(gè)例外可以分類為屬于多種例外(或差異)類型中的任一類型。例外列表可以被形成以包括將該例外劃分在其中的例外類型和例外標(biāo)識(shí)符。隨后將詳細(xì)地描述例外列表和不同的例外類型。系統(tǒng)還可以相關(guān)(1015)事件標(biāo)識(shí)符與更新中的每個(gè)事件,其中事件標(biāo)識(shí)符可以與記錄的標(biāo)識(shí)符相關(guān)。例如,數(shù)據(jù)記錄(12345,xyz.com,123.234.345)可包括標(biāo)識(shí)符d10。因此,事件標(biāo)識(shí)符也可以是d10。更新中的每個(gè)事件可從事件歷史中被發(fā)現(xiàn)。事件歷史可以是在一個(gè)時(shí)間周期上對本地?cái)?shù)據(jù)庫內(nèi)的記錄執(zhí)行的事件的列表等。隨后將詳細(xì)地描述事件歷史。
系統(tǒng)隨后可以確定(1020)記錄的更新是否有效。圖10B是驗(yàn)證確定的實(shí)施例的流程圖。此確定可以如下執(zhí)行。可以比較(1022)每個(gè)事件與每個(gè)例外。如果通過事件證明(1024)每個(gè)例外合理,則可以將更新指定(1026)為有效的,并可以將更新應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫。反之,如果通過事件未證明(1024)每個(gè)例外合理,則可以將更新指定(1028)為無效的,并可以將例外記錄為錯(cuò)誤。當(dāng)事件標(biāo)識(shí)符對應(yīng)于例外標(biāo)識(shí)符并且相關(guān)事件對應(yīng)于與例外類型相關(guān)的事件的有效序列時(shí),可以證明例外合理。隨后將詳細(xì)地描述有效的序列。如果例外被證明合理,則系統(tǒng)可以從例外列表中除去該例外標(biāo)識(shí)符。被證明合理的例外可以表示差異是有效的差異,例如,遠(yuǎn)程數(shù)據(jù)庫尚未接收到更新,但是當(dāng)接收到更新時(shí)將實(shí)際上匹配本地?cái)?shù)據(jù)庫。
在驗(yàn)證期間,系統(tǒng)可以識(shí)別出定期和初始化更新中的潛在錯(cuò)誤或故障。系統(tǒng)可確保這些更新可以是結(jié)構(gòu)和語義上正確的,這些更新可以在不生成例外或否則討厭地暫停的情況下成功地被應(yīng)用,本地和遠(yuǎn)程數(shù)據(jù)庫之間的比較可準(zhǔn)確地檢測錯(cuò)誤,并且高簡檔(high-profile)數(shù)據(jù)不被意外地刪除。系統(tǒng)可確保定期和初始化更新可以被成功地應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫。
通過試圖在驗(yàn)證過程中將更新應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫,可以有利地發(fā)現(xiàn)許多錯(cuò)誤。例如,在應(yīng)用試圖期間可以發(fā)現(xiàn)以數(shù)據(jù)為中心的錯(cuò)誤、目標(biāo)已經(jīng)存在于遠(yuǎn)程數(shù)據(jù)庫內(nèi)的警告或存在外部標(biāo)識(shí)符違背的警告。因而,在執(zhí)行本發(fā)明的一種實(shí)施例的驗(yàn)證處理之后,系統(tǒng)可以試圖將這些更新應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫。該試圖可能失敗,這可以表示在更新中存在使更新無效的附加錯(cuò)誤。因此,不再進(jìn)一步試圖將這些更新應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫。
在一種可選的實(shí)施例中,可以試圖在執(zhí)行驗(yàn)證之前應(yīng)用至少一個(gè)更新。如果該試圖失敗,則可以跳過該驗(yàn)證,并丟棄該更新。另一方面,如果該試圖成功,則可以執(zhí)行驗(yàn)證,并保持有效的更新,和對于差異記錄無效的更新。
在一種示例的實(shí)施例中,OLTP 140可以驗(yàn)證發(fā)送文件300和初始化發(fā)送文件310,以確??沙晒Φ貙l(fā)送文件300和初始化發(fā)送文件310應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫210。
在可選實(shí)施例中,網(wǎng)絡(luò)計(jì)算機(jī)121、LUE 100或者任何現(xiàn)有系統(tǒng)的組合可以執(zhí)行驗(yàn)證。
參見圖10A,OLTP 140可以比較本地?cái)?shù)據(jù)庫200和遠(yuǎn)程數(shù)據(jù)庫210,以確定它們之間的任何例外(或差異)。例外可以包括三種類型數(shù)據(jù)可能在遠(yuǎn)程數(shù)據(jù)庫210內(nèi)而不在本地?cái)?shù)據(jù)庫200內(nèi);數(shù)據(jù)可能在本地?cái)?shù)據(jù)庫200內(nèi)而不在遠(yuǎn)程數(shù)據(jù)庫210內(nèi);或者,相應(yīng)的數(shù)據(jù)可能在本地?cái)?shù)據(jù)庫200和遠(yuǎn)程數(shù)據(jù)庫210內(nèi),但是數(shù)據(jù)可能不同。當(dāng)然,相應(yīng)的數(shù)據(jù)可以在本地?cái)?shù)據(jù)庫200和遠(yuǎn)程數(shù)據(jù)庫210內(nèi),并且數(shù)據(jù)可以是相同的,在這種情況下,可以將數(shù)據(jù)視為有效的,因而不需要OLTP 140的進(jìn)一步處理。
可以理解差異可以指記錄內(nèi)的一個(gè)或多個(gè)數(shù)據(jù)值或者整個(gè)記錄。
因此,OLTP 140可以比較(1000)本地?cái)?shù)據(jù)庫200和遠(yuǎn)程數(shù)據(jù)庫210內(nèi)的相應(yīng)記錄。OLTP 140可以生成(1005)描述遠(yuǎn)程數(shù)據(jù)庫210內(nèi)的記錄和本地?cái)?shù)據(jù)庫200內(nèi)的記錄之間差異的例外,其中可以為每個(gè)差異生成例外。OLTP140可以相關(guān)(1010)例外標(biāo)識(shí)符與每個(gè)例外,其中例外標(biāo)識(shí)符可以與記錄的標(biāo)識(shí)符相關(guān)。例外列表可以被形成以包括例外類型和用于屬于該例外類型的例外的例外標(biāo)識(shí)符。在一種實(shí)施例中,如果例外屬于第一例外類型,該例外可以被指定為“列表1”例外(或差異),如果該例外屬于第二例外類型,該例外可以被指定為“列表2”例外,或者如果該例外屬于第三例外類型,該例外可以被指定為“列表3”例外。圖11圖示一個(gè)示例性的例外列表1140。
可以理解例外標(biāo)識(shí)符出現(xiàn)在例外列表上可能不隱含發(fā)送文件300或初始化發(fā)送文件310是壞的,因?yàn)槔缬捎谠趯Ρ镜財(cái)?shù)據(jù)庫200的改變和應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫310的更新之間的時(shí)延,導(dǎo)致所有三種類型的例外可能合理地出現(xiàn)。這種時(shí)延可能是由于諸如網(wǎng)絡(luò)擁塞而導(dǎo)致的。因此,驗(yàn)證可以提供從錯(cuò)誤數(shù)據(jù)中去除合理情況的機(jī)制。
對于初始化發(fā)送文件310,OLTP 140可以通過對兩個(gè)數(shù)據(jù)庫200和210執(zhí)行雙向全表掃描來比較本地?cái)?shù)據(jù)庫200和遠(yuǎn)程數(shù)據(jù)庫210。即,可以比較本地?cái)?shù)據(jù)庫200內(nèi)的所有數(shù)據(jù)和遠(yuǎn)程數(shù)據(jù)庫210內(nèi)的所有數(shù)據(jù)。隨后,可以比較遠(yuǎn)程數(shù)據(jù)庫210中的所有數(shù)據(jù)和本地?cái)?shù)據(jù)庫200中的所有數(shù)據(jù)。這有利地提供了數(shù)據(jù)庫200和210的窮盡比較以發(fā)現(xiàn)所有的差異。
對于發(fā)送文件300來說,OLTP 140可以僅比較在發(fā)送文件300內(nèi)記錄的本地?cái)?shù)據(jù)庫200和遠(yuǎn)程數(shù)據(jù)庫210內(nèi)的數(shù)據(jù)記錄。這有利地提供快速查詢以發(fā)現(xiàn)目標(biāo)差異。
可選擇地,可執(zhí)行在初始化發(fā)送文件310和/或發(fā)送文件300內(nèi)數(shù)據(jù)的隨機(jī)取樣。OLTP 140隨后可以比較本地?cái)?shù)據(jù)庫200和遠(yuǎn)程數(shù)據(jù)庫210內(nèi)的隨機(jī)取樣的數(shù)據(jù)。
例外列表1140可以對應(yīng)于丟失事件,例如與遠(yuǎn)程數(shù)據(jù)庫210不一致的對本地?cái)?shù)據(jù)庫200的添加(add)、修改(mod)和刪除(del)。所以,為了識(shí)別出這些候選事件,OLTP 140可以檢查提交給本地?cái)?shù)據(jù)庫200的最近事務(wù)處理。通常,對于所提交的每個(gè)事務(wù)處理,可以在本地?cái)?shù)據(jù)庫200內(nèi)存儲(chǔ)的記錄表內(nèi)設(shè)置一個(gè)表目。此表目可以包括被改變的記錄的標(biāo)識(shí)符、改變此記錄的事務(wù)處理(或事件)(例如,add、mod和/或del事件)、表示事務(wù)處理順序的記錄順序號(hào)等等。
在圖11中圖示了示例性的記錄表1100。在這個(gè)例子中,發(fā)送文件300包括在記錄表1100內(nèi)所圖示的事務(wù)處理1108-1114。第一表目1101表示在第一事務(wù)處理1108內(nèi)將數(shù)據(jù)(名稱服務(wù)器)n1和n2添加給與標(biāo)識(shí)符d1相關(guān)的數(shù)據(jù)(域)。因此,標(biāo)識(shí)符是d1,事件是“add”,并且記錄順序號(hào)是11526。類似地,第二表目1102表示在第二事務(wù)處理1109內(nèi)將數(shù)據(jù)n8和n9添加給與標(biāo)識(shí)符d2相關(guān)的數(shù)據(jù)。第三表目1103表示在第三事務(wù)處理1110內(nèi)刪除與標(biāo)識(shí)符d3相關(guān)的數(shù)據(jù)。第四表目1104表示在第四事務(wù)處理1111中修改與標(biāo)識(shí)符d1相關(guān)的數(shù)據(jù)以添加數(shù)據(jù)n5。對于第五事務(wù)處理1112,第五表目1105表示將數(shù)據(jù)n6和n7添加給與標(biāo)識(shí)符d3相關(guān)的數(shù)據(jù)。對于第六事務(wù)處理1113,第六表目1106表示修改與標(biāo)識(shí)符d4相關(guān)的數(shù)據(jù)以除去數(shù)據(jù)n3。在第R事務(wù)處理1114中的第R表目1107表示刪除與標(biāo)識(shí)符d5相關(guān)的數(shù)據(jù)。
因此,如圖10A所示,OLTP 140可以相關(guān)(1015)事件標(biāo)識(shí)符與更新中的每個(gè)事件,其中事件標(biāo)識(shí)符可以與記錄的標(biāo)識(shí)符相關(guān)??梢詮氖录v史中發(fā)現(xiàn)更新中的每個(gè)事件。可以從記錄表1100生成通過事件標(biāo)識(shí)符索引和排序的事件歷史。在圖11中圖示一個(gè)示例性的事件歷史1120。在此,記錄表110內(nèi)的第一和第四表目1101和1104表示對與標(biāo)識(shí)符d1相關(guān)的數(shù)據(jù)的改變。因而,事件歷史1120包括d1標(biāo)識(shí)符1121和對與標(biāo)識(shí)符d1相關(guān)的數(shù)據(jù)執(zhí)行的兩個(gè)事件1126,“add”之后跟隨著“mod”。第二表目1102表示對與標(biāo)識(shí)符d2相關(guān)的數(shù)據(jù)的修改。因而,事件歷史1120包括d2標(biāo)識(shí)符1122和“add”事件1127。事件歷史1120包括d3標(biāo)識(shí)符1123和兩個(gè)事件1128,“del”后跟隨著“mod”,表示第三和第五表目1103和1105,其包括對與標(biāo)識(shí)符d3相關(guān)的數(shù)據(jù)的改變。第六表目1106表示對與標(biāo)識(shí)符d4相關(guān)的數(shù)據(jù)的改變。因此,事件歷史1120包括d4標(biāo)識(shí)符1124和“mod”事件1129。第R表目1107表示對與標(biāo)識(shí)符d5相關(guān)的數(shù)據(jù)的改變,并且事件歷史1120包括d5標(biāo)識(shí)符和“del”事件1130。標(biāo)識(shí)符1121-1125以d1至d5進(jìn)行排序。
再次參見圖10A,OLTP 140可以確定(1020)更新是否有效。例如,可以根據(jù)圖10B的實(shí)施例來執(zhí)行此確定。首先,OLTP 140可以比較(1022)事件標(biāo)識(shí)符1121-1125與例外標(biāo)識(shí)符1140,以確定哪一些標(biāo)識(shí)符對應(yīng)。例如,在圖11中,事件歷史1120中的d1事件標(biāo)識(shí)符1121對應(yīng)于例外列表1140的“列表2”中的d1例外標(biāo)識(shí)符。在找到相應(yīng)的事件和例外之后,OLTP 140可以確定(1024)該事件是否證明該例外合理。可以如下進(jìn)行證明合理性。對于事件歷史1120內(nèi)的每個(gè)事件標(biāo)識(shí)符1121-1125,OLTP 140可以確定事件歷史1120內(nèi)的每個(gè)事件1126-1130的序列是否是有效的。這可以例如通過檢查例外列表1140以確定每個(gè)例外標(biāo)識(shí)符屬于哪個(gè)例外類型、確定什么應(yīng)當(dāng)是用于該例外類型的有效事件序列、以及隨后在事件歷史1120中搜索相應(yīng)的事件標(biāo)識(shí)符和該事件標(biāo)識(shí)符的事件序列來進(jìn)行。下面將具體描述用于每個(gè)例外類型的有效序列。如果事件歷史1120中的事件序列1126-1130匹配有效序列,則相應(yīng)的事件標(biāo)識(shí)符1121-1125具有有效序列。因此,可以證明與例外標(biāo)識(shí)符相關(guān)的例外。而且,包括該事件標(biāo)識(shí)符的相應(yīng)事務(wù)處理1108-1114是有效的,而非錯(cuò)誤的。在這種情況下,OLTP 140可以從例外列表1140中刪除該例外標(biāo)識(shí)符。
用于“列表1”例外類型的有效事件序列可以是(mod)*(del)。這個(gè)序列可以包括零個(gè)或多個(gè)“mod”事件序列,其后跟隨著“del”事件,其隨后是任意事件?!傲斜?”例外類型可以對應(yīng)于可存在于遠(yuǎn)程數(shù)據(jù)庫210內(nèi)但是不存在于本地?cái)?shù)據(jù)庫200內(nèi)的數(shù)據(jù)。在這種情況下,可能最近已經(jīng)從本地?cái)?shù)據(jù)庫200中刪除數(shù)據(jù),并且事務(wù)處理尚未寫入到發(fā)送文件300。因此,發(fā)送文件300可能尚未應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫210。因此,數(shù)據(jù)可能依然存在于遠(yuǎn)程數(shù)據(jù)庫210內(nèi)。這可以被視為合理的差異,因?yàn)樵谀硞€(gè)點(diǎn)上期望生成發(fā)送文件300并將其應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫210。因此,如果在用于例外列表1140的列表1內(nèi)的例外標(biāo)識(shí)符的事件歷史1120中發(fā)現(xiàn)任一這樣的序列1126-1130,則可以將相應(yīng)的事務(wù)處理視為有效的。
例如,在圖11中,如記錄表1100的第R條目1114所示和在事件歷史1120中索引的,已經(jīng)從本地?cái)?shù)據(jù)庫200中刪除d5標(biāo)識(shí)符1125及其相關(guān)數(shù)據(jù)。在驗(yàn)證時(shí),已經(jīng)從本地?cái)?shù)據(jù)庫200刪除d5,但是尚未從遠(yuǎn)程數(shù)據(jù)庫210刪除。所以,例外列表1140包括列表1中的標(biāo)識(shí)符d5。根據(jù)事件歷史1120,與d5標(biāo)識(shí)符1125相關(guān)的事件1130是“del”。OLTP 140可以比較“列表1”例外類型的有效序列即(mod)*(del)與事件歷史1120內(nèi)的d5事件1130。因?yàn)椤傲斜?”有效序列與事件1130匹配,可以將與標(biāo)識(shí)符d5相關(guān)的刪除事務(wù)處理1114視為合理的而非錯(cuò)誤的。因此,可以從例外列表1140中刪除標(biāo)識(shí)符d5。
用于“列表2”例外類型的有效事件序列可以是(add)。這個(gè)序列可以包括“add”事件,其后跟隨著任意事件?!傲斜?”例外類型可對應(yīng)于在本地?cái)?shù)據(jù)庫200內(nèi)存在但是在遠(yuǎn)程數(shù)據(jù)庫210內(nèi)不存在的數(shù)據(jù)。在這種情況下,數(shù)據(jù)可能最近已經(jīng)被添加給本地?cái)?shù)據(jù)庫200,而事務(wù)處理尚未寫入發(fā)送文件300。因此,發(fā)送文件300可能尚未應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫210。所以,此數(shù)據(jù)可能不存在于遠(yuǎn)程數(shù)據(jù)庫210內(nèi)。這也可以被視為合理差異,因?yàn)樵谀硞€(gè)點(diǎn)上預(yù)期生成發(fā)送文件300并將其應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫210。因此,如果在用于例外列表1140的列表2內(nèi)的例外標(biāo)識(shí)符的事件歷史1120中發(fā)現(xiàn)任一這樣的序列1126-1130,則可以將相應(yīng)的事務(wù)處理視為有效的。
再次參見圖11,d1和d2標(biāo)識(shí)符1121和1123可以與例如初始添加給本地?cái)?shù)據(jù)庫200的數(shù)據(jù)相關(guān)。因?yàn)樗鼈兊氖录蛄?126和1127開始于“add”事件,所以d1和d2標(biāo)識(shí)符1121和1123匹配用于“列表2”例外類型的有效序列。因此,可以將包括這些標(biāo)識(shí)符的事務(wù)處理1108和1109視為有效的,并從例外列表1140中除去標(biāo)識(shí)符d1和d2。應(yīng)當(dāng)指出d3標(biāo)識(shí)符1123在其序列1128中也包括“add”事件。然而,“add”事件并非序列1128中的第一事件。因此,序列1128并不具有作為“列表2”類型的資格。此外,因?yàn)樵诶饬斜?140的列表2內(nèi)未指定d3,所以O(shè)LTP 140可以不為列表2的有效序列而檢查d3。
用于“列表3”例外類型的有效事件序列可以是(del)(add)或(mod)。這些序列可以包括其后跟隨著“add”事件(其后跟隨著任意事件)的“del”事件或其后跟隨著任意事件的“mod”事件?!傲斜?”例外類型可對應(yīng)于在兩個(gè)數(shù)據(jù)庫200和210內(nèi)都存在但卻不同的數(shù)據(jù)。在這種情況下,數(shù)據(jù)可能最近已經(jīng)在本地?cái)?shù)據(jù)庫200內(nèi)被修改,并且事務(wù)處理尚未寫入發(fā)送文件300。因此,發(fā)送文件300可能尚未被應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫210。因此,與標(biāo)識(shí)符相關(guān)的數(shù)據(jù)可能尚未在遠(yuǎn)程數(shù)據(jù)庫210內(nèi)被修改。再次,可以將這視為合理差異,因?yàn)樵谀骋稽c(diǎn)上預(yù)期將生成發(fā)送文件300并將其應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫210。因此,如果在用于例外列表1140的列表3的例外標(biāo)識(shí)符的事件歷史1120內(nèi)發(fā)現(xiàn)任一這樣的序列1126-1130,則可以將相應(yīng)的事務(wù)處理視為有效的。
例如,在圖11中,d3和d4標(biāo)識(shí)符1123和1124可以與在本地?cái)?shù)據(jù)庫200內(nèi)被修改的數(shù)據(jù)相關(guān)。在d3標(biāo)識(shí)符1123的情況下,初始刪除d3標(biāo)識(shí)符1123及其數(shù)據(jù),并且然后使用新數(shù)據(jù)添加,以便其事件序列1128可以包括其后跟隨著“add”的“del”。在d4標(biāo)識(shí)符1124的情況下,修改d4數(shù)據(jù)以除去數(shù)據(jù),以便其事件序列1129可以包括“mod”。因?yàn)檫@些事件序列1128和1129匹配用于“列表3”例外類型的有效序列,所以可以將它們的相應(yīng)事務(wù)處理1110、1112和1113視為有效的,并從列表列表1140中刪除標(biāo)識(shí)符d3和d4。
參見圖10B,如果已經(jīng)通過事件證明(1024)利用例外列表1140內(nèi)的其標(biāo)識(shí)符表示的所有例外是合理的,即如果例外列表1140是空的,則OLTP 140可以將發(fā)送文件300或初始化發(fā)送文件310指定(1026)為有效的,并通知LUE100將發(fā)送文件300或初始化發(fā)送文件310應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫210。隨后,LUE100可以將發(fā)送文件300或初始化發(fā)送文件310應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫210。
相反地,如果尚未通過事件證明(1024)所有的例外是合理的,即如果例外列表1140不為空,則其余的例外可以表示發(fā)送文件300或初始化發(fā)送文件310內(nèi)的錯(cuò)誤。因此,OLTP 140可以將發(fā)送文件300或初始化發(fā)送文件310指定(1028)為無效的,并在錯(cuò)誤文件內(nèi)記錄此錯(cuò)誤。
在可選實(shí)施例中,例如,如果發(fā)送文件300或初始化發(fā)送文件310被指定為無效的,則在預(yù)定的時(shí)間周期之后,OLTP 140可以對無效的發(fā)送文件300或初始化發(fā)送文件310重復(fù)驗(yàn)證處理以確保差異的確是錯(cuò)誤的。這個(gè)預(yù)定的延遲允許網(wǎng)絡(luò)更多的時(shí)間來發(fā)送任意緩慢的發(fā)送文件300和310,并允許數(shù)據(jù)庫200和210具有更多的時(shí)間變得讀取一致。
在本發(fā)明的一種實(shí)施例中,遠(yuǎn)程數(shù)據(jù)庫210內(nèi)的事件可以將本地?cái)?shù)據(jù)庫200內(nèi)的數(shù)據(jù)“滯后”很長的時(shí)間周期。因此,為了比較數(shù)據(jù)庫200和210并檢測錯(cuò)誤,可以使數(shù)據(jù)庫200和210在同一時(shí)間點(diǎn)上讀取一致,以便它們是彼此準(zhǔn)確的拷貝。通常,遠(yuǎn)程數(shù)據(jù)庫210可以被前卷到本地?cái)?shù)據(jù)庫200,其中可以使遠(yuǎn)程數(shù)據(jù)庫210內(nèi)的數(shù)據(jù)與本地?cái)?shù)據(jù)庫200內(nèi)的數(shù)據(jù)基本相同。
因此,為了加速驗(yàn)證,可以將任意當(dāng)前生成的初始化發(fā)送文件310和隨后的發(fā)送文件300在開始驗(yàn)證之前應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫210。因此,可以顯著地減少差異的數(shù)量??梢詫⑦@種發(fā)送文件300和310的批處理稱作“程序分塊(chunking)”。該程序塊內(nèi)的第一和最后一個(gè)發(fā)送文件300和310可以被分別稱作低和高水印。第一程序塊(稱作初始程序塊)可以包括初始化發(fā)送文件310。所有的接下來的程序塊(稱作終端程序塊)可以僅包括發(fā)送文件。
程序分塊可以提供群驗(yàn)證,而不是分開驗(yàn)證。因此,如果在一個(gè)程序塊內(nèi)檢測到錯(cuò)誤,則可以將整個(gè)程序塊指定為無效的,而不僅僅是出現(xiàn)錯(cuò)誤的發(fā)送文件300或初始化發(fā)送文件310。
可以使用根據(jù)本發(fā)明教導(dǎo)編程的通用微處理器實(shí)現(xiàn)本發(fā)明實(shí)施例的機(jī)制和方法。因而,本發(fā)明的實(shí)施例還包括機(jī)器可讀媒體,其包括指令,這些指令可以用于編程處理器以執(zhí)行根據(jù)本發(fā)明實(shí)施例的方法。該媒體可包括但不僅限于任意類型的盤,包括軟盤、光盤和CD-ROM。
在此具體圖示和描述了本發(fā)明的若干實(shí)施例。然而,將認(rèn)識(shí)到本發(fā)明的修改和變化利用上述教導(dǎo)來覆蓋并落入權(quán)利要求書的保護(hù)范圍而不脫離本發(fā)明的精神和預(yù)期范圍。
權(quán)利要求
1.一種用于通過網(wǎng)絡(luò)驗(yàn)證對遠(yuǎn)程數(shù)據(jù)庫內(nèi)的記錄更新的方法,該更新包括至少一個(gè)事件,包括比較遠(yuǎn)程數(shù)據(jù)庫內(nèi)的記錄與本地?cái)?shù)據(jù)庫內(nèi)的相應(yīng)記錄;對于每個(gè)差異,生成描述遠(yuǎn)程數(shù)據(jù)庫記錄和本地?cái)?shù)據(jù)庫記錄之間差異的例外;相關(guān)例外標(biāo)識(shí)符與每個(gè)例外,其中每個(gè)例外標(biāo)識(shí)符與記錄的標(biāo)識(shí)符相關(guān);相關(guān)事件標(biāo)識(shí)符與更新中的每個(gè)事件,其中每個(gè)事件標(biāo)識(shí)符與記錄的標(biāo)識(shí)符相關(guān);和通過比較事件與對應(yīng)于該記錄的例外來確定更新是否是有效的。
2.權(quán)利要求1的方法,其中如果通過對應(yīng)于記錄的事件證明對應(yīng)于記錄的每個(gè)例外是合理的,則對該記錄的更新是有效的。
3.權(quán)利要求2的方法,其中例外的類型包括第一例外類型,其中記錄在遠(yuǎn)程數(shù)據(jù)庫內(nèi),而不在本地?cái)?shù)據(jù)庫內(nèi);第二例外類型,其中記錄在本地?cái)?shù)據(jù)庫內(nèi),而不在遠(yuǎn)程數(shù)據(jù)庫內(nèi);和第三例外類型,其中記錄在本地?cái)?shù)據(jù)庫和遠(yuǎn)程數(shù)據(jù)庫內(nèi),并且本地?cái)?shù)據(jù)庫內(nèi)記錄的字段的值不同于遠(yuǎn)程數(shù)據(jù)庫內(nèi)該記錄的相同字段的值。
4.權(quán)利要求3的方法,其中事件證明例外是合理的,如果該事件是從本地?cái)?shù)據(jù)庫中刪除記錄,并且該例外是第一例外類型;該事件是記錄添加到本地?cái)?shù)據(jù)庫,并且該例外是第二例外類型;該事件是修改本地?cái)?shù)據(jù)庫內(nèi)的記錄,并且該例外是第三例外類型;或者該事件是刪除,其后跟隨著記錄被添加到本地?cái)?shù)據(jù)庫,并且該例外是第三例外類型。
5.權(quán)利要求1的方法,還包括如果確定更新是無效的,在確定更新是無效的之后,將用于驗(yàn)證更新的方法重復(fù)給定次數(shù)。
6.權(quán)利要求1的方法,其中比較包括比較整個(gè)本地?cái)?shù)據(jù)庫與整個(gè)遠(yuǎn)程數(shù)據(jù)庫。
7.一種用于驗(yàn)證遠(yuǎn)程數(shù)據(jù)庫的方法,包括根據(jù)對本地?cái)?shù)據(jù)庫的遞增改變將多個(gè)定期更新發(fā)送給遠(yuǎn)程數(shù)據(jù)庫,多個(gè)定期更新中的每個(gè)定期更新包括至少一個(gè)事務(wù)處理;向遠(yuǎn)程數(shù)據(jù)庫發(fā)送初始化更新,包括作為在開始時(shí)間上存在的本地?cái)?shù)據(jù)庫的本地?cái)?shù)據(jù)庫版本,其中將初始化更新應(yīng)用于遠(yuǎn)程數(shù)據(jù)庫;識(shí)別本地?cái)?shù)據(jù)庫與遠(yuǎn)程數(shù)據(jù)庫之間的差異;確定差異是否是有效的;和通知遠(yuǎn)程數(shù)據(jù)庫應(yīng)用定期更新,其中這些定期更新具有的開始時(shí)間晚于初始化更新的開始時(shí)間。
8.權(quán)利要求7的方法,還包括如果確定更新是無效的,在確定更新是無效的之后,將用于驗(yàn)證更新的方法重復(fù)給定次數(shù)。
9.權(quán)利要求7的方法,其中差異包括第一差異類型,其中記錄在遠(yuǎn)程數(shù)據(jù)庫內(nèi),而不在本地?cái)?shù)據(jù)庫內(nèi);第二差異類型,其中記錄在本地?cái)?shù)據(jù)庫內(nèi),而不在遠(yuǎn)程數(shù)據(jù)庫內(nèi);和第三差異類型,其中記錄在本地?cái)?shù)據(jù)庫和遠(yuǎn)程數(shù)據(jù)庫內(nèi),并且本地?cái)?shù)據(jù)庫內(nèi)記錄的字段的值不同于遠(yuǎn)程數(shù)據(jù)庫內(nèi)該記錄的相同字段的值。
10.一種用于通過網(wǎng)絡(luò)驗(yàn)證對遠(yuǎn)程數(shù)據(jù)庫內(nèi)的記錄更新的系統(tǒng),其中該更新包括至少一個(gè)事件,該系統(tǒng)包括至少一個(gè)處理器,耦合到網(wǎng)絡(luò);和存儲(chǔ)器,耦合到處理器,該存儲(chǔ)器包括數(shù)據(jù)庫和指令,所述指令適合于由處理器執(zhí)行以實(shí)現(xiàn)一種用于通過網(wǎng)絡(luò)驗(yàn)證遠(yuǎn)程數(shù)據(jù)庫內(nèi)的記錄更新的方法,該方法包括比較遠(yuǎn)程數(shù)據(jù)庫內(nèi)的記錄與本地?cái)?shù)據(jù)庫內(nèi)的相應(yīng)記錄;對于每個(gè)差異,生成描述遠(yuǎn)程數(shù)據(jù)庫記錄和本地?cái)?shù)據(jù)庫記錄之間差異的例外;相關(guān)例外標(biāo)識(shí)符與每個(gè)例外,其中每個(gè)例外標(biāo)識(shí)符與記錄的標(biāo)識(shí)符相關(guān);相關(guān)事件標(biāo)識(shí)符與更新中的每個(gè)事件,其中每個(gè)事件標(biāo)識(shí)符與記錄的標(biāo)識(shí)符相關(guān);和通過比較事件與對應(yīng)于該記錄的例外來確定更新是否是有效的。
11.權(quán)利要求10的系統(tǒng),其中如果通過對應(yīng)于該記錄的事件證明對應(yīng)于該記錄的每個(gè)例外是合理的,則對該記錄的更新是有效的。
12.權(quán)利要求11的系統(tǒng),其中例外的類型包括第一例外類型,其中記錄在遠(yuǎn)程數(shù)據(jù)庫內(nèi),而不在本地?cái)?shù)據(jù)庫內(nèi);第二例外類型,其中記錄在本地?cái)?shù)據(jù)庫內(nèi),而不在遠(yuǎn)程數(shù)據(jù)庫內(nèi);和第三例外類型,其中記錄在本地?cái)?shù)據(jù)庫和遠(yuǎn)程數(shù)據(jù)庫內(nèi),并且本地?cái)?shù)據(jù)庫內(nèi)記錄的字段的值不同于遠(yuǎn)程數(shù)據(jù)庫內(nèi)該記錄的相同字段的值。
13.權(quán)利要求12的系統(tǒng),其中事件證明例外是合理的,如果該事件是從本地?cái)?shù)據(jù)庫中刪除記錄,并且該例外是第一例外類型;該事件是記錄添加到本地?cái)?shù)據(jù)庫,并且該例外是第二例外類型;該事件是本地?cái)?shù)據(jù)庫內(nèi)記錄的修改,并且該例外是第三例外類型;或者該事件是刪除,其后跟隨著將記錄添加給本地?cái)?shù)據(jù)庫,并且該例外是第三例外類型。
14.權(quán)利要求10的系統(tǒng),其中如果確定更新是無效的,在確定更新是無效的之后,處理器將用于驗(yàn)證更新的方法重復(fù)給定次數(shù)。
15.權(quán)利要求11的系統(tǒng),其中處理器比較整個(gè)本地?cái)?shù)據(jù)庫與整個(gè)遠(yuǎn)程數(shù)據(jù)庫。
16.一種機(jī)器可讀媒體,包括程序指令,所述程序指令適合于由處理器執(zhí)行以實(shí)現(xiàn)一種用于通過網(wǎng)絡(luò)驗(yàn)證對遠(yuǎn)程數(shù)據(jù)庫內(nèi)的記錄更新的方法,其中更新包括至少一個(gè)事件,該方法包括比較遠(yuǎn)程數(shù)據(jù)庫內(nèi)的記錄與本地?cái)?shù)據(jù)庫內(nèi)的相應(yīng)記錄;對于每個(gè)差異,生成描述遠(yuǎn)程數(shù)據(jù)庫記錄和本地?cái)?shù)據(jù)庫記錄之間差異的例外;相關(guān)例外標(biāo)識(shí)符與每個(gè)例外,其中每個(gè)例外標(biāo)識(shí)符與記錄的標(biāo)識(shí)符相關(guān);相關(guān)事件標(biāo)識(shí)符與更新中的每個(gè)事件,其中每個(gè)事件標(biāo)識(shí)符與記錄的標(biāo)識(shí)符相關(guān);和通過比較事件與對應(yīng)于該記錄的例外來確定更新是否是有效的。
17.權(quán)利要求16的機(jī)器可讀媒體,其中如果確定更新是無效的,則在確定更新是無效的之后,處理器將用于驗(yàn)證更新的方法重復(fù)給定次數(shù)。
18.權(quán)利要求16的機(jī)器可讀媒體,其中如果通過對應(yīng)于該記錄的事件證明對應(yīng)于該記錄的每個(gè)例外是合理的,則對該記錄的更新是有效的。
19.權(quán)利要求16的機(jī)器可讀媒體,其中例外的類型包括第一例外類型,其中記錄在遠(yuǎn)程數(shù)據(jù)庫內(nèi),而不在本地?cái)?shù)據(jù)庫內(nèi);第二例外類型,其中記錄在本地?cái)?shù)據(jù)庫內(nèi),而不在遠(yuǎn)程數(shù)據(jù)庫內(nèi);和第三例外類型,其中記錄在本地?cái)?shù)據(jù)庫和遠(yuǎn)程數(shù)據(jù)庫內(nèi),并且本地?cái)?shù)據(jù)庫內(nèi)記錄的字段的值不同于遠(yuǎn)程數(shù)據(jù)庫內(nèi)該記錄的相同字段的值。
20.一種用于通過網(wǎng)絡(luò)驗(yàn)證數(shù)據(jù)傳輸?shù)姆椒?,包括識(shí)別信源和目的地之間的數(shù)據(jù)差異;識(shí)別被包括在傳輸中的信源上的數(shù)據(jù)改變;和比較差異與改變,以確定傳輸是否是有效的。
21.權(quán)利要求20的方法,其中信源和目的地是域名服務(wù)器。
22.權(quán)利要求20的方法,其中差異包括在信源內(nèi)而不在目的地內(nèi)的域名;在目的地內(nèi)而不在信源內(nèi)的域名;和在信源和目的地內(nèi)是不同的對應(yīng)域名。
23.權(quán)利要求20的方法,其中改變至少包括以下之一向域名服務(wù)器添加域名;從域名服務(wù)器中刪除域名;和域名服務(wù)器內(nèi)域名的修改。
24.一種驗(yàn)證器,包括用于識(shí)別信源和目的地之間的數(shù)據(jù)差異的裝置;用于識(shí)別被包括在傳輸中的信源上的數(shù)據(jù)改變的裝置;和用于比較差異與改變以確定傳輸是否是有效的裝置。
25.權(quán)利要求10的系統(tǒng),還包括至少一個(gè)遠(yuǎn)程處理器,耦合到網(wǎng)絡(luò);和遠(yuǎn)程存儲(chǔ)器,耦合到遠(yuǎn)程處理器,該遠(yuǎn)程存儲(chǔ)器存儲(chǔ)遠(yuǎn)程數(shù)據(jù)庫和適合于由遠(yuǎn)程處理器執(zhí)行的指令,以便根據(jù)在網(wǎng)絡(luò)上從數(shù)據(jù)庫接收到的新信息創(chuàng)建新元素;和在不限制對遠(yuǎn)程數(shù)據(jù)庫的搜索訪問的情況下,使用單個(gè)不可中斷的操作將到新元素的指針寫入遠(yuǎn)程數(shù)據(jù)庫。
26.權(quán)利要求25的系統(tǒng),其中所述指令還適合于在將指針寫入數(shù)據(jù)庫之后物理地刪除現(xiàn)有元素。
27.權(quán)利要求25的系統(tǒng),其中單個(gè)不可中斷的操作是存儲(chǔ)指令。
28.權(quán)利要求27的系統(tǒng),其中遠(yuǎn)程處理器具有至少n字節(jié)的字長度,遠(yuǎn)程存儲(chǔ)器具有至少n字節(jié)的寬度,而存儲(chǔ)指令將n字節(jié)寫入位于n字節(jié)邊界上的遠(yuǎn)程存儲(chǔ)器地址。
全文摘要
本發(fā)明的實(shí)施例提供用于通過網(wǎng)絡(luò)驗(yàn)證遠(yuǎn)程數(shù)據(jù)庫更新的方法和系統(tǒng)??梢员容^本地?cái)?shù)據(jù)庫(200)記錄與遠(yuǎn)程數(shù)據(jù)庫記錄,并可以生成例外。每個(gè)例外可以描述遠(yuǎn)程數(shù)據(jù)庫記錄和本地?cái)?shù)據(jù)庫(200)記錄之間的差異??梢韵嚓P(guān)例外標(biāo)識(shí)符與每個(gè)例外,其中可以相關(guān)例外標(biāo)識(shí)符與記錄的標(biāo)識(shí)符。可以相關(guān)事件標(biāo)識(shí)符與更新中的每個(gè)事件,其中可以相關(guān)事件標(biāo)識(shí)符與記錄的標(biāo)識(shí)符??梢员容^事件與對應(yīng)于記錄的例外來確定更新是否是有效的。
文檔編號(hào)G06F12/00GK1610901SQ02826511
公開日2005年4月27日 申請日期2002年11月1日 優(yōu)先權(quán)日2001年11月1日
發(fā)明者A·N·巴洛, B·T·麥克米倫 申請人:弗里塞恩公司