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

構成フィールドuseFlexFieldstrueの場合、コンバータは作成する二面性ビューの基礎となる表にフレックス列を追加します。各フレックス列の名前はora$<view-name>_flexです。<view-name>は、列が定義される二面性ビューの名前です。「コンバータの使用(デフォルトの動作)」「GENERATE_SCHEMAからのDDLコード(useFlexFields = true)」を参照してください。(ビュー定義内のフィールド名と間違えられることがありますが、これは列名です。この名前はビューでサポートされているドキュメントに表示されません。)

コンバータを構成するPL/SQLサブプログラムの詳細は、次を参照してください:

JSONから二面性への移行について