Oracle明確:Oracle 21c 其實就相當於 Oracle 20c,因為 20c從未進入公眾可用的版本發布。
在官方的版本計划中,20c 已經被移出,並做出如下聲明:
Oracle考慮到2020年我們的客戶將面臨前所未有的經濟和業務中斷。我們決定不將Database 20c Preview版本升級為General Availability。相反,我們將所有20c功能都合並到21c版本中,並使21c在我們的“自制數據庫免費層”中可用,以便所有人都可以免費試用驅動新功能和增強功能。
1. 自動化的In-Memory 管理 - Self-Managing In-Memory
In-Memory 技術引入之后,為Oracle數據庫帶來了基於內存的列式存儲能力,支持 OLTP 和 OLAP 混合的計算。
在 21c 中,Oracle 支持了自主的In-Memory 管理,通過一個簡單的初始化參數 inmemory_automatic_level 設置,DBA將不再需要人工指定將哪些數據表放置在內存中,數據庫將自動判斷需要將哪些對象加入或驅逐出In-Memory的列式存儲中。
內存對象的管理,是通過數據庫內置的機器學習算法自動實現的,並且數據庫可以進一步的自動壓縮較少訪問的內存列數據。
inmemory_automatic_level = HIGH 設置,可以用於指定高度的自動的內存管理級別。
2. 原生的區塊鏈支持 - Native Blockchain Tables
隨着區塊鏈技術的不斷成熟和發展,Oracle 在其多模的數據庫支持中,引入了原生的區塊鏈表支持。在 21c 中數據庫中可以通過 blockchain 關鍵字來創建區塊鏈表:
CREATE Blockchain TABLE <blockchain_table_name>;
很多客戶希望在不涉及多個組織的情況下,利用區塊鏈的防篡改和不可否認屬性,區塊鏈表使客戶可以在需要高度防篡改的數據管理,而又無需在多個組織中分布分類帳或依靠分散的信任模型時使用Oracle數據庫。
為了遵循區塊鏈的可信和安全機制,區塊鏈表只能INSERT 記錄,記錄之間通過 Hash 算法進行鏈接,不能修改,同時鏈可以被多方參與者驗證。區塊鏈表,可以和其他常規表進行關聯,進行事務處理或者查詢。
3. 持久化內存存儲支持 - Persistent Memory Store
自 Oracle 19c 開始,Oracle就已經開始修改程序以更好的配合持久化內存,提升數據庫性能。
在21c中,Oracle 明確支持了持久化內存 - Persistent Memory,雖然目前發布的信息是在Exadata中支持,但是軟件的提升是通過的,在各類一體機中,或者是傳統架構中使用持久化內存是毫無障礙的。
持久化內存的引入,讓 Oracle 的存儲多達 6 級:SATA、SAS、SSD、Flash、PMEM、RAM,冷熱數據分離,分層存儲,可以進行更加精細化的架構設計。整體架構提供小於 19個微秒的IO延時。
在Oracle新發布的 Exadata X8M 一體機中,100Gb的以太網和RoCE獲得支持,這是第一次在Oracle一體機中引入了基於RoCE的架構;
存儲服務器上,通過PMEM在Flash之前進行加速,RoCE和PMEM提供了極速性能;
4. 廣泛的機器學習算法和AutoML支持
在Oracle 21c中,更多的機器學習算法被加入進來,實現了更廣泛的機器學習算法支持。
極限梯度助推樹 - eXtreme Gradient Boosting Trees(XGBoost) 的數據庫實現,以及各種算法,如分類(Classification)、回歸(regression)、排行(ranking)、生存分析(survial analysitic)等;
MSET-SPRT 支持傳感器、物聯網數據源的異常檢測等,非線性、非參數異常檢測ML技術;
此外,Oracle機器學習算法支持各種語言,例如 OML4SQL、OML4Py、OML4R,其中AutoML 針對 Python 提供了全面支持。
5. In-Memory 的 Spatial 和 Text 支持
針對 Oracle 數據庫內置的多模特性,地理信息 -Spatial 和 全文檢索 - Text 組件,在 21c 中,通過 In-Memory 的內存特性,獲得了進一步的支持。
對於空間數據,Oracle 在內存中為空間列增加空間摘要信息(僅限於內存中,無需外部存儲),通過 SIMD 矢量快速過濾、替換 R-Tree 索引等手段,以加速空間數據查詢檢索,可以將查詢速度提升10倍。
針對全文檢索(Text),在內存中將倒排索引添加到每個文本列,同時通過將單詞映射到包含單詞的文檔,以內存替換原來的磁盤索引,從而加速全文檢索的性能。通過結合關系數據和文本的混合查詢,全文檢索可以獲得 3倍以上的性能提升。
6. 零影響的計划停機維護 - Zero Downtime for Planned Outages
在 Oracle 不同版本的不斷演進中,一直在加強數據庫的可用性能力。在 21c 中,對於計划停機維護或者滾動升級等,Oracle 通過 Smart DRM 等特性以實現對應用的零影響。
對於維護操作,數據庫可以在實例關閉前進行動態的資源重分配,這一特性被稱為 Smart DRM,通過GRD的動態資源重組織,重新選出的Master節點不需要進行任何的恢復和維護,對於應用做到了完全無感知、無影響。
7. 多租戶細粒度資源模型 - New Resource Modeling Scheme
在21c之前,多租戶的數據庫管理是服務驅動的,通過服務來決定PDB的資源放置,PDB的開啟也是通過服務來進行隱式驅動的。
在集群環境中,這就存在一個問題,PDB 可能被放置在某個資源緊張的服務器上,服務驅動的模型並不完善。
在 21c 中,Oracle 引入了細粒度的資源模型,將負載和 PDB 的重要性等引入管理視角。例如,用戶可以通過Cardinality 和 Rank 定義,改變 PDB 的優先級,在數據庫啟動時,優先打開優先級別高的PDB。
除此之外,在 PDB 打開之前,數據庫會檢查主機運行負載、可用性、CPU數量和CPU速度等信息,以科學判定應該在什么節點以什么順序啟動PDB。
關於多租戶的另外一個改變是:在 21c 中,Non-CDB 模式將不再被支持(可以使用非多租戶環境,但是沒有官方支持),這將強制推動用戶使用多租戶特性。
8. SQL新特性和函數擴展 - Extensions
在 Oracle 21c中,關於SQL的函數擴展很多,包括對於 ANSI 2011 標准的部分支持,進一步的提升了 SQL 的處理能力。
在分析計算中,21c 提供了兩種新的分布聚類算法,偏態 - SKEWNESS、峰度 - KURTOSIS,通過這兩個算法,可以對給定數據進行更豐富的分布計算,新特性支持物化視圖,遵循和方差(VARIANCE)相同的語義。
在21c中,Oracle 還增加了 CHECKSUM 函數,用於檢測數據的完整性,這個函數可以用於替代 DBMS_SQLHASH.GETHASH 函數,DBA不必再為此進行單獨授權。
新的位運算符也被引入,21c 中支持的新的位運算包括:BIT_AND_AGG、BIT_OR_AGG、BIT_XOR_AGG 。
對於分析函數,Oracle 21c 擴展了窗口邊界,通過 GROUPS 關鍵字可以進行特定分組數據的計數。
關鍵字GROUPS強調與分組查詢的關系,使用GROUPS關鍵字,我們可以回答諸如,每個交易帳號執行"購買"的最后五個交易日中,花費的金額和 以及 購買的不同股票代碼的數量等。
9. SQL的宏支持 - SQL Macro
宏的作用在於讓SQL獲得進一步的概括和抽象能力,允許開發者將復雜的處理邏輯通過宏進行定義,然后在后續程序處理中可以反復引用這一定義。
在 21c 中引入的 SQL Macro 支持兩種宏類型,Scalar 和 Table 類型。
1、SCALR 表達式可以用於 SELECT 列表、WHERE/HAVING、GROUP BY/ORDER BY子句;
2、TABLE 表達式可以用於 FROM 語句。
10. 原生的 JSON 數據類型支持
12.1.0.2 引入JSON支持,允許將JSON存儲在varchar2或LOB(CLOB或BLOB)中,可以利用 Schemaless 設計模型所提供的靈活性來構建應用程序,但又能從Oracle數據庫的功能中受益。
可以使用標准SQL查詢JSON文檔,利用高級分析功能,對單個屬性或整個文檔進行索引,並行處理數十億個JSON文檔。還可以通過使用Java、Node.js、Python、C語言和REST的SODA API來訪問Oracle數據庫,將其視為NoSQL數據庫。
在21c中,Native 數據類型 “JSON ”改進了對JSON的支持。在讀取或更新操作時不必對JSON進行解析,而只在插入時才進行解析,JSON以內部二進制格式保存,這使得訪問速度更快。讀取和更新速度提高了45倍,對非常大的JSON文檔的更新速度提高了2030倍。
新的函數JSON_TRANSFORM,使得在一次操作中更新和刪除文檔中的多個屬性變得更加簡單。
總結
在企業級公眾版本將於2021年上半年發布,目前Oracle 21c 在 Oracle CLoud上。