用户名:  密码:   
网站首页即时通讯活动公告最新消息科技前沿学人动向两岸三地人在海外历届活动关于我们联系我们申请加入
栏目导航 — 美国华裔教授专家网科技动向科技前沿
关键字  范围   
 
Oracle 23 Ai :又甩开国产数据库几条街
2024/5/5 10:17:22 | 浏览:749 | 评论:0

昨天蓝星最强的关系型数据库Oracle发布了最新版的Oracle 23 Ai,实际上很早之前我们就测试并了解了一些Oracle 23c的内容,没想到正式Release的时候,直接改名为Ai版本了。难道是因为现在Ai很火或者是Larry很狂?我想这次正式版本的rename应该不是单纯的为了营销,那么一定是软件在Ai方面有很多创新。

Oracle 23 Ai Vector Search
实际上之前我已经大致看过了Oracle 23c的New Features了,不知道这次rename后的23 Ai版本,是否有会一些新的变化。

Oracle 23 Ai :又甩开国产数据库几条街
基于我个人的理解,这里我给大家总结一下,我认为23 Ai版本一些比较强悍的地方(这块应该够国产数据库学很多年了)。

首先我们来看看Oracle目前走在最前沿的地方,Ai vector,如下是一个示意图:

Oracle 23 Ai :又甩开国产数据库几条街
实际上对于向量化,在12.2版本就开始出现了,针对OLAP场景一种优化技术;这个技术在后面版本中不断迭代进步。

Oracle 23 Ai :又甩开国产数据库几条街
从23 Ai版本的架构来看,针对Ai Vector检索,引入了一个新的内存结构Vector Pool,该内存结构也位于SGA中,且需要单独设置vector_memory_size来实现。该内存结构主要存vector相关的一些元数据信息等内容。

从文档介绍来看还支持In-Memory Neighbor Graph Vector Index、Neighbor Partition Vector Index等(从这个角度来看,以后图数据库可以淘汰了)。除此之外,23 Ai版本的vector search功能,还支持很多SQL function 操作,并且还支持通过PlSQL代码来进行调用,也就是说提供了Pl/SQL APIs;翻了一下文档,其实就是提供了2个新的PL/SQL Package. dbms_vector、dbms_vector_chain。

老实说,虽然现在Ai各种满天飞,实际上我认为Database Ai还比较早,还需要很长一段时间才会成熟,因此这部分功能我反而不是很关心;我更关心的是其中的OTLP and Core database部分,这才是数据库内核的关键所在。

Changes in Oracle Globally Distributed Database for Oracle Database 23ai
这是Oracle 23 Ai版本中gds的增强部分,其实GdS也出来了很多年了,从Oracle 12.2 shareding 就开始了。曾经记得很多年之前,国内互联网几乎天天讲shareding,没想到没多久Oracle 也推出了自己的sharding。早期版本的gds中还需要依赖goldengate,从23 Ai版本开始,彻底废弃了GolgenGate的依赖,以后gds不再支持Goldengate了。

这里说说其中几个非常关键的特性。

Raft Replication

Directory-Based Sharding

Synchronous Duplicated Tables

Fine-Grained Refresh Rate Control For Duplicated Tables

Sharded Database Coordinated Backup and Restore Enhancements

Automatic Data Move on Sharding Key Update

Move Data Chunks Between Shardspaces

PL/SQL Function Cross-Shard Query Support

Pre-Deployment Network Validation

Parallel Cross-Shard DML Support

特性实在是太多了,我这里还没罗列完毕,大家可以去看看官方文档,这里我对raft replication是非常感兴趣的,我想大家应该也一样。

我的第一感觉,raft replication,这玩意儿不是分布式数据库才有的东西吗?Oracle引入这个干什么呢?或许从这一刻开始,我们不能说Oracle说集中式数据库了,它说一个真正的分布式数据库了(尽管Oracle 12.2 就引入了sharding,我认为之前的版本都很鸡肋)。

对于raft replication,Oracle这里有3个比较重要的概念:raft unit,raft group,raft factor.

Oracle 23 Ai :又甩开国产数据库几条街
从上面的示例图可以看出,其中有3个AZ区,3个raft replication副本,其中leader和fellower 都位于不同的AZ。

