我们来自五湖四海,不为别的,只因有共同的爱好,为中国互联网发展出一分力!

基于异构系统数据时间同步模型的研究与应用

2012年02月09日22:02 阅读: 13720 次

标签: 数据

摘要:针对异构数据库系统数据时间同步所提出的新问题,详细介绍了异构数据库系统数据时间同步的特点、要求。根据异构数据库系统数据时间同步的特点,提出了一种基于新时钟、时间戳与触发器的异构数据库系统数据时间同步模型。
  关键词:异构性;数据库系统;时间同步;时间戳;触发器
  
  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-2017 中国蓝客联盟 版权所有.
关于蓝客联盟历史宗旨章程技术服务联系我们蓝客社区