マテリアライズド・ビューは、1つ以上のTimesTen表から選択したデータのサマリーを保持する読取り専用の表です。マテリアライズド・ビューのサマリー・データを結果セットと呼び、結果セットを作成するために問合せが行われるTimesTen表をディテール表と呼びます。
ディテール表から抽出した結果セットがマテリアライズド・ビューに保持されることで、アプリケーションは、使用頻度が高いデータに高速にアクセスできるようになります。これは、個別のディテール表からデータを収集するために必要な、コストのかかる結合と集合の処理が、マテリアライズド・ビューの作成時に一括して行われることにより、後続のアプリケーションの問合せでこの処理を繰り返す必要がないためです。
図8.4 マテリアライズド・ビュー
マテリアライズド・ビューの作成後にディテール表のデータが変更された場合、その変更はただちにマテリアライズド・ビューに反映されます。マテリアライズド・ビューを更新する唯一の方法は、基礎となるディテール表を変更することです。マテリアライズド・ビューは直接更新できない読取り専用の表です。つまり、INSERT文、DELETE文、UPDATE文、レプリケーション、XLA(ttXlaApply関数を使用)、またはCache Connectエージェント(マテリアライズド・ビューはキャッシュ・グループの一部にはなりません)によるマテリアライズド・ビューの更新はできません。
多くのデータベース・システムでは簡素化と、複数の表を含むSELECT問合せのパフォーマンス向上のために、マテリアライズド・ビューが使用されます。TimesTenのマテリアライズド・ビューもこの同じ機能を備えていますが、その他の目的は、XLAアプリケーションと連携して、複数の表の特定の行と列を追跡する手段を提供することです。
マテリアライズド・ビューが存在する場合、重要な更新レコードを、1つのマテリアライズド・ビュー表のみで監視できます。マテリアライズド・ビューが存在しない場合は、XLAアプリケーションで、すべてのディテール表の更新レコード(アプリケーションにとって重要ではない行および列への更新が反映されているレコードを含む)に対して監視を行う必要があります。
たとえば、図8.5は、マテリアライズド・ビューの結果セットを構成するディテール表の列に対して行われる更新を示しています。マテリアライズド・ビューに対する更新を監視するXLAアプリケーションは、更新されたレコードを取得します。マテリアライズド・ビューの結果セットの一部でない、同じディテール表のその他の列や行に対する更新はXLAアプリケーションでは透過的です。
図8.5 XLAによる、マテリアライズド・ビュー表の更新の検出
XLAとマテリアライズド・ビューを使用して特定の株式への更新を検出する取引アプリケーションの例については、「使用例2: リアルタイム取引価格サービス・アプリケーション」を参照してください。
TimesTenに実装されているマテリアライズド・ビューでは、複数の表にわたる更新の検出においてパフォーマンスおよび機能が強化されています。TimesTen以外のマテリアライズド・ビューに精通しているユーザーは、次のメリットとデメリットに注意してください。