TimesTenとOracleデータベースの間のデータの転送

TimesTenでは、キャッシュ・グループからOracleデータベースに更新内容が自動的に伝播され、Oracleデータベースからキャッシュ・グループ内のデータが自動的にリフレッシュされることで、キャッシュ・データとOracleデータベースの間の整合性が確保されます。

この項の後半の内容は次のとおりです。

Oracleデータベース表からのキャッシュ・グループの更新

手動リフレッシュ操作と自動リフレッシュ操作は、キャッシュ・グループをOracleデータベース表内の対応するデータと同期させるために使用します。

  • 自動リフレッシュ - 増分自動リフレッシュ操作では、前回のリフレッシュ以降にOracle Databaseで変更されたレコードのみが更新されます。キャッシュ操作により、指定された時間間隔で自動的に増分リフレッシュが実行されます。また、指定された時間間隔でキャッシュ・グループ全体を自動的にリフレッシュする完全自動リフレッシュ操作を指定することもできます。

    TimesTen Scaleoutでは、これらの2つのオプションの増分自動リフレッシュ・オプションのみがサポートされます。

  • 手動リフレッシュ - アプリケーションでREFRESH CACHE GROUP文を発行し、キャッシュ・グループ全体または特定のキャッシュ・インスタンスをリフレッシュします。これは、キャッシュ・グループまたはキャッシュ・インスタンスをアンロードしてからロードするのと同じことです。

様々な状況で、これらのメカニズムは有効です。Oracle Database表の更新が1日に1回のみ行われ、更新される行数が多い場合は、完全自動リフレッシュが最適です。Oracle Database表の更新頻度は高いものの、それぞれの更新で変更される行数が少ない場合は、増分自動リフレッシュが最適です。また、リフレッシュを実行する必要のあるタイミングがアプリケーションのロジックで既知の場合は、手動リフレッシュが最適です。

『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』TimesTenとOracleデータベースの間の変更内容の転送方法を参照してください。

キャッシュ・グループからのOracleデータベース表の更新

伝播およびフラッシュのメカニズムを使用して、Oracleデータベースをキャッシュ・グループとともに最新状態に保つことができます。

  • 伝播 - キャッシュ・グループ・データをOracle Databaseに伝播する場合に最も一般的な方法は、非同期のWRITETHROUGH(AWT)キャッシュ・グループを使用する方法です。Oracle Database表を更新するその他の方法として、同期のWRITETHROUGH (SWT)キャッシュ・グループを使用する方法や、ユーザー管理キャッシュ・グループにPROPAGATEオプションを指定する方法があります。

    AWTキャッシュ・グループへの変更は、Oracle Database表への適用を待機せずにコミットされます。AWTキャッシュ・グループは、SWTキャッシュ・グループ、およびPROPAGATEオプションを指定したユーザー管理キャッシュ・グループよりもレスポンス時間とパフォーマンスに優れています。ただし、変更内容が非同期的にOracleデータベース表に適用されるため、TimesTenデータベースとOracleでデータベースに常に同じデータが含まれているわけではありません。

    データベースの作成時にパラレル・レプリケーションを構成することで、AWTキャッシュ・グループからOracle Database表へのスループットを向上できます。Oracle Database表に更新を適用するためのスレッド数を構成します。

  • フラッシュ - フラッシュ操作を使用すると、ユーザー管理キャッシュ・グループからOracleデータベースに手動で更新内容を伝播できます。アプリケーションにより、FLUSH CACHE GROUP文の発行によってフラッシュ操作が開始されます。フラッシュ処理は、特定の時間内に複数のレコードに対する更新が頻繁に行われる場合に有効です。フラッシュ処理では、削除は伝播されません。

キャッシュ・グループの自動リフレッシュ操作または手動リフレッシュ操作の詳細は、『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』TimesTenとOracleデータベースの間での変更内容の転送方法を参照してください。