本发明涉及数据交换技术,尤其涉及一种可配置的定时数据同步方法。解决企业内部异构系统之间的数据同步问题。主要利用计算机多线程技术、XML技术、数据库技术实现。具有简单配置、快速部署、灵活扩展的特点,并且对于特定系统(比如CRM与ERP系统之间),一次配置后,可重复使用,有利于配置模板的积累。

背景技术:

在企业中,由于开发时间或开发部门的不同,往往有多个异构的、运行在不同的软硬件平台上的信息系统同时运行,这些系统的数据源彼此独立、相互封闭,使得数据难以在系统之间交流、共享和融合,从而形成了"信息孤岛"。随着信息化应用的不断深入,企业内部、企业与外部信息交互的需求日益强烈,急切需要对已有的信息进行整合,联通“信息孤岛”,共享信息。

数据集成:数据集成通过应用间的数据交换从而达到集成,主要解决数据的分布性和异构性的问题,其前提是被集成应用必须公开数据结构,即必须公开表结构,表间关系,编码的含义等。

对于数据集通常的解决办法,一是我们系统中直接访问对方系统的数据库的方式。这样的方式数据实时性好,没有延迟。缺点是安全性比较差、互相影响的风险也比较大,对方系统可能担心会打乱数据,影响他们的系统,我们系统也因为对方系统数据库是否可用而受影响。第二个是把对方系统的数据拿过来,放到我们的系统的数据库里。

技术实现要素:

对于上述第二种情况,本发明提出了一种可配置的定时数据同步方法,它可以将来自某个系统的数据定时同步到目标系统中。数据同步需要了解5方面信息,数据的来源、来源中的数据、目标、应该放到目标的什么地方还有同步频率。

1、同步数据信息配置DbCrmJob.config。

在这个文件里需要配置的信息包括数据的来源、目的,需要同步的数据,数据同步的方向和步骤。主要节点如下:

数据库信息配置节点,配置数据的来源和目的数据库连接信息,根据实际项目的环境修改配置。

WebService信息配置节点,配置数据的来源和目的为UpdateCrm Interface的连接信息,根据实际项目的环境修改配置,一般只需要修改接口服务器的IP地址。

同步数据配置节点,配置需要同步的数据。每个InfObject相当于数据库中的一个表,Field相当于表中的字段。如果同步双方的表结构相同,可以只配置一个,如果双方的表结构不同都需要配置。

数据同步任务配置节点,配置数据同步的方向,同步的步骤,即将来源于某个数据库或UpdateCRM中的什么数据同步到目的数据库或UpdateCRM。每一个Task表示一个同步任务,可包含多个同步步骤Item,Item为具体的需要同步的数据。

2、数据同步任务定时配置文件jobs.xml。

主要对DbCrmJobCfg.xml配置的数据同步任务的定时执行信息进行配置。配置节点如下:

主要配置作业节点Job和时间触发器节点trigger。Job和DbCrmJobCfg中的任务对应,Job的name需要与DbCrmJob.Config中Task的taskName相同,其他参照注释说明。

trigger配置作业的执行时间,其中的job-name需要job节点的name相同。Trigger的定时分为两种Simple和cron,可以满足不同的需求。

如果需要让任务只在某个时刻执行一次,或者,在某个时刻开始,然后按照某个时间间隔重复执行,简单地说,如果你想让触发器在2007年8月20日上午11:23:54秒执行,然后每个隔10秒钟重复执行一次,并且这样重复5次。那么Simple就可以满足你的要求。

如果你需要像日历那样按日程来触发任务,而不是像Simpler那样每隔特定的间隔时间触发,通常使用cron方式配置定时时间。使用cron,你可以指定诸如“每个周五中午”,或者“每个工作日的9:30”或者“从每个周一、周三、周五的上午9:00到上午10:00之间每隔五分钟”这样日程安排来触发。甚至,象Simple一样,Cron也有一个StartTime以指定日程从什么时候开始,也有一个(可选的)EndTime以指定何时日程不再继续。

Cron表达式举例

例1–一个简单的每隔5分钟触发一次的表达式

