ヘッダーをスキップ
Oracle TimesTen Cache Connect to Oracle開発者および管理者ガイド
リリース7.0
E05172-03
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

USERMANAGEDキャッシュ・グループ

システム管理キャッシュ・グループ(READONLY、AWTおよびSWT)で必要な処理が行われない場合は、CREATE USERMANAGED CACHE GROUP文を使用して、カスタマイズされたキャッシュ動作を実装するユーザー管理キャッシュ・グループを作成できます。

例: USERMANAGEDキャッシュ・グループの作成

この項では、カスタマイズされたキャッシュ・グループの作成に使用するCREATE USERMANAGED CACHE GROUP文をいくつか示します。

この項では、次の例を示します。

例2.1

この例では、単一表customerに対して、update_anywhere_customersというUSERMANAGEDキャッシュ・グループを作成します。TimesTenまたはOracleのいずれか一方でのcustomer表への更新は、もう一方に双方向に伝播されます。図2.11に、USERMANAGEDキャッシュ・グループupdate_anywhere_customers を示します。

図2.11 単純なUSERMANAGEDキャッシュ・グループ
単純なUSERMANAGEDキャッシュ・グループ[テキストの説明]

この例では、AUTOREFRESH属性が設定されているため、キャッシュ・グループは30秒ごとにOracleから増分更新されます。ユーザーはuser1です。表記述内のPROPAGATE属性は、TimesTenキャッシュ内のcustomer表への更新がOracleへ伝播されることを示しています。

CREATE USERMANAGED CACHE GROUP update_anywhere_customers

AUTOREFRESH

       MODE INCREMENTAL

       INTERVAL 30 SECONDS

FROM

user1.customer (custid INTEGER NOT NULL,

       name VARCHAR2(100) NOT NULL,

       addr VARCHAR2(100),

       zip VARCHAR2(10),

       PRIMARY KEY(custid),

       PROPAGATE);

例2.2

この例では、western_customersというUSERMANAGEDキャッシュ・グループを作成します。このキャッシュ・グループには、4つの関連表customerordertaborder_detailsおよびcust_interestが含まれています。図2.12に、キャッシュ・グループとその表を示します。

図2.12 複雑なUSERMANAGEDキャッシュ・グループ
複雑なUSERMANAGEDキャッシュ・グループ[テキストの説明]

western_customersキャッシュ・グループ内の各表には主キーがあります。キャッシュ・グループ内の表は、外部キー関係を介して互いにリンクされています。customer表は、ルート表であるため、キャッシュ・グループ内の別の表を参照しません。ルート表には、ルート表にキャッシュされる行を制限するWHERE句が含まれています。

PROPAGATE属性は、キャッシュ内の表に対するすべての変更が、対応するOracle表にコミット時に自動的に伝播されるように指定します。

CREATE USERMANAGED CACHE GROUP western_customers

    FROM

    user1.customer (

       custid INTEGER NOT NULL,

       name VARCHAR2(100) NOT NULL,

       addr VARCHAR2(100),

       zip VARCHAR2(10),

       region VARCHAR2(10),

       PRIMARY KEY(custid),

       PROPAGATE)

       WHERE (customer.region = 'Western'),

    user1.ordertab(orderid NUMBER NOT NULL,

       custid INTEGER NOT NULL,

       PRIMARY KEY (orderid),

       FOREIGN KEY (custid) REFERENCES customer(custid),

       PROPAGATE),

    user1.order_details(orderid NUMBER NOT NULL,

       itemit NUMBER NOT NULL,

       quantity NUMBER NOT NULL,

       PRIMARY KEY (orderid, itemid),

       FOREIGN KEY (orderid) REFERENCES ordertab(orderid),

       PROPAGATE),

    user1.cust_interest(custid INTEGER NOT NULL,

       interest VARCHAR2(10) NOT NULL,

       PRIMARY KEY (custid, interest),

       FOREIGN KEY (custid) REFERENCES customer(custid),

       PROPAGATE);