油田异构生产数据相关概述

随着互联网的快速发展和广泛应用,数据库系统发展的越来越完善,在长期的积累中,不同的数据库系统被人们学习和使用。在当代生活中,我们更加频繁的使用互联网对众多的文档数据、数据库等进行检索使用,以获取所需要的信息。
在油田的系统中便存在着大量的异

  第一章绪论

  随着社会发展和科技的进步,信息技术也已经遍布到了社会的各行各业,显而易见的是,万物互联的时代早已来临。大到国家工业发展,小到社会生活服务,但在各个领域中,不同的信息系统,在产品开发的过程中,功能和需求也不尽相同,因此在系统开发过程中,往往会产生不同的数据信息。然而油田的异构生产数据在不同的油田系统间大量存在,目前大量的油田异构数据库存在于很多的油田系统间,而产生异构的原因可能是由于不同的访问接口、不同的数据库,或者不同的版本等。

  1.1课题背景

  我国自1939年开始工业化油田生产,油田克拉玛依油田是新中国成立后第一个工业化油田,随后的克拉玛依黑油山1号井,也在1955年10月29日完钻出油。历史悠久的油田开发,大量的开采数据以各种方式被记录下来,随着科技社会的到来,大量的油田开发系统随之产生。由于不同的油田配备着不同的系统开发人员,各自在开发过程中,每个油田的数据往往会集中在一个相对封闭的数据库中。在油田之间相互交互数据信息时,存在大量的异构数据很难在系统之间共享,交流和整合,但目前来说,系统之间数据的交互这一需求变得愈来愈强烈。
  数据整合简单来说就是将不同类型的数据有效的集中起来,实现数据的集中管理、统一操作,可以有效的解决数据的异构问题。对于不同类型的数据,其中有可能包括来自于不同系统的数据、不同的编程语言所编辑的数据、不同的版本之间的数据等。
  目前存在很多种方法可以针对油田的异构生产数据进行数据的整合研究,在众多的方法中存在着一种新产生的方法,即就是基于JSON技术的中间件方法,这种方法借助于JSON这种数据交换的格式,为油田的异构生产数据整合提供了一种新的机会。由于JSON的简单且易操作性,在很大程度上减少了异构生产数据整合的各类成本,并且有效的绕开了在多个油田异构数据库间操作复杂的弊端,大幅度的增加了系统使用的效率。

  1.2研究意义

  在目前这个互联网时代和大数据并行的快速社会,油田的异构生产数据对我国的经济发展和社会走向占有比较大的意义。并且异构数据不止于油田系统,它存在于当代互联网社会的各个方面,因此,对于异构数据的整合不仅跨越多个知识层面,而且对于原理的研究也是存在于多个层次的。油田的生产异构数据集成研究,可以对海量的信息的采集、以及多系统间数据的使用有很大的益处,同时可以解决在异构数据系统间信息无法共享的难题,帮助油田系统管理者做出有效的判断。

  1.3研究现状

  自多种数据库系统出现至今,数据整合一直保持着相当高的热度,目前来说,在这一方面,学者和编程者为之提供了相当多的研究成果和商业应用。20世纪80年代到现在已有三十多年时间,数据整合技术的发展也愈趋完善。

  1.4所做工作及文章结构

  1.4.1论文主要研究工作
  本文将针对目前油田系统内相关数据整合问题,进行深入的研究讨论,主要问题包括异构数据的产生原因、异构数据的分类、以及如今如何才能去解决这类问题的方法。通过对油田异构数据库内的数据的研究,提出了采用JSON来解决油田数据异构的整合问题,并且将引入中间件这项技术的集成研究方案。
  1.4.2论文的组织结构
  第一章介绍了对油田异构生产数据研究的背景、意义,陈述了对于油田异构生产数据的研究现状,以及本片论文的主要工作内容和组织结构进行简单介绍。
  第二章对油田异构生产数据的产生、分类进行了相关陈述,分析油田异构生产数据整合的方针和实现生产数据整合的基本方法;
  第三章对三种异构数据集成方法进行对比,主要包括三种的优缺点,并提出选择引入基于JSON的中间件技术这一集成方案;
  第四章分析JSON和POJO之间的转换关系,并研究如何把JSON注入进油田异构数据库中;
  第五章JSON与数据库的映射研究;
  第六章系统可行性分析和系统需求分析;
  第七章开发、测试及评价;
  第八章工作总结与展望。

  第二章油田异构生产数据相关概述

  2.1异构数据

  2.1.1异构数据的概念
  简单来介绍的话,油田异构生产数据就是存在着不同结构的数据,在油田体系中,异构数据的形式和来源多种多样,比如说,不同系统间可能存在不同的访问接口、不同的数据库、不同的版本等。在不同的数据库内存在着大量的油田异构生产数据,但这些海量的数据却没有统一的保存在一个数据库内,这便是油田中异构生产数据产生的原因。
  举例说明如下:
  对于数据库管理系统(DBMS)的区别:大庆油田的数据库系统是基于MySQL;长庆油田的数据库系统基于Oracle;而基于SQL Server的是克拉玛依油田。三种不同的数据库系统必定在基础的语法格式上有着或多或少的不同。
  对于在基本操作系统上的区别:大庆油田基于MYSQL开发,具有跨平台性,Windows和Linux都有对象的版本;长庆油田基于Oracle,可以在全部的主流平台上运行;然而,基于SQL Server的克拉玛依油田,只能Windows平台上才可以使用。
  在数据库版本的区别:在各类数据库系统上,不同的版本也有可能存在不可兼容的问题。如果是单一系统的版本兼容问题,或许修改起来还是可以实现的,但若是相对多的系统复合起来的海量数据,修改起来需要的人力、物力都有极大可能得不偿失。
  2.1.2异构数据的分类
  针对油田异构生产数据的分类存在以下两种:语法异构和语义异构。下面将分别解释这两种异构并举例说明。
  2.1.2.1语法异构
  语法异构可以认为是不同的数据之间存在命名规则的不同以及数据类型的差异。
  举例说明:假设存在源数据Source Data(SD)和目的数据Objective Data(OD)。从SD向OD传输数据过程中,可能存在命名规则上的失误,例如SD的数据名为Person,OD的数据名为Info;也有可能存在数据类型上的问题,例如当SD传输的数据类型为Int,而OD的数据类型为String,以上这些情况就为语法异构冲突。
  2.1.2.2语义异构
  在语义结构的层面上,就是数据集成需要研究数据的含义以及内容,通常需要将字段进行原子化操作处理,即是说应对所研究的数据内容使用直接处理形式。一般而言,语义异构可以分为:字段拆分、字段合并、字段数据格式变换、记录间字段转移等方式。
  2.2.2.3区别
  语法异构和语义异构这二者之间最为直接的区别,便可以从数据源建模开始谈论起:当数据库模型结构一致时,仅是命名方式存在不同,进而形成语法异构;当这二者所构建的数据源模型存在差异时,即在实体建模中,使用到了不同的操纵数据方式,如不同的字段结构、不同的粒度模型等,这样势必会形成语义异构,便给数据采集工作带来了一定难度。
  实际上,语法异构现象的出现在现实中的数据集成系统中非常常见。上面列举的这几种语法异构现象还属于比较规则的几种,因此,为更好解决这些问题可以采用特定的映射方法。另外,还存在一些不普遍以及难以被用户发现的语法异构,比如某些约束信息在构建数据源时被隐藏了,导致数据在集成的过程中,难以被发现,从而容易出错。例如在根据数据项定义月份的时候,对月份的约束值只能在1到12之间,但若是在数据集成时没有按照这一约束进行,那么最后得出的结果显然不正确。另外还需注意一点的是:模型关系越复杂,则有可能造成更多的语义异构现象。

  2.2异构数据库

  2.2.1数据库
  2.2.1.1数据库简介
  简而言之,数据库(Database)相当于一个专用来进行数据存储的信息仓库,这个仓库在数据的存储格式上具有一定的数据结构性(数据结构是指数据之间的某种关联性或是数据的组成形式),我们在管理数据库里的数据时,也可充分利用数据库提供的多种有效管理方法进行数据管理、查找以及审查等,也能使人们在实际操作中理解起来更加简单。数据库作为一个仓库性质的存在,与我们生活中实际用来存放杂物的仓库在本质上都是用来存放东西的,最大的区别在于存放的东西不同而已。由于数据库的数据存储方式有特定的格式,因此用户可以很方便地自行更改、增删等。
  2.2.1.2数据库分类
  数据库可分为关系型数据库(SQL)和非关系型数据库(NoSQL)这两大类。关系型数据库能将大量繁杂的信息数据转化成简单的与二维表格式类似的数据结构。非关系型数据库是作为关系型数据库的一种补充,它在海量数据的存储上有着巨大的优势。
  2.2.2异构数据库
  异构数据库(HDB Heterogeneous Database)集合了多个系统的数据库信息,能实现不同数据库间的信息传递与交互,还能进行跨系统的数据访问。
  以下,即为异构数据库关于异构性方面的三个表现:
  1.计算机体系结构:每个单独的数据库系统分别可以在服务器、个人移动设备、PC、嵌入式计算机上运行。
  2.操作系统:常见数据库系统可运行的操作系统均可以运行,例如Windows,Linux等。
  3.数据库:关系型数据库或是非关系型数据库,可以按照不同系统的特点配备对应的单独数据库系统,如SQL Server、MySQL等。
  2.2.3异构数据库整合目标
  理想的异构数据库数据信息整合就是把各种信息透明的无缝的联结在一起,使之形成类似于一个完整的数据库系统。在使用者使用的过程中,可以直观的感受为在一个数据库系统内进行操作。
  2.2.4异构数据库整合基本方法
  数据集成的主要含义为:将具有一定相关性的异构数据源整合到一起,以提高用户访问的透明度与鲜明性。
  最常见到的是联邦数据库方法、中间件集成方法和数据仓库方法这三种数据集成方法。
  2.2.4.1联邦数据库方法
  从实际意义上面来说,目前存在有很多的数据库系统,而这些众多的数据库系统总的累加到一起,就是联邦数据库的含义,分布异构是联邦数据库的一项特点,它不仅能够使每个单独的数据库系统之间进行操作,而且可以进行独立的管理操作。其中实现众多系统内一个系统的数据可以被其他不同系统内的用户进行操作,而且对所被操作系统的数据影响达到最低,简单可以介绍为客户凭借简单的某一操作便可以对其他的众多数据库系统的数据实现操作的系统,以上这些即就是联邦数据库的含义。
  联邦数据库站在数据消费者角度上创建出一种数据集成视图,使某个数据逻辑表面上看起来只出现在一个位置上,但其实在多个不同的数据源中也可以发现它的存在。因此,联邦数据库技术可以将多个数据源的物理位置、结构等组成一个能为数据消费者提供一个抽象数据接口的虚拟视图。
  在联邦数据库中存在一种特定的模式,即联邦模式,其含义是在各个数据源之间可以共享各自的一些数据的模式。如果对联邦数据库按照集成度进行划分,可以分为两类:松散耦合联邦数据库系统和紧密耦合联邦数据库系统。顾名思义,紧密耦合联邦数据库系统即就是耦合度很高的数据库系统,它采用全局同一的一种模式,使所有的数据源的模式都同一在全局的数据模式上,这可以有效的解决各个数据源之间所存在的异构性。具有较高的集成度,以及尽可能的减少了用户的参与;但其缺点就是所要创建的全局数据模式具有相对复杂的算法,使用局限性很高,及其的不容易扩展。反观松散耦合联邦数据库系统,该系统即采用的是联邦模式,不存在全局模式,提供用户使用同一的查询语言,可以自主的去处理众多存在的异构性问题。松散耦合联邦数据库系统采用的方法没有很高的集成度,相比紧密耦合联邦数据库系统来说要灵活的多。
  2.2.4.2中间件集成方法
  在目前各类的数据集成方法中,中间件集成方法相对来说是比较流行的一种方法,它是存在于数据集群和应用客户端之间的一座桥梁,数据源的集成化主要以数据逻辑视图的形式来呈现,具有一定的整体性,该数据逻辑视图可以用来对于客户端看不到众多底层数据的细节进行隐藏。要实现这项技术,该逻辑视图是首要的关键,它主要实现不同数据源之间能否映射到这个中间层上。
  现阶段比较流行的一个名词是面向服务的体系结构(SOA),SOA几乎成了中间件技术人员口中必言的一个词语,并且在数据集成中也无不用到SOA。目前多家企业也更倾向于运用面向服务的体系结构(SOA)来解决已经发生或者即将要面临的一些问题,如提高现有数据的信息重组功能和降低数据集成的成本等。现阶段大部分企业最常使用的办法是,在中间件层对数据进行整合、加工,并将整合后的数据利用中间件层的标准接口进行发布。中间件作为上层与下层之间重要的数据传输枢纽,向上能提供访问集成数据的通用接口,向下能促使各数据源系统之间互相协调作用,每单个数据源主要完成它们主要的应用任务,而中间件系统则为数据集成过程中产生的异构数据源提供一个更优的检索服务。
  数据集成系统中主要基于中间件的系统可以大致划分成两个部分:中间件和封装器,出于数据源数量的庞大性,因此每一个封装器它都对应了一个不同的数据源,封装器处于中间件和不同的数据源之间,中间件先访问到封装器,通过封装器对各个的数据源进行交互的操作。
  2.2.4.3数据仓库方法
  数据仓库简单来说就是创建了一个大型的数据库系统。这个系统中存储了每一个异构数据源的信息数据,所有的数据源信息都被它拷贝至这个大型的数据库系统,这便是数据仓库的含义。数据仓库的便捷之处在于每一个客户端的用户都可以当作访问的是自己客户端下的数据库系统一样,但实际的操作却是先访问到数据仓库,数据仓库再根据用户的需求去选择某一个数据库进行数据操作。
  数据仓库将对前端的数据进行预处理作为目的,其于处理分别包括的有数据查询与分析。由于数据仓库集合了多个数据库系统,必然存在大量的数据冗余,因此,也将需要相对大的存储容量来进行数据的存储。数据仓库相当于一个容器,能容纳许多需要存储的数据内容,不要将其错误视作一个产品。在用户需要用到大量当前和以往的历史数据时,数据库就能轻易为用户提供到,而这种便捷功能在以前传统的操作型数据库中往往很难满足到。
  总之,传统的操作型数据库本着对事务内容进行设计的原则,在数据存储方面更多涉及到的是在线交易数据,因此,在设计时通常采用符合范式的规则,以避免数据冗余。而存储在数据仓库中的通常属于历史性数据,它是针对主题进行设计的,因此,在设计时又要将冗余特意引入进来,并采取反范式的方式进行设计。
  除此之外,根据设计的不同目的性可知:以收集数据为目的进行设计的是数据库,而以分析数据作为主要设计目的是数据仓库,两者分别体现的是维表和事实表这两个基本表现的元素。维表更加侧重于看问题的不同角度,如大小、长短、时间以及部门等等这些,皆为不同角度的简单定义举例,都可以存放在维表当中;而在事实表中数据皆为需要进行查询的,并且每个数据都有其特定的一个ID。

  第三章对比三种集成方法

  从上一章节内容中,可以看出不同的整合方法各有不同的侧重点和优势,而实际应用中的油田的异构数据整合场景丰富多样,我们需要根据应用目的及其特性去研究选择最合适的框架系统,以下将展示如上三种方法的优缺点。

  3.1联邦数据库

  联邦数据库集成,顾名思义便是将多个具有独立单元的数据库都集成到联邦系统中,因此得到了“联邦数据库系统”,各个数据库可以通过接口查询功能来实现通信,这些数据信息都分布在不同的计算机系统中,通过网络来进行互联,其主要特征如下:
  (1)联邦数据库建立在各个数据库协作基础之上,并为其提供了统一的数据格式,还有统一的用户访问入口,并对不同数据库之间的数据分布信息给予了屏蔽处理,以此来实现数据库操作功能的简化,增强对数据信息的理解。
  (2)异构数据源由于是各个数据库系统的集成,因此不仅包含自身独有的数据库系统,同时还能够通过相关中间件,实现更多扩展程序,如文件、传感器等等。
  这种以节点为单元的分布式数据库,是不存在全局数据模式的,基于节点进行连接的数据库只能看到与之相关的数据,一般包含两部分:其一节点位置所在的数据模式;其二与本节点共享相关的位于其它位置的节点数据模式。节点之间能够实现数据共享,其共享信息可经由双边协商予以确定。

  3.2中间件技术

  中中间件模式是一种应用较为广泛的设计模式,可以在全局数据模式中访问多个不同的数据库系统、数据信息资源等等。中间件通过将应用系统与操作软件程序连接起来,以此协调各个不同的数据源系统,同时还能在集成数据模式中实现数据访问功能。中间件系统最为重要的作用便是能够为不同的数据库系统提供信息检索服务,而对于数据库集成结构并不做任何要求。

  3.3数据仓库

  数据仓库主要是将不同数据来源的信息集合在一起,形成独立的数据仓库,而集合的全部信息则是分布在独立的数据库系统中,并有大型处理器、较大的存储容量等配置。而其作用主要是分析处理数据,为决策提供支持,其显著特征如下:
  (1)集成的数据。
  (2)面向主题。
  (3)数据相对稳定。
  (4)包含历史信息。

  3.4基于JSON中间件开发

  在本文中将采用基于JSON这一数据交换格式进行中间件开发。现阶段,应用比较多的数据交换格式,分布有XML、JSON两种。
  3.4.1 XML
  XML(The Extensible Markup Language,可扩展标识语言)它是一种通用性标记语言,通过标记可以形成一种让计算机理解的语言,基于XML的文本格式在web应用中得到了较大发展,有利于实现Web之间数据信息交换。XML作为国际上通用的一种标准格式,它重点体现在描述数据结构化应用方面。那么在应用系统中,它的结构化标准是如何进行确定的呢?这得归因于它的辅助工具DTD,该工具提供了一套非常标准的语法规则,DTD与Schema最为主要的区别便是在于,DTD能够基于需求进行自定义,而Schema用户是无法自行定义的。当然能够实现自定义既有好处也有坏处,好处在于XML通用性比较强;坏处则在于使得XML更加复杂,这是因为DTD会随着XML的应用使用到。
  3.4.2 XML技术的缺点
  在油田的异构数据的集成方面,选用XML作为中间件的数据集成方法已经成为了大多数的选择,XML提高了数据交换的通用性和扩展性,但它也存在着一些难以克服的问题:
  (1)XML格式存储的文件是较为繁琐的,因为它会使用到比较多的结束文本,使得它的长度更长,同时读写花费时间也会更长。例如下面将展示一个简单的有关油田信息的XML文件格式的示例:
  油田异构生产数据相关概述
  (2)当对XML文件进行解析的时候,在客户端以及服务器端都需要耗费大量的代码,这使得处于客户端和服务器端的管理者对系统的维护变得异常困难,并且代码格式也会十分复杂;
  (3)针对不同类型的浏览器,有不同的XML文件解析方式,所以在编写代码时需要重复使用到很多代码。
  (4)不仅客户端需要对XML文件进行解析,同时服务器同样需要,所以用于XML解析的时间比较多。
  3.4.3对比JSON数据交换格式
  JSON(JavaScript Object Notation)能够实现数据交换与共享。也即是说,它是一种基于JavaScript发展所派生出来的,并且能够应用到多种语言,包括PHP语言、Python语言等等。
  JSON独立使用.json扩展名。当以其他文件格式(如.html)后缀命名时,便以一种特殊的字符串形式展示在引号内,同时也能将其分配给对应的变量。
  JSON具有很好的可读性和轻巧性,它是XML的很好替代品,并且所需的格式要少得多。
  JSON对象是键值数据格式,通常以大括号形式{}显示。而JSON的应用,不仅能在文件中JS对象。同时也是一种字符串表示方法,可以存在于代码程序结构中。
 油田异构生产数据相关概述
  尽管这是一个非常简短的示例,并且JSON可能长很多行,但这表明该格式通常设置为两端带有两个大括号(或大括号)的大括号(或大括号){},并带有键值对填充之间的空间。JSON中使用的大多数数据最终都封装在JSON对象中。
  键值对表示形式如:"key":"value",用引号将其包裹,并用冒号隔开。而且每一个键值都是以逗号形式隔开,如""key":"value","key":"value"
  JSON键位于冒号的左侧。同时需要用引号裹起来,如上述"key",也可以是其它形式的字符串,但一个键值对中,键一定是唯一的。这些键字符串可以包含空格,但是在编程时可能会更难访问,因此最好使用下划线。
  JSON的值位于冒号的左边,其数据类型必须为6种简单数据类型之一:字符串;数字;对象;数组;布尔;Null。
  此外,在JSON数据中应用嵌套,便能够处理较复杂的数据信息。
  3.4.3.1嵌套数组
  通过JavaScript数组便可以将多个数值存储起来,也即是嵌套于JSON数据格式中,并将数组类型用[]括起来。数组作为一种有序集合,其中的值是可以有多种类型的。
  通过使用作为值传递的JavaScript数组,数据以JSON格式嵌套。JavaScript[]在其数组类型的两端使用方括号。数组是有序集合,可以包含不同数据类型的值。
  对于大量的、容易进行分组的数据,便能够利用数组来对数据信息分类。
 油田异构生产数据相关概述
  该"error"键与"create_date"键每次使用数组属于CQ_oil的2个误差数据和3个不同阶段生产出的产品的时间信息数据。之所以能够看出是一个数组,也是因为使用了标志性特征方括号。
  3.4.3.2嵌套对象
  JSON不仅可以嵌套数组,同时还能够对嵌套对象进行存储。而数组和对象便会以键-值的关系配对。
  在oils.json以下文件中,有四个油田分别对应4个键("CQ","DQ","TLM","KLMY"),有作为每个用户的值传递,用它自己的密钥嵌套的嵌套JSON对象"oil_name"和"location"该相关的每个油田。第一个嵌套的JSON对象在下面突出显示。
  油田异构生产数据相关概述
  通过上述示例可以看出,{}将JSON对象嵌套起来,该JSON对象显示了四个油田以及每个油田的基本数据信息。同时,这些值都会用逗号隔开,以此分隔每一个元素。
  3.4.3.3 JSON与XML对比
  关于两者的对比,可以从下面这张表格读出相关优缺点:
  油田异构生产数据相关概述

  3.5总结

  在本章内容中,首先,对比了三种数据集成的方法,联邦数据库方法,中间件方法和数据仓库方法的优缺点。现阶段应用较多的方法还是中间件法,所以本文将选择这种方法。
  然后,基于以上关于JSON的相关叙述,在本次研究中,将选用JSON数据格式作为中间件方法对油田异构数据源进行数据集成。

  第四章研究JSON与POJO的映射

  POJO其本质便是Javabeans,即简单的Java对象。对于POJO而言,其主要代表无框架侵入、无接口、以及无类继承的javabeans,主要用于设计者从数据库中调用其中包含的数据表,便于对数据的使用和归纳,同时,通过POJO,对框架进行配置十分的便捷,操作较为简单。同时,对于POJO而言,其具有数据传递的功能,仅仅对数据进行储存,无法对业务逻辑进行相应的处理。
  POJO的运用仅仅涉及三种方法,分别是setter、getter以及构造这三种方法,在对象映射关系模型中,POJO便与JAVA类相互对应。对于JSON格式而言,可将其简称为JS,其主要作为数据交换语言进行使用,当其选择javascript作为高级编程语言时,在其运行的环境中,JSON代表着JavaScript对象,当处在网络运输环境中,代表着对文本进行序列化之后的成果。
  随着互联网的到来,通过互联网技术实现了系统之间的通讯联络,一般而言,通讯主要借助服务器将运输数据进行JSON格式化,但对于数据进行相应的装载应选择POJO作为基础单位。也正因为如此,机器间的通讯联络需要满足通信协议要求,如序列化以及反序列化等。
  对于序列化而言,其主要代表着一种数据传递的形式,可实现数据的转换和储存等。
  对于反序列化而言,与序列化相反,从数据的传递的形式转换为相应的数据对象或者数据结构。

  4.1 POJO序列化

  对于序列化而言,顾名思义可以将其解释为一种数据传递的形式,能够将数据对象以及结构进行形式的转换,实现数据的运输以及存储。对于对象序列化而言,其主要代表着java,即对象编程语言所具有的一个特点,利用对象序列化特点能够实现对对象的转化,将其转化为相应的字节码,并通过对字节码的阅读,进而产生新的对象,两个对象相互对应,本质上相同。对于对象序列化而言,其功能的实现需要满足具有对类的私有变量进行访问的特征,进而在一定程度上确保对象状态能够进行恢复以及保存。同时,当进行对象重建操作时,通过API实现了对值的还原,这在一定程度上对JAVA对象编程语言的一个挑战。一般而言,对象序列化主要作用便是实现对对象的交换以及储存,一般借助服务器客户端进行实现。
  对于对象序列化而言,其最大化价值在于对数据对象的传递和保存,并在一定程度上确保对象的完整传递。举例说明,当我们选择网络实现对对象的传递时,需要先将对象进行相应的转换保存,将其转化为文件的形式,此时需要进行相应的序列化接口操作。
  当对对象进行储存时,需要先将其进行序列化操作,仅有如此,才能进行相应储存操作。同时,在对对象进行序列化操作时,需要对接口进行相应的继承,仅代表着对象序列化的成功结果。对对象进行序列化操作,究其原因,主要在于对象通过网络进行相应的运输时,需要进行序列化的操作,便于服务器对对象进行相应的识别以及提取,并将其传至客户端,进而通过客户端实现的对对象的读取以及存储等。
  4.1.1如何实现序列化
  进行序列化操作十分简单便捷,仅需满足序列化接口的功能,便可实现对象序列化。在实现序列化接口等相关功能时,通过JAVA编译能够产生相应的ID,此时ID的产生可以由系统默认产生,也可自我选择。当然,自我选择并不代表着随意的选择,而是需要根据类的相关特征,通过系统产生哈希字段,类的特征主要包括成员变量、类名等。总而言之,对于序列化ID的定义和选择,是十分简单便捷的,仅仅代表着一个标志,表明对象序列化的成功,对我们而言,通过标志进行判断是否完成序列化即可。
  步骤如下:
  1、创建Java类并实现Serializable接口;
  2、在main方法内,写入数据;
  3、创建ObjectOutputStream代表对象oos输出流:ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(new File("写入指定文件路径.txt文件")));
  4、通过object obj实现对OOS的序列化操作,并在目标输出流中,将字节序列写入其中。
  5、oos.close。
  详细代码实现如下:
  1、首先编写普通JavaBean对象,并实现Serializable接口;
  public class Oil_Info implements Serializable{
  private String id;
  private String name;
  private int error;
  private String location;
  private String create_date;
  //省略get和set方法;
  }
  2、进行数据写入;
  Oil_Info oil=new Oil_Info();
  oil.setId("5");
  oil.setName("油井1");
  oil.setErrot(25);
  oil.setLocation("陕西西安");
  oil.setCreate_date("西安一区");
  3、写入到.txt文件;
  ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(new File("D:/oilinfo.txt")));
  4、对象序列化;
  oos.writeObject(Oil_Info oinfo);
  5、关闭输出流oos。
  oos.close();
  4.2 POJO反序列化
  与序列化相反,对于反序列化而言,主要是将数据传输的形式转换为相应的数据对象或者结构等。当反序列化与序列化结合起来之后,就可以轻松的实现数据的存储与传输的操作。
  4.2.1如何实现反序列化
  详细步骤如下:
  1、首先需要创建一个用来存储反序列化后数据的对象,例如Oil_Info oil=null;
  2、其次对文件输出流进行相应的建设,objectInputstream通常表示对象输入流。
  3、通过ReadObject实现对字节序列的读取,并将其进行对象的转换,进行返回,例如Oil=Ois.ReadObject();
  4、ois.close。
  详细代码实现如下:
  4.创建JavaBean对象;
  Oil_Info oil=null;
  2、对象反序列化;
  ObjectInputStream ois=new ObjectInputStream(new FileInputStream(new File("OIls_info.txt")));
  3、数据读取写入JavaBean对象;
  oil=(Oil_Info)ois.readObject();
  System.out.println(oil.toString());
  4、关闭输入流ois。
  ois.close();
  通过对上述序列化以及反序列化的研究,发现在整个过程中,其本质上和JSON的赋值是相同的,对于evall也是如此。通过JSON进行赋值,最终的结果是JSON文本,对于eval而言,在其整个过程中,利用JSON文本最终的结果是javascript对象。

  4.3将POJO转换为JSON

  JsonUtils是用于Java后台处理Json格式数据的一个工具类,基本实现的是在JavaBean与JSON数据进行相互转换。
  具体实现细节如下图:
