(57)【要約】【課題】  変形ＯＬＡＰを使用する先行キャッシュ・システムおよび方法を提供すること。【解決手段】  本発明は、バックグラウンド処理において、そのオブジェクトのＭＯＬＡＰ等価物を構築することによって、ＲＯＬＡＰオブジェクト（次元、区分および集約）に対してＭＯＬＡＰ性能を利用する。バックグラウンド処理が完了すると、クエリはＲＯＬＡＰクエリからＭＯＬＡＰクエリに切り換えられる。関連するリレーショナル・オブジェクト（たとえばＯＬＡＰオブジェクトの内容を定義するテーブル）に変更が起こると、ＯＬＡＰオブジェクトは、切り換えられてＲＯＬＡＰモードに戻され、すべての関連するキャッシュが取り去られ、その間、バックグラウンド処理として、新しいＭＯＬＡＰ等価物が作成される。【選択図】  図１
2004303212.tif 000002
【特許請求の範囲】
【請求項１】
データベースから派生した動的な多次元分析データを提供する少なくとも１つの多次元オブジェクトへのアクセスを可能にする多次元オブジェクト・インターフェースと、
前記多次元オブジェクトから派生した動的な多次元分析データを提供する少なくとも１つのキャッシュへのアクセスおよびその制御を可能にするキャッシュ・インターフェースと、
前記多次元オブジェクトおよび前記キャッシュへのアクセスを先行的に制御する、前記多次元オブジェクトおよび前記キャッシュに結合された少なくとも１つの分析構成要素と
を備えることを特徴とする情報をキャッシュするシステム。
【請求項２】
前記データベースは、リレーショナル・データベースを備えることを特徴とする請求項１に記載のシステム。
【請求項３】
前記多次元オブジェクトは、ＲＯＬＡＰオブジェクトを備えることを特徴とする請求項１に記載のシステム。
【請求項４】
前記キャッシュは、ＭＯＬＡＰキャッシュを備えることを特徴とする請求項１に記載のシステム。
【請求項５】
前記多次元オブジェクトは、リアルタイムのアクセス分析データを備え、前記キャッシュは高速アクセス分析データを備えることを特徴とする請求項１に記載のシステム。
【請求項６】
前記分析構成要素は、統一次元モデル（ＵＤＭ）を備えることを特徴とする請求項１に記載のシステム。
【請求項７】
前記分析構成要素は、
前記キャッシュをいつ先行的に制御するか決定する少なくとも１つの入力と、
前記入力を受け取り、前記入力に基づいてクエリ限定するクエリ・インタープリタと
を備えることを特徴とする請求項１に記載のシステム。
【請求項８】
前記入力は、前記キャッシュを先行的に制御するユーザ入力およびシステム入力からなるグループから選択される少なくとも１つを備えることを特徴とする請求項７に記載のシステム。
【請求項９】
前記システム入力は、データベース更新通知を備えることを特徴とする請求項８に記載のシステム。
【請求項１０】
前記ユーザ入力は、沈黙時間遅延、沈黙時間遅延オーバーライド、強制リフレッシュ時間、およびユーザが開始した部分キャッシュの再構築からなるグループから選択される少なくとも１つを備えることを特徴とする請求項８に記載のシステム。
【請求項１１】
前記システム入力は、最終データベース更新追跡部、ＯＬＡＰオブジェクトに影響するテーブル、および従属ＯＬＡＰオブジェクト・データ・ソース追跡部からなるグループから選択される少なくとも１つを備えることを特徴とする請求項８に記載のシステム。
【請求項１２】
前記分析構成要素は、ＲＯＬＡＰモード、ＭＯＬＡＰモード、およびＭＯＬＡＰ／ＲＯＬＡＰモードからなるグループから選択される少なくとも１つを備える先行キャッシュ動作モードを有することを特徴とする請求項１に記載のシステム。
【請求項１３】
前記ＲＯＬＡＰモードは、沈黙時間遅延達成、沈黙時間遅延オーバーライド達成、強制リフレッシュ時間達成、およびデータベースの更新済みからなるグループから選択される少なくとも１つによって動作可能にトリガされることを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記ＭＯＬＡＰモードは、
ＭＯＬＡＰキャッシュおよびＲＯＬＡＰオブジェクト両方から入手可能な、等価なクエリ・データと、
ユーザ要求と
からなるグループから選択される少なくとも１つによって動作可能にトリガされることを特徴とする請求項１２に記載のシステム。
【請求項１５】
前記ＭＯＬＡＰ／ＲＯＬＡＰモードは、要求されたリアルタイム・クエリおよびロー・レイテンシ・クエリの両方と、要求されたＭＯＬＡＰキャッシュの部分的再構築と、からなるグループから選択される少なくとも１つによって動作可能にトリガされることを特徴とする請求項１２に記載のシステム。
【請求項１６】
前記分析構成要素は、異なる先行キャッシュ処理をそれぞれが必要とする、様々なクエリを処理する能力を有することを特徴とする請求項１に記載のシステム。
【請求項１７】
前記分析構成要素は、異なる先行キャッシュ処理を各部分が必要とする、解析されたクエリを処理する能力を有することを特徴とする請求項１に記載のシステム。
【請求項１８】
前記分析構成要素は、前記分析構成要素を最適化する適合調整構成要素を備えることを特徴とする請求項１に記載のシステム。
【請求項１９】
前記適合調整構成要素は、
クエリを処理し、前記多次元オブジェクトおよび前記キャッシュとのクエリ・セッションを始めるクエリ・インタープリタと、
前記多次元オブジェクトおよび前記キャッシュの前記クエリ・セッション間の違いを決定する、前記クエリ・インタープリタに動作可能に接続される結果比較部と、
前記結果比較部によって決定される前記違いに基づいて前記クエリ・インタープリタを最適化する、前記結果比較部に動作可能に接続される性能最適化部と
を備えることを特徴とする請求項１８に記載のシステム。
【請求項２０】
少なくとも１つのデータベースから派生した少なくとも１つの多次元オブジェクトと、前記多次元オブジェクトから派生した動的な多次元分析データを備える少なくとも１つのキャッシュと、に動作可能に結合すること、および
クエリに応答して、前記多次元オブジェクトおよび前記キャッシュへのアクセスを先行的に制御すること
を備えることを特徴とするデータベース・サービング方法。
【請求項２１】
前記多次元オブジェクトは、ＲＯＬＡＰオブジェクトを備えることを特徴とする請求項２０に記載の方法。
【請求項２２】
前記データベースは、リレーショナル・データベースを備えることを特徴とする請求項２０に記載のデータベース・サービング方法。
【請求項２３】
前記キャッシュは、ＭＯＬＡＰキャッシュを備えることを特徴とする請求項２０に記載のデータベース・サービング方法。
【請求項２４】
前記多次元オブジェクトを処理して前記キャッシュを作成することをさらに備えることを特徴とする請求項２０に記載のデータベース・サービング方法。
【請求項２５】
前記処理は、バックグラウンド・トランザクションを備えることを特徴とする請求項２４に記載のデータベース・サービング方法。
【請求項２６】
前記データベース中の関連する変更を監視すること、および
関連する変更が起こると、前記多次元オブジェクトを再処理して、更新されたキャッシュを作成すること
をさらに備えることを特徴とする請求項２４に記載のデータベース・サービング方法。
【請求項２７】
自動条件検出およびユーザ開始動作検出からなるグループから選択される少なくとも１つが起こると、前記多次元オブジェクトの前記処理をキャンセルすることをさらに備えることを特徴とする請求項２４に記載のデータベース・サービング方法。
【請求項２８】
前記自動条件検出は、データベースの変更を備えることを特徴とする請求項２７に記載のデータベース・サービング方法。
【請求項２９】
前記ユーザ開始動作検出は、多次元オブジェクトの処理をコミットすること、および多次元オブジェクトに対する他のトランザクションを開始すること、からなるグループから選択される少なくとも１つを備えることを特徴とする請求項２７に記載のデータベース・サービング方法。
【請求項３０】
データベースから派生した動的な多次元分析データを提供する第１の手段と、
前記第１の手段から派生した動的な多次元分析データを提供する第２の手段と、
前記第１および第２の手段へのアクセスを先行的に制御して前記データベースに関する所望のクエリ応答を提供するために、前記第１の手段および前記第２の手段を結合する第３の手段と
を備えることを特徴とする情報をキャッシュするシステム。
【請求項３１】
データベースから派生した動的な多次元分析データを提供する少なくとも１つの多次元オブジェクトを提供すること、
少なくとも１つの多次元オブジェクトから派生した動的な多次元分析データを提供する少なくとも１つのキャッシュを構成すること、
クエリを分析するだけのために、前記キャッシュをアクセスする分析構成要素の動作モードを切り換えること、および
前記キャッシュを使用してクエリを分析すること
を備えることを特徴とするデータをキャッシュする方法。
【請求項３２】
関連する多次元オブジェクトに対する変更が起きたか決定すること、および
関連する変更が起きたとき、前記多次元オブジェクトにアクセスするように前記分析構成要素の動作モードを切り換えること
をさらに備えることを特徴とする請求項３１に記載の方法。
【請求項３３】
前記関連する変更に関連するすべてのキャッシュを削除すること、および
変更のあった多次元オブジェクトに基づいて前記キャッシュを再構築すること
をさらに備えることを特徴とする請求項３２に記載の方法。
【請求項３４】
クエリが、ロー・レイテンシ・データおよびリアルタイム・データからなるグループから選択される少なくとも１つを必要とするか決定することをさらに備えることを特徴とする請求項３１に記載の方法。
【請求項３５】
前記ロー・レイテンシ・データおよび前記リアルタイム・データ両方が要求されると、前記分析構成要素をＭＯＬＡＰ／ＲＯＬＡＰ動作モードに切り換えることをさらに備えることを特徴とする請求項３４に記載の方法。
【請求項３６】
前記多次元オブジェクトはＲＯＬＡＰオブジェクトを備えることを特徴とする請求項３１に記載の方法。
【請求項３７】
前記データベースはリレーショナル・データベースを備えることを特徴とする請求項３１に記載の方法。
【請求項３８】
前記キャッシュはＭＯＬＡＰキャッシュを備えることを特徴とする請求項３１に記載の方法。
【請求項３９】
前記分析構成要素はＵＤＭを備えることを特徴とする請求項３１に記載の方法。
【請求項４０】
前記分析構成要素は、ＭＯＬＡＰモード、ＲＯＬＡＰモード、およびＭＯＬＡＰ／ＲＯＬＡＰモードからなるグループから選択される少なくとも１つを備える動作モードを有することを特徴とする請求項３１に記載の方法。
【請求項４１】
動作モードの決定に関連する入力を提供すること、
前記入力に少なくとも部分的に基づいて前記動作モードを決定すること、
データベースから派生した動的な多次元分析データを提供する少なくとも１つの多次元オブジェクトを提供すること、
少なくとも１つの多次元オブジェクトから派生した動的な多次元分析データを提供する少なくとも１つのキャッシュを構築すること、
動作モードを有する分析構成要素を前記決定された動作モードに切り換えること、および
前記決定された動作モードを使用して、前記分析構成要素を介してクエリを処理すること
を備えることを特徴とする先行キャッシュ方法。
【請求項４２】
関連する多次元オブジェクトに対する変更が起きたか決定すること、および
関連する変更が起きたとき、前記多次元オブジェクトにアクセスするように前記分析構成要素の動作モードを切り換えること
をさらに備えることを特徴とする請求項４１に記載の方法。
【請求項４３】
前記関連する変更に関連するすべてのキャッシュを削除すること、および
変更のあった多次元オブジェクトに基づいて前記キャッシュを再構築すること
をさらに備えることを特徴とする請求項４２に記載の方法。
【請求項４４】
前記キャッシュの前記構築中に、関連する変更を決定すること、および
関連する変更が起こると、前記キャッシュの前記構築をキャンセルすること
をさらに備えることを特徴とする請求項４１に記載の方法。
【請求項４５】
前記入力は、少なくとも１つのユーザ入力および少なくとも１つのシステム入力からなるグループから選択される少なくとも１つを備えることを特徴とする請求項４１に記載の方法。
【請求項４６】
前記ユーザ入力は、ロー・レイテンシ・クエリ要求およびリアルタイム・クエリ要求からなるグループから選択される少なくとも１つを備えることを特徴とする請求項４５に記載の方法。
【請求項４７】
データベースから派生した動的な多次元分析データを提供する少なくとも１つの多次元オブジェクトを提供すること、
少なくとも１つの多次元オブジェクトから派生した動的な多次元分析データを提供する少なくとも１つのキャッシュを構築すること、
データを指定する入力を提供すること、
関連する多次元オブジェクトに対する変更が起きたか決定すること、
関連する変更が起きたとき、前記多次元オブジェクトにアクセスするように前記分析構成要素の動作モードを切り換えること、および
前記変更のあった関連する多次元オブジェクトに基づいて、前記キャッシュを再構築すること
を備えることを特徴とする先行キャッシュ方法。
【請求項４８】
前記入力は、更新されることが望ましいデータを備えることを特徴とする請求項４７に記載の方法。
【請求項４９】
関連する多次元オブジェクトに対する変更は、更新されることが望ましい前記データを備えることを特徴とする請求項４８に記載の方法。
【請求項５０】
前記入力は、関連する多次元オブジェクトにデータをリンクする情報を備えることを特徴とする請求項４７に記載の方法。
【請求項５１】
前記キャッシュの再構築の後で、前記キャッシュのみにアクセスする動作モードに前記分析構成要素を切り換えること、および
前記キャッシュを使用して、前記分析構成要素を介してクエリを処理すること
をさらに備えることを特徴とする請求項５０に記載の方法。
【請求項５２】
データベースから派生した動的な多次元分析データを提供する少なくとも１つの多次元オブジェクトを提供すること、
少なくとも１つの多次元オブジェクトから派生した動的な多次元分析データを提供する少なくとも１つのキャッシュを構築すること、
キャッシュ再構築パラメータを決定する入力を提供すること、
関連する多次元オブジェクトに対する変更が起きたか決定すること、
前記キャッシュ再構築パラメータが満たされたとき、前記多次元オブジェクトにアクセスするように前記分析構成要素の動作モードを切り換えること、および
関連する多次元オブジェクトに基づいて、前記キャッシュを再構築すること
を備えることを特徴とする先行キャッシュ方法。
【請求項５３】
前記キャッシュ再構築パラメータは、強制リフレッシュ・レート、沈黙時間遅延、および沈黙時間遅延オーバーライドからなるグループから選択される少なくとも１つを備えることを特徴とする請求項５２に記載の方法。
【請求項５４】
クエリをクエリ・インタープリタに入力すること、
異なるデータベースから派生したデータ・ソースに各セッションがアクセスする少なくとも２つのセッションに、前記クエリをロードすること、
前記セッションから得られたデータを比較して、結果比較部を介して違いを決定すること、および
前記セッションの前記違いを分析して、前記クエリ・インタープリタによって先行キャッシュを適合的に最適化すること
を備えることを特徴とする、先行キャッシュを最適化する方法。
【請求項５５】
先行キャッシュ構造に部分的に基づく動的な多次元分析データを備えることを特徴とする、データ分析を容易にし、２つ以上のコンピュータ構成要素の間で伝送されるデータ・パケット。
【請求項５６】
前記動的な多次元分析データは、データベースから派生した多次元オブジェクト・データ、および少なくとも１つの多次元オブジェクトから派生した動的な多次元分析データからなるグループから選択される少なくとも１つを備えることを特徴とする請求項５５に記載のデータ・パケット。
【請求項５７】
少なくとも１つの多次元オブジェクトから派生した前記動的な多次元分析データは、ＭＯＬＡＰキャッシュからのデータを備えることを特徴とする請求項５６に記載のデータ・パケット。
【請求項５８】
前記多次元オブジェクト・データはＯＬＡＰオブジェクトからのデータを備えることを特徴とする請求項５６に記載のデータ・パケット。
【請求項５９】
前記ＯＬＡＰオブジェクトはＲＯＬＡＰオブジェクトを備えることを特徴とする請求項５８に記載のデータ・パケット。
【請求項６０】
前記データベースはリレーショナル・データベースを備えることを特徴とする請求項５６に記載のデータ・パケット。
【請求項６１】
少なくとも１つの変形ＯＬＡＰキャッシュに少なくとも部分的に基づくデータ・セットに関連づけられた情報を提供する先行キャッシュ・システムを構成することを特徴とする、データ分析を容易にするシステムのコンピュータ実行可能な構成要素を格納するコンピュータ可読媒体。
【請求項６２】
前記変形ＯＬＡＰキャッシュはＭＯＬＡＰキャッシュを備えることを特徴とする請求項６１に記載の媒体。
【請求項６３】
前記先行キャッシュ・システムは、
多次元オブジェクトと、前記多次元オブジェクトから派生した動的な多次元分析データを備えるキャッシュとに先行的に結合することができ、前記多次元オブジェクトおよび前記キャッシュへのアクセスを選択的に制御することができる少なくとも１つの分析構成要素を備えることを特徴とする請求項６１に記載の媒体。
【請求項６４】
コンピュータ、サーバ、および可搬型電子装置からなるグループの少なくとも１つを備えることを特徴とする、請求項１に記載のシステムを利用する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的にはデータのキャッシュに関し、より詳細には、変形ＯＬＡＰ（OLAP variant）を用いてデータを先行的に（proactively）キャッシュするシステムおよび方法に関する。
【背景技術】
【０００２】
コンピューティング技術およびネットワーク技術は、毎日の生活の多くの重要な側面を変えてきた。コンピュータは、贅沢な教育用の道具や娯楽の中心というよりはむしろ、家庭において欠かせないものになり、財務状況を管理して予測し、暖房、冷房、照明およびセキュリティなどの家庭用機器の操作を制御し、持続性があり信頼できる媒体に記録およびイメージを格納するためのツールをユーザに提供する。インターネットなどのネットワーク技術は、リモートシステム、情報、および関連アプリケーションへの実質的に無制限なアクセスをユーザに提供する。
【０００３】
コンピューティング技術およびネットワーク技術が頑強（robust）で、安全かつ信頼できるようになるにつれて、より多くの消費者、卸売業者、小売業者、事業者、教育機関などが、その枠組み（paradigms）を変えて、従来の手段の代わりにインターネットなどのネットワークを利用して、業務を行うようになっている。たとえば、多くの企業および消費者が、ウェブサイトまたはオンライン・サービスを提供している。たとえば、今日では、消費者は、インターネットを介して自分の口座にアクセスし、残高照会、振込みおよび請求書の支払いなど、次々と増える利用可能な取引（transactions）を行うことができる。
【０００４】
一般に、ネットワーク・セッションは、クライアント・アプリケーションにとってアクセス可能なデータベースに情報を格納するサーバと対話するために、ユーザがクライアント・アプリケーションとインターフェースすることを伴う。たとえば、株式市場のウェブサイトは、株価情報を取り出し株式を購入するツールをユーザに提供することができる。ユーザは、株式記号を打ち込み、マウスをクリックしてクエリを活動化することによって株価情報を要求することができる。クライアント・アプリケーションは、株式のデータベース・テーブルを照会し、株価情報を返す。
【０００５】
コンピューティング技術およびネットワーク技術の欠点は、帯域幅が限定されていることである。あるユーザが帯域幅の一部分を使用することによって、使用されたその部分が他のユーザには利用できなくなる。したがって、より多くのユーザがネットワークを利用するようになるにつれて、利用可能な帯域幅が減り、それによって応答時間および性能が低下する。コンピューティング技術およびネットワーク技術の別の欠点は、利用可能なデータの量に比較して、利用可能なデータ転送レートが制限されていることである。たとえば、大量のデータ（たとえば、様々なサーバに分散されている）を取出する複数の要求が時間的に集中する可能性があり、そのことによっても、やはり性能を低下させることになる。
【０００６】
したがって、大型データベースについての情報へのアクセスを助けるために、ビジネス・インテリジェンス（ＢＩ）による解決策が開発された。多くの企業が、最近になってリレーショナル・タイプのデータベースに移行した。以前の出来事に関する格納されたデータについての「誰が（who）」および「何が（what）」という質問に答えるために、戦術的な情報を格納するデータウェア・ハウスが開発された。しかし、データウェア・ハウスは履歴データを取り出すことしかできないという事実により、これには制限があることがわかった。したがってデータの「誰が」および「何が」だけでなく、「この場合にはどうなるか（when if）」および「なぜ（why）」にも答えるＯＬＡＰ（on-line analytical processing；オンライン分析処理／多次元分析）システムが開発された。ＯＬＡＰシステムは、高速な、信頼できる、対話形式の処理を介して分析者、経営者、および幹部が情報を洞察することを可能にする集約データの多次元ビューである。
【０００７】
ＯＬＡＰツールなどの分析ツールは、非常に多くのデータへのアクセス時間を短くするのを助ける。こうしたツールを使用することによって、ユーザは、すべてのデータを逐語的に取り出すのではなく、データに関して一般的な質問をしたり、または「クエリ」を送ることができる。したがって、「データに関するデータ」またはメタデータは、クエリ処理を促進させること、および必要なネットワーク帯域幅を削減することに役立っている。しかし、ビジネス環境ではよくあることだが、昨日は速かったものが今日の標準では遅いと見なされる。
【０００８】
【特許文献１】米国特許第６，４９３，７１８号明細書
【特許文献２】米国特許第６，２０５，４４７号明細書
【特許文献３】米国特許第５，９７８，７９６号明細書
【特許文献４】米国特許第５，９２６，８１８号明細書
【特許文献５】米国特許第５，８７８，２２３号明細書
【非特許文献１】PANOS KALNIS and DIMITRIS PAPADIAS. Proxy-Server Architecture for OLAP. Proceeding of the 2001 ACM SIGMOD Conference. pp. 36-378.
【非特許文献２】DENNIS SHASHA. The Emergence of the Date Warehouse. Department of Computer Science. New York University. August. 2000. 13 pages
【非特許文献３】YIHONG ZHAO. KRISTIN TUFTE. and JEFFREY R. NAUGHTON. On the Performance of an Array-Based ADT for OLAP Workloads. Technical Report CS-TR-96-1313. University of Wisconsin-Madison. CS Department. May. 1996, 20 page
【非特許文献４】VOLKER MARKL. FRANK RAMSAK. and RUDOLF BAYER. Improving OLAP Performance by Multidimensional Hierarchical Clustering. IEEE proceeding of IDEAS'99 13 page.
【発明の開示】
【発明が解決しようとする課題】
【０００９】
データストアが急激に大型化しているにもかかわらず、より高速な情報配信に対する要求は常に高まっている。
【課題を解決するための手段】
【００１０】
以下では、本発明のいくつかの態様の基本的な理解を提供するために、本発明の簡略化した要約を表す。この要約は、本発明の包括的な概要ではない。本発明の主要な／重大な要素を識別することも、本発明の範囲を詳述することも意図していない。後で提示するより詳細な説明の前置きとして、本発明のいくつかの概念を簡略化した形で提示することだけを目的としている。
【００１１】
本発明は、全般的にはデータのキャッシュに関し、より詳細には、変形ＯＬＡＰ（OLAP variants）を用いてデータを先行的にキャッシュするシステムおよび方法に関する。変形ＯＬＡＰは、データ・ソースについての様々なクエリ・ソースを作成するのに利用される。データ・ソースに基づいて多次元オブジェクトを変形ＯＬＡＰキャッシュ、たとえばＭＯＬＡＰ（Multidimensional OLAP；多次元ＯＬＡＰ）キャッシュに効率的に変換することによって、ユーザは、クエリを速く分析させることができるようになり、依然としてデータ・ソースにリアルタイムにアクセスすることもできる。本発明はまた、変形体がいつ使用されるかに関してユーザが対話形式で参加することを可能にし、非先行キャッシュ方式を利用する場合よりも高速でユーザ指向のクエリ応答を提供する。
【００１２】
本発明はまた、多次元分析データに、すなわち、既存のデータ構造の有用性を広げ、非常に大型のデータベースの高速かつ効率的な分析を提供する多次元分析データに、部分的に基づいたキャッシュを利用することにより、大型データベースに直接アクセスする必要性を減らすことによって、データ分析を容易にする。すべての変形ＯＬＡＰには長所も短所もあるので、単一の変形体を使用するシステムでは、古くなったデータを返し、かつ／または応答が遅く、概してユーザを完全には満足させない。本発明は、クエリ応答時間を徹底的に削減し、同時に、リアルタイムの情報が抽出されることを可能にし、ユーザが高速に、かつクエリに応答するのに使用された変形体に関して見かけ上透過にデータを受け取ることを可能にし、操作性（user-friendliness）を最大限に向上させ、情報取出しの速度を上げ、利用される変形体にかかわらず、信頼できる情報を提供する。
【００１３】
上記の目的および関連する目的を達成するために、本発明の説明のための態様を、本明細書において以下の説明および添付の図面に関連して説明する。ただし、こうした態様は本発明の原理を利用することができる様々な方法のごくわずかを示すに過ぎず、本発明は、このようなすべての態様およびその等価物を含むことを意図する。本発明の他の利点および新規の特徴は、本発明の以下の詳細な説明を図面と併せ読むことにより、明らかになるであろう。
【発明を実施するための最良の形態】
【００１４】
ここで図面を参照して本発明を説明するが、同じ参照番号は、全体を通して同じ要素を指すのに使われる。以下の説明では、説明のために、多くの具体的な詳細を、本発明の完全な理解を提供するために述べる。ただし、こうした具体的な詳細なしでも本発明を実施できることが明らかになるであろう。他の例では、本発明の説明を容易にするために、公知の構造および装置をブロック図の形で示す。
【００１５】
本願では、「構成要素」という用語は、コンピュータ関連のエンティティ、すなわちハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかを指すことを意図している。たとえば、構成要素は、プロセッサ上で実行されている処理、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および／またはコンピュータでよいが、それに限定されない。実例として、サーバ上で実行されているアプリケーションおよびそのサーバ両方がコンピュータ構成要素となることができる。１つまたは複数の構成要素が、実行の処理および／またはスレッド中に常駐することができ、構成要素は、１台のコンピュータに配置することも、かつ／または２台以上のコンピュータの間で分散することもできる。「スレッド」とは、オペレーティング・システムのコアが実行のためにスケジュールする処理におけるエンティティである。当該分野において公知であるように、各スレッドは、スレッドの実行に関連づけられた揮発性データである、関連する「コンテクスト」を有する。スレッドのコンテクストは、システム・レジスタの内容およびスレッドの処理に属す仮想アドレスを含む。したがって、スレッドのコンテクストを備える実際のデータは、実行時に変化する。
【００１６】
ロー・レイテンシ（低待ち時間）データおよびリアルタイム・データ両方を提供することができる変形ＯＬＡＰがないので、本発明は、バックグラウンド処理として、そのオブジェクトのＭＯＬＡＰ等価物を構築することによって、ＲＯＬＡＰオブジェクト（次元、区分および集約）に対してＭＯＬＡＰ性能を利用する。そのバックグラウンド処理が完了すると、オブジェクトの使用は、はるかに速いクエリ応答時間を可能にするＭＯＬＡＰクエリに切り換えられる。関連するリレーショナル・オブジェクト（たとえば、ＯＬＡＰオブジェクトの内容を定義するテーブル）に変更が起こると、ＯＬＡＰオブジェクトは、切り換えられてＲＯＬＡＰモードに戻され、すべての関連するキャッシュが取り去られ、その間、バックグラウンドでは、新しいＭＯＬＡＰ等価物が作成される。したがって、ＭＯＬＡＰ等価物は、クエリを処理するのに使用されているモードに応じて先行的に制御されるキャッシュを提供するのに利用される。こうすることによって、ユーザは、ＲＯＬＡＰオブジェクトを照会する通常の実行代価を払うことなく、データを直ちに閲覧するという利益を得ること（および／または、リレーショナル・データベースの最新イメージを常に反映すること）ができるようになる。これにより、ユーザは、本発明を、常に最新のデータをできるだけ速く提供する、たとえばリレーショナル・データベースなどのデータベースの周囲にあるメタデータのシム・レイヤ（shim layer）として理解することができるようになる。最大限に包括的な性能を達成するために、ユーザは、先行キャッシュ（proactive caching）を微調整し、リレーショナル・データベース中の変更に合わせてキャッシュの振る舞い（behavior）に影響を与えるための様々な選択肢（こうした選択肢は、後で詳述する）を有する。
【００１７】
ユーザが最新のデータ（リアルタイムのＯＬＡＰ）を見ることに興味をもっているが、ＲＯＬＡＰデータの閲覧に固有の遅延を望まない場合、ユーザは、バックグラウンド・トランザクションにおいて、等価なＭＯＬＡＰオブジェクトを構築するように、また、ＭＯＬＡＰ「イメージ」を代わりに使うようにクエリを「切り換える」ようにシステムに命令することができる。基底のリレーショナル・オブジェクトに対して変更が起こるとすぐに、システムは自動的にそうした変更に応答し、オブジェクトをＲＯＬＡＰモードに復帰させる短いトランザクションをオープンする。次いで、システムは、バックグラウンド・トランザクションを再オープンし、ＭＯＬＡＰイメージを再構築する。バックグラウンド・トランザクションが進行している間に更新が起きた場合、ＭＯＬＡＰ処理はキャンセルされ、バックグラウンド・トランザクションが再始動される。こうしたバックグラウンド・トランザクションは、バックグラウンド・トランザクションであるがために、オブジェクトの現在のロッキング・モードと互換性のないモードにオブジェクトをロックする必要性を、トランザクションを開始したユーザがキャンセルすることができるという意味で、幾分「二級市民」である。
【００１８】
図１に、本発明の態様による例示的な先行キャッシュ処理１００を示してある。先行キャッシュ処理１００が１０２で始まり、１０４でＲＯＬＡＰオブジェクトが処理されてＭＯＬＡＰキャッシュになる。処理１００は、キャンセルを受けない限り１０６で完了されるが、キャンセルを受けると、１０８でデータベースが変更されたかどうかに関する検査を呼び出す。１０８でデータベースに変更がない場合、処理１００は、１０６で完了される。しかし、１０８でデータベースに変更がある場合、処理１００は再スケジュールされ、１０２で再度始まる。本発明の一般的な例では、動作は、１１０でユーザによって生成される。こうした動作１１０は、処理１００を開始させる、ＲＯＬＡＰオブジェクトの処理のコミットすること（committing）１１２を含むことができる。ユーザによって生成される別の動作１１０は、ＲＯＬＡＰオブジェクトに対する別のトランザクションを開始すること（１１４）、既存のＲＯＬＡＰオブジェクトからＭＯＬＡＰキャッシュへの処理１０４のキャンセルをすること、を含むことができる。システムはまた、たとえばデータベースの変更１１８などの条件１１６を自動的に検出することができる。データベースの変更１１８が起こると、既存のＲＯＬＡＰオブジェクトからＭＯＬＡＰキャッシュへの処理１０４はキャンセルされる。
【００１９】
ユーザは、新しいＭＯＬＡＰイメージ構築のバックグラウンド・トランザクションを開始する前に、「沈黙時間遅延（quiet time delay）」の機能によって「沈黙時間（quiet time）」の最短持続期間（minimum duration）を指定することもできる。こうすることにより、ＯＬＴＰ（オンライン・トランザクション処理）への複数のクロス・トランザクションの挿入／更新が可能になる（多くのＯＬＴＰアプリケーションは、ある特定の瞬間に個別に挿入を行うことによって、トランザクションのデータを更新する）。こうすることによって、クエリを繰り返すことによる、ＯＬＡＰサーバがＯＬＴＰシステムに対してかけるクエリについての負荷が減少する。沈黙時間遅延は、関与する任意のテーブルの「最後に更新された」時間を追跡する構成要素によって達成される。
【００２０】
沈黙時間遅延の機能と同様、任意選択的な「遅延」トリガの機能が、指定された期限（設定可能な間隔）ごとに累積した変更を処理するバックグラウンド・スレッドにおいてすべての変更が追跡されることを指定する。この論理方式では、２つのスレッドの間にキューを実装することによってこの機能が実装され、呼出しはすべて、このキューを通して処理される。この機能により、特定のプロバイダによって提示することができる通知機構は、テーブルが更新されたかどうかを尋ねるクエリでＯＬＴＰに過負荷をかけることを防止できるようになる。概して、これは、先行キャッシュ・サブ・システム全体の通知動作を示しているので、（オブジェクトごとではなく）サーバごとに達成される。
【００２１】
別の機能により、特定のテーブル／ビュー／ＲＯＬＡＰオブジェクトを「ダーティ（dirty）」とユーザがマーク付けする手段を介して、上記の処理を「手作業（manual）」でトリガする手作業の変更を行うことが可能になる。これは通常、通常の機構、たとえばＸＭＬ／Ａ（拡張マークアップ言語／分析）などを介してサーバに送ることができるＤＤＬ（データ定義言語）ステートメントによって行われる。本発明の一態様では、２つのカテゴリのマーク付けがあり得る。すなわち、リレーショナル・オブジェクトのマーク付け（複数のＲＯＬＡＰオブジェクトに影響を与える可能性がある）および／またはＲＯＬＡＰオブジェクトのマーク付け（基本的に、依存性に関する限り、リレーショナル層をブートストラップする）である。
【００２２】
さらに別の機能により、追跡テーブルのリストを作成する手段が可能になる。ユーザは、ある特定のＲＯＬＡＰオブジェクトに影響を与えるテーブルにラベルづけすることができる。こうすることの利点には、以下のようなものがある。この機能の１つの利点は、オブジェクトが基づいているある特定のテーブルが実際のテーブルではなく、ビューまたはＤＳＶ（データセット・ビューア）のビュー（名前つきクエリ）である場合、ビューが変更されたかに関するイベントを追跡するのは難しくなる（一般的な通知機構すなわちＳＱＬ（構造化照会言語）通知およびトリガは、規定のビューおよび名前つきクエリではなくテーブルおよび具体化されたビューに作用する）ことである。この機能がないと、ビューに対する変更を追跡する唯一の妥当な方法は、そのＳＱＬ定義を解析することである（しかし、これ自体もやはり他のビューに基づき、ＳＱＬの解析は妥当な手法ではない）。もう１つの利点は、「手作業」での変更機能に関連する。しばしば、オブジェクトがある特定のテーブルではなく、変更のあったテーブルに束縛されている場合でも、そのオブジェクトを「ダーティ」とマーク付けすることが望ましい。
【００２３】
本発明の一態様では、こうした手段は、以下の２つの場所のうちの少なくとも１つでテーブルのリストを作成することができる。すなわち、１）ＤＳＶ中で、先行キャッシュの追跡用に代替テーブルのリストが提供される。したがって、先行キャッシュのために、ＲＯＬＡＰオブジェクトは、このテーブルに従属する場合、それ自体を、代替テーブルに実際に従属するものとして登録する。代替テーブルは、追跡可能なリレーショナル・オブジェクト（テーブルおよび／または単なるビューではなく、具体化されたビュー）であることが望ましい。２）ＲＯＬＡＰオブジェクト中で、オブジェクトを追跡するための追加の代替テーブルのリストが提供される。これはしばしば、ＤＳＶ（区分）中のリレーショナル・オブジェクトへの必要な束縛をもたないオブジェクトにとって必要である。こうしたテーブルも、追跡可能なオブジェクト（テーブルおよび／または具体化されたビュー）であることが望ましい。
【００２４】
さらに別の機能は、「リミテッド・レイテンシ（limited latency；限定待ち時間）」のための手段を提供する。この機能は、新しいＭＯＬＡＰイメージの作成開始と、古いＭＯＬＡＰイメージのキャンセルおよび（ある場合には）ＲＯＬＡＰへの復帰との間の持続時間（duration）を指定する。本発明の一態様では、デフォルトで、この時間はゼロである（基本的に、２つのトランザクション、すなわちオブジェクトをＲＯＬＡＰにロールバックする１つのトランザクション、およびＭＯＬＡＰエンジンの構築を開始する１つのトランザクション、が並列に始まる）。この機能の利点には、クエリがＲＯＬＡＰストアの除去に最短に進む持続期間を有すること、および（満了間隔が経過していない場合に）ＲＯＬＡＰのＭＯＬＡＰイメージ構築の最後に、先行キャッシュされた次元の分析を提供すること、が含まれる。変更が実際に増分した場合、先行キャッシュされた区分は影響を受けない。変更が細分属性に影響を与えない場合、変更はフレキシブルな集約を除去し（ＲＯＬＡＰに復帰し再スケジュールする）、他のすべてに対して何も行わないままで残す。影響を与えた場合、この手段は、従属区分／集約をＲＯＬＡＰに復帰させる。
【００２５】
「沈黙時間のオーバーライド」の機能は、最初の通知の後で特定の長さの時間に達した場合、ＭＯＬＡＰイメージの作成が無条件に処理すべき対象から外されることを指定するための手段を提供する。ただし、本発明の一態様では、オーバーライドによってＭＯＬＡＰイメージの作成が開始された場合、また、この構築中に別の通知が届いた場合、その通知は進行中のＭＯＬＡＰイメージの作成をキャンセルしないことに留意されたい。この通知は、通常の処理のために記録される（「通常の」経路を使って処理が開始された場合、現在の記憶モードがＲＯＬＡＰの場合には通知はＭＯＬＡＰイメージの作成のキャンセルを引き起こす）。
【００２６】
「強制再構築」の機能は、新しいイメージが構築された後の特定の時間にＭＯＬＡＰイメージの作成が無条件に始まることを指定する。本発明の一態様では、イメージの作成中に通知が届いた場合、通知は通常の処理のためにキューに入れられる。
【００２７】
図２に移ると、本発明の態様によるデータベース・サービング・システム（database serving system）２００のブロック図を示してある。データベース・サービング・システム２００は、先行キャッシュ・システム２０２、多次元オブジェクトのサブセット２３２を有する、たとえば「ＯＬＡＰオブジェクト」などの多次元オブジェクト２０８、および更新２１８を受け入れることができるデータベース２１０を備える。先行キャッシュ・システム２０２は、分析構成要素２０４、およびキャッシュ・サブセット２３０を有する少なくとも１つのキャッシュ２０６を備える。このシステム２００は、先行キャッシュ・システム２０２を介してユーザにクエリ分析および応答を提供する。先行キャッシュ・システム２０２は、データベース２１０に基づく多次元オブジェクト２０８を利用して、ユーザに対して見かけ上透過的な状態で、ロー・レイテンシの応答および／またはリアルタイムの応答を提供するシステムを提供する。
【００２８】
本発明の本態様では、分析構成要素２０４は、クエリ入力２２０、ユーザ入力２１２、システム入力２１４、および更新通知用のデータベース入力２１６などを備える入力を受ける。本発明の他の例では、データベース入力２１６は、システム入力２１４の一部である。分析構成要素２０４は、キャッシュ・インターフェース２２２および多次元オブジェクト・インターフェース２２４を有する。こうしたインターフェース２２２、２２４は、所望のクエリ応答（すなわち、適切な応答を求めて適切なキャッシュを先行して探索するクエリ応答）に応じて、分析構成要素２０４からキャッシュ２０６および／または多次元オブジェクト２０８へのアクセスを提供する。本発明の他の態様では、分析構成要素は、キャッシュ・サブセット２３０へのキャッシュ・サブセット・インターフェース２２６、および多次元オブジェクトのサブセット２３２への多次元オブジェクト・サブセット・インターフェース２２８を有する。サブセット・インターフェース２２６、２２８は、キャッシュ２０６および／または多次元オブジェクト２０８の他の部分が更新されている間、キャッシュ２０６および多次元オブジェクト２０８のサブセットへのアクセスを提供する。キャッシュ２０６は、多次元オブジェクト２０８から派生した（引き出した）情報を備える。多次元オブジェクト２０８は、データベース２１０に基づく。
【００２９】
本発明の一例では、情報をキャッシュするシステムは、データベース２１０から派生した（引き出した）動的な多次元分析データを提供する少なくとも１つの多次元オブジェクト２０８、少なくとも１つの多次元オブジェクト２０８からの動的な多次元分析データを提供する少なくとも１つのキャッシュ２０６、ならびに、多次元オブジェクト２０８およびキャッシュ２０６へのアクセスを先行して制御する、多次元オブジェクト２０８およびキャッシュ２０６に結合された少なくとも１つの分析構成要素２０４を備える。本発明の他の例では、多次元オブジェクト２０８は、ＲＯＬＡＰオブジェクトなどのＯＬＡＰオブジェクトを備える。本発明のさらに別の例では、分析構成要素２０４は、ＵＤＭ（Unified Dimensional Model；統一次元モデル）を備える。本発明のさらに別の例では、キャッシュ２０６は、ＭＯＬＡＰキャッシュなどを備える。本発明の他の例は、リアルタイムのアクセス分析データを備える多次元オブジェクト２０８、および高速アクセス分析データを備えるキャッシュ２０６を含むが、それに限定されるものではない。本発明のさらに他の例は、リレーショナル・データベースを備えるデータベース２１０を含む。
【００３０】
本発明の付加的な例はまた、分析構成要素２０４、キャッシュ２０６、および少なくとも１つの多次元オブジェクト２０８へのアクセスを可能にする多次元オブジェクト・インターフェース２２４を備える先行キャッシュ・システム２０２を含む。この分析構成要素は、多次元オブジェクト２０８およびキャッシュ２０６へのアクセスを制御することができる。したがって、多次元オブジェクト２０８は先行キャッシュ・システム２０２の一部である必要はない。多次元オブジェクト２０８は、データベース管理システムの一部でよい。本発明は、したがって、既存のデータベース管理システムで使用される能力を有することによって、本発明の運用に柔軟性をもたせる。このことは、その性能を高めながらも、既存のシステムを向上させ、有用性を最大限に高める。
【００３１】
本発明のさらなる例は、分析構成要素２０４、キャッシュ２０６にアクセスし制御することを可能にするキャッシュ・インターフェース２２２、および少なくとも１つの多次元オブジェクト２０８へのアクセスを可能にする多次元オブジェクト・インターフェース２２４を備える先行キャッシュ・システム２０２をさらに含む。したがって、キャッシュ２０６は、先行キャッシュ・システム２０２の外部に常駐することができる。このことにより、キャッシュ資源が既に利用可能である既存のプラットフォームに本発明をより一層柔軟に実装することさえもができるようになる。
【００３２】
図３を参照すると、本発明の態様によるデータベース・サービング・システム３００の別のブロック図を示してある。データベース・サービング・システム３００は、先行キャッシュ・システム３０２、たとえばＯＬＡＰオブジェクトなどの多次元オブジェクト３０８、および更新３１８を受け入れることができるデータベース３１０を備える。先行キャッシュ・システム３０２は、分析構成要素３０４、およびキャッシュ３０６を備える。本発明の本態様では、分析構成要素３０４は、クエリ入力３２０、ユーザ入力３１２、システム入力３１４、および更新通知用のデータベース入力３１６などを備える入力を受ける。本発明の他の例では、データベース入力３１６は、システム入力３１４の一部である。分析構成要素３０４は、多次元オブジェクト・インターフェース３２２を有する。本発明の本態様では、キャッシュ３０６は、多次元オブジェクト３０８に基づいてバックグラウンド動作で構築されている。したがって、この特定の時間には、分析構成要素３０４は、クエリへ応答するようにキャッシュ３０６とアクティブにインターフェースしていない。したがって、分析構成要素３０４は、多次元オブジェクト３０８のみにアクセスすることによって、クエリ入力３２０に応答する。
【００３３】
図４に移ると、本発明の態様によるデータベース・サービング・システム４００のさらに別のブロック図を示してある。データベース・サービング・システム４００は、先行キャッシュ・システム４０２、たとえばＯＬＡＰオブジェクトなどの多次元オブジェクト４０８、およびデータベース・テーブル４２６への更新４１８を受け入れることができるデータベース４１０を備える。先行キャッシュ・システム４０２は、分析構成要素４０４、および新しいキャッシュ４０６を備える。本発明の本態様では、分析構成要素４０４は、クエリ入力４２０、ユーザ入力４１２、システム入力４１４、および更新通知用のデータベース入力４１６などを備える入力を受ける。本発明の他の例では、データベース入力４１６は、システム入力４１４の一部である。分析構成要素４０４は、多次元オブジェクト・インターフェース４２２を有する。本発明の本態様では、新しいキャッシュ４０６は、多次元オブジェクト４０８からバックグラウンド動作で構築されている。したがって、この特定の時間には、分析構成要素４０４は、クエリへ応答するように新しいキャッシュ４０６とアクティブにインターフェースしていない。したがって、分析構成要素４０４は、多次元オブジェクト４０８のみにアクセスすることによって、クエリ入力４２０に応答する。さらに、更新４１８が受け取られると、データベース・テーブル４２６が影響を受ける。本発明の一態様のこの例では、データベース・テーブル４２６中の変更は、クエリ入力４２０が応答のために依拠する多次元オブジェクト４０８にも影響を与える。したがって、更新４１８以前のデータベースのデータに基づく古いキャッシュ４２４は削除され、最新のデータベースのデータの更新を反映するように、先行キャッシュ・システム４０２のバックグラウンド処理において新しいキャッシュ４０６が構築される。本発明の他の例では、古いキャッシュ４２４の削除は、ユーザ入力４１２および／またはシステム入力４１４によって引き起こすことができる。
【００３４】
図５に移ると、本発明の態様によるキャッシュ展開構造５００のブロック図を示してある。構造５００は、データベース・テーブル５１０を含むデータベース５０２、メタデータ・セット５０４、次元モデル（たとえば「ＯＬＡＰオブジェクト」などの多次元オブジェクト）５０６、およびキャッシュ５０８を備える。通常、データベース５０２からのデータに関する情報は、コンパイルされてメタデータ・セット５０４になる。メタデータ・オブジェクトは、メタデータ・セット５０４から構成されて次元モデル５０６を形成する。次元モデル５０６は通常、次元、キューブ、および測度などを含む。これにより、ＯＬＡＰ管理ツリーは、次元モデル５０６中のメタデータ・オブジェクトにアクセスすることが可能になる。このようにして、関連するデータベースに基づく多次元オブジェクトから派生した（引き出した）動的な多次元分析データを有するキャッシュ５０８は、次元モデル５０６から構成することができる。
【００３５】
続いて図６に移ると、本発明の態様によるキャッシュ展開構造６００の別のブロック図を示してある。本発明のこの例では、構造６００は、リレーショナル・データベース・テーブル６１０を含むリレーショナル・データベース６０２、メタデータ・セット６０４、ＲＯＬＡＰオブジェクト６０６、およびＭＯＬＡＰキャッシュ６０８を備える。この例では、ＭＯＬＡＰキャッシュ６０８は、メタデータ・セット６０４およびリレーショナル・データベース６１０から派生した（引き出した）ＲＯＬＡＰオブジェクトから構成される。異なる２つのＯＬＡＰデータ・セットの変形体が利用可能（たとえば、ＲＯＬＡＰ変形体およびＭＯＬＡＰ変形体など）なので、ユーザおよび／またはシステムによって所望されたやり方でクエリ応答を透過的に引き渡すための適切なデータ・セットへの先行アクセスが可能になる。
【００３６】
図７には、本発明の態様による先行キャッシュ・システム７００のブロック図を示してある。先行キャッシュ・システム７００は、分析構成要素７０２、キャッシュ・サブセット７２０を有するキャッシュ７０４、および多次元オブジェクトのサブセット７２２を有する、たとえばＯＬＡＰオブジェクトなどの多次元オブジェクト７０６を備える。本発明の一態様では、分析構成要素７０２は、クエリ・インタープリタ７１０、ロー・レイテンシ端末７１４、およびリアルタイム端末７１２を備える。分析構成要素７０２は、たとえばユーザ入力７１６、システム入力７１８、およびクエリ入力７０８などの入力を受け入れることができる。本発明の一態様では、クエリ・インタープリタ７１０は、複合クエリを（複数の）「部分」に解析しまたは分解することができ、クエリ入力７０８の内容に基づいて、どちらの端末７１２、７１４が適切であるか、先行的に決定することができる。たとえば、部分＃１は「時間の影響を受けるデータ（time sensitive data）」とラベルづけすることができ、キャッシュ７０４、具体的にはキャッシュ・サブセット７２０にアクセスするために、ロー・レイテンシ端末７１４に向けられる。同様に、部分＃２は、「最新データ（latest data）」とラベルづけすることができ、多次元オブジェクト７０６、具体的には多次元オブジェクトのサブセット７２２にアクセスするために、リアルタイム端末７１２に向けることができる。同様にして、部分＃ｎ（「ｎ」は１から無限大の整数を表す）は、上記のカテゴリのいずれかでラベル付けすることができ、キャッシュ７０４および／または多次元オブジェクト７０６のどちらかに向けることができる。本発明のさらに別の態様では、クエリ入力７０８の解析は、ユーザ入力７１６および／またはシステム入力７１８（データベース状況などを含む）に基づくことができる。「ロー・レイテンシ」および「リアルタイム」を「端末（terminal）」として説明したが、実際には分析構成要素の一部であり、図７に示すように別個のエンティティである必要はない。したがって、クエリ・インタープリタ７１０の一部として含むこともでき、キャッシュ７０４および／または着信データを制御する組込みフィルタとして、および／または外部フィルタの一部として、多次元オブジェクト７０６の一部として含むこともできる。
【００３７】
図８を参照すると、本発明の態様による先行キャッシュ・システム８００の別のブロック図を示してある。先行キャッシュ・システム８００は、分析構成要素８０２、キャッシュ８０４、および、たとえばＯＬＡＰオブジェクトなどの多次元オブジェクト８０６を備える。本発明の一態様では、分析構成要素８０２は、クエリ・インタープリタ８１６、ロー・レイテンシ端末８１８、およびリアルタイム端末８２０を備える。クエリ・インタープリタ８１６は、様々なクエリ入力８０８を処理する。こうしたクエリ入力には任意の数の入力を含むことができるが、説明を簡単にするために、３つの入力を示してある。こうした入力には、ユーザ＃１の入力８１０、ユーザ＃２の入力８１２、およびユーザ＃３の入力８１４が含まれる。各ユーザ入力は、クエリ・インタープリタ８１６が分析する少なくとも１つのクエリを含む。たとえば、第１のユーザ＃１の入力が、「製品情報」という次元と、「データベースの安定」という情報に関連したデータベース状況とを有するクエリ＃１を含む場合、クエリ・インタープリタ８１６は、そのアクセスをキャッシュ８０４にアクセスするロー・レイテンシ端末８１８に向けることができる。キャッシュ８０４は、高速応答時間などを備える多次元ＯＬＡＰキャッシュでよい。第２のユーザ＃２の入力が、「人口統計」という次元と、「データベースの更新中」という情報に関連したデータベース状況とを有するクエリ＃２を含む場合、クエリ・インタープリタ８１６は、そのアクセスを多次元オブジェクト８０６にアクセスするリアルタイム端末８２０に向けることができる。多次元オブジェクトの特性は、リアルタイムのデータ・アクセスなどを含むことができる。同様に、第３のユーザ＃３の入力が、「金融データ」という次元と、「データベースの更新中」という情報に関連したデータベース状況とを有する場合、クエリ・インタープリタ８１６は、そのアクセスを多次元オブジェクト８０６にアクセスするリアルタイム端末８２０に向けることができる。このようにして、先行キャッシュ・システム８００は、キャッシュが使用されるべきか否かについてのアクティブなユーザ入力なしで、ユーザに所望の応答を提供する。ただし、本発明は、どのようにして、および／またはいつ先行キャッシュを行うか決定するための、ユーザおよび／またはシステム入力の使用を排除するものではない。
【００３８】
図９に移ると、本発明の態様による先行キャッシュ・システムの入力９００のブロック図を示してある。上で説明したように、分析構成要素９０２は、様々な入力を受けることができる。こうした入力には、クエリ入力９０４、ユーザ入力９０６、およびシステム入力９０８が含まれるが、それに限定されるものではない。ユーザ入力９０６は、沈黙時間遅延９１０、沈黙時間遅延オーバーライド９１２、強制リフレッシュ時間９１４、ユーザ開始による部分キャッシュの再構築９１６、およびユーザ入力「ｎ」９１８（「ｎ」は任意の無限の数および／または入力のタイプを表す）などを含むが、それに限定されるものではない。システム入力９０８は、最終データベース更新追跡部９２０、ＯＬＡＰオブジェクトに影響するテーブル９２２、従属ＯＬＡＰオブジェクト・データ・ソース追跡部９２４、およびシステム入力「ｎ」９２６（「ｎ」は任意の無限の数および／または入力のタイプを表す）などを含むが、それに限定されるものではない。
【００３９】
沈黙時間遅延９１０は、何らかの関連情報に関するデータベースが更新されてからどれだけの時間が経過したか追跡する手段を備える。この関連情報は、実際のデータ・テーブルのエントリおよび／またはＯＬＡＰオブジェクトでよい。沈黙時間オーバーライド９１２は、沈黙時間遅延９１０が達成されていなくとも、キャッシュをオーバーライドし再構築するための、システムおよび／またはユーザによって決定される手段を備える。これにより、沈黙時間遅延９１０に達する直前に常に起こる、データベースに対する散在しているが頻繁な更新によってキャッシュが更新されないことが防止されるようになる。強制リフレッシュ時間９１４は、所与の間隔でキャッシュのリフレッシュを強制するための手段を備える。これにより、データベースは強制リフレッシュ時間９１４内にどの更新も報告されていないという事実にかかわらず、キャッシュが古くなったデータを含むことを防止する。また、これにより、データベースが状況データを送ることができない場合でさえも、キャッシュを確実に更新できるようにする。ユーザ開始による部分キャッシュの再構築９１６は、キャッシュのどの部分が再構築されるべきかを、および／またはキャッシュのその部分がいつ再構築されるかを、ユーザが制御できるようにするための手段を備える。これにより、ユーザは、たとえば、他のデータを高速アクセス可能性用に保持しながら、ある特定のサブセットが再構築されるべきかどうかを、選択的に決定することができるようになる。ユーザ入力「ｎ」９１８は、分析構成要素９０２による先行キャッシュを支援する任意の手段を備える。先行キャッシュのより効率的な使用を支援するために、ユーザによって多くの異なるタイミング・パラメータおよび／またはデータ・パラメータを入力できることが当業者には理解されよう。このような手段の１つは、たとえば、特定のテーブル／ビュー／ＯＬＡＰオブジェクトに更新が必要であるとマーク付けするために、ユーザが手作業での変更を入力することを可能にすることを含む。
【００４０】
最終データベース更新追跡部９２０は、いつデータベースが最後に更新されたか追跡するための手段を備える。この入力は、他の入力と共に使用して、キャッシュ・データなどの古さを決定することができる。ＯＬＡＰオブジェクトに影響するテーブル９２２は、キャッシュが基づいているＯＬＡＰオブジェクトに関連する、データベース・テーブルのデータを追跡し／そのリストを作成するための手段を備える。このことは、データベースが無関係なテーブル更新を受けた際にキャッシュを更新することを防止するために、更新をキャッシュすることについてのフィルタリングが可能になる。従属ＯＬＡＰオブジェクト・データ・ソース追跡部９２４は、ある特定のＯＬＡＰオブジェクトへのキャッシュ・データの従属を追跡するための手段を備える。このことは、無関係なＯＬＡＰオブジェクトが変更された際にキャッシュを更新することを防止するために、更新をキャッシュすることについてフィルタリングすることも可能になる。システム入力「ｎ」９２６は、分析構成要素９０２による先行キャッシュを支援する任意の手段を備える。先行キャッシュのより効率的な使用を支援するために、システムによって多くの異なるタイミング・パラメータおよび／またはデータ・パラメータを入力できることが当業者には理解されよう。こうした入力には、データベース更新通知なども含まれるが、それに限定されるものではない。
【００４１】
上記の入力パラメータを分析構成要素９０２に進むものとして説明したが、分析構成要素９０２自体が、上で説明した入力を使用するのに必要な機能を実施するための機能性を提供する下位構成要素を含むことができることに留意されたい。分析構成要素９０２の外部構成要素が必要な機能性の一部および／または全部を提供することも可能である。
【００４２】
図１０に、本発明の態様による先行キャッシュ・システムのパラメータ１０００のブロック図を示してある。本発明の一例では、先行キャッシュ・システム・パラメータ１０００は、動作モード１００２およびトリガ１０１０などを備える。動作モードは、ＲＯＬＡＰモード１００４、ＭＯＬＡＰモード１００６、およびＭＯＬＡＰ／ＲＯＬＡＰモード１００８などを備える。ＲＯＬＡＰモード１００４用のトリガ１０１０は、沈黙時間遅延達成（のトリガ）１０１２、沈黙時間遅延オーバーライド達成（のトリガ）１０１４、強制リフレッシュ時間達成（のトリガ）１０１６、およびデータベース更新（のトリガ）１０１８などを備える。ＭＯＬＡＰモード１００６用のトリガ１０１０は、等価なＭＯＬＡＰおよびＲＯＬＡＰデータ・セット（のトリガ）１０２０、ならびに、リアルタイムのデータなどの必要性を上回る、高速クエリ応答へのユーザ要求（のトリガ）１０２２を備える。ＭＯＬＡＰ／ＲＯＬＡＰモード用のトリガ１０１０は、ロー・レイテンシ・クエリおよびリアルタイム・クエリの両方が要求される時点のトリガ１０２４、およびＭＯＬＡＰキャッシュの部分的再構築が要求される時点のトリガ１０２６を備える。
【００４３】
ＲＯＬＡＰモード１００４は、クエリに対してＲＯＬＡＰデータのみがアクセスされることを可能にする。これは一般に、リアルタイムのデータ・アクセスを伴うより遅いモードである。ＭＯＬＡＰモード１００６は、クエリに対してＭＯＬＡＰデータのみがアクセスされることを可能にし、一般に、その高速性能ゆえにデフォルトのモードである。データの完全性および性能の向上を保証するために、ＭＯＬＡＰデータがＲＯＬＡＰデータと等しいときはいつでも、ＭＯＬＡＰモードを利用することができる。こうすることにより、より速い手段を使用することによってどのデータの正確さも失われないことが保証される。ＭＯＬＡＰモードは、リアルタイムのデータなど（他のユーザ入力）に対する必要性以上に高速アクセスを要求するユーザによって利用することもできる。ＭＯＬＡＰ／ＲＯＬＡＰモード１００８は、ＭＯＬＡＰおよびＲＯＬＡＰデータ両方へのアクセスを可能にする混合モードである。このモードにより、ユーザおよび／またはシステムは、所望された任意のタイプのレイテンシ（待ち時間）で、所望された任意のタイプのデータも取り出すことが可能になる。このモードは、構成中のＭＯＬＡＰキャッシュの部分に関する情報を提供するＲＯＬＡＰオブジェクトを有するＭＯＬＡＰキャッシュの部分的再構築も可能にする。
【００４４】
上述したトリガおよび動作モードは、すべてを網羅していないことが当業者には理解されよう。図１０は、本発明の一態様の一例を表しているに過ぎない。追加のモードおよびトリガを、本発明の範囲内で同様に使用することもできる。
【００４５】
図１１を見ると、本発明の態様による先行キャッシュ・システム１１００のさらに別のブロック図を示してある。先行キャッシュ・システムは、分析構成要素１１０２、ＭＯＬＡＰキャッシュ１１０４、およびＯＬＡＰオブジェクト１１０６を備える。分析構成要素１１０２は、適合調整構成要素（adaptive tuning component）１１１０、第１のセッション１１１４、および第２のセッション１１１６を備える。適合調整構成要素１１１０は、クエリ・インタープリタ１１１２、性能最適化部（performance optimizer）１１１８、および結果比較部（result comparator）１１２０を備える。一般的なクエリ１１０８が、クエリ・インタープリタ１１１２に入力される。本発明の本態様では、クエリ・インタープリタ１１１２は適合調整構成要素１１１０の一部である。したがって、性能を調整するために、クエリ・インタープリタ１１１２は、同一クエリ１１０８とのデュアル・セッションを確立する。したがって、クエリ１１０８は、セッション＃１  １１１４を介してＭＯＬＡＰキャッシュ１１０４に、また、セッション＃２  １１１６を介してＯＬＡＰオブジェクト１１０６に送られる。各セッション１１１４、１１１６が応答を作成し、この応答は結果比較部１１２０に送られる。結果比較部１１２０は、２つのセッション１１１４、１１１６の間のどの違いも決定する。こうした違いは、もしある場合には、性能最適化部１１１８に報告される。性能最適化部１１１８は、こうした違いを追跡し、クエリ・インタープリタ１１１２が今後のクエリにどのように反応するか、適合的に変化させる。２つのセッション１１１４、１１１６を介してすべてのクエリが継続的に処理される必要はないことが当業者には理解されよう。ある特定のクエリが最適化されると、必要とされるのは随時行われるサンプル抽出だけである。「随時」というのは、データが要求される頻度に応じて、１分ごとでも、１時間ごとでも、１日ごとでも、１月ごとでも、および／または１年ごとなどでもよい。たとえば、１年前の前回の売上記録が、セッション＃１  １１１４またはセッション＃２  １１１６のどちらを介しても同じ結果を生じることができる。したがって、同じ時期に対する売上記録に関して照会されるとき、性能最適化部１１１８は、クエリ・インタープリタ１１１２に対して、高速応答のためにＭＯＬＡＰキャッシュ１１０４のみを使用するよう命令する。性能最適化部１１１８は、データ、使用、および関連するパラメータを追跡して、ユーザ設定に対してさえも適合的な調整を提供することができ、可能な限りユーザに性能提案（performance suggestions）を行う。
【００４６】
上で示し説明した例示的なシステムを考慮して、図１２〜１７のフロー図を参照すると、本発明によって実装することができる方法がよりよく理解されよう。説明を簡単にするために、この方法を一連のブロックとして示し説明するが、本発明はブロックの順序に限定されないことを理解されたい。というのは、いくつかのブロックは、本発明によって、異なる順序で起こることもでき、かつ／または本明細書で示し説明する他のブロックと同時に起こることもできるからである。さらに、図示したすべてのブロックが、本発明による方法の実装に必要なわけではない。
【００４７】
本発明は、１つまたは複数の構成要素によって実行される、プログラム・モジュールなどのコンピュータ実行可能命令という一般的なコンテクストで説明することができる。概して、プログラム・モジュールは、特定のタスクを実施しまたは特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、データ構造などを含む。一般に、プログラム・モジュールの機能は、様々な実施形態において所望された場合には、結合することも分散することもできる。
【００４８】
図１２に移ると、本発明の態様による先行キャッシュの方法１２００のフロー図を示してある。方法１２００は、１２０２で始まり、バックグラウンド処理１２０４においてＲＯＬＡＰオブジェクトのＭＯＬＡＰキャッシュ等価物を構築し始める。次いで、１２０６で、いつＭＯＬＡＰキャッシュが完成したかについての決定が行われる。ＭＯＬＡＰキャッシュが完成すると、１２０８で、ＭＯＬＡＰモードを使用するように動作モードが切り換えられる。次いで、１２１０で、ＭＯＬＡＰキャッシュを利用してクエリが処理される。次いで、１２１２で、ＲＯＬＡＰオブジェクトに対して関連する変更が行われたか決定が行われる。この変更には、全ての基底データに対する全ての関連する変更も含むことができる。関連する変更が行われていない場合、１２１０で、ＭＯＬＡＰキャッシュを使用してクエリの処理が続けられる。ただし、変更がある場合は、１２１４で、動作モードはＲＯＬＡＰモードに切り換えられる。関連するすべてのキャッシュは次いで、１２１６で取り去られ、フローは１２１８で終わる。このサイクルは、どの関連するデータベースの変更にもかかわらず、ＭＯＬＡＰキャッシュを新しいままに保つために、無限に繰り返すことができる。
【００４９】
図１３に移ると、本発明の態様による先行キャッシュの別の方法１３００のフロー図を示してある。方法１３００は、１３０２で始まり、１３０４で、ユーザ入力を提供する。１３０６で、ＭＯＬＡＰモード要求が行われたかについての決定が行われる。行われていない場合、１３２２で、ＲＯＬＡＰモードを使用してクエリの処理が続けられ、フローは１３１６で終了する。ただし、ＭＯＬＡＰモード要求が行われると、１３０８で、ＲＯＬＡＰオブジェクトのＭＯＬＡＰ等価物がバックグラウンド処理として構築される。次いで、１３１０で、ＲＯＬＡＰオブジェクトに関連する変更が起きたかに関して決定が行われる。変更が起きた場合、１３１８でＭＯＬＡＰ等価物の構築がキャンセルされ、１３２０で動作モードがＲＯＬＡＰモードに切り換えられ、１３０８でＲＯＬＡＰオブジェクトのＭＯＬＡＰ等価物が再度構成される。ただし、ＭＯＬＡＰキャッシュの構築が完了した後で関連する変更が起きなかった場合、１３１２で動作モードがＭＯＬＡＰモードに切り換えられ、１３１４でＭＯＬＡＰキャッシュを使用してクエリの処理が行われ、フローは１３１６で終了する。
【００５０】
図１４を参照すると、本発明の態様による先行キャッシュのさらに別の方法１４００のフロー図を示してある。方法１４００は、１４０２で始まり、１４０４で、沈黙時間遅延ユーザ入力が提供される。１４０６で、バックグラウンド処理においてＲＯＬＡＰオブジェクトのＭＯＬＡＰ等価物が構成される。次いで、１４０８で、関連する変更がＲＯＬＡＰオブジェクトに対して起きたかに関して決定が行われる。変更が起きていない場合、１４１０でクエリはＭＯＬＡＰキャッシュを使用して処理され、フローは１４１２で終了する。ただし、ＲＯＬＡＰオブジェクトに対して変更が起きている場合、１４１４で、沈黙時間遅延に達したかに関して決定が行われる。達していない場合、１４１８で、沈黙時間遅延オーバーライドが達成されたかに関して決定が行われる。沈黙時間遅延オーバーライドが達成されていない場合、１４１０で、クエリはＭＯＬＡＰキャッシュを用いて処理され、フローは１４１２で終了する。ただし、沈黙時間遅延オーバーライドが達成されている場合、動作モードがＲＯＬＡＰモードに切り換えられ、１４０６でＭＯＬＡＰキャッシュがもう一度構成される。ただし、ＲＯＬＡＰオブジェクトに対する関連する変更を検出した後で沈黙時間遅延が達成された場合、１４１６で動作モードがＲＯＬＡＰモードに切り換えられ、１４０６でＭＯＬＡＰキャッシュがバックグラウンド処理において構築され、このサイクルを続ける。
【００５１】
図１５に移ると、本発明の態様による先行キャッシュのさらに別の方法１５００のフロー図を示してある。方法１５００は、１５０２で始まり、１５０４で、手作業でのユーザ入力が提供される。手作業でのユーザ入力は、ユーザが特定のテーブル／ビュー／オブジェクトなどを「ダーティ」（すなわち、アクセスが要求された場合には、更新する必要がある）などと指定することを可能にするパラメータを含む。１５０６で、関連する変更がＲＯＬＡＰオブジェクトに対して起きたかに関して決定が行われる。この決定では、「ダーティ」の入力が、キャッシュ済みデータに関連するデータを変更することができることを考慮に入れる。関連する変更が起きていない場合、１５１４で、クエリはＭＯＬＡＰキャッシュを利用して処理され、フローは１５１６で終了する。一般に、ＭＯＬＡＰキャッシュ使用することは、より高い性能向上のために先行キャッシュ・システムのデフォルト条件であり、ユーザおよび／またはシステムによって他の指示があるまで実施される。ただし、１５０６で関連する変更が（「ダーティ」の入力および／またはデータベース更新などのせいで）ＲＯＬＡＰオブジェクトに対して起きていた場合、１５０８で動作モードがＲＯＬＡＰモードに切り換えられる。次いで、１５１０でＭＯＬＡＰキャッシュがバックグラウンド処理において再構築され、キャッシュが完成すると１５１２で動作モードがＭＯＬＡＰモードにもう一度切り換えられる。次いで、１５１４でクエリ処理がＭＯＬＡＰキャッシュの利用を続け、フローは１５１６で終了する。
【００５２】
図１６には、本発明の態様による先行キャッシュのさらに別の方法１６００のフロー図を示してある。方法１６００は、１６０２で始まり、１６０４で、ＲＯＬＡＰオブジェクトのデータ入力が提供される。入力データは次いで、１６０６で、関連するものであるとして適切なＲＯＬＡＰオブジェクトにリンクされる。この方法では、ユーザは、キャッシュ済みデータが明確にこのデータから派生したものでなくても、キャッシュ済みデータに関連するものとしてこのデータをタグづけすることができる。次いで、関連する変更がＲＯＬＡＰオブジェクトに対して起きたかに関して決定が行われる。この決定は、新しいデータリンクがＲＯＬＡＰオブジェクトから変更のあったデータへのリンクを確立したか検査する。変更が見つからない場合、１６１６で、クエリはＭＯＬＡＰキャッシュを利用して処理され、フローは１６１８で終了する。性能向上のためにＭＯＬＡＰモードがデフォルトのモードと見なされる。ただし、１６０８で適切なＲＯＬＡＰオブジェクトに対して変更が行なわれていた場合は、１６１０で動作モードがＲＯＬＡＰモードに切り換えられる。次いで、１６１２で、バックグラウンド処理においてＲＯＬＡＰオブジェクトからＭＯＬＡＰキャッシュが再構築される。（この再構築が）完了すると、１６１４で動作モードがＭＯＬＡＰモードに切り換えられ、１６１６で、クエリがＭＯＬＡＰキャッシュを使用してもう一度処理され、フローは１６１８で終了する。
【００５３】
図１７を見ると、本発明の態様による先行キャッシュのさらに別の方法１７００のフロー図を示してある。方法１７００は、１７０２で始まり、１７０４で、ユーザが強制リフレッシュ・レート入力を提供する。次いで、１７０６で、この入力が達成されたかに関して決定が行われる。達成されていない場合、１７１４で、ＭＯＬＡＰキャッシュを使用してクエリが処理され、フローは１７１６で終了する。性能向上ゆえに、ＭＯＬＡＰモードがデフォルトのモードと見なされる。ただし、１７０６で強制リフレッシュ・レート入力が達成されている場合、１７０８で動作モードがＲＯＬＡＰモードに切り換えられる。次いで、１７１０で、ＭＯＬＡＰキャッシュがバックグラウンド処理として構築される。完了すると、次いで、１７１２で動作モードが切り換えられてＭＯＬＡＰモードに戻り、１７１４でクエリがＭＯＬＡＰキャッシュを利用して処理され、フローは１７１６で終了する。
【００５４】
上述したフローは、本発明の様々な方法の代表的なフロー図であることを意図している。こうしたフローは、本発明の範囲内におけるすべての反復および変動を包含するものではない。方法には通知を組み込むこともでき、そうした場合でも本発明の範囲内であることが当業者には理解されよう。
【００５５】
本発明の様々な態様を実装する追加的な状況を提供するために、図１８および以下の説明では、本発明の様々な態様を実装することができる適切なコンピューティング環境１８００の手短で、一般的な説明を提供することを意図している。これまでは、ローカル・コンピュータおよび／またはリモート・コンピュータを実行するコンピュータ・プログラムのコンピュータ実行可能命令という一般的な状況において本発明を説明したが、本発明は他のプログラム・モジュールとの組合せにおいても実装できることが当業者には理解されよう。全般的には、プログラム・モジュールは、特定のタスクを実施し、かつ／または特定の抽象データタイプを実装するルーチン、プログラム、構成要素、データ構造などを含む。さらに、発明性のある本方法は、他のコンピュータ・システム構成と共に実施できることが当業者には理解されよう。他のコンピュータ・システム構成には、シングル・プロセッサ・コンピュータ・システムまたはマルチ・プロセッサ・コンピュータ・システム、ミニ・コンピュータ、メインフレーム・コンピュータ、ならびにパーソナル・コンピュータ、ハンドヘルド・コンピューティング・デバイス、マイクロ・プロセッサベースの家電製品および／またはプログラム可能な家電製品、などがあり、それぞれが１つまたは複数の関連する装置と動作可能に通信することができる。図示した本発明の態様は、通信ネットワークを介してリンクされるリモート処理装置によって特定のタスクが実施される分散型計算機環境でも実施することができる。ただし、すべてではなくともいくつかの本発明の態様は、独立型のコンピュータにおいても実施することができる。分散型計算機環境では、プログラム・モジュールは、ローカル・メモリ記憶装置および／またはリモート・メモリ記憶装置内に配置することができる。
【００５６】
本アプリケーションで使用する「構成要素」という用語は、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであるコンピュータ関連エンティティを指すことを意図している。たとえば、構成要素は、プロセッサで実行中の処理、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、およびコンピュータでよいが、それに限定されるものではない。実例として、サーバ上で実行中のアプリケーションおよび／またはそのサーバが構成要素となり得る。さらに、構成要素は、１つまたは複数の下位構成要素を含むことができる。
【００５７】
図１８を参照すると、本発明の様々な態様を実装する例示的なシステム環境１８００は、従来のコンピュータ１８０２を含み、このコンピュータは、処理装置１８０４、システム・メモリ１８０６、およびシステム・メモリなどの様々なシステム構成要素を処理装置１８０４に結合するシステム・バス１８０８を含む。処理装置１８０４は、市販されているどのプロセッサでも、固有のどのプロセッサでもよい。さらに、この処理装置は、並列に接続することができるような複数のプロセッサから形成されるマルチ・プロセッサとして実装することができる。
【００５８】
システム・バス１８０８は、様々な従来のバス・アーキテクチャ、たとえばいくつか例を挙げるとＰＣＩ、ＶＥＳＡ、マイクロ・チャネル、ＩＳＡ、およびＥＩＳＡのいずれかを使用するメモリ・バスまたはメモリ・コントローラ、周辺機器バス、およびローカル・バスなどいくつかのタイプのバス構造のいずれでもよい。システム・メモリ１８０６は、読出し専用メモリ（ＲＯＭ）１８１０およびランダム・アクセス・メモリ（ＲＡＭ）１８１２を含む。基本入出力システム（ＢＩＯＳ）１８１４は、たとえば起動中にコンピュータ１８０２内部の要素間の情報の転送を助ける基本ルーチンを含み、ＲＯＭ１８１０に格納される。
【００５９】
コンピュータ１８０２は、たとえば、ハードディスク・ドライブ１８１６、たとえば取外し可能ディスク１８２０からの読出しまたはそこへの書込みをするための磁気ディスク・ドライブ１８１８、および、たとえばＣＤ−ＲＯＭディスク１８２４または他の光学媒体からの読出しまたはそこへの書込みを行う光ディスク・ドライブ１８２２を含むこともできる。ハードディスク・ドライブ１８１６、磁気ディスク・ドライブ１８１８、および光ディスク・ドライブ１８２２は、それぞれハードディスク・ドライブ・インターフェース１８２６、磁気ディスク・ドライブ・インターフェース１８２８、および光ドライブ・インターフェース１８３０によって、システム・バス１８０８に接続される。ドライブ１８１６〜１８２２およびそれに関連するコンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令などを含む不揮発性記憶装置をコンピュータ１８０２に提供する。上記のコンピュータ可読媒体の説明ではハード・ディスク、取外し可能な磁気ディスクおよびＣＤに言及したが、コンピュータ可な他のタイプの媒体、たとえば磁気カセット、フラッシュ・メモリ・カード、デジタル映像ディスク、ベルヌーイ・カートリッジなども、例示的な動作環境１８００において使うことができ、さらに、このようなどの媒体も本発明の方法を実施するコンピュータ実行可能命令を含むことができることが当業者には理解されよう。
【００６０】
オペレーティング・システム１８３２、１つまたは複数のアプリケーション・プログラム１８３４、他のプログラム・モジュール１８３６、およびプログラム・データ１８３８などいくつかのプログラム・モジュールを、ドライブ１８１６〜１８２２およびＲＡＭ１８１２に格納することができる。オペレーティング・システム１８３２は、適切などのオペレーティング・システムでも、オペレーティング・システムの組合せでもよい。一例として、アプリケーション・プログラム１８３４およびプログラム・モジュール１８３６が、本発明の態様によるデータを使用するデータベース・サービング・システムおよび／または先行キャッシュ・システムを含むことができる。さらに、プログラム・データ１８３８は、本発明の態様による先行キャッシュ・システムを制御し、かつ／または偏倚する入力データを含むことができる。
【００６１】
ユーザは、キーボード１８４０および指示装置（たとえばマウス１８４２）など１つまたは複数のユーザ入力装置を介して、コマンドおよび情報をコンピュータ１８０２に入力することができる。他の入力装置（図示せず）には、マイクロホン、ジョイスティック、ゲーム用パッド、衛星パラボラ・アンテナ、無線リモコン、スキャナなどがあり得る。こうしたおよび他の入力装置はしばしば、システム・バス１８０８に結合されるシリアル・ポート・インターフェース１８４４を介して処理装置１８０４に接続されるが、他のインターフェース、たとえば並列ポート、ゲームポートまたはユニバーサル・シリアルバス（ＵＳＢ）によって接続することもできる。モニタ１８４６または他のタイプの表示装置も、映像アダプタ１８４８などのインターフェースを介してシステム・バス１８０８に接続される。モニタ１８４６に加えて、コンピュータ１８０２は、他の周辺出力装置（図示せず）、たとえばスピーカ、プリンタなども含むことができる。
【００６２】
コンピュータ１８０２は、１つまたは複数のリモート・コンピュータ１８６０への論理接続を使用してネットワーク接続された環境において動作できることを理解されたい。リモート・コンピュータ１８６０は、ワークス・テーション、サーバ・コンピュータ、ルータ、ピア装置または他の共通ネットワーク・ノードでよく、通常、コンピュータ１８０２に関連して説明した要素の多くまたはすべてを含むが、簡潔にするために、メモリ記憶装置１８６２のみを図１８に示した。図１８に示した論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）１８６４およびワイド・エリア・ネットワーク（ＷＡＮ）１８６６を含むことができる。このようなネットワーク環境は、会社、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいてよく見られる。
【００６３】
ＬＡＮネットワーク環境において使われる場合、たとえば、コンピュータ１８０２は、ネットワーク・インターフェースまたはアダプタ１８６８を介してローカル・ネットワーク１８６４に接続される。ＷＡＮネットワーク環境において使われる場合、コンピュータ１８０２は通常、モデム（たとえば、電話、ＤＳＬ、ケーブルなど）１８７０を含み、またはＬＡＮ上の通信サーバに接続され、または、たとえばインターネットなどのＷＡＮ１８６６を介した通信を確立する他の手段を有する。モデム１８７０は、コンピュータ１８０２の内部でも外部でもよく、シリアル・ポート・インターフェース１８４４を介してシステム・バス１８０８に接続される。ネットワーク接続された環境では、プログラム・モジュール（アプリケーション・プログラム１８３４など）および／またはプログラム・データ１８３８は、リモート・メモリ記憶装置１８６２に格納することができる。図示したネットワーク接続は例示的なものであり、本発明の態様を実行する際に、コンピュータ１８０２と１８６０の間の通信リンクを確立する他の手段（たとえば、有線または無線）も使うことができることが理解されよう。
【００６４】
当業者によるコンピュータ・プログラミングの実施に従って、他の指示がない限りは、コンピュータ、たとえばコンピュータ１８０２またはリモート・コンピュータ１８６０によって実施される作用および象徴的に表した動作を参照して本発明を説明した。このような作用および動作は、コンピュータに実行されるものとして何度か参照した。こうした作用および象徴的に表した動作は、処理装置１８０４による、データビットを表す電気信号の処理を含み、その結果、電気信号表示の変換または減少、およびメモリ・システム（システム・メモリ１８０６、ハードドライブ１８１６、フロッピー（登録商標）ディスク１８２０、ＣＤ−ＲＯＭ１８２４、およびリモート・メモリ１８６２など）内のメモリ位置でのデータビットの保持を引き起こし、そうすることによって、コンピュータ・システムの動作、ならびに他の信号処理を再構成し、あるいは変更することが理解されよう。このようなデータビットが保持されるメモリ位置は、データビットに対応する特定の電気属性、磁気属性、または光学属性を有する物理的な位置である。
【００６５】
図１９は、本発明と相互作用する実例としての計算機環境１９００の別のブロック図である。システム１９００はさらに、１つまたは複数のクライアント（群）１９０２を含むシステムを示す。クライアント（群）１９０２は、ハードウェアおよび／またはソフトウェア（たとえば、スレッド、処理、コンピューティング・デバイス）でよい。システム１９００は、１つまたは複数のサーバ（群）１９０４も含む。サーバ（群）１９０４は、ハードウェアおよび／またはソフトウェア（たとえば、スレッド、処理、コンピューティング・デバイス）でよい。サーバ１９０４は、たとえば、本発明を利用して変換を実施するためのスレッドを収容することができる。クライアント１９０２とサーバ１９０４の間の可能な１つの通信は、２つ以上のコンピュータ処理の間で伝送されるように適合されたデータ・パケットの形をとることができる。システム１９００は、クライアント（群）１９０２とサーバ（群）１９０４の間の通信を容易にするのに利用できる通信フレームワーク１９０８を含む。クライアント（群）１９０２は、クライアント（群）１９０２にローカルな情報を格納するのに利用できる、１つまたは複数のクライアント・データ・ストア（群）１９１０に動作可能に接続される。同様に、サーバ（群）１９０４は、サーバ１９０４にローカルな情報を格納するのに利用できる、１つまたは複数のサーバ・データ・ストア（群）１９０６に動作可能に接続される。
【００６６】
図２０に移ると、本発明が機能することができる一例としての動作環境２０００を示してある。この典型的な環境２０００は、データ・ソース２０１０およびユーザ・インターフェース２０１２にリンクされた分析サービス構成要素２００２を備える。ユーザ・インターフェース２０１２は、ＯＬＡＰブラウザ、報告ツール、および他のＢＩ（ビジネス・インテリジェンス）アプリケーションなどを備える。分析サービス構成要素２００２は通常、ＸＭＬ／Ａ（拡張マークアップ言語／分析）およびＭＤＸ（多次元交換言語）などのようなインターフェース２００８を介した、ユーザ・インターフェース２０１２とのインターフェース２０１４を有する。分析サービス構成要素２００２は、ＵＤＭ（統一次元モデル）構成要素２００４およびキャッシュ２００６を備える。この例では、本発明は、ＵＤＭ構成要素２００４およびキャッシュ２００６を介して、分析サービス構成要素２００２の内部で利用される。ＵＤＭ構成要素は、キャッシュ２００６および／またはデータに直接、先行的にアクセスすることができる。
【００６７】
上記の説明内容は、本発明のいくつかの例を含む。当然ながら、本発明を説明するための構成要素または方法のあらゆる組合せを説明することはできないが、本発明のさらに多くの組合せおよび入替えが可能であることが当業者には理解できよう。したがって、本発明は、添付の特許請求の範囲の精神および範囲内であるこのようなすべての変更形態、修正形態および変形形態を包含することを意図したものである。さらに、詳細な説明または特許請求の範囲において「含む」という用語が使われている限りでは、このような用語は、「備える」が、請求項においてｔｒａｎｓｉｏｎａｌ  ｗｏｒｄ（移行語、互換語）として使用される際に解釈されるように、用語「備える」と同様に包括的であることを意図している。
【図面の簡単な説明】
【００６８】
【図１】本発明の態様による例示的な先行キャッシュ処理を示す図である。
【図２】本発明の態様によるデータベース・サービング・システムを示すブロック図である。
【図３】本発明の態様によるデータベース・サービング・システムを示す別のブロック図である。
【図４】本発明の態様によるデータベース・サービング・システムを示すさらに別のブロック図である。
【図５】本発明の態様によるキャッシュ展開構造を示すブロック図である。
【図６】本発明の態様によるキャッシュ展開構造を示す別のブロック図である。
【図７】本発明の態様による先行キャッシュ・システムを示すブロック図である。
【図８】本発明の態様による先行キャッシュ・システムを示す別のブロック図である。
【図９】本発明の態様による先行キャッシュ・システムの入力を示すブロック図である。
【図１０】本発明の態様による先行キャッシュ・システムのパラメータを示すブロック図である。
【図１１】本発明の態様による先行キャッシュ・システムを示すさらに別のブロック図である。
【図１２】本発明の態様による先行キャッシュの方法を示すフロー図である。
【図１３】本発明の態様による先行キャッシュの方法を示す別のフロー図である。
【図１４】本発明の態様による先行キャッシュの方法を示すさらに別のフロー図である。
【図１５】本発明の態様による先行キャッシュの方法を示すさらに別のフロー図である。
【図１６】本発明の態様による先行キャッシュの方法を示すさらに別のフロー図である。
【図１７】本発明の態様による先行キャッシュの方法を示すさらに別のフロー図である。
【図１８】本発明が機能することができる一例の動作環境を示す図である。
【図１９】本発明が機能することができる別の例の動作環境を示す図である。
【図２０】本発明が機能することができるさらに別の例の動作環境を示す図である。
【符号の説明】
【００６９】
２００  データベース・サービング・システム、システム
２０２  先行キャッシュ・システム
２０４  分析構成要素
２０６  キャッシュ
２０８  多次元オブジェクト
２１０  データベース
２１２  ユーザ入力
２１４  システム入力
２１６  データベース入力
２１８  更新
２２０  クエリ入力
２２２  キャッシュ・インターフェース、インターフェース
２２４  多次元オブジェクト・インターフェース、インターフェース
２２６  キャッシュ・サブセット・インターフェース、サブセット・インターフェース
２２８  多次元オブジェクト・サブセット・インターフェース、サブセット・インターフェース
２３０  キャッシュ・サブセット
２３２  多次元オブジェクトのサブセット
３００  データベース・サービング・システム
３０２  先行キャッシュ・システム
３０４  分析構成要素
３０６  キャッシュ
３０８  多次元オブジェクト
３１０  データベース
３１２  ユーザ入力
３１４  システム入力
３１６  データベース入力
３１８  更新
３２０  クエリ入力
３２２  キャッシュ・インターフェース、インターフェース
４００  データベース・サービング・システム
４０２  先行キャッシュ・システム
４０４  分析構成要素
４０６  新しいキャッシュ
４０８  多次元オブジェクト
４１０  データベース
４１２  ユーザ入力
４１４  システム入力
４１６  データベース入力
４１８  更新
４２０  クエリ入力
４２４  古いキャッシュ
４２６  データベース・テーブル
５００  キャッシュ展開構造、構造
５０２  データベース
５０４  メタデータ・セット
５０６  次元モデル
５０８  キャッシュ
５１０  データベース・テーブル
６００  キャッシュ展開構造、構造
６０２  リレーショナル・データベース
６０４  メタデータ・セット
６０６  ＲＯＬＡＰオブジェクト
６０８  ＭＯＬＡＰキャッシュ
６１０  リレーショナル・データベース・テーブル
７００  先行キャッシュ・システム
７０２  分析構成要素
７０４  キャッシュ、多次元オブジェクト
７０６  多次元オブジェクト、キャッシュ
７０８  クエリ入力、多次元オブジェクト
７１０  クエリ・インタープリタ
７１２  端末、リアルタイム端末
７１４  端末、ロー・レイテンシ端末
７１６  ユーザ入力
７１８  システム入力
７２０  キャッシュ・サブセット
７２２  多次元オブジェクト・サブセット
８００  先行キャッシュ・システム
８０２  分析構成要素
８０４  キャッシュ
８０６  多次元オブジェクト
８０８  クエリ入力
８１０  ユーザ＃１の入力
８１２  ユーザ＃２の入力
８１４  ユーザ＃３の入力
８１６  クエリ・インタープリタ
８１８  ロー・レイテンシ端末
８２０  リアルタイム端末
９００  先行キャッシュ・システム入力
９０２  分析構成要素
９０４  クエリ入力
９０６  ユーザ入力
９０８  システム入力
９１０  沈黙時間遅延
９１２  沈黙時間遅延オーバーライド
９１４  強制リフレッシュ時間
９１６  ユーザ開始による部分キャッシュの再構築
９１８  ユーザ入力「ｎ」
９２０  最終データベース更新追跡部
９２２  ＯＬＡＰオブジェクトに影響するテーブル
９２４  従属ＯＬＡＰオブジェクト・データ・ソース追跡部
９２６  システム入力「ｎ」
１０００  先行キャッシュ・システム・パラメータ
１００２  動作モデル
１００４  ＲＯＬＡＰモード
１００６  ＭＯＬＡＰモード
１００８  ＭＯＬＡＰ／ＲＯＬＡＰモード
１０１０  トリガ
１０１２  沈黙時間遅延達成
１０１４  沈黙時間遅延オーバーライド達成
１０１６  強制リフレッシュ時間達成
１０１８  データベース更新
１０２０  ＭＯＬＡＰおよびＲＯＬＡＰデータ・セット
１０２２  高速クエリ応答へのユーザ要求
１０２４  ロー・レイテンシ・クエリおよびリアルタイム・クエリ両方が要求される時点
１０２６  ＭＯＬＡＰキャッシュの部分的再構築が要求される時点
１１００  先行キャッシュ・システム
１１０２  分析構成要素
１１０４  ＭＯＬＡＰキャッシュ
１１０６  ＯＬＡＰオブジェクト
１１０８  クエリ
１１１０  適合調整構成要素
１１１２  クエリ・インタープリタ
１１１４  第１のセッション、セッション＃１、セッション
１１１６  第２のセッション、セッション＃２、セッション
１１１８  性能最適化部
１１２０  結果比較部
１８００  計算機環境、システム環境、動作環境
１８０２  従来のコンピュータ、コンピュータ
１８０４  処理装置
１８０６  システム・メモリ
１８０８  システム・バス
１８１０  読出し専用メモリ（ＲＯＭ）
１８１２  ランダム・アクセス・メモリ（ＲＡＭ）
１８１４  基本入出力システム（ＢＩＯＳ）
１８１６  ハードディスク・ドライブ、ドライブ、ハードドライブ
１８１８  磁気ディスク・ドライブ、ドライブ
１８２０  取外し可能ディスク、フロッピー（登録商標）ディスク
１８２２  光ディスク・ドライブ、ドライブ
１８２４  ＣＤ−ＲＯＭディスク、ＣＤ−ＲＯＭ
１８２６  ハードディスク・ドライブ・インターフェース
１８２８  磁気ディスク・ドライブ・インターフェース
１８３０  光学ドライブ・インターフェース
１８３２  オペレーティング・システム
１８３４  アプリケーション・プログラム
１８３６  他のプログラム・モジュール、プログラム・モジュール
１８３８  プログラム・データ
１８４０  キーボード
１８４２  マウス
１８４４  シリアル・ポート・インターフェース
１８４６  モニタ
１８４８  映像アダプタ
１８６０  リモート・コンピュータ、コンピュータ
１８６２  メモリ記憶装置、リモート・メモリ記憶装置、リモート・メモリ
１８６４  ローカル・エリア・ネットワーク（ＬＡＮ）、ローカル・ネットワーク
１８６６  ワイド・エリア・ネットワーク（ＷＡＮ）
１８６８  ネットワーク・インターフェース、アダプタ
１８７０  モデム
１９００  計算機環境、システム
１９０２  クライアント（群）
１９０４  サーバ（群）
１９０６  サーバ・データ・ストア（群）
１９０８  通信フレームワーク
１９１０  クライアント・データ・ストア（群）
２０００  動作環境、環境
２００２  分析サービス構成要素
２００４  ＵＤＭ（統一次元モデル）構成要素
２００６  キャッシュ
２００８  インターフェース
２０１０  データ・ソース
２０１２  ユーザ・インターフェース
２０１４  インターフェース
【図１】
2004303212.tif 000003
【図２】
2004303212.tif 000004
【図３】
2004303212.tif 000005
【図４】
2004303212.tif 000006
【図５】
2004303212.tif 000007
【図６】
2004303212.tif 000008
【図７】
2004303212.tif 000009
【図８】
2004303212.tif 000010
【図９】
2004303212.tif 000011
【図１０】
2004303212.tif 000012
【図１１】
2004303212.tif 000013
【図１２】
2004303212.tif 000014
【図１３】
2004303212.tif 000015
【図１４】
2004303212.tif 000016
【図１５】
2004303212.tif 000017
【図１６】
2004303212.tif 000018
【図１７】
2004303212.tif 000019
【図１８】
2004303212.tif 000020
【図１９】
2004303212.tif 000021
【図２０】
2004303212.tif 000022
【外国語明細書】
2004303212.tif 000023
2004303212.tif 000024
2004303212.tif 000025
2004303212.tif 000026
2004303212.tif 000027
2004303212.tif 000028
2004303212.tif 000029
2004303212.tif 000030
2004303212.tif 000031
2004303212.tif 000032
2004303212.tif 000033
2004303212.tif 000034
2004303212.tif 000035
2004303212.tif 000036
2004303212.tif 000037
2004303212.tif 000038
2004303212.tif 000039
2004303212.tif 000040
2004303212.tif 000041
2004303212.tif 000042
2004303212.tif 000043
2004303212.tif 000044
2004303212.tif 000045
2004303212.tif 000046
2004303212.tif 000047
2004303212.tif 000048
2004303212.tif 000049
2004303212.tif 000050
2004303212.tif 000051
2004303212.tif 000052
2004303212.tif 000053
2004303212.tif 000054
2004303212.tif 000055
2004303212.tif 000056
2004303212.tif 000057
2004303212.tif 000058
2004303212.tif 000059
2004303212.tif 000060
2004303212.tif 000061
2004303212.tif 000062
2004303212.tif 000063
2004303212.tif 000064
2004303212.tif 000065
2004303212.tif 000066
2004303212.tif 000067
2004303212.tif 000068
2004303212.tif 000069
2004303212.tif 000070
2004303212.tif 000071
2004303212.tif 000072
2004303212.tif 000073
2004303212.tif 000074
2004303212.tif 000075
2004303212.tif 000076
2004303212.tif 000077
2004303212.tif 000078
2004303212.tif 000079