ハイブリッド・キャッシュ・グループの作成

CREATE DYNAMIC HYBRID READONLY CACHE GROUP文を使用して、ルート表がTimesTenにのみ存在する動的ハイブリッド読取り専用キャッシュ・グループを作成できます。

次に、customer_orders動的ハイブリッド読取り専用キャッシュ・グループにキャッシュされる表の定義を示します。

  1. customerルート表はTimesTenデータベースにのみ存在し、主キーのみを含みます。ルート表は、CREATE DYNAMIC HYBRID READONLY CACHE GROUP文でルート表を指定するときにTimesTenによって作成されるため、Oracle Databaseには作成しません。

  2. 顧客は複数の注文を持つことができ、注文ごとに異なる場所に移動できます。顧客の場所ごとに注文ステータスを追跡するために、Oracle Databaseにlocationsおよびorders表が作成され、customer表の子になります。

    locations表とorders表の両方の複合キーの一部としてcustomer_idを使用すると、顧客の場所ごとにすべての注文のステータスを出力できます。また、invoices表を(orders表の子として)問い合せて、注文が支払われたかどうかを判断できます。

    CREATE TABLE locations
      (customer_id NUMBER(6),
       location_id NUMBER(6),
       name VARCHAR2(255) NOT NULL,
       street CHAR(30) NOT NULL,
       city CHAR(20) NOT NULL,
       state CHAR(2) NOT NULL,
       zipcode CHAR(10) NOT NULL, 
     PRIMARY KEY (customer_id, location_id));
    
    CREATE TABLE orders
      (order_id NUMBER,
       location_id NUMBER(6),
       customer_id NUMBER(6),
       when_placed  DATE NOT NULL,
       status NUMBER(2) NOT NULL,
    PRIMARY KEY (order_id, location_id, customer_id));
    
    CREATE TABLE invoices
      (invoice_id NUMBER PRIMARY KEY,
       order_id NUMBER,
       total   NUMBER,
       paid    NUMBER);
  3. Oracleキャッシュ管理ユーザーには、キャッシュされた表に対するSELECT権限が付与されている必要があります。この例では、これらの表はsales.locationssales.ordersおよびsales.invoices表です。

    様々なアクティビティに必要なすべての権限は、「キャッシュ処理のキャッシュ管理ユーザーに必要な権限」を参照してください。

    Oracle Databaseで、管理者として次の権限を付与します:

    SQL> GRANT SELECT ON sales.locations TO cacheadmin;
    SQL> GRANT SELECT ON sales.orders TO cacheadmin;
    SQL> GRANT SELECT ON sales.invoices TO cacheadmin;
  4. TimesTenデータベースで、TimesTenキャッシュ管理ユーザーとして接続し、キャッシュ・グループを作成します。CREATE DYNAMIC HYBRID READONLY CACHE GROUP文を使用して、TimesTenにcustomerルート表、およびcustomer_ordersという動的ハイブリッド読取り専用キャッシュ・グループを作成します。このグループでは、Oracle Database表locationsordersおよびinvoices (子表)がキャッシュされます。locationsおよびordersキャッシュ表は、TimesTenデータベースに存在するcustomerルート表の主キーを参照することに注意してください。

    ノート:

    『Oracle TimesTen In-Memory Database SQLリファレンス』「CREATE CACHE GROUP」を参照してください。
    CREATE DYNAMIC HYBRID READONLY CACHE GROUP customer_orders
    FROM customer
     (customer_id NUMBER(6) NOT NULL,
      PRIMARY KEY(customer_id)),
    
     locations
      (customer_id NUMBER(6),
       location_id NUMBER(6),
       name VARCHAR2(255) NOT NULL,
       street CHAR(30) NOT NULL,
       city CHAR(20) NOT NULL,
       state CHAR(2) NOT NULL,
       zipcode CHAR(10) NOT NULL,
     PRIMARY KEY (customer_id, location_id), 
     FOREIGN KEY (customer_id) REFERENCES customer(customer_id)),
    
     orders
      (order_id NUMBER,
       location_id NUMBER(6),
       customer_id NUMBER(6),
       when_placed  DATE NOT NULL,
       status NUMBER(2) NOT NULL,
     PRIMARY KEY (order_id, location_id, customer_id), 
     FOREIGN KEY (customer_id) REFERENCES customer(customer_id)),
    
     invoices
      (invoice_id NUMBER,
       order_id NUMBER,
       total   NUMBER,
       paid    NUMBER,
     PRIMARY KEY (invoice_id), 
     FOREIGN KEY (order_id) REFERENCES order(order_id));