※ 本記事は、Dominic Gilesによる”Oracle Database 23c: The Next Long Term Support Release“を翻訳したものです。

2023年9月20日


世界で最も強力なデータベースOracle Database 23cの新しいバージョンがOCI Oracle Base Database Serviceで利用可能になったことをお知らせします。また、人気のOracle Database Freeバージョンをこちらからダウンロードできます。Oracle Database On-premises、Exadata、Exadata Database Service、Exadata Cloud at Customer (ExaC@C)およびAutonomous Database (ADB)のリリースは、後から続く予定です。

Oracle Database 23c

このリリースでは、開発者を強力に支援するとともに、データベースでの人工知能(AI)の使用を簡素化します。加えて、高可用性、最高のパフォーマンス、鉄壁のセキュリティに対する比類ないサポートで有名なデータベースとして、多数の改良が加えられています。さらに重要なこととして、この新しいリリースでは、Oracle Databaseの業界をリードする統合データベース・アプローチが強化されています。あらゆるワークロードに対してJSON、XML、Graph、Spatial、Text、Relationalをサポートしながら、開発者の様々な開発スタイルに対応します。

このブログでは、いくつかの新機能を見て、このエキサイティングな新リリースをナビゲートするのに役立つ追加リソースをお伝えします。

AIのイノベーション

データ・サイエンティストや開発者は、データベース内のデータを本当に反映した分析モデルを構築することが困難な場合があります。今日、開発者がデータベースから大規模なデータセットを抜き出し、より良い機械学習(ML)モデルを探すのに苦労している様子を見ることは珍しくありません。そこで、データ・マイニングと機械学習のアルゴリズムをOracle Databaseに直接組み込み、迅速かつ正確な結果を得るための最適なアルゴリズムを見つけるためのツールを提供しています。長年にわたり、新しい機械学習アルゴリズムをデータベースに追加し、適切なアルゴリズムを選択できるようにツールを強化してきました。Oracle Database 23cは、予測精度を向上させるためのXGBoostの改善や一般化線形モデル・アルゴリズムなど、データ・マイニングおよびML機能のいくつかの重要な改善により、この資産の積み重ねを継続しています。

最近では、GPT-3などのGenerative AIとLarge Language Models(LLM)の大規模な進歩により、AIの世界は大きな前進を遂げました。私たちは、教育、ヘルスケア、ビジネスなど様々なところでAIを利用したアプリケーションの進歩につながり始めていると、変革の波をひしひしと感じています。開発者や分析担当者がOracle Databaseでこれらの最新技術を利用できるように、データのセキュリティを損なうことなく、データベースとともにLLMの能力を活用できるようにする機能が新たに導入されています。すでに自然言語でのチャットで、Oracle Database(またはAPI経由)で複雑なクエリにデータのコンテキストに基づいて対応[RS1] できるようになります。今後数か月のうちに、このAI機能を拡張して、データベースや開発ツールのあらゆる側面のコードを生成できるようにする予定です。

Oracle DatabaseのAI機能をさらに拡張し、データベース内でのAIベクトル検索機能を追加します。ベクトルは、イメージ、ドキュメント、ビデオなどの非構造化データのコンテンツを表すためにAIで使われるもので、各ベクトルは、非構造化データの特徴を示すためのディメンション[JTS2] と呼ばれる一連の数値です。ベクトルは通常Neural Networksによって生成され、ワードやピクセル・ベースではなく、データのセマンティック・コンテンツを表します。

Oracle Database 19c内でベクトルを格納および問合せすることは可能ですが、Oracle Database 23cでは、ネイティブのベクトル・データ型を追加し、最適化されたベクトル類似性検索索引により、問合せのパフォーマンスが大幅に向上します。新しいSQL関数および演算子を使用すると、ベクトルの作成、操作や、JSON、Spatial、Graphなど、Oracle Databaseですでにサポートされている他のデータ・モデルと組み合せた問合せが簡単になります。

開発者のジャーニーをよりシンプルに

SQL

SQLがソフトウェア業界に与える影響を抑えることは不可能です。これは、業界標準主導の読みやすい言語であり、業界全体で広く受け入れられてきたのとともに、あらゆるタイプのデータベースにおいてキーバリュー、ドキュメント、グラフ、リレーショナルなどにおいても受け入れられています。

