第33卷第1期 西华大学学报(自然科学版) 2014年1月 Vo1.33,No.1 Journal of Xihua University・Natural Science Jan.2014 ・机电工程・ 油田数据离线采集系统研究与设计 李 莉 ,殷志强 ,张锡岭 (1.中国石油大学(华东)计算机与通信工程学院,山东东营257061;2.胜利油田物探研究院,山东东营257000) 摘要:针对油田生产中数据采集的实时性需求和现有离线采集系统存在的维护工作量大、通用性差、上传不 及时等问题,在已有采集系统的基础上,提出一种通用的离线采集系统。该系统采用组件的开发方式和XML文件 的数据存储和映射方式,在本地存储加密数据文件,在网络正常的情况下进行传输或者通过手工报送的方式传输 到服务器,并按照定制格式对应入库。该系统在很多在线采集中均适用,并且已经在油田生产采集系统中得到 应用。 关键词:离线采集;组件;DOM;XML 中图分类号:TP274;TP311 文献标志码:A 文章编号:1673—159X(2014)01—0017—06 doi:10.3969/j.issn.1673—159x.2014.01.005 、 Research and Design of System of Oilfield Data Off-line Acquisition LI Li ,YIN Zhi—qiang ,ZHANG Xi—ling (1.College ofComputer and Communication Engineering,China University foPetroleum(Huadong),Dongying 257061 China; 2.Geophysical Prospecting Research Institute,Shengli Oilifeld,Dongying 257000 China) Abstract:To meet the real・time requirements of data acquisition in oilifeld production and the problem of off-line collection with .maintenance workload big,poor universality,uploading not in time,an universal off-line acquisition component based on existing data acquisition system is proposed.This system uses the development way of components and the data storage and mapping mode of XML ifle.The encrypted data file is stored in local devices,and transmitted to the server automatically or manually submitted in the case of the normal network.then the data iS stored in the database in accordance with custom format.The component can be adapted to most online collection system.and is applied in oil field production systems. Key WOrds:off-line collection;component;DOM;XML 在油田勘探和开发过程中,每天都会产生大量 定;因此,一般需要通过无线网络进行数据的上报。 的生产动态原始数据,如钻井进尺数据、钻井液数 然而,无线网络受天气、环境的影响较大,很多情况 据、试油测试情况等。这类数据是油田生产现状的 下网络无法连通,或者时断时续,无法顺利地通过 最直接反映和第一手资料,需要及时上报管理部 在线系统进行实时的数据采集。另一方面,部分重 门,以便指导下一步工作,同时,油田还有多套勘探 要的科研成果资料、油田储量信息等保密级别很高 开发专业软件需要应用这些生产数据,并通过与地 的材料,按有关规定不允许通过网络上报,只能在 质、工区、井等模型的综合分析,建立该地区详细全 特定的机器上完成采集后,通过移动存储设备加载 面的生产管理决策数据库、模型库 ;因此,数据采 到中心服务器。上述所有情况都需要考虑通过离 集是油田生产信息化管理的基础,没有充足的数据 线采集技术实现数据采集。 作支撑,再强大的生产管理软件也起不到应有的作 本文首先总结当前离线采集系统存在的问题, 用。由于油田施工现场覆盖面广,大多施工单位在 然后针对这些问题提出基于Javascript的DOM解析 偏远的地区,如山区、沙漠等,而且施工地点不固 以及XML文件本地存储和传输的设计思路,并对其 收稿日期:2013-01-20 作者简介:李莉(1976一),女,讲师,硕士,主要研究方向为计算机网络与通信技术、低压电力线载波通信技术。E—mail:lily22b@163.120111 18 西华大学学报・自然科学版 关键技术进行详细分析论述,最后对系统实际应用 情况进行总结和说明。 的特定页面模块。离线数据体的结构和保存也应 具有通用性,能够适应不同的采集模块。2)采集页 1 常见离线采集系统存在的问题 目前,常见的数据离线采集系统是一套单独开 发的与在线系统功能和数据库结构都相同的系统。 面数据项与中心服务器数据库结构的松耦合。当 数据库结构发生变化导致在线系统采集元素变化 时,能够方便地定义离线数据与数据库结构的对应 关系,而不必修改离线数据体的结构。3)离线数据 体的自动传输。系统应能够自动检测网络情况,自 动传输离线数据体 J。4)数据自动校验入库。系 统应能够按照要求的数据规范自动导入到中心服 务器。 它是将本地数据手动导入到服务器数据库中 。 这种方案完全照搬现有系统的功能模块和数据库, 虽然具有系统开发简单、周期较短、数据导人不需 要进行复杂的数据映射对应等优点,但缺点也很突 出,主要体现在以下几个方面。1)系统维护工作量 经过研究分析可知,实现较为通用的离线数据 大。当在线系统发生任何变化,如数据库增加或减 少1个字段,离线系统也必须进行相应的更新,并且 整个系统需要重新部署,代价较大。2)通用性差。 一采集应该包括以下几个模块。1)本地采集存储工 具。本地客户端采集页面和数据存储模块,可以自 动分析页面元素,将数据保存到本地。2)数据加密 传输。对采集的数据进行打包加密,通过丌P等方 式传输到服务器。3)数据校验入库模块。根据定 制的数据包与服务器数据库的映射关系,自动完成 套在线系统就要单独开发一套对应的离线系统, 而油田生产应用的采集系统目前一般都有多套,如 物探、钻井、录井、测井、试油等各个专业都有相应 的在线数据采集系统_3 J,相应的开发工作量和成本 以及日后维护的工作量都巨大。3)离线数据上报不 离线数据的入库。4)日志管理模块。在上述各个 主要环节,如本地采集存储、压缩加密、传输、入库 等环节均有相应的保存成功及失败的日志记录,便 于分析原因。 够及时。采集的离线数据一般通过邮件或者人工报 送的方式上报到中心服务器,实时性较差,不能够充 分利用网络条件好的时候进行数据上报。 系统工作流程如图1所示。首先,在客户端加 载离线采集页面,通过页面分析组件和页面存储组 2 设计思路 针对油田生产的实际情况和目前离线系统存 在的问题,离线采集系统的设计应重点包括以下方 面。1)通用性。离线系统应能够采集存储现用系 统的所有常见页面输入项,而不是仅针对特定系统 件实现采集数据的通用离线存储,并以XML文件的 形式保存在客户端;然后,通过数据加密传输服务, 对客户端文件进行加密压缩,根据网络情况自动传 输或者手动传输到指定服务器;最后,服务器接收到 图1离线采集主要环节 第1期 李莉,等:油田数据离线采集系统研究与设计 19 数据包,根据入库映射配置,解析XML文件,并根据 校验规则进行人库校验,校验成功的数据自动入 库。所有操作都通过日志文件进行记录。 function saveField(obj){ 3 关键技术 var flashObject=getObject(); if(flashObject==nul1)return; 3.1通用存储工具 var type=obj.type; 通用存储工具是本系统的核心模块,主要负责 switch(type){ 本地数据的采集和存储。 case text :case textarea :case select— 目前,油田常用的在线采集系统一般为B/S系 one :case hidden : 统。为减少二次开发的工作量,可以将现用的在线 lfashObject.savetext(obj.id,obj.value); 采集系统的页面进行简单改造,去掉后台储存到数 ●●●● 据库的部分和权限部分,仅保留实际采集项,仍然 case checkbox : 以B/S的方式在客户端运行。当在线系统发生变 lfashObject.savechecked(obj.id,obj. 化或者增加新的离线系统时,仍然可以按照此种方 checked); 式快速生成新的离线采集页面,从而大大缩短开发 …● 周期和节省成本。 case radio : 为实现上述设计思路,采集页面应该具有高度 的灵活性,支持常见的页面控件格式,如单行、多行 文本框,隐藏控件、复选框、下拉框、单选框等等,并 ・; 且与存储部分尽量松耦合_5 ;因此,采集页面中应 } 包含通用的页面分析组件和数据存储组件2部分。 } 页面分析组件能够自动对采集页面进行分析,以组 函数queryElementsInput通过Document接口的 件的ID为单位(组件ID在页面中是唯一的),从而 getElementsByTagName方法获取页面上的所有页面 获取页面的采集元素及所录入的值。与此相对应 控件集合并赋值给arylnput集合,通过f0r循环获得 的,数据存储组件中存储数据内容应该随着页面采 每个控件类型。由于不同的页面控件ID及录入值 集元素的变化而变化。 的处理方式不同,需要根据控件类型分别处理。根 1)页面分析组件。对页面元素的分析,必须依 据不同的类型,调用saveField函数,获得不同控件 赖于DOM(Document Object Model,文档对象模 的值,并调用数据存储组件保存到XML文件中。 型)。DOM是W3C国际组织的一套Web标准,一 2)数据存储组件。由于不同的采集系统采集 种用于HTML和XML文档的编程接口,为文档提供 的内容不同,且同一个页面采集内容也有可能发生 一种结构化的表现方式。网页上的标签是树状结 变化,同时,通过页面分析组件获取的实际采集数 构,每个页面元素都可以被确切的定位,各种编程 据的结构也是动态的;因此,采用常规的固定数据 语言都可以通过DOM来访问页面。页面分析组件 库结构,不能很好地响应页面变化。由于不同的系 是通过JavaScript对DOM的操作来实现的 J。在 统采用的数据库类型不尽相同,如油田系统中常见 本文中,主要应用DOM对象的Document接口通过 的就有Oracle、SqlServer等,因此异构是不可避免 JavaScript循环遍历,从而获得所需要的组件ID和 的 ]。基于此,在存储部分,采用XML文件的方式 值。获取所有控件,对不同页面控件的处理脚本 保存一个具体页面采集的内容_8]。XML文件的结 如下: 构很简单,仅包括页面组件ID和与之一一对应的数 function queryElementsInput(){ 据值以及是否需要通过网络发送的属性。这属性 var aryInput=document.body.getElementsByTag— 是为了判断采集的数据在网络正常时是否通过网 Name(” ”); 络自动发送到服务器。XML文件格式如下: for(var i=0;i<arylnput.1ength;i++){ <?xml version=”1.0” encoding= saveField(aryInput[i].type); ‘‘GB2312”?> <OfflineData Modulename:”zjrb”> <Control id=”JH” value=”高11井”/> 20 西华大学学报・自然科学版 <Control id=”JS” value=’’2230’’/> <Control id=”CW” value=”沙三下”/> <Control id=’’IfAutoSend” value=’’Y’’/> </OfflineData> <OflfineData>中Modulename记录此文件采集 的数据来自于哪个功能模块。Control id和value分 别存放对应的页面采集元素名称和实际录入的数 据,如页面采集项为“JH”(井号)的元素,采集的数 据是“高11井”,最后的“IfAutoSend”则用于标志该 记录是否在网络正常之后自动发送。 通过上述设计,页面分析组件和数据本地存储 组件都是通用的页面组件,以.NET组件的形式进 行封装,可以加载到任意需要采集的页面中,而采 集页面仅仅是一个外壳,在原有系统的基础上稍加 改动,保留原有的采集元素和页面校验逻辑即可。 当离线采集数据采集完成后,所采集的数据以XML 文件的形式保存到本地。 3.2数据加密传输 为便于数据传输,同时保证传输过程中的安 全,需要自动对离线数据提供Zip格式打包压缩加 密,同时,属性为可以通过网络传输的数据,当网络 恢复正常时,应能够自动传输到服务器;因此,应开 发压缩加密和自动传输组件,以Windows服务的形 式运行在客户端,自动定时扫描指定目录。当数据 存储组件把XML文件存储到本机指定目录下之后, Windows服务自动进行文件的压缩和加密,并保存 到传输队列_9j。传输队列仍然采用XML文件的方 式保存在本机。服务根据设置的时间间隔,自动检 服务端 图2加密传输 测网络环境,当网络环境正常时,通过FTP协议自 动传输到服务器指定位置,如果传输失败,则自动 进入传输队列,等待下一次调用¨ 。整个过程由数 据加密传输组件完成,通过接口与数据存储组 件进行交互,如图2所示。 密级要求很高的数据,则根据XML中的属性, 不进行网络传输,由人工通过移动存储介质报送。 3.3数据校验入库 数据包传输到中心服务器之后,需要经过解 压、校验、入库等一系列操作,因此仍然采用Win— dows服务。由于各个采集点传输到服务器的离线 包的内容遵循统一的标准,具备了准确读取离线包 数据的基本条件,因此可以在完成必要的校验之后 离线自动入库。以移动介质上报的数据,则可以通 过手动添加入库平台进行分析和入库。 由于离线数据文件中只保存了字段名和采集 的数据,而且在服务器的数据库中,这些字段和值 可能保存在不同的表中;因此,需要事先定义和维 护所有具体采集模块的字段和数据库表之间的映 射关系 ,如复杂的数据库结构、主键/J'b键的对应 关系、主键的生成方式、字段的类型等等。映射文 件结构如图3所示。 图3数据结构映射关糸 考虑到实际应用中数据库结构的复杂性,映射 文件包含2个大的节点MasterTable(主表)和Sub— Tables(子表集合)。SubTables节点下可以有多个 Subtable(子表),可根据实际情况进行扩充。主表 和子表下又包括Fields(字段集合)。通过Field(字 段)描述具体字段的属性以及与离线数据体中数据 的对应关系。 根据上述映射关系,生成某个采集模块对应的 映射文件,其具体内容如下: <?xml version=”1.0”encoding ”utf一 8”?> <DBConfig> 第1期 李莉,等:油田数据离线采集系统研究与设计 21 <MasterTable name=”Jxbxxb”keyField=” JH’’> <Fields> . 开发,由封装好的组件调用,可在任何网页引用。 客户端数据的加密传输服务和服务器端的数据校 验入库服务则采用了.NetFramework 4.0,C#语言开 发。整个系统的解决方案采用了微软的Enterprise <Field name=”JH”f0rmControlid=”JH” dataType=”string”/> Library(企业库)实现缓存、加密等公用模块配置和 开发。各部分包括:1)采用.NET框架的Servi— <Field name=”JS”formControlid=”JS’’ dataType:”number”/> <Field name=”ZYMDC”formControlid =ceProcess命名空间中的ServiceBase和ServiceCon- troller类开发Windows服务程序;2)采用XML文件 ”ZYMDC”dataType=”string”/> 作为数据映射和配置信息的载体,并调用XmlSerial— </Fields> </Master1Table> <SubTables> <SubTables name=”CSSJ”keyField=” SYJH.CW”foreignKey=”JH”/> <Fields> <Field name=”SYJH”formControlid=” JH”dataType=”stirng”/> <Field name:”CW formControlid=” CW”dataType=”string”/> <Field name=”DJSD formControlid= DJSD”dataType=”number”/> </Fields> </SubTables> </DBConfig> 文件中首先定义主表Jxbxxb,主键JH,具体字 段JH、Js等。其中,“JH”数据类型是string类型,对 应离线数据体中fromControlid是“JH”。其他字段 的定义与此相同。 此映射文件包含一个子表“CSSJ”。其中,主键 是“SYJH”和“CW”,外键是“JH”,其他字段定义与 主表的定义方式相同。根据实际的应用情况,还可 以继续扩充多个子表。 此映射关系通过配置文件的形式保存在服务 器,由入库模块对每个离线的数据文件按照此映射 关系进行分析¨ ,分析完成之后,执行人库校验, 如:常见的是否为空;逻辑校验等等。符合校验条 件的则数据自动人库,不符合条件的记录通过事务 机制回退,相关记录均不能人库。所有操作均记录 在的系统日志模块中。 4 实验结果及分析 4.1基于.NET平台的组件实现 本系统客户端的通用存储部分采用Javascript izer类实现XML的序列化与反序列化;3)引用IC- SharpCode类库实现多个文件的压缩;4)使用Ftp— WebRequest和FtpWebResponse类、FTP类开发文件 传输的兀’P类库,实现基于n、P协议的远程连接、 文件传输、状态响应等功能,并采用Thread类实现 文件传输的多线程操作;5)引用Enterprise Library 的LogEntry类,实现系统的日志管理部分。 4.2 系统测试及应用效果 针对组件的通用性、数据采集的完整性,对文 件传输及入库准确性和效率等方面进行了系统测 试。通过某油田多个采油队、钻井队的不同网络环 境下进行的测试结果表明,数据采集的准确性比原 系统平均提高约19.5%,数据传输效率平均提高约 27.5%,均达到系统的预期效果。 该系统与原有离线采集系统相比,在以下方面 具有显著优势。 1)系统开发周期短。原采集系统需要把B/S 系统转为C/S系统,所有功能模块重写,可重用的 部分较少,开发周期长。现系统开发时,只需要去 掉原采集系统的B/S页面中的页面存储和权限校 验部分,定义数据存储映射文件,原系统的大部分 内容可重用,而且原系统底层及公用组件可直接重 用,开发周期可缩短近50%。图4是本系统与原录 井离线采集系统和原试油离线采集系统的开发周 期对比图。当系统需要修改或者扩展时,所需的工 作量也与系统开发周期的对比情况基本类似。 120 一 终誊篝罨篓…— tO0 。8O ’-_ 原试油离线采集系统— - 60 冒 4o ・ 20 O 2O 3O 40 50 需要开发的采集模块/个 图4现离线采集系统与原离线采集系统开发周期对比 2)系统在扩展性、通用性、可维护性等方面与 22 西华大学学报・自然科学版 2014年 通用性 不 统对应开发一套离线系统'功能模块及数据库均 组件、存储组件、数据传输校验、数据入库等均 具 扩展性 和每套系统的具体情况有关,扩展性较差 离线数据体及数据库映射均以XML文件形式保存,可根 据需要随时修改,扩展性强 所有采集系统采用统一的底层和组件,且灵活性和扩展 可维护性能票 篆 昙 : 的技术和平台可 性强,可以非常方便地增加或修改采集项,实用结果表明, 维护工作量平均可减少约50% 部署要求 对 同版本韵运行环境、0rac 据库等’部署复杂’ 只需要安装.NetFramework,硬件要求低 确 雾 , 蚕 目前,该系统已在油田的多个单位得到了应 [2]周晴红,陈中育,李平,等.一种离线数据采集技术的研究与 用,如表2所示。下一步还计划在油田内部更多的 应用[J].计算机与现代化,2006(10):70—71. 生产单位推广应用,其应用范围正在不断扩大。 [3]张华义,何东溯,汪福勇,等.西南勘探与生产技术数据管理 表2应用范围 系统实施与总结[J].石油工业计算机应用,2009(3):2—4. 应用单位 已部署数量 [4]张华义,何东溯,汪福勇,等.勘探开发数据整理平台开发与 应用[J].天然气勘探与开发,2009(4):69—74. 物探公司物探施工队 8 [5]Robert C Martin,Micah Martin.敏捷软件开发:原则、模式与 录井公司录井队 5 实践[M].邓辉,孙呜,译.c{}版.北京:人民邮电出版社,2012:104 井下公司作业队 6 —105. 采油厂采油小队 10 [6]Nicholas C Zakas.JavaSeript高级程序设计[M].李松峰,曹 力,译.3版.北京:人民邮电出版社,2012:277—279. 5 结论 [7]薛尧予,王建林,赵利强.分布式过程实时数据集成方法及 其实现[J].计算机工程,2010,36(3):55—57. 本文在总结油田生产数据采集现状以及现有 [8]赵芳云.基于XML的异构数据源查询系统设计[J].计算 离线采集系统存在问题的基础上,提出了一种通用 机应用与软件,2009,26(8):185—188. 离线采集系统的设计思路和实现方式。该系统采 [9]Christian Nagel,Bill Evjen,Jay Glynn.c#高级编程[M].李 用基于组件的开发方式和XML文件的数据存储和 铭,译.7版.北京:清华大学出版社,2010:692—694. [10]巫钟兴.数据加密传输系统的研究与应用[D].北京:北 映射,通过数据自动加密传输,最后经过数据校验 京化工大学,2010. 自动人库。该系统全面提高了离线采集系统的通 [11]Hector Garcia—Molina,Jeffrey D Ulhnan,Jennifer Widom.数 用性、准确性和扩展性,经过实际应用,取得了较好 据库系统实现[M].杨冬青,徐其钧,唐世渭,译.2版.北京:机械 的效果,具有广泛的应用前景。在今后的研究中, 工业出版社,2010:424—426. 将结合近期应用广泛的HTML5在离线应用方面的 [12]彭新一,黄竞斌,黄志炜.一种面向大规模分布式数据采集 的标准化方法[C]//The 3rd International Conference on Computational 新技术 ,对获取页面动态生成的控件ID和值、复 Intelligence and Industrial Application(PACIIA2010).武汉:[出版者 杂的表格、录入过程中需要上传大数据体等较为复 不详],2010:217—222. 杂的情况继续深入研究,进一步提高系统的通用性 [13]陆凌牛.HTML5与CSS3权威指南[M].北京:机械工业 和稳定性。 出版社,2012:151—158. 参考文献 (编校:饶莉) [1]张益政.油田勘探生产管理及井位导航系统设计与实现 『D].大连:大连理工大学,2005.