2022年2022年简单的虚拟数据库系统设计与实现 .pdf

上传人:C****o 文档编号:33377634 上传时间:2022-08-10 格式:PDF 页数:11 大小:532.35KB
返回 下载 相关 举报
2022年2022年简单的虚拟数据库系统设计与实现 .pdf_第1页
第1页 / 共11页
2022年2022年简单的虚拟数据库系统设计与实现 .pdf_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《2022年2022年简单的虚拟数据库系统设计与实现 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年简单的虚拟数据库系统设计与实现 .pdf(11页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1 简单的虚拟数据库系统设计与实现摘要近年来,科学技术迅速发展和信息化的推进,数据的采集、存储、处理和传播的数量也与日俱增, 由于实施数据管理系统的阶段性、 技术性以及其它的因素,以至于即使在一个单独的企业或部门,每个单位就是一个数据源, 每一个数据源都可能是异构的, 这样使得在企业或部门中存在大量的异构的数据库。为了访问这些异构数据库实现信息共享与集成,因此,需要一种新的系统框架来解决多个数据库异构的问题。本文是基本基于XML 平台无关性、易扩展、交互性好、语义强等特性, 以对象作为数据表示与交换的基本单元,建立一个统一的、 虚拟化的数据库管理和访问平台,从而实现用户透明访问异构数据库。关键

2、字 :XML 虚拟化 异构 数据库Abstract In recent years the rapid scientific and technological development and the advance, the number of data collection, storage, processing and dissemination is also increasing due to the implementation stage of data management systems, technical and other factors, so that even

3、in a single enterprise or sector, each unit is a data source for each data source is likely to be heterogeneous, which makes a large number of heterogeneous database in the enterprise or department. In order to access these heterogeneous databases to achieve information sharing and integration, ther

4、efore, need a new framework to solve the problem of heterogeneous multiple databases. This is the basic XML-based platform-independent, easily extensible, interactive, semantic features, data representation object as the basic unit of exchange, the establishment of a unified, virtualized database ma

5、nagement and access to the platform, in order to achieve transparent to the user access to heterogeneous databases. Keywords: XML virtualization heterogeneous database 1.异构数据库问题的分析目前,在企业或部门中存在着大量的异构数据库,这些数据源就像一个孤立的“信息岛”,相互访问存在困难。因此,解决异构数据库共享访问,主要面临的问题表现在如下几个方面:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -

6、- - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - 2 系统异构:数据所依赖的应用系统、数据库管理系统或操作系统之间不同。模式异构:数据在存储模式上的不同, 通常的数据存储模式主要包括层次模式、网状模式、关系模式、面向对象模式。当前,关系模式主流的存储模式,同一类存储模式,它们的模式结构也可能存在着差异。 如 Mysql、 Oracle 、 Sql Server所采用数据类型并不完全一致。语义异构:是指对同一现实世界事物进行描述时,数据在表示方式或内容显示上不同,主要包括概念级语义异构和值级异构。2.实现异

7、构数据库共享的解决方案当前,实现异构数据库共享方法有很多,并且各不相同,但总体上而讲,可归为两类:数据仓库法和虚拟数据库法。数据仓库法:建立一个数据仓库,将参加集成共享的各数据源的数据副本,按照一个集中、统一的视图要求, 转换成符合数据仓库的模式, 并存入数据仓库。同时,系统将提供对数据仓库的查询机制,这种方式的优点是既可用于数据集成共享,又可用于决策支持。缺点是数据更新不及时,数据重复存储,比较适用于简单的系统中。 使用的技术主要涉及如何有效的加载数据,增量维护数据等。 结构如图 1 所示。图 1 数据仓库系统结构图数据转换 1 用户全局查询数据仓库数据转换2 数据转换3 数据源 1 数据源

8、 2 数据源 3 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - 3 虚拟数据库法: 也称为中间件法, 在这种方式下, 数据存储位置保持不变,集成共享系统提供一个虚拟的数据库平台以及在这个平台上查询、增加、删除、修改数据。 用户访问操作异构数据时, 只需要指定所需要的数据, 而不关心数据模式,数据抽取,数据合成以及这些数据获取等细节。通过这种方法,用户能够透明的访问异构数据库。 这种方法优点是不需要重复存储大量数据,数据更新及

9、时,数据存储访问负载均衡, 比较适合于高度自治、 集成数量多且更新变化数据系统。缺点是系统结构复杂,实现难度大,且查询访问等其他操作相对较慢。本文采用虚拟数据库法作为解决异构数据库问题方案。虚拟数据库系统结构如图2所示。图 2 虚拟数据库系统结构图3. 虚拟数据库实现虚拟数据库是一个虚拟的、现实不存在的、统一的数据交换视图平台,用户能透明地访问。 其主要的工作模块包括虚拟数据库访问接口、对象解析器、 数据源适配器、数据源连接池、对象封模块、对象合成模块等。用户接口对象操作虚拟数据库对象解析器数据源连接池数据库 1 数据库 2 数据库 3 数据源 SQL适配器封装返回值对象合成名师资料总结 -

10、- -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - 4 3.1 虚拟数据库访问接口虚拟数据库访问接口作为用户或应用程序访问异构数据库的通道,它只需用户或应用程序提供指定数据, 不必关心底层实现细节, 最终返回所需的结果。 在本系统中,定义的访问接口如下:publicboolean insert(Object obj) publicboolean update(Object obj) publicboolean delete(Object obj)

11、public boolean insert(Object obj,String databaseName) public boolean update(Object obj,String databaseName) public boolean delete(Object obj,String databaseName) public Object select(Integer id,Class cls); publicList select(Class cls, String where, int first, int end) 以上的接口中obj 为指定的数据操作对象;databaseNa

12、me是指定的数据源或数据库的名字,当没在指定时,系统自适应匹配数据源或数据库;id为对象的唯一编号,对应关系模式中的主键;cls 为数据操作对象按指定的方式注册生成的字节码; where 是查询语句的条件; first是查询记录的起始位置; end 是查询记录的结束位置。 此外,以上的接口的访问方法都是以对象作为基本单元,并且这些对象都是基于XML的 DOM ,它们与 XML文档之间能够相互转换, 但使用 Java语言实现虚拟数据库时,以面向对象的操作方法更为便利。3.2 对象解析器对象解析器主要实现将用户或系统程序传入接口中的对象进行分解,获得对象的属性以及对应的值、 属性与属性值之间的关系

13、, 为数据源 SQL适配器生成对应的 SQL语句做准备。关键代码实现如下: /解析对象BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass(); PropertyDescriptor pds = beanInfo.getPropertyDescriptors(); if (pds != null) int k = 0;int size = pds.length; /获得对象属性与属性值String properties = new Stringsize - 1; Object values = new Objectsize - 1;

14、 beanInformation = new BeanInformation(); for (int i = 0; i size; i+) propertiesk = pdsi.getName(); if (propertiesk.equals(class) continue; valuesk = pdsi.getReadMethod().invoke(obj); k+; beanInformation.setProperties(properties); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -

15、 - - - - 第 4 页,共 11 页 - - - - - - - - - 5 beanInformation.setValues(values); 3.3 数据源 SQL适配器不同数据库不仅在存储模式上存在差异,而且在数据的类型也可能不同。例如,Mysql,Oracle,Sql server 等。因此需要一个特定的数据源SQL 适配器生成对应的 SQL 执行语句,屏蔽底层细节。 数据源 SQL 适配器主要包括指定数据库数据类型转换生成、执行语句谓词生成等。本系统采用注册方式来实现数据源SQL 适配器,首先系统实现了一个公共的数据类型和公共SQL 语句生成的类,而特定的数据库通过继承公共类

16、重载或覆盖成员来产生特定的数据类型或SQL 语句,然后扩展出对不同数据库的支持,最终实现数据源SQL 适配器。关键代码如下:/ 注册公共数据类型privatestatic List typeList=new LinkedList(); static t ypeList.add(int. class); t ypeList.add(float. class); t ypeList.add(double. class); t ypeList.add(Integer.class); typeList.add(Float.class); typeList.add(Double.class); t yp

17、eList.add(String.class); /生成公共删除对象记录SQL语句BeanInformation beanInformation = parseObject(obj); if (beanInformation != null) int j = 0; String properties = beanInformation.getProperties(); Object values = beanInformation.getValues(); int length = properties.length - 1; for ( int i = 0; i = length; i+)

18、if (propertiesi.toLowerCase().equals(id) j = i; break; sql = delete from + getTableName(obj) + where + propertiesj + = + valuesj + ; 3.4 数据源连接池对于每一个数据库对应一个数据库连接,而且每个连接建立、释放占据大部分时间和资源。 因此,建立一个数据源连接池来提高系统运行效率。数据源连接池可以同时管理和维护多个数据库连接。当系统需要建立数据库连接时, 不是名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -

19、- - 名师精心整理 - - - - - - - 第 5 页,共 11 页 - - - - - - - - - 6 直接与数据库建立连接, 而是查看数据源连接池中是否存在连接,如果有则从数据源连接池中取出;否则,直接与数据库建立连接。当系统不需要连接时,不是直接释放连接, 而是查看数据源连接池中是否有空间可以存放,如果有则放入其中,否则关闭连接并释放所占用的资源。在本系统中应用程序可通过上Hash键值索引从数据源连接池中获得数据库连接,并在数据源连接池空间不足时,使用LUR(最近最少使用 )算法进行连接替换。同时,对不同数据库连接支持通过类似数据源 SQL 适配器的注册方式进行动态扩展。关键代

20、码如下:/ 初始化 Hash并发连接池connections=new ConcurrentHashMap(); / 通过 key-value 将连接放入连接池publicvoid put(String key,ConnectionProvider cp) if(key!=null) ConnectionPool connectionPool=connections.get(key); if(connectionPool!=null) if(connectionPool.isFull() cp.closeConnection(); else connectionPool.put(cp.getCo

21、nnection(); else connectionPool=new ConnectionPool(); connectionPool.put(cp.getConnection(); connections.put(key, connectionPool); / 通过 key从连接池取出连接public Connection take(String key,ConnectionProvider cp) Connection connection=null; if(key!=null) ConnectionPool connectionPool=connections.get(key); if

22、(connectionPool!=null) if(connectionPool.isEmpty() connection=cp.getConnection(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 11 页 - - - - - - - - - 7 connectionPool.put(connection); else connection=connectionPool.take(); cp.setConnection(connection); else c

23、onnection=cp.getConnection(); if(connection!=null&Utilizes.checkEmpty(cp.getUrl() this.put(cp.getUrl(), cp); return connection; 3.5 对象封模块由于使用 SQL 语句进行查询,所得结果是结构化的记录,而系统中操作与返回集都是面向对象的形式。 因此,需要对象封装器将结构化记录转化成一个具体的对象。对象封装器采用对象解析器逆向过程。具体实现如下所示:protected Object generateObject(ResultSet rs, Object obj) if

24、(rs != null) /获得查询结果元数据ResultSetMetaData rsmd = rs.getMetaData(); int colums = rsmd.getColumnCount(); for (int i = 1; i 0&end0&first1) rs.absolute(first-1); size=end-first; list=new ArrayList(); /对象集合while(rs.next()&size=0) Object ret=cls.newInstance(); ret=generateObject(rs, ret); if(ret!=null) lis

25、t.add(ret); /对象合成 size-; 4测试结果由于本系统重点在实现逻辑业务处理上,没有进行可视化界面设计, 它将以测试结果的形式展现系统实现效果。系统总体结构如图3所示。图3 虚拟数据库系统结构图虚拟数据库系统数据库配置文件如图4所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 11 页 - - - - - - - - - 9 图4 数据库配置文件虚拟数据库系统数据库连接配置文件如图5所示图 5 数据库连接配置文件测试对象如图6所示图6 测试对象插入对象

26、如图 7所示名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 11 页 - - - - - - - - - 10 图7 插入对象更新、删除对象如图 8所示图8 更新、删除对象查询记录如图所示图9-1 查询前三条记录图9-2 查询测试代码名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 11 页 - - - - - - - - - 11 图9-3 查询结

27、果5. 小结本文通过建立一个简单虚拟统一的数据库访问平台,作为解决异构数据库共享集成的方案,其中以基于XML 的面向对象的操作方法,屏蔽了数据模式,数据抽取,数据合成等异构操作, 方便用户或应用程序透明访问。但是在本系统还存在许多不足之处,需要进一步研究和实现,如特定数据类型、SQL 语句生成,结果合成,权限及安全性控制方面等。参考文献1.王源 . XML 查询语言 J. 计算机时代 2002(1) 2.李效东 , 顾毓清 . 一种轻型关系型数据源包装器的设计J. 计算机科学 2002(7) 3.周竞涛 . 企业异构数据源集成J. 计算机世界 2002(10) 4.高明 ,宋瀚涛 . 异构数据

28、源集成应用模型及其查询处理方法J. 计算机工程 2003(15) 5.张雷 . 基于 XML 异构数据集成研究N. 北华大学学报(自然科学版)2005.8 ,6(4) 6.林菁 . 一种关系数据库到XML 映射方法的研究与应用J. 电脑知识与技术.2006.4 7.萨师煊 , 王珊 . 数据库系统概论M. 高等教育出版社 2003.5 8.孙卫琴 . Java 网络编程精解 M. 电子工业出版社 2007.1 9.侯要红 . 栗松涛 Java XML 应用程序设计M. 机械工业出版社 2007.9 10.周志明 . 深入理解 Java虚拟机 :JVM高级特性与最佳实践M. 机械工业出版社2011.6 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 11 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com