一種異構數據複合對象的事務一致性達成方法與系統

一種異構數據複合對象的事務一致性達成方法與系統

《一種異構數據複合對象的事務一致性達成方法與系統》是成都索貝數碼科技股份有限公司於2016年1月21日申請的專利,該專利的公布號為CN105718572A,授權公布日為2016年6月29日,發明人是王煒、溫序銘、王熙、孫翔、鄒遠貴。

《一種異構數據複合對象的事務一致性達成方法與系統》其方法包括:開始步驟S1、準備步驟S2和執行步驟S3;開始步驟S1包括:發起事務請求:提供多種不同類型的數據源,請求對數據源進行事務處理;設定待處理事務的基本信息;準備步驟S2包括:事務預處理:分別對事務的每一個數據源進行數據更改,得到初步處理結果;保存事務的進程信息:獲取事務處理過程中的每一個進程的信息,並進行保存;執行步驟S3包括:依次檢查事務所有的進程狀態;判斷是否滿足所有事務進程均成功:根據修改結果進行數據最終修改提交,或者是進行數據回滾;該發明提供一種異構數據複合對象的事務一致性達成方法與系統,維護了異構數據複合對象的事務一致性。

2020年7月14日,《一種異構數據複合對象的事務一致性達成方法與系統》獲得第二十一屆中國專利獎優秀獎。

(概述圖為《一種異構數據複合對象的事務一致性達成方法與系統》摘要附圖)

基本介紹

  • 中文名:一種異構數據複合對象的事務一致性達成方法與系統
  • 申請人:成都索貝數碼科技股份有限公司
  • 申請日:2016年1月21日
  • 申請號:201610039269X
  • 公布號:CN105718572A
  • 公布日:2016年6月29日
  • 發明人:王煒、溫序銘、王熙、孫翔、鄒遠貴
  • 地址:四川省成都市高新區新加坡工業園新元大道南二路2號
  • Int. Cl.:G06F17/30(2006.01)I
  • 代理機構:成都金英專利代理事務所
  • 代理人:袁英
  • 類別:發明專利
專利背景,發明內容,專利目的,技術方案,有益效果,附圖說明,技術領域,權利要求,實施方式,操作內容,實施案例,榮譽表彰,

專利背景

2016年1月之前的技術的複合對象的事務一致性的方法,不能實現異構數據複合對象的事務一致性。事務是訪問或更新各種數據項的程式執行單元,事務提交時數據必須是一致的;事務具有ACID(Atomicity原子性、Consistency一致性、Isolation獨立性、Durability持久性)的特點;事務由若干個任務組成異構數據複合對象:指由不同類型的數據源管理的數據構成的對象,可能同時包括事務型數據源和非事務型數據源。
事務型數據源是指像關係型資料庫一樣讀寫操作都是事務的數據源,具有ACID特點,在對事務型數據源進行處理的過程中,事務中的每一項都成功才算事務成功,此時需要提交,事務中任意一項不成功時事務失敗,需要執行回滾操作。非事務型數據源指像非關係型資料庫、檔案系統、索引這種沒有事務的特性,對數據操作即執行,自動提交,沒有回滾功能的數據源。而異構數據複合對象同時包括事務型數據源和非事務型數據源,由多個不同類型的存儲系統協同實現,在事務的處理中易造成數據的不一致。如:非事務型數據源已經處理完成,事務型數據源中某項處理失敗了,非事務型數據源並不知道事務型數據源中失敗,所以不會對之前修改的數據恢復,這樣就造成了數據的不一致。

發明內容

專利目的

《一種異構數據複合對象的事務一致性達成方法與系統》的目的在於克服2016年1月之前技術的不足,提供一種異構數據複合對象的事務一致性達成方法與系統,將事務的所有數據來源進行統一管理,只有當所有的進程都成功才提交改變數據來源中存放的數據,若任意一個進程不成功,都要讓其他的數據源回滾,恢復這個事務中改變了的數據,維護了數據的一致性。

技術方案

