第41卷第9期2018年9月
测绘与空间地理信息
GEOMATICS&SPATIALINFORMATIONTECHNOLOGY
Vol.41ꎬNo.9Sep.ꎬ2018
基于XML中间件的多源异构水污染源
数据集成方案探讨
翟 珂1ꎬ2ꎬ李东霖1ꎬ2ꎬ李新锋1ꎬ2
2.烟台市智慧城市及物联设施工程技术研究中心ꎬ山东烟台264670)
(1.山东正元数字城市建设有限公司ꎬ山东烟台264670ꎻ
摘要:为了解决水污染在线监测监控平台搭建过程中的异构数据集成和共享问题ꎬ本文探讨了以XML和中间
件技术集成多源异构数据库的框架ꎬ重点分析了数据转换、中间件和XML封装3个方面ꎬ实现用户对多源异构数据库的数据访问和共享ꎬ为下一步平台的建设提供决策支持ꎮ关键词:多元异构数据ꎻXMLꎻ中间件ꎻ数据集成
中图分类号:P208 文献标识码:A 文章编号:1672-5867(2018)09-0121-04
IntegrationofMulti-sourcedHeterogeneousWaterPollution
DatabaseBasedonXMLMiddleware
(1.ShandongZhengyuanDigitalConstructionCo.Ltd.ꎬYantai264670ꎬChinaꎻ
ZHAIKe1ꎬ2ꎬLIDonglin1ꎬ2ꎬLIXinfeng1ꎬ2
2.YantaiSmartCity&InternetofFacilitiesEngineeringResearchCenterꎬYantai264670ꎬChina)
Abstract:ToresolvethedataintegrationamongheterogeneousdatabasesduringthedevelopmentofwastewatermonitorplatformꎬthisdatatransformꎬmiddlewareandXMLwrapper.Itcontributestothedataaccessandshareꎬandsupportsfortheplatformdevelopmentnext.
Keywords:heterogeneousdataꎻXMLschemaꎻmiddlewareꎻdataintegration
papercameupaframeusedforintegratingdatafromheterogeneousdatabasesbasedonXMLandmiddleware.Itmainlydiscussedthe
0 引 言
随着计算机技术、网络技术的发展ꎬ数据共享成为当前社会管理的发展目标ꎮ2016年ꎬ下发«关于开展第二次全国污染源普查的通知»[1]ꎬ要求建立健全各类污染源档案和各级污染源信息数据库ꎬ而目前各地相关机构已经获取并积累了大量的污染源数据及历史数据ꎬ大部分机构也搭建了专属的信息服务系统、管理系统和数据库ꎬ因其面向用户和数据库结构不同ꎬ信息共享难以实现ꎬ“信息孤岛”现象普遍存在ꎮ将现有各部门的孤立数据集中起来ꎬ忽略数据库的异构性ꎬ提供给用户一个完整
-
的数据源模式和一致的访问接口[23]ꎬ从巨大的数据资源中有效地获取所需的信息ꎬ既可以提高数据的利用率ꎬ也可以减少重复工作带来的资源浪费ꎬ对水污染监控和防
收稿日期:2017-08-01
治意义重大ꎮ
1 异构数据集成方法
近年来ꎬ国内外的专家学者对多源异构数据集成技术进行了大量的研究ꎬ提出了许多解决方案和策略ꎬ目前ꎬ异构数据库集成的方法有模式集成、数据仓库、中间件技术和XML技术ꎮ数据转换法[4]是在不同数据源质检使用定制专用的转换软件(EDI)进行数据交换ꎬ实现技术较为简单ꎬ但由于实现成本高ꎬ难以保持数据的一致性ꎬ因此使用很少ꎻ数据仓库是对数据进行集中管理和存储ꎬ数据集成质量高ꎬ并且访问效率高ꎬ一般用于决策支持系统ꎬ但是数据重复存储ꎬ难以更新ꎬ系统的可扩展性差ꎻ中间件技术使用全局模式ꎬ关键任务是构造中间件ꎬ每个数据源对应一个包装器ꎬ中间件通过包装器与各个数据源
基金项目:2017年度烟台山东半岛国家自主创新示范区发展建设资金项目(ZCQ17117)资助
作者简介:翟 珂(1988-)ꎬ女ꎬ山东淄博人ꎬ助理工程师ꎬ硕士ꎬ2015年毕业于中国科学院地图学与地理信息系统专业ꎬ主要从事遥
感与GIS方面的应用研究工作ꎮ
122
测绘与空间地理信息
2018年
进行交互ꎬ集成非数据库形式的数据源ꎬ具有数据源自治性好ꎬ查询实时、配置灵活等优点ꎻXML
[5-6]
是WEB上的
主要数据交换格式之一ꎬ集成不同数据源数据ꎬ使数据信息能在异构平台之间平稳无障碍的传递和共享ꎬ其自描述性、可扩展性、表达内容与形式相分离等特性使它成为异构数据库数据交换的首选语言ꎮ
本文利用XML技术在异构数据库集成中的显著优势ꎬ基于XML技术建立统一的中间件ꎬ将来自不同结构的污染源数据库中的数据通过计算机网络转换到这个中间件中进行交互和处理ꎬ使用户通过水污染在线监测监控平台实现对多个分布式存储的数据库进行访问ꎬ如同访问一个数据库一样ꎬ提高信息资源的使用率ꎬ实现数据共享ꎮ
2 数据集成与处理
2.1 数据库架构
数据库架构如图1所示ꎮ
图1 数据库架构Fig.1 Databaseframe
门、水利部门1)用户层ꎬ为其提供区域内水域的地理信息:根据项目设计方案ꎬ平台主要面向环保部
、污染源数据和实时动态污染数据ꎬ并且向社会公众提供查询端口ꎬ也可面向区域内企业园区查询相关信息ꎮ各种查询接口2)应用层ꎬ:可与中间层进行数据交互位于用户层和中间层之间ꎮ
ꎬ可为用户提供库系统3)中间层ꎬ向上为用户和访问接口提供统一的全局模式:系统的核心结构ꎮ向下连接各异构数据
ꎻ完成数据交换ꎻ实现应用与数据的分离式部署ꎮ中间件由两部分组成:①查询处理模块分析并分解用户请求ꎬ并分发到不同的XML封装器中ꎬ汇总查询结果并反馈ꎻ②XML封装器从不同数据库中提取查询结果ꎬ并汇总至查询处理模块ꎮ
如ORACLE、SQLServerꎬAccess、DB2、MySQL4)数据库层:分布式存储ꎬ兼容各种关系型数据库等ꎮ
ꎬ
22.2.1 .2关键技术
不同数据库结构不同数据转换
ꎬ数据属性字段代表的含义也
不同ꎬ存在同一字段不同属性、不同字段同一属性的现象ꎮ全局统一的数据字典可建立个数据类型和计量单位之间的对应转换关系ꎬ是实现数据透明性、操作透明性以及各种全局操作的基础ꎬ向用户提供统一的数据视图[7
-8]
ꎮ化工企业属性见表1ꎬ化工企业全局属性见表2ꎮ
表1 化工企业属性表Tab.1 Chemicalindustryattribute
列名类型
NameBSM
Interger(10)Char(50)企业名称
标识码意义
Name_frdbZcriChar(20)IDInterger(10)Date企业法人代表姓名
注册日期parcelInterger(15)Char(20)要素代码隶属宗地StructureLocationQybh
Char(50)企业编号坐落LayersInterger(10)Char(20)Float(15)房屋层数结构Area_coverAreaFloat(15)建筑面积Date_change
Date占地面积变更日期
表2 化工企业全局属性表
Tab.2 Chemicalindustryglobalattributes
列名类型意义BDC_number不动产单元号Name_frdb
Name
Interger(20)Char(50)Char(20)企业名称
Date_registerIDInterger(20)Date
企业法人代表姓名企业注册日期Parcel_numberID_parcelInterger(20)要素代码Interger(20)宗地单元号
宗地代码Interger(20)Char(20)企业编号StructureLocationQybh
Char(20)坐落Area_buildingLayers
Interger(10)房屋层数结构Area_coverFloat(15)建筑面积Date_change
Date_jg
Float(15)Date占地面积Date
竣工日期变更日期
2.2.2 将关系型数据库同中间件
XML文档中的数据进行交换有着
很强的现实意义ꎬ但由于两者本身数据结构不同ꎬXML文档中的数据是不能直接存储在关系型数据库中的[9]本文使用自定义的XML表示源数据ꎬ中间件所使用
ꎮ的XML1)定义数据结构文件传递数据分为(表、视图等3种格式)结构:
:通过定义表中字
第9期
翟 珂等:基于XML中间件的多源异构水污染源数据集成方案探讨
123
段的属性状态ꎬ数据库端解析器读取数据库信息ꎬ翻译次类型文件ꎮ解释器可识别所有标准类型ꎬ及用户自定义类型ꎮXML数据结构属性见表3ꎮ
表3 XML数据结构属性表Tab.3 XMLdatastructureattributes
字段属性字段属性名
默认属性值
TypeEssentialLen
类型长度必需
否PrecisionCanNull允许空值PrikeyDigit小数位数精度是默认值主键否
AName
Default
别名部分代码如下①:<Tables>
数据库表:<TableEssential<BSMBSM>
=\"TypeNametrue\"==CanNull\"\"Int\"HGQY\"Precision>
=\"false\"=AName\"10\"=PriKey\"标识码=\"\"true\">AName<Name=Name>\"企业名称Type=\"\"string\">
Len=\"100\" CanNull=\"true\"true\"<Name_frdb<AName=\"企业法人代表姓名Type=\"string\"Len\"=\"100\" CanNull=\"false\"ZcriName_frdb>
>
Type=\"date\"Essential=\"true\"CanNull=<AName/Zcri>=\"注册日期\">
\"AName<ID=ID>\"Type要素代码=\"int\"\">
Precision=\"10\" CanNull=\"true\"AName<parcel=parcel>\"隶属宗地Type=\"\"string\">
Len=\"20\" CanNull=\"true\"AName<Qybh=Qybh>\"企业编号Type=\"\"string\">
Len=\"20\" CanNull=\"true\"true\"<LocationType=\"<AName/Location>=\"坐落\">
string\"Len=\"50\" CanNull=\"true\"<Structure<AName=\"Type结构=\">
\"string\"Len=\"20\" CanNull=\"<Layers/Structure>
Type=\"int\"Precision=\"10\" CanNull=\"true\"<ANameCanNull<Area/Layers>=\"房屋层数\">
=\"true\"Type=AName\"float\"=\"Precision建筑面积=\"\">
15\"Digit=\"2\" < CanNull<Area_cover/Area>
Type=\"float\"Precision=\"15\"Digit<<Date_change/Area_cover>=\"true\"AName=\"占地面积\">
=\"2\"=\"变更日期\">
Type=\"date\" CanNull=\"true\"AName<<②XML//Table>
Date_change>
<BDC_number<TableName中间件全局属性表=\"HGQYQJSX\":>
true\"Type=\"Int\"Precision=\"单元号Essential=\"true\"CanNull=\"false\"AName10\"=PriKey\"不动产=\"\"BDC_number>
>
AName<Name=Name>
\"企业名称Type=\"\"string\">
Len=\"100\" CanNull=\"true\"true\"<Name_frdbType=\"<AName/Name_frdb>=\"企业法人代表姓名string\"Len\"=>
\"100\" CanNull=\"=\"false\"<Date_register<AName=\"Type注册日期=\"date\"\">
Essential=\"true\"CanNullAName<ID/Date_register>
=ID>
\"Type要素代码=\"int\"\">
Precision=\"10\" CanNull=\"true\"true\"<ID_parcelAName=\"隶属宗地Type=\"string\"\">
Len=\"20\" CanNull=\"<Parcel_numberID_parcel>
=\"true\"<AName=\"宗地单元号Type=\"string\"\">
Len=\"20\" CanNullAName<Qybh/Parcel_number>
=Qybh>
\"企业编号Type=\"\"string\">
Len=\"20\" CanNull=\"true\"true\"<Location<AName/Location>=\"Type坐落=\"\">
string\"Len=\"50\" CanNull=\"true\"<StructureType=\"<AName/Structure>=\"结构\">
string\"Len=\"20\" CanNull=\"true\"<Layers<AName/Layers>=Type\"房屋层数=\"int\"\"Precision>
=\"10\" CanNull=\"2\" <Area_buildingCanNull=\"true\"TypeAName=\"float\"=\"建筑面积Precision\">
=\"15\"Digit=\"124
测绘与空间地理信息
2018年
Area_building>
CanNull<Area_coverType=\"float\"Precision=\"15\"Digit=\"<=\"true\"AName=\"占地面积\">
2\"竣工日期<Date_jg/Area_cover>
\">
Type=\"date\" CanNull=\"true\"AName=\"<=\"变更日期<Date_change/Date_jg>
\">
Type=\"date\" CanNull=\"true\"AName<Date_change>数据2)/Table>Tables>
ꎬ向解释器查询具体表存贮记录数据:存储具体数据记录、视图、字段的具体信息ꎬ应用程序读取
ꎮ
部分代码如下<Record<Items>Table:
=\"HGQY\"><Item>
<BSM><Name>标识码<Name_frdb>公司名称BSM>
法人代表Name><Zcri>Name_frdb><ID>注册日期Zcri><parcel>要素代码<Qybh>元宗地<ID>
/<Location>企业编号<parcel>
/Qybh><Layers><Structure>位置结构</Location>
Structure><Area><Area_cover>面积总层数Area>Layers><<Date_change>占地面积/Item>
变更日期<Area_cover>/Date_change><3)/Items>
Record>
SQL语句用户自定义数据ꎬ由解释器适配各个数据库:自定义数据库操作参数ꎬ负责执行ꎬ如各种
部分代码如下<peration>:ꎮ
<Sqls><Sql>select<Sql>
Sql>∗fromHGQYꎻ<delete/Sql>
fromHGQYꎻ
/Sqls>
2.2.3 <Operation>
在中间件中XML封装
ꎬ通过XML包装器对应每一个数据库ꎬ实
现与各个数据库内信息的连接ꎮ本文中ꎬ包装器用来执行查询处理模块分解后的用户数据请求ꎬ当用户通过某一接口发起查询请求时ꎬ查询处理模块会对用户请求进行分解ꎬ并将分解结果分配到不同的包装器ꎬ通过映射关系ꎬ在对应的数据库中进行查询ꎬ并返回查询结果至包装器ꎮ查询结果先在查询处理模块中进行合成并缓存ꎬ然后统一反馈到应用层ꎬ使用户获取反馈结果ꎮ由于包装器与数据库一一对应ꎬ在设计包装器时必须考虑到数据源的可扩展性ꎬ以便后期可进一步进行系统升级ꎬ兼容更多类型的数据库ꎮ
3 结束语
建立多源异构数据库是水污染在线监测监控平台建设中迫切需要解决的问题ꎬ是实现现有大量数据在不同部门之间的有效集成和实时共享的关键步骤ꎮ本文根据相关文献ꎬ分析了现有数据集成的各种常规手段ꎬ并探讨了基于XML中间件技术的异构数据集成方案ꎬ对项目下一步的数据整合和处理以及平台搭建提供决策支持ꎮ
参考文献:
[1] 源普查的通知.»[G].印发北京:«关于开展第二次全国污染ꎬ2017.
[2] 张建江的研究ꎬ[J].李学明信息技术.基于ꎬXML2010(9):49的异构数据库集成中间件-53.[3] 王蕤[J].ꎬ计算机工程与设计陈庆奎.异构数据库集成中间件的研究与实现[4] 吴国新ꎬ吉逸.EDI技术研究及其实现ꎬ2008ꎬ29(22):5[J].计算机研究738-5740.与发展ꎬ1998ꎬ35(2):108-113.
[5] 李军怀应用研究ꎬ周明全[J].计算机应用ꎬ耿国华ꎬ等ꎬ.XML2002ꎬ在异构数据继承中的22(9):10-12.[6] 齐艳珂建电脑ꎬꎬ肖连2007(6):35.
ꎬ高洁.异构数据集成技术综述[J].福[7] 宋晓梁服务器模型中的应用ꎬ刘东生ꎬ许满武[J]..计算机应用中间件及其在三层客户机ꎬ1999ꎬ19(7):
/
[8] 张35伟-38.
华ꎬ祁新.中间件在远程调用技术的研究及在[9] 黄宽娜1999ꎬTreeSVR20(10):49中的应用-53.
[J].同济大学学报(医学版)ꎬ
西南大学学报ꎬ刘徽.基于:自然科学版XML中间件的异构数据库集成ꎬ2010ꎬ32(9):141-146.[J].
[编辑:张 曦]