9.10. OData V4 translator
タイプ名 「odata4」 によって認識される OData V4 トランスレーターは OData Version 4 データソースを公開し、Data Virtualization Web サービスリソースアダプターを使用して Web サービス呼び出しを作成します。このトランスレーターは Web Services Translator の拡張機能です。OData V4 translator は、古い OData V1-3 ソースとは使用しないでください。古い OData ソースには OData トランスレーター("odata")を使用します。
OData とは
Open Data Protocol(OData) Web プロトコルは、データのロックを解除し、現在のアプリケーションに存在する silo から解放する方法を提供するデータのクエリーおよび更新用です。OData は、HTTP、Atom Publishing Protocol(AtomPub)、JSON などの Web テクノロジーに基づいて適用および構築することで、さまざまなアプリケーション、サービス、ストアからの情報へのアクセスを提供します。OData は、リレーショナルデータベース、ファイルシステム、コンテンツ管理システム、従来の Web サイトなど、さまざまなソースから情報を公開およびアクセスするために使用されます。
Olingo フレームワークからこの仕様を使用し、Data Virtualization は提供された OData エンドポイントから OData V4 CSDL(Conceptual Schema Definition Language)ドキュメントをマッピングし、OData メタデータを Data Virtualization のリレーショナルデータベースに変換します。以下の表は、CSDL ドキュメントの OData V4 translator マッピングの選択を示しています。
Data Virtualization は OData ベースのデータソースのみを使用できますが、すべてのデータソースを OData ベースの Web サービスとして公開できます。詳細は、『 クライアント開発者ガイド』の「 OData サポート 」を参照してください。
OData | リレーショナルデータベースにマッピング |
---|---|
EntitySet | テーブル |
EntityType | 表はこちらを参照してください [1] |
ComplexType | 表は [2] |
FunctionImport | 手順 2: |
ActionImport | 手順 2: |
NavigationProperties | table [4] |
[1] EntityType が EntitySet で EntitySet として公開される場合のみです。[2] 公開された EntitySet で複雑なタイプがプロパティーとして使用される場合のみです。この表は、外部キー [1-to-1] または [1-to-many] の関係のある子テーブルとして設計されています。
return type が EntityType または ComplexType の場合は、手順がテーブルを返すように設計されています。[4] ナビゲーションプロパティーはテーブルとして公開されます。この表は、親と外部キーの関係で作成されます。
すべての CRUD 操作は、OData トランスレーターに送信された SQL に基づいて生成されるエンティティーに適切にマッピングされます。
用途
OData ソースの使用は JDBC トランスレーターに似ています。メタデータのインポートはトランスレーターによってサポートされ、メタデータがソースシステムからインポートされ、リレーショナルデータベース用語で公開されると、EntitySets、Feature Imports、および Action Imports および Action Imports が Data Virtualization システムにローカルにあるかのようにこのソースをクエリーできます。
複雑なサービス用に Data Virtualization DDL を使用して独自のメタデータを定義することは推奨されません。適切な機能を有効にするには、いくつかのエクステンションメタデータプロパティーが必要です。文字列以外のプロパティーでは NATIVE_TYPE
プロパティーが想定されており、完全な EDM タイプ名( Edm.xxx
)を指定する必要があります。
以下は、http://odata.org サイトの TripPin サービスからメタデータサービスを読み取ることができる VDB のサンプルです。
<vdb name="trippin" version="1"> <model name="trippin"> <source name="odata4" translator-name="odata4" connection-jndi-name="java:/tripDS"/> </model> </vdb>
<vdb name="trippin" version="1">
<model name="trippin">
<source name="odata4" translator-name="odata4" connection-jndi-name="java:/tripDS"/>
</model>
</vdb>
Data Virtualization JDBC ドライバーを使用してデプロイした VDB に接続し、以下のように SQL ステートメントを発行します。
SELECT * FROM trippin.People; SELECT * FROM trippin.People WHERE UserName = 'russelwhyte'; SELECT * FROM trippin.People p INNER JOIN trippin.People_Friends pf ON p.UserName = pf.People_UserName; (note that People_UserName is implicitly added by Data Virtualization metadata) EXEC GetNearestAirport(lat, lon) ;
SELECT * FROM trippin.People;
SELECT * FROM trippin.People WHERE UserName = 'russelwhyte';
SELECT * FROM trippin.People p INNER JOIN trippin.People_Friends pf ON p.UserName = pf.People_UserName; (note that People_UserName is implicitly added by Data Virtualization metadata)
EXEC GetNearestAirport(lat, lon) ;
実行プロパティー
デフォルトのプロパティーは、トランスレーターの適切な実行のために調整する必要があります。以下の実行プロパティーは、物理ソース機能に基づいてトランスレーターの機能を拡張するか、制限します。
名前 | 説明 | デフォルト |
---|---|---|
SupportsOdataCount | $count に対応 | true |
SupportsOdataFilter | $filter に対応 | true |
SupportsOdataOrderBy | $orderby に対応 | true |
SupportsOdataSkip | $skip に対応 | true |
SupportsOdataTop | $top に対応 | true |
SupportsUpdates | INSERT/UPDATE/DELETE のサポート | true |
接続する OData サーバーは OData 仕様全体を完全に実装しない可能性があります。サーバーの OData 実装が機能をサポートしていない場合は、「execution properties」を設定して対応する機能をオフにし、Data Virtualization が無効なクエリーをトランスレーターにプッシュしないようにします。
<translator name="odata-override" type="odata"> <property name="SupportsOdataFilter" value="false"/> </translator>
<translator name="odata-override" type="odata">
<property name="SupportsOdataFilter" value="false"/>
</translator>
次に、ソースモデルでトランスレーター名として「odata-override」を使用します。
インポーターのプロパティー
以下の表は、物理ソースからのメタデータのインポート時にトランスレーターの動作を定義するインポータープロパティーを示しています。
名前 | 説明 | デフォルト |
---|---|---|
schemaNamespace | インポートするスキーマの namespace | null |
odata.org で公開される Trippin サービスからテーブルおよびビューのみをインポートするインポーターの設定例
<property name="importer.schemaNamespace" value="Microsoft.OData.SampleService.Models.TripPin"/>
<property name="importer.schemaNamespace" value="Microsoft.OData.SampleService.Models.TripPin"/>
このプロパティーは未定義のままにすることができます。トランスレーターがプロパティーに設定されたインスタンスを検出しない場合は、EntityContainer のデフォルト名を指定します。
ネイティブクエリー: ネイティブまたは直接クエリーの実行は、OData トランスレーターを介してはサポートされません。ただし、Web サービストランスレーターの invokehttp メソッドを使用して REST ベースの呼び出しを実行し、SQLXML を使用して結果を解析できます。