一种数据同步的方法和装置的制造方法_2

文档序号:9922084阅读:来源:国知局
需要根据事务日志中未同步的数据库事务的数量来判断是否触发提交对磁盘数据库的同步任务。
[0046]当检测到事务日志中未同步的数据库事务的数量大于或等于预置数量时,则触发同步任务,根据未同步的数据库事务,将前一次执行同步任务与本次执行同步任务的期间内,内存数据库中发生变化的数据同步至磁盘数据库。
[0047]进一步地,将内存数据库中发生变化的数据同步至磁盘数据库的过程,具体可以通过如下步骤S2041至步骤S2043实现,详细说明如下:
[0048]S2041、将数据库事务按照所操作的表进行分类,并为同一类数据库事务对应生成一个数据同步任务。
[0049]数据库事务中往往会操作多个表,将对同一个表的操作放在一起执行,可以避免对表的反复查找和读取,从而提高同步过程的执行效率。
[0050]具体地,将数据库事务按照所操作的表进行分类,使得对同一个表操作的数据库事务归为同一类,并为同一类数据库事务对应生成一个数据同步任务。
[0051]S2042、为每一个数据同步任务分配一个对应的线程,该线程用于执行对应的数据同步任务。
[0052]具体地,一个线程用于执行一个数据同步任务,一个数据同步任务只对磁盘数据库中的某一个表进行操作。
[0053]S2043、通过多线程并发执行数据同步任务,将同一类数据库事务对应的发生变化的数据按照操作类型,以一条语句同步一类操作类型的数据的方式,分批同步至磁盘数据库。
[0054]在对磁盘数据库进行同步的过程中,相对于一条语句执行一个操作并循环执行多次,一条语句执行多个操作的执行效率更高。由于每一个线程只执行对同一个表的操作,因此将每一个线程所对应的发生变化的数据按照操作类型进行分类合并,可将相同类型的多个操作合并为一个操作,作为一条语句执行,从而提高同步过程的执行效率。
[0055]例如,一个数据同步任务中对某一个表的操作包括了多条删除不同字段的操作以及多条增加字段的操作,如果每个语句只对应执行一个删除字段或增加字段的操作,则执行效率较低,因此可以根据操作类型,将所有的删除字段的操作合并到一条语句中执行,将所有的增加字段的操作合并到另一条语句中执行,从而提高执行的效率。
[0056]S205、若当前时间到达预置同步时间,则获取本次同步周期内记录的所有数据库事务,根据本次同步周期内记录的所有数据库事务,将内存数据库中发生变化的数据同步至磁盘数据库。
[0057]具体地,如果当前时间到达预置同步时间,则无论事务日志中未同步的数据库事务的数量是否达到预置数量,都直接获取本次同步周期内记录的所有数据库事务,并根据这些数据库事务,将内存数据库中发生变化的数据同步至所述磁盘数据库。
[0058]进一步地,将内存数据库中发生变化的数据同步至磁盘数据库的过程,具体可以通过与步骤S204中的步骤S2041至步骤S2043相同的过程实现,此处不再赘述。
[0059]本实施例中,通过累积一定数量的数据库事务后一次性提交对磁盘数据库的同步,减少对磁盘数据库的提交次数,提高同步效率;通过设置预置同步时间,定时将内存数据库中发生变化的数据同步至磁盘数据库,避免累积数据库事务一次性提交可能导致的内存数据库和磁盘数据库不能及时同步;通过将数据库事务按照所操作的表进行分类,并且对每一个表的操作按照操作类型分类合并,从而提高同步过程的执行效率。本实施例中的技术方案实现了内存数据库到磁盘数据库的实时同步,使得在内存数据库满足对数据的高处理性能的同时,磁盘数据库满足对数据进行持久化的安全存储,从而充分发挥了内存数据库的高速度和磁盘数据库的高可靠性,因而适合在需要同时满足数据处理高速性和数据高可靠性的场合使用。
[0060]实施例三:
[0061]图3是本发明实施例三提供的数据同步的装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。图3示例的用于数据同步的装置可以是前述实施例一提供的用于数据同步的方法的执行主体,其可以是服务器或者服务器中的一个功能模块。图3示例的用于数据同步的装置主要包括:导出模块31、记录模块32和同步模块33,各功能模块详细说明如下:
[0062]导出模块31,用于将磁盘数据库中的数据同步到内存数据库中,使得内存数据库和磁盘数据库的数据一致;
[0063]记录模块32,用于当内存数据库中的数据发生变化时,将导致数据发生变化的数据库事务记录到事务日志中;
[0064]同步模块33,用于根据事务日志,将内存数据库中发生变化的数据同步至磁盘数据库。
[0065]本实施例提供的数据同步的装置中各模块实现各自功能的过程,具体可参考前述图1所示实施例的描述,此处不再赘述。
[0066]从上述图3示例的用于数据同步的装置可知,本实施例中,通过当内存数据库中的数据发生变化时,将导致数据发生变化的数据库事务记录到事务日志中,并根据事务日志将内存数据库中发生变化的数据同步至磁盘数据库,实现内存数据库到磁盘数据库的实时同步,使得在内存数据库满足对数据的高处理性能的同时,磁盘数据库满足对数据进行持久化的安全存储,从而充分发挥了内存数据库的高速度和磁盘数据库的高可靠性,因而适合在需要同时满足数据处理高速性和数据高可靠性的场合使用。
[0067]实施例四:
[0068]图4是本发明实施例四提供的数据同步的装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。图4示例的用于数据同步的装置可以是前述实施例二提供的用于数据同步的方法的执行主体,其可以是服务器或者服务器中的一个功能模块。图4示例的用于数据同步的装置主要包括:导出模块41、记录模块42和同步模块43,各功能模块详细说明如下:
[0069]导出模块41,用于将磁盘数据库中的数据同步到内存数据库中,使得内存数据库和磁盘数据库的数据一致;
[0070]记录模块42,用于当内存数据库中的数据发生变化时,将导致数据发生变化的数据库事务记录到事务日志中;
[0071 ]同步模块43,用于根据事务日志,将内存数据库中发生变化的数据同步至磁盘数据库。
[0072]具体地,同步模块43包括:
[0073]第一检测子模块431,用于检测事务日志中未同步的数据库事务的数量是否大于或等于预置数量;
[0074]同步子模块432,用于若第一检测子模块431检测到事务日志中未同步的数据库事务的数量大于或等于预置数量,则根据未同步的数据库事务,将内存数据库中发生变化的数据同步至磁盘数据库。
[0075]进一步地,同步模块43,还包括:
[0076]第二检测子模块433,用于检测当前时间是否到达预置同步时间。
[0077]进一步地,同步子模块432,还用于
[0078]若第二检测子模块433检测到当前时间未到达预置同步时间,则检测事务日志中未同步的数据库事务的数量是否大于或等于预置数量,若大于或等于,则根据未同步的数据库事务,将内存数据库中发生变化的数据同步至磁盘数据库;
[0079]若第二检测子模块433检测到当前时间到达预置同步时间,则获取本次同步周期内记录的所有数据库事务,根据本次同步周期内记录的所有数据库事务,将内存数据库中发生变化的数据同步至磁盘数据库。
[0080]进一步地,同步模块43,还包括:
[0081]数据同步任务生成子模块434,用于将数据库事务按照所操作的表进行分类,并为同一类数据库事务对应生成一个数据同步任务;
[0082]线程分配子模块435,用于为每一个数据同步任务分配一个对应的线程,该线程用于执行对应的数据同步任务;
[0083]进一步地,同步子模块432,还用于通过多线程并发执行数据同步任务,将发生变化的数据同步至磁盘数据库。
[0084]进一步地,同步子模块432,还用于通过多线程并发执行数据同步任务,将同一类数据库事务对应的发生
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1