データソース構成プロパティ

注釈

現在、Design Studio ではソース構成のオプションを使用できませんが、今後の更新で現在のオプションを拡張して段階的に追加する予定です。

データソース構成プロパティ (ソース構成 とも呼びます) では、サポート対象の操作など、基盤となるソースの特定の特性を指定します。最適化上の理由から、データソースの機能を知ることは重要です。それによって、できる限り多くの処理を Virtual DataPort からデータソースに委任し、応答時間の最適化とネットワークを流れるトラフィックの最小限化を実現できるからです。

注釈

多くの場合、ユーザー側でこれらの設定を編集する必要はありません。広く使用されているデータソースに対しては、Virtual DataPort によって自動的に適切な構成が使用されるからです。

各データソースのプロパティを構成するには、データソースを開いて [Edit]、[Source configuration*] の順にクリックします。

各プロパティにはデフォルト値があります (その値の横に [(default)] と表示されています)。デフォルト値はデータベースによって異なり、各ソースの機能を反映しています。

構成可能なプロパティを以下に示します。

  • Allow FOR UPDATE clause: yes の場合は、 SELECT... FOR UPDATE 句がソースでサポートされています。

  • Allow literal as parameter: yes の場合、このソースを使用することで、ビューを実行するために作成された準備済みステートメントのパラメーターとしてリテラルを指定できることを示します。 no の場合、Virtual DataPort サーバー側でリテラルを使用してクエリを生成します。

  • Delegate all operators: yes の場合、このソースを使用することで、すべての演算子を委任できることを示します。

  • Delegate array literal: yes の場合、このソースを使用することで、配列の複合定数を委任できることを示します。

  • Delegate compound field projection: yes の場合、このソースを使用することで、複合フィールドに対する投影を委任できることを示します。

  • Delegate FETCH clause: yes の場合、クエリの FETCH 句をソースに委任できます。

  • Delegate FETCH as LIMIT clause: yes の場合、クエリの FETCH 句が LIMIT 句としてソースに委任されます。

  • Delegate OFFSET clause: yes の場合、クエリの OFFSET 句をソースに委任できます。

  • Delegate OFFSET clause restriction: クエリでの OFFSET 句の使用に対して、このデータベースに何らかの制限があるかどうかを示します。

    このプロパティで指定できる値は以下のとおりです。

    • NONE: データベースには OFFSET に関して何も制限がありません。

    • FETCH: クエリで FETCH も使用している場合にのみ、データベースで OFFSET がサポートされます。

    • ORDER_BY: クエリで ORDER_BY も使用している場合にのみ、データベースで OFFSET がサポートされます。

    • FETCH_ORDER_BY: クエリで FETCH 句と ORDER_BY 句も使用している場合にのみ、データベースで OFFSET がサポートされます。

    • NO_ORDER_BY: クエリで ORDER_BY を使用していない場合にのみ、データベースで OFFSET がサポートされます。

    • FETCH_NO_ORDER_BY: クエリで FETCH も使用していて、 ORDER_BY を使用していない場合にのみ、データベースで OFFSET がサポートされます。

    このデータベースへのクエリの委任を伴うクエリを実行したときに、これらの制限に抵触する場合、 OFFSET 句はデータベースに委任されず、実行エンジン自身で実行されます。

    Delegate OFFSET clauseno に設定している場合、このプロパティは無視されます。

  • Delegate GROUP BY clause: yes の場合、このソースを使用することで、 GROUP BY 句を委任できることを示します。

  • Delegate HAVING clause: yes の場合、クエリの HAVING 句をソースに委任できることを示します。

  • Delegate INNER JOIN: yes の場合、 INNER JOIN 演算子をソースに委任できることを示します。

  • Delegate INTERSECT: yes の場合、 INTERSECT 演算子をソースに委任できることを示します。

  • Delegate invalid number literals as NULL: yes の場合、ソースに委任された条件のオペランドの型に互換性があることが Virtual DataPort サーバーで確認されます。

    たとえば、ビュー V1int 型の f1 フィールドがあり、ソースではこのフィールドの型が NUMERIC であるとします。

    このプロパティが no の場合、クエリ SELECT * FROM v1 where f1 = '4c' はソースに委任されますが、失敗すると考えられます。

    このプロパティが yes であれば、 f1'4c' に互換性がないことが Virtual DataPort サーバーで検出され、代わりに NULL を使用して SELECT * FROM v1 where f1 = NULL が委任されます。

    この拡張機能は、 =<><><=>=in 、および between の各演算子を使用した条件でのみ機能します。

  • Delegate JOIN: yes の場合、 JOIN 演算子をソースに委任できることを示します。

  • Delegate left function: yes の場合、関数を使用して左辺に記述した条件をソースに委任できることを示します。

  • Delegate left literal: yes の場合、定数を使用して左辺に記述した条件をソースに委任できることを示します。

  • Delegate literal expression: yes の場合、リテラル式をソースに委任できることを示します。

  • Delegate MINUS: yes の場合、 MINUS 演算子をソースに委任できることを示します。

  • Delegate mixed aggregate expression: yes の場合、スカラー関数、リテラル、およびフィールドを使用した集計式をデータベースに委任できることを示します。no の場合、集計関数にはフィールドのみを使用でき、式は使用できません。

  • Delegate natural OUTER JOIN: yes の場合、自然結合の OUTER JOIN 演算子をソースに委任できることを示します。

  • Delegate NOT condition: yes の場合、 NOT 条件をソースに委任できることを示します。

  • Delegate OR condition: yes の場合、 OR 条件をソースに委任できることを示します。

  • Delegate ORDER BY: yes の場合、 ORDER BY 句をソースに委任できることを示します。

  • Delegate projection: yes の場合、投影をソースに委任できることを示します。

  • Delegate register literal: yes の場合、レジスター定数をソースに委任できることを示します。

  • Delegate right field: yes の場合、フィールドを使用して右辺に記述した条件をソースに委任できることを示します。

  • Delegate right function: yes の場合、関数を使用して右辺に記述した条件をソースに委任できることを示します。

  • Delegate right literal: yes の場合、定数を使用して右辺に記述した条件をソースに委任できることを示します。

  • Delegate SELECT DISTINCT: yes の場合、 SELECT 句の DISTINCT 修飾子をソースに委任できることを示します。

  • Delegate selection: yes の場合、条件をソースに委任できることを示します。

  • Delegate subquery: yes の場合、サブクエリがあるクエリをソースで処理できることを示します。

  • Delegate UNION: yes の場合、このソースを使用することで、 UNION 演算子を委任できることを示します。

  • Nested join optimization syntax: ビューの中でネスト結合の右辺にあるデータがこのデータソースから取得される場合に、このプロパティは、データベースに委任されるクエリの特性を部分的に制御します。詳細については、「 ネスト結合 」を参照してください。

  • Supports modifier in aggregate function: yes の場合、集計関数の DISTINCT/ALL 修飾子がソースでサポートされていることを示します。

  • Supports batch inserts: yes の場合、 INSERT リクエストのバッチ単位による処理がデータベースでサポートされていることを示します。Virtual DataPort では、他のデータソースから目的のデータソースにデータを移動する際にバッチ単位で行が挿入されます。データ移動の詳細については、「 クエリの自動簡素化 」を参照してください。

    このプロパティは、このデータソースに送信される INSERT リクエストには影響しません。それらのリクエストはバッチ単位では実行されないからです。

  • Supports branch OUTER JOIN: yes の場合、 LEFT OUTER JOINRIGHT OUTER JOIN がソースでサポートされていることを示します。

  • Supports CLOBs in batch inserts: yes の場合、 CLOB 型の値を使用した INSERT リクエストのバッチ単位処理がデータベースでサポートされていることを示します。

    no の場合、 CLOB 型の値を使用した複数の INSERT リクエストは、1 つの同じトランザクションで 1 つずつ実行されます。Virtual DataPort では、他のデータソースから目的のデータソースにデータを移動する際にバッチ単位で行が挿入されます。データ移動の詳細については、「 クエリの自動簡素化 」を参照してください。

    このプロパティは、このデータソースに送信される INSERT リクエストには影響しません。それらのリクエストはバッチ単位では実行されないからです。

    [Supports batch inserts] が no の場合、このプロパティは無視されます。

  • Supports Eq OUTER JOIN: yes の場合、 OUTER JOIN 演算子をソースに委任できることを示します。

  • Supports explicit CROSS JOIN: yes の場合、明示的な CROSS JOIN 演算子をソースに委任できることを示します。

  • Supports GROUP BY literals as parameters: yes の場合、このソースを使用することで、クエリを実行するために作成された準備済みステートメントのパラメーターとして GROUP BY 句のリテラルを指定できることを示します。 no の場合、Virtual DataPort サーバーではリテラルを使用してクエリが生成されます。

  • Supports ORDER BY expressions: yes の場合、 ORDER BY 句に式を使用したクエリの実行がこのデータベースでサポートされています。

  • Supports right deep n-joins: yes の場合、ソースに委任されるクエリで、すべての ON 条件を末尾に記述した右多段ネスト結合を使用できます。 no の場合、このクエリには、クライアントから Virtual DataPort に送信されるクエリのネスト結合ごとにサブクエリがあります。

  • Supports full Eq OUTER JOIN: yes の場合、このソースを使用することで、完全等価な OUTER JOIN 演算子を委任できることを示します。

  • Supports full NotEq OUTER JOIN: yes の場合、完全非等価な OUTER JOIN 演算子を委任できることを示します。

  • Supports fusing in USING and natural JOIN: yes の場合、自然結合の JOIN を実行するか、 USING 句を使用した JOIN を実行すると、ソースでは同じフィールドがマージされることを示します。

  • Supports JOIN ON condition: yes の場合、 JOIN...ON 句をソースに委任できることを示します。

  • Supports natural JOIN: yes の場合、自然結合の JOIN 句をソースに委任できることを示します。

  • Supports USING JOIN: yes の場合、 USING JOIN 句をソースに委任できることを示します。後述の「例 1」を参照してください。

  • Supports binary ORDER BY collation: yes の場合、ソースでは、バイナリ照合順序を使用して ORDER BY 操作が実行されます。詳細については、「 ソース構成の ORDER BY 関連プロパティ 」を参照してください。

  • Supports PreparedStatement (汎用 アダプターを使用するデータソースでのみ使用可能): yes の場合、データソースでは、準備済みステートメントを使用してクエリが実行されます。 no の場合、データソースでは、通常のステートメントを使用してクエリが実行されます。管理ツールでこのプロパティを no に設定すると、 Allow literal as parameter プロパティは自動的に no に設定されます。通常のステートメントはパラメーター化できないからです。デフォルト値は yes です。

  • Supports ORDER BY collation modifier: yes の場合、クエリでの照合順序修飾子の指定がソースによってサポートされます。詳細については、「 ソース構成の ORDER BY 関連プロパティ 」を参照してください。

  • Delegate binary ORDER BY collation

  • Delegate aggregate functions list: 委任できる集計関数のリスト。

  • Delegate analytic functions list: 委任できる分析関数のリスト。

  • Delegate scalar functions list: 委任できるスカラー関数のリスト。

  • Delegate operators list: 委任できる演算子のリスト。デフォルトのリストには、 =<><<=>>=betweenexistsinis falseis nullis not nullis truelike 、および notin の各演算子が記述されています。

  • Block size: 1 回のランダム I/O 操作でデータソースが読み書きするデータ量を示します。

  • Multi block read count: 1 回の I/O 操作でデータベースが読み込む連続ブロック数を示します。

    Block size と Multi block read count の各パラメーターの値は、コストベースの最適化で使用されます。これらのパラメーターの詳細と使用方法については、「 データソースの I/O パラメーター 」を参照してください。

