Oracle AI Database 简介

本章概述了 Oracle AI Database。

本章包含以下主题:

关于信息系统

每个组织都有为满足自身需求而必须存储和管理的信息。例如,公司必须收集和维护其员工的人力资源记录。这些信息必须提供给那些需要它的人。

信息系统是用于存储和处理信息的正式系统。数据库是被视为一个单元的有序组织的信息集合。数据库的用途是收集、存储和检索相关信息,供数据库应用程序使用。

最初创建数据库系统时,它们是为特定工作负载而设计的。多年来,很明显,单用途数据库不再满足所有要求:除了关系型工作负载之外,开发人员还需要以其他格式存储数据,例如 XML、空间、图形、JSON,以及最近用于 AI 时代的向量数据。

Oracle AI Database 从关系数据库引擎开发到融合引擎,让开发人员能够以应用原生所需的格式存储几乎任何类型的数据,并将其完全集成到企业级架构中。

数据库管理系统 (DBMS)

数据库管理系统 (Database Management System,DBMS) 是控制数据存储、组织和检索的软件。

通常,DBMS 具有以下元素:

数据库应用程序是与数据库交互以访问和处理数据的软件程序。Oracle AI Database 是首批支持关系模型的数据库引擎之一。自成立以来,它已发展成为融合数据库引擎,支持几乎任何数据类型和许多不同的工作负载。

关系模型

在 1970 年开创性的论文“大型共享数据银行的数据关系模型”中,E.F.Codd 定义了一个基于数学集合理论的关系模型。今天,被广泛接受的数据库模型是关系模型。

关系数据库是符合关系模型的数据库。关系模型具有以下主要方面:

关系数据库将数据存储在一组简单关系中。关系是一组元组。元组是一组无序的属性值。

表是以行(元组)和列(属性)的形式表示关系的二维表示形式。表中的每一行都有一组相同的列。关系数据库是将数据存储在关系(表)中的数据库。例如,关系数据库可以将有关公司雇员的信息存储在雇员表、部门表和薪金表中。

相关主题

关系数据库管理系统 (RDBMS)

关系模型是关系数据库管理系统 (RDBMS) 的基础。RDBMS 会将数据移动到数据库中、存储数据并检索数据,以便应用程序可以操纵它。

RDBMS 可区分以下类型的操作:

Oracle AI Database 是 RDBMS 的核心。RDBMS 被称为对象关系数据库管理系统 (Object Relational Database Management system,ORDBMS),它实施面向对象的功能,例如,用户定义的类型、继承和多态性。Oracle AI Database 将关系模型扩展到对象关系模型,从而可以将复杂的业务模型存储在关系数据库中。随着时间的推移,Oracle 的核心数据引擎已经发展成为一种功能更强大的模型,现在称为融合数据库。

融合数据库架构

Oracle AI Database 是一个融合数据库,可在单个数据库引擎中支持多个数据模型和工作负载。除了关系数据,它还可以管理 JSON 文档、图形数据、空间数据、文本、向量和其他专用数据类型。

这些功能共享通用数据库服务,包括事务、安全性、备份和恢复、高可用性、审计和查询优化。因此,应用程序可以使用不同的数据模型,而无需为每个模型使用单独的数据库。

例如,应用可以将客户和事务处理数据存储在关系表中,将灵活的属性存储在 JSON 文档中,将地理信息存储在空间数据中,将向量嵌入存储在语义搜索中。SQL 可用于在单个操作中查询和组合这些形式的数据。文档样式的 API 适用于喜欢此 NoSQL 样式的开发人员。

融合数据库具有以下优势:

Convergence 不要求每个 workloads 使用每个功能或驻留在一个物理数据库中。应用程序只能使用它们所需的功能。Oracle 灵活的架构允许开发人员将应用分布在多个可插入数据库上。

Oracle Database 的核心仍然是关系数据库。它的融合架构扩展了这一基础,使应用可以处理多个数据模型,同时使用一组通用数据库服务来满足几乎所有工作负载的需求。

方案对象

