对象数据库范例6篇

前言:中文期刊网精心挑选了对象数据库范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。

对象数据库

对象数据库范文1

面向对象

数据库系统

    [论文摘要]面向对象数据库系统是为了满足新的数据库应用需要而产生的新一代数据库系统。讨论和设计了面向对象数据库的理论概念和含义,设计和构建了一个面向对象的数据库系统的理论体系。

    随着应用的扩展,特别是诸如人工智能等复杂应用的需要,关系型数据库已经显得力不从心了,人们迫切希望产生一种新的数据库解决方案来适应这些复杂需求。今后,面向对象的数据库极有可能是数据库 发展 的方向。

     1面向对象数据库模型

1.1核心概念

1.i .1对象与对象标识

    对象,是现实世界中实体的抽象,是数据和操作的集合,是持久化到数据库中的最小的存储单位。

    这里的对象其实与一般的面向对象程序设计语言中的对象并没有很大不同。但是,这里的对象是持久性的。数据库中的对象是数据记录的最小单位,也就是说,数据库中至少存在一个对象才有意义。当然,对象中还可以有对象的属性,方法等,但一个对象必须是完整的。

    对象标识,指的是唯一标定一个对象的标志,一个对象对应一个标识符。在现实世界中,对象可能会随着时间的推移而发生改变,但对象标识不应该改变,因此,对象标识自对象生成后就不应该再改变,否则无法使用对象标识唯一确定一个对象了。即使两个对象的属性和方法以及状态完全一致,只要其对象标识不同,则两者是不同的对象。

    对象标识一般有以下三种实现方式川(e}‘一r}sz}:

    (1)值标识,使用对象的某一属性作为其对象标识,不推荐此方式。

    (2)名标识,使用一个名字来表示标识。推荐此种方式。

    (3)内标识,以上两种方式是由用户建立的,而这种方式是由系统内部建立的,不具有任何实际含义,且只有系统才可以“观察”此类对象标识。

    另外,在对象数据库中,标识是永久不变的,即具有永久持久性,这和面向对象程序中的对象标识不一样,面向对象程序中的对象标识只具有对象内持久性。

1.        1.2封装

    抽象是对象的外部界面与内部实现之间实行清晰隔离的一种抽象,外部与对象的通信只能通过消息来实现[2)(e3o6-r}s6>。在对象数据库中,表现为对象的私有和保护成员只能通过其方法来查询得到,而公有成员可以直接查询。这种方式的优点是对象被封装成了自含的单元,对象只接受已定义好的操作,其他对象不能直接访问对象的非公有成员。缺点是丧失了传统关系数据库中进行即席的、按内容的查询,这就不够方便灵活了,因此,需要做一些改进和妥协。

1 .1 .3类

    共享同一属性和方法集的所有对象构成的对象类,一个对象是一个类的实例。在数据库是一种抽象的数据类型,相当于关系数据库中的一张表。

1. 1.4类层次

    这里涉及到继承的概念,即类可以继承类,从而具有与父类(或称超类)的所有符合条件(只保护类型或公有类型)的属性和方法。这是关系数据库中所没有的。

1. 1.5消息

    指的是对象的方法调用。通过对象的方法调用可以访问对象的属性数据和执行业务逻辑。这也是关系数据库中没有的。

1 .2对象与对象标识

1 .2. 1对象结构

    包括两部分,一个是属性集合,一个是方法集合。属性集合将用于存储数据,方法集合将用于操作数据。属性集合即是对象的成员变量,其中又可以分为公有类型的成员、私有类型的成员和保护类型的成员。公有类型的成员可以直接使用查询语句进行查询,保护型成员可以在该类的子类的对象中直接访问,私有类型的成员只能在本类的对象中访问,外部对象只能通过实现定义好的方法(即操作)进行访问。如果没有事先定义好的方法,则外部将无法访问这些变量的值,这就实现了对象的封装性了。在00数据库中,对象结构同样分成这两种集合。

1.2.2对象标识

    表示在一个数据库中一个对象仅有一个唯一不变的标识就是对象标识。这个标识用来精确定位一个对象。在00数据库中,对象标识是唯一标定这一持久性存储单元的唯一依据。其它对象或方法访问本对象的属性和方法必须先找到该对象的对象标识,否则无法访问。

1.2.3封装

    即将一个对象的属性和方法封装在对象内部,外部只能通过对象提供的外部接口进行访问。这样就提高了数据的安全性和代码的重用性。

    i.3类与类层次

    相似对象的集合称为类,在数据库中表现为面向对象数据库模式的集合,它规定了该类的对象的数据结构规则和操作规则。在面向对象数据库中,一个类相当于关系数据库中的一张表。它同样有字段和属性,甚至还有关系数据库表所没有的方法。这种思路将使得可以在面向对象数据库中实现复杂的逻辑。

    类层次表现在继承上,即父类和子类的层级关系。这是为了多态和数据共享的目的。这种思路可以象java中那样使用接口和基类来完成设计。

1.4继承

    就像类层次中所说的,继承是为了多态和数据共享的目的,也是面向对象代码重用的重要机制之一。

i.5滞后联编

    即实现了重载的效果,oodbms不能在编译时把操作名联编到程序上,必须在运行时根据需要进行抉择。

1.6对象的嵌套

    是一种设计模式—组合。将多个类的对象加人到一个类的属性中,使之实现复杂的功能。

2面向对象数据库语言

    ool}b语言用于描述面向对象数据库模式,说明并操作类定义和对象实例。oodb语言主要包括对象定义语言(odl)和对象操作语言( oml ),其中对象操作语言又包括一个重要子集—对象查询语言(oql) t3)。oodb语言一般应该具备下列功能。

2. 1类的定义与操作

    包括定义、生成、存取、修改和撤销类。其中类的定义包括定义类的属性,操作特征、继承性与约束等。

