專利名稱:更新數據的方法和控制裝置的制作方法
技術領域:
本發明涉及數據管理領域,并且更具體地,涉及數據管理領域中更新數據的方法和控制裝置。
背景技術:
隨著計算機系統越來越復雜,為了提高數據的可靠性或者讀取數據時的性能,常常將一份數據保存在多個設備上。例如,在現有的電信系統中,不僅需要將用戶簽約信息保存在計費系統中,還需要將其保存在呼叫控制系統中。即使在同一個系統,在容災組網、負載均衡組網的情況下,也會把相同的數據存放在多個設備上。當把數據存放在多個設備上時,會面臨數據一致性的問題。當需要在多個設備上同時更新數據時,需要該數據更新操作在這些設備上要么都成功、要么都失敗,以保持數據的一致性。這種操作方式通常被稱為分布式事務處理。在分布式事務處理中,目前主要是使用兩階段提交協議。在第一階段中,事務管理器向所有設備發送預執行命令。在第二階段中,事務管理器根據資源管理器對預執行操作的響應,向該事務中涉及的所有資源管理器發送相應命令。即,當任一資源管理器預執行操作失敗而作出否定響應時,事務管理器向涉及的所有資源管理器發送回滾命令,返回到數據更新前的狀態;當所有資源管理器預執行操作成功而作出肯定響應時,事務管理器命令涉及的所有資源管理器提交該事務,對數據進行更新。雖然兩階段提交協議能夠降低由于數據結構、主鍵沖突等原因導致的部分失敗而引起的數據不一致的幾率,但是依舊存在數據不一致的可能。因為在第二階段中,事務管理器向資源管理器發送提交命令時,可能出現網絡異常或資源管理器異常,從而導致部分資源管理器提交失敗。這樣,雖然預執行都成功,但是提交錯誤,仍然不能保證數據的一致性。 特別是在網絡質量比較低、所涉及的設備較多時,更容易造成數據不一致的問題。針對在提交過程中出現的數據不一致,目前很難自動發現這種錯誤的存在,也很難確定需要對哪些數據進行修正,并且在修復的情況下也只能通過手工修復而不能自動修復,從而使得修復過程繁瑣。
發明內容
本發明實施例提供了更新數據的方法和控制裝置,能夠解決提交過程出現錯誤而導致的數據不一致的問題,使得可以在提交過程中容易地發現錯誤的存在,并使不一致的數據得以修復,從而保證多個設備上數據的一致性。一方面,本發明實施例提供了一種更新數據的方法,包括當主資源管理器和從資源管理器的預執行操作成功時,在主資源管理器上記錄事務日志;向從資源管理器發送提交命令,并確定從資源管理器是否都提交成功;如果從資源管理器存在任何一個沒有提交成功,則保留所述事務日志,以根據事務日志和所述主資源管理器的數據,對與主資源管理器的數據不一致的從資源管理器的數據進行修正。
4
另一方面,本發明實施例提供了一種用于更新數據的控制裝置,包括記錄模塊, 用于當主資源管理器和從資源管理器的預執行操作成功時,在主資源管理器上記錄事務日志;確定模塊,用于向從資源管理器發送提交命令,并確定從資源管理器是否都提交成功; 第一保留模塊,用于如果從資源管理器存在任何一個沒有提交成功,則保留事務日志,以根據事務日志和主資源管理器的數據,對與主資源管理器的數據不一致的從資源管理器的數據進行修正。基于本發明實施例提供的上述技術方案,由于在主資源管理器上記錄有輔助修正的事務日志,基于事務日志可以容易地發現提交過程中數據不一致的存在,并可以基于事務日志和主資源管理器的數據來進行數據修正。這樣,與主資源管理器的數據不一致的從資源管理器的數據可以得以修正,使得即便在提交過程中出現錯誤,從資源管理器的數據也可以恢復到與主資源管理器的數據相同的狀態,從而保證數據的一致性。
為了更清楚地說明本發明實施例的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1是根據本發明實施例的用于進行分布式事務處理的系統的結構示意圖。圖2是根據本發明實施例的更新數據的方法的流程圖。圖3是根據本發明實施例的更新數據的另一方法的流程圖。圖4是根據本發明實施例的包括更新事務日志的事務處理方法的流程圖。圖5是根據本發明實施例的正常執行提交操作時的例子的時序圖。圖6是根據本發明實施例的處理事務日志的方法的流程圖。圖7是根據本發明實施例的用于更新數據的控制裝置的結構框圖。圖8是根據本發明實施例的用于更新數據的另一控制裝置的結構框圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明的一部分實施例,而不是全部實施例。基于本發明中的所述實施例,本領域技術人員在沒有做出創造性勞動的前提下所獲得的所有其他實施例,都應屬于本發明保護的范圍。首先,結合圖1描述根據本發明實施例的用于進行分布式事務處理的系統100。如圖1所示,系統100包括控制裝置110、多個資源管理器和事務發起者130。在多個資源管理器中存儲有相同的數據,它們基于控制裝置110的控制而執行同一事務的操作,即這些資源管理器是同一事務所涉及的資源管理器。當控制裝置110需要對資源管理器中的數據進行諸如修改、添加、刪除之類的更新時,這些資源管理器由于管理著相同的數據,需要同步進行相同的操作,以保持數據的一致性。可以將這些資源管理器劃分為主資源管理器120和從資源管理器1至N(N是大于等于1的整數)。例如,當用戶通過事務發起者130提供的用戶接口輸入操作數據時,可以將與事務發起者130所在的設備處于同一邏輯子網中的資源管理器設置為主資源管理器120,也可以將與事務發起者130所在的設備具有最近的物理距離的資源管理器設置為主資源管理器120,當然,還可以將其中任意一個資源管理器設置為主資源管理器120。主資源管理器120和從資源管理器1至N各自管理自己的數據庫,對其中的數據進行添加、刪除、插入、修改、替代等更新操作。另外,在主資源管理器120上,除了存儲有數據之外,還存儲有事務日志。可以通過事務日志來修正從資源管理器中的數據以實現數據的一致,這將在下文詳細描述。控制裝置110可以被進一步劃分為事務管理器112和事務日志處理器114,其具體操作將結合圖5和圖6進行描述。在描述數據更新的方法時,仍以控制裝置110作為主體進行描述,而不受控制裝置110的功能劃分的限制。事務發起者130負責業務處理,是事務的發起者。事務發起者130可以向用戶提供用戶接口 ;可以通過控制裝置110中的事務管理器112將數據寫到資源管理器中;可以把與事務有關的信息告訴事務管理器112,以命令主資源管理器120記錄事務日志;還可以根據控制裝置110中的事務日志管理器114從事務日志中提取的信息,來構造修正命令,再通過事務管理器112進行修正。下面,結合圖1的系統,描述圖2中示出的根據本發明實施例的更新數據的方法 200。方法200包括在S210中,當主資源管理器和從資源管理器的預執行操作成功時, 控制裝置110命令在主資源管理器上記錄事務日志;在S220中,控制裝置110向從資源管理器發送提交命令,并確定從資源管理器是否都提交成功;在S230中,如果從資源管理器存在任何一個沒有提交成功的,則保留事務日志,以根據事務日志和主資源管理器的數據, 對與主資源管理器的數據不一致的從資源管理器的數據進行修正。當主資源管理器120和從資源管理器1至N需要執行數據更新事務時,控制裝置 110命令主資源管理器120和從資源管理器1至N進行預執行操作。當這些資源管理器返回的響應告訴控制裝置110預執行操作成功時,控制裝置110命令主資源管理器120記錄事務日志,并命令從資源管理器1至N執行提交操作,從而根據從資源管理器1至N返回的響應來確定從資源管理器1至N是否都提交成功。如果有從資源管理器1至N提交不成功, 則控制裝置110命令主資源管理器120保留所記錄的事務日志,以使得可以根據事務日志, 并以主資源管理器的數據為準,對與主資源管理器的數據不一致的從資源管理器的數據進行修正,從而保持數據的一致性。根據本發明實施例提供的更新數據的方法,由于在主資源管理器上記錄有輔助修正的事務日志,基于事務日志可以容易地發現提交過程中數據不一致的存在,并可以基于事務日志,以主資源管理器的數據為準,來進行數據修正。這樣,與主資源管理器的數據不一致的從資源管理器的數據可以得以修正,使得即便在提交過程中出現錯誤,從資源管理器的數據也可以恢復到與主資源管理器的數據相同的狀態,從而保證數據的一致性。接下來,詳細描述根據本發明實施例的S210至S230。在S210中,當主資源管理器和從資源管理器的預執行操作成功時,在主資源管理器上記錄事務日志。事務日志可以表征當前所執行的事務的特征。例如,當前事務是對數據庫中哪些表格、哪些記錄的數據進行更新等。
根據本發明的一個實施例,可以在主資源管理器120上將當前事務的數據類型和數據標識信息記錄為事務日志。控制裝置110可以命令主資源管理器120將當前事務的數據類型和數據標識信息記錄為事務日志。數據類型和數據標識信息可以是由事務發起者130傳遞給控制裝置110 的信息,也可以是由控制裝置110根據事務而主動提取出的信息。數據類型可以指示是對數據庫中的哪些表格進行操作(例如更新操作),數據標識信息可以指示是對表格中的哪些記錄進行操作。例如,在電信系統中,當需要更新與訂戶簽約信息有關的數據時,該事務的數據類型是訂戶信息的表格,該事務的數據標識信息是用戶的電話號碼,通過電話號碼來標識記錄。再例如,在以XML(Extensible Markup Language,擴展標記語言)格式化表達的數
據中,如下所示
<Objectl>
<Keyl>l</Keyl> <Fieldl>a</Fieldl> <Field2>b</Field2> <Field3>c</Field3> </Objectl>由該格式化的數據可知,數據類型是Objectl,數據標識信息是1。該數據類型和數據標識信息可以直接由控制裝置110提取出來。通過記錄數據類型和數據標識信息,就可以確定當前的事務是什么,從而可以基于此來記錄事務日志。在S220中,向從資源管理器發送提交命令,并確定從資源管理器是否都提交成功。控制裝置110命令從資源管理器1至N執行提交操作,并接收來自從資源管理器 1至N的響應,通過響應來確定是否提交成功。雖然在該例子中S220在S210之后執行,但是S220也可以在S210之前執行,還可以與S210同時執行。只要在主資源管理器120和從資源管理器1至N的預執行操作都成功之后,執行S210和S220即可。所以,S210的記錄事務日志和S220的發送提交命令并確定是否提交成功的執行順序對本發明的保護范圍不構成限制。在S230中,如果從資源管理器存在任何一個沒有提交成功的,則保留事務日志, 以根據事務日志和主資源管理器的數據,對與主資源管理器的數據不一致的從資源管理器的數據進行修正。如果控制裝置110從任一從資源管理器接收到提交不成功的響應、或者沒有接收到任何響應、或者接收響應的時間超時、或者返回響應內容錯誤,則控制裝置110可以確定相應的從資源管理器提交不成功。該不成功可能是由于網絡異常造成的從資源管理器沒有接收到提交命令或提交命令錯誤,也可能是由于從資源管理器異常(例如斷電、死機等)造
7成的提交不成功。當從資源管理器1至N沒有都提交成功,所記錄的事務日志就被保留下來,以輔助之后的修正。根據事務日志,可以容易地確定在提交過程中出現了數據不一致,并且可以容易地定位是哪些數據出現了不一致,例如是哪些表格中的哪些記錄出現了不一致。根據本發明的實施例,之后的修正可以是人工參考事務日志進行的修正。此時,相比于目前人工修正的方法,可以根據事務日志的記載來自動且方便地確定數據不一致的存在,并可以基于事務日志來找到需要對哪些數據進行修正,從而簡化了數據修正過程。根據本發明的實施例,之后的修正也可以是控制裝置120根據事務日志進行的自動修正,從而無需人工的參與,可以提高數據修正的效率。在控制裝置120進行的數據修正中,可以從事務日志中提取數據類型和數據標識信息,從而可以確定需要完成什么事務,由此可以構造出與相應事務對應的修正命令。例如,修正命令可以是先刪除對應表格的對應記錄中的數據,再將新的數據插入到對應表格的對應記錄中。修正命令可以由事務發起者130來構造,也可以由控制裝置110來構造(例如,從資源管理器支持相同的接口,從而可以由控制裝置110構造通用的修正命令)。由于事務發起者130構造的修正命令也需要交由控制裝置110來執行,所以數據修正的執行都是由控制裝置110來控制進行的。從從資源管理器1至N的角度看,修正命令的來源可以認為都是控制裝置110。而用什么數據進行修正,則需要借助于主資源管理器120中的數據,以主資源管理器120管理的數據為準。例如,根據事務日志中的數據類型和數據標識信息,可以在主資源管理器120中找到相應的數據,以該數據為準,對從資源管理器管理的數據進行修正。根據本發明的實施例,為準的數據可以是主資源管理器提交后的數據,也可以是主資源管理器回滾后的數據。進行修正時,控制裝置110可以向所有的從資源管理器1至N發送修正命令以指示其修正或重新執行數據更新操作等。對于已提交成功的從資源管理器只需對提交的數據進行覆蓋即可,而對于未提交成功的從資源管理器則會對其中的數據進行修正。控制裝置110也可以僅僅向與主資源管理器120的數據不一致的從資源管理器發送修正命令。此時,控制裝置110可以認為提交響應異常的從資源管理器都是與主資源管理器120不一致的從資源管理器。另外,進行修正時,有可能從資源管理器管理著不同類型的數據庫,或者其數據庫具有不同的接口,使得需要根據不同的資源管理器,構造出與其接口相適應的修正命令。當然,如果從資源管理器的數據庫接口相同或可以識別通用的命令,則可以只構造一種修正命令或構成數據更新操作的通用命令,再分別發送給它們以執行修正。根據本發明實施例提供的更新數據的方法,由于在主資源管理器上記錄有輔助修正的事務日志,可以在提交出現錯誤時,基于事務日志中的數據類型和數據標識來確定對哪些表格的哪些記錄進行修正,并基于主資源管理器管理的數據來確定修正為哪些數據, 從而完成對從資源管理器管理的數據的修正。這樣,即便在提交過程中出現錯誤,借助于事務日志,從資源管理器管理的數據也可以自動恢復到與主資源管理器的數據相同的狀態, 從而可以保證數據的一致性,并且由于控制裝置可以根據事務日志自動進行數據修正,使得數據修正的效率得以提高。
圖3是根據本發明實施例的更新數據的另一方法300的流程圖。圖3的方法300 的S310和S320與圖2的方法200的S210和S220基本相同。當在S320中確定從資源管理器1至N存在任何一個沒有提交成功時,在S330中保留事務日志,以根據該事務日志和主資源管理器120的數據來進行糾正。在S335中,控制裝置110向主資源管理器120發送回滾命令。這樣,可以根據S330中保留的事務日志和主資源管理器120回滾后的數據,對從資源管理器的數據進行修正。由于從資源管理器1至N沒有都提交成功,這可能意味著部分提交成功、部分提交失敗,也可能意味著都沒有提交成功,這將造成數據不一致的風險。此時,由于主資源管理器120還沒有執行提交操作,因此可以讓主資源管理器120回滾到預執行操作前的狀態,從而以該狀態為準進行數據的修復,使得無論從資源管理器1至N是否提交成功,都可以保持在主資源管理器120回滾所恢復的狀態中,從而實現數據的一致。在S340中,控制裝置110根據事務日志和主資源管理器120回滾到的數據,對與主資源管理器120的數據不一致的從資源管理器的數據進行修正。修正過程可以參考上述 S230中的描述。修正之后,在S345中,控制裝置110確定修正是否成功。例如,控制裝置110可以接收來自進行修正操作的從資源管理器的響應,在響應中可以攜帶修正是否成功的信息, 也可以攜帶修正后的結果。根據返回的響應,確定修正是否成功。如果修正成功,則在S350中刪除事務日志。如果修正不成功,則在S360中保留事
務日志。在事務日志中可以存儲提交過程有錯誤的事務,如果修正成功,則說明主資源管理器120管理的數據和從資源管理器1至N管理的數據相一致,可以刪除該事務日志,從而表明該事務日志對應的事務已成功完成。而如果修正不成功,說明數據不一致還存在,則還需要保留事務日志,以在后續操作中,再次對該事務日志對應的事務進行處理。當在S320中確定從資源管理器1至N都提交成功時,在S360中,控制裝置110向主資源管理器120發送提交命令。由于從資源管理器1至N都提交成功,則主資源管理器120也需要進行提交操作。在S365中,在主資源管理器120提交成功時刪除事務日志。主資源管理器120提交成功的同時刪除事務日志,可以防止錯誤地記錄下正確執行的事務。例如,控制裝置110可以先向主資源管理器120發送刪除事務日志的預執行命令, 當刪除預執行成功時,主資源管理器120再進行提交操作,并在提交成功的同時刪除事務日志。提交數據的進程與刪除事務日志的進程并發執行。根據本發明的一個實施例,在S310之后,在S370中,控制裝置110周期性檢查是
否存在事務日志。 主資源管理器120可以將事務日志存儲在事務日志表中,該事務日志表中的事務日志可以隨著操作的進行而得以更新和改變,這將結合圖4來進行描述。
控制裝置110可以通過查找事務日志表來檢查是否在其中存在事務日志。控制裝置110可以以等長的時間間隔來進行周期性檢查,也可以以變長的時間間隔來進行周期性檢查。在S375中,如果存在事務日志,則根據該事務日志和主資源管理器的數據,對與主資源管理器的數據不一致的從資源管理器的數據進行修正。事務日志的存在說明還有數據不一致的問題,因此,控制裝置110從事務日志表中讀取一條事務日志,根據該事務日志指示的事務,結合主資源管理器120在該事務日志指示下的數據,對從資源管理器中的相應數據進行修正。雖然在圖3中S370和S375在S310之后執行,但是S370和S375也可以在任何時刻執行。根據本發明實施例提供的更新數據的方法,由于在主資源管理器上記錄輔助修正的事務日志,在數據不一致仍存在的情況下保留事務日志,而在數據不一致得以解決的情況下刪除事務日志,使得事務日志動態改變,從而可以基于現存的事務日志,并以主資源管理器在事務日志指示下的數據為準,來修正數據。這樣,即便事務日志沒有得到及時處理或處理錯誤,也可以在后續操作中繼續處理,從而可以保證數據的一致性。并且,借助于事務日志來進行自動修正,無需人工的干預,可以提高數據修復的效率。圖4示出了根據本發明實施例的包括更新事務日志的事務處理方法400的流程圖。在S405中,事務發起者130啟動諸如數據更新之類的事務,事務開始。在S410中,控制裝置110向主資源管理器120和次資源管理器1至N發送預執行命令,從而在主資源管理器120和次資源管理器1至N上預執行數據操作。在S415中,控制裝置110根據返回的響應,確定主資源管理器120和次資源管理器1至N的預執行操作是否都成功。如果預執行存在任何一個沒有成功,則在S420中,控制裝置110向預執行成功的資源管理器發送回滾命令,以返回預執行前的狀態。在S425中,控制裝置110向事務發起者130返回事務執行失敗。并在S470中,事務發起者130啟動的事務結束。如果在S415中確定預執行都成功,則在S430中,在主資源管理器120上創建一個
新事務。在S435中,在該新事務中執行事務日志的記錄操作并提交該新事務,以將事務日志寫到事務日志表中。在S440中,控制裝置110向從資源管理器1至N發送提交命令,以提交從資源管理器1至N上的事務。在S445中,控制裝置110接收從資源管理器1至N的響應,確定從資源管理器1 至N是否都提交成功。如果從資源管理器1至N存在任何一個沒有提交成功,則在S450中,事務管理器 112向主資源管理器120發送回滾命令,回滾主資源管理器120上的事務。如果從資源管理器1至N都提交成功,則在S455中,在主資源管理器120上預執行事務日志的刪除操作。在S460中,控制裝置110向主資源管理器120發送提交命令,提交主資源管理器 120上的事務,并在提交成功的同時刪除事務日志。
在S465中,控制裝置110向事務發起者130返回事務執行成功。并在S470中,事務發起者130啟動的事務結束。接下來,結合圖5描述根據本發明實施例的正常執行提交操作時的時序圖,并結合圖6描述根據本發明實施例的處理事務日志的方法600。此外,結合圖1,通過控制裝置 110包含的事務管理器112和事物日志處理器114來進行更加詳細的描述。事務管理器112可用于控制和管理資源管理器的操作,向資源管理器發送命令, 從資源管理器接收響應。事務日志處理器114可用于管理事務日志,從事務日志中提取信息,將提取的信息提交給事務發起者130以構造修正命令,或者將提取的信息提交給事務管理器112以構造修正命令。如圖5所示,在S510中,事務發起者130向事務管理器112提交數據以及數據類型和數據標識信息。其中,在數據具有諸如XML、SQL(Structured Query Language,結構化查詢語言)之類的良好的結構化時,可以不向事務管理器112提交數據類型和數據標識信息,而由事務管理器112根據數據來自動提取。在S520中,事務管理器112開始事務。在S530中,事務管理器112將數據類型和數據標識信息保存到事務上。在S540中,事務管理器112向主資源管理器120發送數據以進行預執行操作。在S550中,事務管理器112向從資源管理器1至N發送數據以進行預執行操作。 S550也可以在S540之前執行,還可以與S540同時執行。當從資源管理器1至N和主資源管理器120返回的響應(在圖中未示出)表明預執行都成功時,在S560中,事務管理器112在新的事務中命令主資源管理器120將與事務有關的上下文信息(例如,數據類型和數據標識信息)保存在事務日志中。在S570中,事務管理器112向從資源管理器1至N發送提交命令,以提交從資源管理器1至N中的事務。當從資源管理器1至N返回的響應(在圖中未示出)表明提交都成功時,在S580 中,事務管理器112在事務發起者130啟動的事務中命令主資源管理器120預刪除當前的事務日志。在S590中,事務管理器112向主資源管理器120發送提交命令,以提交主資源管理器120中的事務。同時,在主資源管理器120的事務中執行刪除事務日志的操作,使得該刪除操作與提交操作一起完成。在S95中,由于提交都成功,事務管理器112向事務發起者130返回事務執行成功的響應。如圖6所示,事務日志處理器114可以定期掃描事務日志表,對超過一定時間仍然存在的事務日志進行處理。在S610中,事務日志處理器114從事務日志表中順序地讀取一條事務日志。在S620中,事務日志處理器114提取事務日志中的數據類型和數據標識信息。在S630中,事務日志處理器114可以將數據類型和數據標識信息作為參數,通過該參數回調事務發起者130用于構造修正命令的接口,或者傳遞給事務管理器112。事務發起者130或事務管理器112以主資源管理器120的數據為準,構造修復數據的修正命令。由于事務發起者130可以知曉不同從資源管理器的類型或接口,所以事務發起者130可以針對不同的從資源管理器構造修正命令。在數據結構簡單、具有良好結構化的情況下,例如數據沒有復雜的關聯關系或者級聯刪除的情況下,事務日志處理器114可以將數據類型和數據標識信息傳遞給事務管理器112,由事務管理器112來構造從資源管理器通用的修正命令,而無需回調事務發起者130的接口。無論修正命令由誰構造,都由控制裝置110(具體地,可以為事務管理器11 來控制從資源管理器執行修正命令,因此,都可以認為是由控制裝置110根據事務日志和主資源管理器管理的數據來對從資源管理器管理的數據進行修正。在S640中,事務管理器112發送從事務發起者130接收或自己構造的修正命令, 在從資源管理器上執行數據修正操作。在S650中,事務管理器112確定從資源管理器的數據修正是否成功。如果從資源管理器的修正操作成功,則在S660中,事務日志處理器114刪除當前事務日志,否則在S670中,事務日志處理器114不刪除事務日志,以供下一周期再次重試。上面描述了根據本發明實施例的更新數據的方法,接下來,結合圖7和圖8描述根據本發明實施例的用于更新數據的控制裝置。圖7是根據本發明實施例的用于更新數據的控制裝置700的結構框圖。控制裝置700包括記錄模塊710、確定模塊720和第一保留模塊730。記錄模塊710 可用于當主資源管理器和從資源管理器的預執行操作成功時,在主資源管理器上記錄事務日志。確定模塊720可用于向從資源管理器發送提交命令,并確定從資源管理器是否都提交成功。第一保留模塊730可用于如果從資源管理器存在任何一個沒有提交成功,則保留事務日志,以根據事務日志和主資源管理器的數據,對與主資源管理器的數據不一致的從資源管理器的數據進行修正。記錄模塊710、確定模塊720和第一保留模塊730的上述和其他操作和/或功能可以參考上述更新數據的方法200中的S210、S220和S230,為了避免重復,在此不再贅述。本發明實施例提供的控制裝置通過在主資源管理器上記錄輔助修正的事務日志, 使得可以基于事務日志來容易地發現提交過程中數據不一致的存在,并可以基于事務日志,以主資源管理器的數據為準,對不一致的數據進行修正。這樣,與主資源管理器的數據不一致的從資源管理器的數據可以得以修正,使得即便在提交過程中出現錯誤,從資源管理器的數據也可以恢復到與主資源管理器的數據相同的狀態,從而保證數據的一致性。圖8是根據本發明實施例的用于更新數據的控制裝置800的結構框圖。控制裝置 800的記錄模塊810、確定模塊820和第一保留模塊830與圖7的控制裝置700的記錄模塊 710、確定模塊720和第一保留模塊730基本相同。根據本發明的一個實施例,記錄模塊810可用于在主資源管理器上將當前事務的數據類型和數據標識信息記錄為事務日志。根據本發明的一個實施例,控制裝置800還可以包括第一發送模塊840。第一發送模塊840可用于在第一保留模塊830保留事務日志之后,向主資源管理器發送回滾命令。 這樣,可以根據事務日志和主資源管理器回滾后的數據,對從資源管理器的數據進行修正, 從而將資源管理器管理的數據維持在事務執行前的狀態。根據本發明的一個實施例,控制裝置800還可以包括第一刪除模塊850和第二保留模塊860。第一刪除模塊850可用于如果修正成功,則刪除事務日志。第二保留模塊860
12可用于如果修正不成功,則保留事務日志。根據本發明的一個實施例,控制裝置800還可以包括第二發送模塊870和第二刪除模塊880。第二發送模塊870可用于如果從資源管理器都提交成功,則向主資源管理器發送提交命令。第二刪除模塊880可用于在主資源管理器提交成功時刪除事務日志。根據本發明的一個實施例,控制裝置800還可以包括檢查模塊890和修正模塊 895。檢查模塊880可用于周期性檢查是否存在事務日志。修正模塊890可用于如果存在事務日志,則根據該事務日志和主資源管理器的數據,對與主資源管理器的數據不一致的從資源管理器的數據進行修正。第一發送模塊840、第一刪除模塊850、第二保留模塊860、第二發送模塊870、第二刪除模塊880、檢查模塊890和修正模塊895的上述和其他操作和/或功能可以參考上述更新數據的方法300中的S310至S375以及方法400中的相應描述,為了避免重復,在此不再贅述。本發明實施例提供的控制裝置的記錄模塊810通過將數據類型和數據標識信息記錄在主資源管理器上作為事務日志,可以在提交出現錯誤時,使修正模塊895基于事務日志的數據類型和數據標識來確定對哪些表格的哪些記錄進行修正,并基于主資源管理器管理的數據來確定修正為哪些數據,從而完成對從資源管理器管理的數據的自動修正。控制裝置中的第一保留模塊830和第二保留模塊860在數據不一致仍存在的情況下保留事務日志,而第一刪除模塊850和第二刪除模塊880在數據不一致得以解決的情況下刪除事務日志,使得事務日志動態改變,從而修正模塊895可以基于現存的事務日志,并以主資源管理器在事務日志指示下的數據為準,來修正數據。這樣,在提交過程中出現錯誤時,借助于事務日志,從資源管理器管理的數據可以自動恢復到與主資源管理器的數據相同的狀態,從而保證數據的一致性。并且即便事務日志沒有得到及時處理或處理錯誤,也可以在后續操作中繼續處理,數據的一致性得到了極大地保證。另外,借助于事務日志進行的自動修正,無需人工的干預,還可以提高數據修復的效率。本領域技術人員可以意識到,結合本文中所公開的實施例中描述的各方法步驟和單元,能夠以電子硬件、計算機軟件或者二者的結合來實現,為了清楚地說明硬件和軟件的可互換性,在上述說明中已經按照功能一般性地描述了各實施例的步驟及組成。這些功能究竟以硬件還是軟件方式來執行,取決于技術方案的特定應用和設計約束條件。本領域技術人員可以對每個特定的應用使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的范圍。結合本文中所公開的實施例描述的方法步驟可以用硬件、處理器執行的軟件程序、或者二者的結合來實施。軟件程序可以置于隨機存取存儲器(RAM)、內存、只讀存儲器 (ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM或技術領域內所公知的任意其它形式的存儲介質中。盡管已示出和描述了本發明的一些實施例,但本領域技術人員應該理解,在不脫離本發明的原理和精神的情況下,可對這些實施例進行各種修改,這樣的修改應落入本發明的范圍內。
權利要求
1.一種更新數據的方法,其特征在于,包括當主資源管理器和從資源管理器的預執行操作成功時,在所述主資源管理器上記錄事務日志;向所述從資源管理器發送提交命令,并確定所述從資源管理器是否都提交成功;如果所述從資源管理器存在任何一個沒有提交成功,則保留所述事務日志,以根據所述事務日志和所述主資源管理器的數據,對與所述主資源管理器的數據不一致的從資源管理器的數據進行修正。
2.根據權利要求1所述的方法,其特征在于,所述在所述主資源管理器上記錄事務日志包括在所述主資源管理器上將當前事務的數據類型和數據標識信息記錄為事務日志。
3.根據權利要求1和2所述的方法,其特征在于,所述保留所述事務日志之后,還包括向所述主資源管理器發送回滾命令。
4.根據權利要求1至3所述的方法,其特征在于,所述對與所述主資源管理器的數據不一致的從資源管理器的數據進行修正之后,還包括如果修正成功,則刪除所述事務日志;如果修正不成功,則保留所述事務日志。
5.根據權利要求1至4所述的方法,其特征在于,還包括如果所述從資源管理器都提交成功,則向所述主資源管理器發送提交命令;在所述主資源管理器提交成功時刪除所述事務日志。
6.根據權利要求1至5所述的方法,其特征在于,還包括周期性檢查是否存在事務日志;如果存在事務日志,則根據該事務日志和所述主資源管理器的數據,對與所述主資源管理器的數據不一致的從資源管理器的數據進行修正。
7.一種用于更新數據的控制裝置,其特征在于,包括記錄模塊,用于當主資源管理器和從資源管理器的預執行操作成功時,在所述主資源管理器上記錄事務日志;確定模塊,用于向所述從資源管理器發送提交命令,并確定所述從資源管理器是否都提交成功;第一保留模塊,用于如果所述從資源管理器存在任何一個沒有提交成功,則保留所述事務日志,以根據所述事務日志和所述主資源管理器的數據,對與所述主資源管理器的數據不一致的從資源管理器的數據進行修正。
8.根據權利要求7所述的控制裝置,其特征在于,所述記錄模塊用于在所述主資源管理器上將當前事務的數據類型和數據標識信息記錄為事務日志。
9.根據權利要求7和8所述的控制裝置,其特征在于,還包括第一發送模塊,用于在所述第一保留模塊保留所述事務日志之后,向所述主資源管理器發送回滾命令。
10.根據權利要求7至9所述的控制裝置,其特征在于,還包括第一刪除模塊,用于如果修正成功,則刪除所述事務日志;第二保留模塊,用于如果修正不成功,則保留所述事務日志。
11.根據權利要求7至10所述的控制裝置,其特征在于,還包括第二發送模塊,用于如果所述從資源管理器都提交成功,則向所述主資源管理器發送提交命令;第二刪除模塊,用于在所述主資源管理器提交成功時刪除所述事務日志。
12.根據權利要求7至11所述的控制裝置,其特征在于,還包括 檢查模塊,用于周期性檢查是否存在事務日志;修正模塊,用于如果存在事務日志,則根據該事務日志和所述主資源管理器的數據,對與所述主資源管理器的數據不一致的從資源管理器的數據進行修正。
全文摘要
本發明實施例提供了更新數據的方法和控制裝置。該方法包括當主資源管理器和從資源管理器的預執行操作成功時,在主資源管理器上記錄事務日志;向從資源管理器發送提交命令,并確定從資源管理器是否都提交成功;如果從資源管理器存在任何一個沒有提交成功,則保留所述事務日志,以根據事務日志和所述主資源管理器的數據,對與主資源管理器的數據不一致的從資源管理器的數據進行修正。基于本發明實施例提供的技術方案,由于在主資源管理器上記錄有輔助修正的事務日志,可以基于事務日志和主資源管理器的數據來進行數據修正。這樣,即便在提交過程中出現錯誤,從資源管理器的數據也可以恢復到與主資源管理器的數據相同的狀態,從而保證數據的一致性。
文檔編號G06F17/30GK102203779SQ201180000694
公開日2011年9月28日 申請日期2011年5月3日 優先權日2011年5月3日
發明者陶建波 申請人:華為技術有限公司