トランザクション・ログAPIによるトランザクション変更の検出

TimesTen Classicで提供されるトランザクション・ログAPI (XLA)によって、アプリケーションでローカル・データベースのトランザクション・ログを監視して他のアプリケーションによる変更を検出できます。

また、XLAが提供する関数によって、XLAアプリケーションでは、検出した変更を別のデータベースに適用できます。XLAはC言語のAPIです。TimesTen Classicでは、TTClassesの一部としてXLAのC++ラッパー・インタフェースが提供され、別個のJavaラッパー・インタフェースも提供されます。

アプリケーションではXLAを使用して、変更通知スキームを実装します。このスキームでは、XLAアプリケーションがデータベースに変更がないかどうかを監視し、変更に基づいて対処できます。たとえば、株式取引環境におけるTimesTenデータベースは、株価のデータ・ストリームによって絶えず更新されます。自動取引アプリケーションでは、XLAを使用して特定の株価の更新についてデータベースを監視し、その情報に基づいて発注するかどうかを判断する場合があります。完成例は、「TimesTen Classicアプリケーション使用例」を参照してください。

また、XLAを使用してカスタム・データ・レプリケーション・ソリューションを構築し、TimesTenレプリケーションのかわりに使用することもできます。このようなXLA対応レプリケーション・ソリューションには、TimesTen以外のデータベースへのデータのレプリケートが伴う場合があります。

『Oracle TimesTen In-Memory Database C開発者ガイド』XLAおよびTimesTenイベント管理、および『Oracle TimesTen In-Memory Database Java開発者ガイド』JMS/XLAを使用したイベント管理を参照してください。

TTClassesの詳細は、『Oracle TimesTen In-Memory Database TTClassesガイド』TTClassesでのXLAの使用を参照してください。

次の項では、TimesTen ClassicでのXLAの動作について説明します。

XLAの動作

XLAは、トランザクションの更新レコードをトランザクション・ログ・バッファから直接取得します。レコードがバッファ内に存在しない場合、XLAはトランザクション・ログ・ファイルから更新レコードを取得します。

読取りアクセスは、ブックマークを使用して、ログ更新ストリームにおける位置を保持します。ブックマークはデータベースに保存されるため、データベースの接続、停止および障害が発生しても永続的に維持されます。「トランザクション・ログ・ファイルが削除される状況」で説明されているように、XLAブックマークが存在することにより、トランザクション・ログ・ファイル内のXLAログ・レコードが読み取られてXLAアプリケーションによって確認されるまで、そのトランザクション・ログ・ファイルは削除されなくなります。

図8-1を参照してください。

ログの更新レコード

更新レコードを作成したトランザクションをコミットすると、その更新レコードをただちにログから読み取れます。

ログ監視アプリケーションでは、ログに書き込まれた更新レコードのグループを取得できます。返される各レコードには、固定長の更新ヘッダーと、内部書式に従って保存された1行または2行のデータが含まれます。更新ヘッダーには、次のものが記述されます。

  • 更新行が適用される表

  • そのレコードがトランザクションの最初のコミット・レコードかまたは最後のコミット・レコードか

  • レコードが表すトランザクション・タイプ

  • 返される行データの長さ

  • 更新された列