Skip to content

Latest commit

 

History

History
133 lines (75 loc) · 8.12 KB

20201210_02.md

File metadata and controls

133 lines (75 loc) · 8.12 KB

为什么Oracle 21c的新特性不值得一提? 因为它已经老了!

作者

digoal

日期

2020-12-10

标签

PostgreSQL , Oracle


背景

Oracle 21c发布的新特性好吗? 对于Oracle用户来说很好, 但是不值得一提. 因为Oracle已经老了, 世界已经不属于Oracle.

https://www.eygle.com/archives/2020/12/oracle_21c_new_features.html

1. 原生的区块链支持 - Native Blockchain Tables

如果这个市场需求很大, 不会等到今天才支持, 因为早在3年前, PG就已经支持了blockchain插件.
https://github.com/blkchain/pg_blkchain
https://github.com/postgrespro/pg_credereum

如果这个技术很难实现, 为什么早在3年前, PG就已经支持了blockchain插件.

大船调头难, 小船灵活, 什么时候需要blockchain存储在数据库中了, Oracle要准备三年, 而PG随时可以支持.

2. 持久化内存存储支持 - Persistent Memory Store

首先, 持久化内存存储不是数据库能力, 是硬件能力.

其次, 在响应速度毫秒级以内, 对用户本无感的内存、持久化内存, SSD层做冷热数据分离意义不大. 应该去做对用户有价值的:
PG 老早就支持了FDW技术, 例如阿里云oss_fdw, aws s3_fdw, 在存储产品级融合才能满足用户真正诉求.
https://help.aliyun.com/document_detail/44461.html
对接oss或s3后, 不仅能处理关系数据, 还能处理非关系数据, 高速处理在RDS中完成, 需要海量运算的处理在对象存储层使用函数计算、数据湖等产品完成. 相得益彰.

3. SQL的宏支持 - SQL Macro

宏的作用在于让SQL获得进一步的概括和抽象能力,允许开发者将复杂的处理逻辑通过宏进行定义,然后在后续程序处理中可以反复引用这一定义。

在 21c 中引入的 SQL Macro 支持两种宏类型,Scalar 和 Table 类型。

  • SCALR 表达式可以用于 SELECT 列表、WHERE/HAVING、GROUP BY/ORDER BY子句;
  • TABLE 表达式可以用于 FROM 语句。

这种小功能不值得一提. PG 内置了400多种数据类型, 几千个函数和操作符, 公共市场有2000多种扩展插件, 一般也不会拿来宣传.

4. 原生的 JSON 数据类型支持

12.1.0.2 引入JSON支持,允许将JSON存储在varchar2或LOB(CLOB或BLOB)中,可以利用 Schemaless 设计模型所提供的灵活性来构建应用程序,但又能从Oracle数据库的功能中受益。

Oracle老了, PG支持SQL/JSON是在2012年的PG 9.2版本, sql 2016的sql/json标准有15条, PG 实现了14条, 远远超过oracle(18c 11/15), mysql(8.0.4 5/15), sqlserver(2017 2/15)最新版本。

《PostgreSQL 史上最强JSON功能 - PG 12 jsonpath 完全超越oracle, mysql, sql server的sql json标准覆盖率》

而且PG支持混合索引, 普通检索和倒排检索可以共用索引, 增强查询结果集的定位精准度.

《10亿级云资源TAG管理, 实时写入和搜索数据库设计 - gin+btree_gin 倒排搜索》

5. SQL新特性和函数扩展 - Extensions

在 Oracle 21c中,关于SQL的函数扩展很多,包括对于 ANSI 2011 标准的部分支持,进一步的提升了 SQL 的处理能力。

对不起, 这些PG早在2005年的8.0版本就支持了, 例如提到的bit_and|or|xor_agg

https://www.postgresql.org/docs/current/functions-aggregate.html

增强插件支持更多能力

《云、商业、开源数据库终局之战 - 商业角度解读PG如何破局 - openapi 、 扩展能力、插件开源协议》

6. 自动化的In-Memory 管理 - Self-Managing In-Memory

In-Memory 技术引入之后,为Oracle数据库带来了基于内存的列式存储能力,支持 OLTP 和 OLAP 混合的计算。

鸡肋功能, 真正大数据的扛不住, 中等数据又用不到这个特性, 谁会花钱? PG 的并行计算、复杂sql优化器、vops类似的向量计算结合, 足够应对 TB级 中等量级的oltp+olap混合计算.

7. 广泛的机器学习算法和AutoML支持

在Oracle 21c中,更多的机器学习算法被加入进来,实现了更广泛的机器学习算法支持。

PG十几年前就支持了madlib机器学习包, 众多数据科学家贡献, apache开源项目, 还是免费的.

https://madlib.apache.org/

8. 多租户细粒度资源模型 - New Resource Modeling Scheme

在21c之前,多租户的数据库管理是服务驱动的,通过服务来决定PDB的资源放置,PDB的开启也是通过服务来进行隐式驱动的。

不能算高精尖的功能, 实际上只要具备这几个能力就能支持多租户:

1、进程模型,
2、一个实例支持创建多个database,
3、每个database可以做到安全隔离,

而且多租户解决什么问题呢? 现在都微服务化了, 每个服务一个instance不好吗?

oracle做多租户的能力只是在解决它的遗留问题, 贵!!! 一个服务一个oracle谁扛得住, 但是开源数据库没有这个毛病, 一个微服务一个数据库, 又好用又安全, 还方便扩容.

9. 零影响的计划停机维护 - Zero Downtime for Planned Outages

在 Oracle 不同版本的不断演进中,一直在加强数据库的可用性能力。在 21c 中,对于计划停机维护或者滚动升级等,Oracle 通过 Smart DRM 等特性以实现对应用的零影响。

这个功能对于一个数据库来说, 确实很有必要.

但是现在都什么年代了, 还有多少应用还强依赖数据库的0停机维护? 谁还会把脖子伸过去让数据库掐?

10. In-Memory 的 Spatial 和 Text 支持

针对 Oracle 数据库内置的多模特性,地理信息 -Spatial 和 全文检索 - Text 组件,在 21c 中,通过 In-Memory 的内存特性,获得了进一步的支持。

我只能说PG的spatial、全文检索在关系数据库中是绝对的霸主, 20年前就已经支持了好不好.
https://help.aliyun.com/document_detail/95580.html

很明显, 不是数据库不发展了, 是Oracle老了.

不可否认, Oracle是非常值得尊重的数据库对手,必须心存敬畏, 但是时代在变化, 从dbengine 的趋势图也可以看到oracle从2013年以来一直在走下坡路, 马化腾说 "你可能什么也没错, 只是太老了" 。从诺基亚、当当我们都能吸取到类似的教训, 当当的失败高速我们, 不是知识没有市场, 而是获取知识的方式变了, 固守图书市场显然是脱离时代的。

我们要拥抱变化。我是从搞Oracle开始入行数据库的, 记得2007年还录制了很多Oracle的培训视频, 心存感激, 心存敬畏。
那怎么办呢?我们还得学习, 还得赚钱呀! 《12道题, 带你深度了解 阿里云下一代数据库形态 : MyBase》

今年参加过数据库嘉年华的小伙伴肯定也看到,盖老师都已经开始讲PG了。

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.

digoal's wechat