面向对象数据库管理系统 (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)是用于描述项目特定特征的术语。因此,具有特定特征的真实世界实体构成对象结构,被称为对象。此外,对象将数据代码包含在单个单元中,从而通过隐藏实现细节来屏蔽用户,实现数据抽象。

  1. 消息 - 消息充当实体与外部世界之间的通信通道或接口。有两种类型的消息:
  2. 只读消息:如果调用方法不更改变量的值,则调用消息称为只读消息。
  3. 更新消息:如果调用方法修改了变量的值,则调用消息称为更新消息。
  4. 方法:方法是一段代码,在接收到消息时执行。每次使用方法时,都会返回一个值作为输出。有两种类型的方法:
  5. 只读方法:当方法不对变量的值产生任何影响时,该方法称为只读方法。
  6. 更新方法:更新方法是某种程度上修改变量值的方法。
  7. 变量用于存储对象的.数据。变量的数据允许区分不同的对象。

对象类:类的实例是对象,对象是真实世界的实体。为了创建在它们保存的数据方面有所不同但具有相同类定义的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 在实际应用程序中使用的情况:

  • 英国航空公司的 Origin and Destination (O&D) 收益管理系统使用了 Versant 对象数据库。O&D 收益管理系统由英国航空公司用于增加其全球航线网络和联盟的收入。
  • biomatrix 使用 FastObjects 来存储和检索血液检测的复杂数据。biomatrix 是一家专业从事体外诊断的公司,其业务是设计、开发、生产和营销用于医疗和工业应用的诊断系统。
  • 西门子公司的 CONDIS 系统使用 GemStone Smalltalk 技术作为对象缓存和骨干,该系统实时维护网络和系统基础设施。西门子公司作为增值经销商销售 GemStone Smalltalk 对象缓存。
  • 西门子公司的 CONDIS 系统使用 GemStone Smalltalk 技术作为对象缓存和骨干,该系统实时维护网络和系统基础设施。西门子公司作为增值经销商销售 GemStone Smalltalk 对象缓存。自 CONDIS 于 1999 年首次投入生产以来,西门子已为包括瑞士铁路、伦敦市、阿根廷电信和奥地利能源输送网络运营商在内的客户完成了至少十五个项目。
  • Seagate Technology 新的 Mirra Sync and Share 个人服务器的增强效率和可扩展性得到了 db4o 对象数据库的极大帮助。Mirra Sync and Share 个人服务器是一款数据访问和管理工具,适用于小型企业、家庭办公室和联网家庭,可自动备份和保护其数字数据,通过互联网进行远程访问(带完整加密),在多台计算机之间同步文件,并共享数字内容。
  • Sprint PCS 使用的高通 CDMA(码分多址)技术使用了 Objectivity/DB ODBMS。
  • ObjectStore ODBMS 是 Starwood Hotels and Resorts Worldwide, Inc. 在线预订平台的重要组成部分。Object Store 动态访问现有的公司数据库,然后将数据作为功能对象存储在内存中以供即时使用。
  • 波士顿的 Partners HealthCare 使用 Inter systems Cache 和 Ensemble 产品,已开发并部署了近 800 个临床和管理应用程序,包括一个纵向医疗记录,该记录提供了从 Partners HealthCare 网络各系统收集的每位患者临床和人口统计数据的单一视图。一个基于 Cache 的无线电子药物管理记录系统,集成了六个主要的企业应用程序和其他系统,使用 Web 服务,提供了一个闭环的药物管理流程,消除了不良药物事件并提高了临床医生的生产力;以及一个医生处方录入系统,该系统在首次实施时使不良药物反应减少了 17%。

对象关系映射产品与 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 交易的主要应用程序。