`
jiasudu1649
  • 浏览: 722991 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多
 1.数据库技术的发展

    从60年代至今的30年中,信息系统数据库技术的发展已经经历了四代,当前正在开发第五代数据库技术。随着数据库应用复杂性以及运行、维护和推广这些应用的开销的增加,总是迫使数据库技术从一代向另一代过渡。第一代是文件系统,如ISAM(索引顺序存取文件)和VSAM(虚拟顺序存取文件);第二代是层次数据库系统,如IMS和System2000;第三代是CODASYL(网状)数据库系统,如IDS,TOTAL,ADABAS,IDMS等。第二代和第三代系统实现了在一个应用环境中许多用户对一个集成数据库的共享。但由于缺乏数据的独立性及对数据库的存取采用冗长的导航(navigation)方式等缺点导致第四代数据库技术,即关系数据库技术的出现。关系数据库技术是以非过程化的陈述式(declarative)查询的概念为特征的,具有一个较丰富的数据模型及一组满足应用要求的较丰富的工具。它的应用主要在事务处理的领域。

   从一代到另一代数据库技术的过渡是以对应用程序员编程更方便为标志的;但是这又使数据库的性能成为主要问题。为了使新一代数据库系统的性能达到可接受的水平,人们就需要投入大量的精力进行研究和开发。由网状数据库向关系数据库时代的过渡就特别能说明问题。在关系数据库中引入陈述式查询减轻了应用程序员从数据库中导航检索记录的冗长编程工作,但却必须研究和实现查询优化策略,以便提高系统的效率。数据库技术的发展类似于编程语言的发展,从机器语言到汇编语言,从汇编语言到高级语言,每一步的发展都方便了应用程序员对复杂应用的程序任务,但却要引入非常复杂的语言处理器,即,汇编编译器和高级语言编译器。

    80年代已出现了许多关系型的商品化的系统,如ORACLE,SQL/DS,DB2和SYBASE,以及INGRES等著名的系统。但是,关系数据库技术正像前面的每一代数据库系统一样是为传统的事务处理应用而开发的,如库存控制、工资、帐目等等。但是人们将关系及前几代数据库技术用于其他更广泛的应用类型时就很快暴露了几个严重的缺点。这些应用包括计算机辅助设计、辅助工程、辅助软件工程及辅助制造(CAD,CAE,CASE和CAM)系统及其应用;知识库系统(专家系统);处理图象、声音及正文文档等多媒体系统;以及编程语言系统。我们将关系和前几代数据库系统称为传统数据库系统。以下我们列举一下传统数据库技术的几个主要缺点;

a.传统数据模型,特别是关系模型,对于构造复杂的嵌套实体,如设计与工程对象以及复杂的文档等显得太简单,传统数据库系统不提供如像配置管理(ConfigurationManagement)那样的表示和管理这些实体的机制。

b.传统数据库系统仅支持一组有限的像整数、实数、字符串那样的原子数据类型;它们不支持在编程语言中出现的一般数据类型。特别是,它们不允许存储和检索图象、音频、正文文档那样的长的非结构数据(Long data)。

c.传统数据模型不包含许多经常使用的语义概念,如像一般化(generalization)和聚集(aggregation)关系;这意味着应用程序员必须在它们的程序中要明显地表示和管理这样一些关系。

d.传统数据库系统,特别是关系数据库系统的性能在要求快速计算的各种应用类型(如像计算机辅助设计和程序语言环境中的仿真程序)中是不可按受的。

e.应用程序是以某些数据库语言(如SQL、DL/1或CODASYL的DML)嵌套进某些程序语言(如像COBOL、FORTRAN或PL/1)来运行的。数据结构方面数据库语言与编程语言差别很大。数据模型和这种语言不匹配的问题促使人们开发第四代语言(4GLS)。

f.传统的数据库系统所支持的事务模型不适合于交互式、协作设计环境下所必须的长(Long-duration)事务。传统的数据库系统不提供表示和管理数据库的临时变化,包括如像模式的时间和版本变化以及变化的通报(notification)方面的一些工具。

传统数据库技术的缺点的发现促使数据库专业人员在80年代后期从事第五代数据库技术的铺路工作。为了满足当前的和新发现的数据库的一些应用,下一代数据库技术必须建立在传统的数据库技术基础上并要对上面提到的许多问题进行解决。

在面向对象程序设计语言的启示和推动下,许多数据库专家认为,把面向对象思想与数据库技术相结合是解决上述问题的一种很自然的方法,因而在80年代后期开始了对面向对象数据库(OODB)的研究.并逐渐形成高潮。

    2.面向对象数据库的类型及发展状况

   面向对象数据库系统的开发基本上是采取两种策略,一种是在现有关系数据库中加入许多面向对象数据库的功能。在商业应用中,对关系模型的面向对象扩展侧重于性能优化、处理各种环境的对象的物理表示的优化和给SQL模型赋予面向对象的特征。目前许多关系数据库投资机构已在这方面作了努力。例如INGRES公司推出了INGRES Object Management Intelligent Database(INGRES对象管理智能数据库),惠普公司推出了IRIS,ORACLE公司也推出了ORACLE数据库的面向对象扩充版本, SYBASE公司在其产品中以触发器和允许用户将过程作为数据库的部分进行存储来实现类似面向对象的功能。

    另一种方法是采用面向对象的概念开发新一代的面向对象数据库系统。早期的面向对象数据商品包括Graphael公司的G-Base,Ontologic公司的Vbase和Servio Logic公司的Gemstone,MCC公司的ORION,法国GIP Altair公司的O2。G-Base是用专家系统应用程序开发语言G-Logic编写的基于Lisp的系统。Ontologic公司的Vbase是专门的模式生成语言Type Definition Language(TDL)和一种过程语言C Object Processor(COP)编写的。Gemstone是一个多用户的面向对象数据库管理系统,它是由一种数据定义和操纵语言OPAL控制的。 Gemstone为用户提供了开发灵活性,即允许用户在C或Smalltalk和OPAL中执行数据操作。ORION系统是用LISP语言开发的一个面向对象数据库系统。O2系统是法国几家公司和大学的合作项目ALTAR的产物,后由GIP Altair公司进行开发和销售。这些早期的系统性能较低,因而对规模较大的应用很难适应。近年来用C++语言开发了许多新的商品化系统,如Ontos, Objectivity/DB,Versant,Objectstore等系统。

    面向对象数据库系统的开发方法可以细分成三种类型。

①混合型。混合型(hybrid)面向对象数据库,是在当前的数据库系统(绝大多数是关系型的)中增加面向对象的功能,通常的作法是用面向对象的特性,如复杂对象,二进制多媒体数据,来扩充关系的行和列模型。这种作法的优点是可以利用关系数据库的优化及实现技术的大量经验,而且用户也欢迎。较著名的是在Berkeley的加利佛尼亚大学(The University of California)开发的Postgrees以及目前商品销售的Montage。其他的混合型数据库有瑞典的产品EasyDB(Basesoft)和惠普(Hewlett-Packard)公司的OpenODB(HP Bristol)。

②纯面向对象型。纯(pure)面向对象数据库,整个系统完全按面向对象的方法开发,也常将数据库模型和查询语言集成进面向对象中。最近几年,原型系统研究所遇到的许多问题已逐步解决,许多系统已逐渐走向商品化。纯面向对象数据库的较著名的例子有:

a.Gemstone,由Servio公司开发的第一个广泛使用的商品化的对象数据库系统;

b.Versant,一个分布式对象数据库系统;

c.Matisse,由ODB/Intellitic公司开发的一个对象数据库系统;

d.Objectivity/DB,已经大量安装的一个对象数据库系统;

e.Itasca,由美国Itasca公司开发的一个分布式主动对象数据库系统。

③程序语言永久化型:程序语言的永久化(Persistent)存储系统,永久存储的方法是以当前的面向对象系统(通常是面向对象的程序语言)为基础,加进对象的永久化。绝大多数是在C++和Smalltalk上实现的。永久对象管理器是作为类库用运行模块加到语言中,常常采用特殊的顶处理器。现存的程序可以继续工作,但存储管理器能使程序使用永久对象和数据库。

这种方法与纯面向对象数据库管理系统的主要差别在于:系统是面向程序员的,而完整的纯面向对象数据库管理系统提供较多的交互式能力。这种类型的数据库管理系统有:

Objectstore,由Object Design公司开发的带有C和C++语言连接(language bindings)的系统;

ONTOS-DB,由Ontologic公司开发;

POET,由德国的POET GmbH公司开发的一个分布式C++永久类库;

ArtBASE,由斯洛伐克的ArtInApples公司开发;

Raima Object Manager;

     上述三种类型的对象数据库的差别并不总是十分明显。某些纯对象数据库支持SQL查询和语言连接(bindings),而许多水久存储管理器提供持别的查询功能。这些差别将来会愈来愈小。

    3.面向对象数据库系统与关系数据库系统较详细的比较

⑴面向对象数据库管理系统(ODBMS)和关系数据库管理系统(RDBMS)的共同特点

a.持久性(persistence):持久性是关于一个对象在超过其生存周期后的存在问题,一个对象在程序执行过程中可能是一个临时对象(transient object),程序执行完后就消失了,或称之为挥发(Volatile)掉了,为解决对象以后的重新使用,可以将其存储于磁盘上,以便需要时再用。

b.二次存储管理:支持查询优化,磁盘上的数据聚簇(cluster),数据缓冲,索引管理及大数量数据的管理。

c.并发性(concurrency):支持多用户同时存取同一数据库的能力。

d.恢复性(recovery):具有从磁盘、处理器或软件故障中恢复的能力。

e.查询(query):支持对数据库的有效查询,既可以是陈述式(declarative),又可以是导航式(navigate)的查询。目前关系数据库仅支持陈述式查询。

⑵基本特性的比较

    如前所述,面向对象和关系数据库二者都支持数据库的持久性、二次存储管理、并发控制、恢复和查询的功能。但这两种方式是以不同的范例(paradigm)或数据模型为基础的。这种基本的不同表现在按一种技术开发数据库所采取的方法论明显地与另一种的差异,即:

a. 面向对象的范例是以分类为基础的,类用于定义存储在数据库内对象的结构及行为。

b. 关系范例是以元组(tuple)或记录为基础的,它被唯一地用来定义存储在数据库内的数据结构。一组元组被称之为一个关系(relation)或一个表(table)。

⑶开发方法的比较

①关系数据库的开发

在关系数据库的开发过程中,对于被存储的数据实体是通过它们的属性或变量来描述的。实体一旦被描述,初始的数据结构需经过"规范化" (normalization)的处理来建立一组表(关系),同时减少了包含在元组中冗余的信息量。另外,每个元组至少要有一个特殊的属性称之为"码" (Key),它能唯一地标识表中的每个记录。码用于将各个不同表中的记录明显地联系起来。

②面向对象数据库的开发

面向对象数据库的开发过程中,实体应存什么数据也是由它们的属性来描述的。但与关系数据库不同的是将数据简化成一些类型,而不必经常引入码。对于复杂的应用来说,引入码是个特别繁琐的过程。

面向对象数据库的设计过程的注意力集中在以尽可能自然和直接的方式对现实世界的实体进行分类。类可以按子类的等级来组织,子类是定义较特殊一类对象集合的较自然的一种方法。子类继承了现存父类的属性。如前所述,继承是面向对象与关系系统之间差别的关键特点之一,尽管某些扩展的关系数据库如 Ingress可以提供有限的继承能力。

在ODBMS中数据的冗余也有不同的管理方式。在关系数据库中对表的结构进行分解使得实体属性以最少的表来表示。而在ODBMS中冗余的处理是按类结构进行,它与所存数据格式相对独立。唯一的一组属性被归并为一类,并能被许多子类重新使用,父类的变化将自动地用于其低层的类中,这意味着几个对象可以共享相同的属性,而不会在存取数据库中的对象时引起冗余问题。

在查询方面,ODBMS也提供与关系数据库相似的陈述式查询方式,但比RDBMS增加了直接引用的能力。采用直接引用来查询相应对象的方法比关系数据库存取的性能要高一到两个数量级。

⑷性能的比较

ODBMS和RDBMS产品数据存取性能的差别已按通用测试标准验证过了。SUN公司的Riok Cattell等人著的"对象数据库评估"(1991年对象世界会议文集)已对四个ODBMS产品:Objectivity,Objectstore, Ontos,Versant以及两个RDBMS产品:Sybase和Ingress进行了测试。一般说来,对于"冷"数据存取(对磁盘数据库存取) ODBMS比RDBMS平均快5倍;对于"热"数据存取(在内存中的数据库存取)要快30倍,对于"热导航"(在内存中对某一给定的对象访问与之相联系的所有对象)ODBMS任何一个产品都比RDBMS的每一个产品性能要高出三个数量级。

⑸面向对象和关系数据库系统的优缺点

①关系数据库系统的优点

a.灵活性和建库的简单性:从软件开发的前景来看,用户与关系数据库编程之间的接口是灵活与友好的。目前在多数RDDMS产品中使用标准查询语言 SQL,允许用户几乎毫无差别地从一个产品到另一个产品存取信息。与关系数据库接口的应用软件具有相似的程序访问机制,提供大量标准的数据存取方法。

b.结构简单:从数据建模的前景看,关系数据库具有相当简单的结构(元组),可为用户或程序提供多个复杂的视图。数据库设计和规范化过程也简单易行和易于理解。由于关系数据库的强有力的、多方面的功能,已经有效地支持许多数据库纳应用。

②关系数据库系统的缺点

a.数据类型表达能力差:从下一代应用软件的发展角度来看,关系数据库的根本缺陷在于缺乏直接构造与这些应用有关的信息的类型表达能力,缺乏这种能力将产生以下有害的影响,例如:大多数RDBMS产品所采用的简单类型在重构复杂数据的过程中将会出现性能问题;数据库设计过程中的额外复杂性; RDBMS产品和编程语言在数据类型方面的不协调。

    大多数现代的RDBMS产品已成熟地用于商务和财政方面,而这些领域不要求很高和很复杂的数据模型。虽然这些产品多多少少克服了一些以上所述的缺点,但从理论上看关系数据模型不直接支持复杂的数据类型,这是由于第一范式的要求,所有的数据必须转换为简单的类型,如整数、实数、双精度数和字符串。

    对于工程应用来说,这种不能支持复杂数据类型的典型结果就是需要额外地分解数据结构工作,这些被分解的结构不能直接表示应用数据,且从基本成分重构时也非常繁琐和费时间。

b.复杂查询功能差:关系数据库系统的某些优点也同时是它的不足之处。虽然SQL语言为数据查询提供了很好的定义方法,但当用于复杂信息的查询时可能是非常繁琐的。此外,在工程应用时规范化的过程通常会产生大量的简单表。在这种环境下由存取信息产生的查询必须处理大量的表和复杂的码联系以及连接运算。

    除非这些查询以固定的例行程序方式提供,否则用户就必须对SQL非常熟悉,以便适当地浏览数据库,查出所需的信息。然而,一旦查询方式按固定例行程序方式进行,用户最终就进行应用软件的常规维护。但应用或人机接口软件的变化又可能要求经常修改例行的查询,数据库结构的变化也可能导致例行查询程序以及应用或人机接口软件的失效。由于这些原因,关系数据库系统的维护开销可能是很大的。

   由于关系数据库不能提供足够的构造能力及性能方面的原因,在进行较复杂的数据库设计过程中,不可能将许多工程问题直接分解成一些简单的部分。由于缺乏直接指针存取方法,所以查询有关的信息需要花费时间。

c.支持长事务能力差;由于RDBMS记录锁机制的颗粒度限制,对于支持多种记录类型的大段数据的登记和检查来说,简单的记录级的锁机制是不够的,但基于键值关系的较复杂的锁机制来说却很难推广也难以实现。

d.环境应变能力差:在要求系统频繁改变的环境下,关系系统的成本高且修改困难。在工程应用中支持"模式演变"(schema evolution)的功能是很重要的,而RDBMS不容易支持这种功能。另外,关系数据库和编程语言所提供的数据类型的不一致,使得从一个环境转换到另一个环境时需要多至30%的附加代码。

③面向对象数据库系统的优点

a.能有效地表达客观世界和有效地查询信息:面向对象方法综合了在关系数据库中发展的全部工程原理、系统分析、软件工程和专家系统领域的内容。面向对象的方法符合一般人的思维规律、即将现实世界分解成明确的对象,这些对象具有属性和行为。系统设计人员用ODBMS创建的计算机模型能更直接反映客观世界,最终用户不管是否是计算机专业人员,都可以通过这些模型理解和评述数据库系统。

工程中的一些问题对关系数据库来说显得太复杂,不采取面向对象的方法很难实现。从构造复杂数据的前景看,信息不再需要手工地分解为细小的单元。ODBMS扩展了面向对象的编程环境,该环境可以支持高度复杂数据结构的直接建模。

b.可维护性好:在耦合性和内聚性方面,面向对象数据库的性能尤为突出。这使得数据库设计者可在尽可能少影响现存代码和数据的条件下修改数据库结构,在发现有不能适合原始模型的特殊情况下,能增加一些特殊的类来处理这些情况而不影响现存的数据。如果数据库的基本模式或设计发生变化,为与模式变化保持一致,数据库可以建立原对象的修改版本。这种先进的耦合性和内聚性也简化了在异种硬件平台的网络上的分布式数据库的运行。

c.能很好地解决"阻抗不匹配"(impedance mismatch)问题。面向对象数据库还解决了一个关系数据库运行中的典型问题:应用程序语言与数据库管理系统对数据类型支持的不一致问题,这一问题通常称之为阻抗不匹配问题。

④面向对象数据库系统的缺点

a.技术还不成熟。面向对象数据库技术的根本缺点是这项技术还不成熟,还不广为人知。与许多新技术一样,风险就在于应用。从事面向对象数据库产品和编程环境的销售活动的公司还不令人信服,因为这些公司的历史还相当短暂,就该十几年前关系数据库的情况一样。ODBMS如今还存在着标准化问题,由于缺乏标准化,许多不同的ODBMS之间不能通用。此外,是否修改SQL以适应面向对象的程序,还是用新的对象查询语言来代替它,目前还没有解决,这些因素表明随着标准化的出现,ODBMS还会变化。

b.面向对象技术需要一定的训练时间:有面向对象系统开发经验的公司的专业人员认为,要成功地开发这种系统的关键是正规的训练,训练之所以重要是由于面向对象数据库的开发是从关系数据库和功能分解方法转化而来的,人们还需要学习一套新的开发方法使之与现有技术相结合。此外,面向对象系统开发的有关原理才刚开始具有雏形,还需一段时间在可靠性、成本等方面令人可接受。

c.理论还需完善:从正规的计算机科学方面看,还需要设计出坚实的演算或理论方法来支持ODBMS的产品。此外,既不存在一套数据库设计方法学,也没有关于面向对象分析的一套清晰的概念模型,怎样设计独立于物理存储的信息还不明确。

面向对象数据库和关系数据库系统之间的争论不同于70年代关系数据库和网状数据库的争论,那时的争论是在同一主要领域(即商业事务应用)中究竟是谁代替谁的问题。现在是肯定关系数据库系统基本适合商业事务处理的前提下,对非传统的应用,特别是工程中的应用用面向对象数据库来补充不足的问题。面向对象数据库系统将成为下一代数据库的典型代表,并和关系数据库系统并存(而不是替代)。它将在不同的应用领域支持不同的应用需求。

经过数年的开发和研究,面向对象数据库的当前状况是:对面向对象数据库的核心概念逐步取得了共同的认识,标准化的工作正在进行;随着核心技术逐步解决,外围工具正在开发,面向对象数据库系统正在走向实用阶段;对性能和形式化理论的担忧仍然存在。系统在实现中仍面临着新技术的挑战。

    4.面向对象数据库系统的主要研究内容

⑴数据模型

    80年代中后期,关于面向对象数据模型的问题,经过反复地探索和讨论,对一些核心概念,专家们逐步取得了一致意见,提出了核心数据模型的概念,这个概念的主要内容是:

a.对象和对象标识符:任何现实世界的实体都是一个对象,它与一个全系统的唯一标识符相联系。对象有两种用处:一是促进对现实世界的理解;二是为计算机实现提供实际基础。所有对象都具有标识符且是可区分的。具有相同颜色、形状和构造的两个苹果仍然是两个不同的苹果。术语"唯一标识"指的是对象可由其内在本质区分而不是通过它们的描述性质来区分。在面向对象数据库中系统为每个对象生成唯一的对象标识符。

b.属性与方法:一个对象具有一个或多个属性和对这些属性的值进行操作的一个或多个方法。一个对象的一个属性也是一个对象,一个对象的一个属性可以取单值或一组值。

c.封装和消息传递:向一个对象发送消息来存取属性而将方法封装在对象中。除了通过对象所指定的公共接口存取对象外不存在任何其他的方法。

d.类:共享相同的一组属性和方法的所有对象被组合成一类。仅属于一个类的对象作为该类的一个实例。一个类也是一个对象,特别是,一个类是一个元类(mataclass)的一个实例。

e.类等级和类继承:在一系统中的某些类构成一个等级或一个有根无回路的有向图(Directed Acyclic Graph,简称为DAG),称之为一个类等级。例如,对于一个类C和与C相连的一组较低层的类{Si}来说,在集合{Si}中的一个类是类C的一个特殊化的类,反过来类C是集合{Si}中的类的一般化的类。在{Si}中的各类是类C的子类(Subclass);而类C是{Si}中各类的一个超类(Superclass)。集合{Si}中的任一类继承了类C的所有属性和方法,而且还可以具有附加的属性和方法。对类C定义的所有属性和方法也被它的所有于类递归地继承。

   一个类S的一个实例也是S的所有超类的一个逻辑上的实例。

   核心数据模型已经能够很强地支持许多应用类型的数据模型的要求,但是许多工程应用中还需扩充一些概念,其中最重要的有两部分内容,一部分是要反映对象之间的整体与部分的关系,即聚集关系,另一部分是要反映对象之间的版本关系。

a.复合对象:如果一个对象的一个属性不是一个基本数据类型(如整数、实数、字符串等)而是对另一个对象的引用,我们就说这个对象为复合对象。引用分两种类型:复合引用和弱引用。反映整体与部分(聚集)关系的引用为复合引用,一般联系的引用为弱引用。

b.版本关系:建立一个对象后,该对象可能有一些新版本从它派生出来,而其他一些新版本又能从它们再派生出来等等。版本控制是下一代数据库应用中最重要的数据建模要求之一。

⑵语言接口

     面向对象数据库系统的设计者们已经采用了两种不同的方法设计他们系统的语言接口:一种是定义数据库语言的传统数据库方法,该语言嵌套进宿主程序语言中。这种方法所存在的问题是应用程序员必须学习和使用两种不同的语言,而且应用程序员还必须处理两种语言所允许的数据模型和数据结构的差异,这就是所谓的"阻抗不匹配"问题。许多传统的数据库系统都是这种情况。另一种方法是用与数据库有关的结构扩充面向对象的编程语言。这种方法的主要优点是应用程序员仅需学习同一种语言的新结构。

    像传统的数据库系统一样,一个面向对象数据库的编程接口必须包括数据定义子语言,查询和数据操纵子语言,以及数据控制子语言。必须将这些子语言设计成能完全反映面向对象数据模型所固有的灵活性和约束。为了实现面向对象程序语言和数据库语言的无缝(Seamless)连接,就必须将这些子语言设计成与面向对象系统消息传递方式相一致。

⑶面向对象数据库的体系结构

    一般面向对象数据库管理系统由对象子系统和存储子系统两大部分组成。对象子系统由模式管理、事务管理、查询处理、版本管理、长数据管理以及外围工具等模块组成,而存储子系统由缓冲区管理和存储管理模块组成。

①对象子系统

a.模式管理:读模式源文件生成数据字典,对数据库进行初始化,建立数据库框架。

b.事务管理:对并行事务进行处理,实现锁管理和恢复管理机制。

c.查询处理:查询处理负责对象的创建、查询等请求,并处理由执行程序发送的消息。

d.版本管理:对对象的版本进行控制。

e.长数据管理:工程中有些对象如图形、图象、对象一般都较大.可达数面KB甚至达数MB。这么长的数据需要进行特殊的管理。

f.外围工具:面向对象数据模型语义丰富,使对象数据库的设计变得较复杂,这给用户的应用开发带来难度。要使ODBMS实用化,需要在数据库核心层外开发一些工具帮助用户进行数据库的应用。主要的工具有:模式设计工具,类图浏览工具,类图检查工具,可视的程序设计工具,系统调试工具等。

②存储子系统

a.缓冲区管理;对对象的内外存交换缓冲区进行管理,同时处理对象标识符与存储地址之间的变换,即处理所谓的指针搅和(Pointer swizzling)问题。

b.存储管理:对物理存储(磁盘)空间进行管理。为了改进系统的性能,将预计在一起用的对象聚簇(cluster)在一起,一般是将某一用户所指定的类等级(包括继承等级和聚合等级)的所有对象聚集成簇。面向对象的应用基本上是通过对象标识符来存对象。如果对象正好在内存,应用系统能够直接存取它们;如果对象不驻留在内存,它们必须从外存(磁盘)检索出来。随着应用的深入,数据库会变得愈来愈大。为了提高数据库的检索效率,可以采用杂凑(Hashing)算法或采用B树(或B+树)索引的方法,将对象的对象标识符快速地映射到它们的物理地址上。

⑷基于客户/服务器(Client/Server)网络的数据库结构

    一个数据库系统,不管它是否是面向对象的,都可以既运行在单一处理机上又可以运行在由多个处理机组成的网络上。而在网络上运行的数据库既可以由一个又可以由多个节点(处理机)来管理。整个数据库由网络的一个节点进行管理的基于网络的数据库系统被称之为客户/服务器数据库系统。一个专用的服务器管理着整个数据库,而应用系统运行的所有其他节点(称之为客户)同这个服务器进行通讯来存取数据库。一个基于网络的数据库系统,它由一个以上的节点进行管理,使得数据库的物理布局对用户是透明的,这种数据库系统被称之为分布式数据库系统。

    今天大多数面向对象的数据库系统都是客户/服务器系统。客户/服务器系统结构具有几个优点。其一是它为"无盘"客户机(工作站)的用户提供相当容易的管理它们数据的方法。它允许在对象缓冲区中快速地存取对象,而且如果需要时,可以使这些对象变成永久的。另一个优点是它比每个计算机能够管理共享永久数据库的一部分的全分布式对象管理系统更容易实现。正因为这样,大多数面向对象的数据库管理系统,如像Gemstone,IRIS,O2以及Object- store等都采用客户/服务器的结构。

    但是,客户/服务器结构也有几个明显的、严重的缺点。服务器会造成单点故障而且对永久数据库的存取要求网络通讯。客户/服务器之间的通讯多半是最严重的缺点,通常在网上的对象和控制信息必须在客户和服务器之间进行交换。客户机必须发送一些对象聚集于他们的对象缓冲区中,并且,发送重写的对象到服务器使其变成永久的。但是客户/服务器结构为应用提供满意的性能,即应用可以在对象缓冲区中聚集大量的对象并可重复地存取它们的一个较大的子集。
  
   
 


第二节  对象-关系数据库

     面向对象数据模型和面向对象数据库系统的研究在数据库研究领域是沿着几条路线展开的。其中很重要的一条是研制对象-关系数据库系统。

    对象-关系数据库系统兼有关系数据库和面向对象的数据库两方面的特征。即它除了具有原来关系数据库的种种特点外,还应该提供以下特点:

    允许用户扩充基本数据类型

    即允许用户根据应用需求自己定义数据类型、函数和操作符,而且一经定义,这些新的数据类型、函数和操作符将存放在数据库管理系统核心中,可供所有用户公用。

    能够在SQL中支持复杂对象

   即由多种基本类型或用户定义的类型构成的对象。

    能够支持子类对超类的各种特性的继承,支持数据继承和函数继承,支持多重继承,支持函数重载。
    能够提供功能强大的通用规则系统,而且规则系统与其他的对象-关系能力是集成为一体的。例如规则中的事件和动作可以是任意的SQL语句,可以使用用户自定义的函数,规则能够被继承等等。

   实现对象-关系数据库系统的方法主要有以下五类:

    ⑴从头开发对象-关系DBMS。这种方法费时费力,不是很现实。

    ⑵在现有的关系型DBMS基础上进行扩展。

    扩展方法有二种:

    对关系型DBMS核心进行扩充,逐渐增加对象特性。这是一种比较安全的方法,新系统的性能往往也比较好。
    不修改现有的关系型DBMS核心,而是在现有关系型DBMS外面加上一个包装层,由包装层提供对象-关系型应用编程接口,并负责将用户提交的对象-关系型查询映象成关系型查询,送给内层的关系型DBMS处理。这种方法系统效率会因包装层的存在受到影响。

    ⑶将现有的关系型DBMS与其他厂商的对象-关系型DBMS连接在一起,使现有的关系型DBMS直接而迅速地具有了对象-关系特征。

    连接方法主要有二种:

    关系型DBMS使用网关技术与其他厂商的对象-关系型DBMS连接。但网关这一中介手段会使系统效率打折扣。
    将对象-关系型引擎与关系型存储管理器结合起来。即以关系型DBMS作为系统的最底层,具有兼容的存储管理器的对象-关系型系统作为上层。

    ⑷将现有的面向对象型DBMS与其他厂商的对象-关系型DBMS连接在一起,使现有的面向对象型DBMS直接而迅速地具有了对象-关系特征。

    连接方法是:将面向对象型DBMS引擎与持久语言系统结合起来。即以面向对象的DBMS作为系统的最底层,具有兼容的持久语言系统的对象-关系型系统作为上层。

    ⑸扩充现有的面向对象的DBMS,使之成为对象-关系型DBMS。
分享到:
评论

相关推荐

    听课笔记.pdf

    * 面向对象DBMS(OODBMS) * 分布式DBMS(DDBMS) * 时间序DBMS(TSDBMS) * 图形DBMS(GDBMS) 三、数据库的结构 3.1 数据库的组成 数据库由以下几个部分组成: * 概念模式(Conceptual Schema) * 逻辑模式...

    Oracle面向对象编程的探索

    Oracle 面向对象编程探索 Oracle 面向对象编程技术实现,让开发者像使用 C#、C++、Java 一样理解 Oracle。Oracle 面向对象编程的探索这个题目完全可以按一本书来写,但本文只能简单地探讨 Oracle 面向对象技术的...

    5-第五章:面向对象的数据模型和对象关系数据模型.pdf

    本章内容主要围绕面向对象的数据模型和对象关系数据模型展开,详细讲解了对象数据库管理系统(OODBMS)的特点、优势与劣势,以及与传统数据库管理系统(DBMS)之间的区别。同时,也涉及了对象关系数据库系统(ORDBMS...

    面向对象系统分析与设计试题(试卷)与答案1.doc

    面向对象系统分析与设计是软件开发中的一种重要方法,它基于面向对象的编程思想,强调通过对象的抽象、封装、继承和多态等特性来构建软件系统。以下是对试卷中涉及的一些关键知识点的详细解释: 1. **面向对象设计...

    面向对象的关系数据库设计

    尽管两者有所区别,但面向对象设计的思想可以应用于任何DBMS,包括RDBMS。 数据库设计的重要性在于,它是整个应用系统开发过程中的关键步骤。通常,数据库设计分为属性主导型和实体主导型。属性主导型侧重于属性的...

    Cache面向对象开发教程.pdf

    总的来说,Caché面向对象开发教程为开发者提供了一个全面了解和掌握Caché数据库系统及其应用的宝贵资源,无论是在数据库服务器端开发、Web应用构建还是数据迁移方面,都能找到详实的指导。通过深入学习,开发者...

    面向对象分析与设计(UML.2.0版).part2.rar

    本书详细介绍了面向对象的分析与设计,全面探讨了探讨了面向对象要领、软件开发过程、UML和多层技术。按照典型开发项目的步骤,整合了需求、设计、规范和测试

    构建基于B/S面向对象的电子海图数据库

    ### 构建基于B/S面向对象的电子海图数据库 #### 概述 随着互联网技术的飞速发展,实现基于互联网的电子海图应用成为近年来的研究热点。卫星通信技术的进步为陆地与船舶间的通信提供了前所未有的机遇。因此,构建...

    面向对象系统分析与设计图书管理系统报告.pdf

    在标题“面向对象系统分析与设计图书管理系统报告.pdf”中,我们可以理解到该文档将重点放在如何将面向对象的方法应用于图书管理系统的设计和分析中。面向对象方法是一种在软件工程中广泛使用的设计范式,它围绕着...

    DBMS 用高级语言实现的

    C++作为面向对象的编程语言,具备良好的性能和丰富的库支持,使得开发者能够更高效地构建复杂的数据结构和算法,同时保持代码的可读性和维护性。 描述中的“DBMS 高级语言开发,很不错的。”重复三次,这可能是为了...

    用C++编写的DBMS

    C++是一种强大且灵活的面向对象编程语言,它允许开发人员创建高效、可扩展的代码,这使得C++成为构建DBMS的理想选择。在"用C++编写的DBMS"项目中,开发者可能利用了C++的特性,如类、模板、继承和多态性来设计数据库...

    UML、面向对象、系统设计 研究生试卷与答案

    本文将深入探讨UML(统一建模语言)、面向对象编程和系统设计这三大主题在研究生学习中的重要知识点。 1. 面向对象设计原则: - 高内聚、低耦合是设计优秀面向对象系统的基本特征。这意味着系统内的各个组件应具有...

    【精品】面向对象的数据库技术56.ppt

    向对象的数据库技术是数据库发展的一个重要阶段,它结合了面向对象编程的抽象、封装、继承和多态等概念,以更好地适应复杂数据结构和应用需求。以下是对该主题的详细解析: 首先,面向对象数据库系统(Object-...

    C++ 编写的小型DBMS

    C++作为一门强大的面向对象编程语言,以其高效性、灵活性和丰富的库支持,在开发数据库系统时具有显著优势。小型DBMS通常包括数据存储、查询解析、事务处理等核心模块,这些功能在C++环境下都能得到很好的实现。 1....

    哈工大软设二--DBMS原型开发系统(C++)

    它的特点是高效、灵活性高,能够提供良好的内存管理和面向对象特性,如封装、继承和多态性,这些对于实现DBMS中的对象模型至关重要。 2. **数据库设计**:在实现DBMS之前,需要进行数据库设计,包括概念模型设计...

    三维地理信息系统面向对象数据结构.pdf

    面向对象方法可以在软件开发和应用中描述空间实体的层次结构及复杂对象,每个对象都可以作为一组数据库管理系统(DBMS)表存在,其属性域中可以有一个或多个对象识别码。 三维建模方法中,八叉树结构(Octree)和...

    DBMS讲义

    随着技术的发展,数据库理论也在不断扩展,如知识库、演绎数据库、模糊数据库、面向对象数据库和多媒体数据库等,这些都反映了数据库技术在不同领域的应用和适应性。同时,DBMS的研发也致力于提高性能、增强实用性,...

    船舶CAD_CAE系统面向对象数据库的开发.pdf

    在本文中,作者王晓升详细介绍了如何利用面向对象数据库(O0DBMS)来开发一个适用于船舶CAD(计算机辅助设计)和CAE(计算机辅助工程分析)系统的数据管理系统。该系统基于对象关系数据库系统(ORDBMS)Oracle10g,...

    一个小型数据库 DBMS

    C++是一种通用的、面向对象的编程语言,以其效率和灵活性著称。在构建DBMS时,选择C++意味着开发者可以充分利用其底层控制能力,直接操作内存和硬件资源,这对于性能要求较高的数据库系统至关重要。 1. 数据结构:...

Global site tag (gtag.js) - Google Analytics