"0 0/5***?"

例2–在每分钟的10秒后每隔5分钟触发一次的表达式(例如.10:00:10am,10:05:10等.)。

"10 0/5***?"

例3–在每个周三和周五的10:30,11:30,12:30触发的表达式。

"0 30 10-13?*WED,FRI"

例4–在每个月的5号,20号的8点和10点之间每隔半个小时触发一次且不包括10点,只是8:30,9:00和9:30的表达式。

"0 0/30 8-9 5,20*?"注意,对于单独触发器来说,有些日程需求可能过于复杂而不能用表达式表述,例如:9:00到10:00之间每隔5分钟触发一次,下午1:00到10点每隔20分钟触发一次。这个解决方案就是创建两个触发器,两个触发器都运行相同的任务。

3、日志配置文件JobScheduler.exe.config。

对程序的运行信息、任务执行信息、错误信息的日志输出配置。程序默认配置为错误信息输出到文件(运行目录下的log目录)并且将错误日志发送邮件给指定的的维护人员。对于程序的运行日志可运行logView.bat查看实时日志。

部署时主要修改如下信息:

[测试项目]修改为实际的项目名称

***@inspur.com修改维护人员的邮件地址

4、SQL Server生成字段配置SQL

本发明的有益效果是

基于XML配置,配置灵活、使用简单;

支持全量更新与增量更新;

支持系统之间双向定时数据同步;

灵活的定时策略,包括固定频次重复执行和特定时间点执行,支持cron表达式;

预制CRM系统和ERP系统数据处理模板,方便特定系统间的快速部署,提高效率;

采用服务部署方式,运行稳定,操作系统启动后自动重启,无须人为参与;

完备的反馈机制,出现错误自动发送邮件给维护人员,及时解决,调试信息和运行信息可通过配置决定是否输出。

附图说明

图1是DbCrmJob.xml和Jobs.xml各配置节点关系示意图。

具体实施方式

下面对本发明的内容进行更加详细的阐述:

本发明提供的一种可配置的定时数据同步方法与装置,实现方式是基于数据库层面来实现系统之间的数据交换,对现有业务系统无影响。支持SqlServer/Oracle与SqlServer/Oracle之间、SqlServer/Oracle与UpdateCRM系统之间双向定时数据同步。

主要实现代码如下:

本发明特点

1、在数据库层面完成数据同步,支持Oracle、SqlServer两种数据库,预制数据库访问层接口,可通过扩展支持其他数据库;

2、部署一套程序,通过配置,可以支持任意多个系统间的数据交换;

3、可通过xml配置,Sql和存储过程三种方式获取数据;

4、可根据不同系统的要求配置字段的时间格式,如20160819、2016-08-19、2016/08/09;

5、可为每次数据同步的一批数据生成一个批号,以方便导入之后的处理;

6、可为每批数据生成记录序号;

7、对于主从表,可以先导入主表数据,再导入从表数据,然后通过本次批次号做后续处理;

8、对于目标数据记录,可以配置数据同步时间信息(何时同步的数据);

9、可自动判断每条数据是更新或添加;

10、支持全量更新和增量更新;

11、存错过程支持灵活的时间表达式;

12、支持在同步前调用源数据库的存储过程,以便对本次同步的数据做预处理;

13、在同步后可以调用目标数据库的存储过程,以便对本次同步的数据做后处理,比如对本批次数据做数据转换;

14、数据同步定时时间,支持Cron表达式,可按固定频次,如没5秒执行,以及特定时间点循环执行,如表达式“0 0 23**?”表示每天晚上11点执行。

15、可以配置日志的输出,如调试日志、运行日志、错误日志等

16、出现错误后,将错误日志发送邮件给维护人,以便及时解决问题。