《一種異構數據複合對象的事務一致性達成方法與系統》的目的是通過以下技術方案來實現的:一種異構數據複合對象的事務一致性達成方法,其特徵在於:包括開始步驟S1、準備步驟S2和執行步驟S3;
所述的開始步驟S1包括以下子步驟:
S11.發起事務請求:提供多種不同類型的數據源,請求對數據源進行事務處理;
S12.設定待處理事務的基本信息,基本信息包括事務編號、事務類型和最長回響時間;事務類型中包含的待處理的數據源類型和數目;所述準備步驟S2包括以下子步驟:
S21.事務預處理:分別對事務的每一個數據源進行數據更改,得到初步處理結果;
S22.保存事務的進程信息:獲取事務處理過程中的每一個進程的信息,並進行保存,事務的每一個進程對應著對一個數據源的數據更改;
所述的執行步驟S3包括以下子步驟:
S31.依次檢查事務所有的進程狀態;
S32.判斷是否滿足所有事務進程均成功:
(1)滿足所有事務進程均成功,傳送最終數據提交命令,跳轉至步驟S33;
(2)不滿足所有事務進程均成功,傳送最終數據回滾命令,並跳轉至步驟S34;
S33.在數據源中進行數據最終修改和提交,本次操作結束;
S34.在數據源中進行數據回滾。
所述的步驟S21包括以下子步驟:
S211.將數據源分為三類:事務型數據源、A類非事務型數據源和B類非事務型數據源;A類非事務型數據源為只具有插入或者刪除操作的非事務性數據源;B類非事務性數據源為具有更新操作的非事務型數據源。
S212.對每一個事務型數據源直接進行數據更改;
S213.在每一個A類非事務型數據源中,對需要進行刪除的數據M添加刪除標記m;將需要插入的數據H寫入數據源中,並為H添加寫入標記h;
S214.將每一個B類非事務型數據源的操作語句記錄在各自的備用資料庫中。
所述的步驟S32包括以下子步驟:
S321.對事務中每一個數據源的進程信息進行檢查,判斷是否出現進程失敗的狀態;
(1)如果事務的進程出現失敗的狀態,不滿足所有事務進程均成功,傳送最終數據回滾命令,並跳轉至步驟S34;
(2)如果事務的進程中未出現失敗的狀態,跳轉至步驟S322;
S322.在事務操作時間達到最長回響時間後,統計事務的進程數,並比較進程數與事務類型中記錄的數據源數目:
(1)事務的進程數小於事務類型中記錄的數據源數目,表示存在還未執行的進程,不滿足所有事務進程均成功,發出最終數據回滾命令;
(2)事務的進程數等於事務類型中記錄的數據源數目,滿足所有事務進程均成功,發出最終數據提交命令。
所述的步驟S33包括以下子步驟:
S331.對事務型數據源的數據直接進行提交;
S332.將A類非事務型數據源中存在刪除標記m的數據M進行刪除,清除寫入標記h,並進行提交;
S333.按照備用資料庫中記錄的操作語句對B類非事務型數據源進行操作,並提交。
所述的步驟S34包括以下子步驟:
S341.對事務型數據源的數據直接進行回滾;
S342.將A類非事務型數據源中的刪除標記m清除,並刪除具有寫入標記h的數據H,實現回滾;
S343.將B類非事務型數據源在備用資料庫中記錄的操作語句進行刪除,實現回滾。
一種異構數據複合對象的事務一致性達成系統,包括一致性參與模組和一致性控制模組;所述的一致性參與模組包括數據源存儲單元、數據源驅動單元、中間過程處理單元和數據源代理單元;一致性控制模組包括一致性管理服務單元、一致性過程日誌處理單元、關係型資料庫和過程檢查器;所述的數據源存儲單元用於存儲多種不同類型的待處理數據源;所述的中間過程處理單元用於對數據存儲單元中多種不同的數據源進行數據更改的預處理;所述的數據源代理單元用於與一致性管理服務單元互動,向一致性管理服務單元傳送數據源的預處理進程信息,並從一致性管理服務單元獲取最終提交/回滾的請求;所述的一致性服務管理單元用於與數據源代理單元互動,從數據源代理單元獲取數據源的預處理進程信息,並向數據源代理單元傳送最終提交/回滾的請求;所述的一致性過程日誌處理單元用於獲取數據源預處理過程中每一個進程的信息,並將進程信息存儲到關係型資料庫中;所述的關係型資料庫用於存儲日誌中記錄的信息;所述的過程檢查器用於檢查日誌中記錄的事務的每一個進程進行檢查,並將檢查結果傳輸給一致性服務管理單元。所述的一致性參與模組還包括數據源驅動單元,數據源存儲單元通過數據源驅動單元與中間過程處理單元互動,並通過數據源驅動單元接收來來自於數據源代理單元的最終提交或最終回滾命令。

