基于ElasticSearch的异构数据迁移方法

2022-03-05 04:31王甫棣王帅赵希鹏
气象科技 2022年1期
关键词:国产化数据库系统

王甫棣 王帅 赵希鹏

(国家气象信息中心电子政务处,北京 100081)

引言

《中共中央关于制定国民经济和社会发展第十四个五年规划和二〇三五年远景目标的建议》提出,坚持创新在我国现代化建设全局中的核心地位,把科技自立自强作为国家发展的战略支撑。同时,面对复杂多变的发展环境及日趋严峻的网络安全态势,“安全可靠,自主可控”成为政府部门信息化建设的必然要求[1-3]。目前在核心器件自主创新领域,已从“基本可用”向“好用易用”迈进,政府部门已率先以办公管理信息系统为抓手,向上健全产业发展核心技术,向下赋能数字中国发展,保障信创产业的高质量发展[4]。

“十二五”期间,中国气象局综合管理信息系统按照“横向到边、纵向到底”的整体思路,按照国、省两级的业务布局覆盖全国所有县级气象局[5],提升了公文传输效率。随着气象宽带网能力进一步增强[6-7],2016年,气象政务管理信息系统(简称“气政通”)1.0开始建设,形成一级集中部署的新格局[8]:管理信息系统业务和数据全国集中管理。2020年,气政通系统建设步入国产化生态能力建设阶段,正在开展自主可控基础资源环境的迁移以及国产化终端环境适配的工作。

1 现状与需求

1.1 应用和数据现状

中国气象局综合管理信息系统采用两级部署方式在气象部门31个省级气象部门以及中国气象局本级和14个直属单位部署了46套系统,每套系统有独立的应用软件和数据库,采用传统IOE架构(即以IBM小型机、Oracle数据库、EMC存储设备为代表的商业IT架构)。

综合管理信息系统的电子公文模块的中各类历史发文、收文和签报的正文表单数据近1200万条。若考虑相关的业务流程信息、用户文件权限信息,合计有超过5000万条历史公文数据,每个单位数据量约在1 TB左右。所有的数据信息均以结构化方式进行存储,包括公文的基础要素如标题、起草人、起草部门、文号、紧急程度、批示审核意见等表单信息,以及以BLOB(Binary Large Object,二进制大对象,数据库中用来存储二进制文件的字段类型)方式存储的正文、附件、分发正文、加密正文、解密正文、参阅件等其他流式、版式文件数据。

2009年开始,综合管理信息系统基于统一的初始版本在各单位进行部署推广,经过近10年的不断升级演进,各直属单位、省级气象局系统中的数据组织和应用逻辑产生了变化。

1.2 数据迁移需求

为了实现国产自主可控目标,迫切需要解决原有各单位的综合管理信息系统历史数据向国产自主可控基础资源环境的迁移,保证在新的国产化终端环境下仍可以正常服务。需要开展以下3方面工作:①开展异构数据的迁移,满足数据的计算和存储环境迁移到国产化或开源基础软硬件平台下的可用性需求;②适配相应的国产化流式和版式文件格式[9](OFD),确保数据在国产化终端上的可访问;③在应用层面还要实现迁移后的数据在新系统可以二次利用,即国产化版本的电子公文系统可兼容历史数据并提供服务。

1.3 问题分析

