データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

Oracle21cの新機能

Oracle 21cデータベースは、Autonomous Database(ADB)、Oracle Exadata service @ customer、OracleExadataマシンなどのオンプレミスおよびクラウドインフラストラクチャのOracleデータベースサービスを強化します。

最新のOracleバージョンには、新しいケース、オプティマイザーのパフォーマンスの自動化、JSONデータとグラフモデルのサポートが含まれています。自動化機能により、ユーザーと開発者の両方の作業が楽になります。さまざまなデータモデル、ワークロードがサポートされ、組み込みの機械学習機能などが含まれているため、個別のサービスが不要になります。Oracle21cにより、SQL、REST、APIが有効になります。すべてのタイプのデータモデルにわたるトランザクション。

21cアーキテクチャ

Oracleデータベースアーキテクチャは、古いバージョンに似ています。次の図に示すように、OracleデータベースインスタンスとOracleデータベースで構成されています。

画像ソース

Oracleデータベース21c技術アーキテクチャ:

マルチテナントアーキテクチャは、データファイルと呼ばれる物理ファイルで構成され、データベースインスタンスは、メモリ構造(Shared Global Area&PGAとして知られるSGA)とバックグラウンドプロセスで構成され、サーバープロセスを利用してユーザーに代わってクエリを実行したり、ディスク、データファイルまたはREDOログファイルへのデータの書き込み、実行計画の保存など。

単一のデータベースアーキテクチャには、インスタンスとデータベースの間に1対1の関係が含まれています。同じサーバーに複数の単一インスタンスをインストールできますが、インスタンスごとに個別のデータベースがあります。

Oracle RACアーキテクチャは、別々のサーバーで実行される複数のインスタンスで構成されますが、すべてが同じデータベースを使用します。この構成は、顧客に高可用性、ハイエンドパフォーマンス、およびスケーラビリティを提供するように設計されています。データベース内のリスナーは、クライアントアプリケーションの要求を受け入れ、データベースへの接続を確立してから、サーバープロセスに渡します。サーバープロセスはユーザーに代わって機能し、そのリクエストを実行します。

Oracle21cの機能

21c生成は、すべてのタイプのデータタイプをサポートします。リレーショナル、JSON、XML、空間グラフ、OLAPなどであり、次の画像に示すように、分析、運用、混合ワークロードなど、あらゆるタイプのワークロードに高いパフォーマンス、スケーラビリティ、可用性、セキュリティを提供します。

画像ソース

1)ブロックチェーンテーブル:

検証済みのトランザクションに関連するさまざまな問題を解決しました。分散型台帳をサポートできるアプリケーション構築の複雑な性質をサポートします。これらのテーブルは通常のヒープテーブルと同じように機能しますが、いくつかの重要な違いがあります。これらの中で最も注目に値するのは、行がテーブルに挿入されるときに暗号化されてハッシュ化されるため、後で行を変更できないようにすることです。

画像ソース

これにより、挿入専用テーブルが作成され、ユーザーはブロックチェーンテーブルの行を更新または削除できなくなります。また、ユーザーは、特定の制限時間内にデータを切り捨てたり、ブロックチェーンを削除したり、テーブルをパーティション分割したりすることができなくなります。これらの重要な機能は、他のユーザーがブロックチェーンテーブルに保持されているデータがイベントの正確な記録であることを信頼できることを意味します。

2)ネイティブJSONデータ型:

JSONデータをARCHAR2またはLOB(CLOBまたはBLOB)として格納します。これは、開発者がスキーマレス設計モデルの柔軟性を備えたアプリケーションを構築するのに役立ちます。たとえば、ユーザーはSQLを使用してJSONドキュメントにクエリを実行し、高度な分析を利用して、個々の属性またはドキュメント全体にインデックスを付け、数十億のJSONドキュメントを並行して処理できます。 Oracle Database 21cでは、ネイティブデータ型「JSON」を提供することでJSONサポートがさらに強化されています。