RDBMS 的一个特性是物理数据存储与逻辑数据结构的独立性。

在 Oracle AI Database 中,数据库 schema 是逻辑数据结构或方案对象的集合。数据库用户拥有与用户名同名的数据库方案。

方案对象是用户创建的结构,直接引用数据库中的数据。数据库支持多种类型的方案对象,其中最重要的对象是表和索引。喜欢使用文档式 API 访问数据的用户可以创建 (JSON) 集合或 JSON 关系二元性视图。

方案对象是数据库对象的一种类型。某些数据库对象(如概要文件和角色)不驻留在方案中。

相关主题

表

表中描述了雇员等实体。

可以使用表名(例如 employees)和一组列来定义表。通常,在创建表时会为每个列指定一个名称、一个数据类型和一个宽度。

表是一组行。列标识表所描述的实体的属性,而行标识实体的实例。例如,“雇员”实体的属性与雇员标识和姓氏的列相对应。行用于标识特定员工。

您可以根据需要为列指定称为完整性约束条件的规则。一个示例是 NOT NULL 完整性约束条件。此约束条件强制该列在每行中包含一个值。可以将跨多个表的约束条件定义为 SQL 断言。在 Oracle AI Database 26ai 之前,您可以使用数据库触发器在事务处理中强制执行业务逻辑。

相关主题

索引

索引是可选的数据结构,您可以在表的一个或多个列上创建该结构。索引可以提高数据检索的性能。

处理请求时,数据库可以使用可用的索引高效地查找请求的行。当应用程序经常查询特定的行或行范围时,索引非常有用。

索引在逻辑上和物理上都独立于数据。因此,可以删除并创建对表或其他索引没有任何影响的索引。删除索引后,所有应用程序都将继续运行。

相关主题

数据访问

DBMS 的一般要求是遵守公认的数据访问语言行业标准。注:JavaScript 需要在 Linux x86-64 或 Linux aarch64 上运行的 Oracle 26ai。

结构化查询语言 (SQL)

SQL 是一种基于集的声明语言,用于提供 RDBMS(例如 Oracle AI Database)的接口。

过程语言(如 C)描述了如何应该完成的事情。SQL 是非过程性的,用于描述应执行的操作。

SQL 是 ANSI 指定的关系数据库标准语言。对 Oracle 数据库中的数据的所有操作均使用 SQL 语句执行。例如,可以使用 SQL 创建表,查询和修改表中的数据。

SQL 语句可以被认为是一个非常简单但功能强大的计算机程序或指令。用户指定他们想要的结果(例如,雇员的姓名),而不是如何推导结果。SQL 语句是 SQL 文本的字符串,如下所示:

SELECT first_name, last_name FROM employees;

使用 SQL 语句可以执行以下任务:

SQL 以一种一致的语言统一上述任务。Oracle SQL 是 ANSI 标准的实施。Oracle SQL 支持许多超越标准 SQL 的功能。

相关主题

PL/SQL、Java 和 JavaScript

PL/SQL 是 Oracle SQL 的过程性扩展。Java 和 JavaScript 是可用于将业务逻辑存储在数据库中的其他选项。

PL/SQL 与 Oracle AI Database 集成,使您能够使用所有 Oracle AI Database SQL 语句、函数和数据类型。可以使用 PL/SQL 来控制 SQL 程序流、使用变量以及编写错误处理过程。

PL/SQL 的一个主要优点是能够将应用程序逻辑存储在数据库本身中。PL/SQL 过程或函数是一个方案对象,它由一组 SQL 语句和其他 PL/SQL 结构组成,这些结构分组在一起,存储在数据库中,并作为一个单元运行以解决特定问题或执行一组相关任务。服务器端编程的主要优点是可以在任何地方部署内置功能。

Oracle AI Database 还可以存储使用 Java 和 JavaScript 编写的程序单元。Java 存储过程是发布到 SQL 并存储在数据库中以供一般使用的 Java 方法。可以从 Java 和 JavaScript 调用现有 PL/SQL 程序,也可以从 PL/SQL 调用 Java 和 JavaScript 程序。

