在2022年10月18號的Oracle Cloud World大會上,Oracle 宣布了令人期待的Oracle Database 23c Beta 版。這是世界領先的融合數(shù)據(jù)庫的最新版本,支持所有數(shù)據(jù)類型、任意工作負載和多種開發(fā)風格。Oracle 提出了最新的數(shù)據(jù)庫愿景:讓開發(fā)和運行任何規(guī)模的任何應用和分析都非常容易,對于開發(fā)者、數(shù)據(jù)分析師而言都進一步簡化了工作模式。最有亮點的能力就是劃時代的提出了JSON Relational Duality 能力,第一次在數(shù)據(jù)庫領域?qū)㈥P系型和對象型兩種架構(gòu)的優(yōu)勢合二為一,即避免了關系型從開發(fā)人員角度看需要理解的復雜星型模型,也避免了從文檔對象型模式固有的冗余存儲、數(shù)據(jù)更新的高代價和困難的并發(fā)控制能力,這個從Oracle數(shù)據(jù)庫代碼的底層改造醞釀數(shù)年的能力終于正式面世。
Oracle Database 23c,代號為“App Simple”,專注于簡化應用程序開發(fā)。它提供跨越任何數(shù)據(jù)執(zhí)行交易和查詢,以及在任何數(shù)據(jù)組合上運行任何工作負載的獨特能力,其特有架構(gòu)可支持容器、事件、REST、低代碼、SaaS等。Oracle數(shù)據(jù)庫服務和產(chǎn)品組合中的許多其他創(chuàng)新擴展了 Oracle 在任務關鍵型工作負載上的性能、安全性和可用性方面的領先地位。
Oracle Database 23c 提供了300+個新特性和增強功能,可為使用 JSON、圖形或微服務編寫的應用程序?qū)崿F(xiàn)突破性的開發(fā)人員生產(chǎn)力,同時還增強了 SQL 以使其更易于使用,并將 JavaScript 添加為存儲過程語言。
現(xiàn)代應用程序使用數(shù)據(jù)技術(shù)的深度和廣度可能會導致開發(fā)和運行應用程序變得越來越復雜。Oracle Database 23c “App Simple” 引入了改變游戲規(guī)則的新技術(shù),使開發(fā)和運行這些現(xiàn)代應用程序變得更加容易。
下面我們來看看23c 的部分新特性列表:
這只是部分新列表,正式版的發(fā)布可能有變化,下面我們拓展一下看看部分新特性:
JSON 關系二元性(JSON Relational Duality)
對于JSON我想大家都不陌生,Oracle DB 在12c 開始支持JSON, 在DB 21c使用新的高性能二進制JSON數(shù)據(jù)類型,增加諸多特性, 在 23c 中JSON 的支持進一步加強 - JSON Relational Duality。這項突破性創(chuàng)新用于解決應用程序表示數(shù)據(jù)的方式與關系數(shù)據(jù)庫存儲數(shù)據(jù)的方式之間的不匹配問題。JSON Relational Duality 允許數(shù)據(jù)同時使用應用程序友好的 JSON 文檔和數(shù)據(jù)庫友好的關系表,從而簡化了應用程序開發(fā)。在Oracle Database 23c中,JSON Relational Duality兼具關系模型與JSON文檔模型的優(yōu)勢,結(jié)束了兩者之間的長期爭論。它將數(shù)據(jù)以高效的規(guī)范化格式存儲在關系表中,但應用程序以 JSON 文檔的形式訪問,從而在架構(gòu)上兼得JSON的用例簡單性和關系模型的多用例功能,將JSON和關系模型的優(yōu)勢融合在一個數(shù)據(jù)庫中,而無需進行任何權(quán)衡。
相信JSON Relational Duality不僅僅是 Oracle 的一個創(chuàng)新特性,這項技術(shù)將改變開發(fā)人員的使用方式,也將被業(yè)內(nèi)許多其他產(chǎn)品采用。
可操作屬性圖
Oracle將圖形數(shù)據(jù)功能引入23c關系數(shù)據(jù)模型,Oracle以前支持將圖形作為單獨的數(shù)據(jù)模型,與JSON類似。它現(xiàn)在與Oracle數(shù)據(jù)庫的圖形集成更為深入,使用23c,用戶以在現(xiàn)有表(關系或 JSON)上構(gòu)建圖形數(shù)據(jù),無需創(chuàng)建單獨的圖形表示;允許在交易事務系統(tǒng)中使用實時圖形分析,提供以前在圖形數(shù)據(jù)庫中沒有的并發(fā)級別,還提供 Oracle 數(shù)據(jù)庫的所有性能、高可用性和安全特性。隨著新交易的處理,Operational Property Graphs 可以實時識別金融交易中的欺詐行為,識別客戶社區(qū)以獲取零售建議。Oracle還添加了對SQL屬性圖查詢語言的支持,該語言可幫助開發(fā)人員更方便的創(chuàng)建圖形應用程序。
Oracle Database 23c是第一個添加對 SQL/PGQ 標準支持的商業(yè)數(shù)據(jù)庫。
微服務支持
除了 Oracle 對微服務的全面支持之外,新功能分布式微服務事務(稱為 sagas)的自動化處理,這使得構(gòu)建跨多個微服務事務的應用程序變得異常簡單,更重要的是,如果其中任何一個或全部未能提交,安全可靠地回滾事務。此外,還改進了事務事件隊列的性能,這是支持數(shù)據(jù)庫中微服務應用程序的關鍵。
多種數(shù)據(jù)類型和 SQL 增強
聽取用戶的反饋后,23c 添加了用戶一直在請求的新 SQL 數(shù)據(jù)類型和功能。比如增加了布爾數(shù)據(jù)類型;在SQL 方面添加了不帶FROM子句的SELECT 查詢;基于別名的GROUP BY;表關連的直接更新;Unicode-14 支持等諸多新特性。
SQL 域(SQL Domains)
域的概念對于曾經(jīng)使用 Oracle Designer 進行 ERD 和數(shù)據(jù)庫設計的任何人來說都非常熟悉。域是特定類型數(shù)據(jù)元素的通用定義,例如名稱、郵政編碼、國家代碼。這個通用定義可以有幾個屬性——例如格式(檢查約束)、默認值、默認顯示格式和按基于域的值排序時要使用的表達式。
在 23c 中,域可以定義為數(shù)據(jù)庫對象(如下所示),并且在定義列時,可以將其鏈接到域定義,形成一個潛在元數(shù)據(jù)組。但不僅如此:針對域定義的檢查約束由列繼承。通過新函數(shù) DOMAIN_DISPLAY 和 DOMAIN_ORDER 可以在查詢語句中使用顯示格式和 order by 表達式。
自動物化視圖
在 Oracle Database 23c 中,改進創(chuàng)建物化視圖的方式。使用機器學習來為自動生成的物化視圖提出更好的建議,提高分析性能。底層機器學習框架更好地理解物化視圖能為您的分析工作帶來的好處,以及它可能給數(shù)據(jù)庫帶來的維護負擔。與我們所有的自動化功能一樣,我們允許您自動或手動接受它建議的更改。
使用機器學習增強實時統(tǒng)計
與改進自動物化視圖一樣,Oracle正在使用機器學習來提高實時統(tǒng)計的準確性。這種變化使我們能夠更好地預測數(shù)據(jù)將如何隨時間變化,從而提供更好的信息來規(guī)劃查詢執(zhí)行。這種方法可以在不進行昂貴計算的情況下產(chǎn)生準確的優(yōu)化器統(tǒng)計信息。
無鎖列值保留
為了維護數(shù)據(jù)完整性,顯式或隱式鎖定數(shù)據(jù)是數(shù)據(jù)庫最重要的特征之一。但是,如果高并發(fā)的應用場景或被長時間運行的事務阻塞,可能會阻礙業(yè)務運營。在 Oracle Database 23c 中,我們支持無鎖列值保留。這允許開發(fā)人員創(chuàng)建規(guī)則,僅當庫存水平低時才需要鎖定數(shù)據(jù)行,而不是始終鎖定數(shù)據(jù)。然后僅在提交時鎖定數(shù)據(jù),從而可能改善最終用戶體驗和吞吐量。
滾動補丁
影響或更改數(shù)據(jù)字典結(jié)構(gòu)的補丁現(xiàn)在可以滾動方式應用,并在補丁應用到最后一個實例后啟用。通過消除應用補丁的停機時間,進一步提高可用性。
實時 SQL 計劃管理
當 Oracle 數(shù)據(jù)庫遇到性能下降時,它會實時提供最佳計劃來替代原執(zhí)行計劃。提高應用程序和升級的整體可靠性。
K8s 和 Podman 上的 RAC
Kubernetes 是許多組織的企業(yè)架構(gòu)的關鍵組件。Oracle 為希望在這種以容器為中心的架構(gòu)中運行 Oracle DB 的客戶提供支持,可以輕松部署、創(chuàng)建和管理實例。在 Oracle Database 23c 中,通過在 K8s 和 Podman 中運行Oracle RAC 的用戶,現(xiàn)在可以在計劃內(nèi)和計劃外的中斷期間都受益于業(yè)務連續(xù)性。
開發(fā)者角色
23c,在數(shù)據(jù)庫中創(chuàng)建了一個開發(fā)人員角色,該角色為應用程序開發(fā)人員提供了他們在 Oracle 數(shù)據(jù)庫上設計、實施和部署,優(yōu)化應用程序所需的權(quán)限。這個新角色消除了 DBA 向開發(fā)人員授予一組過于寬松的權(quán)限的需要,這些權(quán)限可能是他們完成工作所不需要的,并且可能會暴露安全風險。
SQL 防火墻(SQL Firewall)
在 Oracle Database 23c 中,Oracle SQL 防火墻通過監(jiān)視和阻止來自數(shù)據(jù)庫內(nèi)部的“未經(jīng)授權(quán)的 SQL”和 SQL 注入攻擊,提供針對常見數(shù)據(jù)庫攻擊的實時保護。它首先收集所有應該允許的 SQL(“允許列表”),然后檢測、阻止和記錄任何意外的 SQL。SQL 防火墻嵌入并內(nèi)置于 23c 數(shù)據(jù)庫中,確保無法繞過。
OKafka
Kafka 已經(jīng)成為業(yè)界的重要標準。在 Oracle Database 23c 中,支持允許將 Oracle 數(shù)據(jù)庫用作 Kafka 應用程序的源和目標。Kafka 應用程序現(xiàn)在可以利用高性能事務事件隊列 (TxEventQ) 以最少的代碼更改直接基于 Oracle 數(shù)據(jù)庫運行。
Kafka Java API 現(xiàn)在可以連接到 Oracle 數(shù)據(jù)庫服務器并將 TxEventQ 用作消息傳遞平臺。Oracle TxEventQ 還支持 TxEventQ 和 Kafka 之間的雙向信息流,以便近實時地在 TxEventQ 或 Kafka 中進行更改。
Javascript存儲過程
在Oracle 21c中引入的MLE支持了數(shù)據(jù)庫內(nèi)部的Javascript ,現(xiàn)在更進一步,23c支持javascript存儲過程,讓數(shù)據(jù)庫的處理能力進一步擴展和增強。這意味著開發(fā)人員可以輕松地在數(shù)據(jù)庫中使用這種流行語言創(chuàng)建存儲過程和調(diào)用業(yè)務邏輯。更重要的是,可以利用成千上萬的 JavaScript 庫來簡化存儲過程的創(chuàng)建。
PDB級別的只讀備庫(Read-Only Per-PDB Standbys)
Oracle在21.7版本引入了PDB層的Data Guard可用性特性(簡稱:DGPDB),這個多租戶新的Data Guard特性將用來替代傳統(tǒng)的CDB架構(gòu)層的Data Guard。它允許客戶實施高效的CDB 層的Data Guard,或者更靈活的PDB層Data Guard(在每個PDB上配置、維護和獨立的Switchover、Failover操作)。允許單個 PDB 故障轉(zhuǎn)移到其備用庫而不是整個CDB 故障轉(zhuǎn)移。在 Oracle Database 23c 中,我們現(xiàn)在允許以只讀方式打開備用 PDB,進一步增加了在備庫上跑報表的解決方案的靈活性。
改進的機器學習算法
Oracle 數(shù)據(jù)庫內(nèi)機器學習算法的新改進使文本和數(shù)據(jù)的分類更加簡單,同時提供了更好的性能和靈活性。
優(yōu)先交易
DBA 經(jīng)常面臨的問題之一是當一個事務阻塞了業(yè)務運行,導致應用運行緩慢,通常需要 DBA 親自去做干涉。在 Oracle Database 23c 中,用戶現(xiàn)在可以啟用自動將高優(yōu)先級事務優(yōu)先于低優(yōu)先級事務的功能。阻塞高優(yōu)先級事務的低優(yōu)先級事務可以自動中止。這減輕了 DBA 的管理負擔,同時保持了高事務吞吐量。
單表支持4096列
Oracle 此前版本單表支持 1000列。在23c中,單表支持列數(shù)量擴展到 4096 列。這簡化了需要大量屬性的應用程序的開發(fā),例如 ML 和 IoT。
Azure AD Oauth2 集成
新功能支持從 Microsoft Azure 云單點登錄到 Oracle 數(shù)據(jù)庫服務實例。Azure Active Directory OAuth2 集成將使客戶能夠更輕松地將其 Azure 應用程序連接到 Oracle 數(shù)據(jù)庫。
23c數(shù)據(jù)庫還有大量的新特性,等待著我們?nèi)L試,相信一定會給您帶來不一樣的體驗。
這里需要關注一下升級到23c的路徑:
只有19c、21c可以直接升級到23c。
所以還在使用12c 以前版本的小伙伴,應該考慮盡快把數(shù)據(jù)庫升級到19c。