岩心库综合管理系统的多数据库兼容设计_第1页
岩心库综合管理系统的多数据库兼容设计_第2页
岩心库综合管理系统的多数据库兼容设计_第3页
岩心库综合管理系统的多数据库兼容设计_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、信息与电子工程第 10 卷第 6 期2012 年 12 月vo110,no6dec,2012information and electronic engineering文章编号:1672-2892(2012)06-0730-05岩心库综合管理系统的多数据库兼容设计徐顺飞,吴晓红,何小海,高超(四川大学 电子信息学院,四川 成都 610064)摘要:岩心库综合管理系统的出现解决了石油地质部门大量实物地质资料的高速共享和统一管理,但现有的管理系统普遍存在支持数据库类型单一、代码复用性低、升级维护困难等问题,难以满足用户的需求。为解决这一实际问题,提出了一种基于.net 三层架构的解决方案,利用数

2、据库统一建模和设计通用数据访问类,实现了岩心库管理系统的多数据库兼容,同时提高了系统的跨数据平台性和扩展性。关键词:多数据库兼容;三层架构;数据库统一建模;通用数据访问接口中图分类号:tn911.7文献标识码:acompatibility design of multi-database for core libraryintegrated management systemxu shun-fei,wu xiao-hong,he xiao-hai,gao chao(college of electronic and information,sichuan university,chengdu

3、sichuan 610064,china)abstract:core library integrated management system can realize high-speed data sharing and unifiedmanagement of geological material data in the petroleum geology department. nevertheless, the existed management systems have some problems such as supporting only one type of datab

4、ase, the lack of codereusability and the difficulty of upgrading maintenance, which make the system can not meet the requirements of users. to solve these practical problems, this paper puts forward a solution based on .net three-layer architecture, by using unified database modeling and designing g

5、eneric data access class, to realize the multi-database compatibility of core library management system. at the same time, the crossplatform capability and scalability of system are improved.key words:multi-database compatibility;three-layer architecture;unified database modeling;generic data access

6、 interface近年来,数字油田的提出和发展,推动了以油田资源数字化为基础,以网络为依托,以信息技术为手段的综合管理系统的发展1 ,促进了各石油地质部门的跨地域协同工作。随着石油地质资料的增长和计算机技术的发展,用户对数据库提出了不同的要求。而现有的岩心库综合管理系统2 普遍存在着数据库类型单一的问题,仅能支持某一类数据库,系统分层结构不明显,代码复用性低,升级维护困难,一旦使用新数据库,需要重写大量的后台 代码。为此,针对实际问题,提出了一种基于.net 3 层架构3 、activex 控件和 b/s 模式的解决方案,采用数据 库统一建模,分别设计基于 c#和 c+的通用数据访问类,尽可

7、能屏蔽数据库之间的巨大差异,实现了岩心库综 合管理系统的多数据库兼容,满足了用户对数据库平台的多元需求。1系统 3 层架构简介所谓 3 层架构体系4 就是在软件开发过程中,运用分层、分模块的思想来设计的软件架构,把同类型的操作作为单独的类模块抽象出来,供其他模块重复调用,具有可维护性强,利于修改和升级,安全性高的优点。具体 来说,分为 3 层,即表示层、业务逻辑层和数据访问层。本系统也采用 3 层架构,能够有效降低各功能模块的耦收稿日期:2012-03-22;修回日期:2012-04-09基金项目:四川省科技支撑计划基金资助项目(岩屑高清图像采集及综合分析管理系统 10zc0968)合度,使各

8、模块相对独立,增加了系统的灵活性和可扩展性。系统的 3 层软件架构见图 1。2数据库统一建模设计2.1 常用数据库分析岩心库综合管理系统是以数据为基础的,数 据的保 存和 管理直接影 响系统的功 能和 稳 定,因此,选择合适的数据库十分必要。目前, 常用的数据库管理系统是以关系数据库为主, 技术也比较成熟,大致可分为 3 类:大型数据 库,如 oracle,db2;大中型数据库,如 sqlfig.1 three-layer architecture of system图 1 系统的 3 层架构图server,sybase,informix 等;小型数据库,如 access 等。根据不同用户的需

