面向对象数据库管理系统 (ODBMS) 的定义和概述2024 年 8 月 28 日 | 阅读 9 分钟 数据以对象的形式存储的数据库管理系统,这些对象是类的实例,称为面向对象数据库管理系统,或 ODBMS。面向对象数据模型由这些类和对象组成。 一种促进数据建模和生成为对象的数据库管理系统(DBMS)称为面向对象数据库管理系统(ODBMS),通常缩写为 ODBMS,表示对象数据库管理系统。它还包括子类及其对象的类属性和方法的继承,以及对对象类的某种支持。 尽管对象数据管理组(ODMG)于 2001 年发布了《对象数据标准 ODMG 3.0》,其中概述了对象模型以及定义和查询对象的标准,但对于 OODBMS 的确切定义,目前还没有普遍接受的说法。此后,该组织已解散。 如今,NoSQL(Not Only SQL)文档数据库系统是对象数据库的一个流行替代方案。NoSQL 文档数据库虽然缺少完整 ODBMS 的所有功能,但它们通常使用 JavaScript Object Notation(JSON)提供对半结构化数据的键值访问,将数据以文档形式存储。 面向对象数据模型的组成部分OODBMS 的三个主要构建块是对象结构、对象类和对象标识。下面将详细解释它们。 对象结构:对象的结构是指构成对象的组件。属性(attribute)是用于描述项目特定特征的术语。因此,具有特定特征的真实世界实体构成对象结构,被称为对象。此外,对象将数据代码包含在单个单元中,从而通过隐藏实现细节来屏蔽用户,实现数据抽象。
对象类:类的实例是对象,对象是真实世界的实体。为了创建在它们保存的数据方面有所不同但具有相同类定义的Other对象,必须首先定义一个类。对象中的消息和变量也与对象相关联。 正如我们在上面的示例中看到的,CLERK 类存储了对象变量和消息。 尽管数据库中可能存在具有相似方法、变量和消息的多个类,但 ODBMS 也广泛支持继承。因此,类层次结构的概念仍然用于说明不同类之间的共性。 面向对象数据模型还支持封装的概念,即数据或信息隐藏。除了 char、int 和 float 等内置数据类型之外,这种数据架构还提供了抽象数据类型(ADT)的功能。ADT 是用户定义的数据类型,除了它们包含的值之外,还可以携带方法。 因此,ODBMS 为客户提供了各种内置和用户定义的特性。它结合了面向对象数据模型的特性和数据库管理系统的特性,并且它支持类和对象等编程范式的概念,以及封装、继承和用户定义的 ADT(抽象数据类型)的概念。 ODBMS 的特性Malcolm Atkinson 及其同事在其重要著作《面向对象数据库宣言》中对 OODBMS 进行了如下定义: 面向对象数据库系统必须满足两个要求:它必须是一个数据库管理系统(DBMS),并且它必须是一个面向对象的系统,这意味着它必须在最大程度上兼容当前的一系列面向对象编程语言。 持久性、二级存储管理、并发性、恢复和即席查询能力是符合第一个要求的五个特征。 第二个要求转化为八个特征:可扩展性、计算完备性、覆盖与后期绑定、继承、类型或类、复杂对象、对象标识和封装。 RDBMS 与 ODBMS目前使用最广泛的 DBMS 类型是关系数据库管理系统(RDBMS)。大多数 IT 工作人员都对通过结构化查询语言(SQL)访问的行和列的关系抽象有深刻的理解。 然而,对象数据库系统在管理和存储复杂数据关系方面可能更有效。应用程序访问跨越 RDBMS 中多个表且具有多个关系的数据可能比在 ODBMS 中作为对象访问相同数据更具挑战性。 此外,许多程序员使用面向对象编程(OOP)语言来创建应用程序,包括 Java、C++、Python 等。在使用 RDBMS 存储和检索对象时,需要在复杂对象和来自不同关系数据库表的行之间进行转换。对象关系映射(ORM)工具可以简化此过程;尽管如此,映射开销仍然存在。 许多 RDBMS 公司现在在其产品线中提供对象关系数据库管理系统(ORDBMS)。事实上,向关系数据库添加一些面向对象概念并不能让用户访问 ODBMS 的所有特性。 常见问题解答使用对象数据库管理系统(ODBMS)有什么好处?使用这项技术有两个主要优点。这些优点突出了一个基本概念:在使用 ODBMS 时,您使用数据的方式也是存储数据的方式。开发是第一个优势所在。与编写 RDBMS 相比,使用 ODBMS 时需要编写的代码更少。很简单:使用 Java 或 C++ 时,您无需翻译成 SQL、ODBC 或 JDBC 等数据库子语言,这可以减少代码量。只需要用编程语言编写即可。结果就是代码量减少。这段代码的用量经常会减少高达 40%。 这意味着您在 Java 或 C++ 中能想到的任何数据结构都可以直接存储在 ODBMS 中,无需转换。这是一个重要的概念。非常复杂的数据结构可以直接存储在 ODBMS 中。 第二个好处是生产环境中的优势。如果您正在处理复杂数据,ODBMS 的性能可以比 RDBMS 快十到一千倍。这是因为从磁盘读取数据时,数据已经是 Java 或 C++ 所需的格式。无需转换。数据的复杂性决定了性能提升的范围。 何时应使用 ODBMS?当您的业务需要对复杂数据实现高性能时,请使用 ODBMS。但这具体意味着什么?简而言之,当您满足业务需求时,您就是在赚钱或省钱。在 ODBMS 的背景下,高性能是指性能比 RDBMS 提升十到一千倍的可能性。最后,如果您的数据类似于图,例如物料清单或具有多个交叉元素的模式,那么您可以确定它包含复杂信息。让我们以自动股票交易程序为例。 它会将算法应用于该数据和历史数据库,以评估是否应采取任何行动来响应实时流。决定如何处理实时馈送信息所需的时间取决于数据库搜索的速度。如果算法正确,股票交易程序将能够赚更多的钱或损失更少的钱。换句话说,这是业务需要对复杂数据实现高性能的一个例子。 ODBMS 在生产环境中使用的应用程序示例以下是一些 ODBMS 在实际应用程序中使用的情况:
对象关系映射产品与 ODBMS 相比如何?让我们首先考察它们的共性。大多数对象关系映射(OR mapping)解决方案和对象数据库管理系统(ODBMS)产品都允许您使用 Java 或 C++ 进行编程,而无需使用嵌入式 SQL、ODBC 或 JDBC 等数据库子语言。这部分开发成本是相当的。它们在使用和存储数据方面存在根本差异。为了使用 OR mapping 产品,必须将对象模型映射到关系模型,这需要额外的开发,并且有时会在生产中导致严重的性能影响。这是因为数据的使用和存储方式不同。将数据从存储格式转换为应用程序格式再转换回来,被称为“阻抗不匹配”。 在 Web 服务器中使用 ODBMS 有意义吗?是的,如今许多网站都在使用 ODBMS。考虑到 XML 使用量的预期增长,对网站考虑 ODBMS 将更具吸引力。这是因为 XML 本质上是一个对象模型。因此,在速度方面,ODBMS 在存储和检索对象数据方面是无与伦比的。另外,由于您无需将 XML 转换为另一种存储类型,因此您的开发成本会降低。这意味着 XML 加上 ODBMS 将为高性能网站创造优势。当您将这一点与打算使用 XML 进行此类交易的意图结合起来时,您就可以理解为什么有些人认为 XML 将取代 ODBMS 成为 B2B 交易的主要应用程序。 下一主题移动数据库中的数据管理问题 |
我们请求您订阅我们的新闻通讯以获取最新更新。