有益效果

《一種異構數據複合對象的事務一致性達成方法與系統》的有益效果是:
(1)將事務的所有數據來源進行統一管理,只有當所有的進程都成功才提交改變數據來源中存放的數據,若任意一個進程不成功,都要讓其他的數據源回滾,恢復這個事務中改變了的數據,維護了數據的一致性。
(2)在事務預處理過程中,將非事務型數據源的數據轉換成了事務型數據源的數據,嚴格保證了異構數據複合對象中也能夠實現事務的一致性。

附圖說明

圖1為《一種異構數據複合對象的事務一致性達成方法與系統》的方法流程圖。
圖2為該發明的系統原理框圖。
圖3為實施例一的原理示意圖。

技術領域

《一種異構數據複合對象的事務一致性達成方法與系統》涉及一種異構數據複合對象的事務一致性達成方法與系統。

權利要求

1.一種異構數據複合對象的事務一致性達成方法,其特徵在於:包括開始步驟S1、準備步驟S2和執行步驟S3;
所述的開始步驟S1包括以下子步驟:
S11.發起事務請求:提供多種不同類型的數據源,請求對數據源進行事務處理;
S12.設定待處理事務的基本信息,基本信息包括事務編號、事務類型和最長回響時間;事務類型中包含的待處理的數據源類型和數目;
所述準備步驟S2包括以下子步驟:
S21.事務預處理:分別對事務的每一個數據源進行數據更改,得到初步處理結果;
S22.保存事務的進程信息:獲取事務處理過程中的每一個進程的信息,並進行保存,事務的每一個進程對應著對一個數據源的數據更改;
所述的執行步驟S3包括以下子步驟:
S31.依次檢查事務所有的進程狀態;
S32.判斷是否滿足所有事務進程均成功:
(1)滿足所有事務進程均成功,傳送最終數據提交命令,跳轉至步驟S33;
(2)不滿足所有事務進程均成功,傳送最終數據回滾命令,並跳轉至步驟S34;
S33.在數據源中進行數據最終修改和提交,本次操作結束;
S34.在數據源中進行數據回滾。
2.根據權利要求1所述的一種異構數據複合對象的事務一致性達成方法,其特徵在於:所述的步驟S21包括以下子步驟:
S211.將數據源分為三類:事務型數據源、A類非事務型數據源和B類非事務型數據源;A類非事務型數據源為只具有插入或者刪除操作的非事務性數據源;B類非事務性數據源為具有更新操作的非事務型數據源;
S212.對每一個事務型數據源直接進行數據更改;
S213.在每一個A類非事務型數據源中,對需要進行刪除的數據M添加刪除標記m;將需要插入的數據H寫入數據源中,並為H添加寫入標記h;
S214.將每一個B類非事務型數據源的操作語句記錄在各自的備用資料庫中。
3.根據權利要求1所述的一種異構數據複合對象的事務一致性達成方法,其特徵在於:所述的步驟S32包括以下子步驟:
S321.對事務中每一個數據源的進程信息進行檢查,判斷是否出現進程失敗的狀態;
(1)如果事務的進程出現失敗的狀態,不滿足所有事務進程均成功,傳送最終數據回滾命令,並跳轉至步驟S34;
(2)如果事務的進程中未出現失敗的狀態,跳轉至步驟S322;
S322.在事務操作時間達到最長回響時間後,統計事務的進程數,並比較進程數與事務類型中記錄的數據源數目:
(1)事務的進程數小於事務類型中記錄的數據源數目,表示存在還未執行的進程,不滿足所有事務進程均成功,發出最終數據回滾命令;
(2)事務的進程數等於事務類型中記錄的數據源數目,滿足所有事務進程均成功,發出最終數據提交命令。
4.根據權利要求1所述的一種異構數據複合對象的事務一致性達成方法,其特徵在於:所述的步驟S33包括以下子步驟:
S331.對事務型數據源的數據直接進行提交;
S332.將A類非事務型數據源中存在刪除標記m的數據M進行刪除,清除寫入標記h,並進行提交;
S333.按照備用資料庫中記錄的操作語句對B類非事務型數據源進行操作,並提交。
5.根據權利要求1所述的一種異構數據複合對象的事務一致性達成方法,其特徵在於:所述的步驟S34包括以下子步驟:
S341.對事務型數據源的數據直接進行回滾;
S342.將A類非事務型數據源中的刪除標記m清除,並刪除具有寫入標記h的數據H,實現回滾;
S343.將B類非事務型數據源在備用資料庫中記錄的操作語句進行刪除,實現回滾。
6.一種異構數據複合對象的事務一致性達成系統,其特徵在於:包括一致性參與模組和一致性控制模組;所述的一致性參與模組包括數據源存儲單元、數據源驅動單元、中間過程處理單元和數據源代理單元;一致性控制模組包括一致性管理服務單元、一致性過程日誌處理單元、關係型資料庫和過程檢查器;所述的數據源存儲單元用於存儲多種不同類型的待處理數據源;所述的中間過程處理單元用於對數據存儲單元中多種不同的數據源進行數據更改的預處理;所述的數據源代理單元用於與一致性管理服務單元互動,向一致性管理服務單元傳送數據源的預處理進程信息,並從一致性管理服務單元獲取最終提交/回滾的請求。
所述的一致性服務管理單元用於與數據源代理單元互動,從數據源代理單元獲取數據源的預處理進程信息,並向數據源代理單元傳送最終提交/回滾的請求;所述的一致性過程日誌處理單元用於獲取數據源預處理過程中每一個進程的信息,並將進程信息存儲到關係型資料庫中;所述的關係型資料庫用於存儲日誌中記錄的信息;所述的過程檢查器用於檢查日誌中記錄的事務的每一個進程進行檢查,並將檢查結果傳輸給一致性服務管理單元。
7.根據權利要求6所述的一種異構數據複合對象的事務一致性達成系統,其特徵在於:所述的一致性參與模組還包括數據源驅動單元,數據源存儲單元通過數據源驅動單元與中間過程處理單元互動,並通過數據源驅動單元接收來來自於數據源代理單元的最終提交或最終回滾命令。