9、求,本设计选用 access,sql server和 oracle 这 3 种数据库。2.2 cdm 设计概念数据模型(conceptual data model,cdm),表达的是数据库的整体逻辑结构。该结构独立于任何软件和 数据存储结构,它只是系统分析人员、应用程序设计人员、维护人员和用户之间相互理解的共同语言,其所包含 的对象通常并没有在物理数据库中实现,而仅仅给出了商业或业务活动中所需要数据的形式化的表示5 。根据在 石油地质部门的实地考察和沟通,结合相关资料,以多数据库兼容为设计思想,采用统一建模工具,建立岩心库 综合管理系统的数据库 ciss_manage 的 cdm 模型。确立了

10、井号信息表、回次信息表、岩心图像表、岩屑描述表、测井曲线表等 43 个表结构的 e-r 结构。考虑到 access,sql server 和 oracle 数据库的差异,根据其特点,总结出数据表结构统一设计时需要注意的几点6 :1) 禁用保留字作为表名或者字段名,如 file,char,size,number,row,user 等;2) 所有的数据表名、字段名均采用英文大写,否则会造成 sql 语句创建数据库时出现问题;3) 限制表名、字段名的长度,oracle 明确规定其表名和约束名不得超过 30 个字节,所以所有表名的定义 字段不宜过长。由于管理系统所涉及的地质实物多样,其相互关系较为复杂

11、,本系统在详细分析了各实体之间的关系后,根据以上 3 个要点,设计了 cdm 模型,以井相关的主要实体及关系为例,如图 2。0,n0,n0,nfk_detlist_wellinfol0,nfk_geologyimg_wellinfofk_detritusinfo wellinfo1,11,1fk_deimg_wellinfo1,11,1fk_wellinfo_areainfo1,10,nfk_ description_wellinfo1,10,n1,1fk_wateroilgas_wellinfofk_c_description_wellinfofk_testanalysis_wellinfo

12、0,n0,nfig.2 relationship of well information entities图 2 井信息实体关系图图 2 中表示了井相关的主要实体以及它们之间的关系。其中井信息与 areainfo(地域信息)是多对一的关系,除此之外,以井深度为标尺,包括 hcinfo(回次信息)、c_description(岩心描述)、de_description(岩屑描述)、wateroilgas(油气水信息)、testwellcurve(测井曲线信息)等实体,井信息与这些实体之间的联系都是一对多的关0,ntestanalysispk_testanalysiswateroilgaspk_wa

13、teroilgaspk_ testwellcurvec_descriptionpk_c_descriptionde_descriptionpk_de_descriptionhcinfo0,n1,1wellinfopk_hcinfofk_hcinfo_wellinfo1,1pk_wellinfofk_testwellcurve_wellinftestwellcurve0,n1,11,1 areainfo pk_areainfodeimgpk_deimggeologyimgpk_geologyimgdetritusinfopk_detritusinfodetlistpk_detlistdata a

14、ccess layerc#,c+ generic data access interfaceuser interfaceweb browserbusiness logic layerdata management browser and queryapplication and approvalpersonnel managementon-line analysisknowledge dictionaryauxiliary managementweb formcomponent service信 息 与 电 子 工 程732第 10 卷系。它们之间的联系以回次信息为例说明。井和回次之间的联系用