油田异构生产数据相关概述

  第五章JSON与数据库的映射研究

  油田的异构数据源生产数据交互需要考虑到源数据的合法性检验、数据处理的处理、源数据与JSON数据的映射关系设计与实现等。异构源数据与JSON数据之间的映射关系是核心,本文的油田异构数据源交互方案是基于Java进行开发的,在进行各油田异构数据与JSON的相互转换过程中,使用POJO对象来进行两者间联系。比如关系型数据与JSON数据的相互转换,主要设计关系数据模型和对象数据模型之间的映射关系,表名对应类名,记录对应实例,字段对应属性。其他的数据格式y与JSON之间的相互转换过程同样要明确映射关系。

  5.1油田异构数据源的选择

  本文将选取两种油田的异构数据源来进行数据集成交互,其中包括MySQL数据源;SQL Server数据源。
  5.1.1 MySQL数据源
  对于mysql而言,其本质上代表着一种关系型数据库,应用较为广泛,当前,mysql数据库因其具有较高的运行效率,占用空间小以及资金投入低等优势,在一些中小型网站中得到较为普遍的使用,同时,mysql数据库能够为使用者提供免费的开源代码,极大的降低了一些中小型企业的成本投入,因此其应用十分广泛,使用率较高,在当前市场中十分流行。但其开发公司于2008年被收购,这样使得许多版本开始进行收费,不利于中小型企业的的设计研发使用。
  对于mysql数据库而言,其主要采用C/S模式,使用者通过在客户端进行注册,拥有个人的账号以及密码,在对mysql数据库进行使用时,通过账号和密码登录实现对数据的删除、修改、增加以及查询功能等。
  5.1.2 SQL Server数据源
  SQL Server其主要由Microsoft公司进行开发,代表着一种数据库,具有较高的运行效率,功能十分全面,通常在中型企业中运用较为广泛。在SQL Server数据库应用的过程中,通常与windows系统联系较为紧密,在一定程度上大大提高了系统的运行速度。对于企业而言,通过Windows系统实现信息的管理,在这个系统构建的过程中,主要应用两种架构,一种是C/S模式,另外一种便是B/S模式,对于这两种模式而言,SQL Server都可以适用,效果较为显著。但SQL Server的应用存在一定的不足之处,其应用仅能通过Windows系统平台进行。

  5.2 JSON映射方法

  如何对POJO类的相关属性进行了解,可以借助其class对象得知相关内容,通过对属性的了解得知数据库中表的具体字段内容,对于class对象而言,其中包含着Get方法,并利用和调用该方法实现对json的设计和组装,具体如下所示:
  1.在POJO类中,对其class对象进行相应的获取。
  2.通过第一步,获取相应的class对象,进而获取相应的字符串数组,主要由class属性进行相应命名。
  3.通过第二步,获取相应的字符串数组,进而获得相应的get方法,通过get方法得知相应的字段的值。
  4.完成上述三步骤后,对JSON进行相应的组装。

  5.3数据库数据转换为JSON

  关系型数据库的数据向JSON转换,相对来说比较容易些不复杂,只需要简单的以下两个步骤:
  1、实现对关系型数据向JSON的转换,首先需要将数据向POJO转化;
  2、POJO转换成JSON。
  在第一个步骤中,将使用Mybatis框架,可以很容易的将数据库中的数据持久化到POJO对象中去;然而第二个步骤在第四章第三小节中也已经做过了相关介绍。整个过程可以简单的介绍为在关系型数据库中的数据经过持久化框架进行转换,将其转换为真实的数据对象模型POJO对象;继而再将POJO对象转换为JSON。

  5.4 JSON转换至数据库

  将JSON数据想要存入到数据库中,首先要通过IO流进行读取JSON数据,然后使用JSON.parseObject()方法将JSON字符串转换为JavaBean对象数据,随后使用持久化框架将JavaBean对象数据写入数据库。

  第六章系统可行性分析和需求分析

  对于油田异构数据库的生产数据进行数据集成的研究和开发过程中,首先,需要了解和明确我们要做什么,具体要对油田异构数据库的生产数据进行数据集成做出系统可行性分析以及需求分析。

  6.1油田异构生产数据整合系统可行性分析

  对油田异构生产数据整合系统进行设计研发的整个过程中,涉及到多种影响因素,对系统的性能和运行效果产生一定的影响,如资金投入的成本、资源、相关技术以及时间等因素。因此,通过进行可行性分析才能明确油田异构数据库的生产数据进行数据集成的研究是否值得做,避免投资损失,即能否带来经济效益、或者社会效益。下面将从经济、社会这两个方面进行对本次研究的分析。

  6.1.1油田异构生产数据整合经济可行性

  对油田异构生产数据整合的研究是为了方便各油田系统的操作人员对多个数据库进行数据操作而展开的,对油田异构生产数据整合可以大幅度减少油田系统操作人员的工作量,相比之前无法进行生产数据整合的情况,操作人员或许需要人工的手动对数据进行拷贝、比较、或者删除等操作,如今油田异构生产数据整合之后,操作人员可以直接对异构数据进行操作,减少了人工损耗,节约系统的管理损耗成本。并且对油田异构生产数据整合的研究也不会产生多余经济支出,此项研究由本人独立设计,降低了开发成本。
  总而言之,在对油田异构生产数据整合系统进行研究时,其经济具有一定可行性。
  6.1.2油田异构生产数据整合社会可行性
  随着油田产业的蓬勃发展,油田的建设与开发直接关系到了我国经济走向和社会发展,产生大量的油田异构生产数据是必然的结果。油田异构生产数据整合可以使各油田之间的数据共享变得更加便捷,单单的像之前靠人力进行数据操作,已经完全跟不上社会发展的节奏。
  因此,在一定程度上可以加速社会发展,

  6.2油田异构生产数据整合系统需求分析

  油田异构生产数据整合的研究对国内的油田系统具有很大的好处。
  目前众多的油田系统中的生产数据具有数量多、种类杂、以及不同的版本差异的特点,因此对于中间件的开发,面对操作者来说,便捷的使用是放在第一位的,第一次上手的人员可以快速的掌握对油田异构生产数据的操作。
  对油田异构生产数据进行增加数据操作,操作者输入简单的sql语句进行数据插入,例如:insert into table1(id,name)values(1,”油田数据1”),对table1中进行id=1并且name=”油田数据1”的数据插入;
  对油田异构生产数据进行修改数据操作,操作者输入简单的sql语句进行数据修改,例如:update table1 set name=“油田生产数据”where(id=1),对table1中id=1的数据进行name的修改;
  对油田异构生产数据进行查询数据操作,操作者输入简单的sql语句进行数据查询,例如:select*from table1,进行对整个table1表进行数据查询;
  对油田异构生产数据进行删除数据操作,操作者输入简单的sql语句进行数据删除,例如:delete from table where(id=1),在table1中删除了id=1的油田生产数据。

  第七章开发、测试与评价

  前面章节对如何实现POJO与JSON之间的相互转换、以及如何将数据融合至关系型数据库进行了详细的介绍。通过上述内容的研究与叙述,在该章节中,主要基于上述研究结果,对油田异构生产数据整合系统中的组合构建进行相应的测试,如对开发平台的测试,中间件的测试,以及系统的测试等,并提出相应的测试结果。

  7.1开发平台

  在该油田异构生产数据整合系统的设计中,主要选择Windows 10作为系统开发的平台,选择IDEA作为系统软件开发的环境,选择mysql以及sql server作为系统的数据库。
  操作系统选择Windows 10,其优点主要有如下几条:
  1、与其他微软系统相对比,对于Windows 10系统而言,其具有更优的安全性能,技术较为先进,在其他系统的基础上,性能得到不断的改善和提高,也正因为如此,在该油田异构生产数据整合系统的设计中,选择Windows10系统作为开发平台进行设计。
  2、对于Windows10系统而言,其具有更优的兼容效果,其具有能够兼容全平台的特点,能够适用于全部的电子产品,具有较强的兼容性,在一定程度上避免了软件之间的冲突。
  3、在视图方面,Windows在应用商店的应用使用中增加了屏幕右上角的三个选项,方便鼠标的操作;并且使用了全新的抽象图标,简单明了,画面整洁;可以取消开始菜单或屏幕,为鼠标和触屏分别提供了便利。
  在该油田异构生产数据整合系统中,选择IDEA作为软件开发的环境,主要为java提供语言编程的开发环境,应用十分广泛,能够为使用者提供CVS整合、重构、Ant以及J2ee等多种功能,在软件开发中,处于较为领先的地位。一般而言,对于一些普通开发设计,通过eclipse便可完成相应的功能,且因其操作简单易学,得到了许多开发者的喜爱,但其在软件开发的过程中,存在相应的问题,其具有较低的兼容性特点,代码层面设计也存在相应的难度等。总而言之,选择IDEA作为软件开发的环境,在一定程度上弥补了eclipse中的一些不足,提高了系统的性能和运行效率。此外,IDEA还拥有强大的整合能力:比如Git、Maven、Spring等支持,提示功能的快速、便捷,提示功能的范围比较广,好用的快捷键和代码模板,精准搜索等。
  数据库则选用目前流行并且很常见的两种数据库,MySQL,SQL Server。

  7.2中间件设计

  在对油田异构生产数据综合系统设计的过程中,选择java webservice project作为系统的中间件进行设计,其主要代表着Web的一个分支,主要实现系统的跨平台操作,且具有能够自行描述、定位以及发布等特点。通过web服务器,能够实现和调用各种难易程度的请求执行,功能较为全面,应用较为广泛。
  7.2.1框架选择
  目前有大量的Java开源框架可以供大众使用,在本次研究中,数据的控制层将选用SpringBoot这一轻量级框架,持久层选用Mybatis这一框架。
  7.2系统测试
  在本次设计中,选用Swagge-UI进行数据测试,Swagger-UI是一种自动生成接口文档,不需要频繁更新接口文档,保证接口文档与代码的一致,非常值得学习。
  油田系统的操作进入Swagger-UI,根据是否需要返回生产数据信息,来选择执行方式,在Parameters参数栏进行json数据的输入,选择database是MySQL或是SQL Server;再对database中所选择的数据库下数据表table进行选择;最后输入需要执行完成的操作sql语句,通过执行后,返回Messages信息,判断操作是否成功。

  具体的操作显示如下图:

