oracle 峰度 函数,Oracle Database 21c 十大新特性一览
摘要:Oracle 考慮到 2020 年我們的客戶將面臨前所未有的經濟和業(yè)務中斷。我們決定不將 Database 20c Preview 版本升級為 General Availability。 相反,我們將所有 20c 功能都合并到 21c 版本中,并使 21c 在我們的 “自制數(shù)據(jù)庫免費層” 中可用,以便所有人都可以免費試用驅動新功能和增強功能。
Oracle 已經在官網上線了關于 Oracle Database 21c 的在線文檔,這讓所有關于 Oracle 數(shù)據(jù)庫的用戶心中一驚,轉眼 2020 年已經接近尾聲,Oracle 數(shù)據(jù)庫又將進入下一個版本周期。
然而我們必須和大家進一步梳理一下,Oracle 的版本變化,并且明確:Oracle 21c 其實就相當于 Oracle 20c,因為 20c 從未進入公眾可用的版本發(fā)布。
在官方的版本計劃中,20c 已經被移除,并做出如下聲明:
Oracle 考慮到 2020 年我們的客戶將面臨前所未有的經濟和業(yè)務中斷。我們決定不將 Database 20c Preview 版本升級為 General Availability。 相反,我們將所有 20c 功能都合并到 21c 版本中,并使 21c 在我們的 “自制數(shù)據(jù)庫免費層” 中可用,以便所有人都可以免費試用驅動新功能和增強功能。
Oracle 21c 在 Oracle CLoud 上,在 2020 年 12 月 8 日可用,在企業(yè)級公眾版本將于 2021 年上半年發(fā)布。現(xiàn)在的年度版本被稱為『創(chuàng)新版本』,僅作有限的支持,有別于長期支持版本。21c 的支持期僅僅為 2023 年 6 月,沒有擴展支持。
結合 Oracle 20c 和 21c 的革新,我們再次整理這兩個版本中,引人矚目的十大新特性,與客戶和讀者朋友分享。
1. 原生的區(qū)塊鏈支持 - Native Blockchain Tables
隨著區(qū)塊鏈技術的不斷成熟和發(fā)展,Oracle 在其多模的數(shù)據(jù)庫支持中,引入了原生的區(qū)塊鏈表支持。在 21c 中數(shù)據(jù)庫中可以通過 blockchain 關鍵字來創(chuàng)建區(qū)塊鏈表:
CREATE Blockchain TABLE ;
很多客戶希望在不涉及多個組織的情況下, 利用區(qū)塊鏈的防篡改和不可否認屬性,區(qū)塊鏈表使客戶可以在需要高度防篡改的數(shù)據(jù)管理,而又無需在多個組織中分布分類帳或依靠分散的信任模型時使用 Oracle 數(shù)據(jù)庫。
為了遵循區(qū)塊鏈的可信和安全機制,區(qū)塊鏈表只能 INSERT 記錄,記錄之間通過 Hash 算法進行鏈接,不能修改,同時鏈可以被多方參與者驗證。區(qū)塊鏈表,可以和其他常規(guī)表進行關聯(lián),進行事務處理或者查詢。
區(qū)塊鏈表,在創(chuàng)建時可以指定保護的周期屬性,例如 3 年內不可刪除等,以建立數(shù)據(jù)生命周期管理。
區(qū)塊鏈表中的行是防篡改的。每行包含一個密碼哈希值,該值基于該行中的數(shù)據(jù)和鏈中上一行的哈希值。如果某行被篡改,則該行的哈希值會更改,這會導致鏈中下一行的哈希值發(fā)生更改。為了增強欺詐保護,可以將可選的用戶簽名添加到行中。如果您在區(qū)塊鏈表行上簽名,則必須使用數(shù)字證書。在驗證區(qū)塊鏈表中的鏈時,數(shù)據(jù)庫需要證書來驗證行簽名。
下圖是區(qū)塊鏈表的示意圖:
可以對區(qū)塊鏈表進行索引和分區(qū)。您可以通過建表時的選項控制是否以及何時從區(qū)塊鏈表中刪除行。您還可以控制是否可以刪除區(qū)塊鏈表。區(qū)塊鏈表可與事務和查詢中的(常規(guī))表一起使用。
區(qū)塊鏈表用于實施集中式區(qū)塊鏈應用程序,其中中央權限是 Oracle 數(shù)據(jù)庫。集中式區(qū)塊鏈為組織提供了更大的可定制性和控制力,因為他們可以決定誰可以加入網絡。參與者是不同的數(shù)據(jù)庫用戶,他們信任 Oracle 數(shù)據(jù)庫來維護交易的防篡改區(qū)塊鏈。所有參與者都必須具有將數(shù)據(jù)插入到區(qū)塊鏈表中的特權。區(qū)塊鏈的內容由應用程序定義和管理。與分散式區(qū)塊鏈相比,集中式區(qū)塊鏈與基于共識的分布式區(qū)塊鏈相比,首選應用在更高吞吐量和更低交易延遲的場景。
區(qū)塊鏈表,可以和其他常規(guī)表進行關聯(lián),進行事務處理或者查詢。
針對區(qū)塊鏈表,以下這些操作是禁止的:
Updating and merging rows
Adding, dropping, and renaming columns
Truncating the blockchain table
Dropping partitions
Defining BEFORE ROW - triggers that fire for update operations (other triggers are allowed)
Direct-path loading
Inserting data using parallel DML
Converting a regular table to a blockchain table or vice versa
XA transactions2. 持久化內存存儲支持 - Persistent Memory Store
自 Oracle 19c 開始,Oracle 就已經開始修改程序以更好的配合持久化內存,提升數(shù)據(jù)庫性能。
在 21c 中,Oracle 明確支持了持久化內存 - Persistent Memory,雖然目前發(fā)布的信息是在 Exadata 中支持,但是軟件的提升是通過的,在各類一體機中,或者是傳統(tǒng)架構中使用持久化內存是毫無障礙的。
持久化內存的引入,讓 Oracle 的存儲多達 6 級:SATA、SAS、SSD、Flash、PMEM、RAM,冷熱數(shù)據(jù)分離,分層存儲,可以進行更加精細化的架構設計。整體架構提供小于 19 個微秒的 IO 延時。
在 Oracle 新發(fā)布的 Exadata X8M 一體機中,100Gb 的以太網和 RoCE 獲得支持,這是第一次在 Oracle 一體機中引入了基于 RoCE 的架構;
存儲服務器上,通過 PMEM 在 Flash 之前進行加速,RoCE 和 PMEM 提供了極速性能;
3. SQL 的宏支持 - SQL Macro
宏的作用在于讓 SQL 獲得進一步的概括和抽象能力,允許開發(fā)者將復雜的處理邏輯通過宏進行定義,然后在后續(xù)程序處理中可以反復引用這一定義。
在 21c 中引入的 SQL Macro 支持兩種宏類型,Scalar 和 Table 類型。
SCALR 表達式可以用于 SELECT 列表、WHERE/HAVING、GROUP BY/ORDER BY 子句;
TABLE 表達式可以用于 FROM 語句。
看一個簡單的示例,例如需要一個函數(shù),返回數(shù)據(jù)的下限和上限,舉例而言,如果 x upper (特定大值) 則返回 upper(作為上限),否則返回 x 本身。
例如,如下創(chuàng)建一個 Clip 函數(shù),返回一個 SCALAR 值:
create function clip(lo number, x number, hi number)return varchar2 SQL_MACRO(SCALAR) isbegin return 'least(greatest(x, lo), hi)';end;/
接下來就可以如下引用這個函數(shù):
SELECT ename, CLIP (:lower, sal, :upper)FROM emp;
Macro 函數(shù)被查詢改寫為如下執(zhí)行:
SELECT ename, least(greatest(sal, :lower), :upper)FROM emp;
這個查詢返回的結果如下,可以看到 CLIP 的效果:
SQL> SELECT ename,clip(1000,sal,2000) FROM emp;ENAME CLIP(1000,SAL,2000)---------- -------------------SMITH 1000ALLEN 1600WARD 1250JONES 2000MARTIN 1250BLAKE 2000CLARK 2000SCOTT 2000KING 2000TURNER 1500ADAMS 1100JAMES 1000FORD 2000MILLER 1300
總結一下 SQL Macro 的意義:
?SQL 宏提供了一個基于 SQL 的簡單框架,用于封裝業(yè)務 / 技術邏輯
- 無需在查詢中調用自定義 PL SQL 過程和函數(shù)
? 可以在 SQL 語句內的任何地方使用;
? 自動繼成所有常用的數(shù)據(jù)庫內查詢優(yōu)化;
? 可以建立參數(shù)化視圖;
? 簡化從非 Oracle 數(shù)據(jù)庫遷移到 Oracle 數(shù)據(jù)庫;
4. 原生的 JSON 數(shù)據(jù)類型支持
12.1.0.2 引入 JSON 支持, 允許將 JSON 存儲在 varchar2 或 LOB(CLOB 或 BLOB)中,可以利用 Schemaless 設計模型所提供的靈活性來構建應用程序,但又能從 Oracle 數(shù)據(jù)庫的功能中受益。
可以使用標準 SQL 查詢 JSON 文檔,利用高級分析功能,對單個屬性或整個文檔進行索引,并行處理數(shù)十億個 JSON 文檔。還可以通過使用 Java、Node.js、Python、C 語言和 REST 的 SODA API 來訪問 Oracle 數(shù)據(jù)庫,將其視為 NoSQL 數(shù)據(jù)庫。
在 21c 中,Native 數(shù)據(jù)類型 “JSON” 改進了對 JSON 的支持。在讀取或更新操作時不必對 JSON 進行解析,而只在插入時才進行解析,JSON 以內部二進制格式保存,這使得訪問速度更快。讀取和更新速度提高了 45 倍,對非常大的 JSON 文檔的更新速度提高了 2030 倍。
新的函數(shù) JSON_TRANSFORM,使得在一次操作中更新和刪除文檔中的多個屬性變得更加簡單。
5. SQL 新特性和函數(shù)擴展 - Extensions
在 Oracle 21c 中,關于 SQL 的函數(shù)擴展很多,包括對于 ANSI 2011 標準的部分支持,進一步的提升了 SQL 的處理能力。
在分析計算中,21c 提供了兩種新的分布聚類算法,偏態(tài) - SKEWNESS、峰度 - KURTOSIS,通過這兩個算法,可以對給定數(shù)據(jù)進行更豐富的分布計算,新特性支持物化視圖,遵循和方差(VARIANCE)相同的語義。
在 21c 中,Oracle 還增加了 CHECKSUM 函數(shù),用于檢測數(shù)據(jù)的完整性,這個函數(shù)可以用于替代 DBMS_SQLHASH.GETHASH 函數(shù),DBA 不必再為此進行單獨授權。
新的位運算符也被引入,21c 中支持的新的位運算包括:BITANDAGG、BITORAGG、BITXORAGG 。
對于分析函數(shù),Oracle 21c 擴展了窗口邊界,通過 GROUPS 關鍵字可以進行特定分組數(shù)據(jù)的計數(shù)。
關鍵字 GROUPS 強調與分組查詢的關系,使用 GROUPS 關鍵字,我們可以回答諸如,每個交易賬號執(zhí)行 "購買" 的最后五個交易日中,花費的金額和 以及 購買的不同股票代碼的數(shù)量等。
6. 自動化的 In-Memory 管理 - Self-Managing In-Memory
In-Memory 技術引入之后,為 Oracle 數(shù)據(jù)庫帶來了基于內存的列式存儲能力,支持 OLTP 和 OLAP 混合的計算。
在 21c 中,Oracle 支持了自主的 In-Memory 管理,通過一個簡單的初始化參數(shù) inmemoryautomaticlevel 設置,DBA 將不再需要人工指定將哪些數(shù)據(jù)表放置在內存中,數(shù)據(jù)庫將自動判斷需要將哪些對象加入或驅逐出 In-Memory 的列式存儲中。
內存對象的管理,是通過數(shù)據(jù)庫內置的機器學習算法自動實現(xiàn)的,并且數(shù)據(jù)庫可以進一步的自動壓縮較少訪問的內存列數(shù)據(jù)。
inmemoryautomaticlevel = HIGH 設置,可以用于指定高度的自動的內存管理級別。
7. 廣泛的機器學習算法和 AutoML 支持
...
? 接下來內容請訪問原文(https://www.modb.pro/db/41888)進行查看~
更多數(shù)據(jù)庫相關內容,可訪問墨天輪(https://www.modb.pro/)進行瀏覽。
總結
以上是生活随笔為你收集整理的oracle 峰度 函数,Oracle Database 21c 十大新特性一览的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 不同权限登录界面,PHP中如何实
- 下一篇: c语言程序设计教程 实验十,清华大学出版