@FLEXディレクティブ

Oracleの@flex GraphQLディレクティブは、通常、JSONデータ型の列をフレックス列として指定するために使用されます。@flexディレクティブは、JSONリレーショナル二面性ビューで使用され、GraphQL表関数ではサポートされていません。

これにより、表の通常の事前定義済列だけでなく、フレックス列のJSONデータに存在する追加の動的フィールドも公開されます。フレックス列内のフィールドは展開され、結果のJSONドキュメントに含められるため、データ・モデルの柔軟性と拡張性が向上します。

列が@flexでマークされている場合、JSONフレックス列に格納されているキーと値のペアは、二面性ビューによって生成される各ドキュメントの一部になります。これは、進展する属性または変化する属性がレコードに関連付けられていて、変更ごとにデータベース・スキーマを更新しない場合に特に役立ちます。

次のように構造化されたDRIVER表があるとします:

説明
driver_id NUMBER 一意のドライバ識別子
name VARCHAR2 ドライバ名
extras JSON 柔軟な追加フィールドのためのJSON列
たとえば、データのextras列に、JSONにキーと値のペアとして格納された、出生地やスポンサなどの動的属性が含まれているとします。サンプル行は次のようになります:
  • driver_id: 101
  • name: "Lando Norris"
  • extras: { "birthplace": "Bristol", "sponsor": "Team X" }

OracleでGraphQLを使用する二面性ビューは次のようになります:

driver {
  driverID: driver_id
  name
  extras @flex
}
Oracleは、extrasフレックス列のすべてのフィールドを結果のJSON出力に自動的に含めます:

{                                                                              
  "driverId": 101,                                                               
  "name": "Lando Norris",                                             
  "birthplace": "Bristol",                                                         
  "sponsor": "Team X"
 }

ノート:

birthplaceおよびsponsorは、extras列から直接取得され、@flexディレクティブの使用によって動的に含められます。

JSONリレーショナル二面性ビューのコンテキストでのこのディレクティブの詳細は、基本を超えたフレックス列を参照してください。