イベント通知は、データベースに対する変更を検出する関数を提供する、トランザクション・ログAPI (XLA)を介して実行されます。XLAはログ・レコードを監視します。ログ・レコードは、表内の行における挿入、更新または削除を記述します。XLAをマテリアライズド・ビューと併用して、複数の表にまたがって特定の行に行われた変更に通知の範囲を絞り込むことができます。
また、TimesTenではSNMPトラップを使用して、イベントに関する非同期の警告を送信できます。
この章の内容は次のとおりです。
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以外のデータベースへのデータのレプリケートが伴う場合があります。
XLAの詳細は、『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の使用を参照してください。
XLAは、トランザクションの更新レコードをトランザクション・ログ・バッファから直接取得します。レコードがバッファ内に存在しない場合は、図8-1に示すように、XLAはディスク上のトランザクション・ログ・ファイルから更新レコードを取得します。読取りアクセスは、ブックマークを使用して、ログ更新ストリームにおける位置を保持します。ブックマークはデータベースに保存されるため、データベースの接続、停止および障害が発生しても永続的に維持されます。「トランザクション・ログ・ファイルが削除される状況」で説明したように、XLAブックマークが存在することにより、そのトランザクション・ログ・ファイル内のXLAログ・レコードが読み取られてXLAアプリケーションによって確認されるまでは、トランザクション・ログ・ファイルが削除されないようになります。
多くのデータベース・システムでは簡素化と、複数の表を含むSELECT
問合せのパフォーマンス向上のために、マテリアライズド・ビューが使用されます。TimesTenでのマテリアライズド・ビューもこの同じ機能を備えていますが、TimesTen Classicにおけるマテリアライズド・ビューのもう1つの目的は、XLAと連携して複数の表内の特定の行と列を追跡し続けることです。
注意: マテリアライズド・ビューの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のマテリアライズド・ビューの理解に関する説明を参照してください。『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』のCREATE MATERIALIZED VIEW 文も参照してください。 |
マテリアライズド・ビューが存在する場合、XLAは重要な更新レコードを、1つのマテリアライズド・ビューのみで監視できます。マテリアライズド・ビューが存在しない場合は、XLAアプリケーションで、マテリアライズド・ビューのすべてのディテール表の更新レコード(アプリケーションにとって重要ではない行および列への更新が反映されているレコードを含む)に対して監視を行う必要があります。
図8-2は、マテリアライズド・ビューの結果セットを構成するディテール表の列に対して行われる更新を示しています。マテリアライズド・ビューに対する更新を監視するXLAアプリケーションは、更新されたレコードを取得します。マテリアライズド・ビューの一部でない、同じディテール表の列や行に対する更新はXLAアプリケーションでは透過的です。
XLAおよびマテリアライズド・ビューを使用して特定の株式への更新を検出する取引アプリケーションの例は、「TimesTen Classicアプリケーション使用例」を参照してください。
TimesTenに実装されているマテリアライズド・ビューでは、複数の表にわたる更新の検出においてパフォーマンスおよび機能が強化されています。その他のマテリアライズド・ビューに精通しているユーザーは、次のメリットとデメリットに注意してください。
アプリケーションは、明示的にマテリアライズド・ビューを作成する必要があります。TimesTen問合せオプティマイザには、マテリアライズド・ビューを自動的に作成する機能はありません。
問合せオプティマイザが、ディテール表に対する問合せを再書込みしてマテリアライズド・ビューを参照することはありません。アプリケーションの問合せでビューを直接参照する必要があります。
マテリアライズド・ビューの作成に使用するSQLには一定の制限があります。
Simple Network Management Protocol (SNMP)は、ネットワーク管理サービスのためのプロトコルです。通常、ネットワーク管理ソフトウェアではSNMPを使用して、ネットワーク・デバイス(ルーターやスイッチなど)の状態の問合せや制御を行います。また、これらのデバイスはUDP/IPパケットの形式で、SNMPトラップと呼ばれる非同期の警告を生成して、管理システムに問題を通知する場合もあります。
TimesTenでは、SNMPを介して問合せや制御を行うことはできません。ただし、TimesTenでは、ユーザーのリカバリ・メカニズムを簡素化するために、特定の重大なイベントに対してSNMPトラップを送信します。
TimesTen Cacheの自動リフレッシュ障害
データベースの領域不足
レプリケート済トランザクションの障害
デーモンの異常停止
データベースの無効化
アサーション障害
こうしたイベントが発生すると、TimesTenデーモンによってログ・エントリも書き込まれますが、SNMPトラップを介してこれらのイベントを明らかにすることにより、適切に構成されたネットワーク管理ソフトウェアでただちに対処できます。
SNMPトラップの詳細は、Oracle TimesTen In-Memory Databaseのエラー・メッセージおよびSNMPトラップのSNMPトラップを使用した診断に関する説明を参照してください。