Oracle Database 20c预览

Oracle数据库的最新创新

在此博客文章中,我们将介绍Oracle Database 20c内的一些新功能,这些功能刚刚在Oracle CloudDBCS平台上更新为20.3版。

Oracle Database 20cOracle多模型数据库的下一版本。像之前的版本一样,Oracle Database 20cOLTP和分析工作负载提供了业界领先的可伸缩性,可用性和安全性。它支持关系,JSONXML,空间,图形,柱状,OLAP和非结构化数据,使您可以专注于构建应用程序,而不必担心如何持久存储此类数据。

支持和以前的版本

您可以在以下帖子中找到我们上一年度版本中重要功能的详细信息:

Oracle Database 20c是每年一次的短期支持版本,允许用户试用新功能,或为可以从中受益的应用程序利用最新功能。尽管我们对该最新版本感到非常兴奋,但是Oracle建议大多数用户考虑升级到Oracle Database 19c,因为它一直提供长期支持,直到20264月。您可以在支持窗口中查看各种版本的支持。文档ID 742060.1中的Oracle Support网站文章

融合数据库

自从Oracle Database的最初版本发布以来,Oracle采取的方法是在单个数据库平台中存储和管理数据比将数据分解并存储在一次性引擎中更有意义。不可避免地使用多个独立引擎会导致数据完整性,一致性和安全性问题。通过使用为所有主要数据类型和开发范例提供最佳支持的单个引擎,用户可以从Oracle数据库的所有关键功能中受益,例如ACID事务,读取一致性,集中式安全模型,并行扫描和DML ,在线备份,时间点恢复等-无论您采用哪种存储数据的方法。

Oracle数据库中集中数据的决定并不意味着要牺牲使用您认为合适的设计方法来构建应用程序的能力。Oracle支持创建单个数据库应用程序以及采用事件驱动或微服务范例的数据库。这种方法的关键是使用 OracleMultitenant Architecture为每个服务提供自己的虚拟数据库(PDB)。这仍然允许您将多个PDB一起管理,并且通过内部PDB SQL操作简化了数据库的联合。

而且,如果由于法规要求而需要支持数百万并发用户或在地理上分布数据库,则Oracle数据库分片可简化此过程,同时仍提供聚合数据模型。

从今年年初开始,Oracle宣布Oracle Spatial and GraphOracle Machine Learning现在已成为核心数据库产品的一部分,这使得在单个位置分析数据变得更加简单且更具成本效益。

扫描二维码关注公众号,回复: 11303273 查看本文章

Oracle Database 20c的新功能

Oracle Database 20c引入了一些功能,远远超出了本篇简短博客文章所涵盖的范围。因此,要进行更全面的审查,请参阅《新功能指南》  以及新的《数据库功能和许可应用程序》

让我们看一下Oracle数据库20c预览版中的一些重要增强。

区块链表

区块链作为一项技术已经在解决与交易验证相关的许多问题方面大有前途。尽管在将这项技术引入企业方面已经取得了长足的进步,但仍然存在许多问题,其中最大的问题可能是构建可支持分布式分类帐的应用程序的复杂性。

为了简化在Oracle Database 20c中引入这一令人兴奋的技术的过程,我们引入了Blockchain Tables。这些表的操作类似于任何普通堆表,但有许多重要区别。其中最值得注意的是,在将行插入表中时,将对行进行加密哈希处理,从而确保以后不再可以更改行。

 

这实际上创建了一个仅插入表。区块链表不允许用户更新或删除行。还可以防止用户在特定时限内截断数据,删除分区或删除表。

这一重要功能意味着其他用户可以相信,区块链表中保存的数据是事件的准确记录。Oracle Database 20c使您可以运行一个过程,以验证所有记录与它们的哈希签名一致。

要进一步深入了解此关键功能,请查看Mark RakhmilevichBlockchain表上的深入博客

SQL

随着联接数的增加,或者对检索到的数据执行的操作变得越来越复杂,SQL语句的复杂度会越来越高。开发人员尝试通过使用存储过程和表函数来简化这些常用操作来解决此问题也很常见。这对于简化代码非常有效,但是随着SQL引擎使用PL / SQL引擎切换上下文,可能会牺牲一些性能。在Oracle Database 20c中,SQL宏通过允许将SQL表达式和表函数替换为对存储过程的调用来解决此问题,该存储过程将返回要在要执行的SQL中插入字符串文字。这是一个非常简单的概念,也是CRust程序员会熟悉的概念。以下简单示例显示了它的实际作用。

首先,让我们创建一个表并插入几行。

 

CREATE TABLE(id integer, name varchar2(30), item_type varchar2(30), price float );

insert into line_items values (1, 'Red Red Wine', 'ALCOHOL', 15.6)

