キャッシュ・グループおよびキャッシュ表について
キャッシュ・グループは、主キーと外部キーの関係によって関連付けられる1つ以上の表のセットをカプセル化するSQLオブジェクトです。1つの最上位表をルート表と呼び、その他の表は階層的な親/子の配置においてルート表の下にあります。
キャッシュ・グループを作成する場合、キャッシュ・グループ内で表されるOracle表ごとに1つのキャッシュ表を指定します。各Oracle表には、一意キー(主キーまたは1つ以上のNOT NULL
列に対して定義された一意索引)が必要です。ただし、一意キーのすべての列を含める必要があります。キャッシュ・グループ(WHERE
句で指定されたサブセット)の作成時に、Oracle表のすべての列または列のサブセットをキャッシュ表内で定義できます。
Oracleデータベースに対して1つ以上のキャッシュ表を指定するキャッシュ・グループを作成する場合は、次を決定します。
-
TimesTenデータベースにキャッシュするOracleデータベースのスキーマまたはスキーマおよび表を特定します。各スキーマ内のすべての表をキャッシュする必要はありません。
-
TimesTenデータベースにキャッシュするOracle表を指定するキャッシュ・グループをTimesTenデータベースに作成します。
次の図は、Oracleデータベースにあるcustomers
表内に存在するデータのサブセットをキャッシュするためにTimesTenデータベースに作成されたcustomer_orders
という架空のキャッシュ・グループを示しています。customers
表は、子のない単一の表です。Oracleデータベースのcustomers
表に含まれるデータのサブセットが、TimesTenデータベースのcustomer_orders
キャッシュ・グループにキャッシュされます。
Oracleデータベース表をキャッシュする場合:
-
単一のOracleデータベース表のみをキャッシュするキャッシュ・グループを設定できます。単一表のキャッシュ・グループには、ルート表はありますが子表はありません。
-
1つのルート表および1つ以上の子表を定義すると、複数の関連するOracleデータベース表を同じキャッシュ・グループにキャッシュできます。キャッシュ・グループには、ルート表を1つのみ含めることができます。ルート表は外部キー制約のある表を参照しません。
複数の表を持つキャッシュ・グループでは、各子表が外部キー制約を使用して同じキャッシュ・グループ内のルート表または別の子表を参照する必要があります。複数表キャッシュ・グループで定義されたキャッシュ表は、外部キー制約によってTimesTenデータベース内で相互に関連している必要があります。ただし、Oracleデータベース内の対応する表は、必ずしも相互に関連している必要はありません。
Oracle Databaseの表は、次のように関連付けることができます。
-
明示的な外部キー制約を使用します。
-
明示的な外部キー制約を使用しません。外部キー制約によって関連付けられていない表がOracleデータベースにある場合があります。ただし、これらの個別の表内のデータをTimesTenデータベースにキャッシュする必要があります。ユーザー・アプリケーションは、Oracleデータベースの外部キー制約によって強制されない表間の関係を維持できます。