我們來自五湖四海,不為別的,只因有共同的愛好,為中國互聯網發展出一分力!

基于異構系統數據時間同步模型的研究與應用

2012年02月09日22:02 閱讀: 16668 次

標簽: 數據

摘要:針對異構數據庫系統數據時間同步所提出的新問題,詳細介紹了異構數據庫系統數據時間同步的特點、要求。根據異構數據庫系統數據時間同步的特點,提出了一種基于新時鐘、時間戳與觸發器的異構數據庫系統數據時間同步模型。
  關鍵詞:異構性;數據庫系統;時間同步;時間戳;觸發器
  
  1異構數據庫系統數據時間同步模型與算法的研究
  
  異構數據庫系統數據時間同步的精確度主要受到以下因素的影響:異構數據庫系統數據時間同步采取的策略;服務器端與客戶端時鐘系統的精確度;服務器端與客戶端運行的操作系統;服務器端與客戶端所運行的DBMS;服務器端與客戶端的網絡狀況等。
  現行的異構系統使用的數據同步策略主要有基于快照差分算法的數據同步策略與基于日志分析的數據同步策略。
  基于快照差分算法的策略不但需要消耗同等數量級的存儲空間和I/O開銷,而且需要大量的時間進行數據的排序、分析和比對,特別是對于大數據量的快照差分,數據同步的效率會急劇下降;基于日志的數據同步策略雖然效率會提高,但是對數據日志的分析一般難以實現。可見,必須找出另外方法,本文在觸發器的基礎上,將電子商務中的時間戳技術運用到其中,提出了一種基于時間戳和觸發器的數據同步策略。
  在本策略中有兩個難點需要解決,一個是數據源的類型多樣,如何方便地自動地無需人工干預建立觸發器。第二個難點是如何在分布式環境下最大化地減少數據傳輸的冗余量,實現數據的快速同步,且減少對數據源的影壓力。
  針對第一個問題,因為異構數據源的類型不確定,可以采用函數的方法,實現觸發器的自動建立。針對數據庫管理系統多樣性,數據庫觸發器的建立方法不同,可事先針對不同的數據庫系統分別建立不同的函數。當第一次集成的時候,自動加載相應的函數到數據庫管理系統當中去,并執行函數給每個要集成的表建立觸發器。
  針對第二個問題,在目前常用的數據同步策略中,傳輸對象都是以一條一條記錄為最小單位的,也就是說,當數據源表中某一個字段發生變化時,會把該條記錄的內容全部發送給目的端,這種處理方式導致數據的傳輸冗余量太大,嚴重的增加了網絡的負載,影響了數據同步的效率。在這里,考慮將監視發送對象縮小到字段,在傳輸的過程當中只把變化字段的內容發送給目標端,平衡網絡的負載。同時為了減少對數據源的壓力,設計了一個源操作表,它記錄了對數據的所有操作,包括增加、修改和刪除記錄等信息。
  源操作表位于源數據端,隨時同源表的數據保持一致,在第一次抽取的時候會建立,每個要抽取的表都各自對應一個源操作表,其表名為要抽取的表名加后綴“_SNP”源操作表的結構如表1所示。
  
  (1)當修改數據的記錄時,觸發器被觸發,將操作的時間、類型和修改的值以及記錄的標示寫入源操作表當中;比如,當修改源表的某條記錄的一個字段時,查找源操作表是否有關于該字段的修改記錄(字段Data_primary和Name_column的值必須完全匹配),如果有則直接在該記錄上修改(Type_oper字段值為U),并將修改的值填入Data_column字段即可,如果沒有則在源操作表插入一條記錄即可。
  當源表中插入一條記錄時,只需要在源操作表中將非空字段的信息寫入即可(Type_oper字段值為I),那些空值的字段不需要填寫其信息,也就是說,雖然源表有N個字段,但在插入一記錄時只由M個字段插入了新值,源操作表中只增加了M個記錄而不是N個記錄。
  當在源表中刪除一條記錄時,查找源操作表是否有關于該記錄的信息(只要字段Data_primary匹配),如果信息表明該記錄是新插入的(即該記錄信息中有一個Type_oper為I的記錄)把找到的所有記錄刪除即可,如果該記錄不是新插入的(即不能找到該記錄信息中有一個Type_oper為I的記錄)則將信息寫入源操作表(字段Typeoper值為D)。
  摘要:針對異構數據庫系統數據時間同步所提出的新問題,詳細介紹了異構數據庫系統數據時間同步的特點、要求。根據異構數據庫系統數據時間同步的特點,提出了一種基于新時鐘、時間戳與觸發器的異構數據庫系統數據時間同步模型。
  關鍵詞:異構性;數據庫系統;時間同步;時間戳;觸發器
  
  1異構數據庫系統數據時間同步模型與算法的研究
  
  異構數據庫系統數據時間同步的精確度主要受到以下因素的影響:異構數據庫系統數據時間同步采取的策略;服務器端與客戶端時鐘系統的精確度;服務器端與客戶端運行的操作系統;服務器端與客戶端所運行的DBMS;服務器端與客戶端的網絡狀況等。
  現行的異構系統使用的數據同步策略主要有基于快照差分算法的數據同步策略與基于日志分析的數據同步策略。
  基于快照差分算法的策略不但需要消耗同等數量級的存儲空間和I/O開銷,而且需要大量的時間進行數據的排序、分析和比對,特別是對于大數據量的快照差分,數據同步的效率會急劇下降;基于日志的數據同步策略雖然效率會提高,但是對數據日志的分析一般難以實現。可見,必須找出另外方法,本文在觸發器的基礎上,將電子商務中的時間戳技術運用到其中,提出了一種基于時間戳和觸發器的數據同步策略。
  在本策略中有兩個難點需要解決,一個是數據源的類型多樣,如何方便地自動地無需人工干預建立觸發器。第二個難點是如何在分布式環境下最大化地減少數據傳輸的冗余量,實現數據的快速同步,且減少對數據源的影壓力。
  針對第一個問題,因為異構數據源的類型不確定,可以采用函數的方法,實現觸發器的自動建立。針對數據庫管理系統多樣性,數據庫觸發器的建立方法不同,可事先針對不同的數據庫系統分別建立不同的函數。當第一次集成的時候,自動加載相應的函數到數據庫管理系統當中去,并執行函數給每個要集成的表建立觸發器。
  針對第二個問題,在目前常用的數據同步策略中,傳輸對象都是以一條一條記錄為最小單位的,也就是說,當數據源表中某一個字段發生變化時,會把該條記錄的內容全部發送給目的端,這種處理方式導致數據的傳輸冗余量太大,嚴重的增加了網絡的負載,影響了數據同步的效率。在這里,考慮將監視發送對象縮小到字段,在傳輸的過程當中只把變化字段的內容發送給目標端,平衡網絡的負載。同時為了減少對數據源的壓力,設計了一個源操作表,它記錄了對數據的所有操作,包括增加、修改和刪除記錄等信息。
  源操作表位于源數據端,隨時同源表的數據保持一致,在第一次抽取的時候會建立,每個要抽取的表都各自對應一個源操作表,其表名為要抽取的表名加后綴“_SNP”源操作表的結構如表1所示。
  
  (1)當修改數據的記錄時,觸發器被觸發,將操作的時間、類型和修改的值以及記錄的標示寫入源操作表當中;比如,當修改源表的某條記錄的一個字段時,查找源操作表是否有關于該字段的修改記錄(字段Data_primary和Name_column的值必須完全匹配),如果有則直接在該記錄上修改(Type_oper字段值為U),并將修改的值填入Data_column字段即可,如果沒有則在源操作表插入一條記錄即可。
  當源表中插入一條記錄時,只需要在源操作表中將非空字段的信息寫入即可(Type_oper字段值為I),那些空值的字段不需要填寫其信息,也就是說,雖然源表有N個字段,但在插入一記錄時只由M個字段插入了新值,源操作表中只增加了M個記錄而不是N個記錄。
  當在源表中刪除一條記錄時,查找源操作表是否有關于該記錄的信息(只要字段Data_primary匹配),如果信息表明該記錄是新插入的(即該記錄信息中有一個Type_oper為I的記錄)把找到的所有記錄刪除即可,如果該記錄不是新插入的(即不能找到該記錄信息中有一個Type_oper為I的記錄)則將信息寫入源操作表(字段Typeoper值為D)。
分享到: 更多
藍客門戶
©2001-2019 中國藍客聯盟 版權所有.
關于藍客聯盟歷史宗旨章程技術服務聯系我們藍客社區

女校剑道部闯关