两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

更新數(shù)據(jù)的方法和控制裝置的制作方法

文檔序號:6358943閱讀:285來源:國知局
專利名稱:更新數(shù)據(jù)的方法和控制裝置的制作方法
技術領域
本發(fā)明涉及數(shù)據(jù)管理領域,并且更具體地,涉及數(shù)據(jù)管理領域中更新數(shù)據(jù)的方法和控制裝置。
背景技術
隨著計算機系統(tǒng)越來越復雜,為了提高數(shù)據(jù)的可靠性或者讀取數(shù)據(jù)時的性能,常常將一份數(shù)據(jù)保存在多個設備上。例如,在現(xiàn)有的電信系統(tǒng)中,不僅需要將用戶簽約信息保存在計費系統(tǒng)中,還需要將其保存在呼叫控制系統(tǒng)中。即使在同一個系統(tǒng),在容災組網(wǎng)、負載均衡組網(wǎng)的情況下,也會把相同的數(shù)據(jù)存放在多個設備上。當把數(shù)據(jù)存放在多個設備上時,會面臨數(shù)據(jù)一致性的問題。當需要在多個設備上同時更新數(shù)據(jù)時,需要該數(shù)據(jù)更新操作在這些設備上要么都成功、要么都失敗,以保持數(shù)據(jù)的一致性。這種操作方式通常被稱為分布式事務處理。在分布式事務處理中,目前主要是使用兩階段提交協(xié)議。在第一階段中,事務管理器向所有設備發(fā)送預執(zhí)行命令。在第二階段中,事務管理器根據(jù)資源管理器對預執(zhí)行操作的響應,向該事務中涉及的所有資源管理器發(fā)送相應命令。即,當任一資源管理器預執(zhí)行操作失敗而作出否定響應時,事務管理器向涉及的所有資源管理器發(fā)送回滾命令,返回到數(shù)據(jù)更新前的狀態(tài);當所有資源管理器預執(zhí)行操作成功而作出肯定響應時,事務管理器命令涉及的所有資源管理器提交該事務,對數(shù)據(jù)進行更新。雖然兩階段提交協(xié)議能夠降低由于數(shù)據(jù)結構、主鍵沖突等原因導致的部分失敗而引起的數(shù)據(jù)不一致的幾率,但是依舊存在數(shù)據(jù)不一致的可能。因為在第二階段中,事務管理器向資源管理器發(fā)送提交命令時,可能出現(xiàn)網(wǎng)絡異?;蛸Y源管理器異常,從而導致部分資源管理器提交失敗。這樣,雖然預執(zhí)行都成功,但是提交錯誤,仍然不能保證數(shù)據(jù)的一致性。 特別是在網(wǎng)絡質量比較低、所涉及的設備較多時,更容易造成數(shù)據(jù)不一致的問題。針對在提交過程中出現(xiàn)的數(shù)據(jù)不一致,目前很難自動發(fā)現(xiàn)這種錯誤的存在,也很難確定需要對哪些數(shù)據(jù)進行修正,并且在修復的情況下也只能通過手工修復而不能自動修復,從而使得修復過程繁瑣。

發(fā)明內(nèi)容
本發(fā)明實施例提供了更新數(shù)據(jù)的方法和控制裝置,能夠解決提交過程出現(xiàn)錯誤而導致的數(shù)據(jù)不一致的問題,使得可以在提交過程中容易地發(fā)現(xiàn)錯誤的存在,并使不一致的數(shù)據(jù)得以修復,從而保證多個設備上數(shù)據(jù)的一致性。一方面,本發(fā)明實施例提供了一種更新數(shù)據(jù)的方法,包括當主資源管理器和從資源管理器的預執(zhí)行操作成功時,在主資源管理器上記錄事務日志;向從資源管理器發(fā)送提交命令,并確定從資源管理器是否都提交成功;如果從資源管理器存在任何一個沒有提交成功,則保留所述事務日志,以根據(jù)事務日志和所述主資源管理器的數(shù)據(jù),對與主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正。
4
另一方面,本發(fā)明實施例提供了一種用于更新數(shù)據(jù)的控制裝置,包括記錄模塊, 用于當主資源管理器和從資源管理器的預執(zhí)行操作成功時,在主資源管理器上記錄事務日志;確定模塊,用于向從資源管理器發(fā)送提交命令,并確定從資源管理器是否都提交成功; 第一保留模塊,用于如果從資源管理器存在任何一個沒有提交成功,則保留事務日志,以根據(jù)事務日志和主資源管理器的數(shù)據(jù),對與主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正?;诒景l(fā)明實施例提供的上述技術方案,由于在主資源管理器上記錄有輔助修正的事務日志,基于事務日志可以容易地發(fā)現(xiàn)提交過程中數(shù)據(jù)不一致的存在,并可以基于事務日志和主資源管理器的數(shù)據(jù)來進行數(shù)據(jù)修正。這樣,與主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)可以得以修正,使得即便在提交過程中出現(xiàn)錯誤,從資源管理器的數(shù)據(jù)也可以恢復到與主資源管理器的數(shù)據(jù)相同的狀態(tài),從而保證數(shù)據(jù)的一致性。


