データソース構成プロパティ¶
JDBC データソースの ソース構成 は、基礎となるデータベースの機能を表します。つまり、このデータベースがサポートする SQL 操作や関数、サポートする比較演算子などのリストを格納します。実行エンジンはこの情報を使用して、データベースで実行するクエリを作成します。これは、応答時間を最適化してネットワーク経由のトラフィックを最小限に抑えるために、可能な限り多くの処理をデータソースにプッシュダウンすることが目的です。各 データベースアダプター は、デフォルトの ソース構成 を定義します。デフォルトのソース構成はアダプターごとに異なります。たとえば、Oracle の機能は SQL Server の機能とは異なるためです。
デフォルトのオプションは接続先のデータベースに合わせて調整されるため、データソースのソース構成を変更する必要はほとんどありません。ただし、次のコマンドで変更することができます。
ALTER DATASOURCE JDBC "<data source name>"
SOURCECONFIGURATION (
[ <source configuration property>
[ , <source configuration property> ]* ]
);
このコマンドでは、同じデータベースアダプターを使用するすべてのデータソースのソース構成ではなく、「<data source name>」のソース構成を変更することに注意してください。
以下に例を示します。
ALTER DATASOURCE JDBC ds_jdbc_athena_prod
SOURCECONFIGURATION (
SUPPORTSORDERBYEXPRESSION = false
, DELEGATENATURALOUTERJOIN = false
);
プロパティのデフォルト値を復元するには、 DEFAULT
に設定します。以下に例を示します。
ALTER DATASOURCE JDBC ds_jdbc_athena_prod
SOURCECONFIGURATION (
DELEGATEAGGREGATEFUNCTIONS = DEFAULT
);
以下の表は、JDBC データソースの SOURCECONFIGURATION
句で構成できるプロパティのリストです。
SOURCECONFIGURATION 句のプロパティ |
意味 |
---|---|
ALLOWFORUPDATE |
Allow for UPDATE clause 。 |
ALLOWLITERALASPARAMETER |
Allow literal as parameter 。
|
DELEGATEAGGREGATEFUNCTIONS |
Delegate aggregate functions list 。実行エンジンがこのデータベースに委任する集計関数のカンマ区切りリスト。 |
DELEGATEALLOPERATORS |
Delegate all operators 。 |
DELEGATEANALYTICFUNCTIONSLIST |
Delegate window functions list 。委任可能なウィンドウ関数のリスト。 |
DELEGATEARRAYLITERAL |
Delegate array literal 。 |
DELEGATE_BINARY_ORDERBY_COLLATION |
Delegate binary ORDER BY collation 。 |
DELEGATECOMPOUNDFIELDPROJECTION |
Delegate compound field projection 。 |
DELEGATECOMPOUNDINDEXEDFIELDPROJECTION |
Delegate compound indexed field projection 。 |
DELEGATEEXTENDEDUNIONALL |
Delegate EXTENDED UNION ALL 。 |
DELEGATEFETCH |
Delegate FETCH clause 。 |
DELEGATEGROUPBY |
Delegate GROUP BY clause 。 |
DELEGATEHAVING |
Delegate HAVING clause 。 |
DELEGATEINFORNONLITERALS |
Delegate in operator when includes non -literal arguments 。 |
DELEGATEINNERJOIN |
Delegate INNER JOIN 。 |
DELEGATEINTERSECTION |
Delegate INTERSECT 。 |
DELEGATEINVALIDNUMBERLITERALSASNULL |
Delegate invalid number literals as NULL 。 たとえば、ビュー このプロパティが このプロパティが この拡張機能は、 |
DELEGATEJOIN |
Delegate JOIN 。 |
DELEGATELEFTFUNCTION |
Delegate left function 。 |
DELEGATELEFTLITERAL |
Delegate left literal 。 |
DELEGATELITERALEXPRESSION |
Delegate literal expression 。 |
DELEGATEMINUS |
Delegate MINUS 。 |
DELEGATEMIXEDAGGREGATEEXPRESSION |
Delegate mixed literal expression 。 |
DELEGATENATURALOUTERJOIN |
Delegate natural OUTER JOIN 。 |
DELEGATENOTCONDITION |
Delegate NOT condition 。 |
DELEGATEOFFSET |
Delegate OFFSET clause 。 |
DELEGATE_OFFSET_RESTRICTION |
Delegate OFFSET clause restriction 。クエリでの このプロパティで指定できる値は以下のとおりです。
このデータベースへのクエリの委任を伴うクエリを実行したときに、これらの制限に抵触する場合、 Delegate OFFSET clause を no に設定している場合、このプロパティは無視されます。 |
DELEGATEOPERATORSLIST |
Delegate operators list 。委任可能な演算子のリスト。 デフォルトのリストには、演算子 |
DELEGATEORCONDITION |
Delegate OR condition 。 |
DELEGATEORDERBY |
Delegate ORDER BY 。 |
DELEGATE_ORDERBY_COLLATION_MODIFIER |
Delegate ORDER BY collation modifier 。 詳細については、以下の「 ソース構成の ORDER BY 関連プロパティ 」を参照してください。 |
DELEGATEPROJECTION |
Delegate projection 。 |
DELEGATEPROJECTSUBQUERY |
Delegate SELECT subquery 。 |
DELEGATEREGISTERLITERAL |
Delegate register literal 。 |
DELEGATERIGHTFIELD |
Delegate right field 。 |
DELEGATERIGHTFUNCTION |
Delegate right function 。 |
DELEGATERIGHTLITERAL |
Delegate right literal 。 |
DELEGATESCALARFUNCTIONS |
Delegate scalar functions list 。 実行エンジンがデータベースに委任するスカラー関数のリスト。 |
DELEGATESELECTDISTINCT |
Delegate SELECT DISTINCT 。 |
DELEGATESELECTION |
Delegate selection 。 |
DELEGATESUBQUERY |
Delegate subquery 。 |
DELEGATEUNION |
Delegate UNION 。 |
DELEGATEUNIONALL |
Delegate UNION ALL 。 |
DELEGATEUNIONDISCTINCT |
Delegate UNION DISTINCT 。 |
DELEGATEWHERESUBQUERY |
Delegate WHERE subquery 。 |
NESTEDJOINWITHBLOCKSSTRATEGY |
Nested join optimization syntax 。このプロパティは、ネスト結合の右側のビューのデータがこのデータソースから取得される場合に、実行エンジンがどのようにクエリを委任するかを制御します。詳細については、「 ネスト結合 」のセクションを参照してください。 |
SUPPORTSAGGREGATEFUNCTIONSOPTIONS |
Supports modifier in aggregate function 。 |
SUPPORTSBATCHINSERT |
Supports batch inserts 。 このプロパティは、このデータソースへの |
SUPPORTSBRANCHOUTERJOIN |
Supports branch OUTER JOIN 。 |
SUPPORTSCLOBINBATCH |
Supports CLOBs in batch inserts 。
Virtual DataPort は、他のデータソースからこのデータソースにデータを移動するときに、行をバッチ単位で挿入します。データ移動の詳細については、「 クエリの自動簡素化 」のセクションを参照してください。 このプロパティは、このデータソースに送信される Supports batch inserts が |
SUPPORTSCOMPARISONDIFFERENTTYPES |
Supports comparisons between different data types 。 |
SUPPORTSEQOUTERJOINOPERATOR |
Supports Eq OUTER JOIN 。 |
SUPPORTSEVALUATELITERALFUNCTIONS |
Supports functions with only literal parameters 。 |
SUPPORTSEXPLICITCROSSJOIN |
Supports explicit CROSS JOIN 。 |
SUPPORTSFULLEQOUTERJOIN |
Supports full Eq OUTER JOIN 。 |
SUPPORTSFULLNOTEQOUTERJOIN |
Supports full NotEq OUTER JOIN 。 |
SUPPORTSFUSINGINUSINGANDNATURALJOIN |
Supports fusing in USING and natural JOIN 。 |
SUPPORTSGROUPBYLITERALASPARAMETER |
Supports GROUP BY literals as parameters 。 |
SUPPORTSJOINONCONDITION |
Supports JOIN ON Condition 。 |
SUPPORTSJOINPARENTHESIS |
Supports parenthesis in n-joins 。 |
SUPPORTSNATURALJOIN |
Supports NATURAL JOIN 。 |
SUPPORTS_ORDERBY_BINARY_COLLATION |
Supports binary ORDER BY collation 。 |
SUPPORTSORDERBYEXPRESSION |
Supports ORDER BY expressions 。 |
SUPPORTSRIGHTDEEPJOIN |
Supports right deep n-joins 。 |
SUPPORTSPREPAREDSTATEMENT |
Supports prepared statements (データベースアダプター Generic を使用する JDBC データソースでのみ使用可能)。
デフォルト値: |
SUPPORTSUSINGJOIN |
Supports USING JOIN 。yes の場合、 |
ソース構成の 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 の動作に及ぼす影響について説明します。ただし、それらのデフォルト値の変更が必要になることは ほとんどありません 。
Supports binary ORDER BY collation (
SUPPORTS_ORDERBY_BINARY_COLLATION
): text 型のフィールドに対して ORDER BY を実行する場合、以下の条件のいずれかが成立するデータベースに対して、このプロパティのデフォルト値は yes です。デフォルトでバイナリ照合順序を使用してデータが並べ替えられる。
強制的にバイナリ照合順序を使用して ORDER BY を実行できる。
text 型フィールドを指定した条件による結合を実行エンジンで実行する方法の選択では、クエリで指定したすべてのソースの Supports binary ORDER BY collation プロパティが yes であれば、実行エンジンではマージが使用されます。その場合は、データベースにプッシュダウンするクエリに、実行エンジンによって
ORDER BY
句が追加されます。クエリで指定したデータソースの少なくとも 1 つで Supports binary ORDER BY collation プロパティが no であれば、結合の実行にはマージが選択されませんマージを選択した場合は、バイナリ照合順序で並べ替えられたデータをデータベースから Virtual DataPort に取得する必要があるからです。
このプロパティのデフォルト値が no の場合は、それを yes に設定しないでください。デフォルト値が no の場合、そのソースではバイナリ照合順序を使用してデータを並べ替えることができません。
Delegate ORDER BY collation modifier (
DELEGATE_ORDERBY_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 の場合、そのソースではバイナリ照合順序を使用してデータを並べ替えることができません。
Delegate binary ORDER BY collation (
DELEGATE_BINARY_ORDERBY_COLLATION
): このプロパティにデフォルト値が存在する JDBC データソースの場合、このプロパティを変更できます。ただし、各アダプターに設定されているデフォルトの照合ではバイナリ照合順序が実行されるので、それは変更しないようにします。このプロパティにデフォルト値が存在しない場合、このプロパティに値を設定しても何の効果もありません。
これら 3 つのプロパティのデフォルト値は、JDBC データソースのデータベースアダプターによって異なります。
これらのプロパティは、text 型フィールドの ORDER BY
を設定したクエリにのみ影響します。他の型の値で並べ替える場合、これらのプロパティは重要ではありません。 long
や int
など、text 型以外の値の並べ替えには互いに異なる方法は存在しないからです。