前面说几句费话。如今正在从事面向对象数据库在国内的推广工作,假设有兴趣能够与我联系。

假设有不论什么问题能够私信我,也能够到我们站点上
面向对象数据库交流社区 来向我提问,我一定以最快的速度解答。

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


面向对象数据库也被称为对象数据管理系统。对象数据库存储面向对象编程语言(如Smalltalk,C++,java等)中的对象而不只像关系数据库那样存储整数,字符串和实数等。

对象一般由下面几部分构成:



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

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



因此。对象包括可运行的代码和数据。当然对象也有其它特征,比如一个方法或者数据能否在对象以外获取到。可是为了我们的文章简单易懂并应用到面向对象数据库中,在本文中我们不考虑这些。另外一个须要要提及的东西是“类”。

类在面向对象编程中用来规定一个对象包括哪些方法和数据。类就像对象的模板一样。

类本身并不包括方法和数据,但规定了对象中要包括什么方法和数据。在对象创建过程中要用到类。在面向对象数据库中类用来创建对象中没有被存储在数据库中的部分(如对象的方法)。

与关系型数据库的对照



关系型数据库将数据存储在包括行和列的二维的表格中。因为关系型数据库表格被“格式化”了,所以数据不会有太多的反复。

全部的列都依赖于主键(列中的唯一值)来识别这一列。

能够用特定列的特定值来获取或者更改某一行的值。

为了把对象放到关系表中,必实用字符串、整数、实数等简单数据来描写叙述这个类。

比如要描写叙述飞机,飞机机翼会用一个独立的表格来描写叙述它的尺寸等特性,机身用另外一个表描写叙述。螺旋桨、轮胎等也用单独的表。诸如此类。

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



对象持久化



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

何时使用面向对象数据



假设程序操纵非常复杂的数据或者数据的相对关系比較复杂时使用面向对象的数据库,特别是多对多的对象关系。

假设数据非常少有链接或者有大量数据时最好不要使用面向对象数据库。



面向对象数据库适用于:



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

--多媒体程序

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

--商贸软件



面向对象数据库优势



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

--降低分页

--易于导航

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

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

--在分布式架构状态下能够非常好的工作。

--假设程序也是面向对象的能够降低代码量。



面向对象数据库的劣势



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

--关系表更简单易懂。

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

--关系数据库有很多其它的工具。

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

--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 刊载,欢迎评论。

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

  1. Python学习札记(三十) 面向对象编程 Object Oriented Program 1

    参考:OOP NOTE 1.面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. ...

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

    把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数 ...

  3. Python学习札记(四十) 面向对象编程 Object Oriented Program 11

    参考:使用元类 NOTE: type() 1.type()函数可以用于检查一个类或者变量的类型. #!/usr/bin/env python3 class Myclass(object): " ...

  4. Python学习札记(三十八) 面向对象编程 Object Oriented Program 9

    参考:多重继承 NOTE #!/usr/bin/env python3 class Animal(object): def __init__(self, name): self.name = name ...

  5. Python学习札记(三十七) 面向对象编程 Object Oriented Program 8 @property

    参考:@property NOTE 1.在绑定参数时,为了避免对属性不符合逻辑的操作,需要对传入的参数进行审核. #!/usr/bin/env python3 class MyClass(object ...

  6. Python学习札记(三十六) 面向对象编程 Object Oriented Program 7 __slots__

    参考:slots NOTE 1.动态语言灵活绑定属性及方法. #!/usr/bin/env python3 class MyClass(object): def __init__(self): pas ...

  7. Python学习札记(三十五) 面向对象编程 Object Oriented Program 6

    参考:实例属性和类属性 NOTE Python是动态语言,根据类创建的实例可以任意绑定属性. class Student(object): def __init__(self, name): self ...

  8. Python学习札记(三十四) 面向对象编程 Object Oriented Program 5

    参考:获取对象信息 NOTE 1.type()函数可以用来判断对象的类型: >>> type(123) <class 'int'> >>> type(' ...

  9. Python学习札记(三十三) 面向对象编程 Object Oriented Program 4

    参考:继承和多态 NOTE 著名的开闭原则: 对扩展开放:允许新增Animal子类: 对修改封闭:不需要修改依赖Animal类型的Animal_func()等函数. 1.eg. #!/usr/bin/ ...

随机推荐

  1. 一次TIME_WAIT和CLOSE_WAIT故障和解决办法

    昨天解决了一个curl调用错误导致的服务器异常,具体过程如下: 里头的分析过程有提到,通过查看服务器网络状态检测到服务器有大量的CLOSE_WAIT的状态. 在服务器的日常维护过程中,会经常用到下面的 ...

  2. 解决Javascript中$(window).resize()多次执行

    有些时候,我们需要在浏览器窗口发生变化的时候,动态的执行一些操作,比如做自适应页面时的适配.这个时候,我们需要在窗口拖动的时候去执行代码.但是有些时候,执行的操作比较复杂,我们只希望在窗口拖动完毕之后 ...

  3. mockito简单教程

    注:本文来源:sdyy321的<mockito简单教程> 官网: http://mockito.org API文档:http://docs.mockito.googlecode.com/h ...

  4. MySQL索引底层实现原理

    优秀博文: MySQL索引背后的数据结构及算法原理 B树.B-树.B+树.B*树[转],mysql索引 MySQL 和 B 树的那些事 索引的本质 MySQL官方对索引的定义为:索引(Index)是帮 ...

  5. Fiddler抓包7-post请求(json)

    前言上一篇讲过get请求的参数都在url里,post的请求相对于get请求多了个body部分,本篇就详细讲解下body部分参数的几种形式. 一.body数据类型 常见的post提交数据类型有四种: 1 ...

  6. la 4394

    题解: 区间dp 令f[i][j]表示搞好i-j的最小值 首先如果不用涂色 那么可以从f[i][k] f[k+1][j]转移 如果要涂色,那么就从f[i][k][a](表示i-k全为a)+f[k+1] ...

  7. springboot2.0+dubbo整合分布式服务发布和调用

    最近项目上要对以前的老项目做分布式的整改,因此我专门花了点时间研究下当前比较热门的dubbo和springboot结合使用,以前使用过dubbo,但是没有与springboot结合过,在网上查了点资料 ...

  8. Environment error: “CodeBloks can't find compiler executable in your configured search path's for GNU GCC compiler”

    codeblock安装后,提示cant find compiler executable in your configured search paths for GNU GCC Compiler 可能 ...

  9. 《Gradle权威指南》--Gradle插件

    No1: 应用插件 apply plugin:'java' apply plugin:org.gradle.api.plugins.JavaPlugin apply plugin:JavaPlugin ...

  10. Android超链接

    第一种: text += "<a href='http://www.baidu.com'>百度超链接</a>"; CharSequence charSequ ...