ハイブリッド・キャッシュ・グループの作成
CREATE DYNAMIC HYBRID READONLY CACHE GROUP
文を使用して、ルート表がTimesTenにのみ存在する動的ハイブリッド読取り専用キャッシュ・グループを作成できます。
次に、customer_orders
動的ハイブリッド読取り専用キャッシュ・グループにキャッシュされる表の定義を示します。
-
customerルート表はTimesTenデータベースにのみ存在し、主キーのみを含みます。ルート表は、
CREATE DYNAMIC HYBRID READONLY CACHE GROUP
文でルート表を指定するときにTimesTenによって作成されるため、Oracle Databaseには作成しません。 -
顧客は複数の注文を持つことができ、注文ごとに異なる場所に移動できます。顧客の場所ごとに注文ステータスを追跡するために、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);
-
Oracleキャッシュ管理ユーザーには、キャッシュされた表に対する
SELECT
権限が付与されている必要があります。この例では、これらの表はsales.locations
、sales.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;
-
TimesTenデータベースで、TimesTenキャッシュ管理ユーザーとして接続し、キャッシュ・グループを作成します。
CREATE DYNAMIC HYBRID READONLY CACHE GROUP
文を使用して、TimesTenにcustomerルート表、およびcustomer_orders
という動的ハイブリッド読取り専用キャッシュ・グループを作成します。このグループでは、Oracle Database表locations
、orders
およびinvoices
(子表)がキャッシュされます。locations
およびorders
キャッシュ表は、TimesTenデータベースに存在するcustomer
ルート表の主キーを参照することに注意してください。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));