Oracle Databaseは、SQLファーストの原則に基づいて設計されており、そのために他の誰よりもSQLをうまく実行するように努めています。過去40年間にわたり、このシンプルで強力な言語を使用して達成できるよう推進してきました。Oracleの初期の頃から、SQLはデータベースの行レベル・ロックおよび読取り一貫性機能を実装し、さらに最近では、SQLを使用したドキュメントおよびグラフのデータ・モデルの機能を実装しました。

大規模なデータ・セットや複雑なデータ・セットの問合せを簡単にするなど、数々のSQL標準を最初に商用データベースで実装するのは大抵私たちです。開発者のSQLが常にパフォーマンスを発揮するように、分析システム用か運用システム用かに関係なく、Oracle Databaseで実行を最適化するよう改良を続けてきました。パラレル問合せ、リアルタイム・マテリアライズド・ビュー、インメモリー列ストアなどのテクノロジにより、高速でスケーラブルな実行が保証されます。

Oracle Database 23cでは、SQLレイヤーの改善点がいくつか追加されています。次のものが含まれます。

  • ドメイン定義により、開発者がEメール、クレジット・カード、郵便番号などの上位レベルのデータ型を追加可能に
  • 注釈(Annotation)により、開発者がオブジェクトについてリッチで記述的なメタデータを集中管理可能に
  • 新しいbooleanデータ型
  • 更新(Update)文中の直接結合
  • 単純なSELECT文での「from dual」句を不要に
  • GROUP BYでの別名の使用
  • 間隔ごとの集計
  • 表値コンストラクタを使用すると、insert、selectまたはmerge文に複数の行を簡単に指定が可能
  • PL/SQLからSQLへのトランスファイル

その他多数…

Oracle Database 23cのライフタイムを通じ、SQLサポートの向上を継続していきます。それにより、複雑でミッションクリティカルなワークロードをあらゆる規模で管理するための世界最高のデータベースでありたいと考えています。

JSON

Oracle Database 23cでは、オラクルのJSON機能は、他の競合製品に先行しています。Oracle Database 12c以降、JSONを扱うアプリケーションを構築できる柔軟性に加え、データ管理や分析で世界をリードするデータベース・エンジンのすべての機能から利点を享受できるようになっています。

JSONとRelationalには、どちらも長所と短所があります。アプリを構築する際、開発者は多くの場合、2つのデータ・モデルのいずれかを選択し、その欠点をうまく抑え込むか、オブジェクト・リレーショナル・マッピング・フレームワークとそれらがもたらすあらゆる複雑さと問題さに向き合う必要があります。

  • ドキュメント型の利点: ストレートフォワード・アプリケーション開発(プログラミング・オブジェクト・マッピング、GET/PUTアクセス、交換形式の共通化)
  • リレーショナル型の利点: 一貫性、メモリ効率、正規化(柔軟なデータの組合せ/構成/集計)

Oracle Database 23cでは、JSONとリレーショナルの二面性ビューが導入されています。この革新的なテクノロジーにより、開発者は両方のデータ・モデルの強みを利用できます。開発者は、優先アクセス・モデルの志向(PUT、GET、DELETE)に応じて、JSONドキュメントをプライマリ・データ永続性モデルとして使用するアプリケーションを構築できます。また、必要に応じてリレーショナル・モデルを活用することもできます。リレーショナル・データ・モデルとドキュメント・データ・モデルの両方に信頼できる一元化された情報源があるため、開発者は開発サイクル全体でどちらのモデルも活用できます。

次のコード・サンプルは、ドキュメント内に受注(ORDERS)が埋め込まれた顧客(CUSTOMER)ドキュメントの二面性ビューを示しています。Oracleデータベースでは、データをリレーショナル形式で格納しますが、ドキュメントまたは行フォームのいずれでも取得および更新できます。これは、SQL、REST、オラクルのSODA APIまたはOracle Mongo APIを介して実行できます。

CREATE or REPLACE JSON RELATIONAL DUALITY VIEW customers_dv AS
   Customers @insert @update @delete
   {CustomerID      : id
    FirstName       : first_name
    LastName        : last_name
    DateOfBirth     : dob
    Email           : email
    Address         : address
    Zip             : zip 
    Orders : orders @insert @update @delete
      [ {OrderID             : id
         ProductID           : product_id
         OrderDate           : order_date
         TotalValue          : total_value
         OrderShipped        : order_shipped
         }]
   }

