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から二面性への移行