油田异构生产数据相关概述

  7.3系统评价

  在对系统进行运行之后,在Swagger-UI界面进行结果测试,会产生测试结果,由于在网页中展示,因此其中包括显示HTTP Status Code、最终的油田生产数据展示、以及反馈本次测试的代码细节。
  7.3.1 HTTP Status Code
  7.3.2油田生产数据展示
  7.3.3测试细节
  7.4中间件功能评价
  正如在前面章节第六章第2小节的需求分析中介绍,本次油田异构生产数据研究对以下功能做出了设计:
  1.油田异构生产数据基于中间件设计实现了MySQL和SQL Server异构数据库的数据整合;
  2.为油田系统的使用者提供了便于操作的页面展示,实现统一的数据操作访问接口;
  3.本次基于中间件的油田异构生产数据整合使得对多数据库的操作变得编辑。
  综上三点,可以认为对油田异构生产数据整合在基于JSON中间件的开发上,基本实现了异构生产数据的整合。

  第八章工作总结与展望

  8.1论文总结

  随着大数据时代的来临,以及迅速发展起来的计算机技术行业,各类油田系统面对着庞大的数据集,相应也产生了愈来愈复杂的数据结构。面对多个场景下的海量数据处理,最开始的单一数据库系统已经难以招架,从而演变出了多数据库系统。随之而来油田数据中就会产生大量的异构数据,在油田异构数据库之间要实现数据交互,变成了我们迫切需要解决的一个问题。本次研究就正是在这样的一个背景下,基于JSON中间件格式完成一个数据库异构整合与集成的设计。
  本文通过选用基于JSON的中间件进行开发,利用JSON让之成为在JavaBean对象与数据库之间的一座桥梁,使JSON的一些相关优势极大的发挥作用,它的跨平台性,可移植性,以及系统扩展性,这些优势让此次研究变得可行起来。
  在论文的攥写过程中,也遇到了不少问题,比如各个油田异构数据库数据与JSON格式数据之间的相互转换方案的选择,初步想法是使用借助外部JsonUtils工具类,借助它将Java对象转换为JSON格式,当然它也可以将JSON字符串转换为Java对象。
  其次,由于使用了多种框架,从而使得本次研究变得方便起来,例如Mybatis框架,在一定程度上大大解决了结果集的检索、利用手工对参数进行设置以及jdbc代码等,并能够通过配置文件以及注解的方式,对映射进行相应的配置,同时,将POJO通过相应的操作程序实现对数据记录的映射。

  8.2未来展望

  虽然本次研究已经完成,但是限于自身研究能力、研究时间等因素,本文仍有很多可以研究的方面。
  在本次油田异构数据集成研究中,在对于JSON与多种油田异构数据库之间的相互转换的这一方面做了相关的深入研究,但对于油田异构数据源来说,不止这一种,如XML这一格式,以及文本文档等,这些均有研究的可能性。
  并且,在进行数据转换的过程中,本次研究中是基于静态sql在JSON数据和JavaBean数据进行转换的,在未来更深入的研究中,可以研究如何使用动态sql进行油田间的异构数据转换,这或许可以实现更加复杂的油田异构数据库之间的异构数据整合。
  此外,在本次研究中,仅对异构的数据库系统进行了相关研究,但是仍存在其他异构方式,例如操作系统之间可能存在的异构、还有在计算机平台上异构的这种可能。多种的异构数据研究,可以使得数据集成整合系统使用范围变得更加宽泛。

  参考文献

  [1]邹一丹.异构数据源集成系统中查询重写的研究[D].哈尔滨商业大学,2017.
  [2]谷方舟,沈波.JSON数据交换格式在异构系统集成中的应用研究[J].铁路计算机应用,2012,21(02):1-4.
  [3]王华志.基于JSON的异构数据源数据交换技术研究[D].武汉:武汉理工大学,2015.
下载提示:

1、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“文章版权申述”(推荐),也可以打举报电话:18735597641(电话支持时间:9:00-18:30)。

2、网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。

3、本站所有内容均由合作方或网友投稿,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务。

原创文章,作者:写文章小能手,如若转载,请注明出处:https://www.sbvv.cn/chachong/15916.html,

(0)
写文章小能手的头像写文章小能手游客
上一篇 2022年1月14日
下一篇 2022年1月14日

相关推荐

My title page contents