面向对象数据库系统的特征
1989年12月,在第一届演绎、面向对象数据库国际会议上,以Malcolm Atkinson , Francois Bancilhon , David Dewitt等人为代表的一批OODB专家发表了著名的“面向对象的数据库系统宣言”,提出了OODBS应该具备的主要性质和特征。这些特征分为三组:必备的(被称作面向对象的数据库系统所必须满足的特性)、可选的(为了使系统更完善可添加的而非必备的特性)和开放的(设计人员可以选择的特性)。
其中必备的特征包括:
1)复杂对象:对简单对象运用各种构造符即可得到复杂对象。
2)对象标识:在带对象标识的模型中,对象独立于它的值而存在,由此就有了两个对象等价的概念:两个对象可能相同(它们是同一个对象),也可能相等(它们有同样的值)。
3)封装性:封装性的概念来自两个方面,一是需要明确区分操作的说明和实现;二是模块化的需要。封装提供了一种逻辑数据独立性的形式,能够在不改变使用类型的程序的情况下改变类型的实现。让操作可见而将数据和操作的实现隐藏在对象中,就可以获得适当的封装。
4)类型和类:对应了两大类面向对象的系统:支持类概念的系统和支持类型概念的系统。类型和类具有相同的说明方式,类型的实例是静态说明的,而类的说明是动态产生的,它们都对应了抽象数据类型。
5)类和类型的层次结构:类和类型的层次结构可以导致类和类型的继承机制,在面向对象的系统中,至少存在有四种继承:替代继承、包含继承、限制继承和特化继承。
6)复载、过载和滞后联编:按照类型的不同重新定义每个类型的操作的实现叫做复载(Overriding),用同一个名字来表示不同的实现叫做过载(Overloading),它们都是由于多态性(Polymorphism)导致了同一方法名对应不同的对象而产生的调用不同的程序体的现象。为了实现这种功能,系统不能在编译时就把操作名联编到程序上,而要等到运行时才进行解释,这个推迟的转换叫做滞后联编(Late Binding)或动态联编(Dynamic Binding)。
7)计算完备性:就是能够用数据库系统的数据操纵语言(DML)表达任何可计算的功能。一般情况下,计算完备性可以通过与现有程序设计语言的合理连接来实现。
8)可扩充性:是指用户在数据库系统带有的一组预先定义类型的基础上所具有的可定义新类型的手段,并且系统定义的类型和用户定义的类型在使用上没有区别。
9)持久性:持久性是指程序员保证他的数据在进程的执行中存在的能力。
10)辅存管理:辅存管理是数据库管理系统的一个经典特征。它通常有一组方法支持,包括索引管理、数据聚集、数据缓冲、存取路径选择及查询优化。
11)并发性:并发性是指数据库中的对象可被多个用户共享而不影响其一致性和完整性,并发性保证了同时在数据库上工作的多个用户之间的和谐共存。
12)恢复:恢复是指在硬件和软件发生故障时,数据库具有的能够使它返回到数据的某种相关状态的能力。
13)即席查询功能:就是数据库提供的一种高级的(即简明地表示重要的查询)、有效的(即查询的形式应该是进行过查询优化的)和与应用无关的(即它是独立于用户的特殊应用的)查询功能。
可选的特性有:多重继承性、类型检查和类型推理、分布、设计事务处理和版本等五个方面。
开放的特性是程序设计范例、表示系统、类型系统和一致性。
面向对象数据库系统的其他定义
Rainer Unland在Francois Bancilho的基础上作了进一步的补充,他指出:“OODBS除了须满足以上所定义的准则外,还必须满足非传统应用领域所提出的一些需求/特征,例如版本管理和可扩充的事务模型等等。
Wan Kim对OODBS的定义与他们的定义基本类似,他认为“一个数据库系统可以称为面向对象数据库系统,必须满足以下两个条件:支持核心的面向对象数据模型;借助扩充/修改传统数据库的语义,使之与核心的面向对象数据模型的语义一致,以支持传统数据库系统中所有的数据库特征。”并指出:“面向对象数据库系统是一个面向对象数据库的永久、共享存贮器和管理程序;面向对象数据库是由面向对象数据模型定义的对象集合,该集合中的对象反映了面向对象程序设计所支持的对象语义。