
周末看到了外國同行Philipp Salvisberg發(fā)的Oracle23c新特性列表的一張圖,于是產(chǎn)生了興趣逐條比對,一共22條,我個人的解讀如下,水平有限不足之處還請指正。
生產(chǎn)效率
SQL Domains
按照PG里的概念,CREATE DOMAIN創(chuàng)建一個新的域。域本質(zhì)上是一種帶有可選約束(在允許的值集合上的限制)的數(shù)據(jù)類型。 定義一個域的用戶將成為它的擁有者。域主要被用于把字段上的常用約束抽象到一個單一的位置以便維護。例如, 幾個表可能都包含電子郵件地址列,而且都要求相同的 CHECK 約束來驗證 地址的語法。可以為此定義一個域,而不是在每個表上都單獨設(shè)置一個約束。
在實際使用中,與PG的使用有哪些異同之處,要等到來年春天知曉。
JSON Schema

Oracle對JSON的進一步支持,從字面意思和舉的例子來看,這是要挑戰(zhàn)mongodb最擅長的東西。具體使用起來如何,來年看。
Developer Role
針對開發(fā)者提供了專門的Role,通過一條exec語句實現(xiàn),可以具備多種DDL的權(quán)限。對DBA來說,打包了connect和resource之后的角色更合理。
Schema level privileges
Schema級別的權(quán)限管理,Oracle你終于肯拿出來了。Oracle11g時代,以往我要做一個schema級別的權(quán)限管理,需要先從dba_tables里把所有的信息select出來,然后生成一個腳本。以至于很長時間里,我們開發(fā)人員都以為我是不想給他們干活才故意弄的這么繁瑣。
一行命令能搞定的事,非要繞彎子十幾年。
JS stored procedure
支持基于MLE Javascrip的存儲過程。把存儲過程用Javascript實現(xiàn)。到底支持到什么程度,還是需要來年揭曉。
Single Server Rolling maintenance
字面意思上看,單服務(wù)器滾動維護,如果我沒記錯,Exadata已經(jīng)有了類似的功能,很好奇23c這個具體是在什么樣場景下使用。
Native Property graphs
原生的圖數(shù)據(jù)庫存儲。Oracle是想把市面上能支持的都給支持了,下一個大迭代出什么新引擎我都不覺得奇怪。
簡易性
Oracle RAC on k8s
以往的Oracle確實是有跑在k8s上的,但是缺少官方支持的情況下,無論是故障排查還是后續(xù)的技術(shù)支持多少都有灰色地帶,如同當(dāng)年虛機上跑Oracle到底怎么支持怎么收費一樣。
也能夠看出來,k8s的影響力已經(jīng)到了Oracle不得不正視的時候。但是我謹慎不看好第一版官方支持的RAC on k8s。
1024 bytes password
對于有超高要求的用戶,是個好消息。之前在金融行業(yè)工作的時候,確實也有同事質(zhì)疑過Oracle對于密碼大小的限制是否能完全滿足需求。
Oracle <-->Kafka Integration
過去我參與過的Oracle和Kafka之間的配置,很多時候是要通過OGG來完成,如果23C可以更加簡化這一場景,是個非常好的消息。
Better error messges

將錯誤信息進一步細化,而不是要依靠開發(fā)人員或DBA的經(jīng)驗來猜,這件事情在他數(shù)據(jù)庫中已經(jīng)做的更好,Oracle一直拖延到23C才做。
其他幾項我之前工作涉及的比較少,想了半天沒想出什么太有用的內(nèi)容。值得一提的是,現(xiàn)場還是提出了幾項SQL相關(guān)的改進:
SELECT without FROM:從以前select 1+1 from dual直接變成select 1+1,對于常量或者函數(shù)的開發(fā)測試更加方便。
BOOLEAN:在PLSQL之外的場景下,終于支持了布爾類型。對于不熟悉Oracle的朋友來說,可能覺得匪夷所思,2023年才支持。
UPDATE via join:通過join的方式來更新一個表,也是一個姍姍來遲的特性。
IF [NOT] EXISTS:是的,你沒看錯,以前oracle是不支持這個關(guān)鍵字的,當(dāng)年在其他數(shù)據(jù)庫跑的業(yè)務(wù)邏輯遷移到oracle因為這個還改動很多。
GROUP BY Alias/position:以前我的某一列是函數(shù)結(jié)果比如extract() as cname,那么group by的時候我是不能用這個cname的,現(xiàn)在可以了。
TABLE value constructor:最直觀的就是允許insert一次插入多行了,不用再一行一行插入。(PS:這是ISO SQL標準)
更方便的上云
這部分能看出來,Oracle想要盡可能方便現(xiàn)有的私有部署的客戶上云,但是目前提供的幾個新特性恐怕遠遠不夠。
自動升級到Keystore訪問
自動升級可插拔數(shù)據(jù)庫
ZDM支持的Standby和DG Broker
上云前的相關(guān)工具
總結(jié)
三個大板塊,能看出23c重點想要解決的幾個問題:
支持更多的類型,尤其是Json和圖,具體能做到什么樣子有待驗證。
完善之前被詬病已久的SQL,例如無表select, if exists,和其他數(shù)據(jù)庫以及標準SQL盡量貼近
完善與其他生態(tài)的對接,例如Kafka, k8s等等,實際上這些都是早幾年就該去做的。
云服務(wù),在錯過了云多年之后,后知后覺開始追趕,但是我不看好Oracle短期內(nèi)的成效。