另外 Raft factor是什么意思呢?从Oracle 文档的解释来看,Raft factor的含义就是指raft group中的副本数量。其中rf可能的取值为3或者5,3表示可以容忍一个副本失效,5表示可以容忍2个副本失效(遵循多数派原则)。

如果Leader副本遭遇节点或者AZ级别的故障,整个shared集群是会进行自动选主,当节点或者AZ恢复之后,会自动加入集群。

Oracle 23 Ai :又甩开国产数据库几条街
如果是fellower副本节点故障,leader节点会不断尝试去往异常节点复制raft log,或者你此时也可以部署一个新的fellower节点。这里分享一个相对完整的架构图,其中L表示leader,F表示fellower 副本。

Oracle 23 Ai :又甩开国产数据库几条街
23Ai版本中的多租户增强
这块儿新特性其实我认为也非常不错,主要就2个关键核心功能(我个人认为哈),分别有如下2点:Hybrid read-only mode for pluggable databases

Control PDB Open Order

第一点这里我就不再过多阐述了,实际上很早之前我就做过技术分享了,这里贴一下之前的测试例子。

++Session 1
SQL> create user C##test identified by test123;

User created.

SQL> grant connect,resource,dba to C##test;

Grant succeeded.

SQL> grant connect,resource,dba to C##test container=all;

Grant succeeded.

SQL> alter pluggable database enmopdb1 close immediate;

Pluggable database altered.

SQL> alter pluggable database enmopdb1 open  hybrid read only;

Pluggable database altered.


++Session 2
SQL> conn C##test/test123@enmopdb1
Connected.
SQL> select CON_NAME,OPEN_MODE,CPU_COUNT,CON_ID,RESTRICTED,IS_HYBRID_READ_ONLY from v$container_topology;

CON_NAME                                   OPEN_MODE   CPU_COUNT     CON_ID RES IS_
------------------------------------------ ---------- ---------- ---------- --- ---
ENMOPDB1                                   READ WRITE         16          3 NO  YES

SQL> select name, open_mode from v$pdbs;

NAME                                       OPEN_MODE
------------------------------------------ ----------
ENMOPDB1                                   READ WRITE

SQL> create table t0711(a number);

Table created.

SQL> insert into t0711 values(1);

1 row created.

SQL> commit;

Commit complete.
SQL> select * from t0711;

         A
----------
         1
可能有人会问,这个混合read only pdb有什么用呢?或者说有什么应用场景?实际上有了这个小功能之后,超级管理员可以很方便的对只读pdb进行维护,这难道不香吗?

对于第二点,我个人还未进行测试,从官方文档介绍来看主要有几个功能,其中有2个我认为是非常实用的,比如单独对某个pdb的状态进行修改以及进行pdb级别的failover、switchover操作。这真的是非常的给力。

实际上对于修改单个pdb的状态(open、restoration、upgrade 3种模式),非常的实用,想想几年前我们修复一套12.2 cdb多租户数据库的时候,恢复好一些pdb之后,本来想暂时恢复部分业务,但是发现在恢复其他pdb的时候,还需要反复去操作cdb甚至重启,因此就非常的麻烦。这个难点,看上去在23 Ai版本将不复存在了。

ASM 增强
曾经处理过很多次ASM故障了,其中我认为比较经典的场景是一个用户的ASM diskgroup中的磁盘组使用不均匀,有些磁盘使用率高,有些比较低,到个别磁盘free接近0的甚至等于0的时候,该diskgroup 是无法进行reblance操作的。我想应该不少人都遇到过类似的场景吧。

在Oracle之前的磁盘组支持磁盘组和文件级别的Scrubbing 操作,而在最新的23 Ai版本中,已经支持Scrubbing extent了,可不能忽略这个小小的改进。我认为是非常实用的。或许从这个版本开始,ASM的管理真的做到极致了,以前那些磁盘使用不均衡的场景,可能再也看不到了。

函数自动转换成表达式
这个小功能我认为也是非常值得讲的,因为提升不小的性能,这就是sql_transpiler(这个功能我们在几个月前就已经提交给MogDB 内核研发了,或许很快国产数据库也将具备这个特性)。