2. 2操作/方法的定义

    面向对象数据库语言可以用来定义操作/方法,在操作实现中,语言的命令可用于操作对象局部数据结构。

2. 3对象的查询

    oodb语言可以用于操作(包括生成、存取、修改与删除)实例对象。对于对象的存取—查询部分,oodb语言可以直接查询对象个公有成员而不必向每一个对象“—单”发送消息。而对于非公有成员,则只能通过发送消息来实现存取、修改与删除了。通过发送消息的查询效率可能会很低,因此对于一些经常要查询的数据应该尽量定义为公有类型。

3面向对象数据库模式

3. 1模式的一致性

    (1)唯一性约束:即同一模式中所有类的名字必须唯一、类中属性名和方法名必须唯一。

    (2)存在性约束:每个被引用的类必须在模式中定义、某操作代码中调用的操作不需给出说明、每一个说明的操作必须存在一个现实程序。

    (3)子类型约束:子类和父类(或超类)不能有环、不能有多继承(向java学习)、单一超类必须加以说明。

3. 2模式演进操作

    主要包括以下几个部分:

    (功类集的改变

    (2)已有类的成分的改变

对象数据库范文2

关键词:面向对象;数据库开发;编程;计算机应用;信息系统

引言

当前关于数据库的应用系统,最主要的就是两层的结构,把关系数据库既作为存储机制,又作为管理工具。这样的系统最主要的设计就是数据库的设计,可以说实体及关联的设计与修改就是整个应用系统的开发过程。但是如果客户变动需求或者设计人员根本就没有搞清楚最主要的需求是什么,那么设计的程序将是难于使用的,一个微小的变动却使得设计者不得不大量的改变原码或推翻重做。关系数据库无法适应频繁变动的需求。这里应用新的方法去模拟难以捉摸的现实需求。

1 关系数据库的优势

当前用于存储数据的持久机制主要有文件系统、数据库系统(按数据模型分为层次型、关系型、网状型)。可以采用文件或电子表格存储数据,但运行业务时具有很大的局限性。对于非专业人士,尝试维护和管理分散的企业中的信息孤岛会遇到数据访问和准确性问题。性能(尤其是在客户需求的高峰时段)可能会降低至暂停状态。

关系数据库在这些方面强大得多,尤其在分析方面。关系数据库使能够以复杂、有意义的方式操作数据,从而可以检索到与特定条件相匹配的所有记录,交叉引用不同的表以及批量更新记录。在以下情况下,关系数据库是最好的选择:要输入(并经常更改)分散在业务中不同计算机上的多个电子表格或其他文件中的信息;数据(以及访问数据的用户数量)不断增加或更加难以使用、管理、保护,还会遇到性能问题;基于数据生成特定或常规报表以进行决策制定,但无法始终确保数据的准确、完整性。

2 数据库开发的对象思想

面向对象的理念是自发的,源自天然的。所以面向对象技术被设计得最遵循思维的自然方式。也就是说,用到的符号,术语,定义和每个人都相关。基于面向对象的分析和设计技术的这些特点,客户可以从始至终参与到系统的分析中去,参与到系统的设计。由于在讨论对象之间的交互作用时,大家使用同样的术语概念。客户还可以参与文档的创建和编写,因为他明确已有对象的含义。这样分析出来的设计绝对是符合需求易于客户使用及管理的。

另外加上面向对象技术方面的继承等技术,使得应用系统的的升级变的轻松。当今计算机硬件的飞速发展使得由于使用面向对象技术带来的速度效率问题变得越来越没那么重要了,而各个行业对于计算机的使用使得软件越来越复杂,清晰的分析和设计条理变成了更主要的问题,而面向对象是非常适合解决这个问题的。

3 应用面向对象的数据库开发

(1)系统分层  在数据库和客户端加入一个中间层,在这一层添加业务层和数据访问层,数据访问层与数据库交互为业务层提供数据服务。业务层为客户层提供经过分析及过滤筛选之后的对象及对象集合。

(2)面向对象分析和设计  分析需求中可能存在的潜在对象:对象是一个真实或抽象的元素项,它包含信息(即对象的属性)和处理对象的方法。任何对象都可包含其他对象,这些对象又可包含其他对象,直到系统中最基本的对象被揭示出来。仔细阅读需求说明书并在所有名词下画线,寻找于系统中的其他对象交互的实物,人员,地点、文件。寻找对象的属性及对象之间的关系:通过需求找出潜在的对象之后就是分析对象的关系及某个对象(类)应该具有的属性,面向对象的分析与设计的本质是我们用自然的观点去看待一个应用系统的实现。

(3)行数据库设计  要用面向对象思想进行数据库设计,因此应该选择实体主导型设计方法:设计应用系统结构;选择便于将应用程序与 DBMS 结合的DBMS体系结构,如RDBMS;根据应用程序使用的环境平台,选择适宜的DBMS(如Oracle)和开发工具(如PB)设计数据库,编写定义数据库模式的SQL程序;编写确保数据正确录入数据库的用户接口应用程序;录入数据库数据;运行各种与数据库相关的应用程序,以确认和修正数据库的内容。

用数据库作为应用系统中对象的持久机制,而对象之间的关系也就是相对于数据库设计部分的实体之间的关系,应该由应用系统的对象协调处理。就是把需求逻辑留在业务层去处理。

4 应用实例

4.1系统构想

设想这个是校园学生信息MIS系统。该MIS系统有几种验证方法,一、通过使用的和选择的学校。如果其在其学习的IP段的话,就认为是在宿舍上网,可认为是学生,将自动通过注册请求,系统发激活邮件;二、不符合第一种情况的话,看选择的注册方式如果是使用IP电话的话去根据选择的学校看填写的IP电话是否符合所在学校的IP段,如果符合的话,系统发激活邮件;三、选择学校邮箱注册,根据选择的学校和他填写的邮箱,如果域名符合就认为注册人为合法学生,系统发激活邮件;四、选择其他方式,通过人工方法去确认注册者的合法性。

以上是用户注册的过程,注册成功后,用户通过激活账户的链接,激活自己的账户,然后登陆,登陆成功后就可以使用注册用户可以使用的所有功能。管理员除可以拥有所有注册用户可以使用的功能外,还可添加学校宿舍及课程信息;编辑学校所在的IP段,查看所有用户的状态,进行活动管理,即添加、编辑活动,设定活动规则。

应用系统需要响应用户的操作;另应用系统还需要给出各种各样的排行;需要按照规则确定活动的获奖者等;需要记录用户的操作,以确定用户的积分;给登陆用户提示是否有人邀请成为朋友,是否有新的信件,是否有组织邀请加入;系统需要维护组织和组织成员之间的关系,即每个组织都有一些成员(合法用户分创建人、管理员和普通成员),创建人可以提升普通人员为管理员。

4.2数据库设计

这里对于设计数据库、处理与数据库的交互,需要从静态类图中设计到的对象分析出要持久化的对象,关系数据库在这里只是一个存储机制,不过用面向对象的思想设计的数据库是应用系统能够面向对象的基础。从系统组成得知需要存储注册用户的信息、博客的文章、博客和用户间的拥有关系、相册信息及照片信息、讨论主题、帖子信息、 组织信息、学校信息等。这里就不给出数据库设计的示例了,需要注意的是尽量应用对象之间的关系由类去处理即关联关系留在业务逻辑层处理,数据库专著于存储当然某些关联关系还是应该存储下来的,否则业务类也无从处理。在设计业务逻辑层时,将同一类的对象抽象封装为一个类。

用ownertype去存该comment是对什么对象进行的评论,而ownerID确定下来被评论对象的id。然后建立两个(或者更多视需求而定)视图,在加载评论时就可以直接从视图blog article comments中直接选择。当然在添加评论的操作是放在拥有他的类的方法中的。因此,就可以比较容易得到其拥有着的类型。

4.3数据库部署

整个系统分为三层,客户层、业务逻辑层及数据访问层,选择SqlServer2000作为数据库。项目使用asp.net作为开发平台,用c#作为开发语言,相应的使用IIS6.0作为WEB服务器。

本系统的两种角色注册用户和管理员用户的问题,在上面的类结构设计时,我让管理员继承的注册用户类,这样管理员就自然的拥有注册用户可以使用的所有权限,而它本身还可以拥有自己的权限,对学校的管理,对宿舍、专业及注册用户的管理。在页面类设计时采用这样的设计来确保使用页面的权限问题。设计三个类BasePage、BasePageForLogin、BasePageForAdmin,这三个类都继承自System.Web.UI.Page重载了Render方法,这样就可以为同一级别的页面(是指只能被某一级别用户浏览的一系列页面)绘制相同的导航条,使页面的风格统一化;BasePage类来作为未注册用户可以浏览的页面的基类, BasePageForLogin类作为只有注册用户才可以浏览页面的基类,BasePageForAdmin类作为只有管理员才可以浏览页面的基类。然后就可以在这些类的render方法中进行统一的权限设置及出错管理。

对象数据库范文3

一、XML与数据库的数据转换原理

XML和关系数据库在数据应用和数据管理方面各有优势,应是一种相辅相成、扬长避短的关系。从技术角度讲,“以数据库为存贮手段,以 XML为交换载体”的数据管理模式是一种趋势。XML存放在关系数据库中, XML数据以虚拟XML文档的形式存在。本文的重点即着重讲解:如何将xml数据转化为关系数据库数据。

为了在XML文件和数据库之间交换数据,必须将XML文件的schema(DTD,XML Schema, RELAX NG等)映射到数据库的schema。用于数据转换的软件位于这种映射的上层。该软件可以使用XML Query语言(如XPath,XQuery,或其他专用语言)或简单地按照映射(SELECT * FROM Table的XML对应形式)转换数据。

对于后者,文档的结构必须完全符合映射所要求的结构。由于通常不易做到这点,使用这种策略的产品一般要和XSLT一起使用。在数据转换到数据库之前,先将文件按照映射所要求的结构进行转换,然后转存数据。相应地,数据从数据库中取出以后,结果文件要被转换成应用程序所需的结构。

文件schema到数据库schema的映射是在元素类型、属性和文本上进行的。这时几乎总是忽略物理结构及某些逻辑结构。这样做是自然而然的,因为数据库和应用程序只需关心XML文件中的数据。

这种方法的一个问题是能否保证文件的往返 -- 将文件中的数据存入数据库后,又从数据库中的数据重新构建文件。将一个XML文件的schema映射到数据库的schema有两种方法:基于表格的映射和对象-关系映射。

1、基于表格的映射 (Table-Based Mapping)

许多转换XML到数据库的中间软件都采用基于表格的映射。它把XML文件看作一个(或一组)表格,也就是说,XML文件的结构必须是下面这种样子,如果只是单一表格的话,就不再需要元素和其他元素。

根据所用软件的不同,可以将各字段数据以子元素的形式或以属性的形式存储,同样也可以指定这些元素或属性的名字。此外,采用基于表格映射方式的软件还可能允许在文件开始的地方包含表格或各字段的元数据,或者将其作为各表格或元素的属性。注意这里所说的“表格”是泛指的表格。当将数据从数据库中转到XML文件时,“表格”可以是任何结果集,反之,“表格”可以是普通的表格或可更新的视图。

基于表格的映射对存取关系型数据比较适用,比如在两个关系型数据库之间转换数据。其明显不足就是不适于格式不符的XML文件。

2、对象-关系映射 (Object-Relational Mapping)

所有支持XML的关系型数据库和某些中间件都可以使用对象-关系的映射方式。它将XML文件中的数据视为特定的对象树的模型。在这个模型中,元素及其类型、元素内容或混合内容(复合元素类型)通常被视为类。只具有PCDATA内容的元素(简单元素类型)、属性以及PCDATA都被当作简单属性。然后通过传统的对象-关系映射技术或 SQL 3的对象视图将该模型映射到关系型数据库。也就是说,类被映射到表格,简单属性被映射到字段,而值为对象属性被映射为成对的主键/外键(primary key/foreign key)。

在理解这种映射所用的对象模型的时候要知道,这个对象模型不是文件对象模型(DOM)。所有XML文件的DOM都是一样的,而上述描述文件数据的模型对于每个DTD所定义的XML文件都不一样,例如,上述销售订单的模型是一个由四个类所组成的对象树--SalesOrder, Customer, Item, 和Part, 如下图所示:

模型中的对象是否被实例化要取决于所用的软件。有些软件允许依据模型产生类,然后可以在程序中使用由这些类所产生的对象。在这些产品中,数据是在XML文件 - 对象 -数据库之间传递的。其他产品是直接在XML文件和数据库之间进行数据转换的,对象只是作为这种过程的可视化帮助工具。生成这些中间对象是否有用完全取决于你的应用程序。

二、将XML数据转化为ORACLE数据库数据

为了解决把 XML 有效地、自动地转换出入关系数据库的问题有各种方式。数据库厂商Oracle已经开发了转换 XML 到数据库表中的辅助工具。Oracle XML SQL Utility 把 XML 文档元素建模为一组嵌套的表。通过使用 Oracle 对象数据类型建模套入的元素。"SQL-to-XML"转换使用被对象数据类型引用的表,和嵌套的元素之间的一到一关联来构造 XML 文档。"XML-to-SQL"可能要求数据模型的改进(从关系转换到对象-关系)或重新构造最初的 XML 文档。

使用 OracleXMLSave 来存储XML 文档到对象关系模型中;insertXML 方法进行实际的数据插入。

import java.sql.*;

import oracle.xml.sql.dml.OracleXMLSave;

public class testXMLInsert

{

public static void main(String args[])

throws SQLException

{ Connection conn = getConnection("yly", "yly");

OracleXMLSave sav = new OracleXMLSave(conn, "yly. FXTRADE");

// Assume that the user passes in this document as 0-arg

sav.insertXML(args[0]);

sav.close();

}

...

}

如果 XML 和在数据库中的对象-关系模型是同步的则一切正常,但是如果不同呢? 在这种情况下你有两种选择。

对象数据库范文4

关键词: 面向对象数据库;db4o;开源;程序设计

中图法分类号: TP311.132.4文献标识码: B 文章编号:1009-3044(2007)15-30604-02

The Open Source OODB:db4o

CHEN Shuai, LIU Wen-ju

(Tianjin polytechnic university , Tianjin 300160, China)

Abstract:Describes the advantages and characteristic of db4o which is an kind of open source OODB. The article Show that how to operate the db4o on programming by using c# langue. The article also Explain how to load, update, delete one object of database and three very importent way of query of the db4o.

Key words:OODB;db4o;open source;programming

1 引言

面向对象是一种认识方法学,也是一种新的程序设计方法学。把面向对象的方法和数据库技术结合起来可以使数据库系统的分析、设计最大程度地与人们对客观世界的认识相一致。面向对象数据库系统是为了满足新的数据库应用需要而产生的新一代数据库系统。

这里要介绍的db4o数据库就是一种Java , .NET及Mono原生的性能卓越的纯面向对象的开源的数据库引擎,由来自加州硅谷的开源面向对象数据库公司 db4objects开发研制。对于Java 与 .NET 开发者来说都是一个简单易用的对象持久化工具,使用简单,你只需要在你的项目中加入db4o.dll的引用即可。目前一些世界级的领导厂商如 Inter,IBM,Bosch,BMW,Seagate,Hertz等都是它的客户。

b4o 的目标是提供一个适合嵌入的功能强大的数据库引擎,用以工作在移动设备,桌面以及服务器等各种平台。其主要特性如下:

开源模式:与其他 ODBMS 不同,db4o 为开源软件。

原生数据库:db4o 是 100% 的原生的面向对象数据库,直接使用编程语言来操作数据库。程序员无需进行 OR 映射来存储对象,大大节省了程序员在存储数据的开发时间。

高性能: db4o安装简单占空间小,仅需要400Kb左右。在db4o官方公布的基准测试数据中,db4o比采用Hibernate/MySQL方案在某些测试线路上速度高出44倍之多。

零管理:使用db4o无需DBA。

db4o支持Java和.Net平台。

2 设计类实例

在对db4o数据库的特点和特性有了大致了解后,我们通过一个例子来介绍db4o数据库在程序设计中的使用。 事例语言为C#语言,这个例子展示如何存储、更新、加载、删除一个只包括系统内置类型及字符串成员的简单对象实例,这个对象是一个存储了学生(Student)的相关信息如姓名及本学期所取得学分的类。

public class Student

{ private string _name;

private int _points;

public Student(string name, int point)

{ _name = name;

_points = points; }

public string name

{ get{ return _name;}

set{ _name = value;} }

public int points

{ get{ return _ points;}

set{ _ points = value;} }

public void AddPoints(int points)

{ points += points; }

override public string ToString()

{ return string.Format("{0}/{1}", _name, _points); } }

3 打开关闭数据库

使用Db4o.OpenFile()函数打开或新建一个db4o数据库,Db4o.OpenFile()需要一个参数作为特定路径的文件名,以此来获得特定的ObjectContainer实例――ObjectContainer对外就是一个数据库,也是我们操作db4o的主要接口。关闭ObjectContainer使用Close()函数,它将会关闭数据库文件并释放其占用的系统资源。

ObjectContainer db=Db4o.OpenFile(FilePathName);

try

{// You can do something here}

finally

{ db.Close(); }

此处db作为下文引用和存储数据库文件的变量名,其打开和关闭数据库的操作后面将不再写出。

4 保存对象

当我们想保存一个对象时,我们只需要简单的调用db4o的Set()方法,并传入要保存的对象作为参数即可。比如向db4o数据库存入一个姓名为“Liming”,学分是86的学生对象。代码如下:

Student stu = new Student("Liming", 86);

db.Set(stu);

Console.WriteLine("Student {0}", stu.Tostring());

5 加载对象

db4o提供了三种不同的查询数据的方法,(1)QBE:通过实例查询;(2)NQ:db4o原生/本地化查询;(3)SODA:一种通过数据库持久层进行的查询,查询语句被定义在字符串中,并通过持久引擎进行解释执行。其中NQ 是db4o 推荐使用的查询方式。这是因为NQ 方式提供了非常强大的查询功能,支持原生语言,也就意味着你可以使用 Java, .net 来判断该对象是否符合条件,这是其他数据库查询语言无法比拟的。在某些情况下, db4o 核心会将 NQ 翻译成 SODA 以获得更高的性能。

这下面分别详细介绍一下这三种查询语言。

5.1 QBE查询

当使用QBE进行查询时,我们需要为希望加载的数据而创建一个对象原型(prototypical ),db4o将会加载所有与原型相同类型(各成员字段不为默认值)的对象,返回的结果将会存储在ObjectSet对象实例中。

这如果想要从数据库中加载所有的学生对象,我们要提供了一个初始值为空的Student原型对象。原型对象中车手的积分为0,这是因为对于int型字段的默认值为0。

Student stu = new Student (null, 0);

ObjectSet result = db.Get(stu);

foreach (object item in result)

{ Console.WriteLine("Student {0}", stu.Tostring()); }

如果我们想要从数据库中加载特定的学生对象,只需要相应提供给数据库你所需要的信息即可。比如想得到姓名为“Liming”,学分值是80的学生对象:

Student stu = new Student ("Liming", 80);

ObjectSet result = db.Get(stu);

foreach (object item in result)

{ Console.WriteLine("Student {0}", stu.Tostring()); }

通过上面的例子我们不难看出,使用QBE方式进行查询存在着如下几个局限点:

1)db4o需要反射你提供模板对象的所有成员数据;

2)不能使用高级查询表达式,如AND、OR、NOT等;

