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);
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を使用したカー・レース二面性ビューの作成を参照してください。