SQL> alter session set container=enmopdb1;

Session altered.

SQL> conn roger/roger@enmopdb1
Connected.
SQL> create table t0710(
  2    a    number,
  3    b  number,
  c  number
);  4    5 

Table created.
SQL> insert into t0710 values(1, 2, 3),(2, 20, 30),(3, 200, 300);

3 rows created.
SQL> commit;

Commit complete.
SQL> create or replace function add_numbers(p1 in number, p2 in number)
  2  return number as
  3  begin
  4  return p1 + p2;
  5  end;
  6  /

Function created.

SQL> set autot on
SQL> select a, b, c from   t0710 where  add_numbers(b, c)= 500;

         A          B          C
---------- ---------- ----------
         3        200        300


Execution Plan
----------------------------------------------------------
Plan hash value:925956317

---------------------------------------------------------------------------
| Id  | Operation         | Name  | Rows  | Bytes | Cost(%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |       |     1 |    39 |     3  (0)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| T0710 |     1 |    39 |     3  (0)| 00:00:01 |
---------------------------------------------------------------------------

Predicate Information(identified by operation id):
---------------------------------------------------

   1 - filter("ADD_NUMBERS"("B","C")=500)


SQL> alter system flush shared_pool;

System altered.

SQL> alter session set sql_transpiler=on;

Session altered.

SQL> select a, b, c from   t0710 where  add_numbers(b, c)= 500;

         A          B          C
---------- ---------- ----------
         3        200        300


Execution Plan
----------------------------------------------------------
Plan hash value:925956317

---------------------------------------------------------------------------
| Id  | Operation         | Name  | Rows  | Bytes | Cost(%CPU)| Time     |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |       |     1 |    39 |     3  (0)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| T0710 |     1 |    39 |     3  (0)| 00:00:01 |
---------------------------------------------------------------------------

Predicate Information(identified by operation id):
---------------------------------------------------

   1 - filter("B"+"C"=500)


最后给大家看下测试对比,性能大概可以提升36%。

Oracle 23 Ai :又甩开国产数据库几条街
另外23 Ai版本在机器学习、向量化等、运维(自动化诊断框架)、可视化、安全(SQL firewall)等方面都有极大的增强,新特性太多,大家自行去看看官方文档吧。

相关栏目:『科技前沿
工信部:未来产业六大方向聚焦人形机器人、脑机接口、量子科技等领域 2024-11-06 [319]
Gartner 公布2025年十大战略技术趋势 2024-10-31 [473]
这样图解Transformer应该没人看不懂了吧——Transformer工作原理 2024-10-16 [844]
Nature:智能体涌现出语言 2024-10-16 [819]
50个顶级ChatGPT论文指令 2024-10-10 [1036]
推荐五种简单有效的数据可视化方式 2024-10-10 [961]
这么有深度的文章是ChatGPT写的? 2024-10-10 [960]
讲透一个强大的算法模型,CNN!! 2024-10-10 [952]
人类与 AI 协同的三种模式 2024-10-10 [557]
11 种经典时间序列预测方法! 2024-10-09 [489]
相关栏目更多文章
最新图文:
:陈文玲: 必须推动中美关系回到正确轨道 Colleen Flaherty 翻译 刘勤:MIT教授发文《美国经济评论》 :生命科学受益于明星科学家们的死亡 :北京和上海金融人的最新鄙视链 :日本政府《氢能利用进度表》 :美国《2016-2045年新兴科技趋势报告》 :天津工业大学“经纬英才”引进计划 :浙江财经大学国际青年学者论坛的邀请函 (10/31-11/1) :美国加大审查范围 北大多名美国留学生遭联邦调查局质询
更多最新图文
更多《即时通讯》>>
 
打印本文章
 
您的名字:
电子邮件:
留言内容:
注意: 留言内容不要超过4000字,否则会被截断。
未 审 核:  是
  
关于我们联系我们申请加入后台管理设为主页加入收藏
美国华裔教授专家网版权所有,谢绝拷贝。如欲选登或发表,请与美国华裔教授专家网联系。
Copyright © 2024 ScholarsUpdate.com. All Rights Reserved.