java定时增量同步,一种可配置的定时数据同步方法与流程相关推荐

  1. 通过Logstash实现mysql数据定时增量同步到ES

    文章目录 前言 一.系统配置 二.同步步骤整体概览 三.logstash数据同步实战 1.新建mysql表 2.ES中新建索引 3.Logstash 管道配置 4.启动Logstash 5.测试 6. ...

  2. Java内存模型 - 同步八种操作

    Java 内存模型 - 同步操作与规则 Java内存模型 - 同步八种操作 锁定(lock): 作用于主内存中的变量,将他标记为一个线程独享变量. 通常意义上的上锁,就是一个线程正在使用时,其他线程必 ...

  3. mysql多客户端数据不同步_一种多终端设备上的数据同步方法

    一种多终端设备上的数据同步方法 [技术领域] [0001] 属于移动通信技术领域,特别是涉及基于离网环境下多种移动终端设备之间的数 据同步的方法. 技术背景 [0002] 90年代未,数据同步始于有线 ...

  4. datax实现mysql增量同步_datax 3.0配合crontab实现数据定时增量同步

    使用datax 实现数据增量同步踩坑记录 前提概要 由于项目上需要将a服务器数据同步至b服务器,一开始使用mysql主从复制,但是由于主从同步无法触发位于b服务器的触发器,只能放弃此方案.后来找到了d ...

  5. JAVA数据库连接的另一种实现及简单的数据插入及显示

    教材是JDK8的,家里也可以正规的测试JDK8, 但公司电脑是JDK6的,所以代码要相应的变动一下下,以适应老的TRY语句. Message.java package cc.openhome;impo ...

  6. 云享团——基于大数据开发套件的增量同步策略

    免费开通大数据服务:https://www.aliyun.com/product/odps 转载自云享团 因为近期遇到用户在做ETL操作导入数据到MaxCompute的时候,对如何设置数据同步策略有疑 ...

  7. Mysql5.7使用DTS增量同步数据到MaxCompute

    背景:一些客户反馈,增量同步数据到MaxCompute按照全天的数据做增量数据同步数据量太大,且不使用按天的增量同步数据,进行在MaxCompute上进行数据处理得出增量数据对于delete的相关数据 ...

  8. ODPS 数据全量/增量同步方案

    随着业务量增加,原采用的mysql 对大量业务数据的处理效率降低,公司采购的ODPS(MaxCompute) 阿里数据处理平台,进行数据的处理. 一.源数据库 -> ODPS 全量同步,直接同步 ...

  9. 数据同步之全量同步与增量同步

    一.什么是数据同步 业务数据是数据仓库的重要数据来源,我们需要每日定时从业务数据库中抽取数据,传输到数据仓库中,之后再对数据进行分析统计. 为保证统计结果的正确性,需要保证数据仓库中的数据与业务数据库 ...

最新文章

  1. winpcap4.1.2手动清理关键
  2. 神经网络激活函数链接
  3. 技术大牛长成记之不要光看热闹
  4. 机器学习-线性回归(Linear Regression)
  5. 浙大 PAT a1058
  6. 驳文不看文,实在可怕
  7. MySql事务及ACID实现的原理
  8. ubuntu 910 下安装万能五笔
  9. 开源多云技术平台——Choerodon猪齿鱼发布0.24版本
  10. 移植ffmpeg到android_1
  11. IntelliJ IDEA中怎么查看方法说明
  12. c语言实现乘法口诀表的打印函数
  13. 隐私计算之差分隐私-Laplace机制
  14. 局域网内PC端远程监控android设备界面
  15. 应用程序正常初始化(0xc150002)失败
  16. 联机版俄罗斯方块带自动挂机源码
  17. 平行四边形的面积公式是如何推导的?
  18. 日拱一卒.操作系统基础知识点梳理
  19. 全国第四轮计算机学科评估排名,最权威中国高校学科排名,全国第四轮学科评估结果出炉!...
  20. 一款强大的端口扫描工具(nmap)

热门文章

  1. SpringBoot配置文件-yaml的用法
  2. QuorumPeerConfig.parse
  3. Quartz框架中的Listener
  4. TransactionProducer(事务消息)
  5. 扩展--使用队列来优化递归操作完成文件下载
  6. Set集合存储元素不重复的原理
  7. 规格参数查询后台代码实现
  8. 使用递归计算1-n之间的和
  9. 函数的返回值-改造求和函数
  10. Zuul:Pre和Post过滤器(上)