项目经验技术总结三:系统业务基础数据维护

本系统开发涉及与其他系统数据交互,重点介绍数据下载。从其他系统数据库下载基本业务数据,首次下载全量插入,后续根据记录最后更新时间判断新增和更新数据。还提出建表 C 记录更新时间提升性能,同时给出具体方案及注意事项。

在本系统开发中,遇到了与其他系统数据交互的情况,包括数据下载和数据回写。(后者本文不做介绍)。数据下载即本系统需要从其他系统的数据库下载基本业务数据,并且当数据源更新后,本系统的业务基础数据也需要更新(不要求实时),数据源有几个表的基础业务数据将近100万条.

为了便于描述,下面只讨论一个表,数据源表记为A表,下载到本系统的表记为B表

思路:
从A表下载数据到B表的处理可分为2步:
1.第一次下载
第一次下载应是把A表相应的数据全部插入到B表(系统初始化时完成)
此处理比较好办,一条sql就能搞定。
2.第二次(及以后)下载
分2种情况考虑:A表新增数据和原有数据更新。
为了判断哪些数据需要处理,可根据A表中记录的最后更新时间(作为数据源的系统一般有记录最后更新时间字段,以下记为LastUpdateTime)做判断:
  即如果A表中各记录的LastUpdateTime的值大于B表数据的LastUpdateTime值视为需要处理的数据:
a.当此类记录在本系统不存在则为新增业务数据
b.当此类记录在本系统存在则为本系统需要更新的数据

当然,如果A表中那些LastUpdateTime的值不大于B表数据的LastUpdateTime值则不需要处理。
   
因此,在此情况下下载数据可分2步进行:
第一步把属于新增的记录下载到本系统
第二步对需要更新的数据进行更新
需要注意的是,无论是数据插入还是数据更新,在本系统中都需要记录或更新其LastUpdateDate,否则将无法在以后下载时和A表中的记录的LastUpdateTime值进行比较
 更新B表中的LastUpdateTime可将所有记录的LastUpdateTime全部更新,但这样一来,数据量较大时更新起来也会耗费一定时间。为此,可单独建一个表C并利用一条记录保存B表的最后更新时间,这样更新时只要更新表C,也就只需要更新一条记录,可获得性能提升。

根据以上分析,我们采取了如下方案:
1.在本系统中建立和数据源内各基础数据表结构类似(只取需要的数据)的表
2.建立一个表C,专门用来记录本系统中各业务数据表最后更新记录日期,表结构如下所示:
Create Table C
(
tableName,varchar(50),
LastUpdateDate Date
)
3.完成数据插入或更新数据时,根据处理的数据每次更新C表中相应记录的LastUpdateTime

需要注意的是:
1.更新每个表的LastUpdateTime时,其时间不能采用本系统的时间,而应该取数据源所在系统的时间。
2.当基础表小(业务数据量少)的时候,可在每次执行下载时删除目的表中的数据并重新下载,则不需要利用本文中采用的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值