5 JSONリレーショナル二面性ビューの使用

二面性ビューでサポートされるドキュメントまたはドキュメントの一部を挿入(作成)、更新、削除および問合せることができます。二面性ビューに関する情報をリストできます。

通常、ドキュメント中心のアプリケーションは、SQL/JSONファンクションまたはOracle Database API for MongoDBSimple Oracle Document Access (SODA)Oracle REST Data Services (ORDS)などのクライアントAPIを使用して、JSONドキュメントを直接操作します。分析、レポート、機械学習などのデータベース・アプリケーションおよび機能は、SQL、PL/SQL、JavaScriptまたはC (Oracle Call Interface)を使用して同じデータを操作できます。

また、SQLおよびその他のデータベース・コードは、他のリレーショナル・データと同様に、二面性ビューの基礎となるリレーショナル表のデータに直接動作することもできます。これには、変更操作が含まれています。基礎となる表のデータに対する変更は、二面性ビューによって提供されるドキュメントに自動的に反映されます。例5-3に、これを示します。

その逆も同様であるため、ドキュメントまたはドキュメントの基礎となるデータに対する動作では、他方にも自動的に影響を与えます。これには、二面性ビューによって提供されるJSONドキュメントとリレーショナル・データの間の二面性が反映されています。

ドキュメント・ビューの基礎となるに対する操作は、次のように、ビューでサポートされるドキュメントに自動的に影響します:

  • 二面性ビューのルート(上位レベル)表に行の挿入を実行すると、新しいドキュメントがビューに挿入されます。たとえば、driver表に行を挿入すると、ビューdriver_dvにドライバ・ドキュメントが挿入されます。

    ただし、表driverはドライバ・ドキュメントのデータの一部のみを提供するため、その表でサポートされているドキュメント・フィールドのみ、データが移入されるため、ドキュメントの他のフィールドは欠落しているか空です。

  • ルート表からの行の削除を実行すると、ビューから対応するドキュメントが削除されます。

  • ルート表の行を更新すると、対応するドキュメントが更新されます。

    行の挿入と同様に、その表データでサポートされるドキュメント・フィールドのみが更新され、他のフィールドは変更されません。

ノート:

JSONリレーショナル二面性ビューでサポートされるドキュメントまたはその基礎となる表データの更新は、そのデータの内容が変更されていない場合でも、データの一部の行が更新されたとSQLによってレポートされます。これは標準のSQL動作です。更新操作が成功すると、常に、ターゲットとする行が更新されたとレポートされます。これは、更新操作に付随するトリガーまたは行変換演算子が存在する可能性があり、それ自体がデータを変更できるという事実も示しています。

二面性ビュー自体に対する操作には、作成、削除、リスト、およびそれらに関するその他の情報のリストが含まれています。

  • 二面性ビューの作成の例は、「二面性ビューの作成」を参照してください。

  • SQLコマンドDROP VIEWを使用して、任意のビューの削除と同様に既存の二面性ビューを削除できます。

    二面性ビューは独立していますが、通常は共有データがあるドキュメントが含まれています。たとえば、二面性ビューdriver_dvに影響を与えずに二面性ビューteam_dvを削除できます。ただし、二面性ビューは基礎となる表によって異なります。

    注意:

    使用できないビューがレンダリングされるため、二面性ビューの基礎となるは削除しないでください

  • 静的データ・ディクショナリ・ビューを使用して、既存の二面性ビューに関する情報を取得できます。「二面性ビューに関する情報の取得」を参照してください。

もちろん、JSONリレーショナル二面性ビューの基になる表をレプリケートできます。または(さらに)、Oracle GoldenGate論理レプリケーションを使用して、他のOracleデータベースおよびOracle以外のデータベース(ドキュメント・データベースやNoSQLキー/値データベースなど)に、二面性ビューによってサポートされているドキュメントをレプリケートできます。

参照:

ノート:

特に明示的に示されていないかぎり、次のようになります。

  • ここに示す例は、決して相互に依存するものではありません。特に、それらの間には暗黙的な順序付けはありません。

  • ここでの二面性ビューを使用する例では、「二面性ビューの作成」で定義したビューを使用します。これらのビューは、UNNESTを使用して定義されています(例3-1例3-3および例3-5)。

  • ここでの表を使用する例では、「カーレースの例、表」で定義した表を使用します。

_________________________________________________________