数据迁移是信息系统升级过程中的一个重要环节, 根据信息系统业务类别、数据容量大小及系统构架的不同,数据迁移的难易程度和所采用的的迁移技术均不相同[10]。对于异构数据迁移,不少国内外研究工作基本是借鉴ETL(extract-transform-load)[11-12]的思想方法,使用第三方软件实现数据库物理数据的迁移,通常需要编写相关程序通过筛选、抽调等一系列过程实现数据迁移和业务应用。从ETL的思路出发,以综合管理信息系统的电子公文模块中的各类历史数据国产化环境迁移为例,可以开发一套迁移工具解决源系统数据共性问题,通过调整工具中的配置文件,对差异性的数据进行特殊处理,再经过SQL(Structured Query Language,结构化查询语言)处理,将所有数据清洗成新的国产化环境存储数据格式。这种方案理论上可行,但从实际操作层面存在以下问题:①成本高。系统存在超过10年的历史数据,即使对于同一单位内部的数据,也因为多年积累的业务变化导致数据描述结构发生变化,要实现各个版本的数据从源系统到目标系统的一一对应,就需要多次的ETL工具差异性调整和清洗,需要投入大量的人力成本。②耗时长。ETL 工具针对系统替换场景中的数据迁移缺乏针对性,并且迁移过程出现的异常难以准确定位,影响执行效率。另一方面,当迁移数据体量过大或者转换逻辑复杂时,ETL工具数据传输效率会急剧降低,这会导致历史公文数据的迁移耗时较长。③损耗大。ETL工具在清洗过程中根据预置的清洗逻辑提取符合规则的源数据信息,这样就会导致可能存在利用价值但不符合规则的数据被清洗掉。因此,使用ETL工具的迁移方法更适合小数据量的转换迁移或者是从生产系统到数据仓库的数据汇聚等场景,不适合应用在异构系统替换的历史数据迁移场景中。

2 基于ES的异构数据迁移方法

2.1 ElasticSearch介绍

ElasticSearch[13](一个开源搜索与数据分析引擎,以下简称ES)是一个分布式、高扩展、高实时的搜索与数据分析引擎,使用Lucene(用于全文检索的开源查询引擎和索引引擎)。ES通过Lucene的存储功能实现数据的存储和索引,使用JSON( JavaScript Object Notation, JS 对象简谱,一种数据交互格式)格式来承载数据模型。考虑到可以通过丰富的QueryDSL(Java开源框架用于构建类型安全的SQL查询语句)查询功能实现数据查询,ES其实也是一种文档型数据库。通过类比方式能更清楚理解ES的体系架构,如表1所示。ES基于一个分布式弹性可扩展集群,对应关系型数据库集群;Node(节点)表示ES服务进程,一台服务器上可以启动一个或者多个Node(ES服务进程);关系型数据库中的数据库(Database),对应于ES中的索引(Index);一个数据库下面有多张表(Table)组成,对应ES索引下面多个类型(Type);一个关系型数据库下的数据由多行(Row)多列(Column,属性)组成,与ES中Type由多个文档(Document)组成相对应。

表1 ES与关系型数据对比结构

2.2 基于ES的数据迁移方法

本文提出一种基于ES中间库的异构数据迁移方法,能够实现本次历史公文数据向国产化安全可靠环境的平滑迁移,利用ES的多重特性能够较好的解决ETL工具方法在异构生态数据迁移时的问题:

(1)目标系统和源系统差异的本质是业务层逻辑发生了变化,进而带来数据层的较大差异。借助ES的动态映射能力,可以动态检测源系统数据字段类型、自动建立表结构以及动态调整字段,较好地屏蔽源系统数据对应用的依赖关系,通过业务的逻辑映射解决数据层的差异问题。对于本次公文数据迁移可以以目标系统的业务逻辑定义一套ES文档规则,再通过数据补齐和校验工作完成各个单位的差异性调整。

(2)ETL工具在进行分析、计算、查找、聚集、过滤、加载各个环境都依赖传统关系型数据的检索能力,处理性能不适应大量的异构数据处理,及时性和一致性差,提取数据存在一定的瓶颈[14]。针对在进行全库全表的系统替换的数据迁移场景下,ES的分布式、可扩展的性能优势可以得到充分体现。

(3)利用ES非关系型数据库存储能力的特性,使得对数据结构要求较低,在迁移过程中能节省大量的异常处理时间。另一方面,ES中存储的每一个条目不需要有相同的结构和类型,因此可以简单的拼装多个JSON形成ES的Document(文档),所有的历史数据信息都可以被记录下来,不会因为要严格满足目标数据库结构而丢失信息。

