面向对象数据库(Object Oriented Databases)

前面说几句费话。现在正在从事面向对象数据库在国内的推广工作,如果有兴趣可以与我联系。如果有任何问题可以私信我,也可以到我们网站上
面向对象数据库交流社区 来向我提问,我一定以最快的速度解答。

想把 面向对象数据库交流社区 打造成为国内最大的面向对象数据交流的社区,希望有兴趣的与我共同经营这个社区,下面的译文。

面向对象数据库也被称为对象数据管理系统。对象数据库存储面向对象编程语言(如Smalltalk,C++,java等)中的对象而不仅仅像关系数据库那样存储整数,字符串和实数等。对象一般由以下几部分构成:

--属性:属性量化对象的特征,这些量有可能是简单的整数,字符串或者实数,也有可能是一个复杂的对象。

--方法:方法也通常被称为过程或者函数,方法规定了对象的行为。

因此,对象包含可执行的代码和数据。当然对象也有其他特征,例如一个方法或者数据是否能在对象以外获取到,但是为了我们的文章简单易懂并应用到面向对象数据库中,在本文中我们不考虑这些。另外一个需要要提及的东西是“类”。类在面向对象编程中用来规定一个对象包含哪些方法和数据。类就像对象的模板一样。类本身并不包含方法和数据,但规定了对象中要包含什么方法和数据。在对象创建过程中要用到类。在面向对象数据库中类用来创建对象中没有被存储在数据库中的部分(如对象的方法)。

与关系型数据库的对比

关系型数据库将数据存储在包含行和列的二维的表格中。由于关系型数据库表格被“格式化”了,所以数据不会有太多的重复。所有的列都依赖于主键(列中的唯一值)来识别这一列。可以用特定列的特定值来获取或者更改某一行的值。

为了把对象放到关系表中,必有用字符串、整数、实数等简单数据来描述这个类。例如要描述飞机,飞机机翼会用一个独立的表格来描述它的尺寸等特性,机身用另外一个表描述,螺旋桨、轮胎等也用单独的表,诸如此类。

把复杂的信息分解成简单的信息要耗费劳动力,这里必需要编码代码完成。

对象持久化

在传统的数据库中,在程序中被操作的数据是临时的,存储在数据库中的数据是持久化的(存储在永久的存储设备上)。在面向对象数据库中,程序可以操作临时数据和持久化后的数据。

何时使用面向对象数据

如果程序操纵非常复杂的数据或者数据的相对关系比较复杂时使用面向对象的数据库,特别是多对多的对象关系。如果数据很少有链接或者有大量数据时最好不要使用面向对象数据库。

面向对象数据库适用于:

--计算机辅助造型程序(计算机辅助软件工程、计算机辅助设计、计算机辅助制造)

--多媒体程序

--随时间变化的项目工程类软件

--商贸软件

面向对象数据库优势

--对象不需要装箱和拆箱操作,节省编程和执行时间。

--减少分页

--易于导航

--更好的并发控制 - 对象的层次结构可能被锁定。

--数据模型基于现实世界。

--在分布式架构状态下可以很好的工作。

--如果程序也是面向对象的可以减少代码量。

面向对象数据库的劣势

--如果数据及数据间的关系相对简单则面向对象数据库效率较低。

--关系表更简单易懂。

--后期绑定可能拖慢访问速度。

--关系数据库有更多的工具。

--关系数据库的标准更加稳定。

--RDBMS的服务和支持更加稳定,不需要更改。

ODBMS标准

--对象数据管理组(Object Data Management Group)

--对象数据库标准ODM6.2.0(Object Database Standard ODM6.2.0)

--对象查询语言(Object Query Language)

--对象查询语言支持SQL92(OQL support of SQL92)

数据如何存储

不同的数据库提供商使用两个基本的方法来存储数据。

--每一个对象包含唯一的ID,并定义为一个基本类的子类,用继承的方法来确定牲。

--用虚拟内存映射来存储及管理对象。

数据传输是以对象为基础或者页面(通常为4K)为基础。