この画期的なテクノロジを実現するために、新しい楽観的ロック・モデルと、JSONドキュメントの変更に対応するファイングレイン制御を追加しました。楽観的ロック・モデルは、データベースで競合する共通の更新を失うことなく、高い同時実行性のメリットを提供します。

JSONとリレーショナルの二面性ビューの導入に加え、Oracle DatabaseのコアJSON機能も拡張しています。

プロパティ・グラフ

グラフ・データベースは、現実世界に存在する複雑な関係性をモデル化するための別のアプローチを提供します。ただし、最近まで、開発者がこれらの関係性をナビゲートするために使用した言語と、それらの関係性を格納するためのデータベースはプロプライエタリでした。そのため、この重要なテクノロジーの普及の妨げとなっていました。しかし最近は、業界が集まって標準を批准するように取り組んでいます。つまり、開発者は、SQLがもたらす自由な選択肢から恩恵を受けることができるのです。Oracle Database 23cは、この新しい標準を実装する最初の商用データベースであり、この動きが企業の中核となるGraphデータベースの活用推進に役立つと確信しています。

新機能により、グラフ・モデルを定義するノードエッジによるグラフ・モデルを簡単に定義でき、SQLの拡張で問合せも簡単です。この例では、新しいDDL構文を使用して、顧客(CUSTOMERS)表および続柄(CUSTOMER_RELATIONSHIP)表からプロパティ・グラフを作成します。顧客はグラフ内のノードを表し、続柄(彼女、配偶者、子、親など)はエッジを表します。

CREATE PROPERTY GRAPH customers_graph
  VERTEX TABLES (
    customers
    KEY (id)
    LABEL customer
    PROPERTIES (id, first_name, last_name)
  )
  EDGE TABLES (
    customer_relationships AS related
    KEY (id)
    SOURCE KEY (source_id) REFERENCES customers (id)
    DESTINATION KEY (target_id) REFERENCES customers (id)
    PROPERTIES (id, relationship)
  );

 

グラフを定義したら、新しいSQL/PGQ MATCH関数を使い、単純なSQL問合せで、データ間の接続および関係を検索できます。つまり、問合せを数行で簡単に表すことができます。この新機能が導入される前よりもはるかに簡単です。

ここでは、顧客Maria Smithに対してタイプがfriend(最大2ホップで{1,2}に表示される)の顧客を検索しています

SELECT DISTINCT customer_name
   FROM graph_table(customers_graph
     MATCH
       (v1 IS customer) -[e IS related WHERE e.relationship = 'friend']-> {1,2} (v2 IS customer)
     WHERE v1.first_name = 'Maria' AND v1.last_name = 'Smith'
     COLUMNS (v2.first_name || ' ' || v2.last_name AS customer_name)
   );

ここに示した内容は、グラフ分析が提供する機能の入り口にすぎません。Oracle Database 23cソリューションの実際のパワーは、業務データに対するグラフ分析で発揮されるのです。(業務データとグラフ分析の)この緊密な統合がなければ、データを抽出して、機能を補完する別の専用データベースに渡す必要がありました。つまり、2つのデータ・リポジトリの同期を維持することと、追加のコンピュートおよびストレージ・リソースのコストと言う問題が発生してしまいます。データを単一のデータベースに保持することで、不正の検出や推奨事項などのユース・ケースのデータに対してリアルタイム・データのグラフ分析を実行できます。

キャッシュ

アプリケーション層にデータをキャッシュすることは、必須の開発パターンです。ワークロードのかなりの部分をデータベースから取り除き、問合せのレイテンシを減らすこともできます。しかし、課題がないわけでもありません。現在市場にある現在のソリューションの多くは、キャッシュすべき内容、キャッシュすべき時間、キャッシュからデータを削除する原因、キャッシュ障害が発生した場合の対処方法、データの中間形態、およびその他の多くの決定について余儀なく開発者の責任にされています。これにより、開発者は、中間層キャッシュを管理するための複雑なコードの開発に追われることになります。