3)对于数据不能使用强制条件,如int的0,string的空字串或空引用类型,因为它们在查询时都解释为非强制关系;

需要为类提供非初始化成员数据的构造函数,这意味着在定义数据成员时不能对其进行初始化。

所以,我们推荐的是另一种查询方式 NQ。

5.2 NQ查询

使用NQ为你的查询提供了开发语言内置的支持能力,提供类型安全机制、编译时检查及反射功能,使用面向对象的方法调用来完成查询。NQ是db4o数据库查询的主要接口也是开发者极力推荐的数据查询方式,因为NQ充分运用了开发语言的语义完整性,将会成为将来完美而安全的选择。

这也有人说使用NQ查询就是用你熟悉的编程语言进行数据库查询。所以这样写出的查询代码将是 100% 的类型安全、100% 的编译时检查以及 100% 的可重构。

下面我们看看在C#语言中NQ是如何进行使用的。

C# .NET 2.0

Ilist stu = db.Query (delegate(Student stu){

return Stu.points = 80;});

C# .NET 1.1

IList list = db.query(new StudentPoints ());

public class StudentPoints: Predicate {

{ public boolean match(Student stu)

{ return stu.Points = 80;} };

for(int x = 0; x < list.size(); x++)

{ Console.Writeline(list.get(x)); }

从上述代码中可以看出,对于不支持泛型的语言来说,都需要提供一个扩展com.db4o.Predicate的类,并提供一个参数为待查询的类,并返回布尔值的函数#.Match()或#.match(),其函数签名为:

bool Match(Pilot candidate);

可以看到,在进行 NQ 查询时并没有加入任何条件(无条件返回 true),那么这么做是不是相当于遍历了整个数据库?db4o 的设计者早就想到了这个问题,当 db.query() 执行完毕返回 list 实例的时候,db4o 只是与数据库同步取出内部的 IDs 而已,并没有把所有的 Student对象全部取出,只有在list.get(x) 之后才会去根据 IDs 取出记录。所以我们不必担心性能方面的问题。

5.3 SODA查询

SODA是db4o提供的底层查询接口,允许开发人员直接操作查询表达式树中的节点,它采用字符串标识对象数据成员,但是这种方式既不是类型安全也不在编译时进行检查并且写起来十分冗长。

比如我们想查找成绩在80到90分之间,或者姓名为“Liming”的对象。用NQ查询代码如下:

IList result = db.Query< Student > (delegate(Student stu) {

return stu.Points > 80

&& stu.Points < 90

|| stu.Name == "Liming"; });

而用SODA写起来则较麻烦一些:

Query query=db.Query();

query.Constrain(typeof(Student));

Query pointQuery=query.Descend("_points");

query.Descend("_name").Constrain("Liming")

.Or(pointQuery.Constrain(80).Greater()

.And(pointQuery.Constrain(90).Smaller()));

ObjectSet result=query.Execute();

而SODA也有其它两种查询不可比拟的优势,那就是使你的应用程序能够动态生成查询,这种情况也是我们在应用开发中所需要的。

看一看由QBE查询转换为SODA的例子,想得到所有车手的对象信息,对于查询的约束为Student类对象。

Query query = db.Query();

query.Constrain(typeof(Student));

ObjectSet result = query.Execute();

ListResult(result);

为了通过学生姓名字进行查询,我们需要扩展上述约束条使其包含待查询对象的” name”字段的相应字符串。

Query query = db.Query();

query.Constrain(typeof(Student));

query.Descend("_name").Constrain("Liming");

ObjectSet result = query.Execute();

ListResult(result);

现在对db4o数据库的查询工作做一个总结。我们可以通过其提供的三种方式中的任意一种来完成。对于何时采用哪种方式进行查询,我们的建议是:

(1)NQ作为db4o主要的查询接口将是我们不二的首选;

(2)当前版本中对NQ查询的优化操作总是以SODA方式来执行的,因此SODA可以作为系统优化的一种途径,同时它总是用来在运行时动态的生成查询。

(3)QBE对于初学者来说将是很好的选择,当然它在功能上会有些限制,如果你喜欢的话有时对的应用还是很适合的。

6 更新对象

更新对象跟存储它们一样简单,实际上我们只需要把更改后的对象在存入数据库中就可以了。即再次调用同样的方法Set()方法就可以了。

ObjectSet result = db.Get(new Student("Liming", 0));

Student stu= (Student)result.Next();

stu.AddPoints(11);

db.Set(found);

Console.WriteLine("Added 11 points for {0}", stu.ToString());

请注意,在调用Set()方法更新对象之前我们先进行了查询,这一点十分重要。这是因为如果在当前的存储或加载操作过程所处的会话中对象对于db4o不可知的话,db4o将会向数据库中插入一个新的对象,之所以会这样是因为db4o不会自动的去匹配先前存储于数据库的对象,而是假设你向数据库中存入第二个拥有相同属性的对象。

7 删除对象

删除数据库中的对象使用的方法是Delete()方法。

ObjectSet result = db.Get(new Student("Liming", 0));

Student stu= (Student)result.Next();

db. Delete (stu);

8 结语

Db4o面向对象数据库与传统数据模型相比较,优势体现在:一是Db4o对数据语义的扩展更大,通过允许定义任何复杂的数据类型和提供与数据相关联的行为。这种语义更接近于面向对象程序设计语言的语义。二是面向对象技术强调与数据相关的软件的组织而不是强调控制流,从而把程序员的注意力转向数据库设计者的意图,面向对象语言和面向对象数据库相互形成互补,并且又保持了各自的长处。三是Db4o在功能方面与关系数据库有很大的区别。关系数据库,如SQL Sever在运行时根据存在表中的数据集而导出一个虚结构。Db4o数据库本身含有对象。四是Db4o是一种主动型数据库,而一个关系数据库则是被动型的数据库。关系数据库主要提供的是增删记录的能力,而面向对象数据库提供了在对象中嵌入方法的能力。因而,Db4o数据库可以嵌入很多的操作,而在关系数据库中,这些操作需要应用程序来实现。五是Db4o新引入的抽象、扩充类型定义、用户自定义操作以及支持版本规模型演化等概念和功能,消除了传统数据库对数据定义的一致性,提供了更为丰富的语义。

参考文献:

[1]Object-oriented database programming with db4o[EB/OL]. /30878/ShowPost.aspx

[2]DB4O 国内翻译的部分资料―― Forums [EB/OL]./PrintThread.aspx?PostID=30860

对象数据库范文5

关键词:MQ;民航;气象数据库

引言:

随着交通事业的全面发展,人们对气象资料信息及气象速度要求日益增长,伴随科学技术水平的提高,MQ在民航气象数据库系统中扮演越来越重要的角色,大幅度提高了气象信息对民航的安全保障能力,提高了航空气象业务的服务效率。笔者通过对MQ的系统阐述,探究MQ在航空气象数据库系统中的应用策略,旨在为民航事业贡献力量。

一、MQ概述

(一)消息。消息是对使用它的程序中产生影响的字节组合。消息的主要用途是从一个应用程序传递数据到另一个应用程序。消息主要由应用程序数据和消息描述符量部分组成。应用程序能够决定应用程序数据的内容和结构。

(二)队列。MQ队列可以根据不同的功能分类成不同的队列,主要分为本地队列和远程队列。本地队列继续细化可分为普通本地队列和传输队列,普通本地队列是应用程序通过固定接口对其进行操作的队列;传输队列将远程队列信息资源作为临时存储目标。

(三)队列管理器。队列管理器能够为多种应用程序提供管理服务,使若干应用程序根据一定的顺序进行排队,同时根据应用程序的不同需求对适应其要求的队列进行有效管理。队列管理器能够有效保证JyhLinux联搜集到的信息资源更改对象属性。队列管理器能够将JyhLinux联遇到的紧急情况按照应用程序的需求放入正确的队列当中,如果此类特殊事件不能放入正确的队列当中予以解决,会及时将未能解决的代码通知所属应用程序[1]。

(四)通道。队列管理器的有效通信路径是成为通道。通道主要由以下三类组成:消息通道、MQI通道、群集通道。JyhLinux联通道的主要功能是为处于相同平台或者不同平台上的不同队列管理器提供通信路径。消息通道的主要功能是为两个队列管理之间传递信息提供途径,为应用程序提供快捷的环境。

二、MQ在民航气象数据库系统中的应用

MQ在民航气象数据库系统中扮演者重要角色,其具有传输气象信息和图形产品的义务。以下以成都和贵阳两个民航节点为例,阐述MQ在民航气象数据库系统中的应用原理[2]。假设在成都的本地通信系统中,存在两个应用程序,分别是应用程序A和应用程序B且A和B处于本地同一系统内,那么A和B之间可以以消息队列为媒介进行信息的传递;也就是当应用程序A向消息队列了一条重要信息,当B需要利用这条信息时,可以在消息队列中查收到信息。假设成都到贵阳的通信系统中,成都拥有应用程序A和B,贵阳的应用程序为C,当应用程序向队列中发送一条消息,消息的目标是位于贵阳通信系统上的应用程序C,当成都通信系统中的MQ发现A发送的信息实际在贵阳通信系统上,MQ会将信息自动纳入新的队列中进行区分,而新的队列是传输队列。假设现在我们已经创建了成都-贵阳信息通道,信息通道服务器将在通道中读取传输队列的消息,然后将这条消息迅速传递到贵阳的数据库系统中等待贵阳方面的确认。成都信息系统的MQ确认贵阳通信系统已经成功接受并确认了该条信息之后会将传输队列中的信息自动删除。如果由于通信线路出现故障或者贵阳系统不在正常运行状态造成的信息没有及时传送和确认,信息将自动保存在传输队列中,直到信息被成功传送到目的地为止。确保信息的有效传递是MQ最基本和最重要的技术。在实现信息传递的过程中,作为信息发送方的成都通信系统需要完成建立队列管理器-定义传输队列-创建远程队列-定义发送通道程序。作为信息接受和确认方的贵阳通信系统西药完成建立队列管理器-定义本地队列-创建接受通道的程序。

结语:

快速、及时、有效地进行气象信息传递与是现代交通事业发展的需要,是民航事业提高运输水平的需要,是保障飞行安全的需要。MQ在民航气象数据系统中的全方位应用能够为气象信息在复杂化的网络环境和系统环境中有效提供技术层面的保障,MQ重要潜能正在被民航管理者和技术研究部门开发和利用,希望通过本文的相关分析能够为民航事业的决策者和领导者提供在气象数据库系统领域的借鉴,是MQ在民航气象数据库系统中绽放异彩,保障飞行安全,促进民航事业持续稳定发展。

参考文献

[1]姚丽萍,黎巍.民航数据库系统中MQ技术的应用[J].中国电子商务,2014,08(04):59-60.

对象数据库范文6

随着信息技术与科技设备的发展,网站得以出现。而随着信息科技的普及,网站也得到普及。网站在开发中涉及前台页面制作以及后台程序管理制作,而后台程序是一种基于服务器的可执行程序,可以经由服务器端执行或数据库连接进行数据交换与修改。显然,数据库技术在网站开发中占有重要地位。数据库设计的质量可以反映程序员的设计水平,也能够直接影响网站的运行效率。一个优秀的数据库设计,能够充分提升网站数据传输效率,保证数据信息的一致,所以数据库设计优化才可以保障网站的运行质量。本文通过分析数据库概念、网站开发的特点、数据库在网站中的应用、有无数据库支持的网站开发对比等,进行数据库设计在网站开发中应用的论述。

关键词:

网站开发;数据库技术;互联网;应用

互联网出现十几年,用非常快速的速度影响着人们的生活,改变人们的生活方式、工作方式、生产效率等。顺应互联网技术的发展与社会各阶层的需求,网站被开发出来,政府机关与企业间等各种机构都开设独立网站。网站的作用可以是为企业宣传,可以是产品营销,可以是知识传递等,以满足人们的多种需求。因此,网站的开发产业得到了有效发展。本文论述数据库设计对网站开发的作用。数据库是网站开发的核心,网站内所有的数据都需要数据库进行处理,所以数据库的设计是决定网站运行质量的关键因素。因此,本文以数据库的设计为核心,展开数据库在网站开发中应用的研究,从而论述数据库设计对网站开发的实际价值。

1数据库技术概述

数据库在领域内被称为数据的仓库,是依据数据的传输形式与自身结构进行存储与管理的仓库。后期随着数据库技术的不断发展,数据库的职能逐渐扩展,已经不仅用于管理信息与储存信息,而且发展成为用户所需的数据管理方式。现展下的数据库可以为用户保存数据,还可以关联到与之相关的数据。程序开发者按照不同用户的需求进行数据库设计,并负责数据库的运行、维护、安全保护,确保数据库的有效运行[1]。现阶段,数据库设计技术已经成熟,可对大型数据进行安全管理。所以,现代数据库设计也被应到各个领域中,如网络购物、银行系统、网站等。

2数据库的具体设计

2.1数据库设计的原则程序员在进行数据库设计时,要充分考虑可能影响数据库设计的多方面因素,因此,需要程序员具有整体意识,以用户的需求为设计基础,避免出现过多不需要的数据库空间,浪费资源,同时节省人力、时间与财力。数据库设计要被限定在特定范围内,对用户所需存储的数据进行管理。在数据库开发前,需要设计者做好充足准备,全面了解数据库的网站以及对网站后期可能开发的需求。设计数据库时,要预留可再开发的空间,使数据库更具有可扩展性[2]。数据表是数据库的核心体现,因此数据表的命名要清晰,方面用户数据的查找与提取。同时,要对用户进行权限配置,限定特定的用户可以进行数据库访问,以加强数据库的访问安全。

2.2数据表字段的类型数据表的字段需要根据用户所需求的字段最小数据类型进行确认。例如,性别数据库。只有男女两个分类,可以设置为int型,数字0代表男性,数字1代表女性。但是,如此设计会造成资源浪费。于是,可以按最优设计为基准,将字段设置为bit型,true为女性,false为男性。现代信息技术的发展,使得硬盘的容量逐渐提升,市场价格也逐渐下降。但是,如果数据库设计的不够合理,随着数据资源的集聚增加,占用的硬盘空间会逐渐加大,进而影响数据库的运行效率,增加用户数据浏览时所用的时间。

2.3数据表的设计数据表是数据库对用户的体现途径。按照用户的不同需求,数据库的设计也有所区别,而数据库的设计与网站的规模密切联系[3]。数据库的设计需要满足用户网站的多样性与扩展性需求,网站的设计会区分为不同的功能模块。因此,在进行数据表创建时,要最大化将数据资源存储到数据库的不同表中,同时建立数据字典。实例说明:某新闻网站,数据库包含以下几个方面:(1)系统数据表,用于用户基本信息的存储,如联系方式等;(2)菜单表,作为网站首页菜单信息的存储;(3)栏目表,作为网站信息各栏目名称的存储;(4)新闻信息表,作为网站内各项新闻内容的存储,如新闻标题、时间、信息来源等;(5)用户表,作为网站各类用户与权限信息的存储。以上所介绍的是简单的新闻网站的基本表设计,如果网站内部还有其他功能,可以继续创建新表,不受限制。

3数据库设计在网站开发中的实现

3.1网站前台的设计实现网站前台的作用是将存储在数据库中的信息转换为用户可以通过浏览器进行浏览的网页。一个常用网站可以供用户浏览的信息包括三个类型:网站首页信息、网站新闻栏目首页信息、网站新闻页面信息。此三个类别中的信息均来自数据库,其中网站首页所显示的是不同新闻栏目中最近的几条信息标题,信息条数可以自行设计;网站新闻栏目首页所显示的是网站内部指定栏目的信息标题;网站新闻页面显示的是用户制定的新闻内容的详细内容。所以,网站前台的主要功能是能够自动生成网页文件,这需要数据库的辅助,各栏目内容需要随时进行信息的录入、储存、提取。数据库设计中,需要将各类信息做好数据表的分类,方便信息管理,最大化使用数据库空间[4]。

3.2网站管理后台的设计实现网站的后台管理归管理员个人使用,主要负责网站内部各栏目与内容的管理,涵盖栏目的添加与替换、内容的更新与替换、页面的修改与维护等。后台管理的结构包括权限管理、栏目管理、信息管理、模板管理、插件管理等多个板块。其中,权限管理用于设置网站的访问权限,如页面是否允许复制、管理员设置等;栏目管理可以进行栏目名称的调整,如名称替换、位置替换等;信息管理主要用于前台新闻内容的更新,可以做新闻的添加,也可以进行删除与修改等;插件管理是网站结构的管理,如首页管理、权限管理等可以将其他版块添加到插件管理中。网站管理后台涉及众多模板,需要数据库设计进行网站结构的优化。

4数据库在网站中应用的结果分析

4.1网站建立期的分析网站在建设期间有多条新闻需求,在建设期如果没有数据库的支持,则需要创建多个静态新闻页面。栏目首页需要4个,网站首页需要1个,再加上个页面的内部页面,数量居多,且如此开发出的网站不可进行重复使用,需要扩展或者更新时,则需要全部重新建立。而具有数据库设计的网站在建设期间首先通过编程建立网站前台与网站的内容管理后台,设计时需要投入较多,但是设计后网站可以进行重复利用。网站管理后台可以长久使用,可以直接进行网站的改版,从而减少资源浪费与时间成本。

4.2网站运行期间的分析网站运行维护期间,可分为两种情况:网站内部不需要内容的更新;网站内部需要做大量内容更新。第一种情况中,采取数据库设计与不采取数据库设计,后期将付出的投入没有太大差别,所以更需要考虑网站内部需要大量内容更新的情况。这主要源于现代信息社会信息量巨大,无论是处于网站优化还是企业宣传,现代企业所建立的网站都需要进行大量信息的上传与修改。没有数据库支持的网站建设,每进行一条新闻的添加,都需要增加一个新闻页面,同时还需要修改所属栏目的首页,所以一次新闻的更新需要改动三个位置,如进行大量内容的添加,导致工作量剧增。而有数据库支持的网站,增加新闻时不需要做任何页面的添加与修改,只需在后台添加已经设置好的新闻管理页面,操作简单。具体地,将需要添加的新闻标题与内容分别添加到各自的文本框,然后提交即可。可见,工作量极小。

4.3结果分析现代社会处于一个信息爆炸的年代,海量信息在互联网内部传播,用户需要网站内部具有新闻排序、检索、分页等功能,而这些功能的实现,必须通过数据库才可以完成。通过上述对有无数据库网站之间的比较可以发现,静态页面组成的网站使用与较小型的使用,内容无需更改;而具备数据库设计的网站开发方式则适用范围更广,可以支持大型网站建设,内容更新快捷,反应灵活,使用于大量制作网站的网络公司使用,可重复利用性更高。

5结语

通过上文叙述可知,单纯的网站开发需要多个静态页面进行连接,实用性较小,进行数据更新时操作工作量过大,且网站一旦建立不可重复使用,不利于资源重复利用。而经过数据库的设计可以做到网站结构的优化。网站设计前,预先建立网站前台与网站内容管理的后台,通过用户的需求将所需要的栏目信息存储在数据库中,在网站首页进行页面浏览时可以快捷从数据库进行提取,而网站内容更新也可以在后台进行简单操作,网站建立后可以进行重复利用,随时进行网站改版,以可以看出网站有无数据库设计的巨大差别。网站开发的方向是实际应用,数据库的设计原则是优化,因此数据库设计在网站开发中可以起到极大的优化作用。

参考文献

[1]徐伟明.ASP在网站开发中数据库连接方法及比较[J].电脑知识与技术,2010(30):8448-8450.

[2]朱国进,夏虹.ADO在网站数据库开发中的应用[J].山东电力高等专科学校学报,2002(2):67-71.

[3]王玉蓉,王文娟.NET与数据库技术在动态网站开发中的研究与应用[J].数字技术与应用,2014(3):106.