検索メソッド、構成プロパティ、およびロケール¶
データベースとは異なり、SOAP Web サービスや REST API などの一部のソースでは、データに対してクエリを実行できません。代わりにクエリ機能が制限されたインターフェイスが用意されています。必須パラメータを持つ REST API の操作がその一例です。Virtual DataPort は、 検索メソッド を使用してソースのクエリ機能をモデル化できます。
ビューの [Search methods] タブ ([Options]) には以下の情報が表示されます。
ロケール構成 (i18n)。基本ビューで変更できますが、派生ビューでは変更できません (下記の「 ロケール構成 」を参照)。
ビューの検索メソッド、および必須フィールドの有無。
JDBC の基本ビューでは、 代替ソース (下記の「 代替ソース 」を参照) を定義できます。
代替ソース¶
データベースのテーブルのデータを他のデータベースに複製する場合は、同じデータの配置先であるデータベースが示されるように、この基本ビューを構成する必要があります。
基本ビューのデータの複製先を定義することで、その基本ビューが関係するクエリのパフォーマンスが向上する理由の詳細については、「 複数のソースにデータが複製されている条件下での最適なソースの選択 」を参照してください。
この機能は、JDBC の基本ビューの場合にのみ使用可能です。
同じ基本ビューに追加ソースを定義するには以下の手順に従います。
この基本ビューのテーブルの複製先データベースごとに JDBC データソースを作成します。各データソースは、それらのデータベースのいずれかを参照する必要があります。それらのデータベースを参照するデータソースが存在する場合は、データソースを再作成する必要はありません。
ビューの [Options] ダイアログの [Search methods] タブに移動します。
[Alternative wrappers] の横にある をクリックします。
[Add Alternative Source] ウィザードの [JDBC data source database] リストで、代替データソースの 1 つの作成先であるデータベースを選択します。
[JDBC data source] リストで、目的のテーブルが存在するデータベースを参照するデータソースを選択します。
その下には、このデータソースのスキーマのツリーが表示されています。このダイアログで、現在編集している基本ビューのデータの複製が保存されているテーブルまたはビューを選択します。このツリーで選択できるテーブルまたはビューは 1 つのみ です。
[Create selected] をクリックします。以下のようなダイアログが表示されます。
このダイアログでは、基本ビューのフィールドとデータベースのテーブルのフィールドとのマッピングを定義できます。代替ソースのテーブルのフィールド名と基本ビューのフィールド名が異なる場合に、このマッピング機能が効果的です。
基本ビューのフィールド名とテーブルのフィールド名が同じであれば、基本ビューでは自動的にそれらのフィールドが関連付けされます。
[Ok] をクリックすると、[Search methods] タブの [Alternative wrappers] に新しいエントリが表示されます。
この基本ビューのテーブルの複製が存在するデータベースごとに、ここまでの手順を繰り返します。
代替ラッパーごとに、その i18n を定義できます。この定義によってタイムスタンプ値の扱いが変化しますが、ほとんどの状況でデフォルト値 ("DEFAULT") が適切です。
ビュー構成プロパティ¶
ラッパーソース構成 とも呼ばれるビュー構成プロパティを使用すると、基盤となるデータソースに固有の特性を指定できます。このような特性として、分散トランザクションのサポートや挿入操作の可否などがあります。
ここでは、基盤となるデータソースのタイプに応じた、基本ビューの構成可能なプロパティのリストを提供します。
データソースの構成プロパティについては、「 データソース構成プロパティ 」を参照してください。
注釈
通常、これらのプロパティを編集する必要はありません。頻繁に使用するデータソースの場合、それに適した構成が Virtual DataPort で自動的に使用されるからです。
基本ビューのプロパティを構成するには、そのビューの [Options] ダイアログを開いて [Search methods] タブをクリックします。つづいて、このダイアログの検索メソッドの下にある [wrapper source configuration] をクリックします (必要に応じてスクロールバーを使用します)。構成可能なプロパティは以下のとおりです。
Allow insert (JDBC および ODBC の基本ビューで構成可能): [yes] の場合、基盤となるデータソースが
INSERT
操作をサポートすることを示します。[no] の場合、このビューに対するINSERT
操作は拒否されます。Allow delete (JDBC および ODBC の基本ビューで構成可能): [yes] の場合、基盤となるデータソースが
DELETE
操作をサポートすることを示します。[no] の場合、このビューに対するDELETE
操作は拒否されます。Allow update (JDBC および ODBC の基本ビューで構成可能): [yes] の場合、基盤となるデータソースが
UPDATE
操作をサポートすることを示します。[no] の場合、このビューに対するUPDATE
操作は拒否されます。Delegate SQL sentence as subquery (JDBC の基本ビューで構成可能): [yes] (デフォルト値) を指定していて、基本ビューを SQL クエリから作成している場合、Virtual DataPort から、基本ビューの SQL クエリを
FROM
句のサブクエリとして実行時に委任できます。これにより、データベースに委任できる操作が多くなります。たとえば、以下の SQL クエリから
customer_info
を名前とする JDBC 基本ビューを作成したとします。SELECT id, name FROM customer WHERE id = function_not_supported_by_vdp(name, address)
Virtual DataPort で以下のクエリを実行します。
SELECT COUNT(*) FROM customer_info GROUP BY name
このプロパティを [no] に設定していると、Virtual DataPort によって、データベースで
customer_info
ビューに対する SQL クエリが実行され、データベースから得た結果に対してGROUP BY
操作とCOUNT
関数が実行されます。このプロパティを [yes] に設定していると、基本ビューの SQL クエリをサブクエリに配置することによって、クエリ全体をデータベースに委任できます。
SELECT COUNT(*) FROM ( SELECT id, name FROM customer WHERE id = function_not_supported_by_vdp( name, address ) ) GROUP BY name
このシナリオでは、Virtual DataPort で
GROUP BY
とCOUNT
を処理する必要がないので、データベースと Virtual DataPort 間のトラフィック量が減少します。このプロパティを [yes] に設定していても、以下のシナリオのように、クエリ全体をデータベースで実行できないことがあります。
Virtual DataPort で実行されるクエリで、データベースでサポートされていない関数を使用している場合。
トークン
@WHEREEXPRESSION
を使用している SQL ステートメントはサブクエリとして 委任されません 。以下の条件がすべて満たされる場合は、ネスト化結合をデータベースに委任できません。
SQL クエリから作成した基本ビューを結合の右辺で使用している。
その基本ビューの SQL クエリで補間変数を使用している。
その補間変数の値を、結合の左辺のクエリから取得している。
注釈
SQL クエリをサブクエリとして委任できない場合、このプロパティを [no] に設定します。たとえば、クエリで以下のような「共通テーブル式」を使用している状況が該当します。
WITH cte AS (SELECT * FROM VIEW) SELECT * FROM cte
Supports distributed transactions (JDBC および ODBC の基本ビューで構成可能): [yes] の場合、基盤となるデータソースが XA 分散トランザクションで一定の処理ができることを示します。
Fields by which the data is sorted in the source (カスタム基本ビューを除くすべての基本ビューで構成可能): このプロパティは、データの並べ替えで基準となるフィールドを示します。このプロパティの構文は
<field name> { ASC | DESC } [, <field name> { ASC | DESC }]*
です。たとえば、
field 1 DESC
と指定します。Web サービスの基本ビューに
F1
フィールドとF2
フィールドがあるとします。この Web サービスにクエリを実行した結果は、まずF1
フィールドの昇順、次にF2
の降順で並べ替えられていることがわかっています。このプロパティをF1 ASC, F2 DESC
と設定することで、Virtual DataPort が結果の順序を認識して、最も効率的な結合アルゴリズムの選択などの最適化を実行できます。詳細については、「 マージ結合 」を参照してください。Delegate operators list (SAP に接続する多次元基本ビューおよび Web サービス基本ビューで構成可能): このプロパティは、データソースに委任できる演算子のリストを指定します。Virtual DataPort では、このリストを使用して処理の一部をソースに委任することによって、クエリプランを最適化できます。リレーショナルデータベースに対しては、Virtual DataPort サーバーでこのアクションが自動的に実行されますが、他のタイプのソースからはそのメタデータに関するこの情報が提供されません。
ロケール構成¶
一部のタイプのソースで基本ビューのロケール構成 (i18n) を使用してデータを正しく取得します。
基本ビューのロケール構成を変更するには、そのビューの [Options] ダイアログを開いて [Search methods] タブをクリックし、適切な i18n を選択します。
派生ビューの i18n は変更できません。
日付値を返すクエリに対するこの設定の影響については、「 デフォルトロケールの構成 」を参照してください。