马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
“2018年度中国保险行业信息化建设典型案例优选示范活动”案例选编系列
综述 为满足业务数据分析处理的效率要求,针对Informix数据库的增量数据同步技术难点,公司自主开发了具有自有知识产权的基于Informix数据库日志的增量数据捕获同步系统。 由于Informix逻辑日志为厂商专用技术,本系统攻克厂商的技术壁垒,根据数据库系统日志生成增量日志并进行数据的快速同步。系统对运行环境要求低,并且对生产应用不具有侵入性,同时通过配置文件配置分析源及目标,提高系统的通用性。 系统实现了一套从数据库系统日志分析到业务数据同步整个流程的通用数据处理套件,包括日志读取服务、日志分析工具、增量日志同步工具、业务数据同步工具、增量日志表创建工具等。 目前系统已成功应用于人保财险江苏分公司微信服务号等多个应用,取得了预期的效果。 一、项目建设背景及目标 (一)项目背景 对业务及其它数据进行加工分析,为公司各层级业务管理和决策提供科学依据,是信息技术的重要工作,也是公司核心竞争力的体现。然而传统的Informix数据库对如此业务规模的数据进行统计分析已力不从心,因此公司引入了Greenplum分析型数据库,每天需要根据增量及主从表的逻辑关系将当天新发生的业务数据从Informix数据库同步到Greenplum,因此迫切需要一套增量数据捕获机制。 另一方面,业务规模的扩大,行业竞争的加剧,满足客户多样化需求,提升客户服务能力,提高业务处理性能,保障系统稳定运行显得尤其重要。在应用系统演化过程中,进行数据分层,建设近线数据库、剥离历史数据是一个重要的技术手段,虽然数据库系统附带了同步机制,但并不能完全满足上述系统建设要求,因此需要建设一套高效稳定的数据同步系统。 由于业务系统实现机制、系统运行性能保障等条件限制,在目前的数据库环境中无法使用诸如时间戳、触发器或CDC等方案进行增量日志的提取。通过对多个方案进行比较分析,我们最终选择对数据库系统日志进行分析,对一些关键数据表提取增量数据,满足业务统计分析及其他应用的需要。 (二)项目目标 满足业务数据分析处理的效率要求,基于Informix数据库日志的增量数据捕获及同步,实现从Informix日志分析到业务增量数据的同步全过程处理。 二、项目主要创新点 (一)难点和问题 1、系统日志的分析 数据库系统日志使用的是厂商内部格式,而且无公开技术资料介绍该格式,这就需要做针对性的测试,然后对内部格式进行解析并验证。项目对现有承保、理赔等核心系统及分公司个性应用Informix数据库逻辑日志进行了分析,并通过模拟对分析结果进行测试及验证。 2、日志增量处理轨迹的处理 系统基于上次日志分析的处理轨迹进行增量日志分析,系统每次分析日志后记录当前已处理日志的逻辑地址,以便后续增量分析。 由于数据库系统日志读取时,当前日志中可能存在未结束的事务,对此,系统将该部分未结束事务进行暂存,在后续分析时如果该部分事务进行了回滚,则直接丢失,否则确认有效数据。 3、数据分布的研究 为提高效率,绕过Informix数据库管理系统,需要直接读取磁盘数据。项目实施时,我们对Informix系统表进行深入研究,理清数据表之间的关系,形成逻辑日志及数据记录在系统表中记录轨迹,最终实现逻辑日志及数据记录的快速读取。 (二)采用的方法和工作机制 项目将任务分解为日志解析、数据分布分析、数据传输、数据同步及周边工具等五个部分,分别进行研究、验证,并根据研究结果进行相应系统模块的开发及部署。 (三)关键创新点 攻克厂商的技术壁垒,获得数据库系统内部数据格式,为日志分析与数据同步奠定基础。 开发了数据库日志页及数据页读取代理,解耦数据库磁盘读取与日志数据分析,避免在数据库服务器上部署日志分析系统,降低日志分析对数据库服务器的影响。 引入消息中间件,实现数据在不同环节的流转。 通过配置文件配置分析源及目标,提高系统的通用性。 三、项目主要功能介绍 (一)系统日志解析 项目以批处理或实时方式获取Informix数据库逻辑日志增量数据,对获取的逻辑日志页进行解析,获得数据记录增加、修改、删除的详细信息,形成数据记录文本、数据表主键文本、数据操作SQL语句,最终输出到文件,或消息中间件等第三方系统。 (二)增量数据同步 日志解析获得分析结果后,数据同步工具从结果文件或消息中间件中读取分析结果,将分析结果转换为SQL语句,在目标数据库中重新执行,完成数据同步操作。 数据同步也支持从完成数据记录中截取主键值,将主键值加载到数据变更轨迹表,方便应用系统进行增量数据的加工。 数据同步时系统通过数据聚合提高加载效率,实现高效的数据加载。 (三)配套工具支持 为提高系统的易用性,系统提供了一系统的配套工具,主要包括: 数据表创建工具:根据源数据表元数据,在目标表中创建相同结构的数据表及相应的索引。 SNAP表创建工具:根据源数据表元数据,创建包括数据表主键的变更轨迹表; 数据转储存档:将消息中间库的消息备份为压缩存档文件,并支持存档文件的格式转换。 四、项目技术方案 (一)日志分析 日志分析包括原始数据读取代理和日志分析主程序两部分。 通过读取代理,解耦数据库磁盘读取与日志数据分析,避免在数据库服务器上部署日志分析系统,降低日志分析对数据库服务器的影响。 日志分析主程序使用SQL查询数据库的系统信息,获取新增的逻辑日志信息,并通过读取代理读取逻辑日志页。程序对日志页进行指令切分识别、数据记录解析,形成分析结果并输出到指定的目标。 (二)数据传输 项目包括两部分数据的传输。 为减轻数据库系统的压力,提高系统的灵活度,项目将数据库原始日志及数据页的读取与日志分析进行解耦,数据库服务器部署读取代理,日志分析部署在其他服务器,通过读取代理读取数据,基于C/S架构通过Socket进行数据通讯。 分析完成的数据需要同步到目标端,以便进行数据加载。项目采用成熟的消息中间件,日志分析时将分析结果发布到消息中间件,数据加载时从消息中间件消费消息。 (三)数据同步 数据加载实时从消息中间件获取增量数据,对加载的数据进行分类,并行批量加载到目标数据库,并通过数据聚合提高加载效率。 五、项目效果 (一)主要成果 通过项目的实施形成从数据库系统日志分析到业务数据同步整个流程的数据处理套件,包括日志读取代理、日志分析工具、增量日志同步工具、业务数据同步工具及增量日志表创建等配套工具等。 (二)项目效果 分析数据库系统日志对数据库环境要求低,对现在系统不具有侵入性,而且不影响业务生产数据库性能,能较好地满足增量数据提取及数据统计分析的需要。此外,通过系统日志产生增量日志还能提取无触发器日志的数据,有效地避免了触发器加主从表关系方式带来的限制以及多提的冗余数据,减少整体的数据量,提高了效率。 目前江苏分公司已使用该系统对承保、理赔和财务实例主要数据表的变更情况进行了分析,形成增量数据缓存库,有效解决了数据回传影响数据时效的问题。数据统计分析方面,该项目在江苏公司整个经营管理数据支撑方面起着至关重要的作用。在微信服务号及其他应用中,数据时效及准确性较项目实施前明显提高,提升了客户满意度。 项目还在其他分公司得到推广使用,提高了当地的数据支持能力。 来源:中国保险信息化
|