15、基数表示,联系具有方向性,每个方向都有一个基数。“井”和“回次”2 个实体之间的联系是一对多联系,1 个井可以拥有 1 个回次,也可以没有回次,即零 个回次,所以该方向的基数就为“0,n”。从联系的另一个方向考虑,1 个回次必须属于 1 个井,并且只能属于 1 个井,所以“回次”实体至“井”实体的基数为“1,1”,同时用“fk_hcinfo_wellinfo”表示回次的外键约束关 系。通过实体关系图可以很清楚地表示各个实体之间的相互联系。除此之外,数据库还有许多实体关系,如岩心等样品实体之间的关系,人员权限管理、申请审批样品管理、 辅助信息等实体及关联。2.3 pdm 设计物理数据模型(phy

16、sical data model,pdm),是以常用的 dbms 理论为基础,将 cdm 中所建立的现实世界模型生成相应的 dbms 的 sql 脚本5 。根据已经建成的 cdm,利用 powerdesigner 建模工具中自动生成 pdm的功能,生成了数据库 ciss_manage 的物理模型。为了达到数据库兼容的目的,需对生成的 pdm 进行修改。1) 主键的选择数据库主键常用的有 2 类:序列自增型和唯一标识符型。前者具有查询简单,字段占用字节小等优点,但它 会增加网络开销,不利于数据的迁移和融合。而后者能保证在任何情况下,其值是全球唯一的,即使几个系统的主键值导在一起也不会重复,非常利

17、于数据的迁移和融合,但也有占用存储空间大的缺点。根据石油地质部门的 用户数相对有限的实际情况,综合考虑后,选用唯一标识符型作为主键类型。2) 数据类型的编码选择在岩心库综 合管理系统 中,有时需 要录入一些 特殊的符号 或者其他国 家的文字, 如阿拉伯文 “ - -”,但常常在录入数据库后显示为“?”的乱码。这是由于数据库的编码所导致的,为此采用 unicode规格的数据类型就能够解决这个问题。在 unicode 规格中的每个字符占用 2 个字节,可以容纳世界上所有文字和 符号。在数据库中用 n 开头来指定的数据类型,如 nchar,nvarchar,nvarchar2,ntext 等采用 u

18、nicode 方案,故在数据类型设计时选用相应的类型。3) 建立视图与存储过程数据类型设定后,根据系统的具体需要,为了方便岩心图文信息的插入、更新和浏览等功能,提高效率,需 要建立相应的视图和存储过程。在统一建模工具 powerdesigner 中利用通用的 sql 语句,在 access,sql server 和 oracle 中分别建立了 32 个视图。而对于存储过程,由于 access 不支持存储过程,故仅在 sql server 和 oracle 中建立了 38 个存储过程,包括井信息、回次信息、图像信息、曲线信息等表的插入和更新操作。在使用 access数据库时,在程序中使用 sql

19、 语句来完成相应存储过程的操作。(a) some tables in access(b) some tables in sql server(c) some tables in oraclefig.3 some tables in three kinds of database图 3 部分表在 3 种数据库的生成完成上述过程后,即可利用生成的 sql 代码在各数据库中生成相应的数据库,对于 access,则需要借助 pd下 tools 目录中的 access.mdb 生成数据库。部分表在 3 种数据库的生成情况如图 3 所示。3通用访问接口类设计本系统为了增强交互性,采用了基于 c+的 act

20、ivex 控件技术,所以必须要分别针对 3 种数据库设计出基于c#和 c+语言的 2 套通用访问接口类,从而把业务逻辑层与数据库分开。c#和 c+接口类分别采用对 ado.net和 ado 进行二次开发,形成满足需要的通用访问接口类。3.1 基于 c#语言的接口类ado.net 是微软推出的一组基于.net 框架,用于和数据源进行交互的面向对象的类库,具有高效易用、离 线数据操作和良好的封装性等优点7 。基于 c#语言的接口类采用 ado.net 方式,利用其提供的 connection, command,parameter,dataset,datatable,dataadapter 对象来设

21、计实现8 。定义一个类名为 baseclass 的类,放在命 名空间 dataaccesslayer 下,其功能和成员函数如下:1) 打开关闭数据库:通过设计 opendb()和 close()函数来实现,在每个函数中根据不同的数据库类型来选择 相应的打开和关闭方式,从 web.config 文件中获取连接字符串,执行打开和关闭数据库。2) 查询数据库,获取相应数据:根据实际需要设计了返回数据集的查询函数 operatedateset(string _sql),执行 sql 语句返回数据表的 operatedatatable(string _sql,arraylist paras)函数,执行

