ヘッダーをスキップ
Oracle TimesTen In-Memory Database概要
リリース7.0
E05163-03
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

トランザクション・ログAPI

TimesTenが提供するトランザクション・ログAPI(XLA)によって、アプリケーションではローカル・データベースのトランザクション・ログを監視し、他のアプリケーションで実行された変更を検出できます。また、XLAが提供する関数によって、XLAアプリケーションでは、検出した変更を別のデータベースに適用できます。XLAはC言語のAPIです。TimesTenでは、個別のJavaラッパー・インタフェースと、TTClassesの一部としてXLAのC++ラッパー・インタフェースが提供されます。

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

また、XLAを使用してカスタム・データ・レプリケーション・ソリューションを構築し、TimesTenレプリケーション・サービス(『Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド』を参照)のかわりに使用することもできます。このようなXLA対応のレプリケーション・ソリューションには、TimesTen以外のデータベースによるレプリケーションや、別のTimesTenデータベースへの更新の転送が含まれます。

XLAの動作

XLAは次のいずれかのモードで動作します。

永続モードの場合、XLAは、更新レコードをトランザクション・ログ・バッファまたはログ・ファイルから直接取得します。レコードがバッファ内に存在しない場合は、図7.1に示すように、ディスク上のログ・ファイルから更新レコードを取得します。ログ・ファイルが使用可能であるかぎり、レコードは使用可能です。

図7.1 永続モードのXLA
永続モードのXLA[説明]

非永続モードの場合は、図7.2に示すように、XLAは、トランザクション・ログから更新レコードを取得し、それらをXLAステージング・バッファに移動します。バッファから読み込まれたレコードは削除され使用できなくなります。

図7.2 非永続モードのXLA
非永続モードのXLA[説明]

通常、非永続モードは永続モードより高速です。ただし、ステージング・バッファは一度に1つの読取りアクセスのみが可能であり、レコードが読み込まれると、バッファから削除されます。また、データベースが停止されると、バッファ内のすべての更新レコードが失われます。永続モードの場合は、トランザクション・ログの更新に対して同時に複数の読取りアクセスが可能であり、ログ・ファイルが使用可能であるかぎり、ログ・レコードも使用可能です。

永続モードで作業する場合、読取りアクセスはブックマークを使用して、ログ更新ストリームにおける位置を保持します。ブックマークはデータベースに保存されるため、データベースの接続、停止および障害が発生しても永続的に維持されます。

ログ更新レコード

更新レコードを作成したトランザクションをコミットすると、その更新レコードをただちにログから読み取れます。ログ・スニファ・アプリケーションでは、ログに書き込まれた更新レコードのグループを取得できます。

返される各レコードには、固定長の更新ヘッダーと、内部書式に従って保存された1行または2行のデータが含まれます。更新ヘッダーには、次のものが記述されます。