Multilingual Engine (MLE) 支持您在 JavaScript 中编写业务逻辑,并将代码作为 MLE 模块存储在数据库中。MLE 模块导出的函数可以通过调用规范向 SQL 和 PL/SQL 公开。这些调用规范是 PL/SQL 单元(函数、过程和程序包),可以在调用 PL/SQL 的任何位置进行调用。

相关主题

NoSQL 用于文档访问的 API

Simple Oracle Document Access (SODA) 是一组 NoSQL 样式的 API,用于管理 Oracle AI Database 中的文档集合,特别是 JSON 文档。应用程序可以创建集合,并插入、检索、更新、删除和查询文档,而无需了解 SQL 或基础数据库方案。

SODA 提供了基于集合、文档和按示例查询筛选器的以文档为中心的编程模型。这与 SQL 截然相反,后者为查询和修改关系数据提供了一个面向集的声明式界面,并且可以跨多种数据类型表达联接、聚合和操作。

当应用主要使用 JSON 文档并且需要简单的文档 API 时,SODA 非常有用,对于想要使用 NoSQL API 的开发人员来说,SODA 可以作为替代方案。

将文档工作负载从第三方单一用途数据存储移植到 Oracle AI 数据库的开发人员可以选择使用 Mongo DB API for Oracle AI Database,该 API 与 SODA 类似,但旨在简化迁移。在最简单的情况下,将应用程序的连接字符串从单一用途的数据存储更改为 Oracle AI Database 是需要做的事情。

事务处理管理

Oracle AI Database 设计为多用户数据库。数据库必须确保多个用户可以同时工作,而不会损坏彼此的数据。

事务处理

transaction 是包含一个或多个 SQL 语句的逻辑原子工作单元。

RDBMS 必须能够对 SQL 语句进行分组,以便它们要么全部提交,这意味着它们将应用于数据库,要么全部回退,这意味着它们将被撤消。

事务处理的需要说明是从储蓄账户到支票账户的资金转移。传输包括以下单独的操作:

  1. 减少储蓄账户。

  2. 增加支票账户。

  3. 将事务处理记录在事务处理日记账中。

Oracle AI Database 可保证这三个操作作为一个单元成功或失败。例如,如果硬件故障导致事务处理中的语句无法执行,则必须回退其他语句。

事务处理是将 Oracle AI Database 与文件系统分开的一项功能。如果您执行更新多个文件的原子操作,并且系统在中途失败,则文件将不一致。相反,事务会将 Oracle 数据库从一个一致状态移动到另一个一致状态。事务处理的基本原则是“全部或全部”:原子操作作为一个整体成功或失败。

相关主题

数据并发处理

多用户 RDBMS 的要求是控制数据并发,这是多个用户同时访问相同数据。

如果没有并发控制,用户可能会错误地更改数据,从而影响数据完整性。例如,一个用户可以更新行,而另一个用户可以同时更新行。

如果多个用户访问相同的数据,则管理并发的一种方法是让用户等待。但是,DBMS 的目标是缩短等待时间,以便它不存在或可以忽略。修改数据的所有 SQL 语句必须尽可能少地进行干扰。必须避免破坏性交互,这些交互是错误地更新数据或更改底层数据结构的交互。

Oracle AI Database 使用锁控制对数据的并发访问。锁是一种机制,可防止访问共享资源的事务之间的破坏性交互。锁定有助于确保数据完整性,同时允许对数据进行最大程度的并发访问。

相关主题

数据一致性

在 Oracle AI Database 中,每个用户必须看到一致的数据视图,包括用户自己的事务处理和其他用户的已提交事务处理所做的可见更改。

例如,数据库必须防止出现脏读问题,当一个事务处理看到另一个并发事务处理所做的未提交更改时,就会出现此问题。

Oracle AI Database 始终实施语句级读一致性,确保单个查询返回的数据在单个时间点内提交且一致。根据事务处理隔离级别,此时间点是打开语句的时间或开始事务处理的时间。使用 Oracle Flashback Query 功能可以显式指定此时间点。

