Oracle 宣布在 Oracle Database 23ai 中提供 JSON 关系对偶性

2024年 5月 6日 28.3k 0

JSON 关系对偶性是 Oracle Database 23ai 中的一项新功能,它统一了关系模型和文档模型的优点。

为什么这是一个如此重要的功能?这是因为,到目前为止,开发人员必须使用关系模型或 JSON 文档模型来存储和访问应用程序数据。因此,他们必须做出一个选择,既要考虑到所选择模型的优点,也要考虑到其缺点:

  • 由于规范化的强大功能,关系数据模型是理想的存储格式,可以消除数据重复并提供一致性和效率。然而,关系模型并不像构建应用程序的访问格式那么理想,因为应用程序按照分层对象处理数据。为了解决这个问题,开发人员使用复杂且低效的 ORM(对象关系映射)将应用程序对象映射到关系数据。

  • 文档模型(例如 JSON)是理想的访问格式,因为它是分层且独立的,可以轻松映射到应用程序对象。然而,JSON 文档作为一种存储格式很差,因为不同的文档可能会重复相同的数据,从而导致数据重复、更新多个副本,从而导致潜在的不一致——这正是关系模型通过规范化解决的问题。

JSON 关系二元性是一项突破性创新,它克服了开发人员在选择关系模型或文档模型来构建应用程序时所面临的历史挑战。开发人员现在可以在相同的底层数据上获得文档模型的灵活性和数据访问简单性以及关系模型的效率、一致性和用例灵活性。

介绍

JSON 关系对偶性通过提供一个利用关系模型和文档模型优势的统一解决方案来弥补这一差距。它将访问和存储格式解耦,允许数据以关系形式存储,但以 JSON 形式访问。 23ai 中的新功能 JSON Relational Duality 允许数据保留在规范化的关系表中,但可以作为 JSON 文档进行访问。这种访问和存储的二元性消除了应用程序开发时在关系模型和文档模型之间进行选择的需要。

Oracle 宣布在 Oracle Database 23ai 中提供 JSON 关系对偶性-1
图 . JSON Relational Duality 提供了统一的解决方案

JSON 关系对偶视图(或简称为“对偶视图”)可以使用直观的类似 GraphQL 的语法来定义。下面显示的 Duality View 的目标是生成与每个订单相对应的 JSON 文档。该视图指定 JSON 文档的预期形状、从中获取数据的表以及从中获取文档各个字段的列:

Oracle 宣布在 Oracle Database 23ai 中提供 JSON 关系对偶性-2
图 . 定义 JSON 关系对偶视图的示例

对偶视图可以使用带有标准 JSON 扩展的 SQL 来定义,但 GraphQL 提供了更简单、更直观的速记语法。例如,GraphQL 自动添加基于主键/外键关系的关联条件,例如基于客户 ID (cid) 和订单 ID (oid) 列的关联条件,这是生成视图的 JSON 文档所必需的。

对偶视图可以是只读的,也可以是完全或部分可更新的,具体取决于您如何定义它。开发人员可以使用他们喜欢的访问方法、驱动程序和框架,以他们习惯的方式修改 Duality Views 生成的 JSON 文档。开发人员可以使用标准 SQL 操作相同的关系数据,或使用标准文档 API(例如 REST、简单 Oracle 文档访问 (SODA) 和 MongoDB API)操作文档,也可以使用 SQL/JSON。

JSON 关系二元视图本质上是数据的完全可更新和事务性 JSON 视图。当更新或删除对偶视图中的文档时,视图底层的相关关系(表)数据会自动更新。应用程序可以简单地读取文档,进行任何必要的更改,然后将文档写回,而无需担心底层数据结构、映射、一致性或性能调整。使用对偶视图,可以根据应用程序中的不同用例在相同的底层关系数据上定义多个层次结构。

使用 JSON 关系对偶性的好处

关系型和 JSON 的两全其美

使用 JSON 关系对偶视图,数据以关系格式存储,具有数据规范化的全部优势,但数据可以作为 JSON 文档进行访问,使应用程序可以轻松访问数据库。 JSON 关系二元性将关系世界和文档世界的优势统一到单个数据库中的相同数据上。开发人员不再需要做出选择 - 他们可以获得关系数据库的数据一致性和多用例灵活性、JSON 的灵活性,甚至是与 MongoDB 兼容的文档存储 API。

Oracle 宣布在 Oracle Database 23ai 中提供 JSON 关系对偶性-3
图 . JSON 关系二元性统一了两个世界的优点

相对于对象关系映射 (ORM) 的架构优势

对于开发人员来说,关系模型通常需要使用 ORM 层在面向对象程序和关系数据库之间建立一座桥梁。这个额外的层给开发人员带来了应用程序对象和表之间的自定义映射的负担——增加了额外的复杂性、效率低下以及数据库多次往返的性能损失。

  • ORM 通常会发出多个 SQL 语句来读取和写入应用程序对象,从而降低性能。对偶视图可以在单个数据库往返中读取和写入,效率要高得多。
  • ORM 是特定于编程语言的,一种 ORM 实现不能被多语言应用程序使用,例如,一些微服务用 Java 编码,一些微服务用 Python 编码。