除以上的优势外,考虑到ES具有开放的QueryDSL能力,使用增(Put/Post)、删(Delete)、改(Update)、查(Get)命令可以满足关系型数据库的各种操作,可以实现向各类国产化、开源数据库的访问操作,有利于历史数据的再利用。同时ES本身是Apache软件基金会下开源项目,基于Java解释性语言开发,可在多个国产化生态体系下实现适配使用。

以电子公文系统数据迁移为例,如图1所示:多个源系统以关系型数据库表存储,可能产生不同的业务数据结构和类型,将整个业务信息表单整合为一个JSON对象,经过中间ES库直接构建显示整个文档,再统一汇聚转到目标数据库。

图1 基于ES中间库的数据迁移示意

此外,在数据层面的字段迁移过程中可能出现3类情况需要处理,即:①源系统存在的字段目标系统因为业务的变化不存在,直接迁移中间库转换时丢弃即可。②目标系统存在字段源系统缺失。比如示例中目标系统增加了新的“备注”数据项,而源系统A没有此数据项,因此在迁移后还需要有数据补齐的策略。③2个系统之间字段不一致,需要建立映射关系,比如示例中不同源系统中“发文说明”和“摘要”字段都统一为“摘要”项。在实际的国产化迁移过程中,由于不同生态体系的差异以及数据服务的需要,重点是针对以下关键查询类数据类型字段创建映射(mapping)规则:关键词(Keyword),需要进行精确查找的数据字段,如一些状态、枚举数据等,将各单位的ID专门进行存储,这样在对数据进行搜索时,各单位的数据可以做到逻辑隔离;数值型,需要进行数字区间查询的数据字段;日期型,需要进行日期区间查询的数据字段;文本型,进行全文检索的数据字段。

2.3 ES中间库的设计

除了解决源库到目标库的迁移外,迁移中间库的ES作为一种非关系型数据库,也可以直接对外提供数据服务,特别是当这些历史数据仅需要提供查询的场景下。仍以电子公文系统数据的中间ES库为例,为提升服务效率,还需要对公文系统中各种公文业务类型建立索引。ES基于倒排索引(inverted index)核心算法,查询性能强于B-Tree(多路搜索树,是数据库中存取和查找文件常用的一种方法)类型所有数据产品[15],尤其是关系型数据库方面。当数据量超过千万量级时,数据检索效率的表现非常出色,同时由于利用分片技术实现分布式性能提升,在气象海量数据的处理已有很多应用[16-17]。

为保证源系统数据在目标系统依然能保持同样的数据访问权限,还需要在ES库补充加载数据的访问控制信息。将源系统的授权访问用户信息封装到一个数组类型中,包含该文件在流转中所有流转过的用户集合,进行搜索时只有流经过的用户才能检索到该文件。

2.4 数据迁移的校验

在整个迁移过程中,需要重点针对数据正确性进行校验,数据转换与迁移包括源系统和目标系统的数据字典整理、系统数据质量分析,基于结构差异性分析和映射关系评估在后期校验的重点关注点,包括:①数据格式检查,检查数据的格式是否一致和可用。②数据长度检查,检查数据的有效长度。特别关注对于char类型的字段到varchar类型的转换。③区间范围检查,检查数据是否包含在定义的最大值和最小值的区间中;例如年龄为300,或录入日期在4000-01-01。④空值、默认值检查,检查新旧系统定义的空值、默认值是否相同,不同数据库系统对空值的定义可能不同,需要特别关注。⑤完整性检查,检查数据的关联完整性。如记录引用的代码值是否存在,特别需要注意的部分源系统为了提高效率而去掉了外键约束。⑥一致性检查,检查逻辑上是否存在违反一致性的数据。

在保证迁移整合后数据条目的完整性、迁移整合后每条数据内容的一致性方面,主要手段包括:①数据迁移过程中对每条数据标记迁移状态。若写入ES库时失败时的记录日志,通过人工比对错误信息进行数据核验。②数据迁移完成后,还会进行一次数据总量以及数据内容的抽样验证。

3 数据迁移服务的构建

3.1 搭建电子公文数据迁移ES中间库