insert into line_items values (2, 'Its Cold Out There Heater', 'RADIATOR', 200.49);

insert into line_items values (3, 'How Sweet It Is Cake', 'FOOD', 4.56);

下面的SQL计算我们LINE_ITEMS表中各行的增值税

select id,

  case

    when item_type = 'ALCOHOL' then round(1.2 * price, 2)

    when item_type = 'SOLAR PANEL' then round(1.05 * price, 2)

    when item_type = 'RADIATOR' then round(1.05 * price, 2)

    else price end as total_price_with_tax

from line_items;

但是,在Oracle Database 20c中,我们可以通过使用新的SQL_MACRO关键字创建一个函数并返回一个字符串来简化它。

create or replace function total_price_with_tax(the_price float, the_item_type varchar)

  return varchar2 SQL_MACRO(SCALAR) is

begin

  return q'[case

    when item_type = 'ALCOHOL' then round(1.2 * price, 2)

    when item_type = 'SOLAR PANEL' then round(1.05 * price, 2)

    when item_type = 'RADIATOR' then round(1.05 * price, 2)

    else price end as total_price_with_tax]';

end;

然后,我们可以简单地在select语句中引用SQL宏。每次获取行以执行我们的函数时,执行的SQL与原始SQL语句完全相同,而没有上下文切换的开销。

 

SQL > select id, total_price_with_tax(price, item_type) from line_items;

 

  ID   TOTAL_PRICE_WITH_TAX(PRICE,ITEM_TYPE)

  ------------------------------------------

   1                                   18.72

   2                                210.5145

   3                                    4.56

可以在参数化视图和多态表中使用相同的方法。

Keith Laker演讲精彩,为您提供了有关此实用功能的更多信息。

Oracle数据库内存增强

与使用基于行的模型执行相同的操作相比,使用柱状模型分析数据可以显着提高性能。但是,使用行中保存的数据时,更新数据的速度明显加快。Oracle Database In-Memory具有独特之处,它使您可以从两种方法中受益。使用此功能,您可以保持关系或JSON应用程序的运行状态不变,并且Oracle数据库将维护一个列式存储,以支持快速的实时分析查询。Oracle Database In-Memory Blog是一个绝佳的资源,可用于了解有关此强大技术的更多信息。

Oracle Database 20c引入了三个主要改进,以增强使用Oracle Database In-Memory功能时的性能和易用性。

  • 数据库内存矢量联接:通过使用其新增强的深度矢量化SIMD框架,Oracle数据库内存可加快内存列存储内部列上的哈希联接之类的操作。在哈希联接的情况下,联接被分解为较小的操作,可以传递给矢量处理器。所使用的键值表经过SIMD优化,用于匹配联接左侧和右侧的行。这种方法可以使连接性能比传统方法提高多达10倍。
  • 自我管理的内存中列存储:首次发布Oracle数据库内存中时,您必须明确声明要填充到内存中列存储中的列。如果内存不足,可以高度控制。在Oracle Database 18c中,我们引入了一些功能,该功能可以在对象被积极使用时自动将它们放置在列存储中,并删除那些未被使用的对象。但是,您仍然必须指出要考虑的对象。在Oracle Database 20c中,将INMEMORY_AUTOMATIC_LEVEL设置为HIGH时,将考虑所有对象。这种自动内存管理大大简化了管理列存储的工作。
  • 内存中混合列扫描:由于内存有限,通常不可能在列存储中填充每个表的每个列。在很多情况下,这不是问题,但是有时您可能偶尔遇到一个查询,该查询需要列存储中的某些数据(列)和某些仅行存储中的数据。在早期版本的Oracle Database In-Memory中,此类查询将仅针对行存储运行。在Oracle Database 20c中,我们现在可以同时使用两者。现在,优化程序可以选择扫描列存储并在需要时从行存储中获取计划的列值。这可以显着提高性能。

 

混合柱状扫描

本机JSON数据类型