Oracle Database 23cでは、True Cacheを導入しています。このソリューションは、Oracle Databaseに対するキャッシュを簡素化します。開発者は、単にディスクレスのTrue Cacheインスタンスを中間層にデプロイすれば、あとはOracleが管理します。Oracle Database 23cでは、「Active Dataguard」テクノロジーを使用して、キャッシュがプライマリ・インスタンスの最新の変更と一貫性があるかどうかを判断し、キャッシュに存在しない場合(キャッシュ・ミス)にデータを取得します。キャッシュを使用するコードを指定することでアプリケーション・コードの変更を最小限に抑え、かつてないほどシンプルにプライマリ・データベース・サーバーとの同期を維持し、回復力のある高パフォーマンス・キャッシュの利点を享受することができます。

その他の多くの開発者の改良

Oracle Database 23cの開発者エクスペリエンスを向上させるために行なった機能強化の一部についてのみ触れました。Microservice SAGA Pattern Support、Lock Free Reservations、Faster jdbc Data Loading、Kafka API for TxEventQ、Oracle JVM JDK11 Support、Improved XML and JSON Text indexingなどの機能をカバーするスペースがありません。その他多数。より包括的な内容については、『Oracle Database 23c新機能ガイド』を参照いただければと思います。

データベース・セキュリティ

Oracle Databaseは、世界で最も安全なデータベースの1つです。世界中の何千ものお客様が、最もミッションクリティカルなデータを保護するために、採用いただいています。ただし、データを保護するだけでなく、データの保護を容易にするなど、私たちにできることは常にあります。これまでのリリースで人気のある機能の1つは、Oracle SQL Firewallです。以前は、別の層でSQLをインターセプトし、承認済のSQLのみを許可し、実行されていました。このアプローチにより、データベースに対する最も一般的なセキュリティ攻撃の1つであるSQLインジェクションが実質的に排除されました。

Oracle Database 23cでは、新しいバージョンのSQL Firewallをデータベースに直接実装しました。データベース・カーネルに直接統合し、より安全なモデルを実現、管理が容易になります。SQL Firewallを使用するために必要な操作は、SQLの取得を開始し、「許可リスト(allow list)」に配置するのに必要なすべてのSQLを網羅することです。この許可リストが作成されたら、SQL Firewallをオンにして、データベースに対して不正なSQLが実行されないようにできます。特定のIPアドレスや特定のアプリケーションに絞ってSQLを実行できるようにするなど、SQL Firewallにルールを追加できます。

SQL Firewallの他に、Oracle Database 23cに新しいDB_DEVELOPER_ROLEを追加しました。Oracle Database 23cでアプリケーションを設計、構築、デプロイおよびメンテナンスするために必要なすべての権限を開発者にまとめて付与します。この管理された権限セットにより、データベースの全体的な攻撃対象領域を縮小します。また、スキーマ・レベルでの権限の付与のサポートも追加されました。この変更は、権限の付与を簡単にするだけでなく、オブジェクトがスキーマに追加されたり、削除される際のスクリプトのメンテナンスも簡略化するためのものです。

GRANT SELECT ANY TABLE ON SCHEMA ORDER_MANAGEMENT;

認証、監査、および暗号化にさらに多くの改善を行いましたが、この短いブログでカバーするには多すぎます。これらはすべて、お客様のデータを保存するために、市場においてこれ以上安全なデータベースはないと私たちが信じているという事実を補強するのに役立っています。

高可用性

ここまで説明してきた印象的な機能は、データベースにアクセスできなければあまり意味がありません。ただし、Oracle Databaseには、最も要求の厳しい領域で最高レベルの可用性を実現する実績があります。Real Application Clusters (RAC)、Data Guard、RMAN、GoldenGate、Shardingなどのテクノロジによって、いつでもデータにアクセスできます。また、インフラストラクチャの破壊的な障害が発生した場合は、すぐにオンラインに戻すことができます。

Oracle Database 23cには、データベースの障害に対する耐障害性をさらに高めるための多くの新しい拡張機能があります。また、コンテナ内で実行されているスタンバイ・プラガブル・データベースを読取り専用でオープンする機能など、要望の多かった機能も追加されています。これにより、Oracle Database 19c Active Data Guardの非コンテナ・データベース環境で行なっていたように、スタンバイ・コンテナへのレポートのオフロードが可能になります。