實施方式

操作內容

如圖1所示,一種異構數據複合對象的事務一致性達成方法,其特徵在於:包括開始步驟S1、準備步驟S2和執行步驟S3;所述的開始步驟S1包括以下子步驟:
S11.發起事務請求:提供多種不同類型的數據源,請求對數據源進行事務處理;
S12.設定待處理事務的基本信息,基本信息包括事務編號、事務類型和最長回響時間;事務類型中包含的待處理的數據源類型和數目;所述準備步驟S2包括以下子步驟:
S21.事務預處理:分別對事務的每一個數據源進行數據更改,得到初步處理結果;
S22.保存事務的進程信息:獲取事務處理過程中的每一個進程的信息,並進行保存,事務的每一個進程對應著對一個數據源的數據更改;所述的執行步驟S3包括以下子步驟:
S31.依次檢查事務所有的進程狀態;
S32.判斷是否滿足所有事務進程均成功:
(1)滿足所有事務進程均成功,傳送最終數據提交命令,跳轉至步驟S33;
(2)不滿足所有事務進程均成功,傳送最終數據回滾命令,並跳轉至步驟S34;
S33.在數據源中進行數據最終修改和提交,本次操作結束;
S34.在數據源中進行數據回滾。所述的步驟S21包括以下子步驟:
S211.將數據源分為三類:事務型數據源、A類非事務型數據源和B類非事務型數據源;A類非事務型數據源為只具有插入或者刪除操作的非事務性數據源;B類非事務性數據源為具有更新操作的非事務型數據源。
S212.對每一個事務型數據源直接進行數據更改;(事務型數據源中語句的執行狀態能夠直接顯示)
S213.在每一個A類非事務型數據源中,對需要進行刪除的數據M添加刪除標記m;將需要插入的數據H寫入數據源中,並為H添加寫入標記h;
S214.將每一個B類非事務型數據源的操作語句記錄在各自的備用資料庫中。所述的步驟S32包括以下子步驟:
S321.對事務中每一個數據源的進程信息進行檢查,判斷是否出現進程失敗的狀態;
(1)如果事務的進程出現失敗的狀態,不滿足所有事務進程均成功,傳送最終數據回滾命令,並跳轉至步驟S34;
(2)如果事務的進程中未出現失敗的狀態,跳轉至步驟S322;
S322.在事務操作時間達到最長回響時間後,統計事務的進程數,並比較進程數與事務類型中記錄的數據源數目:
(1)事務的進程數小於事務類型中記錄的數據源數目,表示存在還未執行的進程,不滿足所有事務進程均成功,發出最終數據回滾命令;
(2)事務的進程數等於事務類型中記錄的數據源數目,滿足所有事務進程均成功,發出最終數據提交命令。
所述的步驟S33包括以下子步驟:
S331.對事務型數據源的數據直接進行提交;
S332.將A類非事務型數據源中存在刪除標記m的數據M進行刪除,清除寫入標記h,並進行提交;
S333.按照備用資料庫中記錄的操作語句對B類非事務型數據源進行操作,並提交。
所述的步驟S34包括以下子步驟:
S341.對事務型數據源的數據直接進行回滾;
S342.將A類非事務型數據源中的刪除標記m清除,並刪除具有寫入標記h的數據H,實現回滾;
S343.將B類非事務型數據源在備用資料庫中記錄的操作語句進行刪除,實現回滾。
如圖2所示,一種異構數據複合對象的事務一致性達成系統,包括一致性參與模組和一致性控制模組;所述的一致性參與模組包括數據源存儲單元、數據源驅動單元、中間過程處理單元和數據源代理單元;一致性控制模組包括一致性管理服務單元、一致性過程日誌處理單元、關係型資料庫和過程檢查器;
所述的數據源存儲單元用於存儲多種不同類型的待處理數據源;所述的中間過程處理單元用於對數據存儲單元中多種不同的數據源進行數據更改的預處理;所述的數據源代理單元用於與一致性管理服務單元互動,向一致性管理服務單元傳送數據源的預處理進程信息,並從一致性管理服務單元獲取最終提交/回滾的請求。
所述的一致性服務管理單元用於與數據源代理單元互動,從數據源代理單元獲取數據源的預處理進程信息,並向數據源代理單元傳送最終提交/回滾的請求;所述的一致性過程日誌處理單元用於獲取數據源預處理過程中每一個進程的信息,並將進程信息存儲到關係型資料庫中;所述的關係型資料庫用於存儲日誌中記錄的信息;所述的過程檢查器用於檢查日誌中記錄的事務的每一個進程進行檢查,並將檢查結果傳輸給一致性服務管理單元。
所述的一致性參與模組還包括數據源驅動單元,數據源存儲單元通過數據源驅動單元與中間過程處理單元互動,並通過數據源驅動單元接收來來自於數據源代理單元的最終提交或最終回滾命令。
再具體實施過程中,用戶首先發起事務請求,提供多種不同類型的數據源,將不同類型的數據源存儲在數據源存儲單元中,請求對數據源進行事務處理,並設定待處理事務的基本信息(基本信息包括事務編號、事務類型和最長回響時間)中間過程處理單元將數據源分為事務型數據源、A類非事務型數據源(File類只有插入和刪除操作的數據源),B類非事務型數據源(NoSQL、Index類的有更新操作的數據源),並對每一個數據源分別進行處理;中間過程處理單元在每一個A類非事務型數據源中,對需要進行刪除的數據M添加刪除標記m;將需要插入的數據H寫入數據源中,並為H添加寫入標記h;從而在預處理過程中將A類非事務型數據源轉換成了事務型數據源;
中間過程處理單元將每一個B類非事務型數據源的操作語句記錄在各自的備用資料庫中,並不對B類非事務型數據源直接進行數據更改;中間過程處理單元將事務型數據源直接進行數據更改;在中間過程處理單元對每一個數據源進行處理的過程中,數據源代理單元數據源代理通過數據源驅動單元調取事務的進程的狀態,並將各個進程的信息反饋給一致性管理服務單元;一致性管理服務單元將各個進程的信息反饋給一致性過程日誌處理單元並存儲在關係型資料庫中,存儲的內容包括:事務編號、數據源類型、對數據的操作、事務類型、操作的時間以及狀態等信息;過程檢測器從存放在事務進程信息的關係型資料庫中,抽取事務的每一個進程信息,並判斷是否滿足所有事務進程均成功的條件(條件的判斷包括進程狀態判斷和到達時間後的進程數判斷):
滿足條件時,一致性管理服務單元將最終修改提交的命令反饋給數據源代理單元,數據代理單元將最終修改提交的命令反饋給數據源存儲單元,在數據源存儲單元中對數據進行最終修改和提交:對事務型數據源的數據直接進行提交;將A類非事務型數據源(File類只有插入和刪除操作的數據源)中存在刪除標記m的數據M進行刪除,清除寫入標記h,並進行提交;按照備用資料庫中記錄的操作語句對B類非事務型數據源(NoSQL、Index類的有更新操作的數據源)進行操作,並提交。
不滿足條件時,一致性管理服務單元將回滾命令反饋給數據源代理單元,數據代理單元將回滾命令反饋給數據源存儲單元,在數據源存儲單元中實現數據的回滾:對事務型數據源的數據直接進行回滾;將A類非事務型數據源中的刪除標記m清除,並刪除具有寫入標記h的數據H,實現回滾;將B類非事務型數據源在備用資料庫中記錄的操作語句進行刪除,實現回滾。