我们在Oracle Database 12c12.1.0.2)中引入了对JSON的支持。它允许将JSON存储在varchar2LOBCLOBBLOB)内部的数据库中。这意味着可以利用无模式设计模型提供的灵活性来构建应用程序,但是可以受益于Oracle数据库的强大功能。您可以使用标准SQL查询JSON文档,利用高级分析功能,为单个属性或整个文档建立索引,并并行处理数十亿个JSON文档。我们还提供了工具来发现由JSON文档组成的属性,并在集合的顶部轻松创建关系视图。通过使用可用于JavaNode.jsPythonCRESTSODA(简单对象数据APIAPI进行访问,开发人员还可以将Oracle数据库视为NoSQL数据库。

Oracle Database 20c中,我们通过提供本机数据类型“ JSON”来改善对JSON的支持。这意味着解析不必在读取或更新操作时解析JSON,而是仅在插入时进行解析,然后JSON以内部二进制格式保存,这使访问速度更快。这可能导致读取和更新操作快45倍,对超大型JSON文档的更新快2030倍。

 CREATE TABLE j_order (

   id     INTEGER PRIMARY KEY,

  
 po_doc JSON 
 );

新数据类型并不是Oracle数据库20c中针对JSON引入的唯一更改,Oracle还添加了一个新的JSON函数JSON_TRANSFORM,这使在一次操作中更新和删除文档中的多个属性变得更加简单。

 UPDATE j_order SET po_doc = JSON_TRANSFORM( po_doc,

                                            SET '$.address.city' = 'Santa Cruz’,

                                            REMOVE'$.phones[*]?(@.type = "office")’
)

 WHERE id = 555;

当然,我们还将新的JSON数据类型的兼容性添加到了驱动程序和实用程序(如DatapumpGoldenGate)中。

适用于PythonAutoML的机器学习

8i发行以来,机器学习已内置在Oracle数据库中。它不需要分析师或数据科学家将数据提取到文件系统或专业数据库中,而是使您能够利用Oracle数据库的强大功能并通过直接在表中保存的数据上运行的30多种机器学习算法来构建模型。这种将算法移至数据的方法可最大程度地减少或消除数据移动,实现可伸缩性,保留数据安全性并加快模型部署时间。

Oracle Database 20c中,我们引入了一些功能,通过为Oracle Database提供Python机器学习接口,使用户更轻松地利用此功能。这个新的客户端补充了已经可用的RSQL接口。数据科学家现在可以在自己认为合适的环境中工作,只需将Oracle数据库视为高性能计算引擎即可。您可以使用类似于Scikit-learnPanda框架的程序结构,这些结构成为数据库表的简单代理,然后使用Python函数调用而不是SQL来调用Oracle Database ML算法。

Oracle Python机器学习还希望简化选择和调整正确模型的过程,这可能是一项复杂且耗时的工作。新的AutoML功能可以选择模型,相关属性,然后调整超参数。这样可以大大减少创建模型的时间,该模型可以准确地创建预测或对数据进行分类。

 

路易吉Saetta有一个伟大的介绍这个功能在这里Oracle机器学习队也有一个梦幻般的博客提供了很多详细信息。

Oracle Database 20c机器学习中,我们还添加了对MSET-SPRTXGBoost算法的支持,以及对神经网络算法的Adam优化求解器。

其他显着增强

Oracle Database 20c进行了100多个增强。尽管我希望详细介绍它们,但我只是重复《Oracle数据库新功能指南》中的许多内容。但是,我认为还有其他一些功能特别值得注意。

  • 基于init.ora参数的表达式:现在可以基于对系统配置进行的计算来建立数据库参数(init.ora),即,将数据库参数CPU_COUNT设置为可用于操作系统的CPU数量的一半。
  • 自动区域图Exadata现在可以根据查询中使用的谓词自动创建区域图。以前,这是手动操作,需要您了解如何访问数据。这样可以大大减少需要扫描的块数。
  • 优化的图形模型:图形可以包含数百万甚至数十亿个边和顶点,因此我们对Oracle Database 20c预览版中的图形功能进行的存储优化可以为模型带来很大的空间并提高性能。
  • 分片增强功能:为了使开发针对Oracle分片的Java应用程序更加容易,我们引入了一个新的Java数据源,它使获取连接变得简单,而不必定义分片键或显式管理连接键。如果您正在处理的分片在执行过程中失败,我们还会自动寻找替代品,从而使分片更具容错能力。
  • 持久内存支持:在Oracle Database 20c中,我们为在持久内存文件系统之上运行的数据库提供支持。与使用SSD或机械磁盘的传统文件系统相比,PMEM文件系统可以显着提高延迟和带宽。但是,使用它们的应用程序需要了解如何安全地对其进行写入,以及结合其他OS资源使用它们的最有效方法。Oracle Database 20c的实现提供了原子写入,可以安全地防止意外断电期间的部分写入。它还提供了使用内存复制的快速I / O操作。此外,它通过绕过并直接从PMEM存储读取数据来有效地使用数据库缓冲区高速缓存。

 

摘要

现在可以在Oracle OCI的数据库云服务(DBCS虚拟机上使用Oracle Database 20c Preview 。我刚刚谈到了一些令人兴奋的新功能。有关更多信息,请参阅《  Oracle数据库新功能指南》

要试用Oracle Cloud或访问我们的免费套餐,请检查以下链接

Oracle数据库免费层

 

猜你喜欢

转载自blog.csdn.net/allway2/article/details/106471408