数据库驱动程序异步编程和管道
Oracle Database 23c 中的管道功能使 .NET、Java 和 C/C++ 应用无需等待服务器响应即可向数据库发送多个请求。Oracle Database 将对这些请求进行排队并逐个处理,以便客户端应用可以继续工作,直到收到请求完成通知。这些增强功能可改善最终用户体验、提高数据驱动的应用的响应能力,提供端到端可扩展性,避免性能瓶颈,并提高服务器和客户端的资源利用效率。
对于需要立即返回的客户端请求,Oracle Database 管道要求 .NET、Java 和 C/C++ 驱动程序中具备异步或响应式 API。这些机制可用于 Oracle Database,无论是否使用数据库管道。
对于 Java,Oracle Database 23c 在 Java Database Connectivity (JDBC)、Universal Connection Pool (UCP) 和 Oracle R2DBC Driver 中提供响应式扩展。它还支持驱动程序 (Project Loom) 中的 Java 虚拟线程以及 Reactive Streams 库,例如 Reactor、RxJava、Akka Streams、Vert.x 等。
区块链和不可变表(自 Oracle Database 19c 起可用)可使用加密安全方法保护数据,防止数据被外部黑客和内部恶意/泄露账户篡改或删除。它能够通过仅插入限制来防止非授权更新或删除(即使是 DBA 操作),利用加密哈希链实施身份验证,基于签名表摘要检测任何大规模回滚,支持最终用户使用私钥对插入的行进行签名。时至今日,Oracle Database 23c 带来了丰富的增强功能,包括逻辑复制(基于 Oracle GoldenGate)和滚动升级(基于 Oracle Active Data Guard)支持;分布式事务(涉及区块链表)支持;高效、基于分区的批量删除(适用于过期的行);以及插入/提交性能优化。
Oracle Database 23c 还支持添加/删除列(不影响加密哈希链、用户特定链和关于筛选行的表摘要)、委托签名功能和数据库反签名;还使用 Oracle Flashback 和区块链历史表审计非区块链表历史变更,将加密安全数据管理扩展到了常规表。
这些功能尤其适合内置审计迹或日志使用场景,能够有效满足财务分类账、付款历史、监管合规性跟踪、法律日志和所有表示资产的数据的保护需求,防止非授权篡改和删除操作导致重大法律、商誉或财务损失。
Oracle Database 现支持符合 ISO SQL 标准的布尔数据类型,您可以在表中存储 True(真)和 False(假)值,在 SQL 语句中使用布尔表达式。布尔数据类型能够以标准化方式存储 Yes 和 No 值,且可以轻松迁移至 Oracle Database。
Oracle Database 现支持您在 UPDATE 和 DELETE 语句中使用 FROM 子句将目标表连接到其它表。这些其它表可以限定可更改哪些行或为哪些行赋予新值。利用这一直接连接特性,您可以更轻松地编写 SQL 语句来更改和删除数据。
Oracle Database 23c 新推出了一个新角色 DB_DEVELOPER_ROLE,它能够为应用开发人员提供在 Oracle Database 上设计、实施、调试和部署应用所需的所有权限,无需管理员再主观猜测应用开发需要哪些权限。
DBMS_SEARCH 执行 Oracle Text 普适搜索。使用 DBMS_SEARCH,您可以轻松在多个表和视图上创建单一索引。您只需创建 DBMS_SEARCH 索引并添加表和视图即可。所有可搜索值(包括 VARCHAR、CLOB、JSON 和数字列)都将包含在索引中,并在表或视图内容发生更改时自动进行维护。
我们在 Memoptimized Rowstore Fast Ingest 中引入增强功能,支持分区、压缩表、使用直接写入快速刷新以及直接内存中列存储填充。这些增强功能使 Fast Ingest 功能适用于更多需要快速摄取数据的情况。现在,Oracle Database 可以更好地支持需要快速数据摄取功能的应用。数据摄取后,您可以在同一数据库中处理所有数据。这将减少对特殊加载环境的需求,从而降低复杂性和数据冗余。
现在您可以在 GROUP BY、GROUP BY CUBE、GROUP BY ROLLUP 和 GROUP BY GROUPING SETS 子句中使用列别名或指定 SELECT 项位置。此外,HAVING 子句也支持列别名。这些新的 Database 23c 增强功能可帮助您更轻松地编写 GROUP BY 和 HAVING 子句,从而提高 SQL 查询的可读性和可维护性,并提高 SQL 代码的可移植性。
Oracle Database 中的 DDL 对象创建、修改和删除现已支持 IF EXISTS 和 IF NOT EXISTS 语法修饰符。由此,您可以控制当一个给定对象存在或不存在时是否报错,在脚本中按应用简化错误处理。
多语言引擎 (MLE) 模块调用功能支持开发人员在 SQL 和 PL/SQL 中调用模块中存储的 JavaScript 函数。基于 PL/SQL 编写的调用规范能够将 JavaScript 链接到 PL/SQL 代码单元。这意味着开发人员可以在任何调用了 PL/SQL 函数的位置使用 JavaScript 函数。
Oracle Database 支持使用 JSON 来存储和处理弹性模式的数据。在新版本的 Oracle Database 23c 中,Oracle Database 现已支持使用 JSON Schema 来验证 JSON 数据的结构和值。SQL 运算符 IS JSON 经过增强,可以接受 JSON Schema,并且添加了各种 PL/SQL 函数来验证 JSON 并将数据库对象(如表、视图和类型)描述为 JSON Schema 文档。
默认情况下,JSON 数据是无模式的,这带来了极大的灵活性。但是,如果您需要确保 JSON 数据具有特定的结构和类型,可以通过行业标准的 JSON Schema 验证来完成。
为 JSON Schema 开发做出贡献
Oracle 积极推动 JSON Schema 开发,这是一款开发工具,它将基于 JSON 的声明式语言实现标准化,支持您批注和验证 JSON 文档。JSON Schema 目前正处于请求注解 (RFC) 阶段。
Oracle Database 23c 提供更精细的 Oracle Database 与 Apache Kafka 应用兼容性,支持轻松将 Kafka Java 应用迁移至 Transactional Event Queues (TxEventQ)。这意味着 Kafka Java API 现在可以连接 Oracle Database 服务器,使用 TxEventQ 作为消息传递平台。
开发人员可以使用 JDBC 瘦驱动程序,轻松将现有的使用 Kafka 的 Java 应用迁移至 Oracle Database。同时,利用 Oracle Database 23c 的客户端库功能,Kafka 应用可以连接 Oracle Database(而非 Kafka 集群),并透明地使用 TxEventQ 作为消息传递平台。