对象数据库

维基百科,自由的百科全书
跳转到: 导航, 搜索
跳过字词转换说明


对象数据库是一种以对象形式表示信息的数据库。对象数据库的数据库管理系统被称为 ODBMSOODBMS

两个主要原因让用户使用对象数据库技术。首先,关系数据库在管理复杂数据时显得笨重。其次,被应用软件操作的数据一般是用面向对象的编程语言如 C++, Java, DelphiC# 写成,而那些用来转化数据表示和关系数据库元组的代码很冗繁,执行时也有不少耗时。 这种应用程序和数据库表示信息的模式之间的不匹配有时也被称为 impedance mismatch

目录

[编辑] 历史

对象数据库管理系统,发端于 1970 年代早中期为支持对图结构对象的原生数据库管理而开展的研究。“面向对象数据库系统”这一术语第一次出现于1985年。著名的研究项目包括 Encore-Ob/Server (布朗大学), EXODUS(Wisconsin 大学), IRIS (惠普), ODE(Bell 实验室), ORION (MCC), Vodak (GMD-IPSI) 和 Zeitgeist (Texas Instruments)。其中以 ORION 项目发表的论文数为最多。MCC 的 Won Kim 将这些论文中最有价值的一部分汇编成书并由 MIT 出版社出版。

对象数据库管理系统为面向对象编程语言增加了持久的概念。 早期的商品数据库集成了多种语言: GemStone (Smalltalk)、Gbase (Lisp) 和 Vbase (COP)。 COP 即“ C Object Processor”(C 对象处理器),是一种基于 C 的专有语言,比 C++ 早。 1990 年代大部分时间里,C++ 统治着商用对象数据库管理系统市场。 厂商在 1990 年代晚期加入了 Java 并于最近加入了 C#。

[编辑] 对象数据库的采纳

基于持久编程的对象数据库在一些应用领域获得了认可,如工程和空间数据库,通信和科学领域如高能物理和分子生物。他们对主流的商业数据处理没有什么影响,尽管获得了一些应用在部分特殊领域如金融服务。值得指出的是:对象数据库保持着「世界上最大的数据库(超过1000Terabytes在斯坦福线性加速中心)和最高摄取率(一 Terabyte每小时)」的记录。

2004 年以来,当出现了易用和普遍可支付的开放源代码对象数据库时, 对象数据库进入了第二次增长期。这些开放源代码的对象数据库完全用OOP语言如Java,C++, 或 C#写出。 ObjectDB 是对象关系数据库的一个例子。

[编辑] 技术特性

在纯物件式資料庫中,資料以物件的形式存储,这些对象只能由其所属的类中定义的方法来操作。 对象被组成一种类型层次(有时是格式 lattic),子类继承其超类的特性。 对象中可以有到其他对象的引用,于是应用程序可以以一种导航式的编程风格访问数据。

多数物件式資料庫也提供了一些查询语言,允许用声明式编程访问对象。在对象查询语言以及查询和导航接口的集成领域,产品间出现了很大的区别。ODMG 用对象查询语言 OQL 作了标准化的尝试。

访问数据可以更快,表的联合常常是不必要的(在关系数据库的表实现方式下)。这是因为无需查询只需通过指针(Pointer)就可以直接获得对象。

产品间的另一点不同是数据库定义模式的方式。 然而一般的特征是编程语言和数据库模式使用相同类型的定义。

多媒体应用程序将变得容易因为与数据相关的类方法保证了数据的正确解释。

许多对象数据库提供对版本的支持。 一个对象可以看作是他所有版本的集合。 同时,对象版本也可以被看作是对象自身的属性。 一些对象数据库也提供了对触发器和约束的语义支持, 这些特性是活跃数据库(active database) 的基础。

[编辑] 优势和劣势

对 ODBMS 和关系 DBMS 的基准测试显示 ODBMS 在某些任务上优势明显。 主要原因是许多操作使用导航式而不是声明式接口, 并且对数据的导航式访问通常可以有指针高效的实现。

对基于导航数据库技术,如ODBMS的批评指出, 基于指针的技术为一些特殊的搜索路径或视点(viewpoint)作了优化。而且,对一般目的的查询,基于指针的技术比关系型要慢并难于形式化。导航式显得适合于特定应用而失了普遍,未来的使用。

ODBMS 的其他技术,显得缺失了与SQL世界中大量工具或特性的互操作性,包括但不限于产业标准互联性,报告工具, OLAP 工具以及备份和恢复标准。 另外,不像关系数据库,对象数据库缺少形式化的数学基础,而这反过来导致他们在查询支持上的弱势。 不过,这一缺陷被部分弥补,因为一些 ODBMS 除了 导航式访问外也提供了对 SQL 的完全支持,如 Objectivity/SQL++。

事实上,在概念封装,即隐藏数据,使他只能通过公布的一些接口访问 和关系数据库技术假定:数据只能由基于数据内容的查询,而不是预定义的查询路径的形式访问之间,存在着本质的张力。

数据库中心论,倾向于用声明和属性驱动的观点看世界, 而面向对象倾向于从行为的观点看世界。这就是 围绕着OOP和数据库的许多 impedance mismatch 问题之一。

尽管很多评论认为对象数据库是失败的,但主要的辩护者仍很活跃,更紧密地整合数据库的功能和对象编程语言的尝试在研究和产业社区里仍在继续。

[编辑] 外部链接

[编辑] 参见


数据库管理系统(DBMS)查看  討論  編輯  歷史 )

概念
数据库 · 数据库模型 · 数据库存储结构 · 关系 (数据库) · 关系模型 · 分布式数据库 · ACID ( 原子性 · 一致性 · 隔離性 · 持久性 ) · Null值
关系数据库 · 关系代数 · 关系演算 · 元组关系演算 · 域关系演算 · 数据库规范化 · 參照完整性 · 关系数据库管理系统 
主键 · 外键 · 代理键 · 超键 · 候选键 

数据库组件
触发器 · 视图 · 数据库表 · 指标 (数据库) · 事务日志 · 数据库事务 · 数据库索引 
存储程序 · 資料庫分割

SQL
分类: 数据查询语言DQL · 数据定义语言DDL · 数据操纵语言DML · 数据控制语言DCL
指令:SELECT · INSERT · UPDATE · MERGE · DELETE · JOIN · UNION · CREATE · DROP · Begin work · COMMIT · ROLLBACK · TRUNCATE · ALTER
安全: SQL資料隱碼攻擊 · 參數化查詢

数据库管理系统的实施

实施类型
关系数据库 · 檔案型資料庫 · Deductive · 維度化資料庫 · 階層式 · 圖形資料庫 · 对象数据库 · 物件關聯式資料庫 · Temporal · XML資料庫

数据库产品
对象型 (对比) · 关系型 (对比)

数据库成分
查詢語言 · 查詢最佳化器 · 查詢計畫 · 嵌入式SQL · ODBC · JDBC · OLE DB

个人工具
名字空间
操作
导航
帮助
工具
其他语言