21.8 JSON-To-Dualityコンバータ: 機能
コンバータは、1つ以上の格納されたドキュメント・セットの固有の構造および型指定をJSONスキーマとして推測します。スキーマを使用して、コンバータはDDLコードを生成し、ドキュメント・セットをサポートするために必要なデータベース・オブジェクト(二面性ビューとその基礎となる表および索引)を作成します。
入力ドキュメント・セットから推測されたJSONスキーマには、JSONドキュメント内のデータの暗黙的に基礎となる関係(表、列およびキー制約)を表すリレーショナル・スキーマが含まれています。
生成されたDDLコードにより、適切な二面性ビュー、基礎となる表、主キー制約、一意キー制約、外部キー制約、索引およびデフォルト値(元のドキュメント・セットをサポートするために必要なすべてのもの)が作成されます。
場合によっては、コンバータにより、元のドキュメント・セットにはない二面性ビュー定義のフィールドおよび列が作成されます。
-
ドキュメント識別子フィールド
_idは、入力ドキュメントにまだ存在しない場合、ドキュメントごとに生成されます。二面性ビューには、そのビューのルート表の識別列(主キー列、アイデンティティ列、一意制約または一意索引がある列)に対応する、最上位の
_idフィールド(ドキュメント識別子)が必要です。コンバータへのドキュメント入力にすでに最上位の_idフィールドがある場合、その関連列はルート表内にあり、その表の識別列として選択されます。 -
ドキュメント処理フィールド
_metadataは、コンテンツ・ハッシュ・バージョン(ETAG)とその最新のシステム変更番号(SCN)を記録するために、ドキュメントごとに生成および保持されます。このフィールドは、ドキュメント・コンテンツ自体(ペイロード)の一部ではありません。 -
生成されるその他のフィールドおよび列の名前には、常に接頭辞
ora$が付きます。
二面性ビュー定義では、その基になる各表の識別列に対して明示的なフィールドが必要であり、これは、新しいフィールドが追加されることがあるもう1つのケースです。
これは、2つの識別列map_course_idおよびmap_student_idを持つ、基礎となるマッピング表mapping_table_course_root_to_student_rootを使用するビューcourseおよびstudentの場合に当てはまります。これらには、コースの表および学生の表(course_rootおよびstudent_root)の識別列(course_idおよびstudent_id)への外部キー参照があります。
マッピング表がビュー定義で使用される場所では、各識別列(map_course_idおよびmap_student_id)が存在し、フィールドが割り当てられている必要があります。これらのフィールドは、ビューでサポートされているドキュメントに存在します。コンバータでは、名前に接頭辞ora$を使用し、残りは列名(キャメルケースに変換され、アンダースコアのセパレータなし)から取得します: ora$mapCourseIdおよびora$mapStudentId。
構成フィールドuseFlexFieldsがtrueの場合、コンバータは作成する二面性ビューの基礎となる表にフレックス列を追加します。各フレックス列の名前はora$<view-name>_flexです。<view-name>は、列が定義される二面性ビューの名前です。「コンバータの使用(デフォルトの動作)」の「GENERATE_SCHEMAからのDDLコード(useFlexFields = true)」を参照してください。(ビュー定義内のフィールド名と間違えられることがありますが、これは列名です。この名前はビューでサポートされているドキュメントに表示されません。)
コンバータを構成するPL/SQLサブプログラムの詳細は、次を参照してください:
親トピック: JSONから二面性への移行