SQL ELTの最適化
Oraclerソースからデータの読み取りを行って、データを変換し、ターゲットにデータの書き込みを行う場合に、SQL ELTの最適化を設定して、トランスフォーメーションロジックをソースまたはターゲットデータベースシステムにプッシュすることができます。ソースとターゲットのデータベースが同じである場合は、完全なSQL ELTの最適化を設定するとパフォーマンスを向上させることができます。
SQL ELTの最適化の適用時に、Secure Agentはトランスフォーメーションロジックをデータベースにプッシュします。Secure AgentはトランスフォーメーションロジックをSQLクエリに変換し、そのSQLクエリをデータベースに送信します。データベースでは、そのSQLクエリを実行してトランスフォーメーションを処理します。
SQL ELTの最適化により、データベースでのトランスフォーメーションロジックの処理がSecure Agentよりも高速になるため、マッピングのパフォーマンスが向上します。また、Secure Agentでは、データベースから読み取るデータを削減します。
Secure Agentがデータベースにプッシュするトランスフォーメーションロジックの量は、データベース、トランスフォーメーションロジック、およびマッピングタスクによって決まります。Secure Agentでは、データベースにプッシュできないすべてのトランスフォーメーションロジックが処理されます。
SQL ELTの最適化をマッピングに設定すると、Secure Agentは、ソースからターゲットまで、またはソースデータベースにプッシュできないダウンストリームトランスフォーメーションに達するまで、最適化されたマッピングの分析を行います。Secure Agentでは、トランスフォーメーションロジックがプッシュダウンされたソースごとにSELECT文を生成して実行します。次に、データ統合サービスはこのSQLクエリの結果が読み込み、マッピングの残りのトランスフォーメーションを処理します。
注: データベースにトランスフォーメーションロジックをプッシュする場合は、クエリを高速処理するための十分なリソースをデータベースに確保してください。そうしないと、パフォーマンスが低下することがあります。
詳細モードのマッピングに対してSQL ELTの最適化を設定することはできません。
Secure Agentでは、次のトランスフォーメーションロジックをOracleソースまたはターゲットにプッシュすることができます。
トランスフォーメーション | サポートされているSQL ELTの最適化のタイプ |
---|
Aggregator | ソース、完全 |
Expression | ソース、完全 |
フィルタ | ソース、完全 |
Joiner | ソース、完全 |
Sorter | ソース、完全 |
Union | ソース、完全 |
Router | Full |
完全なSQL ELTの最適化
完全なSQL ELTの最適化の適用時に、Secure Agentはマッピングのすべてのトランスフォーメーションロジックをターゲットデータベースにプッシュします。SQL ELTの最適化セクションで完全なSQL ELTの最適化を設定できます。
完全なSQL ELTの最適化は、ソースとターゲットが同じ接続にある場合に適しています。例えば、マッピングにOracleソースとOracleターゲットが含まれている場合は、完全なSQL ELTの最適化を設定して、処理するすべてのトランスフォーメーションロジックをOracleソースデータベースからOracleターゲットデータベースにプッシュします。
ソースSQL ELTの最適化
ソースSQL ELTの最適化の適用時に、Secure Agentは、ソースからターゲットまで、またはソースデータベースにプッシュできないダウンストリームトランスフォーメーションに達するまで、最適化されたマッピングの分析を行います。
Secure Agentでは、データベースにプッシュできるトランスフォーメーションごとのトランスフォーメーションロジックに基づいて、SELECT文が生成、実行されます。次に、Secure AgentではこのSQLクエリの結果が読み込まれ、残りのトランスフォーメーションが処理されます。
ソースとターゲットが異なるデータベースに存在している場合は、ソースSQL ELTの最適化を使用するようにマッピングを設定できます。例えば、マッピングにOracleソースとMicrosoft SQL Serverターゲットが含まれている場合は、ソースSQL ELTの最適化を設定して、処理する一部のトランスフォーメーションロジックをOracleソースにプッシュすることができます。
SQL ELTの最適化の関数
SQL ELTの最適化を使用した場合、Secure Agentは同等の関数を特定することでトランスフォーメーションの式を変換し、その式をデータベース内のプロセスにプッシュダウンします。データベースに対応する関数が存在しない場合、Secure Agentはトランスフォーメーションロジックを処理します。
次の表に、Oracleで使用できるSQL ELTの最適化の関数とそのサマリを示します。
関数 | SQL ELTの最適化のタイプ |
---|
ABS() | ソース、完全 |
AVG() | ソース、完全 |
COS() | ソース、完全 |
COUNT() | ソース、完全 |
DATE_COMPARE() | ソース、完全 |
DECODE() | ソース、完全 |
EXP() | ソース、完全 |
IIF() | ソース、完全 |
IN() | ソース、完全 |
ISNULL() | ソース、完全 |
LOWER() | ソース、完全 |
MAX() | ソース、完全 |
MIN() | ソース、完全 |
POWER() | ソース、完全 |
SIN() | ソース、完全 |
SQRT() | ソース、完全 |
SUM() | ソース、完全 |
TAN() | ソース、完全 |
UPPER() | ソース、完全 |
式トランスフォーメーションでサポートされている関数
式トランスフォーメーションを使用してSQL ELTの最適化を設定すると、Secure Agentは、設定された式トランスフォーメーションをOracleにプッシュしようとします。
次の表に、Oracleの式トランスフォーメーションで使用できるSQL ELTの最適化の関数とそのサマリを示します。
関数 | SQL ELTの最適化のタイプ |
---|
ADD_TO_DATE() | 完全 |
CEIL() | 完全 |
CONCAT() | 完全 |
COSH() | 完全 |
DATE_COMPARE() | 完全 |
FLOOR() | 完全 |
GET_DATE_PART() | 完全 |
INSTR() | 完全 |
LENGTH() | 完全 |
LOG() | 完全 |
LTRIM() | 完全 |
MOD() | 完全 |
ROUND(NUMBER) | 完全 |
RTRIM() | 完全 |
SIGN() | 完全 |
SINH() | 完全 |
STDDEV() | 完全 |
SUBSTR() | 完全 |
SYSDATE() | 完全 |
SYSTIMESTAMP() | 完全 |
TANH() | 完全 |
TO_BIGINT | 完全 |
TO_CHAR(DATE) | 完全 |
TO_CHAR(NUMBER) | 完全 |
TO_DATE() | 完全 |
TO_DECIMAL() | 完全 |
TO_FLOAT() | 完全 |
TO_INTEGER() | 完全 |
TRUNC(NUMBER) | 完全 |
VARIANCE() | 完全 |
SQL ELTの最適化の設定
マッピングを最適化するには、マッピングをタスクに追加してから、マッピングタスクでSQL ELTの最適化を設定します。
1マッピングタスクの[ランタイムオプション]ページで、[SQL ELTの最適化]セクションに移動します。
2[SQL ELTの最適化]リストから、必要なSQL ELTの最適化のタイプを選択します。
クロススキーマSQL ELTの最適化
マッピングタスクでクロススキーマSQL ELTの最適化を使用し、同じデータベース内にある異なるスキーマに関連付けられたOracleオブジェクトに対してデータの読み取りと書き込みを行うことができます。
クロススキーマSQL ELTの最適化を使用するには、2つのOracle接続を作成し、それぞれの接続にスキーマを指定します。ソース接続のスキーマとターゲット接続のスキーマがそれぞれ異なり、両方のスキーマが同じデータベースに属している必要があります。マッピングタスクにSQL ELTの最適化を設定する場合は、詳細セッションプロパティでクロススキーマSQL ELTの最適化を有効にします。デフォルトでは、このチェックボックスはオンです。
クロススキーマSQL ELTの最適化の設定
OracleマッピングタスクにクロススキーマSQL ELTの最適化を設定するには、次の手順を実行します。
1次の2つのOracle接続を作成し、それぞれに異なるスキーマを定義します。
- aOracle接続orc_1を作成し、接続プロパティでCQA_SCHEMA1スキーマを指定します。
- bOracle接続orc_2を作成し、接続プロパティでCQA_SCHEMA2スキーマを指定します。
2Oracleマッピングm_Orc_pdo_acrossSchemaを作成します。以下のタスクを実行します。
- aCQA_SCHEMA1を使用してデータを読み取るには、ソーストランスフォーメーションを追加し、Oracleソースオブジェクトと接続orc1を含めます。
- bCQA_SCHEMA2を使用してデータを書き込むには、ターゲットトランスフォーメーションを追加し、Oracleターゲットオブジェクトと接続orc2を含めます。
3Oracleマッピングタスクを作成し、次のタスクを実行します。
- a設定したOracleマッピングm_Orc_pdo_acrossSchemaを選択します。
- b[ランタイムオプション]タブの[SQL ELTの最適化]セクションで、SQL ELTの最適化の値を[完全]に設定します。
- c[詳細セッションプロパティ]セクションで、[クロススキーマSQL ELTの最適化の有効化]チェックボックスを選択します。
- dタスクを保存し、[終了]をクリックします。
マッピングタスクを実行すると、Secure Agentは、CQA_SCHEMA1スキーマに関連付けられたOracleソースオブジェクトからデータを読み取り、CQA_SCHEMA2スキーマに関連付けられたOracleターゲットオブジェクトにデータを書き込みます。