22、sql 语句,返回执行成功的行 数的函数 operatedata(string _sql),以及执行 sql 语句,返回 1 行 1 列即 1 个字符串值的函数 executescalar(string_sql,arraylist paras)。3) 执行增删改操作:设计了 exenonquery(string _sql)和重载的 exenonquery(string _sql,arraylist paras)以实 现对数据库进行增删改操作。4) 执行存储过程:由于各数据库存储过程传入的参数差异性很大,故采用判断不同的数据库来加载不同的 接口。以 oracle 数据库为例说明,其余数据库类似。

23、/执行 oracle 存储过程,不返回值exeoraprononquery(string _procedurename, oracleparameter parameters)/执行 oracle 存储过程,返回一行一列exeoraproinfo(string _procedurename, oracleparameter parameters)/执行 oracle 存储过程,返回数据集exeoraprodataset(string _procedurename, oracleparameter parameters)3.2 基于 c+语言的接口类基于 c+语言的接口类主要是采用 ado 方式

24、,在其基础上进行二次开发,以提供给 activex 控件对数据库的通用访问接口9 。该接口主要包含 cadorecordset,cadodatabase,cadoparameter,cadocommand 4 类。其中 用户需要使用的类为 cadorecordset,该类主要实现打开/关闭数据集、执行 sql 语句和存储过程等具体操作, 是该接口的核心,而类 cadodatabase,cadoparameter,cadocommand 为类 cadorecordset 提供相关操作。 cadodatabase 类主要用于打开/关闭连接、判断数据库是否打开;cadoparameter 类提供参数

25、的输入、输出方向,获取参数类型等;cadocommand 类主要提供命令的类型,设置和获取命令类型等功能。每次使用 cadorecordset 时,都需要调用 cadodatabase 去连接数据库,十分繁琐,于是在 cadorecordset类的构造函数中利用 ongetvaluechanged 函数中获取的 serverip,useid,pwd 值,调用 cadodatabase 连接数据库,实现了实例化 cadorecordset 类时即连接了数据库,增强了类之间的交互性,方便了接口类的使用,具体实现如下:cadorecordset:cadorecordset(cstring serve

26、rip, cstring useid, cstring pwd)/初始化成员变量,实例化ado智能指针变量m_precordset = null;m_strquery = _t();pcommandrs.createinstance (_uuidof(command);m_precordset.createinstance(_uuidof(recordset);m_nsearchdirection = cadorecordset:searchforward;/命令对象的实例化/记录集指针的实例化信 息 与 电 子 工 程734第 10 卷/在cadorecordset类的构造函数中自动连接数据

27、库,这样在程序调用时只需要new一个/cadorecordset对象就可以了,不需要先去打开数据库cstring strconnection = driver=sql server;server=+serverip+;database=+ciss_db+;uid=+useid+;pwd=+pwd;m_padodb = new cadodatabase;m_padodb-open(strconnection);m_pconnectionrs = m_padodb-getactiveconnection();/设置连接字符串/指定数据库连接同时,在cadorecordset类中,针对不同的数据库操作,设计了根据操作类型参数noption的不同,可以执行 sql 查询 语句,查询 一个表的记 录,执行无 参数的存储 过程的函数 open(_connectionptr mpdb,lpctstr cstringexec,int noption),执行带参数存储过程的execproc函数等16个具体的操作函数,满足了系统的需要。3.3 通用接口的使用通用接口类设计好后以dll 的形式发布,在程序中添加引用后就可供业务逻辑层使用。在使用时,配置好 web.config文件后只需实例化接口类,调用相应的函数,就可完成对数据库的操作,而不必关心数据库的类型, 达

温馨提示

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

评论

0/150

提交评论