TimesTenデータベースとOracleデータベース間での変更の送信

TimesTenキャッシュ表とキャッシュされたOracle Database表との間でコミットされた変更を転送すると、2つのデータベースでこれらの表の同期が確保されます。

TimesTenデータベースとOracle Database間で、変更を手動でまたは自動的に送信できます。

  • キャッシュ・グループの手動ロード: LOAD CACHE GROUP文を使用して、TimesTenキャッシュ表に存在しないキャッシュ・インスタンスをOracle Database表から手動でロードできます。この文は、キャッシュされたOracleデータベース表にコミットされた挿入のみをTimesTenキャッシュ表にロードします。新規キャッシュ・インスタンスはキャッシュ表にロードされますが、キャッシュ表にすでに存在するキャッシュ・インスタンスは、キャッシュされたOracleデータベース表にある対応する行が更新または削除されても、更新または削除されません。ロード処理は、主に、キャッシュ・グループに最初にデータを移入するために使用します。

  • キャッシュ・グループの手動リフレッシュ: REFRESH CACHE GROUP文を使用して、Oracle Database表からTimesTenキャッシュ表にキャッシュ・インスタンスを手動でリフレッシュできます。この文は、キャッシュ表にすでに存在するキャッシュ・インスタンスを含め、TimesTenキャッシュ表のキャッシュ・インスタンスをキャッシュされたOracleデータベース表の最新のデータに置き換えます。リフレッシュ処理は、主に、キャッシュ・グループに最初にデータが移入された後、キャッシュされたOracleデータベース表に対するコミット済の変更でキャッシュ・グループの内容を更新するために使用されます。

  • コミットされた変更の手動伝播: FLUSH CACHE GROUP文を使用して、TimesTenキャッシュ表にコミットされた変更を、キャッシュされたOracleデータベース表に手動で伝播します。

  • キャッシュ・グループの動的ロード: 動的キャッシュ・グループは、DYNAMICキーワードを使用して作成されるグループです。対象となるSELECTINSERTUPDATEまたはDELETE文がキャッシュ表の1つで発行されると、データが動的キャッシュ・グループのキャッシュされたOracleデータベース表からリクエストに応じてTimesTenキャッシュ表に動的にロードされます。対象となる文がキャッシュ表でデータを検出できないが、データがOracleデータベース表に存在している場合、キャッシュされたOracleデータベース表からキャッシュ・インスタンスが自動的にロードされます。通常、データは使用されなくなると、動的にロードされたキャッシュ表から自動的にエージ・アウトされます。このアクションはLOAD CACHE GROUP文に似ていますが、動的に発行されます。動的キャッシュ・グループは、TimesTen Classicでのみサポートされています。

    ノート:

    静的キャッシュ・グループは、DYNAMICキーワードなしで作成されるグループです。
  • キャッシュ・グループの自動リフレッシュ: 自動リフレッシュ処理は、キャッシュ表にすでに存在するキャッシュ・インスタンスを含め、TimesTenキャッシュ表のキャッシュ・インスタンスをキャッシュされたOracleデータベース表の最新のデータに自動的に置き換えます。自動リフレッシュ処理は、キャッシュ・グループにデータが最初に移入された後、キャッシュされたOracleデータベース表にコミットされた変更でキャッシュ・グループの内容を更新します。このアクションはREFRESH CACHE GROUP文に似ていますが、自動的に実行されます。キャッシュ・インスタンスは、AUTOREFRESHキャッシュ表属性を使用してキャッシュ・グループを作成すると自動的にリフレッシュされます。読取り専用キャッシュ・グループまたはユーザー管理キャッシュ・グループにAUTOREFRESHキャッシュ・グループ属性を使用すると、キャッシュされたOracle Database表にコミットされた変更をTimesTenキャッシュ表に自動的にリフレッシュできます。AUTOREFRESHキャッシュ・グループ属性は、静的または動的キャッシュ・グループで定義できます。

  • Oracle Databaseへの変更の自動伝播: AWT、SWTまたはユーザー管理のキャッシュ・グループの作成時にPROPAGATEキャッシュ表属性を指定すると、TimesTenデータベースのキャッシュ表でコミットされた変更は、キャッシュされたOracle Database表に自動的に伝播されます。このアクションはFLUSH CACHE GROUP文に似ていますが、自動的に実行されます。

