專利名稱::具有至少兩個(gè)主機(jī)數(shù)據(jù)庫(kù)和一個(gè)遠(yuǎn)程數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)系統(tǒng)以及同步這樣的數(shù)據(jù)庫(kù)的方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及如下類型的數(shù)據(jù)庫(kù)系統(tǒng)這種系統(tǒng)至少有兩個(gè)主機(jī)處理設(shè)備,每個(gè)處理設(shè)備帶有各自的主機(jī)數(shù)據(jù)庫(kù),這種系統(tǒng)還包括一個(gè)帶有遠(yuǎn)程數(shù)據(jù)庫(kù)的遠(yuǎn)程處理設(shè)備,遠(yuǎn)程數(shù)據(jù)庫(kù)的內(nèi)容與主機(jī)數(shù)據(jù)庫(kù)同步,所以對(duì)任何一個(gè)數(shù)據(jù)庫(kù)的修改都可以傳遞給其它數(shù)據(jù)庫(kù)?,F(xiàn)有技術(shù)對(duì)于上面的術(shù)語(yǔ),主機(jī)處理設(shè)備可以例如為臺(tái)式個(gè)人計(jì)算機(jī),它把日歷或者地址簿作為它的主機(jī)數(shù)據(jù)庫(kù)。相應(yīng)地,遠(yuǎn)程處理設(shè)備可以是手提的通信機(jī),例如便攜式數(shù)字助理(PDA)或者移動(dòng)電話,它把相應(yīng)的日歷或地址簿作為它的遠(yuǎn)程數(shù)據(jù)庫(kù)。主機(jī)和遠(yuǎn)程數(shù)據(jù)庫(kù)是用來(lái)包含相同的信息,即相同的日歷和地址簿項(xiàng)目,并為用戶提供很大的靈活性當(dāng)用戶在辦公室時(shí),他可以使用臺(tái)式計(jì)算機(jī)的日歷來(lái)記錄會(huì)議、期限、生日等。當(dāng)用戶移動(dòng)時(shí),例如訪問(wèn)顧客和商業(yè)伙伴等時(shí),用戶將攜帶他的便攜式數(shù)字助理或移動(dòng)電話,并使用其中遠(yuǎn)程數(shù)據(jù)庫(kù)中的日歷。為了保持?jǐn)?shù)據(jù)庫(kù)之間的一致性,對(duì)臺(tái)式計(jì)算機(jī)上的主機(jī)數(shù)據(jù)庫(kù)的修改或?qū)Ρ銛y式數(shù)字助理上的遠(yuǎn)程數(shù)據(jù)庫(kù)的修改都將傳給另外的數(shù)據(jù)庫(kù)。使兩個(gè)數(shù)據(jù)庫(kù)包含相同信息的過(guò)程稱為同步。美國(guó)專利US-5729735公開了一種計(jì)算機(jī)數(shù)據(jù)庫(kù)系統(tǒng),該系統(tǒng)包括主計(jì)算機(jī)上的主數(shù)據(jù)庫(kù)和多個(gè)位于便攜式計(jì)算機(jī)上的遠(yuǎn)程數(shù)據(jù)庫(kù)。開始時(shí),從主數(shù)據(jù)庫(kù)中拷貝數(shù)據(jù)產(chǎn)生遠(yuǎn)程數(shù)據(jù)庫(kù)。對(duì)由此產(chǎn)生的每一個(gè)遠(yuǎn)程數(shù)據(jù)庫(kù),系統(tǒng)還產(chǎn)生一個(gè)備份文件,并存儲(chǔ)在主計(jì)算機(jī)中,當(dāng)備份文件產(chǎn)生或最后被同步時(shí),備份文件可以反應(yīng)每個(gè)遠(yuǎn)程數(shù)據(jù)庫(kù)的內(nèi)容。系統(tǒng)不時(shí)地同步主數(shù)據(jù)庫(kù)和其中一個(gè)遠(yuǎn)程數(shù)據(jù)庫(kù)的數(shù)據(jù)。為此,系統(tǒng)比較主數(shù)據(jù)庫(kù)、遠(yuǎn)程數(shù)據(jù)庫(kù)和備份文件中的相應(yīng)數(shù)據(jù),以確定哪一個(gè)數(shù)據(jù)庫(kù)(遠(yuǎn)程數(shù)據(jù)庫(kù)還是主數(shù)據(jù)庫(kù))有較新版本的數(shù)據(jù)。系統(tǒng)則用具有較新數(shù)據(jù)的數(shù)據(jù)庫(kù)中的數(shù)據(jù)更新具有次新數(shù)據(jù)的數(shù)據(jù)庫(kù)。完成數(shù)據(jù)庫(kù)同步后,系統(tǒng)會(huì)把遠(yuǎn)程數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)拷貝到備份文件中。因此,美國(guó)專利US-5729735的數(shù)據(jù)庫(kù)系統(tǒng)能夠同步主數(shù)據(jù)庫(kù)和遠(yuǎn)程數(shù)據(jù)庫(kù)。但是,因?yàn)橥绞峭ㄟ^(guò)將主數(shù)據(jù)庫(kù)和遠(yuǎn)程數(shù)據(jù)庫(kù)中的所有內(nèi)容和備份文件(本身就是遠(yuǎn)程數(shù)據(jù)庫(kù)的完全拷貝)中的所有內(nèi)容進(jìn)行比較來(lái)執(zhí)行的,該過(guò)程是耗費(fèi)時(shí)間的,而且需要大量的資源。美國(guó)專利US-5790974公開了一種個(gè)人日歷系統(tǒng),該系統(tǒng)包括便攜式日歷系統(tǒng)和輔助辦公室日歷系統(tǒng)。可以用諸如紅外線鏈路或無(wú)線電尋呼接口的雙向無(wú)線傳輸來(lái)同步日歷項(xiàng)目。對(duì)其中一個(gè)日歷所做的修改通過(guò)無(wú)線接口立即傳到另外的日歷。系統(tǒng)的優(yōu)點(diǎn)在于同步是立即完成的,但它也有缺點(diǎn),就是兩個(gè)日歷之間需要建立操作連接(即便攜式日歷系統(tǒng)在紅外線鏈路或無(wú)線電尋呼接口所覆蓋的范圍內(nèi))。雖然單一主機(jī)數(shù)據(jù)庫(kù)和單一遠(yuǎn)程數(shù)據(jù)庫(kù)之間的同步是一個(gè)簡(jiǎn)單的工作,然而有兩個(gè)以上的數(shù)據(jù)庫(kù)時(shí)工作就變得更加困難。為了避免對(duì)一個(gè)數(shù)據(jù)庫(kù)所做的修改錯(cuò)誤地傳遞給另外的數(shù)據(jù)庫(kù),所以要特別小心。遠(yuǎn)程數(shù)據(jù)庫(kù)存儲(chǔ)容量有限(例如,由于便攜式數(shù)字助理的存儲(chǔ)空間有限,等等)就是這種情況。對(duì)于這樣一個(gè)容量有限的遠(yuǎn)程數(shù)據(jù)庫(kù),為了給新的數(shù)據(jù)項(xiàng)留出空間,有時(shí)就需要犧牲(即刪除)其中存儲(chǔ)的舊的數(shù)據(jù)庫(kù)數(shù)據(jù)項(xiàng)。但這種刪除只是為了釋放遠(yuǎn)程數(shù)據(jù)庫(kù)中的存儲(chǔ)空間,所以不必傳遞給其它數(shù)據(jù)庫(kù)。本發(fā)明的目的是提供一種至少包括兩個(gè)主機(jī)數(shù)據(jù)庫(kù)和一個(gè)遠(yuǎn)程數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)系統(tǒng),該系統(tǒng)能夠比先有技術(shù)的解決方案更有效地實(shí)現(xiàn)同步。本發(fā)明一個(gè)特別的目的是防止僅僅為了釋放遠(yuǎn)程數(shù)據(jù)庫(kù)中的存儲(chǔ)空間所做的刪除傳遞給主機(jī)數(shù)據(jù)庫(kù)。對(duì)于一種數(shù)據(jù)庫(kù)系統(tǒng),上述目標(biāo)可以達(dá)到,該數(shù)據(jù)庫(kù)系統(tǒng)至少有兩個(gè)主機(jī)數(shù)據(jù)庫(kù)和一個(gè)遠(yuǎn)程數(shù)據(jù)庫(kù),通過(guò)提供第一日志文件和第二日志文件,用每個(gè)主機(jī)數(shù)據(jù)庫(kù)的同步引擎來(lái)同步主機(jī)數(shù)據(jù)庫(kù)和遠(yuǎn)程數(shù)據(jù)庫(kù),第一日志文件具有表示對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)做出改變的項(xiàng)目,包括遠(yuǎn)程數(shù)據(jù)庫(kù)中數(shù)據(jù)項(xiàng)的增加和修改,以及為了增加遠(yuǎn)程數(shù)據(jù)庫(kù)的用于存儲(chǔ)新數(shù)據(jù)項(xiàng)的自由存儲(chǔ)空間而對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)的數(shù)據(jù)項(xiàng)的刪除,第二日志文件具有表示根據(jù)任何一個(gè)主機(jī)數(shù)據(jù)庫(kù)中的刪除而對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)的相應(yīng)刪除的項(xiàng)目,其中,同步引擎適合于按照第二日志文件中的項(xiàng)目而不是第一日志文件中的項(xiàng)目來(lái)執(zhí)行其主機(jī)數(shù)據(jù)庫(kù)中數(shù)據(jù)項(xiàng)的刪除。通過(guò)下面的最佳實(shí)施例、附圖和后附的權(quán)利要求書的詳細(xì)公開,本發(fā)明的其它目的、優(yōu)點(diǎn)和特征將顯現(xiàn)。詳細(xì)公開圖1示出根據(jù)本發(fā)明最佳實(shí)施例的一種數(shù)據(jù)庫(kù)系統(tǒng)。第一主機(jī)處理設(shè)備100是臺(tái)式個(gè)人計(jì)算機(jī)并具有第一主機(jī)數(shù)據(jù)庫(kù),下面將參照?qǐng)D2對(duì)其進(jìn)行詳細(xì)說(shuō)明。個(gè)人計(jì)算機(jī)100的主機(jī)數(shù)據(jù)庫(kù)可以例如為日歷,地址簿等。遠(yuǎn)程處理設(shè)備120是便攜式數(shù)字助理,它包含遠(yuǎn)程數(shù)據(jù)庫(kù)(見(jiàn)圖2)。遠(yuǎn)程數(shù)據(jù)庫(kù)包含日歷130的拷貝或者版本,正本存儲(chǔ)在個(gè)人計(jì)算機(jī)100中。用戶可以通過(guò)諸如短程無(wú)線電鏈路(如藍(lán)牙)或紅外線鏈路的無(wú)線鏈路102將便攜式數(shù)字助理120連接到個(gè)人計(jì)算機(jī)100上。此外,圖1以膝上型計(jì)算機(jī)的形式給出了第二主機(jī)處理設(shè)備110。膝上型計(jì)算機(jī)110包括了第二主機(jī)數(shù)據(jù)庫(kù)(見(jiàn)圖2),它也包括了日歷130的拷貝或者版本。用戶可以通過(guò)諸如串行電纜等有線連接112將便攜式數(shù)字助理120連接到膝上計(jì)算機(jī)110。但是,個(gè)人計(jì)算機(jī)100、膝上計(jì)算機(jī)110、便攜式數(shù)字助理120之間的互連也可以采用圖1中沒(méi)有列出的方式??偨Y(jié)圖1,用戶可以通過(guò)個(gè)人計(jì)算機(jī)100、膝上計(jì)算機(jī)110和便攜式數(shù)字助理120使用他的日歷130。這樣,提供了最大的靈活性,并且用戶根據(jù)當(dāng)時(shí)的位置和工作地點(diǎn),通過(guò)三臺(tái)計(jì)算機(jī)100、110、120中的任何一臺(tái)訪問(wèn)他的日歷130。用戶也可以在計(jì)算機(jī)100、110、120中的任何一臺(tái)上往他的日歷130中添加新項(xiàng)目。類似地,用戶也可以從計(jì)算機(jī)100、110、120中的任何一臺(tái)上修改日歷130中的項(xiàng)目。此外,從計(jì)算機(jī)100、110、120中的任何一臺(tái)可以刪除日歷130中的項(xiàng)目。只要對(duì)日歷130中產(chǎn)生了這些變化,它們開始都發(fā)生本地,即發(fā)生在用戶正用來(lái)訪問(wèn)日歷130的特定一臺(tái)計(jì)算機(jī)100、110或120上。這些變化必須隨后被傳遞到另兩臺(tái)計(jì)算機(jī)上,以便保持日歷130所有三個(gè)版本的一致性。正如本文檔前面部分所述,這個(gè)過(guò)程稱為同步。現(xiàn)在轉(zhuǎn)到圖2,個(gè)人計(jì)算機(jī)100在圖2中舉例為第一主機(jī)處理設(shè)備200。此外,在圖2中,膝上型計(jì)算機(jī)110舉例為第二主機(jī)處理設(shè)備210,便攜式數(shù)字助理120舉例為遠(yuǎn)程處理設(shè)備220。第一主機(jī)處理設(shè)備200包括了第一主機(jī)數(shù)據(jù)庫(kù)204,它在上面已被提及并包括圖1所示日歷130的第一版本??刂破?08連接到第一主機(jī)數(shù)據(jù)庫(kù)204并負(fù)責(zé)第一主機(jī)處理設(shè)備200的所有操作。此外,向主機(jī)處理設(shè)備200提供了同步引擎206,后者連接到第一主機(jī)數(shù)據(jù)庫(kù)204和控制器208。同步引擎206的任務(wù)是根據(jù)同步協(xié)議202與遠(yuǎn)程處理設(shè)備220(和其中存儲(chǔ)的遠(yuǎn)程數(shù)據(jù)庫(kù)224)進(jìn)行同步。最后,第一主機(jī)處理設(shè)備200包括UID分辨表(resolutiontable)209,其中UID表示唯一標(biāo)識(shí)符。下面將詳細(xì)說(shuō)明,UID是分配給每個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)項(xiàng)的唯一號(hào)碼。第二主機(jī)處理設(shè)備210包括了第二主機(jī)數(shù)據(jù)庫(kù)214,它連接到控制器218和同步引擎216。同步引擎216適合于根據(jù)同步協(xié)議212執(zhí)行第二主機(jī)處理設(shè)備210的第二主機(jī)數(shù)據(jù)庫(kù)214與遠(yuǎn)程處理設(shè)備220的遠(yuǎn)程數(shù)據(jù)庫(kù)224之間的同步。對(duì)應(yīng)于第一主機(jī)處理設(shè)備200的表209,第二主機(jī)處理設(shè)備210也有一個(gè)UID分辨表219。遠(yuǎn)程處理設(shè)備220包括連接到上述遠(yuǎn)程數(shù)據(jù)庫(kù)224的控制器228。控制器228適合于根據(jù)同步協(xié)議202、212分別和第一主機(jī)處理設(shè)備200的同步引擎206、第二主機(jī)處理設(shè)備210的同步引擎216進(jìn)行通信。遠(yuǎn)程處理設(shè)備220還包括了常規(guī)變化日志227和硬刪除日志229,這將在下面更詳細(xì)說(shuō)明。第一主機(jī)數(shù)據(jù)庫(kù)204、第二主機(jī)數(shù)據(jù)庫(kù)214、遠(yuǎn)程數(shù)據(jù)庫(kù)224都將包含各自版本的圖1所示日歷130。同步引擎206和216能夠與遠(yuǎn)程處理設(shè)備220的遠(yuǎn)程數(shù)據(jù)庫(kù)224進(jìn)行所謂的慢同步。慢同步是一個(gè)過(guò)程,在這個(gè)過(guò)程中,同步引擎206或216讀取遠(yuǎn)程數(shù)據(jù)庫(kù)224中所有的數(shù)據(jù)庫(kù)數(shù)據(jù)項(xiàng),并把它們與主機(jī)數(shù)據(jù)庫(kù)中204或214的數(shù)據(jù)庫(kù)數(shù)據(jù)項(xiàng)進(jìn)行匹配。同步引擎也讀取主機(jī)數(shù)據(jù)庫(kù)中存儲(chǔ)的所有數(shù)據(jù)項(xiàng),并將它們與遠(yuǎn)程數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)項(xiàng)進(jìn)行匹配。未能匹配的數(shù)據(jù)項(xiàng)將被添加到遠(yuǎn)程數(shù)據(jù)庫(kù)或主機(jī)數(shù)據(jù)庫(kù)中。同時(shí),生成UID分辨表209或219。UID分辨表分別反應(yīng)了主機(jī)數(shù)據(jù)庫(kù)204或214與遠(yuǎn)程數(shù)據(jù)庫(kù)224中數(shù)據(jù)項(xiàng)的關(guān)系。如果已知主機(jī)數(shù)據(jù)庫(kù)204或214中特定數(shù)據(jù)項(xiàng)的UID,則UID分辨表209或219會(huì)提供遠(yuǎn)程數(shù)據(jù)庫(kù)224中對(duì)應(yīng)的數(shù)據(jù)項(xiàng)。慢同步最好在日歷130開始產(chǎn)生時(shí)進(jìn)行,或者將日歷130裝載到例如第一主機(jī)處理設(shè)備200的第一主機(jī)數(shù)據(jù)庫(kù)204時(shí)進(jìn)行。同步引擎206和216還能執(zhí)行所謂的半慢同步,其中,從遠(yuǎn)程數(shù)據(jù)庫(kù)224中讀取所有的數(shù)據(jù)項(xiàng)并將其與主機(jī)數(shù)據(jù)庫(kù)204或214中的數(shù)據(jù)項(xiàng)相匹配。未能匹配的數(shù)據(jù)項(xiàng)將分別加到遠(yuǎn)程數(shù)據(jù)庫(kù)224或主機(jī)數(shù)據(jù)庫(kù)204或214中。同步引擎206、216最好實(shí)施為軟件程序調(diào)度程序,分別存儲(chǔ)在與控制器208、218相關(guān)的各自的存儲(chǔ)器中,可以用同樣的軟件實(shí)現(xiàn)?,F(xiàn)在來(lái)看遠(yuǎn)程處理設(shè)備220,常規(guī)變化日志227的目的是記錄對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)224所做的變化。常規(guī)變化日志227可以是固定容量的;當(dāng)添加新的變化時(shí),根據(jù)FIFO方法(先進(jìn)先出),將舊的變化推出變化日志227。常規(guī)變化日志227的每個(gè)項(xiàng)目包括以下屬性事件(添加、刪除或修改)、受影響的數(shù)據(jù)庫(kù)數(shù)據(jù)項(xiàng)的UID和變化計(jì)數(shù)器的值。變化計(jì)數(shù)器是這樣一種計(jì)數(shù)器它隨著對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)224所做的每次變化(添加、刪除或修改)而增加。變化計(jì)數(shù)器存儲(chǔ)在常規(guī)變化日志227中,在完成一次同步過(guò)程后,它還要保存到相應(yīng)的同步引擎206、216中。同步引擎206或216可以檢索常規(guī)變化日志227。通過(guò)使用變化計(jì)數(shù)器,同步引擎206或216可以把它的同步過(guò)程限制在最近的變化,即上一次完成的同步過(guò)程之后產(chǎn)生的變化。如果常規(guī)修改日志227包括了上一次同步過(guò)程之后的所有變化,則遠(yuǎn)程數(shù)據(jù)庫(kù)224和主機(jī)數(shù)據(jù)庫(kù)204或214中只有這樣的數(shù)據(jù)項(xiàng)需要比較,并在遠(yuǎn)程處理設(shè)備220和同步引擎206或216之間傳遞。這明顯加快同步過(guò)程并稱之為快同步。因此,按照本發(fā)明,由于提供了常規(guī)變化日志227,主機(jī)數(shù)據(jù)庫(kù)204、214和遠(yuǎn)程數(shù)據(jù)庫(kù)224之間的同步可以更為有效地完成。但是,兩個(gè)不同的可能情況會(huì)產(chǎn)生潛在的問(wèn)題,在這兩種情況中,同步引擎206、216之一從遠(yuǎn)程數(shù)據(jù)庫(kù)224中刪除數(shù)據(jù)情況1為了給遠(yuǎn)程數(shù)據(jù)庫(kù)224留出空間以存儲(chǔ)新數(shù)據(jù)項(xiàng),同步引擎206或216從遠(yuǎn)程數(shù)據(jù)庫(kù)224中刪除數(shù)據(jù)項(xiàng)。換句話說(shuō),遠(yuǎn)程數(shù)據(jù)庫(kù)224中沒(méi)有足夠的可用存儲(chǔ)空間來(lái)存儲(chǔ)新數(shù)據(jù)項(xiàng),因此同步引擎206或216通過(guò)刪除遠(yuǎn)程數(shù)據(jù)庫(kù)224中的舊數(shù)據(jù)項(xiàng)來(lái)釋放所需數(shù)量的存儲(chǔ)空間。例如為了給日歷130保留一個(gè)滑動(dòng)窗口而進(jìn)行上述過(guò)程。情況2當(dāng)用戶從主機(jī)數(shù)據(jù)庫(kù)204或214中刪除數(shù)據(jù)項(xiàng)時(shí),同步引擎206或216會(huì)刪除遠(yuǎn)程數(shù)據(jù)庫(kù)224中相應(yīng)的數(shù)據(jù)項(xiàng)。下面舉一示例來(lái)說(shuō)明,其中遠(yuǎn)程數(shù)據(jù)庫(kù)224與兩個(gè)主機(jī)數(shù)據(jù)庫(kù)204和214同步并發(fā)生了上述的潛在問(wèn)題。1.第一處理設(shè)備200的第一同步引擎206與遠(yuǎn)程處理設(shè)備220開始同步過(guò)程。2.為了給遠(yuǎn)程數(shù)據(jù)庫(kù)224的新數(shù)據(jù)項(xiàng)留出空間,同步引擎206刪除遠(yuǎn)程數(shù)據(jù)庫(kù)224中的一個(gè)數(shù)據(jù)項(xiàng)。3.因?yàn)閯h除了遠(yuǎn)程數(shù)據(jù)庫(kù)224中的一個(gè)數(shù)據(jù)項(xiàng),遠(yuǎn)程處理設(shè)備220在常規(guī)變化日志227中為刪除的數(shù)據(jù)項(xiàng)產(chǎn)生一個(gè)刪除項(xiàng)目。4.同步引擎206完成同步過(guò)程。5.第二處理設(shè)備210的第二同步引擎216與遠(yuǎn)程處理設(shè)備220開始同步過(guò)程。6.同步引擎216檢查遠(yuǎn)程處理設(shè)備220中的常規(guī)變化日志227,發(fā)現(xiàn)有一條數(shù)據(jù)項(xiàng)被刪除。7.因此,同步引擎216從第二主機(jī)數(shù)據(jù)庫(kù)214中刪除該數(shù)據(jù)項(xiàng)。8.同步引擎216完成它的同步過(guò)程。在步驟7中,因?yàn)榈谝恢鳈C(jī)處理設(shè)備200的同步引擎206僅僅是為了給要存儲(chǔ)在遠(yuǎn)程數(shù)據(jù)庫(kù)224中的數(shù)據(jù)項(xiàng)留出空間而刪除數(shù)據(jù)項(xiàng),因此不應(yīng)該從第二主機(jī)數(shù)據(jù)庫(kù)214中刪除該數(shù)據(jù)項(xiàng)。因此,當(dāng)遠(yuǎn)程處理設(shè)備220與超過(guò)一個(gè)的主機(jī)處理設(shè)備200和210同步時(shí),有可能意外刪除任何一個(gè)主機(jī)數(shù)據(jù)庫(kù)204或214的數(shù)據(jù)項(xiàng)??梢酝ㄟ^(guò)以下方法解決上述問(wèn)題·引入兩種類型的刪除軟刪除和硬刪除?!ひ雰蓷l指令,一條用于軟刪除,一條用于硬刪除?!ひ胗矂h除日志229,用于記錄已經(jīng)被硬刪除的數(shù)據(jù)項(xiàng)?!ぎ?dāng)同步引擎206或216請(qǐng)求遠(yuǎn)程處理設(shè)備220的變化日志時(shí),常規(guī)變化日志227和硬刪除日志229以合適的方式組成組合變化日志。為了給要存儲(chǔ)在遠(yuǎn)程數(shù)據(jù)庫(kù)224中新數(shù)據(jù)項(xiàng)留出空間,同步引擎使用軟刪除刪除其中的數(shù)據(jù)項(xiàng)。同步引擎使用硬刪除從遠(yuǎn)程數(shù)據(jù)庫(kù)224中刪除已經(jīng)從主機(jī)數(shù)據(jù)庫(kù)204或214中刪除了的這樣的數(shù)據(jù)項(xiàng)。硬刪除將作為硬刪除傳遞到和遠(yuǎn)程處理設(shè)備同步的其它主機(jī)處理設(shè)備(即,如果第一主機(jī)處理設(shè)備200開始了硬刪除,則硬刪除傳遞給第二主機(jī)處理設(shè)備220,反之亦然)。在遠(yuǎn)程數(shù)據(jù)庫(kù)224內(nèi)執(zhí)行硬刪除和軟刪除時(shí),同步引擎206或216使用兩條不同的指令。除了常規(guī)變化日志227外,遠(yuǎn)程處理設(shè)備220還保存獨(dú)立的硬刪除日志229,用于記錄已從遠(yuǎn)程數(shù)據(jù)庫(kù)中硬刪除的數(shù)據(jù)項(xiàng)。硬刪除日志229的容量可以是固定的或者動(dòng)態(tài)的。最新的項(xiàng)目最好放在日志的頂端。如果日志溢出,將刪除日志中最舊的項(xiàng)目。硬刪除日志229中的每個(gè)項(xiàng)目的屬性最好和常規(guī)變化日志227中的項(xiàng)目屬性相同事件(始終是硬刪除)、被硬刪除數(shù)據(jù)庫(kù)數(shù)據(jù)項(xiàng)的UID和變化計(jì)數(shù)器的值。當(dāng)遠(yuǎn)程處理設(shè)備220收到任何一個(gè)主機(jī)處理設(shè)備200或者210的一條軟刪除指令時(shí),它將在常規(guī)變化日志227中產(chǎn)生一個(gè)項(xiàng)目。相應(yīng)地,當(dāng)遠(yuǎn)程處理設(shè)備220收到一條硬刪除指令時(shí),它將在硬刪除日志229中產(chǎn)生一個(gè)項(xiàng)目。如前所述,同步引擎206或216適合于接收遠(yuǎn)程處理設(shè)備220的變化日志的內(nèi)容。這些內(nèi)容最好以組合變化日志的方式傳送到主機(jī)處理設(shè)備200或210,組合變化日志包括了常規(guī)變化日志227和硬刪除日志229的項(xiàng)目。有必要區(qū)分兩種不同類型的組合變化日志類型1和類型2。類型為1的組合變化日志包括了常規(guī)變化日志227和硬刪除日志229中的項(xiàng)目。項(xiàng)目最好按照最新的項(xiàng)目放在組合變化目志的頂端來(lái)列出。類型為2的組合變化日志包括了硬刪除229中的項(xiàng)目和一個(gè)表示常規(guī)變化日志227已滿的預(yù)定控制字符,諸如“¤”。從硬刪除日志來(lái)的數(shù)據(jù)項(xiàng)最好按照最新的項(xiàng)目放在組合變化日志的頂端來(lái)列出。如果同步引擎206或216收到類型為1的組合變化日志,則通過(guò)快同步過(guò)程處理其中的項(xiàng)目。另一方面,如果收到類型為2的組合變化日志,同步引擎206或216將通過(guò)快同步過(guò)程處理其中的項(xiàng)目,然后轉(zhuǎn)去執(zhí)行半慢同步過(guò)程。上面根據(jù)最佳實(shí)施例對(duì)本發(fā)明進(jìn)行了說(shuō)明。但是,如后附專利權(quán)利要求書中所定義,除了在此公開的實(shí)施例外,其它的實(shí)施例同樣可能在本發(fā)明的范疇之內(nèi)。例如,本發(fā)明實(shí)施有兩個(gè)以上與遠(yuǎn)程數(shù)據(jù)庫(kù)同步的主機(jī)數(shù)據(jù)庫(kù)。此外,給予“主機(jī)數(shù)據(jù)庫(kù)”和“遠(yuǎn)程數(shù)據(jù)庫(kù)”最為廣義的可能解釋。本發(fā)明不必局限于主機(jī)數(shù)據(jù)庫(kù)位于靜止設(shè)備中而遠(yuǎn)程數(shù)據(jù)庫(kù)位于便攜式設(shè)備中的情形。相反的情形也在本發(fā)明的范疇之內(nèi)。主機(jī)處理設(shè)備和遠(yuǎn)程處理設(shè)備實(shí)際上可以是任何一種能夠存儲(chǔ)主機(jī)數(shù)據(jù)庫(kù)或遠(yuǎn)程數(shù)據(jù)庫(kù)的設(shè)備。非限制的例子是臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、手提計(jì)算機(jī)、便攜式數(shù)字助理、移動(dòng)電話等。權(quán)利要求1.一種數(shù)據(jù)庫(kù)系統(tǒng),所述數(shù)據(jù)庫(kù)系統(tǒng)包括至少兩個(gè)主機(jī)數(shù)據(jù)庫(kù)(204,214),它們位于各自的主機(jī)處理設(shè)備(200,210)中;遠(yuǎn)程數(shù)據(jù)庫(kù)(224),它位于遠(yuǎn)程處理設(shè)備(220)中,其中所述主機(jī)數(shù)據(jù)庫(kù)和遠(yuǎn)程數(shù)據(jù)庫(kù)適合于存儲(chǔ)多個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)項(xiàng);以及同步引擎(206,216),它們位于每個(gè)主機(jī)處理設(shè)備中以使其主機(jī)數(shù)據(jù)庫(kù)與所述遠(yuǎn)程數(shù)據(jù)庫(kù)同步,所述數(shù)據(jù)庫(kù)系統(tǒng)的特征在于第一日志文件(227),它具有表示對(duì)所述遠(yuǎn)程數(shù)據(jù)庫(kù)(224)所做變化的項(xiàng)目,包括所述遠(yuǎn)程數(shù)據(jù)庫(kù)中數(shù)據(jù)項(xiàng)的增加和修改以及刪除,所述數(shù)據(jù)項(xiàng)的刪除是為了增加所述遠(yuǎn)程數(shù)據(jù)庫(kù)可用于存儲(chǔ)新數(shù)據(jù)項(xiàng)的自由存儲(chǔ)空間;和第二日志文件(229),它具有表示根據(jù)任何一個(gè)所述主機(jī)數(shù)據(jù)庫(kù)(204,214)中的刪除而對(duì)所述遠(yuǎn)程數(shù)據(jù)庫(kù)的相應(yīng)刪除的項(xiàng)目;其中所述同步引擎(206,216)適合于根據(jù)所述第二日志文件中的項(xiàng)目而不是所述第一日志文件中的項(xiàng)目而在其主機(jī)數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)項(xiàng)的刪除。2.根據(jù)權(quán)利要求1的數(shù)據(jù)庫(kù)系統(tǒng),其特征在于所述遠(yuǎn)程處理設(shè)備(220)是便攜式數(shù)字助理。3.根據(jù)權(quán)利要求1的數(shù)據(jù)庫(kù)系統(tǒng),其特征在于所述遠(yuǎn)程處理設(shè)備(220)是移動(dòng)電話。4.根據(jù)前述任何一項(xiàng)權(quán)利要求的數(shù)據(jù)庫(kù)系統(tǒng),其特征在于所述主機(jī)處理設(shè)備(200,210)中的至少一個(gè)是臺(tái)式計(jì)算機(jī)或膝上型計(jì)算機(jī)。5.一種同步至少兩個(gè)主機(jī)數(shù)據(jù)庫(kù)(204,214)和一個(gè)遠(yuǎn)程數(shù)據(jù)庫(kù)(224)的方法,其特征在于提供第一刪除指令,用于在所述遠(yuǎn)程數(shù)據(jù)庫(kù)(224)滿時(shí)刪除其中存儲(chǔ)的數(shù)據(jù)項(xiàng),提供第二刪除指令,用于從所述遠(yuǎn)程數(shù)據(jù)庫(kù)中刪除已經(jīng)從任何一個(gè)所述主機(jī)數(shù)據(jù)庫(kù)(204,214)中刪除了的那樣的數(shù)據(jù)項(xiàng),維護(hù)第一日志文件(227),用于記錄與所述第一刪除指令有關(guān)的數(shù)據(jù)項(xiàng),和維護(hù)第二日志文件(229),用于記錄與所述第二刪除指令有關(guān)的數(shù)據(jù)項(xiàng)。全文摘要一種數(shù)據(jù)庫(kù)系統(tǒng)具有至少兩個(gè)位于各自的主機(jī)處理設(shè)備(200,210)中的主機(jī)數(shù)據(jù)庫(kù)(204,214)。在遠(yuǎn)程處理設(shè)備(220)中提供遠(yuǎn)程數(shù)據(jù)庫(kù)(224)。主機(jī)數(shù)據(jù)庫(kù)和遠(yuǎn)程數(shù)據(jù)庫(kù)存儲(chǔ)多個(gè)數(shù)據(jù)庫(kù)數(shù)據(jù)項(xiàng)。在每個(gè)主機(jī)處理設(shè)備提供同步引擎(206,216),用于使其主機(jī)數(shù)據(jù)庫(kù)與遠(yuǎn)程數(shù)據(jù)庫(kù)同步。第一日志文件(227)包含表示對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)(224)所做變化的項(xiàng)目,包括遠(yuǎn)程數(shù)據(jù)庫(kù)中數(shù)據(jù)項(xiàng)的增加和修改以及刪除,所述數(shù)據(jù)項(xiàng)的刪除是為了增加可用于存儲(chǔ)新數(shù)據(jù)項(xiàng)的自由存儲(chǔ)空間。第二日志文件(229)包含表示根據(jù)任何一個(gè)主機(jī)數(shù)據(jù)庫(kù)(204,214)中的刪除而對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)的相應(yīng)刪除的項(xiàng)目。同步引擎(206,216)根據(jù)第二日志文件中而不是第一日志文件中的項(xiàng)目來(lái)刪除其主機(jī)數(shù)據(jù)庫(kù)中的數(shù)據(jù)項(xiàng)。文檔編號(hào)G06F17/30GK1339134SQ00803528公開日2002年3月6日申請(qǐng)日期2000年2月9日優(yōu)先權(quán)日1999年2月10日發(fā)明者J·比爾克勒,P·奧爾松,L·諾瓦克申請(qǐng)人:艾利森電話股份有限公司