ソース構成の ORDER BY 関連プロパティ

「text」型フィールドに対する Virtual DataPort の ORDER BY 操作では、「バイナリ」照合順序を使用して結果セットのテキスト値が比較され、並べ替えられます。バイナリ照合順序では、各文字の Unicode 値を使用して文字列が比較されます。

マージ結合を実行できるように Virtual DataPort によって ORDER BY がデータベースにプッシュダウンされた場合、データベースでも同様にバイナリ照合順序を使用して ORDER BY を実行する必要があります。その理由は、バイナリ照合順序で行が並べ替えられていることが実行エンジンで想定されているからです。別の照合順序で並べ替えると、text 型のフィールドが関係する結合条件で、正しい結果が得られないことがあります。

Delegate ORDER BY collation modifier と Delegate binary ORDER BY collation の各プロパティは、Virtual DataPort から ORDER BY 句をどのようにデータベースにプッシュダウンするかを制御します。

注釈

ここでは、以下のプロパティが Virtual DataPort の動作に及ぼす影響について説明します。ただし、それらのデフォルト値の変更が必要になることは ほとんどありません

  1. Supports binary ORDER BY collation: text 型のフィールドに対して ORDER BY を実行する場合、以下の条件のいずれかが成立するデータベースに対して、このプロパティのデフォルト値は yes です。

    1. デフォルトでバイナリ照合順序を使用してデータが並べ替えられる。

    2. 強制的にバイナリ照合順序を使用して ORDER BY を実行できる。

    text 型フィールドを指定した条件による結合を実行エンジンで実行する方法の選択では、クエリで指定したすべてのソースの Supports binary ORDER BY collation プロパティが yes であれば、実行エンジンではマージが使用されます。その場合は、データベースにプッシュダウンするクエリに、実行エンジンによって ORDER BY 句が追加されます。

    クエリで指定したデータソースの少なくとも 1 つで Supports binary ORDER BY collation プロパティが no であれば、結合の実行にはマージが選択されません。マージを選択した場合は、バイナリ照合順序で並べ替えられたデータをデータベースから Virtual DataPort に取得する必要があるからです。

    このプロパティのデフォルト値が no の場合は、それを yes に設定しないでください。デフォルト値が no の場合、そのソースでは、バイナリ照合順序を使用してデータを並べ替えることができません。

  2. Delegate ORDER BY collation modifier: yes の場合、照合順序修飾子を付加した ORDER BY 句がプッシュダウンされます。 no の場合は、修飾子が付加されずにプッシュダウンされます。

    たとえば、デフォルトでは、 NLSSORT 修飾子を付加した ORDER BY <field of type text> 句が Oracle にプッシュダウンされます。以下に例を示します。

    SELECT ...
    FROM ...
    ORDER BY NLSSORT( <field of type text>, 'NLS_SORT = binary') ASC
    

    このプロパティが no の場合、この修飾子が付加されずに ORDER BY がプッシュダウンされます。以下に例を示します。

    SELECT ...
    FROM ...
    ORDER BY column1 ASC, column2 ASC
    

    このプロパティのデフォルト値が yes の場合、それを no に設定すると、このソースからデータを取得するマージ結合によって正しくない結果が得られることが考えられます。マージ結合のアルゴリズムでは、入力データがバイナリ照合順序を使用して並べ替えられていることを想定しているからです。

    このプロパティを no に設定するのは、照合順序修飾子を使用するとクエリのパフォーマンス低下が見られ、さらにこのプロパティが yes の場合に Virtual DataPort での照合順序で得られるデータの並べ替えが、データベースでの照合順序でも同様に得られる場合に限られます。

    このプロパティのデフォルト値が no の場合、それを yes に設定しないでください。デフォルト値が no の場合、そのソースではバイナリ照合順序を使用してデータを並べ替えることができません。

  3. Delegate binary ORDER BY collation: このプロパティにデフォルト値が存在する JDBC データソースの場合、このプロパティを変更できます。ただし、各アダプターに設定されているデフォルトの照合ではバイナリ照合順序が実行されるので、それは変更しないようにします。

    このプロパティにデフォルト値が存在しない場合、このプロパティに値を設定しても何の効果もありません。

これら 3 つのプロパティのデフォルト値は、JDBC データソースのデータベースアダプターによって異なります。

これらのプロパティは、text 型フィールドの ORDER BY を設定したクエリにのみ影響します。他の型の値で並べ替える場合、これらのプロパティは重要ではありません。 longint など、text 型以外の値の並べ替えには互いに異なる方法は存在しないからです。