實施案例

實施例一
如圖3所示,在該申請的具體實現過程包括以下步驟:
S0001.用戶發出事務請求;
S0002.一致性控制端設定事務編號TxID;
S0003.一致性參與端的數據源獲取事務編號;
S0004.一致性參與端將參與信息反饋給一致性控制端;
S0005.一致性控制端根據一致性參與端的反饋信息設定事務的基本信息;
S0006一致性參與端針對多種不同的數據源進行數據更改的預處理(按照步驟S21進行預處理),得到處理結果(成功或失敗),但不提交;
S0007.一致性控制端對各數據源的處理情況不斷地刷新紀錄和檢查進程(按照步驟S32進行檢查)
若用三個出口來形容檢查過程,表述為如下情況:
(1)同一事務的進程出現失敗的狀態時,表示該事務執行失敗,一致性管理服務發出最終回滾請求;
(2)同一事務的進程中未出現失敗的狀態,但同一事務的進程數小於事務類型中記錄的數目,而操作的時間超過了設定的最長時間,這種情況下表示某些進程還未執行但已逾時,視為該事務執行失敗,一致性管理服務發出最終回滾請求;
(3)同一事務的進程中未出現失敗的狀態,且同一事務的進程數等於事務類型中記錄的數目,表示所有的進程都執行且都成功,這時,一致性管理服務發出最終提交請求;
S0008.一致性控制端根據出口類型發布最終提交/回滾命令;
S0009.一致性參與端根據一致性控制端的命令執行最終提交/回滾命令(按照步驟S33進行數據提交,按照步驟S34進行數據回滾);
S0010.將執行結果反饋給用戶。

榮譽表彰

2020年7月14日,《一種異構數據複合對象的事務一致性達成方法與系統》獲得第二十一屆中國專利獎優秀獎。

相關詞條

熱門詞條

聯絡我們