【kingsql分享】Oracle Database 20c 十大新特性介紹

kingsql發表於2020-05-27

1. 原生的區塊鏈支援 - Native Blockchain Tables


隨著區塊鏈技術的不斷成熟和發展,Oracle 在其多模的資料庫支援中,引入了原生的區塊連結串列支援。


在 20c 中資料庫中可以透過 blockchain 關鍵字來建立區塊連結串列:


CREATE Blockchain TABLE <blockchain_table_name>;


很多客戶希望在不涉及多個組織的情況下利用區塊鏈的防篡改和不可否認屬性,區塊連結串列使客戶可以在需要高度防篡改的資料管理,而又無需在多個組織中分佈分類帳或依靠分散的信任模型時使用Oracle資料庫。


為了遵循區塊鏈的可信和安全機制,區塊連結串列只能INSERT 記錄,而不能修改,同時鏈可以被多方參與者驗證。


區塊連結串列,可以和其他常規表進行關聯,進行事務處理或者查詢。


2. 持久化記憶體儲存支援 - Persistent Memory Store


自 Oracle 19c 開始,Oracle就已經開始修改程式以更好的配合持久化記憶體,提升資料庫效能。


在20c中,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提供了極速效能;


3. SQL的宏支援 - SQL Macro


宏的作用在於讓SQL獲得進一步的概括和抽象能力,允許開發者將複雜的處理邏輯透過宏進行定義,然後在後續程式處理中可以反覆引用這一定義。


在 20c 中引入的 SQL Macro 支援兩種宏型別,Scalar 和 Table 型別。


SCALR 表示式可以用於 SELECT 列表、WHERE/HAVING、GROUP BY/ORDER BY子句;


TABLE 表示式可以用於 FROM 語句。


4. SQL新特性和函式擴充套件 - Extensions


在 Oracle 20c中,關於SQL的函式擴充套件很多,包括對於 ANSI 2011 標準的部分支援,進一步的提升了 SQL 的處理能力。


在分析計算中,20c 提供了兩種新的分佈聚類演算法,偏態 - SKEWNESS、峰度 - KURTOSIS,透過這兩個演算法,可以對給定資料進行更豐富的分佈計算,新特性支援物化檢視,遵循和方差(VARIANCE)相同的語義。


在20c中,Oracle 還增加了 CHECKSUM 函式,用於檢測資料的完整性,這個函式可以用於替代 DBMS_SQLHASH.GETHASH 函式,DBA不必再為此進行單獨授權。


新的位運算子也被引入,20c 中支援的新的位運算包括:BIT_AND_AGG、BIT_OR_AGG、BIT_XOR_AGG 。


對於分析函式,Oracle 20c 擴充套件了視窗邊界,透過 GROUPS 關鍵字可以進行特定分組資料的計數。


關鍵字GROUPS強調與分組查詢的關係,使用GROUPS關鍵字,我們可以回答諸如,每個交易帳號執行"購買"的最後五個交易日中,花費的金額和 以及 購買的不同股票程式碼的數量等。


5. 自動化的In-Memory 管理 - Self-Managing In-Memory


In-Memory 技術引入之後,為Oracle資料庫帶來了基於記憶體的列式儲存能力,支援 OLTP 和 OLAP 混合的計算。


在 20c 中,Oracle 支援了自主的In-Memory 管理,透過一個簡單的初始化引數 inmemory_automatic_level 設定,DBA將不再需要人工指定將哪些資料表放置在記憶體中,資料庫將自動判斷需要將哪些物件加入或驅逐出In-Memory的列式儲存中。


記憶體物件的管理,是透過資料庫內建的機器學習演算法自動實現的,並且資料庫可以進一步的自動壓縮較少訪問的記憶體列資料。


inmemory_automatic_level = HIGH 設定,可以用於指定高度的自動的記憶體管理級別。


6. 廣泛的機器學習演算法和AutoML支援


在Oracle 20c中,更多的機器學習演算法被加入進來,實現了更廣泛的機器學習演算法支援。