つまり、読み取りまたは更新操作でJSONを解析する代わりに、解析は挿入時にのみ行われ、JSONは内部バイナリ形式で保持されるため、アクセスがはるかに高速になります。これにより、読み取りおよび更新操作が4〜5倍高速になり、非常に大きなJSONドキュメントへの更新が20〜30倍高速になる可能性があります。

CREATE TABLE j_order

id INTEGER PRIMARY KEY、

po_doc JSON

);

Oracle Database 21cでJSONに導入された変更は、新しいデータ型だけではありません。Oracleは、新しいJSON関数JSON_TRANSFORMも追加しました。これにより、ドキュメント内の複数の属性を1回の操作で更新および削除することがはるかに簡単になります。

>
                                        UPDATE j_order SET po_doc = JSON_TRANSFORM( po_doc,
                                        SET '$.address.city' = 'Santa Cruz',
                                        REMOVE'$.phones[*]?(@.type == "office")
                                      )
                                      WHERE id = 555;

3)Oracleデータベース内でのJavaScriptの実行:

Multi Language Engine(MLE)を使用して、DBMS_MLEという新しいPL/SQLパッケージを使用してデータベース内でJavaスクリプトコードを実行します。 MLE。 Javaスクリプトは、Webアプリケーションとモバイルアプリでのより豊富なユーザーインタラクションを可能にします。これは、Webブラウザーで実行される数少ない言語のひとつであり、サーバー側とクライアント側の両方のコードの開発に使用できます。

複雑なプログラムを実装するための既存のJavaScriptライブラリの大規模なコレクションがあり、JavaScriptはJSONやRESTなどの一般的な開発テクノロジーと連携して機能します。Oracle21cでは、開発者はデータが存在するデータベース内でJavaスクリプトコードを実行できます。これにより、データをブラウザの中間層に移動することなく、Javaスクリプトで記述された短い計算タスクを実行できます。 MLEはJavaスクリプトのデータ型をOracleDatabaseのデータ型に自動的にマッピングします。その逆も同様です。開発者はデータ型の変換を行う必要がありません。

また、Javaスクリプトは、組み込みのJavaスクリプトモジュールを介してPL/SQLおよびSQLを実行できます。これにより、APEX開発者は、PL / SQLおよびSQLの能力を犠牲にすることなく、APEXアプリ内でJavaスクリプトをファーストクラスの言語として使用できます。 JavaScriptでは、通常のSQLを介してデータベース(テーブルとビュー)にアクセスできます。以下は、Javaスクリプトでコードがどのように記述されるかを示しています

宣言する

ctx dbms_mle.context_handle_t;

開始

ctx:=dbms_mle.create_context(); –MLE実行の実行コンテキストを作成する

dbms_mle.eval(ctx、‘JAVASCRIPT’、‘console.log( Hello from JavaScript )'); –ソースコードを評価する

実行コンテキストのスニペット

dbms_mle.drop_context(ctx); –

不要になった実行コンテキストを削除します;

:コンテキストが保持されている限り、functionsendを含むグローバルオブジェクトの値を保持します;

4)SQLマクロ:

SQLクエリが複雑になるのは普通のことです。結合の数が増えるか、データの取得がより複雑になり、開発者はストアドプロシージャと関数を使用してこれらの操作を簡素化することにより、この問題を解決します。ただし、SQLエンジンがPL / SQLエンジンとコンテキストを切り替えるため、パフォーマンスが低下する可能性があります。 Oracle 21cでは、SQLマクロは、SQL式とテーブル関数を、実行するSQLに挿入される文字列リテラルを返すストアドプロシージャの呼び出しに置き換えることで、この問題を解決します。

5)メモリ内の機能強化:

列形式を使用してデータを分析すると、行ベースの形式と比較してパフォーマンスを向上させることができます。行モデルではデータの更新が高速ですが、Oracleデータベースのメモリ内機能により、要件に応じて両方のモデルを使用できます。このユーザーの助けを借りて、変更なしでアプリケーションを実行でき、メモリ内は非常に高速なリアルタイム分析クエリをサポートする列型ストアを維持します。パフォーマンスを向上させ、メモリ内のOracleデータベースでの使用を容易にするための3つの主要な改善点があります。

