System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及数据库,尤其涉及一种基于xxl-job实现informix与mysql数据库同步方法、装置、设备及介质。
技术介绍
1、随着企业信息化建设的发展,各式各样的系统也应运而生,而作为企业生产、经营核心的数据,便在这些系统中不断传递。
2、目前市面上常见的数据存储方式包括了关系型数据库、nosql、newsql、消息队列和文本文件等多种结构。不同的数据存储有着不同的用处,且各有优势。因此企业系统系统运转过程中也需要将数据在不同的系统、存储结构中进行交换和传输,以实现数据的同步。
3、目前常见的数据同步方法,如将数据从informix数据库同步到mysql数据库采用的方法是每从informix读取一条数据,便以指定的唯一值在mysql中查询相应数据,如果查询不到则将该条数据新增到mysql中,如果可以查询到,便更新到mysql中。
4、然而这种同步方法每次都只对一条数据进行查询更新,且更新一条数据需要在informix和mysql中查询两次进行比较,运作速度慢,同步效率低。
技术实现思路
1、有鉴于此,本专利技术的目的在于提供一种基于xxl-job实现informix与mysql数据库同步方法、装置、设备及介质,以改善上述问题。
2、本专利技术实施例提供了一种基于xxl-job实现informix与mysql数据库同步的方法,其包括:
3、在检测到启动xxl-job的任务后,读取所述任务的任务参数;其中,所述任务参数
4、从预先配置的informix数据库中获取具有所述既定内容的数据,并对每条数据的部分列名、参数、内容进行处理,将处理完成后的数据以唯一值作为key存放到指定的第一hashmap中;
5、从mysql中一次性获取所有具有所述既定内容的数据,并以唯一值作为key存放到指定的第二hashmap中;
6、遍历第一hashmap,以唯一值在第二hashmap中查询对应数据,其中,若能查询到对应数据,则以该条数据的所有内容生成md5值与mysql中的存储的md5值进行判定,值不同则将该条数据标记为更新值,放入更新池中;若未能查询到对应数据,则将该条数据放入新增池中;
7、获取全局的druid连接池,从druid连接池中获取mysql连接,并依次将更新池和新增池中的内容以事务的方式,批量更新到mysql中。
8、优选地,所述任务参数还包括执行器、调度类型、运行策略、路由策略以及阻塞处理策略中的至少一个。
9、优选地,在对每条数据的部分列名、参数、内容进行处理时:
10、将数据中的每个列名与目标表中的列名进行一一映射,根据映射结果为每条数据生成指定的java对象并赋值;其中,以数据的唯一编码作为id标识。
11、优选地,还包括:
12、在启动时创建全局的druid连接池;所述druid连接池管理着多条数据库连接,在数据同步过程中,将所述druid连接池中的数据库连接启用,在同步结束后,将数据库连接资源释放,并放回所述druid连接池中。
13、优选地,所述任务为定时任务,所述定时任务根据设定的时间节点自动启动。
14、本专利技术实施例还提供了一种基于xxl-job实现informix与mysql数据库同步的装置,其包括:
15、任务参数读取单元,用于在检测到启动xxl-job的任务后,读取所述任务的任务参数;其中,所述任务参数包括待同步数据的既定内容;
16、第一存放单元,用于从预先配置的informix数据库中获取具有所述既定内容的数据,并对每条数据的部分列名、参数、内容进行处理,将处理完成后的数据以唯一值作为key存放到指定的第一hashmap中;
17、第二存放单元,用于从mysql中一次性获取所有具有所述既定内容的数据,并以唯一值作为key存放到指定的第二hashmap中;
18、查询单元,用于遍历第一hashmap,以唯一值在第二hashmap中查询对应数据,其中,若能查询到对应数据,则以该条数据的所有内容生成md5值与mysql中的存储的md5值进行判定,值不同则将该条数据标记为更新值,放入更新池中;若未能查询到对应数据,则将该条数据放入新增池中;
19、更新单元,用于获取全局的druid连接池,从druid连接池中获取mysql连接,并依次将更新池和新增池中的内容以事务的方式,批量更新到mysql中。
20、优选地,在对每条数据的部分列名、参数、内容进行处理时:
21、将数据中的每个列名与目标表中的列名进行一一映射,根据映射结果为每条数据生成指定的java对象并赋值;其中,以数据的唯一编码作为id标识。
22、优选地,还包括:
23、连接池创建单元,用于在启动时创建全局的druid连接池;所述druid连接池管理着多条数据库连接,在数据同步过程中,将所述druid连接池中的数据库连接启用,在同步结束后,将数据库连接资源释放,并放回所述druid连接池中。
24、本专利技术实施例还提供了一种基于xxl-job实现informix与mysql数据库同步的设备,其包括存储器以及处理器,所述存储器内存储有计算机程序,所述计算机程序能够被所述处理器执行,以实现如上述的基于xxl-job实现informix与mysql数据库同步的方法。
25、本专利技术实施例还提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序能够被所述计算机可读存储介质所在设备的处理器执行,以实现如上述的基于xxl-job实现informix与mysql数据库同步的方法。
26、综上所述,本实施例通过hashmap将所有同步的数据都预先收集分类好,然后对数据进行批量更新。相较于原先每读取一条数据便进行一次连接数据库更新数据的方法,本实施例通过批量更新,减少了数据库连接请求的次数,从而减少数据库连接时间,大大缩短了数据同步的处理时间,提高了数据同步的效率。
27、此外,本实施例通过引入druid连接池的使用,可以减少大批量同步任务进行时对数据库的负载。
本文档来自技高网...【技术保护点】
1.一种基于XXL-JOB实现informix与MySQL数据库同步的方法,其特征在于,包括:
2.根据权利要求1所述的基于XXL-JOB实现informix与MySQL数据库同步的方法,其特征在于,所述任务参数还包括执行器、调度类型、运行策略、路由策略以及阻塞处理策略中的至少一个。
3.根据权利要求1所述的基于XXL-JOB实现informix与MySQL数据库同步的方法,其特征在于,在对每条数据的部分列名、参数、内容进行处理时:
4.根据权利要求1所述的基于XXL-JOB实现informix与MySQL数据库同步的方法,其特征在于,还包括:
5.根据权利要求1所述的基于XXL-JOB实现informix与MySQL数据库同步的方法,其特征在于,所述任务为定时任务,所述定时任务根据设定的时间节点自动启动。
6.一种基于XXL-JOB实现informix与MySQL数据库同步的装置,其特征在于,包括:
7.根据权利要求6所述的基于XXL-JOB实现informix与MySQL数据库同步的装置,其特征在于,在对
8.根据权利要求6所述的基于XXL-JOB实现informix与MySQL数据库同步的装置,其特征在于,还包括:
9.一种基于XXL-JOB实现informix与MySQL数据库同步的设备,其特征在于,包括存储器以及处理器,所述存储器内存储有计算机程序,所述计算机程序能够被所述处理器执行,以实现如权利要求1至5任意一项所述的基于XXL-JOB实现informix与MySQL数据库同步的方法。
10.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述计算机程序能够被所述计算机可读存储介质所在设备的处理器执行,以实现如权利要求1至5任意一项所述的基于XXL-JOB实现informix与MySQL数据库同步的方法。
...【技术特征摘要】
1.一种基于xxl-job实现informix与mysql数据库同步的方法,其特征在于,包括:
2.根据权利要求1所述的基于xxl-job实现informix与mysql数据库同步的方法,其特征在于,所述任务参数还包括执行器、调度类型、运行策略、路由策略以及阻塞处理策略中的至少一个。
3.根据权利要求1所述的基于xxl-job实现informix与mysql数据库同步的方法,其特征在于,在对每条数据的部分列名、参数、内容进行处理时:
4.根据权利要求1所述的基于xxl-job实现informix与mysql数据库同步的方法,其特征在于,还包括:
5.根据权利要求1所述的基于xxl-job实现informix与mysql数据库同步的方法,其特征在于,所述任务为定时任务,所述定时任务根据设定的时间节点自动启动。
6.一种基于xxl-job实现informix与mysql数据库同步的装...
【专利技术属性】
技术研发人员:请求不公布姓名,请求不公布姓名,
申请(专利权)人:厦门汉印股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。