9.9. OData トランスレーター
タイプ名 「odata」 によって認識される OData トランスレーターは OData V2 および V3 データソースを公開し、Data Virtualization Web サービスリソースアダプターを使用して Web サービス呼び出しを作成します。このトランスレーターは、Web サービストランスレーター の拡張です。
OData とは
Open Data Protocol(OData) の Web プロトコルは、データのロックを解除し、現在のアプリケーションに存在する silo から解放する方法を提供するデータのクエリーおよび更新を行います。OData は、さまざまなアプリケーション、サービス、ストアから情報にアクセスするために、HTTP、Atom Publishing Protocol(AtomPub)、JSON などの Web テクノロジーに基づいて適用および構築することでこれを行います。OData は、リレーショナルデータベース、ファイルシステム、コンテンツ管理システム、従来の Web サイトなど、さまざまなソースから情報を公開およびアクセスするために使用されます。
OData4J フレームワークのヘルプとともに OASIS グループからこの仕様を使用することで、Data Virtualization は OData エンティティーをリレーショナルデータベースにマップします。Data Virtualization は、提供された OData エンドポイントから CSDL(Conceual Schema Definition Language)を読み取り、OData スキーマをリレーショナルデータベースに変換することができます。以下の表は、CSDL ドキュメントの OData トランスレーターのマッピングの選択を示しています。
OData | リレーショナルデータベースにマッピング |
---|---|
EntitySet | テーブル |
FunctionImport | 手順 |
AssociationSet | テーブル上の外部キー* |
ComplexType | ignored** |
多対多の関連付けにより、リンクテーブルが選択できませんが、結合の目的で使用することができます。
- 関数で使用されると、暗黙的なテーブルが公開されます。埋め込みテーブルを定義するために使用されると、すべての列がインラインになります。
すべての CRUD 操作は、OData トランスレーターに送信された SQL に基づいて生成されるエンティティーに適切にマッピングされます。
- 用途
OData ソースの使用状況は JDBC トランスレーターと類似しています。メタデータのインポートはトランスレーターによって提供され、メタデータがソースシステムからインポートされ、リレーショナルデータベース用語で公開されると、このソースは EntitySets および Function Imports が Data Virtualization システムにローカルでいるかのようにクエリーできます。
名前 | 説明 | デフォルト |
---|---|---|
DatabaseTimeZone | データベースのタイムゾーン。date、time、または timestamp の値を取得する場合に使用されます。 | システムのデフォルトタイムゾーン |
SupportsOdataCount |
システムクエリーでの | true |
SupportsOdataFilter |
システムクエリーでの | true |
SupportsOdataOrderBy |
システムクエリーで | true |
SupportsOdataSkip |
システムクエリーでの | true |
SupportsOdataTop |
システムクエリーでの | true |
名前 | 説明 | デフォルト |
---|---|---|
schemaNamespace | インポートするスキーマの namespace。 | null |
entityContainer | インポートするエンティティーコンテナー名。 | デフォルトのコンテナー |
例: NetflixCatalog からテーブルおよびビューのみをインポートする Importer 設定
<property name="importer.schemaNamespace" value="System.Data.Objects"/> <property name="importer.entityContainer" value="NetflixCatalog"/>
<property name="importer.schemaNamespace" value="System.Data.Objects"/>
<property name="importer.entityContainer" value="NetflixCatalog"/>
接続する OData サーバーは OData 仕様全体を完全に実装しない可能性があります。サーバーの OData 実装が機能をサポートしていない場合は、「execution properties」を設定して対応する機能をオフにし、Data Virtualization が無効なクエリーをトランスレーターにプッシュしないようにします。
たとえば、$filter
をオフにするには、以下のステートメントを仮想データベースの DDL に追加します。
CREATE SERVER odata FOREIGN DATA WRAPPER "odata-override" OPTIONS ("SupportOdataFilter" 'false');
CREATE SERVER odata FOREIGN DATA WRAPPER "odata-override" OPTIONS ("SupportOdataFilter" 'false');
OData のトランスレーターはネイティブまたは直接クエリーの実行を実行できません。ただし、Web サービストランスレーターの invokehttp メソッドを使用して REST ベースの呼び出しを実行し、SQLXML を使用して結果を解析できます。
Data Virtualization は OData ベースのデータソースのみを使用できますが、すべてのデータソースを OData ベースの Web サービスとして公開することもできます。
OData サーバーの設定に関する詳細は、『 Client Developer's Guide 』の「 OData support 」を参照してください。