GraphQLに対するOracle Databaseのサポート

リレーショナル・データベース・テクノロジの進歩により、GraphQLのメリットがさらに増大しました。Oracle AI Databaseでは、カスタム・リゾルバを使用せずにデータベースを直接問い合せる手段を提供することで、GraphQLの統合がサポートされるようになりました。

Oracle DatabaseでのGraphQL問合せのサポートを通じて、リレーショナル・データベースによって提供されるパフォーマンス、スケーラビリティまたは最適化を犠牲にすることなく、複雑なデータ・オブジェクトを簡単に作成、イントロスペクトおよび問合せできます。リレーショナル構造からの自動的なスキーマ推論により、問合せプロセスが合理化され、GraphQLは確立されたリレーショナル・ストレージ・モデルへのシームレスなアドオンになります。

26ai以降、Oracle AI DatabaseのGraphQL問合せのサポートでは、Oracle AI Databaseが組込みのGraphQLパーサーを介してGraphQLを理解できる表関数も導入されました。

表1-1 GraphQL問合せとOracleでサポートされているGraphQL表関数の比較

  標準のGraphQL問合せ Oracle AI DatabaseでサポートされているGraphQL表関数
問合せの例
query {
  race {
    name
    date
    result {
      finalPosition
      driver {
	name
      }
    }
  }
}
select * from graphql(' 
  race {
    name
    date
    result {
      finalPosition
      driver {
	name
      }
    }
  }
')
出力 このGraphQL問合せでは、すべてのレースのデータを含む1つのJSONドキュメントが生成されます。 Oracle AI DatabaseでサポートされているGraphQL問合せの表関数は、レースごとに1行を作成して返します。
Oracle DatabaseでのGraphQL問合せのサポートには、広範で繰返しの多い手動コーディング・タスクの必要性を排除し、メンテナンスを簡素化し、アプリケーション内の高度なデータ・フローを実現するための次の機能も導入されています:

GraphQL問合せはSQL問合せ内に埋め込まれているため、診断性、パフォーマンス測定およびパフォーマンス最適化に使用される既存のSQLツール(AWR、SQLモニター、SQLトレース、SQLヒントなど)も、Oracle DatabaseでサポートされているGraphQL問合せで使用できます。

これを補完するために、Oracle AI Database 26aiでは、JSONリレーショナル二面性を提供しています。これは、柔軟で開発者が使いやすいJSONドキュメントとしてアクセスしながら、正規化されたリレーショナル表にデータを格納できるパラダイムです。Oracle DatabaseでのGraphQL問合せのサポートでは、二面性ビューを作成できます。このビューは、直感的なGraphQLのような構文を使用して定義され、構造化されたリレーショナル・モデルと最新のアプリケーションのニーズを橋渡しします。二面性ビューを使用すると、リレーショナル・ストレージのパフォーマンスとスケーラビリティのメリットを維持しながら、ビューを簡単に作成でき、複雑なデータ・オブジェクトを問い合せることができます。これらのアプローチでは、リレーショナル・モデルからの自動的なスキーマ推論およびデータベースとのシームレスなGraphQL統合を可能にすることで、問合せおよびデータ操作がまとめて合理化されます。

このマニュアルでは、GraphQLとOracle AI Databaseの統合に関連する最も基本的な情報のみを扱います。JSONリレーショナル二面性ビューの概念をよく理解していて、GraphQL標準に関する簡単な知識を持っていることを前提としています。全体像を把握するために、GraphQLの公式ドキュメントおよび仕様を参照することをお薦めします。JSONリレーショナル二面性ビューの概念を理解するには、『JSONリレーショナル二面性開発者ガイド』を参照してください。Oracle AI DatabaseへのGraphQL統合を示すために、一般的なカー・レースの例が使用されています。