《基于JSON的异构数据库整合研究_毕业论文(41页).doc》由会员分享,可在线阅读,更多相关《基于JSON的异构数据库整合研究_毕业论文(41页).doc(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于JSON的异构数据库整合研究_毕业论文-第 33 页基于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 异构数
2、据库整合常用方式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映射方法
3、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 单元
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摘 要从数据库诞生到现在,经过长期的积累,互联网里有着相当数量的异构数据库系统。由于现代信息化建设的需要,许多系统需要去访问异构的数据库系统。对于以数据库为中心的系统的开发者而言,因为异构数据库的存在,
5、他们在开发、维护和升级的成本比常规单一的数据库系统要高的多。由于JSON是一种独立于任何计算机语言且与平台无关的通用数据交换格式,使用JSON作为数据交换格式,来整合异构数据库系统成为了一种可能。在此构思的基础上,本文在现有的基于XML的异构数据库系统整合方法的基础上提出了基于JSON的异构数据库系统整合方法,该方法可以大幅度的降低异构数据系统的开发、维护和升级成本,避免异构数据库系统带来的各种弊端,提高了程序开发的效率。本文主要研究了JSON与异构数据库数据的映射及其算法,具体包含以下内容:1) JSON作为异构数据库系统整合的数据交换格式的可行性;2) 将JSON转换为POJO;3) 将P
6、OJO转换为JSON;4) JSON与异构数据库之间的映射算法。为了验证方法的有效性,选择了三个异构的数据库系统,通过编码实现了基于JSON的异构数据库系统中间件。为了验证中间的性能,使用BadBoy和JMeter对中间件进行了测试。关键词:JOSN;异构数据库;POJO;Java;ORMAbstractBorn from the database to the present, long-term accumulation of the Internet with a considerable number of heterogeneous database systems. Due to
7、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 da
8、tabase 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 heterogene
9、ous 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
10、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 POJ
11、O 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 JMete
12、r to test themiddleware.Key Words: JOSN; heterogeneous databases; POJO; the Java; ORM第1章 绪 论在互联网还没诞生之前,数据库的应用还只是局限于军方、科研组织、政府机构。在互联网普及之后,数据库应用以井喷式的速度增长。比如我们每天使用的通信软件QQ,他需要使用数据库保存每个用户的各种各样的信息。比如邮件系统,我们草稿、已发送邮件、未阅读邮件、已阅读邮件和垃圾邮件都是保存在数据库里的。再比如铁道部的12306网上订票系统,火车票信息全部是保存在数据库里面。我们日常生活的方方面面都已经离不开数据库了。尽管数据库应
13、用如此之广,但是遗憾的是对于以数据库为核心的系统的开发者而言,不同数据库厂商之间的访问方式之间是存在不少差异的,即使是同一数据库厂商,其不同时期的产品的访问方式也是有差异的。这意味着同一应用系统更换不同的数据库或者升级数据系统都需要去修改源代码。同一应用系统同时访问多个异构数据库的情况也比较常见,这意味着开发应用系统时需要考虑不同数据库系统之间的差异。若多个数据库系统之间一直以异构数据库系统的的形式存在,这对现代企业信息化建设来说,其后期的开发、维护和升级成本将非常高。针对这种情况,有些研究人员提出各种各样的异构数据库系统整合方案,其中比较有代表性的方案是以XML作为数据交换格式的整合方案。1
14、.1 课题背景现代计算机应用系统无不以数据为核心,而数据的载体正是数据库,也称做数据仓库。性能优良、可靠性高、安全性高的数据库现在都被商业公司以产品化的形式推出来,比如IT巨头Oracle推出的11g,Microsoft推出的SQL Server系列,IBM的DB2和informix,Sysbase推出的Adaptive Server Enterprise12.5。也有免费开源的产品比如MySQL和PostgreSQL。数据库产品的现状可谓是百花齐放。问题随之而来,各个数据库产品之间存在着不小的差异。差异体现在:1) 不同数据库存储同一信息采用的数据类型可能不同。2) 标准的结构化查询语言SQ
15、L,在各产品实现时也作了一定的修改,比如加入了自己的方言和其他习惯。3) 不同平台对数据库访问的接口不同。这些平台主要有Java、PHP和Windows等,这些平台的访问方式各有差异。由于历史原因,在同一企业内部,往往存在着多平台。这与现在企业信息化建设所追求的信息同步、信息共享是背道而驰的。对应计算机应用系统的开发者而言,当需要跨数据库操作时,同样是苦不堪言,处理同一数据在不同数据库之间的差异,是件单调枯燥而费时的事情,非常影响工作效率。1.2 研究意义基于以上背景,ANSI制定出来SQL,以期望解决不同数据库之间访问差异的问题。在使用到数据库的的系统中,针对数据库开发往往使用SQL语言。尽
16、管SQL是由ANSI(美国国家标准协会)制定的标准,但不幸的是数据库厂商没有完全执行这一标准,所以存在许多不同版本的SQL语言。但是为了与ANSI标准相兼容,不同的数据库必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。不同数据库的SQL之间也就只是一些主要的关键词是一致的,仅此而已,在其他方面或多或少存在着差异。仅仅依靠SQL来减少不同数据库之间的差异是远远不够的。现在数据库产品就是一个百花齐放的情形,现在正在应用的数据库系统在短期内都不会消失,而新的计算机系统又极可能采用了新的数据库系统,差异在不断的产生形成。在
17、这种情况下,如果有一个数据库中间件,对于开发者和使用者而言,直接访问中间件,由数据库中间件完成数据的访问,而数据库是透明的。这样就从数据库使用者和开发者角度消除了不同数据库产品之间的差异,从而极大的提高了数据库使用者和开发者的效率。1.3 研究现状因为不同数据库之间的差异会给数据库的使用者和开发者带来工作上的困扰。为了解决这个问题,现在主要有以下几种解决方案:1)开发数据互连(ODBC,Open Datebase Connectivity)。它是Microsoft开发服务架构(WOSA,Windows Open Services Architecture)中有关数据库的一个部分。开发数据互连通
18、过建立规范,提供了一组针对Windows应用程序了访问数据库的编程接口。这些编程接口主要利用SQL语句来完成其大部分工作。2)Java数据库连接(JDBC,Java Datebase Connectivity)。它是一组使用Java语言编写的类和接口的集合,为多种关系型数据库提供统一的访问。其本质是Java程序通过它执行SQL语句,从而访问数据库。3)Hibernate、MyBatis等基于Java的数据持久层框架。Java语言平台有大量优秀的开源框架,Hibernate和MyBatis都是非常优秀的开源数据持久层的框架。Hibernate和MyBatis的思想类似,只不过Hibernate更
19、加的“面向对象”。他们将数据库中的数据表中的数据项映射为Java语言中的简单Java对象(POJO,Plain Old Java Objects),然后在Java程序中就可以直接通过操作简单Java对象,从而间接操作数据库。这种映射关系又叫对象关系映射(ORM,Object Relation Mapping)。Hibernate和MyBatis的本质是对JDBC的封装,从而简化开发者访问数据库的工作,因而他们深受广大开发者的喜爱。4)采用XML作为数据库的通信格式的中间件。其思想是通过建立中间件,让应用程序直接访问中间件,然后中间件去访问各种异构的数据库。通过中间件可以屏蔽数据之间的访问差异,
20、开发者只需要知道怎么访问中间件就可以了,通过制定规范可以使任何平台的应用程序访问中间件是一致。以上研究中都只是一定程度上解决了某些特定应用中的问题。1)只是针对Windows平台提供了支持,2)、3)只是基于Java平台。4)的更具有全局性,哪怕以后平台再多,其规范也可以统一。但是其需要的解决的问题也和多,比如怎样将数据表中的数据项映射为XML格式的文本,XML的格式很繁琐不易于解析,XML格式笨重、性能不佳。1.4 所做工作及文章结构本文就基于JSON的异构数据库整合研究进行了一些研究和探索,在文中主要完成以下几个方面的工作:1 介绍异构数据库,并对异构数据库整合的主流方法进行介绍;2 研究
21、了使用JSON作异构数据库数据交换格式的可行性及其优势;3 研究了JSON与POJO之间的映射;4 研究了关系型数据库与JSON之间的映射;5 讲述了以SCM、QMS、BOM三系统的为例的进行异构数据库系统的整合中间件的开发过程;6 中间件测试。使用Badboy + JMeter组合,对中间件进行了压力测试,并对结果进行分析,得出中间件的各方面结论。本文的章节安排如下:第1章:绪论,首先介异构数据库系统的整合的的背景和意义,研究现状,本文作者所做工作以及本论文的章节安排。第2章:异构数据库整合,首先介绍了数据库、异构数据库、异构数据库整合的背景和意义,接着阐述了异构数据库整合的目标、异构数据库
22、整合的基本方法和异构数据库整合的重难点。第3章:JSON与POJO之间的映射研究,首先介绍了JSON,讲解了JSON优势,接着将JSON与XML作比较,再接着研究了JSON与POJO的映射,最后研究了如何将JSON融入数据库的ORM模型。第4章:异构数据库与JSON的映射研究,首先研究了JSON与异构数据库整合系统设计,接着研究了JSON与异构数据库的映射技术,最后研究了系型数据库与JSON的映射。第5章:基于JSON的数据库映射中间件的开发、测试及评价。在开发方法,首先对开发平台做了简单的介绍,接着对本文的中间件做了分析,再接着对中间的结构设计做了说明,最后介绍了下中间件平台的编码工作。在测
23、试和评价方面,首先介绍了测试环境的搭建工作,接着根据测试结果对中间件的性能做了分析,最后评价了中间的件的功能。第6章:总结,首先对全文做了一全面的总结,接着就本文需要做的进一步的工作做了说明。第2章 异构数据库整合将异构数据库整合的最终目的的是消除异构数据库带来的种种不便,其不便主要有:系统访问其他异构数据困难;对于异构数据库的数据需关注其类型转换;系统开发、维护、升级难度大。这些“难”都是对开发者程序开发者而言,对与最终用户来说是没有任何影响的。如果能够将异构数据库系统整合,广大程序开发者的效率将大大提高。对于异构数据库的整合要达到数据透明性和操作透明性,只有这样才算是完成了异构数据库的整合
24、。异构数据库整合的方法从本质上讲有2种,即数据复制方法和模板映射方法。异构数据库常用的整合方法有建立数据仓库方法,建立联邦数据库方法和中间件方法,其中前者属于数据复制方法,后两者属于模板映射方法。在整合异构数据库的过程中的重难点问题是处理好JSON与异构数据库的数据相互转化的问题,而且转换过程中不能丢失数据库的约束关系。2.1 数据库经过了多年的发展,按其种类划分有很多,本文将根据实际的应用选择一种合适的数据库作为研究对象。2.1.1 数据库简介数据库又名数据仓库(Datebase),是按照一定数据结构将真实世界中的数据信息组织、存储、管理起来的数据仓库。数据库按照发展过程大概有如下四类他们分
25、别是:1)网状数据库(Network Database)。历史上首次出现的数据库是网状数据库,Charles Bachman于1961年在通用电气公司(General Electric Co,简称GE)成功地研制出全球首个网状数据库。网状数据库的出现为数据库系统的概念、方法、技术奠定了基础。网状数据库的特点是其数据模型是以节点为基本单位构成的网状结构,对应于有向图1。2)层次数据库(Hierarchiacl Database)。层次数库的出现完善了数据库系统的概念,其特点是其结构为有向有序的树状结构2。3)关系型数据库。关系型数据库绝对是当代数据库的主流。现在在运行的绝大多数系统的数据库都是使
26、用关系型数据库3。4)非关系型数据库(简称NoSQL)。NoSQL是近年快速成长起来的非关系松散数据存储类型数据库。它打破了关系型数据库长久以来占主导地位的。NoSQL存储在使用前不需要事先设计好表结构,它不会出现多表之间的水平分割和连接操作,学术界称NoSQL类型的数据库为结构化存储。随着互联网世界Web2.0标准的兴起,它不仅改变了网站的表现形式,同时也对网站的整体性能提出来更高的要求。面对着随时可能出现大规模数据的读写4(比如120306网站,也就是铁路客户服务中心的网上订票系统,在春节这种高并发环境下就不能满足广大用户的使用需要),传统关系型数据库在性能上似乎达到了瓶颈,特别是高并发性
27、的SNS纯Web2.0动态网站和超大规模的门户网站的时候更显得力不从心。这时NoSQL应运而生,它抛弃了关系型数据库的许多限制性能提升的部分,因为这些部分在处理表单的存储上是可有可无的东西。同时,在互联网上的应用更让它声名鹊起,许多大公司在NoSQL的概念下开发出了实际可用的数据库产品,例如:Amazon的Dynamo、Google的BigTable、Zvents的Hypertable、Apache的Hbase,这些都是很有代表性的产品,并且在实际应用中得到检验。2.1.2 本文所研究的数据库在现代数据库产品中,网状数据库和层次数据库都已经成为历史了。当今,关系型数据库仍然牢牢占据市场头把交椅
28、,绝大多数系统都是以关系型数据库产品作为其数据中心。NoSQL目前虽然炙手可热,但应用比较局限,在高并发、海量数据、高度可扩展的环境中应用比较多,比如SNS网站、云计算等。所以本文的研究对象是关系型数据库(在以下内容,“数据库”这个词在没有特别强调的情况下都指的是关系型数据库)。2.2 异构数据库异构数据库系统是多个相关的数据库系统的一个集合,因为实际业务的需要,必须实现异构数据库系统之间数据的透明访问和共享,异构数据库系统中每个数据库系统在加入异构数据库系统之初本身就已存在,完全独立拥有属于自己的数据库管理系统5。异构数据库系统的各个数据库系统具有自治性,它们共享数据的同时,每个数据库系统依
29、然保有自己的完整性控制、安全性控制和应用特性。异构数据库系统是一个既与各个异构数据库有密切联系,又区别于各个数据库的新的概念,它的研究目标是对物理上分布的一个或多个异构数据库,在尽可能少的影响本地数据库的自治性的基础上,构造出具有开发者所需要的可以接口统一、透明访问的全局数据库管理系统,以支持对内部各个数据库的全局应用和异构数据库之间的数据信息共享和交换6。异构数据库系统的形成原因主要有以下几方面:1) 计算机平台不同。计算机系统指的是计算机基础环境,包括硬件平台、操作系统、访问控制、并发控制和通信方式。具体细分如下:A)计算机硬件异构。根据计算机CPU的不同,也就是数据库系统可能分别存储在大
30、型机、小型机、工作站、个人电脑或嵌入式系统等中。B)操作系统的不同。数据库所在计算机的操作系统可能是 Microsoft的Windows、WindowsNT、各种版本的Unix、Linux、IBM05/2、MacOS等。C)开发语言的不同。比如C、C+、Java、Delphi等。D)网络平台的不同。比如以太网结构、令牌环结构等。2) 数据库系统不同。A) 数据库系统类型不同。即便计算机平台相同了,在该平台上采用的数据库系统也可以是不同,如网状、层次、关系、非关系型数据库等7。B) 数据库产品不同。即数据库可能是同为关系型不同厂商的数据库系统的如MySQL、PostgreSQL、Oracle、M
31、S SQL Server、DB2等。也可能是相同厂商不同时期的数据库产品或不同品牌产品8。3)逻辑结构不同。逻辑结构不同体现在命名差异、值类型差异、模式不同和语义不同等。比如语义的差异具体体现在相同的数据形式表示几种不同的语义,又或者同一语义由几种不同形式的数据表示9。2.3 异构数据库整合的背景和意义当今时代,信息资源己成为政府企业的每个部门的重要资源和财富。建立起一个满足各级部门以及跨部门信息处理要求的的信息系统成为一个组织或企业健康生存和持久发展的先决条件。而作为信息系统基础和核心的数据库技术得到非常广泛的应用。毫不夸张的讲,每个系统都有至少有一个或者多个数据库支持。无论是大型信息系统还
32、是小型单项事务处理系统,无论是联机分析处理还是联机事务处理,无论是计算机辅助设计与制造(CAD/CAM)10、计算机集成制造系统(CIMS)、办公信息系统(OA)、地理信息系统(GIS)还是一般企业管理到等,几乎每个应用领域都采用数据库处理并存储它们的数据信息资源,达到了无数据库不系统的地步。然而,随着信息化建设的持续不断深入和计算机科学技术的快速发展,数据库应用技术发展到现在,已经有很多的科研机构和企业积累了大量的数据,这些数据中又有很多是以电子数据的形式存在于数据库中,由于信息建设规划不足、部门差异、系统差异,导致大量的异构数据的存在,这些数据中又有很多是重复冗余的,同时数据库使用者并为存
33、储和管理这些数据进行不断投资。而且企业内各部门或者政府不同部门需要从彼此不同的应用系统的数据库中获取并管理业务数据,以充分利用系统资源。不仅如此,在同一行业内部的信息也迫切需要集成,比如,国内外各大航空公司都研发自己的航空信息系统,而综合各大航空公司的票务数据信息为广大用户提供统一的查询服务,对用户来讲将受益匪浅。就信息数据源而言,同一企业或组织存在多种数据库系统是客观事实。因历史遗留存在着层次、网状以及关系数据库系统,对同一时期的同一大企业、及其各部门使用不同数据库系统更是屡见不鲜,并不是人们去刻意追求异构数据库系统,而是上述问题在现实中难以避免。以一个大型企业或组织为例,它在国内外都有分公
34、司或部门,存在不同的时期、不同的分公司可能安装了不同的数据库系统如MS SQL Server、Sybase、DB2、Oracel等。即使是一个经过严密信息规划的企业或组织,随着时间的推移、行业技术的变革、认识的变迁、以及数据库技术和市场的变化,都极有可能形成异构数据库的局面。因此,为了使异构数据库中系统中的数据能够以最简便的方式的实现数据资源共享、减少数据冗余,使用户仅通过一个全局查询就能得到一个全面的结果,而不必去知晓各个物理数据库系统的组成和分布,我们迫切的需要集成多个异构的数据,建立一个异构的数据库系统。这样开发者就可以仅通过一个透明和统一的接口来访问异构数据库系统中的所有数据了。2.4
35、 异构数据库整合的目标异构数据库系统整和的最终目的是实现终极数据资源共享和降低开发者使用数据库的难度。对于异构数据库系统整合以后在功能上需要实现的两大具体目标是:1. 数据透明性当开发者需要进行数据库读写操作时,仅需要使用整合数据库中的表或者属性的逻辑名称即可。但是,事实上这个整合数据库可能是分散在很多不同地理位置节点上的异构数据库组成的,这些物理上异构子库是分别由自己不同的局部数据库管理系统(LDBMS)管理。异构数据库整合后的系统就是需要利用整合系统管理所有数据代替局部异构数据库独立完成某项读写,从而达到如下数据透明的效果:A) 数据库物理位置透明;B) 数据表、数据项透明;C) 数据库异
36、构性透明;D) 局部映射透明;E) 异构数据库汇总结果透明。2. 操作透明性操作透明性具体指的是开发者在进行整合后的异构数据库系统读写时,操作变得十分简单,开发者只需清楚怎么与整合的异构系统进行交互就行了,而不必去了解怎么与各个异构数据库系统的交互。具体体现在:A) 开发者不需要知道计算机网络组成及其的使用方法;B) 开发者不需要知道各节点上的计算机操作系统、数据库管理系统;C) 开发者不需要关注全局SQL语句的分解;D) 开发者不需要关注向局部异构数据库的读写操作;E) 开发者不需要关注局部查询结果如何返回给查询结点以及如何汇总等。2.5 异构数据库整合的基本方法异构数据库整合的方法比较多,
37、总结起来都是将其在数据库管理系统(DBMS)一级上做一些工作,将数据库系统的的异构统一起来,因为在这个层次上才能保证异构数据库系统自身的独立完整性。2.5.1 异构数据库整合基本方式从物理本质上看异构数据整合方式可以分为两类,其一数据复制方法,其二模板映射方式。1) 数据复制方法是将原来的数据库中的数据转移到新的数据库系统中,同时抛弃以前的数据库系统,改而使用新的数据库系统。图2-1形象的展示了这一过程,将原始数据取出来,经过数据转换,然后写到新的目标数据库里面。由于异构数据库之间的数据类型一般都有差异,特别是数值类型的数据,为了把不兼容的数据类型写入,必须这些数据类型转换成新的数据类型。不少
38、数据库供厂商都提供这种功能,但也就局限于该供应商自己的数据库产品之间。这种方案的缺点是需要抛弃原有的系统,使用新开发的系统,成本比较高。因此,这种方案只适用于那些确定需要抛弃原有系统的情况,在这种情况下,只需要把原来的数据导出来即可。并且该方法很繁琐,特是表结构发生大的变化时,工作量将很大。故该方案局限性很强,不具有通用性,因此本文后面也就不研究这种方法。图2-1 数据复制方法示意图2) 模板映射方法是使用中间件、中间系统等技术来整合各种异构数据库系统,该方法的特点是不会改变原来数据库系统的管理方式,也就是保证了异构数据库的独立性。该方法工作于应用程序之间和异构数据库系统之间11,向下访问可各
39、个异构数据库,向上为应用程序提供统一的数据表、数据项、数据类型以及通用数据访问的接口。如图2-2所示,该图展示了采用模板映射的方法实现了异构数据库整合,特点是应用程序与数据库之间多了个模板映射中间件或中间系统,也就是说,应用程序不直接与数据库系统交互,而是通过直接访问中间件或中间系统来实现间接访问数据库系统。若不考虑中间件的性能的话,显模板映射是最为理想的整合异构数据库的方法,因为它不仅实现了2.4节提到的目标,而且具有通用性、可扩展性。所以本文研究方法锁定在模板方法上。图2-2 模板方法示意图2.5.1 异构数据库整合常用方式现在,主流的数据整合方式有以下几种:数据仓库(即Data Ware
40、house)、联邦数据库(即Federated Database)、中间件(即Middleware)12等。1) 数据仓库。建立一个数据库系统,将这个数据库作为数据仓库,通过ETL(即Extract Transformand Load)工具手动或自动的多个异构数据库系统读取数据并过滤,并将需要更新的数据写到数据仓库,如图2-3所示,它展示了一个整合了2个异构数据库的数据仓库。与一般普通的数据库系统不同的是:数据仓库中存储的主要是汇总数据和历史数据。它的定位是为企业高级管理人员提供数据分析和决策支持13。图2-3 数据仓库示意图2) 联邦数据库。联邦数据库是异构数据库整合方法中的比较最简单方式。
41、它的实现方法是将所有组成异构数据库做一对一的相互连通,如图2-4所示。这样就会出现如下的情况:如果需要整合n个异构数据库,那么n个数据库中的任何一个都需要访问其他的(n一1)个数据库,那么这意味开发者需要编写n(n一1)段代码以实现两两之间的相互访问。可看到这种方法弱点比较明显,即维护、升级代价太高。图2-4 联邦数据库3)中间件(Middleware)。中间件是种独立的应用服务程序和系统软件,分布式应用程序借助这种软件在异构的技术之间实现资源共享。中间件位于操作系统之上,通过计算机网络通信,实现数据交流。它是连接两个独立系统和独立应用程序的软件。与中间件相连接的系统,尽管它们可能具有不同的接
42、口,但是他们通过中间件互连之后就能进行数据信息交换。数据库中间件是中间件的特定一种,它分别连接这用户和数据库,数据库中间件负责完成所有的数据逻辑处理(比如数据统计,数据排行,数据转换等),为客户端提供了统一的访问接口,起着用户和服务器机器之间的桥梁作用,中间件在收到用户的请求后,它会根据请求的内容找到不同的数据库并对相应的数据去请求数据,中间件在使用SQL语句将数据库中的相应数据取出后,再在中间件层中进行各种逻辑操作,在处理完成后再返回给客户端。如图2-5所示,数据库中间件的工作原理图。数据库中间件具有以下特点:移植性好、集成方便、易于扩充、使用简单、安全级别高。图2-5 数据库中间件示意图2
43、.6 异构数据库数据整合重难点要实现异构数据库系统的整合需要做的以下几点:1) 首先需要选取一种通用的数据交换格式;2) 通用数据交换格式转化成关系型数据库的数据;3) 关系型数据库的数据转换成通用数据格式;4) 通用数据交换格式表达ORM模型的关系;本文在接下来的工作都是围绕这几点来进行研究的。2.7 本章小结本章介绍了数据库的发展过程,其过程具有比较强的时代特征,特定的时代流行特定的数据库系统。也介绍了异构数据库,阐述了异构数据库系统的现状及其形成原因等。最后讲解了异构数据库系统整合的目标、方法、重难点。第3章 JSON与POJO之间的映射研究POJO在Java里指的是除了getter方法
44、、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所
45、示的数据流畅运行。3.1 JSON的解码JSON,也就是JavaScript Object Notation三个字母的缩写。它是种基于纯文本的轻量级数据交换格式。它对于人类来说可读性强,对于计算机语言来说符合主流计算机语言风格。这使得JSON既能跨语言、跨平台作为公共数据交换格式,并且也使得广大程序开发者用起来顺手,这一切使得JSON成为最为最理想的通用数据交换格式15。一般来讲JSON有如下两种结构:1)由“名称/值”组成的对的集合(即A collection of name/value pairs)。在不同的编程语言中,它分别被理解为对象(object),结构(struct),纪录(rec
46、ord),哈希表(hash table),字典(dictionary),有键列表(keyed list),或者关联数组(即Associative Array)16。2)值的有序列表(An ordered list of values)。在绝大多数现代计算机语言中,它被看成是数组(Array)17。这两种结构都是使用频率很高的数据结构,主流现代计算机语言都会用某种形式去支持这两种数据结构。基于这个特点,JSON作为一种通用数据交换格式在各种现代计算机语言之间去交换数据成为一种可能。JSON一般具有如下五种形式:1)对象是一个集合,这个集合由“名称/值对”无序的组成。一个对象的开始标记为“”(左括
47、号)开始,结束标记为“”(右括号)。每个“名称”后紧跟着跟一个“:”(冒号);“名称/值 组成的对”之间使用“,”(逗号)加以分隔。图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)数值(numb