コンポジット・レンジ - レンジ・パーティション化は、時間関連のデータを複数の時間ディメンションで格納するアプリケーションに役立ちます。多くの場合、このようなアプリケーションは、データにアクセスするために特定の1つの時間ディメンションを使用するのではなく、別の時間ディメンションを使用することもあれば、同時に両方の時間ディメンションを使用することもあります。たとえば、Webショップが、発注時間と出荷時間(運送会社に渡した時間)に基づいて売上データを分析する場合があります。
コンポジット・レンジ・レンジ・パーティション化の他の業務例としては、ILMシナリオや、履歴データを格納して、データを別のディメンションの範囲で分類するアプリケーションがあります。
例3-10では、レンジ・レンジ・パーティション化された表account_balance_history
を示します。銀行は、低残高通知や特定の顧客カテゴリ向けキャンペーンについて顧客に連絡するために、個々のサブパーティションへのアクセスを利用できます。
この例では、時間隔パーティション化が使用されています。データが表に挿入されたときに時間隔パーティションを自動的に作成するために、レンジ・パーティション化に加えて時間隔パーティション化を使用できます。ここでは、2007年1月1日(月曜日)から開始する7日間(1週間)の間隔が作成されています。
例3-10 コンポジット・レンジ - レンジ・パーティション化による表の作成
CREATE TABLE account_balance_history ( id NUMBER NOT NULL , account_number NUMBER NOT NULL , customer_id NUMBER NOT NULL , transaction_date DATE NOT NULL , amount_credited NUMBER , amount_debited NUMBER , end_of_day_balance NUMBER NOT NULL ) PARTITION BY RANGE(transaction_date) INTERVAL (NUMTODSINTERVAL(7,'DAY')) SUBPARTITION BY RANGE(end_of_day_balance) SUBPARTITION TEMPLATE ( SUBPARTITION unacceptable VALUES LESS THAN (-1000) , SUBPARTITION credit VALUES LESS THAN (0) , SUBPARTITION low VALUES LESS THAN (500) , SUBPARTITION normal VALUES LESS THAN (5000) , SUBPARTITION high VALUES LESS THAN (20000) , SUBPARTITION extraordinary VALUES LESS THAN (MAXVALUE) ) (PARTITION p0 VALUES LESS THAN (TO_DATE('01-JAN-2007','dd-MON-yyyy')));