----文章原文:http://www.comptechdoc.org/ind
... .html
。如果翻译有误,请指正。此文章也在 http://ood.tson.com/article/9 刊载,欢迎评论。

时间: 2024-10-31 15:45:06

面向对象数据库(Object Oriented Databases)的相关文章

面向对象编程Object Oriented Programming(OOP)

把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度. 一:封装(类内的事) 假设我们要处理学生的成绩表,为了表示一个学生的成绩,面向过程的

面向对象编程(Object Oriented Programming,OOP)

类是一个通用的概念,Java.C++.C#.PHP等很多编程语言中都有类,都可以通过类创建对象.可以将类看做是结构体的升级版,C语言的晚辈们看到了C语言的不足,尝试加以改善,继承了结构体的思想,并进行了升级,让程序员在开发或扩展大中型项目时更加容易. 因为Java.C++等语言都支持类和对象,所以使用这些语言编写程序也被称为面向对象编程,这些语言也被称为面向对象的编程语言.C语言因为不支持类和对象的概念,被称为面向过程的编程语言. 实际上,面向对象只是面向过程的升级. 在C语言中,可以将完成某个

面向对象编程OOP Object oriented programing

oop是面向对象编程(设计) 面向对象程序设计(英语:Object Oriented Programming,缩写:OOP),指一种程序设计范型,同时也是一种程序开发的方法论.它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性.灵活性和扩展性.基本理论 一项由 Deborah J. Armstrong 进行的长达40年之久的计算机著作调查显示出了一系列面向对象程序设计的基本理论.它们是: 类 类(Class)定义了一件事物的抽象特点.通常来说,类定义了事物的属性和它可以做到的(

>>>>面向对象(Object Oriented)

面向对象编程的思想 ==数据封装.继承和多态是面向对象的三大特点== 面向对象编程--Object OrientedProgramming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递. 在Python中,所有数据类型都可以视为对象,当然也可以自定义对象.自定义的对象数据类型就是面向

Java Object Oriented Programming concepts

Introduction This tutorial will help you to understand about Java OOP'S concepts with examples. Let's discuss about what are the features of Object Oriented Programming. Writing object-oriented programs involves creating classes, creating objects fro

db4o官方停止支持及面向对象数据库的一些感想

前一段时间试用了db4o,真心觉得不错,但自己在国内搜索了一下,并没有找到任何一个专门的论坛和面向对象的数据库产品,深感这东西在国内并没有太普及.但自己试用觉得这个东东真心不错(当然也有自己的优势和劣势),所以自己建立了这个网站来推广(面向对象数据库交流社区). 但今天在打开db4o的官方网站时发现Versant已经不再对db4o进行支持.这点让我非常的痛心... 无论从哪方面来讲,这绝对是一个令人非常痛心的决定,个人一直认为db4o是最优秀的面向对象的数据库,官方有自己的收费的面向对象的数据库

Object Oriented Programming python

new concepts of the object oriented programming : class encapsulation inheritance polymorphism the three features of an object are : identity, state and behaviora class is an abstraction which regroup objects who have the same attributes and the same

纯面向对象数据库为什么这么少

纯面向对象数据库的需求这么大,为什么没几个人做,反而一堆人去搞KeyValue这类简单型数据库,因为OOP的设计是通过点点点(...)不断地在数据间跳来跳去,对于CPU来说跳转是很简单的,可以直接把地址写在机器码上,但硬盘工作是不能跳来跳去的,它是一个盘.所以复合型数据库,结合面向对象,再结合传统的列表式结构,再引入动态列,会是一个优化方案. #Java C# 数据库 iBoxDB#

面向对象(Object类-equals()))

import com.sun.xml.internal.ws.server.ServerRtException; /** * Object 是所有对象的直接或者间接父类. * 该类中定义的肯定是所有对象都具备的功能 * Created by rabbit on 2014-07-29.博客园.刘朋程 * */ class Demo111 { }    * Created by rabbit on 2014-07-29.博客园.刘朋程 public class ObjectDemo {     pu