REST データのモデリング
このセクションでは、本製品 がリレーショナルSQL とREST サービスのギャップを埋めるために提供するさまざまなスキームを制御する方法を説明します。CData JDBC Driver for REST には、ネストされたデータを扱うための2つの一般的な管理された方法があります。
- データ構造を解析し、既存の階層に基づいてリレーショナルモデルを構築する。
- 水平および垂直フラット化を使用して、ネストされたエレメントにドリルダウンする。
階層データの解析
デフォルトでは、本製品 はドキュメント内の行を自動的に検出するため、SQL でクエリするために基底のデータの構造を知る必要はありません。DataModel プロパティを設定して、本製品 がどのように行をテーブルにモデル化するかの基礎構成を選択します。
オブジェクトと配列を行にフラット化
データをフラット化するには、オブジェクトと配列という2つのデータ構造に精通しているだけで十分です。JSON では、これらはリテラル構造です。XML では、類似の構造は以下のとおりです。
- Object:同じ階層で繰り返されない親エレメント。
- Array:同じ階層で繰り返すエレメント。
people コレクションの次の例では、各ノードに子エレメントがあるため、maintenance はオブジェクト配列です。
<maintenance>
<date>07-17-2017</date>
<desc>oil change</desc>
</maintenance>
<maintenance>
<date>01-03-2018</date>
<desc>new tires</desc>
</maintenance>
自動スキーマ検出の設定
本製品 は、配列内のオブジェクトのRowScanDepth 数をスキャンすることで、カラムおよびデータ型を検出します。FlattenObjects およびFlattenArrays プロパティを設定して、ネストされたデータをカラムにフラット化する方法を設定します。例については、自動スキーマ検出 を参照してください。
REST へのSQL の実行
フラット化でアクセスできるあらゆるリレーションへは、アドホックなSQL クエリを使ってもアクセスが可能です。本製品 を使用すると、次の機能を使用してネストされたデータをクエリできます。
- 垂直フラット化:ネストされたオブジェクト配列に別々のテーブルとしてアクセスします。
- フリーフォームクエリ:どんなネストされた構造でもデータをフラット化せずにクエリできます。
- XML 関数 およびJSON 関数:クライアント側の集計と変換を実行するために返されたデータを操作します。
スキーマのカスタマイズ
スキーマのカスタマイズ を使用すると、ドキュメントの上に選択されたリレーショナル構造を投射することもできます。これにより、カラム名、データ型、 ドキュメント内の値の位置を選択することができます。
システムカタログ
システムテーブル は設定したスキーマ(カスタムスキーマ、または動的に検出されたスキーマ)を反映しています。Stored Procedures は、本製品 のデータ処理操作において、SELECT、INSERT、UPDATE、またはDELETE としてモデル化できない追加機能を表します。レポートされたストアドプロシージャは、Location で指定されたフォルダ内の.rsb ファイルで定義されています。Location が指定されていない場合は、インストールディレクトリのdb サブフォルダにあります。