ロード、リフレッシュ、動的ロードおよび自動リフレッシュとは、Oracle Databaseのキャッシュ表にコミットされた更新をTimesTenデータベースのキャッシュ表に送信する処理のことです。ロードおよびリフレッシュは手動での処理となり、動的ロードおよび自動リフレッシュは自動での処理となります。伝播およびフラッシュとは、TimesTenデータベースのキャッシュ表にコミットされた変更をOracle Databaseのキャッシュ表に送信する処理のことです。フラッシュは手動による処理であり、伝播は自動での処理です。

図2-3 TimesTenデータベースとOracle Database間でのコミットされた変更の送信

図2-3の説明が続きます
「図2-3 TimesTenデータベースとOracle Database間でのコミットされた変更の送信」の説明

DYNAMICキーワードは、キャッシュ・グループが静的または動的キャッシュ・グループのいずれであるかを指定します。

  • 静的キャッシュ・グループ: キャッシュ・グループの作成時にDYNAMICキーワードが指定されていない場合に定義されます。静的キャッシュ・グループでは、キャッシュ・インスタンスはOracle DatabaseからTimesTenキャッシュ表に手動でロードされます。静的キャッシュ・グループ内では、まず、LOAD CACHE GROUP文を使用して、キャッシュされたOracleデータベース表からキャッシュ表にデータがロードされます。その後、REFRESH CACHE GROUP文でデータをリフレッシュするか、自動リフレッシュを使用するように定義されている場合はデータを自動的にリフレッシュできます。キャッシュ表がロードされると、ユーザーは問合せを実行できます。静的キャッシュ・グループが適しているのは、キャッシュするデータ・セットが静的であり、アプリケーションがキャッシュ表に対して処理を実行する前にそのデータ・セットを定義しておくことができる場合です。デフォルトでは、キャッシュ・グループは静的です。

  • 動的キャッシュ・グループ: DYNAMICキーワードを使用してキャッシュ・グループを作成するときに定義されます。動的キャッシュ・グループ内では、リクエストに応じてOracle Databaseからキャッシュ・グループにデータを動的にロードすることも、LOAD CACHE GROUPまたはREFRESH CACHE GROUP文を使用して手動でロードすることもできます。動的キャッシュ・グループに対して手動リフレッシュ処理または自動リフレッシュ処理を実行すると、既存のキャッシュ・インスタンスを更新または削除できますが、キャッシュされていないOracleデータベースのデータに変更をコミットしても新しいキャッシュ・インスタンスはキャッシュ表にロードされません。動的キャッシュ・グループは、キャッシュする必要があるデータのセットがOracle Databaseの表に存在するフル・サイズのデータに比べて小さい場合に適しています。

    アプリケーションがキャッシュ表に対して処理を実行する前に、Oracleデータベースからデータを事前にロードする必要があります。

キャッシュするデータの量を決定する場合は、静的ロードまたは動的ロードを選択します。理想的には、手動ロードの方が高速です。動的ロードを使用して、新規データのロードを自動化するか、メモリーにロードするデータ量を指定します。

どのキャッシュ・グループ・タイプ(読取り専用、AWT、SWT、ユーザー管理)も、静的キャッシュ・グループとして定義できます。AUTOREFRESHキャッシュ・グループ属性とPROPAGATEキャッシュ表属性の両方を使用するユーザー管理キャッシュ・グループを除いて、すべてのキャッシュ・グループ・タイプを動的キャッシュ・グループとして定義できます。

「TimesTenデータベースとOracleデータベース間で変更を送信する方法」を参照してください。

「非同期ライトスルー(AWT)キャッシュ・グループ」および「同期ライトスルー(SWT)キャッシュ・グループ」を参照してください。