A。データベースのメモリ内ベクトル結合:

これは、メモリ内の列ストア内の列に対するハッシュ結合などの操作を高速化するのに役立ちます。ハッシュ結合の場合、結合はより小さな操作に分割され、ベクトルプロセスに渡されます。使用されるKeyValueテーブルは、SIMDに最適化されており、右側と左側の結合の行を照合するために使用されます。これにより、パフォーマンスが10倍向上します。

B。自己管理型のインメモリ列ストア:

Oracleデータベースのインメモリがリリースされたとき、ユーザーはメモリ列ストアに入力された列を明示的に宣言する必要がありました。これにより、メモリが不足している場合にユーザーが高度に制御できるようになります。

18cデータベースでは、オブジェクトがアクティブに使用され、使用されていないオブジェクトが削除された場合に、オブジェクトを列ストアに自動的に配置する機能が導入されました。ただし、ユーザーは考慮すべきオブジェクトを指定する必要がありました。

Oracle Database 21cでは、INMEMORY_AUTOMATIC_LEVELをHIGHに設定すると、すべてのオブジェクトが考慮されるようになります。これにより、メモリ内の列ストアを管理する作業が簡素化されます。

C。インメモリハイブリッド列型スキャン:

メモリが限られているため、すべてのテーブルのすべての列を列ストアに入力することはできません。多くの場合、これは問題ではありませんが、列ストアのデータ(列)と行ストアでのみ利用可能なデータを必要とするクエリが発生する場合があります。

Oracle Database In-Memoryの以前のリリースでは、このようなクエリは単に行ストアに対して実行されていました。 Oracle Database 21cでは、ユーザーは両方を使用できるようになりました。オプティマイザは、インメモリ列ストアをスキャンし、必要に応じて行ストアから投影された列値をフェッチすることを選択できるようになりました。これにより、パフォーマンスが大幅に向上する可能性があります。

画像ソース

結論

全体的なメリットは次のようにまとめることができます-:

1)データベースのクエリパフォーマンスが大幅に向上しました

2)21’c世代は、JSON、XML、OLAPなどのすべてのデータ型をサポートします。

3)非常にスケーラブルで可用性が高く、すべてのワークロード(OLTP、アドホッククエリ、データウェアハウスなど)にセキュリティを提供します。

4)運用ワークロードと混合ワークロードの両方をサポートします。

5)21Cでは、並列スキャンやオンラインバックアップなど、多くのことが自動化されているため、開発者はデータの永続性について心配する必要がありません。

6)パフォーマンス機能は、自動インデックス作成などの機能により大幅に自動化されています。

コメントや質問をするには、[フィードバック]タブを使用します。私たちと会話を始めることもできます。


  1. データベース管理者向けの新しいOracle19c機能

    Oracle®Databaseバージョン19cでは、多数の新機能と改善された機能が導入されました。 はじめに Oracle 19cは、Oracle Database 12cリリース2製品ファミリの最後であり、長期的なサポートがあります。 Linux®、Windows®、Solaris®、HP /UX®、AIX®プラットフォーム、およびOracleCloudで使用できます。 Oracle 19cは、すべての運用および分析ワークロードに対して最高のパフォーマンス、スケーラビリティ、信頼性、およびセキュリティ機能をお客様に提供します。 機能 データベース管理者(DBA)のタスクを簡単にする新機能

  2. Ruby2.6の9つの新機能

    Rubyの新しいバージョンには、新しい機能とパフォーマンスの改善が含まれています。 変更についていきますか? 見てみましょう! 無限の範囲 Ruby 2.5以前のバージョンは、すでに1つの形式の無限範囲をサポートしています( Float ::INFINITY を使用) )、しかしRuby2.6はこれを次のレベルに引き上げます。 新しい無限の範囲 次のようになります: (1..) これは、(1..10)のような終了値がないため、通常の範囲とは異なります。 。 使用例 : [a, b, c].zip(1..) # [[a, 1], [b, 2], [c, 3]] [1,2,3,