Oracle Database 23c 新特性预览
Editor's Note
The following article is from 甲骨文云技术 Author 阮蓉
在2022年10月18号的Oracle Cloud World大会上,Oracle 宣布了令人期待的Oracle Database 23c Beta 版。这是世界领先的融合数据库的最新版本,支持所有数据类型、任意工作负载和多种开发风格。Oracle 提出了最新的数据库愿景:让开发和运行任何规模的任何应用和分析都非常容易,对于开发者、数据分析师而言都进一步简化了工作模式。最有亮点的能力就是划时代的提出了JSON Relational Duality 能力,第一次在数据库领域将关系型和对象型两种架构的优势合二为一,即避免了关系型从开发人员角度看需要理解的复杂星型模型,也避免了从文档对象型模式固有的冗余存储、数据更新的高代价和困难的并发控制能力,这个从Oracle数据库代码的底层改造酝酿数年的能力终于正式面世。
Oracle Database 23c,代号为“App Simple”,专注于简化应用程序开发。它提供跨越任何数据执行交易和查询,以及在任何数据组合上运行任何工作负载的独特能力,其特有架构可支持容器、事件、REST、低代码、SaaS等。Oracle数据库服务和产品组合中的许多其他创新扩展了 Oracle 在任务关键型工作负载上的性能、安全性和可用性方面的领先地位。
Oracle Database 23c 提供了300+个新特性和增强功能,可为使用 JSON、图形或微服务编写的应用程序实现突破性的开发人员生产力,同时还增强了 SQL 以使其更易于使用,并将 JavaScript 添加为存储过程语言。
现代应用程序使用数据技术的深度和广度可能会导致开发和运行应用程序变得越来越复杂。Oracle Database 23c “App Simple” 引入了改变游戏规则的新技术,使开发和运行这些现代应用程序变得更加容易。
下面我们来看看23c 的部分新特性列表:
这只是部分新列表,正式版的发布可能有变化,下面我们拓展一下看看部分新特性:
JSON 关系二元性(JSON Relational Duality)
对于JSON我想大家都不陌生,Oracle DB 在12c 开始支持JSON, 在DB 21c使用新的高性能二进制JSON数据类型,增加诸多特性, 在 23c 中JSON 的支持进一步加强 - JSON Relational Duality。这项突破性创新用于解决应用程序表示数据的方式与关系数据库存储数据的方式之间的不匹配问题。JSON Relational Duality 允许数据同时使用应用程序友好的 JSON 文档和数据库友好的关系表,从而简化了应用程序开发。在Oracle Database 23c中,JSON Relational Duality兼具关系模型与JSON文档模型的优势,结束了两者之间的长期争论。它将数据以高效的规范化格式存储在关系表中,但应用程序以 JSON 文档的形式访问,从而在架构上兼得JSON的用例简单性和关系模型的多用例功能,将JSON和关系模型的优势融合在一个数据库中,而无需进行任何权衡。
相信JSON Relational Duality不仅仅是 Oracle 的一个创新特性,这项技术将改变开发人员的使用方式,也将被业内许多其他产品采用。
可操作属性图
Oracle将图形数据功能引入23c关系数据模型,Oracle以前支持将图形作为单独的数据模型,与JSON类似。它现在与Oracle数据库的图形集成更为深入,使用23c,用户以在现有表(关系或 JSON)上构建图形数据,无需创建单独的图形表示;允许在交易事务系统中使用实时图形分析,提供以前在图形数据库中没有的并发级别,还提供 Oracle 数据库的所有性能、高可用性和安全特性。随着新交易的处理,Operational Property Graphs 可以实时识别金融交易中的欺诈行为,识别客户社区以获取零售建议。Oracle还添加了对SQL属性图查询语言的支持,该语言可帮助开发人员更方便的创建图形应用程序。
Oracle Database 23c是第一个添加对 SQL/PGQ 标准支持的商业数据库。
微服务支持
除了 Oracle 对微服务的全面支持之外,新功能分布式微服务事务(称为 sagas)的自动化处理,这使得构建跨多个微服务事务的应用程序变得异常简单,更重要的是,如果其中任何一个或全部未能提交,安全可靠地回滚事务。此外,还改进了事务事件队列的性能,这是支持数据库中微服务应用程序的关键。
多种数据类型和 SQL 增强
听取用户的反馈后,23c 添加了用户一直在请求的新 SQL 数据类型和功能。比如增加了布尔数据类型;在SQL 方面添加了不带FROM子句的SELECT 查询;基于别名的GROUP BY;表关连的直接更新;Unicode-14 支持等诸多新特性。
SQL 域(SQL Domains)
域的概念对于曾经使用 Oracle Designer 进行 ERD 和数据库设计的任何人来说都非常熟悉。域是特定类型数据元素的通用定义,例如名称、邮政编码、国家代码。这个通用定义可以有几个属性——例如格式(检查约束)、默认值、默认显示格式和按基于域的值排序时要使用的表达式。
在 23c 中,域可以定义为数据库对象(如下所示),并且在定义列时,可以将其链接到域定义,形成一个潜在元数据组。但不仅如此:针对域定义的检查约束由列继承。通过新函数 DOMAIN_DISPLAY 和 DOMAIN_ORDER 可以在查询语句中使用显示格式和 order by 表达式。
自动物化视图
在 Oracle Database 23c 中,改进创建物化视图的方式。使用机器学习来为自动生成的物化视图提出更好的建议,提高分析性能。底层机器学习框架更好地理解物化视图能为您的分析工作带来的好处,以及它可能给数据库带来的维护负担。与我们所有的自动化功能一样,我们允许您自动或手动接受它建议的更改。
使用机器学习增强实时统计
与改进自动物化视图一样,Oracle正在使用机器学习来提高实时统计的准确性。这种变化使我们能够更好地预测数据将如何随时间变化,从而提供更好的信息来规划查询执行。这种方法可以在不进行昂贵计算的情况下产生准确的优化器统计信息。
无锁列值保留
为了维护数据完整性,显式或隐式锁定数据是数据库最重要的特征之一。但是,如果高并发的应用场景或被长时间运行的事务阻塞,可能会阻碍业务运营。在 Oracle Database 23c 中,我们支持无锁列值保留。这允许开发人员创建规则,仅当库存水平低时才需要锁定数据行,而不是始终锁定数据。然后仅在提交时锁定数据,从而可能改善最终用户体验和吞吐量。
滚动补丁
影响或更改数据字典结构的补丁现在可以滚动方式应用,并在补丁应用到最后一个实例后启用。通过消除应用补丁的停机时间,进一步提高可用性。
实时 SQL 计划管理
当 Oracle 数据库遇到性能下降时,它会实时提供最佳计划来替代原执行计划。提高应用程序和升级的整体可靠性。
K8s 和 Podman 上的 RAC
Kubernetes 是许多组织的企业架构的关键组件。Oracle 为希望在这种以容器为中心的架构中运行 Oracle DB 的客户提供支持,可以轻松部署、创建和管理实例。在 Oracle Database 23c 中,通过在 K8s 和 Podman 中运行Oracle RAC 的用户,现在可以在计划内和计划外的中断期间都受益于业务连续性。
开发者角色
23c,在数据库中创建了一个开发人员角色,该角色为应用程序开发人员提供了他们在 Oracle 数据库上设计、实施和部署,优化应用程序所需的权限。这个新角色消除了 DBA 向开发人员授予一组过于宽松的权限的需要,这些权限可能是他们完成工作所不需要的,并且可能会暴露安全风险。
SQL 防火墙(SQL Firewall)
在 Oracle Database 23c 中,Oracle SQL 防火墙通过监视和阻止来自数据库内部的“未经授权的 SQL”和 SQL 注入攻击,提供针对常见数据库攻击的实时保护。它首先收集所有应该允许的 SQL(“允许列表”),然后检测、阻止和记录任何意外的 SQL。SQL 防火墙嵌入并内置于 23c 数据库中,确保无法绕过。
OKafka
Kafka 已经成为业界的重要标准。在 Oracle Database 23c 中,支持允许将 Oracle 数据库用作 Kafka 应用程序的源和目标。Kafka 应用程序现在可以利用高性能事务事件队列 (TxEventQ) 以最少的代码更改直接基于 Oracle 数据库运行。
Kafka Java API 现在可以连接到 Oracle 数据库服务器并将 TxEventQ 用作消息传递平台。Oracle TxEventQ 还支持 TxEventQ 和 Kafka 之间的双向信息流,以便近实时地在 TxEventQ 或 Kafka 中进行更改。
Javascript存储过程
在Oracle 21c中引入的MLE支持了数据库内部的Javascript ,现在更进一步,23c支持javascript存储过程,让数据库的处理能力进一步扩展和增强。这意味着开发人员可以轻松地在数据库中使用这种流行语言创建存储过程和调用业务逻辑。更重要的是,可以利用成千上万的 JavaScript 库来简化存储过程的创建。
PDB级别的只读备库(Read-Only Per-PDB Standbys)
Oracle在21.7版本引入了PDB层的Data Guard可用性特性(简称:DGPDB),这个多租户新的Data Guard特性将用来替代传统的CDB架构层的Data Guard。它允许客户实施高效的CDB 层的Data Guard,或者更灵活的PDB层Data Guard(在每个PDB上配置、维护和独立的Switchover、Failover操作)。允许单个 PDB 故障转移到其备用库而不是整个CDB 故障转移。在 Oracle Database 23c 中,我们现在允许以只读方式打开备用 PDB,进一步增加了在备库上跑报表的解决方案的灵活性。
改进的机器学习算法
Oracle 数据库内机器学习算法的新改进使文本和数据的分类更加简单,同时提供了更好的性能和灵活性。
优先交易
DBA 经常面临的问题之一是当一个事务阻塞了业务运行,导致应用运行缓慢,通常需要 DBA 亲自去做干涉。在 Oracle Database 23c 中,用户现在可以启用自动将高优先级事务优先于低优先级事务的功能。阻塞高优先级事务的低优先级事务可以自动中止。这减轻了 DBA 的管理负担,同时保持了高事务吞吐量。
单表支持4096列
Oracle 此前版本单表支持 1000列。在23c中,单表支持列数量扩展到 4096 列。这简化了需要大量属性的应用程序的开发,例如 ML 和 IoT。
Azure AD Oauth2 集成
新功能支持从 Microsoft Azure 云单点登录到 Oracle 数据库服务实例。Azure Active Directory OAuth2 集成将使客户能够更轻松地将其 Azure 应用程序连接到 Oracle 数据库。
23c数据库还有大量的新特性,等待着我们去尝试,相信一定会给您带来不一样的体验。
这里需要关注一下升级到23c的路径:
只有19c、21c 可以直接升级到 23c。
所以还在使用 12c 以前版本的小伙伴,应该考虑尽快把数据库升级到 19c。
编辑:赵靖宇
*活动最终解释权归甲骨文公司所有
全文完,希望可以帮到正在阅读的你,如果觉得此文对你有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~
❤️ 欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
————————————————————————————
公众号:JiekeXu DBA之路
CSDN :https://blog.csdn.net/JiekeXu
墨天轮:https://www.modb.pro/u/4347
腾讯云:https://cloud.tencent.com/developer/user/5645107
————————————————————————————