通用数据交换耦合器开发设计原理探析
2022-02-24乔金海丛磊
◎文/乔金海 丛磊
当前,出版企业的大量数据如机构数据、人员数据、产品数据、政务数据、商务数据、用户数据和内容数据等分散在党和政府部门、出版单位、发行商、图书馆、科研院所、广电商平台、电商平台等等主体当中。现有的数据交换技术往往不能将这些数据有机地结合起来,收入数据较分散,导致相关部门和出版行业主体之间信息不畅,信息系统缺乏互联互通,产业链上的数据不能真正地融合起来,要达到汇聚、高效、共享、联合、协同更是天方夜谭。
而且,当前国内外出版企业普遍采用“FTP+XML”接口模式进行数据交换,此模式开发的接口采用的是“软件代码与业务代码交织在一起”的模式,任意节点业务规则的变化都会导致所有接口需要重新设计。此种数据交换模式无论是研发还是后续的维护和修改都耗资巨大,远远超出了出版企业的承受能力。因此,通过通用数据交换耦合器实现数据(含文件)的安全、可控、准确传递是很有必要的。
一、通用数据交换耦合器设计方案
(一)需求分析
通用数据交换耦合器承担了不同的“端交换方案”中的公有部分,同时接收来自不同出版企业或者第三方服务商所提供的“端交换方案”,对其进行准确地分析处理,再转化为相对应主体所需要的格式,完成对不同信息系统数据的统一部署管理和满足各个信息系统之间的数据交换需求。考虑到目前出版行业以及与其有业务联系的企业所建立的信息系统大都采用关系型数据库存放数据,把通用数据交换的研究锁定在关系型数据库尤其是各种主流的关系型数据库是可行的而且极具代表性的。
通用数据交换耦合器首先是一个异构数据的管理平台,可以连接到各个异构数据库,比如Oracle、SQL Server、Mysql等,并且能够进行实时的新增、删除、修改、查询等操作。其次,通用数据交换耦合器又是相关数据的转换备份平台,在耦合器这个平台上可以把满足条件的数据转化为XML格式的文件备份起来,也可以把所有需要备份的数据转存到对应的数据库中,利用数据库的备份功能统一备份,使其在系统当中流动起来。再次,数据交换耦合器是异构数据间数据传输和交换的控制平台,通过定义数据传输的方法策略,实现定时或临时指定的增量或全部的数据的传输、加载。
(二)功能分析
通用数据交换耦合器需要具有以下具体功能特性:
1.传输可靠。要确保数据的稳定、可靠传输,做到唯一性、不重复、不遗漏,实现高效、稳定、完整传输。
2.接入简便。通过简单的配置就可以连接各种异构数据库,允许同时连接多个不同的数据库,各个应用能够以相对简便的方式接入系统,进行数据的接收、存储、发送、加载,进而简化应用系统开发工作量与开发难度。
3.操纵方便。系统可以方便地读取各个数据源的数据字段,得到对应的表、函数、视图的清单,也可以通过开发好的图形界面直接进行操控;可以直观方便地对数据进行增删改查,也可以采用缓存提取的方式逐段提取数据,不会造成数据量查询过大时出现的死机现象。
4.数据转存。可以把得到的数据转存成XML格式的文件,既方便对数据进行备份,也可以满足把数据转出后再加工的对应要求。
5.灵活交换。在数据交换耦合器中可以定义灵活多样的数据传输和交换策略,借助通用数据交换XML文件或者在任意两个数据源之间按定义好的交换策略进行数据传输和交换。
6.安全管理。通过对用户增加权限,限制用户可操作的数据源,让指定用户只能操作指定的数据源,从而维持系统的相对安全。
7.多种传输模式。支持一对一、一对多的数据传输模式,既能够定时定向传输变更数据,也可以临时指定任意数据的传输。
8.数据安全。能够对传输的数据进行加密、解密,以保证数据安全;请求代理服务,随时响应用户请求,完成各类数据库的查询和新增、删除、修改任务。
9.远程监控。能够远程监控并且维护数据交换系统的运行状态,在系统出现异常情况的时候能够及时提供报警信息。
10.远程配置管理。对数据交换系统进行远程管理,包括定义交换系统之间的连接关系、定义数据路由规则、配置交换系统各功能参数等。
(三)通用数据交换耦合器实现的主要技术问题
1.开发工具和开发环境
耦合器选在Windows操作系统下进行开发,开发工具选择Visual Studio Code。之所以选择此开发工具的原因是它是跨平台的编辑器,支持多种编程语言,并且内置Git集成,方便版本管理。Visual Studio Code代码还提供了代码管理功能,例如转到定义、查看定义、查找所有引用并重命名符号,通过右键单击代码文件可以在VSC中轻松找到这些功能。同时,Visual Studio Code带有内置调试器,这也是其主要功能之一,有助于加速任何程序员的编辑、编译和调试循环。但是在默认情况下,它仅带有支持NodeJS的调试器,该调试器可以调试任何转译为Java的内容,也可以将扩展名用于其他运行时。
耦合器选取Mysql数据库作为平台运行的支持数据库,将基础配置信息放在数据库中,并将数据交换过程当中需要备份的数据备份在Mysql数据库中。
2.耦合器设计过程中的关键点
通用数据交换耦合器在设计过程当中需要明确以下关键点:
(1)XML中的内容、属性、元素等到数据库中字段的映射。
(2)XML中属性的相对关系到数据库中类与类的关系和字段之间的映射关系。
(3)数据交换服务需要根据模型编号在模型库中提取模型定义的XML文件并生成模型对象,然后根据模型定义中的具体数据类型调用特定数据采集插件。
(4)数据采集插件根据模型中定义的数据源及数据集信息并根据具体参数值从数据源中检索数据解释和运行数据交换模型生成中立格式的数据,如果模型中包含脚本则需要在生成过程中按照事件驱动的方式执行脚本。
(5)由于数据源的类型是不唯一的,可以是数据库,也可以是文件,所以数据采集组件需要实现统一接口。
3.耦合器数据流和工作流系统分析交互
数据交换的基本流程是用对应的数据库连接管理工具来访问源数据库,将待交换的数据在一定的转换策略方法下导出为加密的XML文档,最后再通过解密工具和数据库连接将得到的数据存储到相对应的数据库中。在国内外的一些信息系统中,耦合器中要完成的工作流交互和应用越来越受到重视,如IT行业、电气行业等出版以外的行业进行数据交换时,不仅要交换一些静态数据如工作人员信息、商品信息、电气设备信息,还要把对应的工作流应用交换到各级公司当中,让工作流延伸到范围之外,使其既可以在公司内部进行流转,也可以在不同公司之间进行流转。比如电气行业中的一个检修工作流,就需要各个地区、各个部门的人配合起来,有时候甚至还需要上下游的企业单位都融入到这个流程中来。
工作流应用系统对数据交换系统而言是密不可分的,交互主要体现在以下几个方面:
(1)技术人员通过工作流应用调用通用数据交换系统,将数据处理成对方所需要的样子并且交给对方。
(2)第三方技术人员通过通用数据交换系统调用工作流应用进而完成工作流的操作流程,比如激活、注册、管理、阻塞、等待,等等。
(3)技术人员同时在工作流应用和数据交换系统中完成对数据的加密处理,从而形成一个闭环的信息交换流,保护数据的完整性。
4.数据库连接
由于系统初步开发时用的是Mysql数据库,所以数据库连接工具采用Navicat。Navicat premium是一款数据库管理工具,也是可多重连线资料库的管理工具,它具有完备的功能特性,并有以下几个优点:
(1)无缝数据迁移。利用数据传输、数据同步和结构同步可以低成本、轻松快速地迁移数据,并提供详细的指引,可以在各种数据库管理系统之间传输数据。
(2)操作工具多元化。导入向导能将不同格式的数据传输到数据库,或者设置数据源连接并使用 ODBC传输;表、视图或查询结果的数据可导出为 Excel、Access、CSV等格式;使用树视图、JSON视图、数据表样式的网格视图以及一系列数据编辑工具来添加、修改和删除记录,方便编辑数据;通过Navicat提供有效管理数据所需的工具,并确保数据传输顺利进行。
(3)简单的查询编辑。通过可视化查询创建工具进行创建、编辑和运行查询,自动完成代码和自定义的代码段功能,可以让编码更加快速;调试组件能快速寻找、更正PL/SQL和PL/PGSQL编码时的错误,用户可以设置断点、逐步运行程序、查看和修改变量值以及检查调用堆栈。
5.数据的导入、导出及加密
将数据库中的信息导出为XML文件,然后使用XML解析器进行解析,再根据解析的内容把数据按顺序导入到对应的数据库的对应表中。XML解析器提供了两种做法:第一,直接用解析器中已经封装好的方法读写XML文件;第二,用XML解析器中的控件所提供的XML Data创建单元接口,再根据这个单元接口提供的其他接口一起来实现XML文件的读写,但是这种方法的可用度不是很高,所以耦合器在开发时候主要选择前一种方法。
数据的加密则主要采用Base64加密算法。这种算法最初主要存在于电子邮件的传输当中,是一种多用途的网际邮件扩充协议,其出现的意义在于解决邮件传输过程中的加密以及声音、图形图像传输问题。它实现起来非常简单,与其他机密算法相比速度更快,还可以防止和XML的标记符发生冲突。
二、结语
通用数据交换耦合器作为通用数据交换技术的一个载体,旨在解决现有交换接口投入费用高、绑定规则死、应用标准难、保障安全少的共性问题。而通用数据交换技术从以往软件代码与业务代码交织在一起的模式当中取其精华、弃其糟粕,从理论和实践两个层面解决了出版行业数据交换需求与现实条件之间的矛盾,从而推动了出版行业数据交换新生态的构建。