数据库还可以为事务处理中的所有查询提供读一致性,称为事务处理级读一致性。在这种情况下,事务处理中的每个语句都会看到来自同一时间点的数据,即事务处理开始的时间。

相关主题

Oracle AI Database 体系结构

数据库服务器是信息管理的关键。

通常,服务器在多用户环境中可靠地管理大量数据,以便大多数用户可以同时访问同一数据。数据库服务器还可以防止未经授权的访问,并为故障恢复提供有效的解决方案。

数据库和实例

Oracle 数据库服务器由数据库和至少一个数据库实例组成,通常简称为实例。

由于实例和数据库之间的连接非常紧密,因此术语 Oracle 数据库有时会同时指实例和数据库。在最严格的意义上,这些术语具有以下含义:

多租户体系结构

多租户体系结构使 Oracle AI Database 成为 CDB。

每个 Oracle AI Database 必须包含或能够包含其他数据库。例如,CDB 包含 PDB,应用程序容器包含应用程序 PDB。PDB 由 CDB 或应用程序容器包含,应用程序容器由 CDB 包含。

从 Oracle Database 21c 开始,仅支持多租户容器数据库。在以前的发行版中,Oracle 支持非容器数据库(非 CDB)。

容器数据库

CDB 包含一个或多个用户创建的 PDB 和应用程序容器。

在物理级别,CDB 是一组文件:控制文件、联机重做日志文件和数据文件。数据库实例管理构成 CDB 的文件。

下图显示了 CDB 和关联的数据库实例。

图 1:数据库实例和 CDB

插图 cncpt233.png 的说明

可插入数据库

PDB 是方案、方案对象和非方案对象的可移植集合,这些对象作为单独的数据库显示在应用程序中。

在物理级别,每个 PDB 都有自己的一组数据文件,用于存储 PDB 的数据。CDB 包括其中包含的 PDB 的所有数据文件,以及存储 CDB 本身元数据的一组系统数据文件。

要移动或归档 PDB,可以断开它。断开的 PDB 由 PDB 数据文件和元数据文件组成。断开的 PDB 在插入到 CDB 之前不可用。

下图显示了名为 MYCDB 的 CDB。

图 2:CDB 中的 PDB

插图 cncpt352.png 的说明

物理上,MYCDB 是 Oracle AI Database,即与实例关联的一组数据文件。虽然 Oracle Real Application Clusters 中可能存在多个实例,但 MYCDB 具有一个数据库实例和一个数据库文件集。

MYCDB 包含两个 PDB:hrpdb 和 salespdb。如图 1-2 中所示,这些 PDB 作为单独的独立数据库出现在各自的应用程序中。应用程序不知道是连接到 CDB 还是 PDB。

要管理 CDB 本身或其中的任何 PDB,可以连接到 CDB 根。根是所有 PDB 和应用程序容器所属的方案、方案对象和非方案对象的集合。

应用容器

应用程序容器是 CDB 中用户创建的可选容器,用于存储一个或多个应用程序的数据和元数据。

在此上下文中,应用程序(也称为主应用程序定义)是应用程序根中存储的公用数据和元数据的命名版本化集。例如,应用程序可能包括对一组 PDB 公用的表、视图、用户帐户和 PL/SQL 程序包的定义。

在某些方面,应用程序容器在 CDB 内充当特定于应用程序的 CDB。应用程序容器(如 CDB 本身)可以包括多个应用程序 PDB,并允许这些 PDB 共享元数据和数据。在物理级别,应用程序容器具有自己的一组数据文件,就像 PDB 一样。

例如,一个 SaaS 部署可以使用多个应用程序 PDB,每个 PDB 分别用于共享应用程序元数据和数据的单独客户。例如,在下图中,sales_app 是应用程序根中的应用程序模型。名为 cust1_pdb 的应用程序 PDB 仅包含客户 1 的销售数据,而名为 cust2_pdb 的应用程序 PDB 仅包含客户 2 的销售数据。插入、断开、克隆和其他 PDB 级别操作可用于各个客户 PDB。

