多系统之间大数据量增量同步解决方案
2013-07-04 17:12
1396 查看
一、背景介绍
上海立邦TU报销系统,是上海立邦集团针对内部的报销的业务,编写的一套系统,此系统主要特点是和Web、SAP和Notes等系统实现无缝对接,从而完成整体业务的流转,目前立邦已经存在SAP报销系统、Notes系统,情况如下:
n SAP报销系统:实现上海立邦主要业务的实现,例如:供应商、客户、员工、人员等信息的维护及控制
n Notes:主要通过邮件实现对业务流转中的具体单据进行审核以及日常的业务管理
n TU报销系统:主要通过同步SAP报销系统中的供应商、客户、员工、项目等主数据信息,编写报销单,递交到Notes系统进行数据流转,并且递交数据到SAP,从而完成整个业务处理
二、需求说明
在SAP报销系统中的主数据据达到百万级的数据,需要要将其中的供应商、客户、员工、项目等信息同步到本地数据库中:
1) SAP每天每种类型的主数据大约会增加2000条以上的数据量
2) 要求每天同步数据一次,在紧急状态下,可以实现手动同步
3) 5年只能不能因为数据量太大,导致同步业务失败,引起代码重构
三、概要设计
由于数据量太大,决定采用增量同步的方式进行数据同步;为了满足用户需求,同时设计手动同步的模块,实现手动及时同步。
四、详细设计
1. SAP的数据获取
采用PI方式获取SAP数据,通过WebService方式发布数据,由于是采用增量同步,因此有2个必备参数为:开始时间、中止时间,数据获取逻辑如下
n 在返回数据列表中存在DataStatesMark字段
n 新增的数据在DataStatesMark中为“I”
n 编辑的数据在DataStatesMark中为“U”
n 删除的数据在DataStatesMark中为“D”
2. 数据定时同步的设计
采用WindowsService的方式进行处理,增加定时器,通过设置启动时间,判断当前时间和启动时间的小时一致的话,直接运行程序;程序调用逻辑:
n Window Service调用Web Service获取SAP中的增量数据
n Windows Service调用本地同步方法,以获取到的增量数据为参数,同步增量数据到数据库中。
3. 同步增量数据逻辑的设计
n 在数据库中设置同步数据的临时表,增加DataStatusMark字段,将通过WebService中获取到的数据全部插入到临时表中
n 编写同步的存储过程,实现临时表到正式表的同步。
4. WindowsService数据同步步骤
1) 调用WebService获取增量的SAP端数据
2) 调用方法,将获取到的增量的SAP端数据插入到临时表中
3) 调用存储过程,实现将临时表中的数据,同步到正式表中。
五、同步存储过程技术说明
1. 传入参数 outmsg输出参数、Error 错误输出参数
2. 循环临时表中的数据判断DataStatusMark字段
3. 如果DataStatusMark为“D”直接实现将Enable字段修改为“D”,代表已经将数据删除
4. 如果DataStatusMark为“I”或者为“U”,根据业务主键字段,在正式表中判断数据是否存在,存在的话,直接插入,否则更新。
5. 增加错误判断机制,如果出错,直接抛出异常给Error参数
6. 执行的每一步,必须实现数据数据,通过OutMsg参数接收。
需要同步存储过程示例代码的朋友们,可以到我的资源中去下载相关代码。
张晓斌
2013年6月29日14:20:31 于 上海龙阳路
上海立邦TU报销系统,是上海立邦集团针对内部的报销的业务,编写的一套系统,此系统主要特点是和Web、SAP和Notes等系统实现无缝对接,从而完成整体业务的流转,目前立邦已经存在SAP报销系统、Notes系统,情况如下:
n SAP报销系统:实现上海立邦主要业务的实现,例如:供应商、客户、员工、人员等信息的维护及控制
n Notes:主要通过邮件实现对业务流转中的具体单据进行审核以及日常的业务管理
n TU报销系统:主要通过同步SAP报销系统中的供应商、客户、员工、项目等主数据信息,编写报销单,递交到Notes系统进行数据流转,并且递交数据到SAP,从而完成整个业务处理
二、需求说明
在SAP报销系统中的主数据据达到百万级的数据,需要要将其中的供应商、客户、员工、项目等信息同步到本地数据库中:
1) SAP每天每种类型的主数据大约会增加2000条以上的数据量
2) 要求每天同步数据一次,在紧急状态下,可以实现手动同步
3) 5年只能不能因为数据量太大,导致同步业务失败,引起代码重构
三、概要设计
由于数据量太大,决定采用增量同步的方式进行数据同步;为了满足用户需求,同时设计手动同步的模块,实现手动及时同步。
四、详细设计
1. SAP的数据获取
采用PI方式获取SAP数据,通过WebService方式发布数据,由于是采用增量同步,因此有2个必备参数为:开始时间、中止时间,数据获取逻辑如下
n 在返回数据列表中存在DataStatesMark字段
n 新增的数据在DataStatesMark中为“I”
n 编辑的数据在DataStatesMark中为“U”
n 删除的数据在DataStatesMark中为“D”
2. 数据定时同步的设计
采用WindowsService的方式进行处理,增加定时器,通过设置启动时间,判断当前时间和启动时间的小时一致的话,直接运行程序;程序调用逻辑:
n Window Service调用Web Service获取SAP中的增量数据
n Windows Service调用本地同步方法,以获取到的增量数据为参数,同步增量数据到数据库中。
3. 同步增量数据逻辑的设计
n 在数据库中设置同步数据的临时表,增加DataStatusMark字段,将通过WebService中获取到的数据全部插入到临时表中
n 编写同步的存储过程,实现临时表到正式表的同步。
4. WindowsService数据同步步骤
1) 调用WebService获取增量的SAP端数据
2) 调用方法,将获取到的增量的SAP端数据插入到临时表中
3) 调用存储过程,实现将临时表中的数据,同步到正式表中。
五、同步存储过程技术说明
1. 传入参数 outmsg输出参数、Error 错误输出参数
2. 循环临时表中的数据判断DataStatusMark字段
3. 如果DataStatusMark为“D”直接实现将Enable字段修改为“D”,代表已经将数据删除
4. 如果DataStatusMark为“I”或者为“U”,根据业务主键字段,在正式表中判断数据是否存在,存在的话,直接插入,否则更新。
5. 增加错误判断机制,如果出错,直接抛出异常给Error参数
6. 执行的每一步,必须实现数据数据,通过OutMsg参数接收。
需要同步存储过程示例代码的朋友们,可以到我的资源中去下载相关代码。
张晓斌
2013年6月29日14:20:31 于 上海龙阳路
相关文章推荐
- 系统之间数据抽取的解决方案
- 数据库之间架构和数据的同步,VS2010给了我们实用的解决方案
- 分布式系统数据同步解决方案
- 系统间通讯实现数据信息实时同步解决方案
- 创建Writable Materialized View在DB之间增量同步数据
- informatica 数据库之间的多表数据同步(全量/增量)以及variable的使用问题
- Solr(搜索引擎服务)和MongoDB通过mongodb-connector进行数据同步的解决方案,以及遇到的各种坑的总结(针对solr-5.3.x版本),mongodb和solr实现实时增量索引
- 如何实现两个系统之间的数据同步
- PDA手持终端扫描条码开单打印一体 结合后台电脑系统 数据同步交互解决方案
- 一台MySql服务器不同数据库之间数据同步_解决方案(Java)
- 使用Git在Mac和Windows系统之间进行同步数据
- 企业系统之间数据同步处理
- 创建Writable Materialized View在DB之间增量同步数据
- Centos7.0系统下Rsync+sersync实现多文件数据实时增量同步 推荐
- 数据库增量同步(二台SQL Server服务器的数据库之间增量传输数据)(jaime原创)
- 两个系统之间数据同步
- 创建Writable Materialized View在DB之间增量同步数据
- 异构(分布式)管理系统的数据报送与同步解决方案
- 不同数据源之间的数据同步jdbc解决方案
- 在两个ORACLE数据库之间实现数据增量同步