極限梯度助推樹 - eXtreme Gradient Boosting Trees(XGBoost) 的資料庫實現,以及各種演算法,如分類(Classification)、迴歸(regression)、排行(ranking)、生存分析(survial analysitic)等;


MSET-SPRT 支援感測器、物聯網資料來源的異常檢測等,非線性、非引數異常檢測ML技術;


此外,Oracle機器學習演算法支援各種語言,例如 OML4SQL、OML4Py、OML4R,其中AutoML 針對 Python 提供了全面支援。


7. 多租戶細粒度資源模型 - New Resource Modeling Scheme


在20c之前,多租戶的資料庫管理是服務驅動的,透過服務來決定PDB的資源放置,PDB的開啟也是透過服務來進行隱式驅動的。


在叢集環境中,這就存在一個問題,PDB 可能被放置在某個資源緊張的伺服器上,服務驅動的模型並不完善。


在 20c 中,Oracle 引入了細粒度的資源模型,將負載和 PDB 的重要性等引入管理視角。例如,使用者可以透過Cardinality 和 Rank 定義,改變 PDB 的優先順序,在資料庫啟動時,優先開啟優先順序別高的PDB。


除此之外,在 PDB 開啟之前,資料庫會檢查主機執行負載、可用性、CPU數量和CPU速度等資訊,以科學判定應該在什麼節點以什麼順序啟動PDB。


關於多租戶的另外一個改變是:在 20c 中,Non-CDB 模式將不再被支援(可以使用非多租戶環境,但是沒有官方支援),這將強制推動使用者使用多租戶特性。


在 Oracle 19c 的授權檔案中,有這樣的描述:你可以使用 3 個PDB的多租戶環境而不需要License,超過 3個 PDB則需要額外的授權。


"For all offerings, if you are not licensed for Oracle Multitenant, then you may have up to 3 PDBs in a given container database at any time."


8. 零影響的計劃停機維護 - Zero Downtime for Planned Outages


在 Oracle 不同版本的不斷演進中,一直在加強資料庫的可用效能力。在 20c 中,對於計劃停機維護或者滾動升級等,Oracle 透過 Smart DRM 等特性以實現對應用的零影響。


對於維護操作,資料庫可以在例項關閉前進行動態的資源重分配,這一特性被稱為 Smart DRM,透過GRD的動態資源重組織,重新選出的Master節點不需要進行任何的恢復和維護,對於應用做到了完全無感知、無影響。


9. In-Memory 的 Spatial 和 Text 支援


針對 Oracle 資料庫內建的多模特性,地理資訊 -Spatial 和 全文檢索 - Text 元件,在 20c 中,透過 In-Memory 的記憶體特性,獲得了進一步的支援。


對於空間資料,Oracle 在記憶體中為空間列增加空間摘要資訊(僅限於記憶體中,無需外部儲存),透過 SIMD 向量快速過濾、替換 R-Tree 索引等手段,以加速空間資料查詢檢索,可以將查詢速度提升10倍。


針對全文檢索(Text),在記憶體中將倒排索引新增到每個文字列,同時透過將單詞對映到包含單詞的文件,以記憶體替換原來的磁碟索引,從而加速全文檢索的效能。透過結合關係資料和文字的混合查詢,全文檢索可以獲得 3倍以上的效能提升。


10. 備庫的 Result Cache 支援 - Standby Result Cache


在 Oracle 12.2 和 18c 中,已經實現了 ADG 的 會話連線保持 和 Buffer Cache保持,在 20c 中,Result Cache 在備庫上進一步得以保留,以確保這個細節特性的主備效能透過。


Result Cache 特性是指,對於特定查詢(例如結果集不變化的),將查詢結果保留在記憶體中,對於反覆查詢(尤其是大規模聚合)的語句,其成本幾乎降低為 0 。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28389881/viewspace-2694579/,如需轉載,請註明出處,否則將追究法律責任。

相關文章