Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Sawa_Ito
Product and Topic Expert
Product and Topic Expert
0 Kudos



このページは、以下の英語ページの抄訳です。最新の情報については、英語ページを参照してください。

 

 

 

この記事のオリジナルは、Glenn Paulley が sybase.com に 2009 年 4 月に掲載したものです。その中で、Glenn は SQL Anywhere において我々がマテリアライズドビューと呼んでいる機能に関するベンダー間の名称の違いについて解説しています。

(*注:この記事は2009年に執筆されたもので、他DBMSに関しては、現在は異なる可能性があることに注意してください。)

 

また、SAP HANA アーキテクチャーにおいては、マテリアライズドビューは必要ないということを述べておきたいと思います。なぜならば、HANA の場合は全てのデータはメインメモリー上で利用可能で、オンザフライで処理/集約可能だからです。

 

===

 

商談中のお客様より、かなりの頻度で SQL Anywhere がマテリアライズドビューの機能をサポートしているかどうか (多くは同じ「マテリアライズドビュー」の他の名前で)尋ねられます。

 

そこで、代表的な商用 RDBMS 製品の「マテリアライズドビュー」に相当する名称を以下にまとめてみました。

 








































DBMS 名称 When How Who
MS SQL Server インデックス付ビュー 即時反映 差分更新 システム
IBM DB2 マテリアライズド照会表 即時 と 遅延 差分更新 または 再構築 システム または ユーザー
Oracle マテリアライズドビュー 遅延反映(*注:現在は即時反映も可能) 差分更新 または 再構築 システム または ユーザー
SQL Anywhere マテリアライズドビュー 即時 と 遅延 差分更新 または 再構築 システム または ユーザー

 

上記のテーブルでは、「when」(いつ反映されるか?) 列は、ベースとなるテーブルの行が 1 つまたはそれ以上変更された場合にマテリアライズドビューが更新されるタイミングを示しています。つまり、

 

  • 完全即時反映:

    • 同じ (更新の) トランザクションの一部としてマテリアライズドビューを更新

    • ベーステーブルの変更をビューデータにもととなるベーステーブルとの一貫性を保つ方法で伝播

    • ビューデータが古くなることはない。

    • 更新トランザクションの同時性を劣化させるとともに、ロックの競合とデッドロックを発生させる可能性が高くなる。




 

  • 遅延即時反映:

    • 依存するマテリアライズドビューを更新することなくベーステーブルに変更を適用

    • 差分更新が可能な場合、ログが変更(追記)される可能性がある。

    • クエリー実行時において、ビューにデータが反映されている場合には、結果を提供するためにビューを使用することが可能。もしくは、別のトランザクションを適用、またはマテリアライズドビューを再計算する。それが完了するまでクエリーの実行は待機




 

  • 遅延反映:

    • 関係するマテリアライズドビューを更新することなくベーステーブルに変更を適用

    • 差分更新が可能な場合、ログが変更(追記)される可能性がある。

    • 独立した非同時の処理で、通常は完全な再計算によってビューを更新

    • アプリケーションは、マテリアライズドビューが最新の状態でない場合があることを考慮している。




 

 

「how」のカラムは、ビューのベーステーブルが変更された場合にビューを最新の状態に保つ方法について示しています。

 

選択肢としては、

  • 再構築: 完全にビューを再計算する。

  • 差分更新: 再構築の形でなく変更された部分にのみマテリアライズドビューに個々の更新を適用する。しかし、これは全てにおいて可能なわけではなく、また効率性においてトレードオフがあります。大半の場合、即時反映のマテリアライズドビューでは、差分更新が行われています。


 

「マテリアライズドビュー」という名称は、標準化されていません。

なぜならば、マテリアライズドビューは、インデックスのように、パフォーマンス最適化の機能であるため、ANSI/ISO SQL 標準でカバーされていないからです。

SQL Anywhere に「マテリアライズドビュー」という名称を選択したのは、(単に)Oracle と合わせたというだけではなく、学術的な文書において「マテリアライズドビュー」の使用が比較的多くみられたからです。

 

 

上のテーブルに、Sybase IQ (現 SAP IQ) が省かれていることについて質問される方もいるかもしれません。

 

実は、Sybase IQ はマテリアライズドビューをサポートしていません。そのかわり、Sybase IQ は、関連する(少し古い)考え方である join index と呼ばれるものをサポートしています。(*注:現在 SAP IQ に join index の機能はありません。)

 

Join indices は、もともと Patrick Valduriez による論文1987 TODS paper [1]、その後 MCC で、そして現在は INRIA で解説されています。マテリアライズドビューと同様、join index は 2つのテーブル間の 内部結合 | 外部結合 | 完全外部結合 の結果をマテリアライズします。full-outer join index のメリットは、あらゆる 内部結合 | 外部結合 | 完全外部結合 を使用したクエリーの処理に対してシンプルにフィルタ条件を 適用することで使用することができることです。

 

違いは、マテリアライズドビューの方がより一般的であり、1対多の内部結合 | 外部結合 | 完全外部結合 を フィルタ条件、射影、グループ可等を行った後にマテリアライズすることが可能という点です。

バッチで更新するマテリアライズドビューは、任意の結合で代数使用した処理を含むことが可能です。

 

 

 

Techwave 2008 におけるマテリアライズドビューのプレゼンにこの文書を一緒にまとめてくれた同僚の Anil Goel に感謝します。
[1] Patrick Valduriez (June 1987). Join indices. ACM Transactions on Database Systems 12(2), pp. 218-246.

 

 

===

 

SAP SQL Anywhere に関する詳細情報は、SAP SQL Anywhere Communityページ<英語> を参照してください。

 

上記のコミュニティーに掲載されている技術情報は、順次SQL Anywhere 日本語コミュニティ

に掲載しています。

 

SQL Anywhere に関してはまずはこちらをご参照ください。無期限でご利用いただける無償の Developers Edition もこちらからダウンロードが可能です。

 

SQL Anywhere に関して技術的な質問のある方はコミュニティに登録し、
「Ask a Question」機能をご利用ください。

Language には「Japanese」、
Primary Tag には「SAP SQL Anywhere」を選択
User Tagに「sql anywhere」「sql anywhere Japanese question」

を入力してください。

不具合につきましては、サポート契約者様専用の問い合わせ方法にてお問い合わせください。

 

======================
ご購入に関するお問い合わせ

こちらよりお問い合わせください。