為了更清楚地說明本發(fā)明實施例的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是根據(jù)本發(fā)明實施例的用于進行分布式事務處理的系統(tǒng)的結構示意圖。圖2是根據(jù)本發(fā)明實施例的更新數(shù)據(jù)的方法的流程圖。圖3是根據(jù)本發(fā)明實施例的更新數(shù)據(jù)的另一方法的流程圖。圖4是根據(jù)本發(fā)明實施例的包括更新事務日志的事務處理方法的流程圖。圖5是根據(jù)本發(fā)明實施例的正常執(zhí)行提交操作時的例子的時序圖。圖6是根據(jù)本發(fā)明實施例的處理事務日志的方法的流程圖。圖7是根據(jù)本發(fā)明實施例的用于更新數(shù)據(jù)的控制裝置的結構框圖。圖8是根據(jù)本發(fā)明實施例的用于更新數(shù)據(jù)的另一控制裝置的結構框圖。
具體實施例方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明的一部分實施例,而不是全部實施例?;诒景l(fā)明中的所述實施例,本領域技術人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都應屬于本發(fā)明保護的范圍。首先,結合圖1描述根據(jù)本發(fā)明實施例的用于進行分布式事務處理的系統(tǒng)100。如圖1所示,系統(tǒng)100包括控制裝置110、多個資源管理器和事務發(fā)起者130。在多個資源管理器中存儲有相同的數(shù)據(jù),它們基于控制裝置110的控制而執(zhí)行同一事務的操作,即這些資源管理器是同一事務所涉及的資源管理器。當控制裝置110需要對資源管理器中的數(shù)據(jù)進行諸如修改、添加、刪除之類的更新時,這些資源管理器由于管理著相同的數(shù)據(jù),需要同步進行相同的操作,以保持數(shù)據(jù)的一致性。可以將這些資源管理器劃分為主資源管理器120和從資源管理器1至N(N是大于等于1的整數(shù))。例如,當用戶通過事務發(fā)起者130提供的用戶接口輸入操作數(shù)據(jù)時,可以將與事務發(fā)起者130所在的設備處于同一邏輯子網(wǎng)中的資源管理器設置為主資源管理器120,也可以將與事務發(fā)起者130所在的設備具有最近的物理距離的資源管理器設置為主資源管理器120,當然,還可以將其中任意一個資源管理器設置為主資源管理器120。主資源管理器120和從資源管理器1至N各自管理自己的數(shù)據(jù)庫,對其中的數(shù)據(jù)進行添加、刪除、插入、修改、替代等更新操作。另外,在主資源管理器120上,除了存儲有數(shù)據(jù)之外,還存儲有事務日志??梢酝ㄟ^事務日志來修正從資源管理器中的數(shù)據(jù)以實現(xiàn)數(shù)據(jù)的一致,這將在下文詳細描述。控制裝置110可以被進一步劃分為事務管理器112和事務日志處理器114,其具體操作將結合圖5和圖6進行描述。在描述數(shù)據(jù)更新的方法時,仍以控制裝置110作為主體進行描述,而不受控制裝置110的功能劃分的限制。事務發(fā)起者130負責業(yè)務處理,是事務的發(fā)起者。事務發(fā)起者130可以向用戶提供用戶接口 ;可以通過控制裝置110中的事務管理器112將數(shù)據(jù)寫到資源管理器中;可以把與事務有關的信息告訴事務管理器112,以命令主資源管理器120記錄事務日志;還可以根據(jù)控制裝置110中的事務日志管理器114從事務日志中提取的信息,來構造修正命令,再通過事務管理器112進行修正。下面,結合圖1的系統(tǒng),描述圖2中示出的根據(jù)本發(fā)明實施例的更新數(shù)據(jù)的方法 200。方法200包括在S210中,當主資源管理器和從資源管理器的預執(zhí)行操作成功時, 控制裝置110命令在主資源管理器上記錄事務日志;在S220中,控制裝置110向從資源管理器發(fā)送提交命令,并確定從資源管理器是否都提交成功;在S230中,如果從資源管理器存在任何一個沒有提交成功的,則保留事務日志,以根據(jù)事務日志和主資源管理器的數(shù)據(jù), 對與主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正。當主資源管理器120和從資源管理器1至N需要執(zhí)行數(shù)據(jù)更新事務時,控制裝置 110命令主資源管理器120和從資源管理器1至N進行預執(zhí)行操作。當這些資源管理器返回的響應告訴控制裝置110預執(zhí)行操作成功時,控制裝置110命令主資源管理器120記錄事務日志,并命令從資源管理器1至N執(zhí)行提交操作,從而根據(jù)從資源管理器1至N返回的響應來確定從資源管理器1至N是否都提交成功。如果有從資源管理器1至N提交不成功, 則控制裝置110命令主資源管理器120保留所記錄的事務日志,以使得可以根據(jù)事務日志, 并以主資源管理器的數(shù)據(jù)為準,對與主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正,從而保持數(shù)據(jù)的一致性。根據(jù)本發(fā)明實施例提供的更新數(shù)據(jù)的方法,由于在主資源管理器上記錄有輔助修正的事務日志,基于事務日志可以容易地發(fā)現(xiàn)提交過程中數(shù)據(jù)不一致的存在,并可以基于事務日志,以主資源管理器的數(shù)據(jù)為準,來進行數(shù)據(jù)修正。這樣,與主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)可以得以修正,使得即便在提交過程中出現(xiàn)錯誤,從資源管理器的數(shù)據(jù)也可以恢復到與主資源管理器的數(shù)據(jù)相同的狀態(tài),從而保證數(shù)據(jù)的一致性。接下來,詳細描述根據(jù)本發(fā)明實施例的S210至S230。在S210中,當主資源管理器和從資源管理器的預執(zhí)行操作成功時,在主資源管理器上記錄事務日志。事務日志可以表征當前所執(zhí)行的事務的特征。例如,當前事務是對數(shù)據(jù)庫中哪些表格、哪些記錄的數(shù)據(jù)進行更新等。
根據(jù)本發(fā)明的一個實施例,可以在主資源管理器120上將當前事務的數(shù)據(jù)類型和數(shù)據(jù)標識信息記錄為事務日志??刂蒲b置110可以命令主資源管理器120將當前事務的數(shù)據(jù)類型和數(shù)據(jù)標識信息記錄為事務日志。數(shù)據(jù)類型和數(shù)據(jù)標識信息可以是由事務發(fā)起者130傳遞給控制裝置110 的信息,也可以是由控制裝置110根據(jù)事務而主動提取出的信息。數(shù)據(jù)類型可以指示是對數(shù)據(jù)庫中的哪些表格進行操作(例如更新操作),數(shù)據(jù)標識信息可以指示是對表格中的哪些記錄進行操作。例如,在電信系統(tǒng)中,當需要更新與訂戶簽約信息有關的數(shù)據(jù)時,該事務的數(shù)據(jù)類型是訂戶信息的表格,該事務的數(shù)據(jù)標識信息是用戶的電話號碼,通過電話號碼來標識記錄。再例如,在以XML(Extensible Markup Language,擴展標記語言)格式化表達的數(shù)
據(jù)中,如下所示
<Objectl>
<Keyl>l</Keyl> <Fieldl>a</Fieldl> <Field2>b</Field2> <Field3>c</Field3> </Objectl>由該格式化的數(shù)據(jù)可知,數(shù)據(jù)類型是Objectl,數(shù)據(jù)標識信息是1。該數(shù)據(jù)類型和數(shù)據(jù)標識信息可以直接由控制裝置110提取出來。通過記錄數(shù)據(jù)類型和數(shù)據(jù)標識信息,就可以確定當前的事務是什么,從而可以基于此來記錄事務日志。在S220中,向從資源管理器發(fā)送提交命令,并確定從資源管理器是否都提交成功??刂蒲b置110命令從資源管理器1至N執(zhí)行提交操作,并接收來自從資源管理器 1至N的響應,通過響應來確定是否提交成功。雖然在該例子中S220在S210之后執(zhí)行,但是S220也可以在S210之前執(zhí)行,還可以與S210同時執(zhí)行。只要在主資源管理器120和從資源管理器1至N的預執(zhí)行操作都成功之后,執(zhí)行S210和S220即可。所以,S210的記錄事務日志和S220的發(fā)送提交命令并確定是否提交成功的執(zhí)行順序對本發(fā)明的保護范圍不構成限制。在S230中,如果從資源管理器存在任何一個沒有提交成功的,則保留事務日志, 以根據(jù)事務日志和主資源管理器的數(shù)據(jù),對與主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正。如果控制裝置110從任一從資源管理器接收到提交不成功的響應、或者沒有接收到任何響應、或者接收響應的時間超時、或者返回響應內(nèi)容錯誤,則控制裝置110可以確定相應的從資源管理器提交不成功。該不成功可能是由于網(wǎng)絡異常造成的從資源管理器沒有接收到提交命令或提交命令錯誤,也可能是由于從資源管理器異常(例如斷電、死機等)造
7成的提交不成功。當從資源管理器1至N沒有都提交成功,所記錄的事務日志就被保留下來,以輔助之后的修正。根據(jù)事務日志,可以容易地確定在提交過程中出現(xiàn)了數(shù)據(jù)不一致,并且可以容易地定位是哪些數(shù)據(jù)出現(xiàn)了不一致,例如是哪些表格中的哪些記錄出現(xiàn)了不一致。根據(jù)本發(fā)明的實施例,之后的修正可以是人工參考事務日志進行的修正。此時,相比于目前人工修正的方法,可以根據(jù)事務日志的記載來自動且方便地確定數(shù)據(jù)不一致的存在,并可以基于事務日志來找到需要對哪些數(shù)據(jù)進行修正,從而簡化了數(shù)據(jù)修正過程。根據(jù)本發(fā)明的實施例,之后的修正也可以是控制裝置120根據(jù)事務日志進行的自動修正,從而無需人工的參與,可以提高數(shù)據(jù)修正的效率。在控制裝置120進行的數(shù)據(jù)修正中,可以從事務日志中提取數(shù)據(jù)類型和數(shù)據(jù)標識信息,從而可以確定需要完成什么事務,由此可以構造出與相應事務對應的修正命令。例如,修正命令可以是先刪除對應表格的對應記錄中的數(shù)據(jù),再將新的數(shù)據(jù)插入到對應表格的對應記錄中。修正命令可以由事務發(fā)起者130來構造,也可以由控制裝置110來構造(例如,從資源管理器支持相同的接口,從而可以由控制裝置110構造通用的修正命令)。由于事務發(fā)起者130構造的修正命令也需要交由控制裝置110來執(zhí)行,所以數(shù)據(jù)修正的執(zhí)行都是由控制裝置110來控制進行的。從從資源管理器1至N的角度看,修正命令的來源可以認為都是控制裝置110。而用什么數(shù)據(jù)進行修正,則需要借助于主資源管理器120中的數(shù)據(jù),以主資源管理器120管理的數(shù)據(jù)為準。例如,根據(jù)事務日志中的數(shù)據(jù)類型和數(shù)據(jù)標識信息,可以在主資源管理器120中找到相應的數(shù)據(jù),以該數(shù)據(jù)為準,對從資源管理器管理的數(shù)據(jù)進行修正。根據(jù)本發(fā)明的實施例,為準的數(shù)據(jù)可以是主資源管理器提交后的數(shù)據(jù),也可以是主資源管理器回滾后的數(shù)據(jù)。進行修正時,控制裝置110可以向所有的從資源管理器1至N發(fā)送修正命令以指示其修正或重新執(zhí)行數(shù)據(jù)更新操作等。對于已提交成功的從資源管理器只需對提交的數(shù)據(jù)進行覆蓋即可,而對于未提交成功的從資源管理器則會對其中的數(shù)據(jù)進行修正??刂蒲b置110也可以僅僅向與主資源管理器120的數(shù)據(jù)不一致的從資源管理器發(fā)送修正命令。此時,控制裝置110可以認為提交響應異常的從資源管理器都是與主資源管理器120不一致的從資源管理器。另外,進行修正時,有可能從資源管理器管理著不同類型的數(shù)據(jù)庫,或者其數(shù)據(jù)庫具有不同的接口,使得需要根據(jù)不同的資源管理器,構造出與其接口相適應的修正命令。當然,如果從資源管理器的數(shù)據(jù)庫接口相同或可以識別通用的命令,則可以只構造一種修正命令或構成數(shù)據(jù)更新操作的通用命令,再分別發(fā)送給它們以執(zhí)行修正。根據(jù)本發(fā)明實施例提供的更新數(shù)據(jù)的方法,由于在主資源管理器上記錄有輔助修正的事務日志,可以在提交出現(xiàn)錯誤時,基于事務日志中的數(shù)據(jù)類型和數(shù)據(jù)標識來確定對哪些表格的哪些記錄進行修正,并基于主資源管理器管理的數(shù)據(jù)來確定修正為哪些數(shù)據(jù), 從而完成對從資源管理器管理的數(shù)據(jù)的修正。這樣,即便在提交過程中出現(xiàn)錯誤,借助于事務日志,從資源管理器管理的數(shù)據(jù)也可以自動恢復到與主資源管理器的數(shù)據(jù)相同的狀態(tài), 從而可以保證數(shù)據(jù)的一致性,并且由于控制裝置可以根據(jù)事務日志自動進行數(shù)據(jù)修正,使得數(shù)據(jù)修正的效率得以提高。
圖3是根據(jù)本發(fā)明實施例的更新數(shù)據(jù)的另一方法300的流程圖。圖3的方法300 的S310和S320與圖2的方法200的S210和S220基本相同。當在S320中確定從資源管理器1至N存在任何一個沒有提交成功時,在S330中保留事務日志,以根據(jù)該事務日志和主資源管理器120的數(shù)據(jù)來進行糾正。在S335中,控制裝置110向主資源管理器120發(fā)送回滾命令。這樣,可以根據(jù)S330中保留的事務日志和主資源管理器120回滾后的數(shù)據(jù),對從資源管理器的數(shù)據(jù)進行修正。由于從資源管理器1至N沒有都提交成功,這可能意味著部分提交成功、部分提交失敗,也可能意味著都沒有提交成功,這將造成數(shù)據(jù)不一致的風險。此時,由于主資源管理器120還沒有執(zhí)行提交操作,因此可以讓主資源管理器120回滾到預執(zhí)行操作前的狀態(tài),從而以該狀態(tài)為準進行數(shù)據(jù)的修復,使得無論從資源管理器1至N是否提交成功,都可以保持在主資源管理器120回滾所恢復的狀態(tài)中,從而實現(xiàn)數(shù)據(jù)的一致。在S340中,控制裝置110根據(jù)事務日志和主資源管理器120回滾到的數(shù)據(jù),對與主資源管理器120的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正。修正過程可以參考上述 S230中的描述。修正之后,在S345中,控制裝置110確定修正是否成功。例如,控制裝置110可以接收來自進行修正操作的從資源管理器的響應,在響應中可以攜帶修正是否成功的信息, 也可以攜帶修正后的結果。根據(jù)返回的響應,確定修正是否成功。如果修正成功,則在S350中刪除事務日志。如果修正不成功,則在S360中保留事
務日志。在事務日志中可以存儲提交過程有錯誤的事務,如果修正成功,則說明主資源管理器120管理的數(shù)據(jù)和從資源管理器1至N管理的數(shù)據(jù)相一致,可以刪除該事務日志,從而表明該事務日志對應的事務已成功完成。而如果修正不成功,說明數(shù)據(jù)不一致還存在,則還需要保留事務日志,以在后續(xù)操作中,再次對該事務日志對應的事務進行處理。當在S320中確定從資源管理器1至N都提交成功時,在S360中,控制裝置110向主資源管理器120發(fā)送提交命令。由于從資源管理器1至N都提交成功,則主資源管理器120也需要進行提交操作。在S365中,在主資源管理器120提交成功時刪除事務日志。主資源管理器120提交成功的同時刪除事務日志,可以防止錯誤地記錄下正確執(zhí)行的事務。例如,控制裝置110可以先向主資源管理器120發(fā)送刪除事務日志的預執(zhí)行命令, 當刪除預執(zhí)行成功時,主資源管理器120再進行提交操作,并在提交成功的同時刪除事務日志。提交數(shù)據(jù)的進程與刪除事務日志的進程并發(fā)執(zhí)行。根據(jù)本發(fā)明的一個實施例,在S310之后,在S370中,控制裝置110周期性檢查是
否存在事務日志。 主資源管理器120可以將事務日志存儲在事務日志表中,該事務日志表中的事務日志可以隨著操作的進行而得以更新和改變,這將結合圖4來進行描述。
控制裝置110可以通過查找事務日志表來檢查是否在其中存在事務日志??刂蒲b置110可以以等長的時間間隔來進行周期性檢查,也可以以變長的時間間隔來進行周期性檢查。在S375中,如果存在事務日志,則根據(jù)該事務日志和主資源管理器的數(shù)據(jù),對與主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正。事務日志的存在說明還有數(shù)據(jù)不一致的問題,因此,控制裝置110從事務日志表中讀取一條事務日志,根據(jù)該事務日志指示的事務,結合主資源管理器120在該事務日志指示下的數(shù)據(jù),對從資源管理器中的相應數(shù)據(jù)進行修正。雖然在圖3中S370和S375在S310之后執(zhí)行,但是S370和S375也可以在任何時刻執(zhí)行。根據(jù)本發(fā)明實施例提供的更新數(shù)據(jù)的方法,由于在主資源管理器上記錄輔助修正的事務日志,在數(shù)據(jù)不一致仍存在的情況下保留事務日志,而在數(shù)據(jù)不一致得以解決的情況下刪除事務日志,使得事務日志動態(tài)改變,從而可以基于現(xiàn)存的事務日志,并以主資源管理器在事務日志指示下的數(shù)據(jù)為準,來修正數(shù)據(jù)。這樣,即便事務日志沒有得到及時處理或處理錯誤,也可以在后續(xù)操作中繼續(xù)處理,從而可以保證數(shù)據(jù)的一致性。并且,借助于事務日志來進行自動修正,無需人工的干預,可以提高數(shù)據(jù)修復的效率。圖4示出了根據(jù)本發(fā)明實施例的包括更新事務日志的事務處理方法400的流程圖。在S405中,事務發(fā)起者130啟動諸如數(shù)據(jù)更新之類的事務,事務開始。在S410中,控制裝置110向主資源管理器120和次資源管理器1至N發(fā)送預執(zhí)行命令,從而在主資源管理器120和次資源管理器1至N上預執(zhí)行數(shù)據(jù)操作。在S415中,控制裝置110根據(jù)返回的響應,確定主資源管理器120和次資源管理器1至N的預執(zhí)行操作是否都成功。如果預執(zhí)行存在任何一個沒有成功,則在S420中,控制裝置110向預執(zhí)行成功的資源管理器發(fā)送回滾命令,以返回預執(zhí)行前的狀態(tài)。在S425中,控制裝置110向事務發(fā)起者130返回事務執(zhí)行失敗。并在S470中,事務發(fā)起者130啟動的事務結束。如果在S415中確定預執(zhí)行都成功,則在S430中,在主資源管理器120上創(chuàng)建一個
新事務。在S435中,在該新事務中執(zhí)行事務日志的記錄操作并提交該新事務,以將事務日志寫到事務日志表中。在S440中,控制裝置110向從資源管理器1至N發(fā)送提交命令,以提交從資源管理器1至N上的事務。在S445中,控制裝置110接收從資源管理器1至N的響應,確定從資源管理器1 至N是否都提交成功。如果從資源管理器1至N存在任何一個沒有提交成功,則在S450中,事務管理器 112向主資源管理器120發(fā)送回滾命令,回滾主資源管理器120上的事務。如果從資源管理器1至N都提交成功,則在S455中,在主資源管理器120上預執(zhí)行事務日志的刪除操作。在S460中,控制裝置110向主資源管理器120發(fā)送提交命令,提交主資源管理器 120上的事務,并在提交成功的同時刪除事務日志。
在S465中,控制裝置110向事務發(fā)起者130返回事務執(zhí)行成功。并在S470中,事務發(fā)起者130啟動的事務結束。接下來,結合圖5描述根據(jù)本發(fā)明實施例的正常執(zhí)行提交操作時的時序圖,并結合圖6描述根據(jù)本發(fā)明實施例的處理事務日志的方法600。此外,結合圖1,通過控制裝置 110包含的事務管理器112和事物日志處理器114來進行更加詳細的描述。事務管理器112可用于控制和管理資源管理器的操作,向資源管理器發(fā)送命令, 從資源管理器接收響應。事務日志處理器114可用于管理事務日志,從事務日志中提取信息,將提取的信息提交給事務發(fā)起者130以構造修正命令,或者將提取的信息提交給事務管理器112以構造修正命令。如圖5所示,在S510中,事務發(fā)起者130向事務管理器112提交數(shù)據(jù)以及數(shù)據(jù)類型和數(shù)據(jù)標識信息。其中,在數(shù)據(jù)具有諸如XML、SQL(Structured Query Language,結構化查詢語言)之類的良好的結構化時,可以不向事務管理器112提交數(shù)據(jù)類型和數(shù)據(jù)標識信息,而由事務管理器112根據(jù)數(shù)據(jù)來自動提取。在S520中,事務管理器112開始事務。在S530中,事務管理器112將數(shù)據(jù)類型和數(shù)據(jù)標識信息保存到事務上。在S540中,事務管理器112向主資源管理器120發(fā)送數(shù)據(jù)以進行預執(zhí)行操作。在S550中,事務管理器112向從資源管理器1至N發(fā)送數(shù)據(jù)以進行預執(zhí)行操作。 S550也可以在S540之前執(zhí)行,還可以與S540同時執(zhí)行。當從資源管理器1至N和主資源管理器120返回的響應(在圖中未示出)表明預執(zhí)行都成功時,在S560中,事務管理器112在新的事務中命令主資源管理器120將與事務有關的上下文信息(例如,數(shù)據(jù)類型和數(shù)據(jù)標識信息)保存在事務日志中。在S570中,事務管理器112向從資源管理器1至N發(fā)送提交命令,以提交從資源管理器1至N中的事務。當從資源管理器1至N返回的響應(在圖中未示出)表明提交都成功時,在S580 中,事務管理器112在事務發(fā)起者130啟動的事務中命令主資源管理器120預刪除當前的事務日志。在S590中,事務管理器112向主資源管理器120發(fā)送提交命令,以提交主資源管理器120中的事務。同時,在主資源管理器120的事務中執(zhí)行刪除事務日志的操作,使得該刪除操作與提交操作一起完成。在S95中,由于提交都成功,事務管理器112向事務發(fā)起者130返回事務執(zhí)行成功的響應。如圖6所示,事務日志處理器114可以定期掃描事務日志表,對超過一定時間仍然存在的事務日志進行處理。在S610中,事務日志處理器114從事務日志表中順序地讀取一條事務日志。在S620中,事務日志處理器114提取事務日志中的數(shù)據(jù)類型和數(shù)據(jù)標識信息。在S630中,事務日志處理器114可以將數(shù)據(jù)類型和數(shù)據(jù)標識信息作為參數(shù),通過該參數(shù)回調(diào)事務發(fā)起者130用于構造修正命令的接口,或者傳遞給事務管理器112。事務發(fā)起者130或事務管理器112以主資源管理器120的數(shù)據(jù)為準,構造修復數(shù)據(jù)的修正命令。由于事務發(fā)起者130可以知曉不同從資源管理器的類型或接口,所以事務發(fā)起者130可以針對不同的從資源管理器構造修正命令。在數(shù)據(jù)結構簡單、具有良好結構化的情況下,例如數(shù)據(jù)沒有復雜的關聯(lián)關系或者級聯(lián)刪除的情況下,事務日志處理器114可以將數(shù)據(jù)類型和數(shù)據(jù)標識信息傳遞給事務管理器112,由事務管理器112來構造從資源管理器通用的修正命令,而無需回調(diào)事務發(fā)起者130的接口。無論修正命令由誰構造,都由控制裝置110(具體地,可以為事務管理器11 來控制從資源管理器執(zhí)行修正命令,因此,都可以認為是由控制裝置110根據(jù)事務日志和主資源管理器管理的數(shù)據(jù)來對從資源管理器管理的數(shù)據(jù)進行修正。在S640中,事務管理器112發(fā)送從事務發(fā)起者130接收或自己構造的修正命令, 在從資源管理器上執(zhí)行數(shù)據(jù)修正操作。在S650中,事務管理器112確定從資源管理器的數(shù)據(jù)修正是否成功。如果從資源管理器的修正操作成功,則在S660中,事務日志處理器114刪除當前事務日志,否則在S670中,事務日志處理器114不刪除事務日志,以供下一周期再次重試。上面描述了根據(jù)本發(fā)明實施例的更新數(shù)據(jù)的方法,接下來,結合圖7和圖8描述根據(jù)本發(fā)明實施例的用于更新數(shù)據(jù)的控制裝置。圖7是根據(jù)本發(fā)明實施例的用于更新數(shù)據(jù)的控制裝置700的結構框圖??刂蒲b置700包括記錄模塊710、確定模塊720和第一保留模塊730。記錄模塊710 可用于當主資源管理器和從資源管理器的預執(zhí)行操作成功時,在主資源管理器上記錄事務日志。確定模塊720可用于向從資源管理器發(fā)送提交命令,并確定從資源管理器是否都提交成功。第一保留模塊730可用于如果從資源管理器存在任何一個沒有提交成功,則保留事務日志,以根據(jù)事務日志和主資源管理器的數(shù)據(jù),對與主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正。記錄模塊710、確定模塊720和第一保留模塊730的上述和其他操作和/或功能可以參考上述更新數(shù)據(jù)的方法200中的S210、S220和S230,為了避免重復,在此不再贅述。本發(fā)明實施例提供的控制裝置通過在主資源管理器上記錄輔助修正的事務日志, 使得可以基于事務日志來容易地發(fā)現(xiàn)提交過程中數(shù)據(jù)不一致的存在,并可以基于事務日志,以主資源管理器的數(shù)據(jù)為準,對不一致的數(shù)據(jù)進行修正。這樣,與主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)可以得以修正,使得即便在提交過程中出現(xiàn)錯誤,從資源管理器的數(shù)據(jù)也可以恢復到與主資源管理器的數(shù)據(jù)相同的狀態(tài),從而保證數(shù)據(jù)的一致性。圖8是根據(jù)本發(fā)明實施例的用于更新數(shù)據(jù)的控制裝置800的結構框圖。控制裝置 800的記錄模塊810、確定模塊820和第一保留模塊830與圖7的控制裝置700的記錄模塊 710、確定模塊720和第一保留模塊730基本相同。根據(jù)本發(fā)明的一個實施例,記錄模塊810可用于在主資源管理器上將當前事務的數(shù)據(jù)類型和數(shù)據(jù)標識信息記錄為事務日志。根據(jù)本發(fā)明的一個實施例,控制裝置800還可以包括第一發(fā)送模塊840。第一發(fā)送模塊840可用于在第一保留模塊830保留事務日志之后,向主資源管理器發(fā)送回滾命令。 這樣,可以根據(jù)事務日志和主資源管理器回滾后的數(shù)據(jù),對從資源管理器的數(shù)據(jù)進行修正, 從而將資源管理器管理的數(shù)據(jù)維持在事務執(zhí)行前的狀態(tài)。根據(jù)本發(fā)明的一個實施例,控制裝置800還可以包括第一刪除模塊850和第二保留模塊860。第一刪除模塊850可用于如果修正成功,則刪除事務日志。第二保留模塊860
12可用于如果修正不成功,則保留事務日志。根據(jù)本發(fā)明的一個實施例,控制裝置800還可以包括第二發(fā)送模塊870和第二刪除模塊880。第二發(fā)送模塊870可用于如果從資源管理器都提交成功,則向主資源管理器發(fā)送提交命令。第二刪除模塊880可用于在主資源管理器提交成功時刪除事務日志。根據(jù)本發(fā)明的一個實施例,控制裝置800還可以包括檢查模塊890和修正模塊 895。檢查模塊880可用于周期性檢查是否存在事務日志。修正模塊890可用于如果存在事務日志,則根據(jù)該事務日志和主資源管理器的數(shù)據(jù),對與主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正。第一發(fā)送模塊840、第一刪除模塊850、第二保留模塊860、第二發(fā)送模塊870、第二刪除模塊880、檢查模塊890和修正模塊895的上述和其他操作和/或功能可以參考上述更新數(shù)據(jù)的方法300中的S310至S375以及方法400中的相應描述,為了避免重復,在此不再贅述。本發(fā)明實施例提供的控制裝置的記錄模塊810通過將數(shù)據(jù)類型和數(shù)據(jù)標識信息記錄在主資源管理器上作為事務日志,可以在提交出現(xiàn)錯誤時,使修正模塊895基于事務日志的數(shù)據(jù)類型和數(shù)據(jù)標識來確定對哪些表格的哪些記錄進行修正,并基于主資源管理器管理的數(shù)據(jù)來確定修正為哪些數(shù)據(jù),從而完成對從資源管理器管理的數(shù)據(jù)的自動修正??刂蒲b置中的第一保留模塊830和第二保留模塊860在數(shù)據(jù)不一致仍存在的情況下保留事務日志,而第一刪除模塊850和第二刪除模塊880在數(shù)據(jù)不一致得以解決的情況下刪除事務日志,使得事務日志動態(tài)改變,從而修正模塊895可以基于現(xiàn)存的事務日志,并以主資源管理器在事務日志指示下的數(shù)據(jù)為準,來修正數(shù)據(jù)。這樣,在提交過程中出現(xiàn)錯誤時,借助于事務日志,從資源管理器管理的數(shù)據(jù)可以自動恢復到與主資源管理器的數(shù)據(jù)相同的狀態(tài),從而保證數(shù)據(jù)的一致性。并且即便事務日志沒有得到及時處理或處理錯誤,也可以在后續(xù)操作中繼續(xù)處理,數(shù)據(jù)的一致性得到了極大地保證。另外,借助于事務日志進行的自動修正,無需人工的干預,還可以提高數(shù)據(jù)修復的效率。本領域技術人員可以意識到,結合本文中所公開的實施例中描述的各方法步驟和單元,能夠以電子硬件、計算機軟件或者二者的結合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各實施例的步驟及組成。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術方案的特定應用和設計約束條件。本領域技術人員可以對每個特定的應用使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應認為超出本發(fā)明的范圍。結合本文中所公開的實施例描述的方法步驟可以用硬件、處理器執(zhí)行的軟件程序、或者二者的結合來實施。軟件程序可以置于隨機存取存儲器(RAM)、內(nèi)存、只讀存儲器 (ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM或技術領域內(nèi)所公知的任意其它形式的存儲介質中。盡管已示出和描述了本發(fā)明的一些實施例,但本領域技術人員應該理解,在不脫離本發(fā)明的原理和精神的情況下,可對這些實施例進行各種修改,這樣的修改應落入本發(fā)明的范圍內(nèi)。
權利要求
1.一種更新數(shù)據(jù)的方法,其特征在于,包括當主資源管理器和從資源管理器的預執(zhí)行操作成功時,在所述主資源管理器上記錄事務日志;向所述從資源管理器發(fā)送提交命令,并確定所述從資源管理器是否都提交成功;如果所述從資源管理器存在任何一個沒有提交成功,則保留所述事務日志,以根據(jù)所述事務日志和所述主資源管理器的數(shù)據(jù),對與所述主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正。
2.根據(jù)權利要求1所述的方法,其特征在于,所述在所述主資源管理器上記錄事務日志包括在所述主資源管理器上將當前事務的數(shù)據(jù)類型和數(shù)據(jù)標識信息記錄為事務日志。
3.根據(jù)權利要求1和2所述的方法,其特征在于,所述保留所述事務日志之后,還包括向所述主資源管理器發(fā)送回滾命令。
4.根據(jù)權利要求1至3所述的方法,其特征在于,所述對與所述主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正之后,還包括如果修正成功,則刪除所述事務日志;如果修正不成功,則保留所述事務日志。
5.根據(jù)權利要求1至4所述的方法,其特征在于,還包括如果所述從資源管理器都提交成功,則向所述主資源管理器發(fā)送提交命令;在所述主資源管理器提交成功時刪除所述事務日志。
6.根據(jù)權利要求1至5所述的方法,其特征在于,還包括周期性檢查是否存在事務日志;如果存在事務日志,則根據(jù)該事務日志和所述主資源管理器的數(shù)據(jù),對與所述主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正。
7.一種用于更新數(shù)據(jù)的控制裝置,其特征在于,包括記錄模塊,用于當主資源管理器和從資源管理器的預執(zhí)行操作成功時,在所述主資源管理器上記錄事務日志;確定模塊,用于向所述從資源管理器發(fā)送提交命令,并確定所述從資源管理器是否都提交成功;第一保留模塊,用于如果所述從資源管理器存在任何一個沒有提交成功,則保留所述事務日志,以根據(jù)所述事務日志和所述主資源管理器的數(shù)據(jù),對與所述主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正。
8.根據(jù)權利要求7所述的控制裝置,其特征在于,所述記錄模塊用于在所述主資源管理器上將當前事務的數(shù)據(jù)類型和數(shù)據(jù)標識信息記錄為事務日志。
9.根據(jù)權利要求7和8所述的控制裝置,其特征在于,還包括第一發(fā)送模塊,用于在所述第一保留模塊保留所述事務日志之后,向所述主資源管理器發(fā)送回滾命令。
10.根據(jù)權利要求7至9所述的控制裝置,其特征在于,還包括第一刪除模塊,用于如果修正成功,則刪除所述事務日志;第二保留模塊,用于如果修正不成功,則保留所述事務日志。
11.根據(jù)權利要求7至10所述的控制裝置,其特征在于,還包括第二發(fā)送模塊,用于如果所述從資源管理器都提交成功,則向所述主資源管理器發(fā)送提交命令;第二刪除模塊,用于在所述主資源管理器提交成功時刪除所述事務日志。
12.根據(jù)權利要求7至11所述的控制裝置,其特征在于,還包括 檢查模塊,用于周期性檢查是否存在事務日志;修正模塊,用于如果存在事務日志,則根據(jù)該事務日志和所述主資源管理器的數(shù)據(jù),對與所述主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正。
全文摘要
本發(fā)明實施例提供了更新數(shù)據(jù)的方法和控制裝置。該方法包括當主資源管理器和從資源管理器的預執(zhí)行操作成功時,在主資源管理器上記錄事務日志;向從資源管理器發(fā)送提交命令,并確定從資源管理器是否都提交成功;如果從資源管理器存在任何一個沒有提交成功,則保留所述事務日志,以根據(jù)事務日志和所述主資源管理器的數(shù)據(jù),對與主資源管理器的數(shù)據(jù)不一致的從資源管理器的數(shù)據(jù)進行修正?;诒景l(fā)明實施例提供的技術方案,由于在主資源管理器上記錄有輔助修正的事務日志,可以基于事務日志和主資源管理器的數(shù)據(jù)來進行數(shù)據(jù)修正。這樣,即便在提交過程中出現(xiàn)錯誤,從資源管理器的數(shù)據(jù)也可以恢復到與主資源管理器的數(shù)據(jù)相同的狀態(tài),從而保證數(shù)據(jù)的一致性。
文檔編號G06F17/30GK102203779SQ201180000694
公開日2011年9月28日 申請日期2011年5月3日 優(yōu)先權日2011年5月3日
發(fā)明者陶建波 申請人:華為技術有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
新河县| 恭城| 祁阳县| 理塘县| 西贡区| 朝阳区| 北海市| 湘阴县| 当雄县| 重庆市| 罗定市| 镇雄县| 民丰县| 麦盖提县| 洛隆县| 尚志市| 台安县| 河北省| 石棉县| 昌黎县| 威远县| 集贤县| 河西区| 梁河县| 宣城市| 丰顺县| 阿合奇县| 龙岩市| 南华县| 新昌县| 运城市| 洛扎县| 杭锦旗| 彩票| 荆州市| 洛扎县| 焦作市| 武威市| 达拉特旗| 湘潭县| 黎平县|