针对传统花卉养护手工操作工作效率低、可交互性差、缺乏远程监控能力以及人机交互界面缺乏视觉感染力问题,采用随着企业信息化管理不断发展,许多行业、单位或机构、部门内部已逐步实现了业务、信息的网络化管理,如何简洁有效地访问和集成异构数据库系统,减少重复编码、缩短软件的开发周期、提高软件的可维护性尤为重要。为解决这一问题,本文利用O/R Mapping技术基于.NET平台设计并实现了异构数据库引擎,较好地解决了基于对象/关系模型的跨平台数据库访问问题。该引擎支持Unix、Windows等操作系统,而且可与Oracle、DB2、SQL Server、My SQL等数据库进行集成。经实际应用,性能稳定可靠,达到了预期的目标,取得了良好的应用效果。 With the continuous development of enterprise information management, many industries, unit or organization, internal departments have gradually realized the business, network management. How simple and effective access to and integrate heterogeneous database system, reduce duplica-tion of code, shorten the software development cycle, and improve software maintenance is par-ticularly important. In order to solve this problem, we design and implement a heterogeneous da-tabase engine by O/R Mapping technology to solve the problem of cross platform database access based on the O/R model. The engine we design supports UNIX, windows and other operating sys-tems, and also integrates with Oracle, DB2, Server, My SQL, SQL and other database. After the actual application, the performance is stable and reliable. The desired goal is achieved.
赵哲
西安市第一中学,陕西 西安
收稿日期:2016年2月9日;录用日期:2016年2月27日;发布日期:2016年3月2日
随着企业信息化管理不断发展,许多行业、单位或机构、部门内部已逐步实现了业务、信息的网络化管理,如何简洁有效地访问和集成异构数据库系统,减少重复编码、缩短软件的开发周期、提高软件的可维护性尤为重要。为解决这一问题,本文利用O/R Mapping技术基于.NET平台设计并实现了异构数据库引擎,较好地解决了基于对象/关系模型的跨平台数据库访问问题。该引擎支持Unix、Windows等操作系统,而且可与Oracle、DB2、SQL Server、My SQL等数据库进行集成。经实际应用,性能稳定可靠,达到了预期的目标,取得了良好的应用效果。
关键词 :异构数据库引擎,数据库访问,O/R Mapping,ADO.NET,SQL Server,My SQL
计算机技术和信息化网络技术飞速发展,企业各种应用系统逐渐增多,这些应用系统的数据库信息对于企业的管理非常重要,这些信息往往具有多样性、异构性和复杂性,非常不利于进一步运用而获得更大的企业综合效益。对于分散异构的信息资源进行集成,使得原有的各种异构数据库数据能够整合到一起,提供给用户透明统一的接口,用户就像是在使用一个数据库一样而不必去考虑其中各种数据的差异 [
异构数据库的访问是数据库集成的重要环节[
以关系数据库为数据存储方式开发面向对象的软件时,由于关系概念与面向对象概念的迥然差异,使它们之间产生了访问方式不匹配的问题。为了解决这个问题,出现了许多新技术,在软件开发领域中最为炙热的对象关系映射(O/R Mapping)技术。本系统利用O/R Mapping技术开发了基于ADO.NET的异构数据库访问引擎,该引擎支持各种开发工具及数据库系统,可采用面向对象的方法开发平台无关的数据库应用程序 [
异构数据库引擎的总体设计目标是:为应用软件开发人员提供一个通用数据库访问和存取接口,使其能够方便地对异构数据库进行操作而不需要太多地了解底层数据访问的技术,并能够按照面向对象方法进行数据库无关的软件设计开发。
ADO.NET异构数据库访问技术.NET Framework中有四种提供程序,每一种数据提供程序都包含各自的对象,若要使用这种数据库访问技术,无法实现数据库平台的通用性访问 [
应用程序需要对数据库进行访问的时候,不需要直接调用ADO.NET的一系列对象方法,而只需调用异构数据库引擎提供的接口,由异构数据库引擎去响应应用程序的请求,并自动生成相关的SQL语句,然后根据请求调用ADO.NET相关的方法,最后把结果反馈给应用程序。在整个访问操作过程中,ADO.NET及底层数据库访问技术对程序员来讲是透明的,不必掌握ADO.NET相关知识,即可正常进行数据库应用系统的开发 [
异构数据库引擎设计采用了对象关系映射O/R Mapping (Object Relation Mapping)技术、软件分层和复用的思想。O/R Mapping技术通过在关系数据库之上加入对象关系映射引擎,让现有的关系数据库得到最大程度上的“可持续发展”,既保护了用户的已有投资,又使得熟悉关系技术的开发群体能够平滑过渡到新的阶段 [
· 对象表示层:表示应用系统中业务对象与数据库中关系表的映射,该层设计的优劣直接关系到上层应用能否方便地使用业务对象,进行业务逻辑的处理以及下层持久化操作能否高效便捷地运行。
· 对象控制层:控制对象表示层的实体类,定义操作实体类的相关运算,包括将数据实体的状态保存或更新到数据库中。
· 数据访问层:负责封装多种数据访问对象,目的是当底层的数据库发生改变的时候,高层应用系统不会受影响,进而提高异构数据库引擎的通用性。
本系统研究的异构数据库访问引擎在数据库底层上基于ADO.NET和其组件技术来实现,提供了各种主流数据库系统,如Oracle、SQL Serve等的通用访问接口,并支持ODBC通用数据源,以实现Sybase、DB2、Informix等数据库系统的访问。异构数据库访问引擎对外提供了统一的接口与访问方式,可以实现了快速、简洁的数据库面向对象访问技术,支持跨平台数据库系统,从而简化了数据库应用软件的开发,也大幅度地提高了软件开发效率。
很多企业应用都使用面向对象语言开发,而用关系数据库作为底层数据库。由于对象范例和关系范例结构上的不同,导致了对象模型和关系模型之间的阻抗不匹配。O/R Mapping (Object-Relational Mapping)指的是在对象模型/关系模型两种途径之间和支持这两种途径的系统之间的一个转换,即把对象的属性保存在关系数据库中,把对数据库的访问封装起来。我们在操作数据库时,不再和复杂的SQL语句打交道,只要像操作对象一样操作它就可以了,是解决对象和关系之间阻抗不匹配问题的一种有效方法。在采用关系数据库的面向对象程序开发中,用户界面层和业务逻辑层是面向对象的,而当对象状态发生变化的
图1. 异构数据库引擎框架图
时候,需要将对象的状态保存在关系数据库中 [
ADO.NET是一种关系数据,根据单独的数据操作能够对已经离散的数据进行访问。在数据处理形式上,它构建了合理的数据处理环境。ADO.NET Framework中包含四种数据提供程序,即SQL Server .NET Framework、Oracle .NET Framework、OLE DB .NET Framework和ODBC .NET Framework。而每种数据提供程序又包含各自的对象。如果要利用ADO.NET进行数据库访问,则必须根据实际使用的数据库类型来选择.NET数据提供程序,然后在应用程序中使用,写定了的程序代码只能适应预先确定的数据库系统,无法实现数据库平台的通用性访问。只有重复写代码才能适应每个特定数据库的访问方法,这不仅大大增加了编码人员的工作量,而且无法实现数据库平台无关的程序设计,更不易于系统维护。
本文运用了软件分层的思想来设计异构数据库引擎,主要包含对象表示层、对象控制层、数据访问层三层。对象表示层采用了的ADO.NET的Data Set类和基于XML的配置文件,直接影响用户的使用。Data Set是ADO.NET中的数据对象,它可以包含多个数据表(Data Table)及其关系。Data Set的结构可以与关系数据库进行很好地映射。在XML配置文件中定义了各个实体类与关系数据库之间的映射关系,即定义了特定于某个实体类的Data Table,在运行时由相应的类构造方法根据XML 配置文件生成特定的实体类 [
数据库引擎模块是一种主要的实现数据库访问的方法,它主要依赖于系统配置模块运行实现。系统的设计原理参考如图2,其中数据库引擎Web Service接口用于扩展数据库引擎,实现跨应用平台的调用。
该模块的功能是配置异构数据库引擎的参数信息。如果用户开发的是Web程序,这些参数信息定义在web.con fig文件的 配置节中,如果用户开发的Windows程序,则把这些参数信息定义在文件名与应用程序名相同、扩展名为.con fig的XML文件的 配置节中。
客户端请求一般分为四大类:数据查询(Select)、数据定义(Create, Drop, Alert)、数据操纵(Insert, Update, Delete)、数据存储。根据客户的请求方式,该引擎有相应的处理方法:客户在每次发出请求时,只需调用该模块提供的方法,传入正确的参数,该模块就会把处理结果反馈给客户,完成此次请求。若执行错误,则返回错误代码。
实现该引擎的关键技术:
图2. 异构数据库引擎系统原理图
1) 数据访问对象再定义:系统设计了Connection对象,用于连接数据库;Command对象用于执行命令;Parameter对象用于处理SQL参数。利用“系统配置模块”从配置文件中获取数据库类型后,应针对SQL Server、Oracle、Access、ODBC等特定数据库访问类型,对Connection、Command、Parameter对象进行再定义,并设置相应参数,以实现特定数据库的连接与访问。
2) 数据库的连接与断开:调用“系统配置模块”提供的方法获取各种参数并生成数据库连接字符串,建立与数据库的连接。系统采用了ADO.NET提供的连接池技术,可在配置文件数据库连接模板中设置连接池的大小。为了提高系统性能,数据库关闭方法并不真正断开与数据库服务器的TCP连接,而是将连接资源释放到ADO.NET连接池中,以便其它程序调用。
3) 数据库查询和处理:该模块主要依赖于ADO.NET 数据提供程序的Command对象实现,该对象提供了Execute Reader、Execute No Query、Execute Scalar等方法以完成特定数据操作。数据访问层主要实现了以下通用数据库访问方法:Exec Single Value用于获取单值,Exec No Query用于执行无返回值的操作,Exec Query返回数据集的查询,Exec Insert执行插入操作并返回插入行ID,Modify Blob修改Blob值,Get Blob获取Blob值。通过以上方法,可以规范地实现数据库的跨平台访问。
以上方案很好地解决了.NET开发平台中异构数据库的访问问题,构建其XML Web Service接口是为了能使异构数据库引擎适用于任何开发工具。在Web Service服务程序上实现异构数据库引擎主要功能,以统一开放的HTTP、XML、SOAP、WSDL等标准协议,提供异构数据库引擎的跨平台、跨防火墙调用 [
以上设计很好地实现了.NET开发平台中异构数据库访问的问题,运用O/R Mapping技术完成了异构数据库引擎的设计和实现,该引擎支持Unix、Windows等操作系统,而且与各种通用数据库都可进行集成,为中间件技术未来的发展也奠定了一定的基础。经过在企业应用程序的运用,能够为企业用户减少一定工作量,缩短软件开发周期,提高软件质量,产生一定的经济效益。
赵哲. 面向企业应用系统的异构数据库引擎设计与实现Design and Implementation of Heterogeneous Database Engine for Enterprise Application System[J]. 计算机科学与应用, 2016, 06(03): 126-131. http://dx.doi.org/10.12677/CSA.2016.63016