图 3:SaaS 用例

插图 cncpt389.png 的说明

全球分布式数据库架构

Oracle Globally Distributed Database(以前称为 Oracle Sharding)是一种基于跨多个 PDB 的数据水平分区的数据库缩放技术。应用程序将 PDB 池视为单个逻辑数据库。每个分区称为一个 shard 。

分片对应用的主要好处包括线性可扩展性、故障控制和地理数据分布。Globally Distributed Database 非常适合在 Oracle Cloud 中部署。与实施分片的 NoSQL 数据存储不同,Globally Distributed Database 在不牺牲企业 RDBMS 功能的情况下提供分片的优势。

在分片体系结构中,每个 CDB 托管在专用服务器上,并具有自己的本地资源:CPU、内存、闪存或磁盘。可以将 PDB 指定为分片。来自不同 CDB 的 PDB 分片组成一个逻辑数据库,称为分片数据库。同一 CDB 中的两个分片不能是同一分片数据库的成员。但是,在同一 CDB 中,一个 PDB 可以位于一个分片数据库中,另一个 PDB 可以位于单独的分片数据库中。

水平分区涉及拆分数据库表并分配给分片,以使每个分片中都包含该表,并且这些表的列相同,但包含的行不同。以这种方式拆分的表也称为分片表。下图显示了跨三个分片水平分区的分片表,每个分片是单独 CDB 中的 PDB。

图 4:跨分片的表的水平分区

插图 admin_3v_134a.png 的说明

一个用例是在多个 CDB 中分配客户账户数据。例如,ID 为 28459361 的客户可以查找其记录。下图显示了可能的体系结构。客户请求通过连接池进行路由,在该连接池中,分片主管(网络监听程序)将请求定向到包含所有客户行的相应 PDB 分片。

图 5:Oracle Globally Distributed Database 架构

插图 admin_3v_143d.png 的说明

相关主题

数据库存储结构

可以从物理角度和逻辑角度思考数据库。

物理数据是指可以在操作系统级别查看的数据。例如,Linux ls 和 ps 等操作系统实用程序可以列出数据库文件和进程。逻辑数据(例如,表)仅对数据库有意义。SQL 语句可以列出 Oracle DB 中的表,但操作系统实用程序则不能。

数据库具有物理结构和逻辑结构。由于物理和逻辑结构彼此分开,所以可以管理数据的物理存储,而不会影响对逻辑存储结构的访问。例如,重命名物理数据库文件不会重命名其数据存储在此文件中的表。

物理存储结构

物理数据库结构是存储数据的文件。

执行 CREATE DATABASE 命令时,将创建 CDB。将创建以下文件:

在 CDB 中执行 CREATE PLUGGABLE DATABASE 命令时,将创建 PDB。PDB 在 CDB 中包含一组专用数据文件。PDB 没有单独的专用控制文件和联机重做日志:这些文件由 PDB 共享。

许多其他文件对于 CDB 的运行很重要。这些文件包括参数文件和网络文件。备份文件和归档重做日志文件是脱机文件,对备份和恢复非常重要。

相关主题

另请参见:“物理存储结构”

逻辑存储结构

借助逻辑存储结构,Oracle AI Database 可以对磁盘空间使用情况进行细粒度控制。

本主题讨论逻辑存储结构:

相关主题

数据库实例结构

Oracle 数据库使用内存结构和进程来管理和访问 CDB。所有内存结构均存在于构成 RDBMS 的计算机的主内存中。

应用程序连接到 CDB 或 PDB 时,将连接到数据库实例。实例通过除 SGA 之外还分配其他内存区域以及启动其他进程以及后台进程来为应用程序提供服务。

Oracle AI Database 流程

进程是操作系统中可以运行一系列步骤的机制。某些操作系统使用术语 job 、 task 或 thread 。

就本主题而言,线程等效于进程。Oracle 数据库实例具有以下类型的进程:

Oracle 进程包括服务器进程和后端进程。在大多数环境中,Oracle 进程和客户机进程在单独的计算机上运行。