RACおよびRAC One Nodeでは、ローカル・ローリング・データベース・メンテナンスのサポートも追加されました。これにより、データベースが実行されている物理サーバーと同じ物理サーバー上に、既存のOracle Homeに加えて2番目のOracle Homeが作成されます。次に、データベースの2番目のインスタンスが起動し、ローカルでローリング・パッチ適用操作を実行します。これにより、多数のセッションをサーバー間で移動させることによって発生する可能性のある混乱を緩和することができます。

Oracle RACでの2ステージのローリング・アップデートのサポートも追加されます。以前のリリースでは、一部のデータベース・パッチがローリング方式で適用できませんでした。その結果、コストがかかり、計画しにくい停止が発生する可能性があります。Oracle Database 23cでは、クラスタ内のすべてのノードにパッチが正常に適用された後で、これらの非ローリング・パッチの適用を選択できるようになりました。このアプローチにより、停止する可能性が劇的に減少し、ほぼすべての非ローリング・パッチがローリングされようになります。

その他の拡張機能

Oracle Database 23cには非常に多くの改善点があるため、この短いブログでは時間もスペースも足りません。例えば

  • 問題の迅速な解決に役立つ追加のコンテキストで詳細を提供する一般的なエラー・メッセージの改善
  • フラッシュバック・データ・アーカイブ履歴表をブロックチェーン表にできるようになりました。表に対する記録の改変が不可で、暗号化した署名がされます
  • 表領域を縮小して領域をリカバリする機能
  • 表には最大4096列を含めることが可能に
  • 無制限のデータ・ロードは、表に対する追加のDML操作を実行する前にコミットする必要がありません

その他多数あります。今後数週間にわたり、これらの新機能がOracle Databaseの使用方法にどのように影響するかについて、より深いインサイトを提供するためにブログを公開する予定です。

Oracle Database 23cへのアップグレード

Oracle Database 23cにアップグレードする多くの動機はいろいろありますが、その1つは、5年間のpremier supportと3年間のextended supportです。この長期的なサポートは、Oracle Databaseがこれまでサポートしてきたミッション・クリティカルなワークロードの多くに不可欠です。私たちは、業界で最も信頼性の高いデータベースを提供する責任を真剣に受け止めています。私たちは、データベースの最初のリリースから、Oracleデータベースの最も安定したリリースを提供するために全力を尽くしてきたことを保証するために、テストの実行と問題の修正に数え切れないほどの計算時間を費やしてきました。

Oracle Database 23cにアップグレードするには、現在、Oracle Databaseバージョン19cまたは21cを使用していることを確認する必要があります。以前のバージョンを使用している場合は、まずこれらのバージョンのいずれかにアップグレードする必要があります。または、比較的小さいデータベースまたはアップグレード・ウィンドウが十分に大きい場合は、Oracle Data Pumpを使用して、新しく作成されたOracle Database 23cインスタンスにデータをエクスポートおよびインポートすることもできます。19cまたは21cからアップグレードする場合は、Autoupgrade・ツールを使用することを強くお薦めします。プロセスが大幅に簡素化されます。

まとめ

この重要なリリースで利用可能な多くの機能の一部に注目しました。数百もの新機能の詳細を確認するには、次を参照してください。: 

  • Oracle Live Labs: Oracle Database 23cの機能を試すことができるように、いくつかのワークショップがすでに構築されています。これらのワークショップにさらに追加予定で、この数週間にもいくつか追加します
  • Oracle Database 23c 新機能ガイド: このガイドでは、様々な機能領域に分類されたすべての新機能について包括的に説明します。また、「Oracle Features and Licensing」オンライン・アプリケーションもお試しください。各リリースで何が変わったかをさらに簡単に確認できます。
  • Oracle Database 23c 機能のWebページ: このWebページでは、Oracle Database 23cの主な機能に関する情報と短いビデオを提供します
  • Oracle Database 23c ブログ: このブログに加えて、Oracle Database開発チームのPMおよび開発者が、作業してきた様々な機能について、いくつかのブログをまとめています。以下は、他のOracle Database 23cブログが作成されるときに更新される短いリストです。