ヘッダーをスキップ

Oracle TimesTen In-Memory Databaseアーキテクチャ概要 リリース6.0 B25763-01 |
| 目次 | 索引

前へ | 次へ |

## マテリアライズド・ビュー

マテリアライズド・ビューは、1つ以上のTimesTen表から選択したデータのサマリーを保持する読取り専用の表です。マテリアライズド・ビューのサマリー・データを結果セットと呼び、結果セットを作成するために問合せが行われるTimesTen表をディテール表と呼びます。

ディテール表から抽出した結果セットがマテリアライズド・ビューに保持されることで、アプリケーションは、使用頻度が高いデータに高速にアクセスできるようになります。これは、個別のディテール表からデータを収集するために必要な、コストのかかる結合と集合の処理が、マテリアライズド・ビューの作成時に一括して行われることにより、後続のアプリケーションの問合せでこの処理を繰り返す必要がないためです。

図8.4 マテリアライズド・ビュー

マテリアライズド・ビューの作成後にディテール表のデータが変更された場合、その変更はただちにマテリアライズド・ビューに反映されます。マテリアライズド・ビューを更新する唯一の方法は、基礎となるディテール表を変更することです。マテリアライズド・ビューは直接更新できない読取り専用の表です。つまり、INSERT文、DELETE文、UPDATE文、レプリケーション、XLA（ttXlaApply関数を使用）、またはCache Connectエージェント（マテリアライズド・ビューはキャッシュ・グループの一部にはなりません）によるマテリアライズド・ビューの更新はできません。

## マテリアライズド・ビューとXLA

多くのデータベース・システムでは簡素化と、複数の表を含むSELECT問合せのパフォーマンス向上のために、マテリアライズド・ビューが使用されます。TimesTenのマテリアライズド・ビューもこの同じ機能を備えていますが、その他の目的は、XLAアプリケーションと連携して、複数の表の特定の行と列を追跡する手段を提供することです。

マテリアライズド・ビューが存在する場合、重要な更新レコードを、1つのマテリアライズド・ビュー表のみで監視できます。マテリアライズド・ビューが存在しない場合は、XLAアプリケーションで、すべてのディテール表の更新レコード（アプリケーションにとって重要ではない行および列への更新が反映されているレコードを含む）に対して監視を行う必要があります。

たとえば、図8.5は、マテリアライズド・ビューの結果セットを構成するディテール表の列に対して行われる更新を示しています。マテリアライズド・ビューに対する更新を監視するXLAアプリケーションは、更新されたレコードを取得します。マテリアライズド・ビューの結果セットの一部でない、同じディテール表のその他の列や行に対する更新はXLAアプリケーションでは透過的です。

図8.5 XLAによる、マテリアライズド・ビュー表の更新の検出

XLAとマテリアライズド・ビューを使用して特定の株式への更新を検出する取引アプリケーションの例については、「使用例2: リアルタイム取引価格サービス・アプリケーション」を参照してください。

TimesTenに実装されているマテリアライズド・ビューでは、複数の表にわたる更新の検出においてパフォーマンスおよび機能が強化されています。TimesTen以外のマテリアライズド・ビューに精通しているユーザーは、次のメリットとデメリットに注意してください。

- マテリアライズド・ビューはアプリケーションで明示的に作成する必要があります。TimesTen問合せオプティマイザには、マテリアライズド・ビューを自動的に作成する機能はありません。
- TimesTen問合せオプティマイザが、ディテール表に対する問合せを再書込みしてマテリアライズド・ビューを参照することはありません。マテリアライズド・ビューを使用する場合は、アプリケーションの問合せでビューを直接参照する必要があります。
- マテリアライズド・ビューに遅延メンテナンス・オプションはありません。ディテール表が変更されると、マテリアライズド・ビューは自動的にリフレッシュされます。ビューを手動でリフレッシュする機能はありません。
- マテリアライズド・ビューの作成に使用するSQLには一定の制限があります。詳細は、『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』のCREATE MATERIALIZED VIEWに関する項を参照してください。