使用3台国产化服务器搭载开源CentOS操作系统部署构建3节点的ES集群。每个节点都设置为主节点、数据节点和协调节点,由集群内部的发现(Discovery)模块选举产生主节点。集群中每个节点都会同步复制分片副本,使得任意一个分片出现问题或节点出现问题都不会影响服务。基于Discovery模块的发现功能可以快速在集群中添加节点,实现横向扩展。应用服务器挂载NAS(Network Attached Storage,网络附属存储)存储以满足文件形式存储。将历史公文的基础数据、流程数据和权限数据存放与ES中,正文附件仍以文件方式存放在NAS中,通过调整现有应用程序来访问ES中的历史数据,整体架构如图2所示。

图2 基于ES中间库的整体部署架构

根据管理信息系统业务集约化要求,气象政务管理平台、信息门户系统以及电子公文系统将采用统一的国产化关系型数据库集群存储各类新闻公告、公文表单、文书档案等业务信息以及相关元数据等管控信息[18-19];所需要的公文附件、图片、音视频以及日志等信息以文件形式存在分布式华为国产芯片NAS存储集群中,如图3所示。由于数据存储逻辑和业务逻辑的分离,考虑到公文历史数据主要用于查询,不对数据进行增删改,可以直接应用ES中间库进行数据服务。

图3 政务管理数据资源规划设计示意

3.2 建立数据查询功能

为实现ES中间库和业务数据库提供无缝隙服务,需要在目标系统封装各类数据源的访问逻辑,系统将国产数据库和ES库分别存储的实时数据和历史数据分开检索,拼接为一个结果集后最终以表单形式向用户推送。同时,在用户端还需要仿造目标系统功能构建数据查询模块并提供以下功能:

(1)模糊查询。仿照关键字全文检索方式,提供和目标系统查询功能相似的查询方式,对日期、紧急程度、拟稿人等字段进行分字段精确查询,查询结果可显示出关键字段和内容片段,命中的内容以颜色标识出。

(2)数据隔离。数据以机构为单位进行隔离,不同机构单位只能查询到本机构单位的数据。

(3)权限控制。根据角色关系控制授权人员数据访问。

3.3 迁移效果

2021年初,配合气政通2.0国产化版本上线,应用ES中间库方案顺利完成第一批试点单位(中国气象局机关、京津冀三省)对原综合管理信息系统的升级,实现了在搭载国产鲲鹏芯片的华为TaiShan服务器和国产统信UOS操作系统上,电子公文系统数据向达梦数据库的迁移适配。其中,完成中国气象局机关1782542条公文数据的迁移,ES中间库转换成功率100%。针对迁移数据,随机挑选15833条数据进行抽样人工核验,覆盖各类不同类型、时间、大小的结构化和非结构化数据,抽样率0.89%。抽样数据比对人工核验的正确率达到100%。

4 结论与展望

本文分析了气象部门政务管理信息系统在国产化自主可控生态体系下数据迁移使用传统ETL方法存在的局限,提出了一种基于ElasticSearch的数据迁移方法,详细阐述了数据映射、中间库构建以及数据校验的技术实现手段。依照此方法快速实现了当前综合管理信息系统电子公文系统向气象政务管理信息系统的历史数据迁移,达到了数据迁移正确性的要求。随着国家对安全的不断重视,一些气象部门重要核心应用也将实现基于开源框架的安全可信要求[20],关键业务从传统X86架构向国产化、安全可靠数据迁移适配工作将是一项十分重要的工作。未来,还将进一步开展从ES中间库向更多数据库[21](虚谷以及其他开源数据库)的迁移适配研究,同时进一步完善迁移过程中安全性、健壮性的设计。

猜你喜欢
国产化数据库系统
Smartflower POP 一体式光伏系统
元器件国产化推进工作实践探索
LNG接收站扩建工程低压泵国产化应用管理
ASM-600油站换热器的国产化改进
WJ-700无人机系统
品“助读系统”之妙
直扩系统中的窄带干扰抑制
直扩系统中的窄带干扰抑制
面向国产化的MCU+FPGA通用控制器设计
数据库