4 GraphQLを使用したJSONリレーショナル二面性ビューの作成

Oracle AI Database 26aiのJSONリレーショナル二面性ビューは、複製することなく階層JSONドキュメントまたは従来のSQL表として、同じ基礎となるリレーショナル・データにアクセスおよび操作できるようにする高度な機能です。

リレーショナル・モデルとドキュメント・モデルのギャップを埋めることで、二面性ビューは、アプリケーション開発者にJSONの柔軟性と、リレーショナル・モデルの一貫性、効率性および正規化のメリットを提供します。二面性ビューでは、データは常に1回のみリレーショナル表に格納されますが、アプリケーションが必要とする任意の形式でデータを表示および操作できます。データベース・エンジンは、表および列をネストしたJSON構造に自動的にマップします。JSONビューまたはSQLを介して行われた変更はすべて即座に同期され、データへのアクセス方法に関係なく、単一の最新の信頼できるソースが確保されます。

Oracle AI Databaseは、簡潔なGraphQLベースの構文を使用して、JSONリレーショナル二面性ビューを定義する最新の方法を提供します。このアプローチにより、開発者は、ネストされたフィールド、別名、ディレクティブなどの使い慣れたGraphQLの概念を活用して、リレーショナル・データをデータベース内で階層的なJSONドキュメントとして直接描写する方法を表現できます。データベースでは、外部キーから結合および関係を自動的に推測するため、複雑な副問合せまたは結合宣言は必要ありません。また、@insert、@update、@delete、@nocheckなどのGraphQLディレクティブを使用すると、JSON階層の各レベルでデータを操作および検証する方法をきめ細かく制御できます。この構文を採用することで、関係の整合性とJSONの柔軟性の両方を最大限に活用でき、データやロジックを複製することなく、SQLおよびGraphQL APIを通じてシームレスなアクセスと更新が可能になります。この機能により、ドキュメント・スタイルのビューとGraphQLベースのアプリケーションの統合が合理化され、GraphQL環境を離れることなく、リレーショナル・データを階層JSONドキュメントとして定義および公開できます。

「カー・レース・データセットの設定」team表について考えてみます。この表は、次の構文を使用して作成されました:
CREATE TABLE team
  (team_id    INTEGER PRIMARY KEY,
   name       VARCHAR2(255) NOT NULL UNIQUE,
   points     INTEGER NOT NULL);
二面性ビューは、Oracle DatabaseのGraphQLサポートの構文を使用して作成できます:
CREATE JSON RELATIONAL DUALITY VIEW team_dv AS
  team @insert @update @delete
    {_id    : team_id,
     name   : name,
     points : points,
     driver : driver @insert @update
       [ {driverId : driver_id,
          name     : name,
          points   : points @nocheck} ]};

この例では、JSONドキュメントをサポートする二面性ビューを作成します。teamオブジェクトにはdriverフィールドが含まれており、その値はチームのドライバを指定するネストされたオブジェクトの配列です:

{"_id" : 301, "name" : "Red Bull", "points" : 0, "driver" : [...]}

ノート:

JSONリレーショナル二面性ビューの作成の詳細な例は、GraphQLを使用したカー・レース・二面性ビューの作成を参照してください。SQL文を使用して二面性ビューを作成することもできます。詳細は、SQLを使用したカー・レース二面性ビューの作成を参照してください。