Oracle Database 2日でデータ・ウェアハウス・ガイド 11g リリース1(11.1) E05764-01 |
|
この項は、パフォーマンス要件を満たすETLロジックを作成するためのガイドとして使用します。
データ・パーティションを使用すると、ターゲット・システムでデータをロードまたは削除するときのパフォーマンスが向上します。この方法は、パーティション交換ロード(PEL)と呼ばれています。
PELは、比較的少量のデータを、大量の履歴データを含むターゲットにロードする際に使用してください。ターゲットにできるものとしては、データ・ウェアハウスの表、ディメンション、キューブなどがあります。
ターゲット・システムのパーティションを操作すると、パーティション交換ロード(PEL)を使用して、即時にデータを追加または削除できます。表が空のパーティションで交換されると、新規データが追加されます。
パーティション交換ロードを使用すると、新規データをパーティションとしてターゲット表と交換し、ロードできます。たとえば、新規データを保持する表は、パーティションのアイデンティティをターゲット表から引き継ぎ、このパーティションはソース表のアイデンティティを引き継ぎます。この交換プロセスは、実際のデータの移動を伴わないDDL操作です。
図6-1では、ソース表Sourceのデータが、4つのパーティション(Target_P1、Target_P2、Target_P3およびTarget_P4)で構成されたターゲット表に挿入されます。新規データをTarget_P3にロードする必要がある場合、パーティション交換操作では、実際のデータを移動せずに、データ・オブジェクトの名前のみを交換します。交換後は、以前のSourceという名前がTarget_P3に変更され、このTarget_P3という名前がSourceになります。ターゲット表には、Target_P1、Target_P2、Target_P3およびTarget_P4の4つのパーティションが含まれたままです。Oracle9i で使用可能なパーティション交換操作は、データを移動することなくロード・プロセスを完了します。
Oracle Warehouse Builderによって「構成プロパティ」ウィンドウが表示されます。
Oracle Warehouse Builderを使用して、パーティション交換によってターゲットをロードする場合は、ターゲットを間接的または直接的にロードできます。
パーティション交換ロードを使用して設計したマッピングにリモート・ソースまたは複数ソースの結合が含まれている場合、パーティション交換を続行する前に、ソース処理が実行され、データがステージングされる必要があります。したがって、このようなマッピングは、ダイレクトPELをFalseに設定した状態で構成します。ソース処理の結果を格納する一時表は、Oracle Warehouse Builderによって透過的に作成され、維持されます。この表は、PELの実行後にOracle Warehouse Builderによって削除されます。
図6-3は、2つのソースを結合し、集計を実行するマッピングを示しています。ORDER_SUMMARY表にロードされたすべての新規データが常に同じパーティションにロードされる場合は、このマッピングで間接PELを使用して、ロードのパフォーマンスを改善できます。この場合、Oracle Warehouse Builderによって、アグリゲータとORDER_SUMMARYの間に一時表が透過的に作成されます。
Oracle Warehouse Builderでは、ターゲット表と同じ構造(列、索引、制約が同じ)を使用して、一時表が作成されます。この一時表は、パフォーマンス向上のために、Oracle Warehouse Builderによってパラレル直接パス・ロードINSERTを使用してロードされます。INSERTの後、Oracle Warehouse Builderでは、一時表の索引と制約がパラレルで作成されます。
ソース表がローカルで、データの品質が高い場合は、ダイレクトPELを使用します。マッピングは、ソースとターゲットが同じデータベースにあり、完全に同じ構造であるように設計する必要があります。ソースとターゲットの索引、制約、列数、列タイプおよび列の長さは、すべて同じである必要があります。
たとえば、図6-3と同じマッピングがあり、データをターゲットにロードするタイミングをより細かく制御するとします。データ量によってはロードに数時間がかかり、現状では、ターゲット表がいつ更新されるかも正確にはわかりません。
ステージング表を、別のマッピングでロードする最終ターゲットの構造に正確に一致するように設計します。たとえば、図6-3にあるステージング表のORDER_SUMMARYは、図6-4にある最終ターゲットORDER_CUBEと同じ構造である必要があります。
次の条件がTrueの場合は、スケーラビリティの高いロード・パフォーマンスのためにパーティション交換ロードを効果的に使用できます。
パーティションは、実行中に自動的には作成されません。すべてのパーティションは、パーティション交換ロードを使用する前に、すべてのパーティションを作成する必要があります。
たとえば、新しいデータ収集の頻度として「月」を選択する場合、新しいデータの各月に対して必要なパーティションをすべて作成する必要があります。データ・オブジェクト・エディタを使用して表、ディメンションまたはキューブのパーティションを作成します。
図6-5では、表ORDER_SUMMARYに対するプロパティ・インスペクタ・ウィンドウが表示されます。
パーティション交換ロードを使用するには、すべてのパーティションがネーミング規則に従って命名される必要があります。たとえば、 2002年5月のデータを保持するパーティションの場合、そのパーティション名はY2002_Q2_M05という形式にする必要があります。
PELでパーティションを識別するには、次のいずれかの形式の名前をパーティションに指定する必要があります。
Y
dddd
Y
dddd_
Q
d
Y
dddd_
Q
d_
M
dd
Y
dddd_
Q
d_
M
dd_
D
dd
Y
dddd_
Q
d_
M
dd_
D
dd_
H
dd
Y
dddd_
Q
d_
M
dd_
D
dd_
H
dd_
M
dd
d
には、10進数の数字が入ります。すべての文字は、大文字にする必要があります。小文字は認識されません。
各パーティションを正しく命名すると、Oracle Warehouse Builderによって各パーティションの「上限値」プロパティが自動的に計算されます。そうでない場合は、Oracle Warehouse BuilderでDDL文が作成されるように、上限値を各パーティションに対して手動で構成する必要があります。次に、Oracle Warehouse Builderによって作成されたDDL文の例を示します。
. . . PARTITION A_PARTITION_NAME VALUES LESS THAN (TO_DATE('01-06-2002','DD-MM-YYYY')), . . .
図6-6では、「上限値」パラメータの自動的に生成された構成値が表示されます。
図6-7では、ORDER_SUMMARY表に追加された索引(ORDER_SUMMARY_PK_IDX)を示しています。この索引には、2つの列、ORDER_DATEとITEM_IDがあります。次のように構成します。
これで、Oracle Warehouse Builderで、表ORDER_SUMMARYに一意のローカル索引を作成するDDL文を作成できます。
ローカル索引を使用すると、PELのパフォーマンスを最大限に活用できます。ローカル索引では、すべての索引が表と同じ方法でパーティション化されている必要があります。PELを使用して一時表をターゲット表にスワップすると、索引セグメントのアイデンティティもスワップされます。
ローカル索引として索引が作成されている場合、Oracleサーバーでは、パーティション・キー列を索引の最初の列にする必要があります。前述の例では、パーティション・キーはORDER_DATEで、索引ORDER_SUMMARY_PK_IDXの最初の列になります。
この手順では、主キー制約および一意キー制約がすべて、「索引を使用」オプションで作成されるように指定する必要があります。図6-8では、ORDER_SUMMARY表の主キー制約ORDER_SUMMARY_PKが、「索引を使用」オプションで指定されている例を示しています。
「索引を使用」オプションを使用すると、表に制約を追加した際に索引が自動的に作成されなくなります。サーバーは、制約と同じ列リストを持つ既存の索引を検索します。したがって、主キー制約または一意キー制約は、ユーザー定義の一意のローカル索引で補足する必要があります。制約ORDER_SUMMARY_PKに必要な索引は、「手順2: 「LOCAL」オプションを使用したすべての索引の作成」で作成したORDER_SUMMARY_PK_IDXです。
Oracle Warehouse BuilderでのPELの使用には、次の制限があります。
|
![]() Copyright © 2007 Oracle Corporation. All Rights Reserved. |
|