基于JSON的异构数据库整合研究_毕业论文.doc_第1页
基于JSON的异构数据库整合研究_毕业论文.doc_第2页
基于JSON的异构数据库整合研究_毕业论文.doc_第3页
基于JSON的异构数据库整合研究_毕业论文.doc_第4页
基于JSON的异构数据库整合研究_毕业论文.doc_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于json的异构数据库整合研究json based heterogeneous database integration research目录目 录摘 要iabstractii第1章 绪 论11.1 课题背景11.2 研究意义21.3 研究现状21.4 所做工作及文章结构3第2章 异构数据库整合52.1 数据库52.1.1 数据库简介52.1.2 本文所研究的数据库62.2 异构数据库62.3 异构数据库整合的背景和意义72.4 异构数据库整合的目标82.5 异构数据库整合的基本方法92.5.1 异构数据库整合基本方式92.5.1 异构数据库整合常用方式102.6 异构数据库数据整合重难点122.7 本章小结12第3章 json与pojo之间的映射研究133.1 json的解码133.2 json与xml的比较163.3 json与pojo的相互转化173.3.1 pojo的序列化与反序列化183.3.2 将pojo转化为json203.3.3 将json转化为pojo213.4 将json融入orm213.5 本章小结22第4章 异构数据库与json的映射研究234.1 json与异构数据库整合系统设计234.2 json与异构数据库的映射技术244.2.1 基于模板的映射方法244.2.2 基于数据库模型的json映射方法254.3 将关系数据库的数据转化为json264.4 将json转化为关系数据库的数据274.4.1 单表映射274.4.2 多表一对多映射284.4.3 多表多对多映射284.4.4 映射算法总结294.5 本章小结29第5章 基于json的数据库映射中间件的开发、测试及评价315.1 开发平台简介315.2 中间件分析315.3 中间件设计335.3.1 选取工程335.3.2 选择框架335.3.3 框架整合使用335.4 编码实现中间件335.4.1 引入spring和hibernate345.4.2 将数据库的表映射为pojo类345.4.3 定义中间件访问接口345.4.4 单元测试355.5 测试环境搭建355.5.1 系统环境355.5.2 使用badboy录制脚本355.5.3 使用jmeter测试365.6 数据库映射中间件性能评价375.6.1 jmeter图形报表385.6.2 jmeter表格报表385.6.3 中间件性能分析395.7 数据库映射中间件功能评价395.8 本章小结40第6章 总结与展望416.1 总结416.2 展望41参 考 文 献42摘要摘 要从数据库诞生到现在,经过长期的积累,互联网里有着相当数量的异构数据库系统。由于现代信息化建设的需要,许多系统需要去访问异构的数据库系统。对于以数据库为中心的系统的开发者而言,因为异构数据库的存在,他们在开发、维护和升级的成本比常规单一的数据库系统要高的多。由于json是一种独立于任何计算机语言且与平台无关的通用数据交换格式,使用json作为数据交换格式,来整合异构数据库系统成为了一种可能。在此构思的基础上,本文在现有的基于xml的异构数据库系统整合方法的基础上提出了基于json的异构数据库系统整合方法,该方法可以大幅度的降低异构数据系统的开发、维护和升级成本,避免异构数据库系统带来的各种弊端,提高了程序开发的效率。本文主要研究了json与异构数据库数据的映射及其算法,具体包含以下内容:1) json作为异构数据库系统整合的数据交换格式的可行性;2) 将json转换为pojo;3) 将pojo转换为json;4) json与异构数据库之间的映射算法。为了验证方法的有效性,选择了三个异构的数据库系统,通过编码实现了基于json的异构数据库系统中间件。为了验证中间的性能,使用badboy和jmeter对中间件进行了测试。关键词:josn;异构数据库;pojo;java;orm43abstractabstractborn from the database to the present, long-term accumulation of the internet with a considerable number of heterogeneous database systems. due to the needs of theconstruction of modern information technology, many systems need to accessheterogeneous database systems. for developers, database-centric system, becauseof the presence of heterogeneous databases, their development, maintenance andupgrade costs higher than the conventional single database system.since json is a universal data exchange format that is independent of any computer language and platform-independent, using json as a data exchange format, to integrate heterogeneous database system has become a possibility. on the basis ofthis idea, proposed in the existing heterogeneous database system xml-basedintegration method based on json-based heterogeneous database systems integration, the approach can significantly reduce the development of heterogeneous data systems maintenance and upgrade costs and avoid all the disadvantages ofheterogeneous database systems, improve the efficiency of program development.this paper studies the json and heterogeneous database data mapping algorithmspecific to include the following:1) the json as the data integration of heterogeneous database systems to exchangethe feasibility of the format;2) convert json into pojo;3) convert pojo into json;4) json with heterogeneous database mapping algorithm.in order to verify the validity of the method, select the three heterogeneous database system, by encoding the json-based heterogeneous database system middleware. in order to verify the performance of the middle, use badboy and jmeter to test themiddleware.key words: josn; heterogeneous databases; pojo; the java; orm第1章 绪论第1章 绪 论在互联网还没诞生之前,数据库的应用还只是局限于军方、科研组织、政府机构。在互联网普及之后,数据库应用以井喷式的速度增长。比如我们每天使用的通信软件qq,他需要使用数据库保存每个用户的各种各样的信息。比如邮件系统,我们草稿、已发送邮件、未阅读邮件、已阅读邮件和垃圾邮件都是保存在数据库里的。再比如铁道部的12306网上订票系统,火车票信息全部是保存在数据库里面。我们日常生活的方方面面都已经离不开数据库了。尽管数据库应用如此之广,但是遗憾的是对于以数据库为核心的系统的开发者而言,不同数据库厂商之间的访问方式之间是存在不少差异的,即使是同一数据库厂商,其不同时期的产品的访问方式也是有差异的。这意味着同一应用系统更换不同的数据库或者升级数据系统都需要去修改源代码。同一应用系统同时访问多个异构数据库的情况也比较常见,这意味着开发应用系统时需要考虑不同数据库系统之间的差异。若多个数据库系统之间一直以异构数据库系统的的形式存在,这对现代企业信息化建设来说,其后期的开发、维护和升级成本将非常高。针对这种情况,有些研究人员提出各种各样的异构数据库系统整合方案,其中比较有代表性的方案是以xml作为数据交换格式的整合方案。1.1 课题背景现代计算机应用系统无不以数据为核心,而数据的载体正是数据库,也称做数据仓库。性能优良、可靠性高、安全性高的数据库现在都被商业公司以产品化的形式推出来,比如it巨头oracle推出的11g,microsoft推出的sql server系列,ibm的db2和informix,sysbase推出的adaptive server enterprise12.5。也有免费开源的产品比如mysql和postgresql。数据库产品的现状可谓是百花齐放。问题随之而来,各个数据库产品之间存在着不小的差异。差异体现在:1) 不同数据库存储同一信息采用的数据类型可能不同。2) 标准的结构化查询语言sql,在各产品实现时也作了一定的修改,比如加入了自己的方言和其他习惯。3) 不同平台对数据库访问的接口不同。这些平台主要有java、php和windows等,这些平台的访问方式各有差异。由于历史原因,在同一企业内部,往往存在着多平台。这与现在企业信息化建设所追求的信息同步、信息共享是背道而驰的。对应计算机应用系统的开发者而言,当需要跨数据库操作时,同样是苦不堪言,处理同一数据在不同数据库之间的差异,是件单调枯燥而费时的事情,非常影响工作效率。1.2 研究意义基于以上背景,ansi制定出来sql,以期望解决不同数据库之间访问差异的问题。在使用到数据库的的系统中,针对数据库开发往往使用sql语言。尽管sql是由ansi(美国国家标准协会)制定的标准,但不幸的是数据库厂商没有完全执行这一标准,所以存在许多不同版本的sql语言。但是为了与ansi标准相兼容,不同的数据库必须以相似的方式共同地来支持一些主要的关键词(比如 select、update、delete、insert、where 等等)。不同数据库的sql之间也就只是一些主要的关键词是一致的,仅此而已,在其他方面或多或少存在着差异。仅仅依靠sql来减少不同数据库之间的差异是远远不够的。现在数据库产品就是一个百花齐放的情形,现在正在应用的数据库系统在短期内都不会消失,而新的计算机系统又极可能采用了新的数据库系统,差异在不断的产生形成。在这种情况下,如果有一个数据库中间件,对于开发者和使用者而言,直接访问中间件,由数据库中间件完成数据的访问,而数据库是透明的。这样就从数据库使用者和开发者角度消除了不同数据库产品之间的差异,从而极大的提高了数据库使用者和开发者的效率。1.3 研究现状因为不同数据库之间的差异会给数据库的使用者和开发者带来工作上的困扰。为了解决这个问题,现在主要有以下几种解决方案:1)开发数据互连(odbc,open datebase connectivity)。它是microsoft开发服务架构(wosa,windows open services architecture)中有关数据库的一个部分。开发数据互连通过建立规范,提供了一组针对windows应用程序了访问数据库的编程接口。这些编程接口主要利用sql语句来完成其大部分工作。2)java数据库连接(jdbc,java datebase connectivity)。它是一组使用java语言编写的类和接口的集合,为多种关系型数据库提供统一的访问。其本质是java程序通过它执行sql语句,从而访问数据库。3)hibernate、mybatis等基于java的数据持久层框架。java语言平台有大量优秀的开源框架,hibernate和mybatis都是非常优秀的开源数据持久层的框架。hibernate和mybatis的思想类似,只不过hibernate更加的“面向对象”。他们将数据库中的数据表中的数据项映射为java语言中的简单java对象(pojo,plain old java objects),然后在java程序中就可以直接通过操作简单java对象,从而间接操作数据库。这种映射关系又叫对象关系映射(orm,object relation mapping)。hibernate和mybatis的本质是对jdbc的封装,从而简化开发者访问数据库的工作,因而他们深受广大开发者的喜爱。4)采用xml作为数据库的通信格式的中间件。其思想是通过建立中间件,让应用程序直接访问中间件,然后中间件去访问各种异构的数据库。通过中间件可以屏蔽数据之间的访问差异,开发者只需要知道怎么访问中间件就可以了,通过制定规范可以使任何平台的应用程序访问中间件是一致。以上研究中都只是一定程度上解决了某些特定应用中的问题。1)只是针对windows平台提供了支持,2)、3)只是基于java平台。4)的更具有全局性,哪怕以后平台再多,其规范也可以统一。但是其需要的解决的问题也和多,比如怎样将数据表中的数据项映射为xml格式的文本,xml的格式很繁琐不易于解析,xml格式笨重、性能不佳。1.4 所做工作及文章结构本文就基于json的异构数据库整合研究进行了一些研究和探索,在文中主要完成以下几个方面的工作:1 介绍异构数据库,并对异构数据库整合的主流方法进行介绍;2 研究了使用json作异构数据库数据交换格式的可行性及其优势;3 研究了json与pojo之间的映射;4 研究了关系型数据库与json之间的映射;5 讲述了以scm、qms、bom三系统的为例的进行异构数据库系统的整合中间件的开发过程;6 中间件测试。使用badboy + jmeter组合,对中间件进行了压力测试,并对结果进行分析,得出中间件的各方面结论。本文的章节安排如下:第1章:绪论,首先介异构数据库系统的整合的的背景和意义,研究现状,本文作者所做工作以及本论文的章节安排。第2章:异构数据库整合,首先介绍了数据库、异构数据库、异构数据库整合的背景和意义,接着阐述了异构数据库整合的目标、异构数据库整合的基本方法和异构数据库整合的重难点。第3章:json与pojo之间的映射研究,首先介绍了json,讲解了json优势,接着将json与xml作比较,再接着研究了json与pojo的映射,最后研究了如何将json融入数据库的orm模型。第4章:异构数据库与json的映射研究,首先研究了json与异构数据库整合系统设计,接着研究了json与异构数据库的映射技术,最后研究了系型数据库与json的映射。第5章:基于json的数据库映射中间件的开发、测试及评价。在开发方法,首先对开发平台做了简单的介绍,接着对本文的中间件做了分析,再接着对中间的结构设计做了说明,最后介绍了下中间件平台的编码工作。在测试和评价方面,首先介绍了测试环境的搭建工作,接着根据测试结果对中间件的性能做了分析,最后评价了中间的件的功能。第6章:总结,首先对全文做了一全面的总结,接着就本文需要做的进一步的工作做了说明。第2章 异构数据库整合第2章 异构数据库整合将异构数据库整合的最终目的的是消除异构数据库带来的种种不便,其不便主要有:系统访问其他异构数据困难;对于异构数据库的数据需关注其类型转换;系统开发、维护、升级难度大。这些“难”都是对开发者程序开发者而言,对与最终用户来说是没有任何影响的。如果能够将异构数据库系统整合,广大程序开发者的效率将大大提高。对于异构数据库的整合要达到数据透明性和操作透明性,只有这样才算是完成了异构数据库的整合。异构数据库整合的方法从本质上讲有2种,即数据复制方法和模板映射方法。异构数据库常用的整合方法有建立数据仓库方法,建立联邦数据库方法和中间件方法,其中前者属于数据复制方法,后两者属于模板映射方法。在整合异构数据库的过程中的重难点问题是处理好json与异构数据库的数据相互转化的问题,而且转换过程中不能丢失数据库的约束关系。2.1 数据库经过了多年的发展,按其种类划分有很多,本文将根据实际的应用选择一种合适的数据库作为研究对象。2.1.1 数据库简介数据库又名数据仓库(datebase),是按照一定数据结构将真实世界中的数据信息组织、存储、管理起来的数据仓库。数据库按照发展过程大概有如下四类他们分别是:1)网状数据库(network database)。历史上首次出现的数据库是网状数据库,charles bachman于1961年在通用电气公司(general electric co,简称ge)成功地研制出全球首个网状数据库。网状数据库的出现为数据库系统的概念、方法、技术奠定了基础。网状数据库的特点是其数据模型是以节点为基本单位构成的网状结构,对应于有向图1。2)层次数据库(hierarchiacl database)。层次数库的出现完善了数据库系统的概念,其特点是其结构为有向有序的树状结构2。3)关系型数据库。关系型数据库绝对是当代数据库的主流。现在在运行的绝大多数系统的数据库都是使用关系型数据库3。4)非关系型数据库(简称nosql)。nosql是近年快速成长起来的非关系松散数据存储类型数据库。它打破了关系型数据库长久以来占主导地位的。nosql存储在使用前不需要事先设计好表结构,它不会出现多表之间的水平分割和连接操作,学术界称nosql类型的数据库为结构化存储。随着互联网世界web2.0标准的兴起,它不仅改变了网站的表现形式,同时也对网站的整体性能提出来更高的要求。面对着随时可能出现大规模数据的读写4(比如120306网站,也就是铁路客户服务中心的网上订票系统,在春节这种高并发环境下就不能满足广大用户的使用需要),传统关系型数据库在性能上似乎达到了瓶颈,特别是高并发性的sns纯web2.0动态网站和超大规模的门户网站的时候更显得力不从心。这时nosql应运而生,它抛弃了关系型数据库的许多限制性能提升的部分,因为这些部分在处理表单的存储上是可有可无的东西。同时,在互联网上的应用更让它声名鹊起,许多大公司在nosql的概念下开发出了实际可用的数据库产品,例如:amazon的dynamo、google的bigtable、zvents的hypertable、apache的hbase,这些都是很有代表性的产品,并且在实际应用中得到检验。2.1.2 本文所研究的数据库在现代数据库产品中,网状数据库和层次数据库都已经成为历史了。当今,关系型数据库仍然牢牢占据市场头把交椅,绝大多数系统都是以关系型数据库产品作为其数据中心。nosql目前虽然炙手可热,但应用比较局限,在高并发、海量数据、高度可扩展的环境中应用比较多,比如sns网站、云计算等。所以本文的研究对象是关系型数据库(在以下内容,“数据库”这个词在没有特别强调的情况下都指的是关系型数据库)。2.2 异构数据库异构数据库系统是多个相关的数据库系统的一个集合,因为实际业务的需要,必须实现异构数据库系统之间数据的透明访问和共享,异构数据库系统中每个数据库系统在加入异构数据库系统之初本身就已存在,完全独立拥有属于自己的数据库管理系统5。异构数据库系统的各个数据库系统具有自治性,它们共享数据的同时,每个数据库系统依然保有自己的完整性控制、安全性控制和应用特性。异构数据库系统是一个既与各个异构数据库有密切联系,又区别于各个数据库的新的概念,它的研究目标是对物理上分布的一个或多个异构数据库,在尽可能少的影响本地数据库的自治性的基础上,构造出具有开发者所需要的可以接口统一、透明访问的全局数据库管理系统,以支持对内部各个数据库的全局应用和异构数据库之间的数据信息共享和交换6。异构数据库系统的形成原因主要有以下几方面:1) 计算机平台不同。计算机系统指的是计算机基础环境,包括硬件平台、操作系统、访问控制、并发控制和通信方式。具体细分如下:a)计算机硬件异构。根据计算机cpu的不同,也就是数据库系统可能分别存储在大型机、小型机、工作站、个人电脑或嵌入式系统等中。b)操作系统的不同。数据库所在计算机的操作系统可能是 microsoft的windows、windowsnt、各种版本的unix、linux、ibm05/2、macos等。c)开发语言的不同。比如c、c+、java、delphi等。d)网络平台的不同。比如以太网结构、令牌环结构等。2) 数据库系统不同。a) 数据库系统类型不同。即便计算机平台相同了,在该平台上采用的数据库系统也可以是不同,如网状、层次、关系、非关系型数据库等7。b) 数据库产品不同。即数据库可能是同为关系型不同厂商的数据库系统的如mysql、postgresql、oracle、ms sql server、db2等。也可能是相同厂商不同时期的数据库产品或不同品牌产品8。3)逻辑结构不同。逻辑结构不同体现在命名差异、值类型差异、模式不同和语义不同等。比如语义的差异具体体现在相同的数据形式表示几种不同的语义,又或者同一语义由几种不同形式的数据表示9。2.3 异构数据库整合的背景和意义当今时代,信息资源己成为政府企业的每个部门的重要资源和财富。建立起一个满足各级部门以及跨部门信息处理要求的的信息系统成为一个组织或企业健康生存和持久发展的先决条件。而作为信息系统基础和核心的数据库技术得到非常广泛的应用。毫不夸张的讲,每个系统都有至少有一个或者多个数据库支持。无论是大型信息系统还是小型单项事务处理系统,无论是联机分析处理还是联机事务处理,无论是计算机辅助设计与制造(cad/cam)10、计算机集成制造系统(cims)、办公信息系统(oa)、地理信息系统(gis)还是一般企业管理到等,几乎每个应用领域都采用数据库处理并存储它们的数据信息资源,达到了无数据库不系统的地步。然而,随着信息化建设的持续不断深入和计算机科学技术的快速发展,数据库应用技术发展到现在,已经有很多的科研机构和企业积累了大量的数据,这些数据中又有很多是以电子数据的形式存在于数据库中,由于信息建设规划不足、部门差异、系统差异,导致大量的异构数据的存在,这些数据中又有很多是重复冗余的,同时数据库使用者并为存储和管理这些数据进行不断投资。而且企业内各部门或者政府不同部门需要从彼此不同的应用系统的数据库中获取并管理业务数据,以充分利用系统资源。不仅如此,在同一行业内部的信息也迫切需要集成,比如,国内外各大航空公司都研发自己的航空信息系统,而综合各大航空公司的票务数据信息为广大用户提供统一的查询服务,对用户来讲将受益匪浅。就信息数据源而言,同一企业或组织存在多种数据库系统是客观事实。因历史遗留存在着层次、网状以及关系数据库系统,对同一时期的同一大企业、及其各部门使用不同数据库系统更是屡见不鲜,并不是人们去刻意追求异构数据库系统,而是上述问题在现实中难以避免。以一个大型企业或组织为例,它在国内外都有分公司或部门,存在不同的时期、不同的分公司可能安装了不同的数据库系统如ms sql server、sybase、db2、oracel等。即使是一个经过严密信息规划的企业或组织,随着时间的推移、行业技术的变革、认识的变迁、以及数据库技术和市场的变化,都极有可能形成异构数据库的局面。因此,为了使异构数据库中系统中的数据能够以最简便的方式的实现数据资源共享、减少数据冗余,使用户仅通过一个全局查询就能得到一个全面的结果,而不必去知晓各个物理数据库系统的组成和分布,我们迫切的需要集成多个异构的数据,建立一个异构的数据库系统。这样开发者就可以仅通过一个透明和统一的接口来访问异构数据库系统中的所有数据了。2.4 异构数据库整合的目标异构数据库系统整和的最终目的是实现终极数据资源共享和降低开发者使用数据库的难度。对于异构数据库系统整合以后在功能上需要实现的两大具体目标是:1. 数据透明性当开发者需要进行数据库读写操作时,仅需要使用整合数据库中的表或者属性的逻辑名称即可。但是,事实上这个整合数据库可能是分散在很多不同地理位置节点上的异构数据库组成的,这些物理上异构子库是分别由自己不同的局部数据库管理系统(ldbms)管理。异构数据库整合后的系统就是需要利用整合系统管理所有数据代替局部异构数据库独立完成某项读写,从而达到如下数据透明的效果:a) 数据库物理位置透明;b) 数据表、数据项透明;c) 数据库异构性透明;d) 局部映射透明;e) 异构数据库汇总结果透明。2. 操作透明性操作透明性具体指的是开发者在进行整合后的异构数据库系统读写时,操作变得十分简单,开发者只需清楚怎么与整合的异构系统进行交互就行了,而不必去了解怎么与各个异构数据库系统的交互。具体体现在:a) 开发者不需要知道计算机网络组成及其的使用方法;b) 开发者不需要知道各节点上的计算机操作系统、数据库管理系统;c) 开发者不需要关注全局sql语句的分解;d) 开发者不需要关注向局部异构数据库的读写操作;e) 开发者不需要关注局部查询结果如何返回给查询结点以及如何汇总等。2.5 异构数据库整合的基本方法异构数据库整合的方法比较多,总结起来都是将其在数据库管理系统(dbms)一级上做一些工作,将数据库系统的的异构统一起来,因为在这个层次上才能保证异构数据库系统自身的独立完整性。2.5.1 异构数据库整合基本方式从物理本质上看异构数据整合方式可以分为两类,其一数据复制方法,其二模板映射方式。1) 数据复制方法是将原来的数据库中的数据转移到新的数据库系统中,同时抛弃以前的数据库系统,改而使用新的数据库系统。图2-1形象的展示了这一过程,将原始数据取出来,经过数据转换,然后写到新的目标数据库里面。由于异构数据库之间的数据类型一般都有差异,特别是数值类型的数据,为了把不兼容的数据类型写入,必须这些数据类型转换成新的数据类型。不少数据库供厂商都提供这种功能,但也就局限于该供应商自己的数据库产品之间。这种方案的缺点是需要抛弃原有的系统,使用新开发的系统,成本比较高。因此,这种方案只适用于那些确定需要抛弃原有系统的情况,在这种情况下,只需要把原来的数据导出来即可。并且该方法很繁琐,特是表结构发生大的变化时,工作量将很大。故该方案局限性很强,不具有通用性,因此本文后面也就不研究这种方法。图2-1 数据复制方法示意图2) 模板映射方法是使用中间件、中间系统等技术来整合各种异构数据库系统,该方法的特点是不会改变原来数据库系统的管理方式,也就是保证了异构数据库的独立性。该方法工作于应用程序之间和异构数据库系统之间11,向下访问可各个异构数据库,向上为应用程序提供统一的数据表、数据项、数据类型以及通用数据访问的接口。如图2-2所示,该图展示了采用模板映射的方法实现了异构数据库整合,特点是应用程序与数据库之间多了个模板映射中间件或中间系统,也就是说,应用程序不直接与数据库系统交互,而是通过直接访问中间件或中间系统来实现间接访问数据库系统。若不考虑中间件的性能的话,显模板映射是最为理想的整合异构数据库的方法,因为它不仅实现了2.4节提到的目标,而且具有通用性、可扩展性。所以本文研究方法锁定在模板方法上。图2-2 模板方法示意图2.5.1 异构数据库整合常用方式现在,主流的数据整合方式有以下几种:数据仓库(即data warehouse)、联邦数据库(即federated database)、中间件(即middleware)12等。1) 数据仓库。建立一个数据库系统,将这个数据库作为数据仓库,通过etl(即extract transformand load)工具手动或自动的多个异构数据库系统读取数据并过滤,并将需要更新的数据写到数据仓库,如图2-3所示,它展示了一个整合了2个异构数据库的数据仓库。与一般普通的数据库系统不同的是:数据仓库中存储的主要是汇总数据和历史数据。它的定位是为企业高级管理人员提供数据分析和决策支持13。图2-3 数据仓库示意图2) 联邦数据库。联邦数据库是异构数据库整合方法中的比较最简单方式。它的实现方法是将所有组成异构数据库做一对一的相互连通,如图2-4所示。这样就会出现如下的情况:如果需要整合n个异构数据库,那么n个数据库中的任何一个都需要访问其他的(n一1)个数据库,那么这意味开发者需要编写n(n一1)段代码以实现两两之间的相互访问。可看到这种方法弱点比较明显,即维护、升级代价太高。图2-4 联邦数据库3)中间件(middleware)。中间件是种独立的应用服务程序和系统软件,分布式应用程序借助这种软件在异构的技术之间实现资源共享。中间件位于操作系统之上,通过计算机网络通信,实现数据交流。它是连接两个独立系统和独立应用程序的软件。与中间件相连接的系统,尽管它们可能具有不同的接口,但是他们通过中间件互连之后就能进行数据信息交换。数据库中间件是中间件的特定一种,它分别连接这用户和数据库,数据库中间件负责完成所有的数据逻辑处理(比如数据统计,数据排行,数据转换等),为客户端提供了统一的访问接口,起着用户和服务器机器之间的桥梁作用,中间件在收到用户的请求后,它会根据请求的内容找到不同的数据库并对相应的数据去请求数据,中间件在使用sql语句将数据库中的相应数据取出后,再在中间件层中进行各种逻辑操作,在处理完成后再返回给客户端。如图2-5所示,数据库中间件的工作原理图。数据库中间件具有以下特点:移植性好、集成方便、易于扩充、使用简单、安全级别高。图2-5 数据库中间件示意图2.6 异构数据库数据整合重难点要实现异构数据库系统的整合需要做的以下几点:1) 首先需要选取一种通用的数据交换格式;2) 通用数据交换格式转化成关系型数据库的数据;3) 关系型数据库的数据转换成通用数据格式;4) 通用数据交换格式表达orm模型的关系;本文在接下来的工作都是围绕这几点来进行研究的。2.7 本章小结本章介绍了数据库的发展过程,其过程具有比较强的时代特征,特定的时代流行特定的数据库系统。也介绍了异构数据库,阐述了异构数据库系统的现状及其形成原因等。最后讲解了异构数据库系统整合的目标、方法、重难点。第3章 json与pojo之间的映射研究第3章 json与pojo之间的映射研究pojo在java里指的是除了getter方法、setter方法和构造方法之外再无其他方法的最普通的javabean,pojo在orm模型里就是与数据库的数据表相对应的java类。json在javascript运行时环境中指的是javascript对象14,在网络上传输时指的是json文本序列化后的结果。本文的异构数据库整合方式的数据流向是这样的数据库记录pojo对象json对象,如图3-1所示:图3-1 json对象、pojo对象和数据库记录数据流向示意图数据库的数据记录与pojo对象之间的相互转换由orm模型实现。pojo对象与json对象之间的相互转化是本章的研究重点,因为只有完成了pojo对象与json之间的转换,才能让图3-1所示的数据流畅运行。3.1 json的解码json,也就是javascript object notation三个字母的缩写。它是种基于纯文本的轻量级数据交换格式。它对于人类来说可读性强,对于计算机语言来说符合主流计算机语言风格。这使得json既能跨语言、跨平台作为公共数据交换格式,并且也使得广大程序开发者用起来顺手,这一切使得json成为最为最理想的通用数据交换格式15。一般来讲json有如下两种结构:1)由“名称/值”组成的对的集合(即a collection of name/value pairs)。在不同的编程语言中,它分别被理解为对象(object),结构(struct),纪录(record),哈希表(hash table),字典(dictionary),有键列表(keyed list),或者关联数组(即associative array)16。2)值的有序列表(an ordered list of values)。在绝大多数现代计算机语言中,它被看成是数组(array)17。这两种结构都是使用频率很高的数据结构,主流现代计算机语言都会用某种形式去支持这两种数据结构。基于这个特点,json作为一种通用数据交换格式在各种现代计算机语言之间去交换数据成为一种可能。json一般具有如下五种形式:1)对象是一个集合,这个集合由“名称/值对”无序的组成。一个对象的开始标记为“”(左括号)开始,结束标记为“”(右括号)。每个“名称”后紧跟着跟一个“:”(冒号);“名称/值 组成的对”之间使用“,”(逗号)加以分隔。图3-2 json中对象示意图2) 数组是一个集合,它是由是值(value)组成有序集合。一个数组以“”(左中括号)作为开始标记,以“”(右中括号)作为结束标记。值之间使用“,”(逗号)加以分隔。图3-3 json中数组示意图3) 值(value)由双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)表示。而且这些结构可以进行多层嵌套。图3-4 json中值示意图4)字符串(string)是一个集合,它是由双引号围起来的的任意数量unicode字符构成的集合,它使用反斜杠“”表示转义。其中比较特殊的情况是单个字符(character)即由一个字符构成的字符串(character string)。字符串(string)与c语言和java语言里的字符串非常相似。图3-5 json中字符串示意图5)数值(number)也与c语言或者java语言里的的数值比较类似。它去除不常使用的八进制与十六进制格式。图3-6 json中数值示意图3.2 json与xml的比较xml,完整名称中文叫做可扩展标记性语言18,是extensible markup language的首字母构成的缩写。它是一种经常被用来标记电子文件数据而使其具有结构性的标记性语言,同时xml也可以用来标记自定义数据类型、数据,xml是种可以由用户对自己的标记语言进行自定义的源语言。作为标准通用标记语言(sgml)的一个子集,xml特别适用于web的数据格式交换。xml作为一种标准,它在应用程序之间提供一种确定的标准来描述与应用程序无关的结构化数据。这个应用程序间统一确定的标准怎么来确定呢?xml提供了一个辅助工具dtd。dtd即document type definition的首字母的缩写,是一套关于标记符的语法规则19,dtd类似与schema,不同的是schema通常不是由用户自己定义,而dtd则是由用户自己定义的。像一把双刃剑,可以一自定义有好的一面也有不好的一面,这一点既使得xml具有很强的通用性,同时也使得xml变得很繁琐,因为在使用到xml的地方就要用到相应的dtd。json与xml相比,他们都是基于纯文本数据交换格式,xml使用了开发人员可以自定义的dtd,而json使用了约定俗成的固定的dtd,也是就是说json的格式是固定,所有的开发者都知道其格式,而这个格式正是基于面向对象的javascript语言。但这个格式却是非常具有通用性,json与ajax构成了黄金搭档,为web刮起了异步旋风。现代web开发者在web应用里面大量使用json,不仅可以简化表达式简单,而且更重要的是不再需要针对每种应用去写特定的dom解析器了。因为只要文本符合javascript语言的语法规范(也就是json的语法规范),javascrip的解释器会隐性的自动帮你完成解析,将它转换成javascript运行时的对象。在web应用里使用ajax技术的过程是:首先browser端向server端发起ajax请求;接着browser端收到服务端发送的ajax响应;最后javascript解释器使用eval方法来将响应中的json文本转化为javascript运行时的对象。在web应用中使用json取代xml,不但避免了解释器解释xml解析带来的性能缺陷和解释器兼容性的问题,并且对于javascript解释器来讲很容易使用,它可以快速的通过访问对象属性以及遍历数组来获取数据,其可读性对人类来说非常好,完全具备了结构化数据的特点。xml与json在各方面综合比较起来,有以下5点区别:1)可读性。在实现了解释器的前提下,对计算机语言而言,它们的可读性没有什么差异。但对于人类来讲,在构造json和xml的时候,显然json更加清晰明了。在可读性上,json强于xml。2)可扩展性。xml因其自定义功能,所以它与生俱来就有完美的扩展性。同样json里包含了主要数据类型,且没有的数据类型可以通过转换得到,且json可以任意嵌套。所以在可扩展性上,json与xml旗鼓相当。3)编码难度。两者都有不少成熟的编码工具,xml方面有dom4j、jdom等工具,json方面有、json.lib等库。相比之下xml的编码显然要比json难很多,同样是用手工编码的方式去构造json或xml,即使不借助工具也能写出json的文本,但要手工写出xml就比较困难了。所以在编码难度上json教xml有优势。4)解码难度。解析xml的时候需要考虑父子节点之间的层次关系,而json直接是嵌套层次关系。在解码难度上,json较xml要容易。5)流行程度。xml早已经在计算机里被熟悉和使用,而json只是在web里应用较多。就ajax应用而言,json相比xml具有压倒性优势。在流行程度而言,json具有很大上升空间。在本的研究中,需要网络上传输的数据主要是数据库里的数据。而且本文里要研究的数据库是关系型数据库,关系型数据库里面数据都是以数据表和字段来表示数据。这与json中的key/value不谋而合,我们可以使用json里面的key来表示表名,使用value来表示该表的某条记录。而这个value又是一个josn对象,它的key是表的字段名称,value是该记录在该字段的值。这样关系数据库里面的每条记录可以轻松的用josn表示出来,而且解析也方便。所以本采用josn作为数据传输格式。3.3 json与pojo的相互转化json是javascript语言中对对象的一种文本表示,可以说json代表着javascript中的对象。而pojo是java语言中数据持久层的普通对象。同样一个对象,使用java表示与使用json(javascript)表示会有什么样的异同呢?3.3.1 pojo的序列化与反序列化当不同操作系统中两个java进程在进行远程通信时,这两个进程可以通过计算机网络相互传送各种类型的数据。在传输的时候与数据类型无关,它们都是以二进制序列的形式在计算机网络上传输。在发送接收过程中,发送方会把这个java对象(pojo类的对象)转化为字节序列,以便于在计算机网络上传输;接收方在收到发送方的数据以后,会把字节序列再转换成java对象(pojo类的对象)。把java对象转换成字节序列的过程称为对象的序列化。把字节序列转换成java对象的过程称为反序列化。对象的序列化过程主要有以下两种用途:1)把对象的字节序列二进制数据永久地存储在硬盘上,也叫对象持久化,通常保存在数据库中。2)在网络上传输对象的字节序列二进制数据。pojo作为特殊的类,它的对象与数据库的记录一一对应。pojo对象序列化以后,就意味着可以将序列化后的结果在网络上传输,这个过程对象变成了数据。这个过程相反,在接收到了pojo对象的数据后,程序需要对该数据作反序列化操作,这个过程就把数据转换成对象了20。java序列话过程如下:1) 创建文件fileoutputstream类型的文件fos;2) 创建objectoutputstream类型的对象oos = new objectoutputstream(fos);3) 获得对象obj;4) 向oos里持久化obj,即os.wirteobject(obj);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论