数据交换过程详解前言:本文主要介绍数据交换过程中常用的数据交换方法和方式以及数据交换在新技术下所面对的“挑战”,方便大家深入理解数据交换过程。
普元实施数据交换项目已有多年成功经验,本文也将分享大数据时代数据交换所遇到的问题和应对策略。
目录:1、为什么要进行数据交换2、数据交换存在的问题3、数据交换面临的挑战4、数据交换破解“数据孤岛”5、总结1.为什么要进行数据交换企业大量的IT投资建立了众多的信息系统,但是随着信息系统的增加,各自孤立工作的信息系统将会造成大量的冗余数据和业务人员的重复劳动。
企业急需通过建立底层数据集成平台来联系横贯整个企业的异构系统、应用、数据源等,完成在企业内部的ERP、CRM、SCM、数据库、数据仓库,以及其它重要的内部系统之间无缝的共享和交换数据。
数据是在流通、应用中创造价值的,这就涉及“数据共享”和“数据交换”。
在实施数据交换的过程中,不同的数据内容、数据格式和数据质量千差万别,有时甚至会遇到数据格式不能转换或数据转换格式后丢失信息等棘手问题,严重阻碍了数据在各部门和各应用系统中的流动与共享。
因此,对企业内各系统异构底层数据进行有效的整合已成为增强企业商业竞争力的必然选择。
2.数据交换存在的问题企业对数据服务的需求日趋迫切,如何有效的管理数据、高效的提供数据服务是目前企业对所面临的关键挑战。
目前集团层面客户信息分散,各子公司之间的客户信息无共享。
内部系统获取客户数据来源系统分散,方式多样难以管理,且获取客户数据时效性较低,供数标准不统一,缺乏统一的客户数据服务平台。
1.数据平台中数据内容繁多,难以全面掌控。
通过多年的信息化建设和运营,企业已经建立了完善的业务应用系统,有效的支撑了核心业务的创新和发展,但随着应用系统的增多,数据量和数据应用环境增大,在对这些数据进行使用的过程中逐渐存在不合理、不统一的问题。
2.数据平台中数据的流转和逻辑过程复杂,难以追溯数据来源。
许多企业目前没有统一的数据资产标准,各业务系统中数据质量参差不齐,存在信息孤岛现象,不同部门同一名称数据可能有不同的含义,同一个数据可能又有不同的命名,数据有效交互和共享存在问题。
存在部分系统数据更新不及时的问题,核心业务数据无法朔源,数据的准确性和及时性较低,现有报表在建模时几乎每个报表都要重复建模,人为参与工作过多且层次复杂,无法高效的对流程及指标进行精确监控及分析,数据的利用效率和模型重复使用率较低。
3.业务部门对数据结构和质量无法管控目前数据管控的发展方向和需求是由业务部门提出,但业务人员对公司复杂的系统无法进行全面深入掌握,特别是技术层面。
为了使业务部门从数据结构到数据质量上更好的管控,梳理业务系统与数据库结构关系,成为目前急需解决的问题之一。
3.数据交换面临的挑战随着互联网以及大数据等诸多新技术的发展,传统的数据交换面临着许多挑战。
1. 传统方式一般是以单表数据交换作为单位进行作业开发,随着企业中数据库以及表的增多这种方式的开发效率低下、容易出错。
整库数据交换时工作量巨大2. 传统方式下开发交换模型只能手工一个一个进行,任务多、易出错。
需要一种能够在同一种业务下批量进行开发的模式3. 在进行实时数据同步时需要许多额外的操作配合才能完成,过程复杂,对人员技术要求高,4. 在进行PB级数据交换时传统交换方式效率较低,需要很长时间才能完成。
5. 传统的数据交换工具不具备业务化的开发能力,遇到相同的数据交换需求需要重头开发。
6. 在安全保障上传统的方式是手工编写加密、脱敏的脚本来实现7. 进行跨区域数据同步时需要多种技术配合,实现方案复杂。
4.数据交换破解“数据孤岛”4.1数据标准为保证各应用系统中的代码表对同一业务信息定义一致,确保数据消费系统可以根据业务代码辨别数据的确切业务含义,应提供可配置的功能,基于一定的标准对数据供应系统代码进行转换,使数据存储和数据消费系统按照统一标准来理解数据。
数据交换离不开数据标准,数据未动标准先行是构建优质数据交换的前提。
但现实中许多企业没有做好数据标准,导致这些标准是在进行数据交换或数据采集的时候进行,影响了数据的质量。
一旦出现数据被篡改、被泄露等安全性问题,轻的影响业务开展,严重的泄露核心机密造成企业重大损失。
拷贝的数据难以控制准确性和合规性,拷贝的数据流向哪里也无法控制,是谁拷贝了信息也无法掌控。
一旦出现信息泄露,无法追责。
统一指标数据标准,可以规范业务统计分析语言,帮助企业提升分析应用和监管报送的数据质量,进而提高全行数据质量和数据资产价值。
4.2自动采集元数据数据交换依托于元数据,数据交换的本质是基于元数据的交换。
对半结构化和结构化数据自动采集。
元数据是关于数据、操纵数据的数据和数据库系统的结构和意义的描述信息,重要目标就是提供数据资源的全面指南。
元数据不仅定义了数据交换中的数据模式、来源以及抽取转换规则等,而且整个数据交换系统的运行都应该是基于元数据的,是元数据把数据交换系统中各个松散的组件联系起来,组成了一个有机的整体。
通过自动化的元数据采集完成部门核心职能的业务梳理及其对应的信息资源梳理,编制部门信息资源目录,摸清信息资源有什么、在哪里,提高信息资源共享程度,建立信息资源共享机制和管理制度。
结合企业内部信息系统中的数据现状和企业业务属性、技术属性的要求形成企业数据标准的业务属性和技术属性,制定有效合理的指标数据规范要求。
4.3 数据交换方式和方法4.3.1 不同类型数据交换方式新的数据交换平台提供数据、报文文件等多种数据交换服务,能够快速建立跨硬件平台、数据库和操作系统的可交互操作的数据交换与信息共享平台,交换平台提供了一个开放的环境,支持多样的客户机、数据库、网络和通讯协议,通过可视化配置实现与数据库、文件以及web接口的数据交互。
使得数据交换与业务逻辑的个性有机结合,快速响应数据集成和外部数据交换的需求。
数据交换的方式一般是根据数据的类型来进行区分,如结构化或半结构化的数据可通过ETL的数据交换方式进行,非结构化的数据像压缩文件、电影、图片等采用文件传输的方式进行交换,而对于一些实时性较高的交换一般采用接口形式进行。
例如:restfull、webservice等。
结构化数据交换方法结构化和半结构化数据交换主要有:时间戳同步、全文比对同步、触发器同步、CDC增量同步、全量同步。
这里我们对几种做一个比较:•全量同步全量抽取一般适用于统计分析或无需进行二次更新的业务需求,通过全量抽取一次或多次将业务系统数据源在不做任何操作的情况下直接抽取过来,全量数据抽取方式虽然较简单、直接、快速。
通过系统中的采集组件,无需增加过滤条件,即可对数据库中的全量文件进行一次性采集。
全量采集比较适合于数据业务量小的业务需求。
这种方式不能增量的进行数据同步,对于大数据量下的同步并不适用。
•时间戳同步使用这种方式进行增量数据抽取的前提是源数据库与目标数据库都必须有时间戳字段。
先读取目标数据库中的最大时间,然后以这个时间作为参数从源数据库中读取大于这个时间的所有数据。
基于时间戳的方法需要相关应用系统中的每个表中都有一个时间戳字段,以记录每个表的修改时间。
这种方法不影响原有应用的运行效率,但如果表中没有时间戳的字段却需要对原有系统做较大的调整,这种方式不能捕获到那些并非通过应用系统引起的操作数据变化。
优点:处理速度快,数据处理逻辑相对简单。
缺点:源数据库没有时间戳字段的表需要更改表结构,而且需要源数据库来维护时间戳字段;无法实现数据同步,因为使用时间戳字段无法获取删除后的数据。
•CDC增量同步通过分析数据库日志的信息来捕获复制对象的变化序列。
这种方法不仅方便,也不会占用太多额外的系统资源,对任何类型的复制都适合,不但能提高效率和保证数据的完整性,还能在对等式复制时提供详细的控制信息。
但由于数据库日志的格式是不公开的,因而不得不基于某一固定的数据库日志分析工具或接口,这给异构数据库复制带来了问题。
优点:可靠性强,对源系统没有影响。
缺点:各数据库系统的日志文件绝大部分都是私有的,并且日志格式都不一样,因此捕获这些日志需要有专门有针对性的组件来进行,个别数据库还需要管理员权限进行配合才能实现。
对于没有提供日志分析接口的数据源,开发的难度比较大•触发器同步在业务数据表中创建相应的触发器,当提取、复制对象进行变更(插入、修改、删除)时,由触发器触发提数程序,将变化写入目标数据库中。
这种方案可用于同步复制、增量复制。
优点:借助数据库本身的机制,可靠性强。
缺点:对源系统有影响,需要建立触发器以及临时表或临时数据存储文件•全文比对同步对前后两个时间点取业务数据表的全量进行数据比对,比对出来有差异的部分就是数据增量的部分。
此法可以用于一段时间后进行数据的强制同步,但由于消耗资源较大,因此一般建议用于业务空闲期使用。
优点:对源系统没有任何影响。
缺点:面对海量数据(千万级、万万级)进行比对时有一定的性能问题。
这些同步方式除了全量同步,其他几种都需要业务表有主键。
这些同步的方式各有优缺点,在实际使用中应根据企业系统自身实际情况来采取适合的交换方法。
网上有许多人推荐使用CDC的方式,CDC这种架构下数据写入主存储后会由主存储再向辅存储进行同步,对应用层是最友好的,只需要与主存储打交道。
主存储到辅存储的数据同步,则可以再利用异步队列复制技术来做。
不过这种方案对主存储的能力有很高的要求,必须要求主存储能支持CDC技术。
另外这种方式在一些数据库中需要有DBA的权限配合才能够完成,所以在进行CDC同步的时候首先就需要考虑数据库的环境是否有条件能够完成CDC的配置。
触发器、时间戳、全文比对以及方式都能够支持断点续传,所使用的方式各不相同。
触发器数据同步的过程是先将增量数据同步到临时表中,这个临时表会增加两个字段,一个是所做操作的标识(标识有:insert、update和delete),另一个是自增的列。
在进行同步时是查询这张临时表来进行的,再查临时表时会使用自增的列进行排序进行查询,检查寻到的增量数据通过组件到目标库中根据操作标识进行相应的操作,操作完成后如果成功执行则会去临时表把已经同步的增量数据按照自增列的值进行删除。
如果这个过程中在向目标同步数据时出现异常,则这张临时表中的数据不会被删除掉。
而我们在进行作业触发时一般使用的都是按照频度、计划去定期执行,当前这次同步失败后,在下一次计划触发执行时由于上一次所执行的作业最后并没有将临时表中的作业删除,在这次作业执行时上一次没有同步的数据还在。
所以这次执行时就会从断点位置开始再次进行同步。
时间戳数据同步的过程是首先到目标表去根据时间戳使用数据库中的获取最大值的函数(一般数据库使用MAX函数)来查找时间戳里的最大值,然后使用这个最大值去源表找大于这个值的数据(同时需要根据这个时间戳进行排序),这些查找到的数据就是我们需要同步的增量数据,时间戳这种方式不能区分这些数据是插入还是更新的操作。