相关主题

实例内存结构

Oracle AI Database 为程序代码、用户之间共享的数据以及每个连接用户的专用数据区创建和使用内存结构。

以下内存结构与数据库实例关联:

相关主题

应用和网络架构

为了充分利用给定计算机系统或网络,Oracle AI Database 允许在数据库服务器和客户机程序之间拆分处理。运行 RDBMS 的计算机负责处理数据库服务器职责,而运行应用程序的计算机负责处理数据的解释和显示。

应用程序架构

应用程序体系结构是数据库应用程序连接到 Oracle 数据库的计算环境。最常见的两种数据库体系结构是客户机/服务器和多层。

客户端-服务器体系结构

在 client/server architecture(客户机/服务器体系结构)中,客户机应用程序启动对要在数据库服务器上执行的操作的请求。服务器运行 Oracle AI Database 软件并处理并发共享数据访问所需的功能。服务器接收并处理源自客户机的请求。

多层架构

在多层体系结构中,一个或多个应用服务器执行部分操作。应用服务器包含应用程序逻辑的很大一部分,提供对客户机的数据的访问权限,并执行一些查询处理。这样,数据库上的负载就会减少。应用服务器可以用作客户机与多个数据库之间的接口,并提供额外的安全级别。

面向服务的体系结构 (SOA) 是将应用程序功能封装在服务中的多层体系结构。SOA 服务通常作为 Web 服务实现。Web 服务可通过 HTTP 访问,并且基于基于 XML 的标准,例如 Web 服务描述语言 (Web Services Description Language,WSDL) 和 SOAP。在传统的多层或 SOA 环境中,Oracle AI Database 可以充当 Web 服务提供商。

微服务架构将应用划分为小型、独立开发和部署的服务。每个服务都拥有其业务逻辑和理想的数据,减少耦合,并允许团队独立扩展、更新和操作服务。

Oracle 多租户体系结构自然映射到按服务数据库模式。每个微服务可以使用自己的可插入数据库 (pluggable database,PDB),提供单独的数据、安全性和管理边界,同时多个 PDB 共享公用容器数据库 (container database,CDB) 的资源。

此方法将服务隔离与高效整合相结合。可以独立预配、克隆、修补、备份、重新定位和扩展 PDB,而管理员可以集中控制底层数据库基础设施。

相关主题

Oracle Net Services 体系结构

Oracle Net Services 是数据库与网络通信协议之间的接口,有助于分布式处理和分布式数据库。

通信协议定义了在网络上传输和接收数据的方式。Oracle Net Services 支持所有主要网络协议(包括 TCP/IP、HTTP、FTP 和 WebDAV)上的通信。Oracle Net 是 Oracle Net Services 的一个组件,用于建立和维护从客户机应用程序到数据库服务器的网络会话。建立网络会话后,Oracle Net 将充当客户机应用程序和数据库服务器的数据传递工具,并在它们之间交换消息。Oracle Net 可以执行这些任务,因为它位于网络中的每个计算机上。

Net Services 的一个重要组成部分是 Oracle Net Listener (称为监听程序),这是一个在数据库或网络中的其他位置运行的进程。客户机应用程序向监听程序发送连接请求,该监听程序管理这些请求的流量。建立连接后,客户机和数据库将直接通信。

Oracle REST Data Services

Oracle REST Data Services (ORDS) 提供了到 Oracle AI Database 的 HTTPS 网关。它使应用程序能够将表、视图、以 PL/SQL、JavaScript 和 Java 编写的存储过程以及定制数据库操作作为安全的 REST API 公开,通常不需要单独的应用服务器或广泛的中间件代码。

ORDS 还支持 Oracle Database API for MongoDB,允许应用使用兼容的 MongoDB 驱动程序、工具和命令来访问存储在 Oracle Database 中的 JSON 文档集合。MongoDB 线协议通过 ORDS 转换为数据库操作,使 REST、MongoDB 和 SQL 应用程序能够处理由同一融合数据库管理的数据。

相关主题