5 JSONリレーショナル二面性ビューの使用
二面性ビューでサポートされるドキュメントまたはドキュメントの一部を挿入(作成)、更新、削除および問合せることができます。二面性ビューに関する情報をリストできます。
通常、ドキュメント中心のアプリケーションは、SQL/JSONファンクションまたはOracle Database API for MongoDB、Simple 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キー/値データベースなど)に、二面性ビューによってサポートされているドキュメントをレプリケートできます。
参照:
-
二面性ビューのOracle GoldenGate論理レプリケーションの詳細は、Oracle JSONリレーション二面性およびGoldenGateデータ・ストリームを使用したビジネス・オブジェクトのレプリケートおよび特殊データ型の処理- JSON
-
二面性ビューの論理レプリケーションを有効化および無効化するSQL構文については、『Oracle Database SQL言語リファレンス』のALTER JSON RELATIONAL DUALITY VIEWおよびCREATE JSON RELATIONAL DUALITY VIEW
ノート:
特に明示的に示されていないかぎり、次のようになります。
-
ここに示す例は、決して相互に依存するものではありません。特に、それらの間には暗黙的な順序付けはありません。
-
ここでの二面性ビューを使用する例では、「二面性ビューの作成」で定義したビューを使用します。これらのビューは、
UNNEST
を使用して定義されています(例3-1、例3-3および例3-5)。 -
ここでの表を使用する例では、「カーレースの例、表」で定義した表を使用します。
_________________________________________________________
- 二面性ビューへのドキュメント/データの挿入
JSONドキュメントを二面性ビューに直接挿入することも、二面性ビューの基礎となる表にデータを挿入することもできます。例は、これらの可能性を示しています。 - 二面性ビューからのドキュメント/データの削除
JSONドキュメントを二面性ビューから直接削除することも、二面性ビューの基礎となる表からデータを削除することもできます。例は、これらの可能性を示しています。 - 二面性ビューでのドキュメント/データの更新
JSONドキュメントを二面性ビューで直接更新することも、二面性ビューの基礎となる表のデータを更新することもできます。ドキュメントを完全に置き換えてドキュメントを更新することも、一部のフィールドのみを更新することもできます。例は、これらの可能性を示しています。 - 二面性ビューでのオプティミスティックな同時実行性制御の使用
他のセッションで同時に変更されていない場合にのみ、二面性ビューでのオプティミスティック/ロックフリーの同時実行性制御の使用、JSONドキュメントの記述、または更新のコミットを実行できます。 - JSONドキュメントのシステム変更番号(SCN)の使用
システム変更番号(SCN)は、内部の論理的なデータベース・タイムスタンプです。メタデータ・フィールドasof
は、データベースからドキュメントが取得された時点のSCNを記録します。SCNを使用すると、他のデータの読取り時の一貫性を確保できます。 - 二面性ビューのドキュメントに対する操作の最適化
二面性ビューでサポートされているドキュメントに対する操作(具体的には、問合せ)は、自動的に、基になる表データに対する操作としてリライトされます。この最適化には、索引の活用が含まれています。基になるデータの型はすべて認識されているため、暗黙的な実行時型変換は、通常は回避できます。 - 二面性ビューに関する情報の取得
静的データ・ディクショナリ・ビューを使用して、二面性ビュー、その基礎となる表、列およびキー列リンクに関する情報を取得できます。二面性ビューのJSONスキーマの説明を取得することもできます。これには、サポートされるJSONドキュメントの構造およびJSON言語タイプの説明が含まれています。
関連項目:
-
『Oracle Database SQL言語リファレンス』のDROP VIEWに関する項
-
製品ページSimple Oracle Document Access (SODA)およびガイド『Oracle Database Simple Oracle Document Access (SODA)の概要』
-
製品ページMongoDBのためのOracle Database APIおよびガイド『MongoDBのためのOracle Database API』
-
製品ページOracle REST Data Services (ORDS)および『Oracle REST Data Services開発者ガイド』