银行应用系统间的数据交换
一次性数据抽取
商业银行要接受人民银行和银监会的监管,常常会被要求不定期地提供一次性的交易统计报表,这就需要信息部门配合业务部门提供原始的交易数据用于完成报表,一次性数据提供可以有几个途径完成:
1. 利用企业存储系统提供的镜像数据库
核心交易系统往往有独立的大型存储基础设施,这些存储系统除了拥有海量存储能力、高速的I/O外,还具有瞬时快照功能,能将交易系统的某个时间点的数据库镜像与交易数据库分离,从而为开发或者采集提供绝好接入点。此时一次性的数据提取可以利用镜像数据库,直接使用数据库提供的卸载数据功能得到要采集的数据,比如informix的load/unload。
2. 利用核心的历史数据备份
如果管理部门要求的一次性提供的数据在镜像数据库中已经删除,常见的做法就是重新恢复交易系统的某个时间点的历史数据备份,然后从中得到一次性数据。
3. 利用ODS子系统
有的银行具有ODS系统,在其中会缓存一段时间的原始交易数据,比如传票、分户账明细、一些初步加工过的统计数据等。用ODS提供一次性数据是很好的选择。因为初步加工过的统计数据往往能减少业务部门生成统计报表的时间。
4. 利用数据仓库环境
数据仓库环境是一次性报表最好的数据源,因为前端的BI工具可以很方便地定制各种复杂的、灵活的报表,而且利用BI工具可以方便地从数据仓库中进行钻取、切片、数据挖掘等各种高级应用。业务人员不需信息部门的配合就可以直接生成报表。遗憾的是,数据仓库环境对于大多数国内银行来说并不存在,而应用成功的企业级数据仓库更是凤毛麟角。
数据抽取中的性能优化
对于大批量数据采集,性能的调整可以有以下几个方面可以考虑:
1. 适当的并行度
目标系统从源系统抽取的库表往往不止一个,如果能够对多个目标表进行同时装载,在采集性能上将有很大的提高。但并发度不仅要受制于数据采集软件本身,更多的是受制于采集服务器的硬件配置,比如CPU的数量、内存、硬盘等。
同样,对于源系统的同一张表,可能有多个目标系统需要从中采集数据,那么可以考虑在一个采集作业中读取数据源一次后,同时写多个目标。利用Datastage等采集工具,可以在一个采集作业中实现作业内的并行。
2. 监控历史运行记录,重点优化大表
大表的定义并没有统一的标准,但一般来说,记录总数超过1000万的表,就可以认为是大表。优化的办法是对于数据源的筛选字段建立索引,这样筛选的效率就会高很多。另一个办法从SQL的语句上进行优化。对于大表,可改进增量采集的逻辑,如果缺乏增量采集的筛选字段,可以考虑在数据源数据库中安装触发器。宽表也是个很常见的(字段数目很多的表属于宽表),因为每一条记录的尺寸都很大,所以这也容易导致采集时间变长,优化的办法是分析目标系统,目标系统不需要的内容就不要送到目标系统,这样不仅节约时间,还节约目标系统的硬盘。
3. 避免使用低效的数据库接口技术
采用通用的数据库接口技术往往会导致低效,比如ODBC,所以对于不同的数据库,如Informix、Sybase、SQL Server、Oracle、DB2等,应该采用专用的数据库接口,这可能会比ODBC等接口快上几倍。
4. 压缩和解压缩
如果数据从源系统中抽取出来后,要生成文件传送给目标系统,那么在低速的网络上,文件尺寸过大可能造成性能很低,导致多次中断重传。比如2G以上的大文件,传送起来就比较麻烦,可以考虑压缩和解压缩,这样在传送上会节省时间,但是压缩和解压缩又会占据时间,这要在真实的网络环境中实测后权衡,在高速的网络中,比如千兆网中,大文件不是问题,就不需要压缩/解压缩。
5. 控制数据采集事务的大小
目标系统数据库一般有事务,事务太小或太大都不好,可以找到一个合适的事务大小,比如每插入目标系统1000条记录提交一次。应保证不会在装载大表时耗尽目标系统的锁资源。 6. 分析可能的性能瓶颈
对于数据采集任务,要建立运行日志,定期分析性能瓶颈,持续改进。
7. 采集任务分等级
采集性能问题可能是因为任务安排得不够科学。将紧要的采集作业安排在优先调度的时间点上,比如每天都要开门营业的系统就必须保证优先采集。
8. 采集任务错时调度
采集服务器上的采集任务可以按照时间窗口的大小先后顺序进行错时调度: 比如一次性采集任务或者备份任务就可以考虑在采集服务器空闲的时间来处理。
全部的例行采集任务全部使用Datastage Job形式实现,在开发环境下开发测试完成后部署到采集服务器上,采集作业的日志记录在MS SQL Server数据库运行日志表中,由采集监控程序实时扫描日志表探查状态。
每天的例行采集运行过程是这样的: 当核心系统日终业务处理完毕,同时数据源2的文本上传完成,由机房值班人员启动采集总调度,总调度首先将数据源2的文本装入数据库,然后开始向各个目标系统并发传送数据,采集监控每天晚上显示采集作业的运行过程,当任何一个目标系统采集任务运行完毕,会在目标系统数据中的特定表插入一条完成纪录,这样目标系统就可以继续自己的批处理。如果采集监控显示运行错误就报警,由机房人员通知技术人员远程拨入处理故障。
0
相关文章