《一種基於數據包的移動數據同步衝突預處理與消解方法》是國家電網公司、南京南瑞集團公司和南京南瑞信息通信科技有限公司於2014年9月1日申請的發明專利,該專利的申請號為2014104414951,公布號為CN104253858A,授權公布日為2014年12月31日,發明人是王俊、蔣厚明、胡牧、葉文宸、曹海濤、羅玉盤、馮程程、李學智。
《一種基於數據包的移動數據同步衝突預處理與消解方法》是通過數據的移動和同步特性對移動套用數據進行分類,分別制定不同的數據同步衝突預處理策略,能夠對衝突進行提前預判和有效規避;衝突檢測和衝突消解通過創建中間表作為媒介,這種面向中間表的衝突檢測機制,不僅具有效率高的優點,而且避免衝突數據直接同步到業務數據表中;衝突消解算法,以存儲過程和函式實現,並採用特殊佇列和多執行緒並發控制模型,在中間表中實現衝突消解,中間表與業務數據表之間僅進行數據移動,起到分擔業務系統負載的作用,解決了中國國內外同類方案未能解決的業務高峰期大數據量、高並發引起的業務系統性能瓶頸問題,保證了業務系統的快速回響能力和穩定性。
2019年7月15日,《一種基於數據包的移動數據同步衝突預處理與消解方法》獲第十一屆江蘇省專利項目獎優秀獎。
(概述圖為《一種基於數據包的移動數據同步衝突預處理與消解方法》摘要附圖)
基本介紹
- 中文名:一種基於數據包的移動數據同步衝突預處理與消解方法
- 申請人:國家電網公司、南京南瑞集團公司、南京南瑞信息通信科技有限公司
- 申請號:2014104414951
- 公布號:CN104253858A
- 發明人:王俊、蔣厚明、胡牧、葉文宸、曹海濤、羅玉盤、馮程程、李學智
- 授權日:2014年12月31日
- 申請日:2014年9月1日
- 類別:發明專利
- 地址:北京市西城區西長安街86號
- Int. Cl.:H04L29/08(2006.01)I、H04L29/06(2006.01)I
- 代理機構:南京縱橫智慧財產權代理有限公司
- 代理人:董建林
專利背景,發明內容,技術方案,有益效果,附圖說明,權利要求,實施方式,榮譽表彰,
專利背景
隨著無線通信技術發展和手持便攜智慧型終端的普及套用,移動信息化逐漸成為了每個行業的核心,新的移動技術、套用和服務帶來了令人興奮的業務增長機遇。企業移動信息化已形成四個重大的發展趨勢:傳統有線套用向移動套用遷移、移動套用大規模普及、技術發展多樣化、移動套用獨立發展。
移動作業有線上模式、純離線模式和“線上+離線”混合模式,由於移動計算環境具有低頻寬、長延遲和間歇性連線等特性,在移動業務套用中,這些作業模式在數據快取和更新、雙向數據交換、訪問佇列和間歇性連線等操作時均容易導致數據的不一致性衝突,為確保移動終端與後端業務系統之間的數據一致性,都涉及到移動終端與後端業務系統間的數據同步和衝突處理,因此,移動數據同步的衝突預處理與檢測消解是移動套用中關鍵而又複雜的技術難點。
截至2014年9月,移動數據同步主要分為檔案拷貝和基於網路通信的數據同步兩種方式:檔案拷貝同步方式以檔案作為同步處理單元,以拷貝方式實現數據同步,可通過Windows Active Sync等專用的同步軟體,但存在操作不方便、同步軟體封閉、沒有考慮事務概念等缺點,因此難以實現細粒度的衝突檢測和數據回滾;基於網路通信的數據同步主要存在以Web Service和以移動終端嵌入式資料庫實現數據同步兩類技術路線,以Web Service實現數據同步技術通過網路調用遠程伺服器的Web Service接口實現數據下載與上傳,此技術路線實現成本低,但由於是實時線上數據同步模式,對網路的穩定性、可靠性要求較高,且在大數據量傳輸時網路延時比較明顯,易加重後端業務系統負荷,缺乏相應的衝突預處理和消解機制。以移動終端嵌入式資料庫實現數據同步技術採用TCP連線、二進制數據流方式完成數據的高效同步,提出了一些事務級數據同步模型和算法、衝突規避機制,以及多版本衝突消解技術等,這類產品以Sybase、IBMDB2為代表。總體而言,基於嵌入式資料庫同步方式的數據格式具有封閉性,需要根據業務特徵定製衝突處理及消解函式,降低了通用性和適應性,最大瓶頸在於對後台資料庫的實時訪問而導致並發性能低對資料庫產生很大的壓力,尖峰時段頻繁出現後台或中介資料庫無回響的情況;並且對衝突檢測和消解之前如何進行有效的衝突規避的機制研究甚少。
發明內容
技術方案
《一種基於數據包的移動數據同步衝突預處理與消解方法》包括以下步驟:
步驟一,生成增量數據包,並通過數據同步服務上傳至移動套用伺服器;
步驟二,通過數據同步衝突預處理,對涉及移動和同步的增量數據創建中間表;對沒有涉及移動和同步的增量數據,依據同步規則將數據回填至後端業務系統;
步驟三,對中間表中的增量數據進行衝突檢測,獲得衝突增量數據;
步驟四,採用衝突消解算法對衝突增量數據進行消解;
步驟五,將中間表中消解後的增量數據移動至後端業務系統的業務數據表中。
所述數據同步衝突預處理過程為,首先按照數據貯存位置、主要用途和同步移動特性,將移動套用的數據分為移動中間件基礎數據、技術數據和業務數據,其中移動中間件基礎數據和技術數據主要貯存在不同的移動控制組件中,不需要同步和移動;業務數據貯存在移動終端、後端業務相同及移動數據同步中間件中,用於支撐移動業務流轉,需要進行數據同步與移動,然後對涉及移動和同步的增量數據創建中間表,最後按預處理策略添加到中間表。
所述預處理策略為:
A)針對和實體,按照數據同步規則的新增業務實體SQL語句,將、實體添加到中間表;
B)針對實體,按照數據同步規則的刪除業務實體SQL語句,直接套用於業務系統資料庫完成數據刪除;
上述、和分別表示移動終端在實體Ex上的新增、更新和刪除三種操作類型;
Ex的表達式為其中,集合E表示一類業務實體,元素Ex∈E為實體類的一個實例化;集合F表示一組業務實體的屬性,元素Fy∈F為一個屬性名稱,F0為固有屬性名稱,為實體的唯一標識;集合V表示一組屬性值,元素V(x,y)∈V,表示實體Ex的屬性Fy上的值,V(x,0)為主鍵的值,記為PK(x);所述x∈[0,n],y∈[0,n],n為正整數。
所述增量數據中的非結構化數據以結構化的方式進行存儲。
所述中間表的屬性名稱以及數據類型均與業務數據表的數據結構一致;所述中間表屬性在業務數據表屬性的基礎上增加了“數據包任務ID”、“數據實例ID”、“數據執行用戶”、“數據操作模式”及邏輯主鍵;所述中間表的關聯關係和約束條件均與業務數據表相同。
所述衝突檢測過程為,以“數據包任務ID”和“數據實體ID”標識作為衝突檢測判斷條依據,如果存在兩條或兩條以上記錄,即發生數據衝突。
採用衝突消解算法對衝突增量數據進行消解過程為,在資料庫側通過調用數據衝突消解存儲過程和函式對衝突數據進行消解,所述衝突消解算法以用戶一次上傳的增量數據包為單位進行消解,算法在業務系統資料庫通過存儲過程和函式實現,衝突數據在同一資料庫中進行消解。
有益效果
《一種基於數據包的移動數據同步衝突預處理與消解方法》首次提出了一種基於數據包的移動數據同步衝突預處理和消解機制,通過數據的移動和同步特性對移動套用數據進行分類,分別制定不同的數據同步衝突預處理策略,能夠對衝突進行提前預判和有效規避;衝突檢測和衝突消解通過創建中間表作為媒介,這種面向中間表的衝突檢測機制,不僅具有效率高的優點,而且避免衝突數據直接同步到業務數據表中,提高了業務系統數據的安全性;衝突消解算法,以存儲過程和函式實現,並採用特殊佇列和多執行緒並發控制模型,在中間表中實現衝突消解,中間表與業務數據表之間僅進行數據移動,起到分擔業務系統負載的作用,解決了中國國內外同類方案未能解決的業務高峰期大數據量、高並發引起的業務系統性能瓶頸問題,保證了業務系統的快速回響能力和穩定性。
附圖說明
圖1為《一種基於數據包的移動數據同步衝突預處理與消解方法》的流程圖。
圖2為預處理策略圖。
權利要求
1.《一種基於數據包的移動數據同步衝突預處理與消解方法》特徵在於:包括以下步驟:
步驟一,生成增量數據包,並通過數據同步服務上傳至移動套用伺服器;
步驟二,通過數據同步衝突預處理,對涉及移動和同步的增量數據創建中間表;對沒有涉及移動和同步的增量數據,依據同步規則將數據回填至後端業務系統;
步驟三,對中間表中的增量數據進行衝突檢測,獲得衝突增量數據;
步驟四,採用衝突消解算法對衝突增量數據進行消解;
步驟五,將中間表中消解後的增量數據移動至後端業務系統的業務數據表中。
2.根據權利要求1所述的一種基於數據包的移動數據同步衝突預處理與消解方法,其特徵在於:所述數據同步衝突預處理過程為,首先按照數據貯存位置、主要用途和同步移動特性,將移動套用的數據分為移動中間件基礎數據、技術數據和業務數據,其中移動中間件基礎數據和技術數據主要貯存在不同的移動控制組件中,不需要同步和移動;業務數據貯存在移動終端、後端業務相同及移動數據同步中間件中,用於支撐移動業務流轉,需要進行數據同步與移動,然後對涉及移動和同步的增量數據創建中間表,最後按預處理策略添加到中間表。
3.根據權利要求2所述的一種基於數據包的移動數據同步衝突預處理與消解方法,其特徵在於:所述預處理策略為:
A)針對和實體,按照數據同步規則的新增業務實體SQL語句,將、實體添加到中間表;
B)針對實體,按照數據同步規則的刪除業務實體SQL語句,直接套用於業務系統資料庫完成數據刪除;
上述、和分別表示移動終端在實體Ex上的新增、更新和刪除三種操作類型;
Ex的表達式為其中,集合E表示一類業務實體,元素Ex∈E為實體類的一個實例化;集合F表示一組業務實體的屬性,元素Fy∈F為一個屬性名稱,F0為固有屬性名稱,為實體的唯一標識;集合V表示一組屬性值,元素V(x,y)∈V,表示實體Ex的屬性Fy上的值,V(x,0)為主鍵的值,記為PK(x);所述x∈[0,n],y∈[0,n],n為正整數。
4.根據權利要求2所述的一種基於數據包的移動數據同步衝突預處理與消解方法,其特徵在於:所述增量數據中的非結構化數據以結構化的方式進行存儲。
5.根據權利要求2所述的一種基於數據包的移動數據同步衝突預處理與消解方法,其特徵在於:所述中間表的屬性名稱以及數據類型均與業務數據表的數據結構一致;所述中間表屬性在業務數據表屬性的基礎上增加了“數據包任務ID”、“數據實例ID”、“數據執行用戶”、“數據操作模式”及邏輯主鍵;所述中間表的關聯關係和約束條件均與業務數據表相同。
6.根據權利要求5所述的一種基於數據包的移動數據同步衝突預處理與消解方法,其特徵在於:所述衝突檢測過程為,以“數據包任務ID”和“數據實體ID”標識作為衝突檢測判斷條依據,如果存在兩條或兩條以上記錄,即發生數據衝突。
7.根據權利要求1所述的一種基於數據包的移動數據同步衝突預處理與消解方法,其特徵在於:採用衝突消解算法對衝突增量數據進行消解過程為,在資料庫側通過調用數據衝突消解存儲過程和函式對衝突數據進行消解,所述衝突消解算法以用戶一次上傳的增量數據包為單位進行消解,算法在業務系統資料庫通過存儲過程和函式實現,衝突數據在同一資料庫中進行消解。
實施方式
如圖1所示,一種基於數據包的移動數據同步衝突預處理與消解方法,包括以下步驟:
步驟一,生成增量數據包,並通過數據同步服務上傳至移動套用伺服器。
增量數據包是移動套用基於統一的客戶端開發框架,框架運行時自動記錄數據的變更日誌,增量數據上傳依賴於移動終端的數據變更日誌,移動終端首先根據日誌,按照操作時間順序,將變更的數據依次取出、去重、歸併,生成增量數據包。
移動套用伺服器採用增量數據包處理池方式,對增量數據包進行異步提交。提交的增量數據包首先進入回填作業包佇列,狀態為“待處理”,並嘗試加入回填任務池。移動套用伺服器對回填作業包任務池和佇列進行掃描,按入池順序先後處理狀態為待處理的增量數據包。
步驟二,通過數據同步衝突預處理,對涉及移動和同步的增量數據創建中間表;對沒有涉及移動和同步的增量數據,依據同步規則將數據回填至後端業務系統。
在數據更新時,有可能出現衝突數據,即在一條業務數據被一個移動終端修改時,業務系統或另一個移動終端也進行了修改,例如:一個數據包下載到多個移動終端,多人都編輯了“工作總結”欄位。這種情況,相當於多人修改了同一條數據記錄。因此我們採用了衝突預處理,能夠對衝突進行提前預判和有效規避。
數據同步衝突預處理先對增量數據進行分類,然後根據不同的類別進行處理。先按照數據貯存位置、主要用途和同步移動特性,將移動套用的數據分為移動中間件基礎數據、技術數據和業務數據,其中移動中間件基礎數據和技術數據主要貯存在不同的移動控制組件中,不需要同步和移動;業務數據貯存在移動終端、後端業務相同及移動數據同步中間件中,用於支撐移動業務流轉,需要進行數據同步與移動;對涉及移動和同步的增量數據創建中間表,並按預處理策略添加到中間表;對沒有涉及移動和同步的增量數據,依據同步規則將數據回填至後端業務系統。
上述的中間表用以暫存涉及移動和同步的增量數據,中間表的屬性名稱以及數據類型均與業務數據表的數據結構一致,另外,中間表需要進行界面展現,對中間表進行擴充,以實現衝突手動確認等功能,一般通過特定的建模工具創建中間表,創建中間表的規範如下:
(1)中間表命名規範:業務表名+“_ZJB”;
(2)中間表屬性在業務數據表屬性的基礎上增加了“數據包任務ID”、“數據實例ID”、“數據執行用戶”、“數據操作模式”及邏輯主鍵;
(3)中間表的關聯關係和約束條件均與業務數據表相同。
如圖2所示,上述用以將涉及移動和同步的增量數據添加到中間表的策略如下:
令集合E表示一類業務實體,在資料庫中通常以表對象的形式存在,其中元素Ex∈E為實體類的一個實例化,x∈[0,n],n為正整數,E′x為Ex的子集,通常存儲在移動終端嵌入式資料庫中,其元素僅為發生數據變更的項;
令集合F表示一組業務實體的屬性,在資料庫中為表對象的欄位集合,其中元素Fy∈F,表示表的一個屬性名稱,y∈[0,n],F0為固有屬性名稱,作為實體的唯一標識(主鍵),中間表中通常用GUID作為唯一標識;
令集合V表示一組屬性值,其中元素V(x,y)∈V,表示實體Ex的屬性Fy上的值,V(x,0)為主鍵的值,記為PK(x);
則,實體Ex可表達為:
實體Ex將作為一次數據同步操作的最小單元,、和分別表示移動終端在實體Ex上的新增、更新和刪除三種操作類型。
(1)針對和實體,按照數據同步規則的新增業務實體SQL語句,將實體添加到中間表,作為後續數據衝突檢查和消解的依據。
所述數據同步規則通過Table標籤聲明對一張中間數據表的查詢、修改和刪除SQL,數據添加時使用InsertLogic、UpdateLogic、DeleteLogic等SQL。
(2)針對實體,按照數據同步規則的刪除業務實體SQL語句,直接套用於業務系統資料庫完成數據刪除。
針對非結構化數據(文本、word文檔、圖片等)同步,本方法要求非結構化數據以結構化方式進行存儲,其衝突預處理和消解建立在結構化的描述信息之上,由描述信息維護與非結構化數據的映射關係。
步驟三,對中間表中的增量數據進行衝突檢測,獲得衝突增量數據。
為了儘可能的避免衝突,通過數據包進行數據同步機制,設計出合理的任務分配及管理制度。例如一個數據包任務下載到多個終端,多人執行,每人只填寫自己負責範圍內的工作處理信息,這種情況,從邏輯上無交叉,實際數據無衝突。
但是衝突是不可避免的,所以《一種基於數據包的移動數據同步衝突預處理與消解方法》對中間表中的增量數據進行衝突檢測,以便後續的消解,《一種基於數據包的移動數據同步衝突預處理與消解方法》提供的數據衝突檢測方法是多人修改了同一數據實體的數據衝突檢測,任意一個執行用戶將增量數據上傳到中間表後,均觸發主站業務系統進行衝突檢測,衝突檢測過程為,以“數據包任務ID”和“數據實體ID”標識作為衝突檢測判斷條依據,如果存在兩條或兩條以上記錄,即發生數據衝突。
步驟四,採用衝突消解算法對衝突增量數據進行消解。
消解過程為,在資料庫側通過調用數據衝突消解存儲過程和函式對衝突數據進行消解,所述衝突消解算法以用戶一次上傳的增量數據包為單位進行消解,算法在業務系統資料庫通過存儲過程和函式實現,衝突數據在同一資料庫中進行消解,用以減輕業務系統套用伺服器負荷,提高執行效率。
針對不同的類型的數據衝突,消解的原則也不同,主要分為以下幾類:
(1)針對業務系統與移動終端的數據衝突,原則上,對數據操作時間點進行比較,採用時間優先原則消解衝突;
(2)針對多移動終端的數據衝突,採用按操作時間優先及自定義擴展衝突消解組件相結合的方式進行消解;
(3)針對需要用戶手動進行數據衝突確認及編輯的情況,更新數據包的狀態為“發生數據衝突,未進行同步”,用戶觸發“數據衝突手動確認”功能,彈出數據衝突解決可視化界面,對衝突數據進行忽略、編輯操作並保存到中間表,待業務系統或用戶對檢測出的數據衝突驗證無誤之後,再通過衝突消解算法對衝突數據進行消解,最終實現數據同步。
步驟五,將中間表的增量數據移動至後端業務系統的業務數據表中。
高峰期大數據量、高並發的數據同步任務往往給業務系統套用服務及資料庫伺服器造成難以控制的影響,例如,資料庫死鎖、伺服器高記憶體及CPU資源占用等性能瓶頸問題,因此,《一種基於數據包的移動數據同步衝突預處理與消解方法》實施例提供的數據衝突消解及同步移動方法中採用特殊佇列和多執行緒並發控制模型,用以保證業務系統的快速回響能力和穩定性。
榮譽表彰
2019年7月15日,《一種基於數據包的移動數據同步衝突預處理與消解方法》獲第十一屆江蘇省專利項目獎優秀獎。