对偶视图消除了对 ORM 框架的需求。它们驻留在数据库中,这使它们比 ORM 具有显着的优势。当使用对偶视图时,只需一次往返即可读取和写入文档。将应用程序对象映射到关系表变得更加简单和高效。由于对偶视图位于数据库的中央,并且可由多个应用程序使用,因此它还消除了应用程序之间的数据不一致。

相对于文档数据库的架构优势

文档数据库对于开发人员来说似乎更容易上手,因为给定的文档可以包含特定应用程序用例所需的所有数据。然而,它们逐渐变得难以一致管理,因为不同的文档,即使在同一集合中,也经常重复相同的数据。

通过将数据规范化到多个表中,JSON 关系对偶性增强了数据完整性,并在存储数据时消除了数据重复。无论是通过 SQL API 还是文档 API 更新,底层数据始终在事务上保持一致。应用程序之间的这种一致性对于复杂的企业应用程序至关重要。

超灵活的数据访问:

根据使用案例,您可以使用 SQL、REST 或文档 API(与 MongoDB 兼容)访问或更新数据

JSON 关系二元性提供了针对文档和关系发出 SQL 的能力,以及针对文档和关系使用文档 API 的能力。根据用例,自由使用标准 SQL、带有 JSON 扩展的 SQL 或文档 API。

一旦在底层关系表上创建了对偶视图,就可以通过各种文档 API 将其作为 JSON 文档透明地访问:REST、与 MongoDB 兼容的 API、Oracle 简单对象数据 API (SODA) 以及 ANSI SQL JSON 的扩展(例如 JSON_VALUE())。

此外,由于存储的数据只有一份副本,因此可以继续使用传统 SQL 直接访问底层表,而不会丢失任何一致性。对于批量操作、分析和报告,使用直接 SQL 通常比 JSON 更有用。

超简单的应用程序演进,支持架构灵活的文档

对偶视图使应用程序的发展变得非常容易,因为它们添加新的用例而无需创建新的数据副本。随着应用程序添加越来越多的用例,每个新用例都可以使用新的对偶视图针对相同的基础数据进行处理,而无需任何数据重复。对偶视图是针对一组公共基础表的逻辑视图。即使使用不同的视图访问相同的数据,也不存在物理数据重复,因此不会出现数据不一致。

轻松构建 REST 应用程序和缓存

传统的数据库锁定不能很好地与 REST 应用程序配合使用,因为 REST 是无状态协议,并且无法跨 REST 调用保持事务锁。同样,应用程序层数据库缓存和移动应用程序无法持有锁来保护缓存数据的有效性。 Duality Views 利用无锁或乐观并发控制机制,允许完全一致的数据库读取和写入,而无需跨访问锁定。

使用对偶视图集中应用程序的安全规则

对偶视图还可以在数据库中集中、验证和审核许多安全规则的执行,而不是强迫开发人员在每个应用程序中执行它们。

数据访问和操作的细粒度定制

对偶视图允许对共享相同数据的应用程序模块进行简单且细粒度的字段级数据访问和修改规则定制。对偶视图支持可更新性注释,可用于限制每个视图的操作。

将您的应用程序从文档数据库迁移到 Oracle 数据库

现在您已经了解了 JSON Relational Duality 的所有优势,您可以轻松地将应用程序从文档数据库迁移到 Oracle,或者使用 Oracle 上的 JSON Relational Duality 构建新应用程序。

JSON-to-Duality Migrator 是一款智能迁移助手,将在您将应用程序从文档数据库迁移到 Oracle 的过程中提供帮助。这项新功能会根据您的 JSON 集合自动推荐并创建规范化的关系架构和一组对偶视图。它自动识别应创建的规范化关系表,以及主键、唯一键和外键约束、索引和默认值。此外,该功能还将数据从 JSON 集合导入到生成的对偶视图中。

使用 JSON-to-Duality Migrator,您可以通过几个简单的步骤快速将应用程序从文档数据库迁移到对偶视图,并利用 JSON 关系对偶性和 Oracle 融合数据库的所有优势。

总结:开始使用 23ai 来了解 JSON 关系对偶性

JSON 关系二元性通过提供统一的解决方案来弥合文档关系不匹配的问题,该解决方案汇集了关系模型和文档模型的优势。这样就无需在应用程序开发的关系模型和文档模型之间进行选择。开发人员现在可以获得 JSON 文档模型的灵活性和数据访问优势,以及关系模型的存储效率和强大功能。 JSON 关系二元性将极大地简化应用程序开发并提高开发人员的工作效率。使用 Oracle Database 23ai 和 23ai 免费版开始使用 JSON 关系二元性。

相关文章

pt-kill工具的使用
pt-ioprofile工具包的使用
数据库管理-第216期 Oracle的高可用-01(20240703)
DBMS_REPAIR EXAMPLE SCRIPT WITH PARTITION
数据库事务的四大特性: ACID 
使用BBED修复损坏的SYSTEM文件头

发布评论