(57)【要約】【課題】  最適化されたセキュアなキャッシング・システム及びキャッシング方法を提供すること。【解決手段】  セキュアなキャッシング・システム及びキャッシング方法は、データについてのユーザ要求を受け取ることであって、要求は、セキュリティ・コンテキストを含み、セキュリティ・コンテキストは、データベース・アプリケーションの、ユーザのセキュリティ・プロファイルを識別する、要求を受け取ることと、ユーザ要求及び受けたセキュリティ・コンテキストに基づいて、要求されたデータについてキャッシュを検索することとを含む。要求されたデータがキャッシュ内に発見された場合、キャッシュされたデータをユーザ要求に応じて返す。要求されたデータがキャッシュ内に発見されない場合、要求されたデータをデータ源から入手し、入手したデータをキャッシュに格納し、入手したデータをセキュリティ・コンテキストに関連付け、要求されたデータをユーザ要求に応じて返す。要求されたデータの検索は、セキュリティ・コンテキストをキーとして有するセキュリティ・リストを検索することを含み、セキュリティ・リストは、要求されたデータのキャッシュ内アドレスを含む。【選択図】      図２
2013520738.tif 000002
【特許請求の範囲】
【請求項１】
データベース・アプリケーションのためのセキュアなキャッシング方法であって、
データについてのユーザ要求およびユーザの前記データベース・アプリケーションのセキュリティ・プロファイルを特定するセキュリティ・コンテキストを受けるステップと、
前記ユーザ要求および前記受けたセキュリティ・コンテキストに基づいて、前記要求されたデータについてキャッシュを検索するステップと、
前記要求されたデータが前記キャッシュ内に発見された場合に、前記キャッシュされたデータを前記ユーザ要求に応答して返すステップと、
前記要求されたデータが前記キャッシュ内に発見されない場合に、前記要求されたデータをデータ源から入手し、前記入手したデータを前記キャッシュに格納し、前記入手したデータを前記セキュリティ・コンテキストに関連付け、前記要求されたデータを前記ユーザ要求に応答して返すステップと、
を含む方法。
【請求項２】
前記キャッシュされたデータは、前記キャッシュされたデータを前記セキュリティ・コンテキストに関連付ける、対応するリストと共に格納され、前記要求されたデータが前記キャッシュ内に発見されない場合、前記キャッシュに格納された前記入手したデータを前記セキュリティ・コンテキストに関連付けるための新たなリストを、前記キャッシュに格納された前記入手したデータへの参照を格納することにより生成する、請求項１に記載の方法。
【請求項３】
前記新たなリストは、リスト・ストレージ・ユニットに格納され、その中で、格納されたリストの数が、受け取ったユーザ・クエリに基づいてインクリメンタルに増加する、請求項２に記載の方法。
【請求項４】
キャッシュされたデータにおける変化がリストの一貫性を損なう場合に、前記リストをリスト・ストレージ・ユニットからパージすることをさらに含む、請求項２に記載の方法。
【請求項５】
前記キャッシュを使用する前にリスト・ストレージ・ユニットを初期化することをさらに含み、前記初期化することは、共通に用いられるセキュリティ・コンテキストについて共通に用いられるデータについてのクエリをデータ源に提出することと、クエリの結果を前記キャッシュにロードすることと、前記キャッシュされたデータを参照するセキュリティ・リストを作成することとを含む、請求項２に記載の方法。
【請求項６】
格納されたリストを冗長性について検査することをさらに含み、２つの同一のリストが発見された場合には、前記２つの同一のリストが単一のリストに纏められる、請求項２に記載の方法。
【請求項７】
前記データは、メタデータである、請求項１に記載の方法。
【請求項８】
前記セキュリティ・コンテキストおよびデータ識別子により識別されるリストの存在についてリスト・ストレージ内を検査するステップと、
前記リストが存在しない場合、前記セキュリティ・コンテキストおよび前記データ識別子により識別されるリストを前記リスト・ストレージ内に作成し、前記データ源からデータを取得し、前記取得したデータをデータ・ストレージ内に格納し、前記データ・ストレージに格納された前記取得したデータのストレージのアドレスを前記作成されたリストに取り込むステップと、
前記リストが存在する場合、前記リスト内の前記ストレージ・アドレスを用いて、前記データ・ストレージからデータを取得するステップと
をさらに含む、請求項１に記載の方法。
【請求項９】
前記データ識別子は、キューブ・ディメンジョン識別子である、請求項８に記載の方法。
【請求項１０】
前記データ・ストレージは、複数の異種の遠隔データ源から提供されたデータを含むキャッシュである、請求項８に記載の方法。
【請求項１１】
前記データ・ストレージおよび前記リスト・ストレージに事前ロードすることをさらに含み、前記リスト・ストレージには、共通に用いられるセキュリティ・コンテキストおよびデータ識別子に対応するリストが事前ロードされ、前記データ・ストレージには、前記事前ロードされたリストにより参照される共通に用いられるデータが事前ロードされる、請求項８に記載の方法。
【請求項１２】
データ・ストレージに格納される前記データは、ＯＬＡＰメタデータである、請求項８に記載の方法。
【請求項１３】
キャッシング・システムであって、
ソフトウェア・モジュールを実行するプロセッサと、
前記ソフトウェア・モジュールを格納するメモリと
を備え、前記ソフトウェア・モジュールは、
データについてのユーザ要求および前記ユーザのセキュリティ・プロファイルを識別する前記データベース・アプリケーションのセキュリティ・コンテキストを受けるレシーバ・モジュールと、
前記ユーザ要求および前記受け取ったセキュリティ・コンテキストに基づいて、前記要求されたデータについてキャッシュを検索する検索モジュールと、
前記要求されたデータが前記キャッシュ内に発見された場合に、前記キャッシュされたデータを前記ユーザ要求に応答して入手する管理モジュールを備え、
前記要求されたデータが前記キャッシュ内に発見されない場合、前記管理モジュールは、前記要求されたデータをデータ源から入手し、前記入手したデータを前記キャッシュに格納し、前記入手したデータを前記セキュリティ・コンテキストに関連付け、前記要求されたデータを前記ユーザ要求に応答して返す、システム。
【請求項１４】
前記検索モジュールが要求されたデータを前記キャッシュ内に発見されない場合、前記管理モジュールは、前記キャッシュに格納された前記入手したデータを前記セキュリティ・コンテキストに関連付けるための新たなリストを、前記キャッシュに格納された前記入手したデータへの参照を格納することにより生成する、請求項１３に記載のシステム。
【請求項１５】
前記管理モジュールは、前記新たなリストをリスト・ストレージ・ユニットに格納し、その中で、格納されたリストの数は、一意の受け取ったユーザ・クエリに基づいてインクリメンタルに増加する、請求項１４に記載のシステム。
【請求項１６】
キャッシュされたデータにおける変化がリストの一貫性を損なう場合に前記リストをリスト・ストレージ・ユニットからパージする、パージ・モジュールをさらに備える、請求項１４に記載のシステム。
【請求項１７】
前記キャッシュを使用する前にリスト・ストレージ・ユニットを初期化する事前ロード・モジュールをさらに備え、前記事前ロード・モジュールは、共通に用いられるセキュリティ・コンテキストについて共通に用いられるデータについてのクエリを前記データ源に提出し、前記クエリの結果を前記キャッシュに事前ロードし、前記キャッシュされたデータを参照する新たなセキュリティ・リストを作成する、請求項１６に記載のシステム。
【請求項１８】
格納されたリストを冗長性について検査し、２つの同一のリストが発見された場合には前記２つの同一のリストを単一のリストに纏める、検査モジュールをさらに備える、請求項１４に記載のシステム。
【請求項１９】
コンピュータ・システムに読み込まれて実行されたときに、請求項１から請求項１２までのいずれか１項に記載の方法の全てのステップを実行するコンピュータ・プログラム・コードを含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースの分野に関する。特に、本発明は、ユーザ・ベースのセキュリティを適用する場合にデータ・キャッシュを最適化することに関する。
【背景技術】
【０００２】
ビジネス・インテリジェンス（ＢＩ）は、企業の意思決定および統治を促進するソフトウェアのカテゴリである。ＢＩは、情報を分析し、予測し、提示する、レポート／分析ツールを提供する。また、ＢＩは、オンライン分析処理（「ＯＬＡＰ」）データベースのような、データベース内のデータを構成し、格納し、取得し、管理する、データベース管理システムも提供する。
【０００３】
ＯＬＡＰデータ源およびツールは、ＢＩツールのサブセットである。ＯＬＡＰツールは、レポート生成ツールであり、データベース・ソフトウェアのカテゴリである。ＯＬＡＰは、ユーザが事前定義した機能に従って生のデータを限定し、データの種々のディメンジョン（次元）における結果を対話的に調査するための、ユーザ用のインタフェースを提供する。ＯＬＡＰシステムは、階層の完全なサポートおよび多重階層を含む、データの多次元概念ビューを提供する。ＯＬＡＰツールは、典型的にはマルチユーザのクライアント／サーバ・モードで実装され、データベースの大きさおよび複雑さに関わらずクエリに対する一貫した迅速な応答を提供する。ＯＬＡＰは、ユーザが、多次元のデータ源をサポートしてその上で動作するよう具体的に設計されたＯＬＡＰサーバを用いて情報を合成することを可能にする。ＯＬＡＰサーバの設計およびデータの構造は、あらゆる好みでの高速なアドホックの情報取得について最適化される。
【０００４】
構造および数量の点で見ると、典型的なＯＬＡＰシステムは、次のように構成され、上位の構造要素が下位の要素のコンテナとして働く。
・キューブ  −  アプリケーションごとに数十個
・ディメンジョン      −  キューブごとに数十個、アプリケーションごとに数百個
・階層      −  ディメンジョンごとに数個、アプリケーションごとに数百個
・レベル    −  階層ごとに数個、アプリケーションごとに数百個乃至数千個
・メンバ    −  レベルごとに数百個乃至数千個、アプリケーションごとに数万個乃至数百万個
【０００５】
ＢＩレポーティング・システムにおいて、各々のユーザ・ジェスチャのクエリ性能は、可能な限り高速でなければならない。キャッシュ・メモリ、即ちキャッシュが、プロセスの速度を向上させるために一般的に用いられる。特に、データ・キャッシュは、共通に用いられるデータ（メタデータを含む）項目を格納して、データ源からのデータの取り出しを最小限にするために、用いることができる。図１は、より典型的にはデータ・キャッシュを含む、従来のＢＩシステムを示す。この図については後でより詳細に説明する。
【０００６】
データ・キャッシュは、「データについてのデータ」として理解されるメタデータを含む、様々な異なる型式のデータを格納することができる。例えば、「地理」ディメンジョンまたは「カナダ」メンバといった上述のＯＬＡＰ構造要素の任意のインスタンスを、データ・キャッシュに格納することができる。実際、ＯＬＡＰデータ源が、外周上にディメンジョンテーブルを備えるスター・スキーマとして構成された関係データベースであって、そのためにあらゆるディメンジョンメンバがディメンジョンテーブル内の列として格納されるならば、メンバは、メタデータというより、データであると考えられることが多い。従って、異なる型式のデータのために異なる型式のキャッシュを区別する必要はない。
【０００７】
ＢＩレポーティング・システムの別々のユーザは、特定のデータ（メタデータを含む）へのアクセスを制限することができるように、異なるセキュリティ権限を有することができる。これらのセキュリティ権限は、ＢＩレポーティング・システムとインタフェースする各ＯＬＡＰデータ源のセキュリティ・サブシステム内で定められる。ＯＬＡＰデータ源のセキュリティ・サブシステムは、典型的には、セキュリティ・プロファイルのセットとして構成される。ユーザは、特定のセキュリティ・グループに割り当てられ、それは入れ子になっている場合があり、ユーザがＢＩレポーティング・システムに認証（ログイン）した後でも固定されたままの場合がある。ユーザには、許可されたセキュリティ・ロールも割り当てられることもあり、ＢＩレポーティング・システムに認証（ログイン）するときに、これらのロールのうちの１つまたは複数を選択する機会を有する。各セキュリティ・プロファイルは、１つの名前付きセキュリティ・グループまたはロールをアクセス権の特定のセットに関連付ける。ＯＬＡＰシステムは、異なる型式のデータに対して指定される異なる規則を用いて、様々な異なるセキュリティ・プロファイルについて、データへのアクセスを制限することができる。
【０００８】
ユーザがＢＩレポーティング・システムに認証（ログイン）し、特定のＯＬＡＰキューブからデータを照会するとき、その認証されたユーザの有効なセキュリティ・プロファイルとＯＬＡＰデータ源との組み合わせが、このユーザのセキュリティ・コンテキストを定める。例えば、時間と地理とを掛け合わせた売上レポート（クロス集計）を作成するユーザが、全ての潜在的に利用可能な年およびあらゆる地理的位置（例えば、国）の結果を見る資格が与えられていないことがあり、従って、ある一定の年メンバおよび国メンバは、このユーザのセキュリティ・コンテキスト（時間ディメンジョンおよび地理ディメンジョンへのアクセスを定める有効なセキュリティ・プロファイル）に基づいてフィルタ除外される。
【０００９】
ＢＩシステムは、データをキャッシュするとき、どのデータがユーザ間に共通であって、従って安全に共有できる（異なるユーザから見られる）か、そして、どのデータが共通でなく、即ちセキュアである（特定の種類のユーザからは見えない）かを、知る必要がある。この要件に対処するため、大抵のＢＩシステムは、現在、２つの典型的な手法のうちの１つを実装している。第１の手法は、システム管理者が、根底にあるＯＬＡＰデータ源のセキュリティ規則（アクセス権）を、ＢＩシステム内で直接複製して再定義するようにさせ、ＢＩシステムが単一のスーパユーザとしてデータ源にログインするようにさせることである。このことは、各ユーザに見る資格が与えられたデータのみを返すために、キャッシュへの何らかのアクセスの前および／または後に、各ユーザのセキュリティ・コンテキストに基づくフィルタ処理が実行される必要があることを意味する。第２の手法は、個々のＢＩシステム・ユーザが各自の資格証明を用いて根底にあるＯＬＡＰデータ源に接続するようにさせ、キャッシュされたいかなるデータ情報もユーザ間で共有しないようにさせることである。一般的に、第１の手法は、性能に関しては好ましく（典型的には大量であるメンバのために用いられるキャッシュ・メモリがより少ない）、一方、第２の手法は、保守の容易さに関して好ましい。
【００１０】
セキュリティ規則がＢＩシステム内で再定義される第１の手法では、あらゆるセキュリティ・プロファイルを、ＢＩシステムおよびＯＬＡＰデータ源の２箇所で保守する必要がある。こうしたセキュリティ保守のオーバヘッドは、煩雑であるのに加えて、誤りを生じやすい。他方、複数の（１ユーザにつき１つの）データ・キャッシュがＢＩシステムによって作られる第２の手法では、これが、非常に非効率的なメモリの使用を助長し、典型的にはメンバは大量であることを考えれば、性能の面で非常に費用がかかることが判明し得る。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明の課題は、最適化されたセキュアなキャッシング・システムおよびキャッシング方法を提供することにある。
【課題を解決するための手段】
【００１２】
第１の態様から見ると、本発明は、セキュアなキャッシング方法を提供する。このキャッシング方法は、データについてのユーザ要求およびセキュリティ・コンテキストを受け取ることと、ユーザ要求および受けたセキュリティ・コンテキストに基づいて、要求されたデータについてキャッシュを検索することとを含む。要求されたデータがキャッシュ内に発見された場合、キャッシュされたデータをユーザ要求に応答して返す。要求されたデータがキャッシュ内に発見されない場合、要求されたデータをデータ源から入手し、入手したデータをキャッシュに格納し、入手したデータをセキュリティ・コンテキストに関連付け、要求されたデータをユーザ要求に応答して返す。
【００１３】
この解決法は、以下の点に関して、当該技術分野の現状における欠陥に対処する。セキュリティ規則は、本質的に、個々のＢＩシステムのユーザがクエリ（レポート）を提出するときに「発見され」、「セキュリティ・リストとして表現され」るので（このセキュリティ・リストは、データ・キャッシュ内に置くことができる）、このデータ源不可知の手法は、あらゆるセキュリティ規則をＢＩシステム内で再定義しなければならないという要件を有さない。
【００１４】
更に、セキュリティ・リストは、キャッシュされたデータを参照する軽量のリストであるので、キャッシュされたデータ自体は、セキュリティ・プロファイルから独立しており、従って、異なるセキュリティ・プロファイルのアクセス権を遵守するという要件に関連した冗長性をわずかしか含まないか、全く含まない。この解決法によれば、キャッシュ・メモリは、サイズが最適化され、同じまたは異なるセキュリティ・コンテキストを有するますます多くのユーザがＢＩシステムにログインしてレポート／クエリを提出しても、著しく増大することにはならない。
【００１５】
第１の態様から見ると、本発明は、セキュアなキャッシング方法であって、データについてのユーザ要求およびセキュリティ・コンテキストを受け取ることと、ユーザ要求および受け取ったセキュリティ・コンテキストに基づいて、要求されたデータについてキャッシュを検索することと、要求されたデータがキャッシュ内に発見された場合、キャッシュされたデータをユーザ要求に応答して返すことと、要求されたデータがキャッシュ内に発見されない場合、要求されたデータをデータ源から入手し、入手したデータをキャッシュに格納し、入手したデータをセキュリティ・コンテキストに関連付け、要求されたデータをユーザ要求に応答して返すこととを含む方法を提供する。
【００１６】
好ましくは、本発明は、キャッシュされたデータが、キャッシュされたデータをセキュリティ・コンテキストに関連付ける対応するリストと共に格納される方法であって、要求されたデータがキャッシュ内に発見されない場合、キャッシュに格納された入手したデータをセキュリティ・コンテキストに関連付けるための新たなリストを、キャッシュに格納された入手したデータへの参照を格納することにより生成する、方法を提供する。
【００１７】
好ましくは、本発明は、新たなリストがリスト・ストレージ・ユニットに格納され、その中で、格納されたリストの数が受け取ったユーザ・クエリに基づいてインクリメンタルに増加する、方法を提供する。
【００１８】
好ましくは、本発明は、キャッシュされたデータにおける変化がリストの一貫性を損なう場合に、リストをリスト・ストレージ・ユニットからパージすることをさらに含む方法を提供する。
【００１９】
好ましくは、本発明は、キャッシュを使用する前にリスト・ストレージ・ユニットを初期化することをさらに含む方法であって、初期化することが、共通に用いられるセキュリティ・コンテキストについて共通に用いられるデータについてのクエリをデータ源に提出することと、クエリの結果をキャッシュにロードすることと、キャッシュされたデータを参照するセキュリティ・リストを作成することとを含む、方法を提供する。
【００２０】
好ましくは、本発明は、格納されたリストを冗長性について検査することをさらに含む方法であって、２つの同一のリストが発見された場合には２つの同一のリストが単一のリストに纏められる、方法を提供する。
【００２１】
好ましくは、本発明は、データがメタデータである方法を提供する。
【００２２】
好ましくは、本発明は、セキュリティ・コンテキストがユーザセキュリティ・プロファイルである方法を提供する。
【００２３】
別の態様から見ると、本発明は、ユーザとデータ源とに接続されたシステムにおけるセキュアなキャッシング方法であって、データ源が、ユーザのセキュリティ・コンテキストに基づいて定められたアクセス権を有する方法を提供する。本方法は、セキュリティ・コンテキストおよびデータ識別子を含むユーザ要求を受け取ることと、セキュリティ・コンテキストおよびデータ識別子により識別されるリストの存在についてリスト・ストレージ内を検査することとを含む。リストが存在しない場合、セキュリティ・コンテキストおよびデータ識別子により識別されるリストをリスト・ストレージ内に作成し、データ源からデータを取得し、取得したデータをデータ・ストレージに格納し、データ・ストレージに格納された取得したデータのストレージのアドレスを作成されたリストに取り込む。リストが存在する場合、リスト内のストレージ・アドレスを用いて、データ・ストレージからデータを取得する。
【００２４】
好ましくは、本発明は、データ識別子がキューブ・ディメンジョン識別子である方法を提供する。
【００２５】
好ましくは、本発明は、データ・ストレージが複数の異種の遠隔データ源から提供されたデータを含むキャッシュである方法を提供する。
【００２６】
好ましくは、本発明は、データ・ストレージおよびリスト・ストレージに事前ロードすることをさらに含む方法であって、リスト・ストレージには、共通に用いられるセキュリティ・コンテキストおよびデータ識別子に対応するリストが事前ロードされ、データ・ストレージには、事前ロードされたリストにより参照される共通に用いられるデータが事前ロードされる、方法を提供する。
【００２７】
好ましくは、本発明は、データ・ストレージに格納されるデータがＯＬＡＰメタデータである方法を提供する。
【００２８】
別の態様から見ると、本発明は、ソフトウェア・モジュールを実行するプロセッサと、ソフトウェア・モジュールを格納するメモリとを備えた、キャッシング・システムを提供し、ソフトウェア・モジュールは、データについてのユーザ要求およびセキュリティ・コンテキストを受け取るレシーバ・モジュールと、ユーザ要求および受け取ったセキュリティ・コンテキストに基づいて、要求されたデータについてキャッシュを検索する検索モジュールと、要求されたデータがキャッシュ内に発見された場合に、キャッシュされたデータをユーザ要求に応答して入手する管理モジュールとを備え、要求されたデータがキャッシュ内に発見されない場合には、管理モジュールは、要求されたデータをデータ源から入手し、入手したデータをキャッシュに格納し、入手したデータをセキュリティ・コンテキストに関連付け、要求されたデータをユーザ要求に応答して返す。
【００２９】
好ましくは、本発明は、検索モジュールが要求されたデータをキャッシュ内に発見されない場合、管理モジュールが、キャッシュに格納された入手したデータをセキュリティ・コンテキストに関連付けるための新たなリストを、キャッシュに格納された入手したデータへの参照を格納することにより生成する、システムを提供する。
【００３０】
好ましくは、本発明は、管理モジュールが、新たなリストをリスト・ストレージ・ユニットに格納し、その中で、格納されたリストの数が、一意の受け取ったユーザ・クエリに基づいてインクリメンタルに増加する、システムを提供する。
【００３１】
好ましくは、本発明は、キャッシュされたデータにおける変化がリストの一貫性を損なう場合に、リストをリスト・ストレージ・ユニットからパージする、パージ・モジュールをさらに備えたシステムを提供する。
【００３２】
好ましくは、本発明は、キャッシュを使用する前にリスト・ストレージ・ユニットを初期化する事前ロード・モジュールをさらに備えたシステムを提供し、事前ロード・モジュールは、共通に用いられるセキュリティ・コンテキストについて共通に用いられるデータについてのクエリをデータ源に提出し、クエリの結果をキャッシュに事前ロードし、キャッシュされたデータを参照する新たなセキュリティ・リストを作成する。
【００３３】
好ましくは、本発明は、格納されたリストを冗長性について検査し、２つの同一のリストが発見された場合には２つの同一のリストを単一のリストに纏める、検査モジュールをさらに備えたシステムを提供する。
【００３４】
別の態様から見ると、本発明は、セキュアなキャッシングのための命令を格納するコンピュータ可読媒体を提供し、命令は、データについてのユーザ要求およびセキュリティ・コンテキストを受け取ることと、ユーザ要求および受け取ったセキュリティ・コンテキストに基づいて、要求されたデータについてキャッシュを検索することと、要求されたデータがキャッシュ内に発見された場合、キャッシュされたデータをユーザ要求に応答して返すことと、要求されたデータがキャッシュ内に発見されない場合、要求されたデータをデータ源から入手し、入手したデータをキャッシュに格納し、入手したデータをセキュリティ・コンテキストに関連付けることとを含む。
【００３５】
好ましくは、本発明は、命令が、要求されたデータがキャッシュ内に発見されない場合に、キャッシュに格納された入手したデータをセキュリティ・コンテキストに関連付けるための新たなリストを、キャッシュに格納された入手したデータへの参照を格納することにより生成することをさらに含む、コンピュータ可読媒体を提供する。
【００３６】
好ましくは、本発明は、命令が、新たなリストがリスト・ストレージ・ユニットに格納されることをさらに含み、その中で、格納されたリストの数が一意の受け取られたユーザ・クエリに基づいてインクリメントに増加する、コンピュータ可読媒体を提供する。
【００３７】
好ましくは、本発明は、命令が、キャッシュされたデータにおける変化がリストの一貫性を損なう場合に、リストをリスト・ストレージ・ユニットからパージすることをさらに含む、コンピュータ可読媒体を提供する。
【００３８】
好ましくは、本発明は、命令が、キャッシュを使用する前にリスト・ストレージ・ユニットを初期化することをさらに含み、初期化することが、共通に用いられるセキュリティ・コンテキストについて共通に用いられるデータについてのクエリをデータ源に提出することと、クエリの結果をキャッシュにロードすることと、キャッシュされたデータを参照するセキュリティ・リストを作成することとを含む、コンピュータ可読媒体を提供する。
【００３９】
好ましくは、本発明は、命令が、格納されたリストを冗長性について検査することをさらに含み、２つの同一のリストが発見された場合に２つの同一のリストが単一のリストに纏められる、コンピュータ可読媒体を提供する。
【００４０】
ここで、本発明の好ましい実施形態を、例示のみの目的で、添付の図を参照して説明する。
【図面の簡単な説明】
【００４１】
【図１】当該分野において公知のＢＩシステムを示すブロック図である。
【図２】本発明の好ましい実施形態により実装されるデータ・キャッシングを伴うＢＩシステムのブロック図である。
【図３】本発明の好ましい実施形態による、例示的なセキュリティ・リストの構造を示す図である。
【図４】本発明の好ましい実施形態による、地理ディメンジョンについてのセキュリティ権限を示す図である。
【図５】本発明の好ましい実施形態による、地理ディメンジョンについてのセキュリティ権限を示す図である。
【図６】本発明の好ましい実施形態による、地理ディメンジョンについてのセキュリティ権限を示す図である。
【図７】本発明の好ましい実施形態による、地理ディメンジョンについてのセキュリティ権限および対応するセキュリティ・リストを示す図である。
【図８】本発明の好ましい実施形態による、地理ディメンジョンについてのセキュリティ権限および対応するセキュリティ・リストを示す図である。
【図９】本発明の好ましい実施形態による、セキュアなメンバ・キャッシング・プロセスを示すフローチャートである。
【図１０】本発明の好ましい実施形態による、セキュリティ・リストの生成を示すフローチャートである。
【図１１】本発明の好ましい実施形態による、セキュリティ・リストの削除を示すフローチャートである。
【図１２】本発明の好ましい実施形態による、セキュリティ・リストの削除を示すフローチャートである。
【図１３】本発明の好ましい実施形態による、本発明の例示的な実施形態がその中で動作可能なコンピュータ・システム環境を示す図である。
【発明を実施するための形態】
【００４２】
本発明の特定の実施形態と従来のデータ・キャッシュ・システムとの対比を助けるために、ここで、従来のデータ・キャッシュ・システムを、図１を参照して説明する。上記のように、図１は、関連分野の技術による従来のデータ・キャッシュを備えたＢＩシステムを示すブロック図である。図１において、クライアント１０２が、クエリ・サービス１１２を用いてデータを要求する。クエリ・サービス１１２で生成されたクエリは、要求１１１Ａとしてキャッシュ・ユニット１１０に提供される。キャッシュ・ユニット１１０は、クエリ・サービスおよびキャッシュ・ユニット１１０のモジュールとインタフェースするデータ・キャッシュ・モジュール１１１と、キャッシング挙動に影響を与える設定モジュール１１４と、データを格納するデータ・ストレージ１１７と、１つまたは複数の第三者データ源１０１から情報を取得するデータ源インタフェース１１５とを含む。データ・キャッシュ・モジュール１１１は、ストレージ１１７から取得したデータ、またはストレージ１１７において入手できない場合には第三者データ源１０１から取得したデータを、クエリ・サービス１１２への応答１１１Ｂにおいて提供し、次いでクエリ・サービス１１２が、それをクライアント１０２に提供する。この従来のシステムにおいて、第三者データ源１０１が、異なるユーザに対するデータの可視性／アクセス可能性に影響するセキュリティ規則を採用している場合、上述の背景技術の節で説明した２つの典型的な手法のうちの１つが、通常は適用される。
【００４３】
図２は、本発明の例示的な実施形態により実装されるキャッシュを備えたＢＩシステムを示す。
【００４４】
この例示的な実施形態におけるメンバの取得の場合、ユーザ・クエリをクライアント２０２から受け取ると、クエリ・サービス２１２は、元のクエリを満足させるためにキャッシュ・ユニットに対する必要なメンバ要求２１１Ａを作成し、ディメンジョン識別子（例えば「地理」）およびユーザのセキュリティ・コンテキストをそうした各要求と共に渡す。データ・キャッシュ・モジュール２１１は、要求２１１Ａを受け取って、キャッシュ設定モジュール２１４および「セキュリティ認識」レイヤ２１６とインタフェースする、インタフェースとして働く。
【００４５】
「セキュリティ認識」レイヤ２１６は、セキュリティ・リスト・ストレージ２１８に格納されたセキュリティ・リストを管理する。これは、セキュリティ・リスト・ストレージ２１８に格納されたセキュリティ・リストを、作成し、更新し、削除する。セキュリティ・リスト・ストレージ２１８に保持されたリストは、データ・ストレージ２１７に保持された、キャッシュされたデータを参照する。「セキュリティ認識」レイヤ２１６は、異なるセキュリティ・コンテキストについて異なることがある、種々のメンバ間の関係を含む、全てのセキュリティ・コンテキスト情報を管理する。「セキュリティ認識」レイヤ２１６は、キャッシュ・ユニット２１０のためにデータ・ストレージ２１７を保守する。
【００４６】
この例示的な実施形態におけるメンバの取得の場合、「セキュリティ認識」レイヤ２１６は、ユーザ・セキュリティ・コンテキストおよびディメンジョン識別子の両方により識別されるセキュリティ・リストの存在について、セキュリティ・リスト・ストレージ２１８内を検査する。セキュリティ・リストが存在する場合は、セキュリティ・リスト・ストレージ２１８は、発見されたセキュリティ・リスト内に存在する、データ・ストレージ２１７に格納されたメンバについての１つまたは複数のストレージ・アドレスへのリンクを返す。それで、メンバ・データは、「セキュリティ認識」レイヤによってデータ・ストレージ２１７から直接取得することができ、クエリ・サービス２１２への応答２１１Ｂにおいて返すことができる。セキュリティ・リストが存在しない場合には、「セキュリティ認識」レイヤ２１６は、ユーザのセキュリティ・コンテキストに関連付けられたデータ源２０１からディメンジョンメンバを取得するよう、データ源インタフェース２１５に命令する。結果として得られたメンバ（およびそれらの属性）は、データ・ストレージ２１７内にまだ存在しない場合にはデータ・ストレージ２１７に格納され、「セキュリティ認識」レイヤ２１６は、対応するストレージ・アドレスを用いて、セキュリティ・リスト・ストレージ２１８内に新しいセキュリティ・リストを作成する。特定のメンバが既にデータ・ストレージ２１７に格納されている場合には、それらは複製されないが、既存のストレージ・アドレスが新しいセキュリティ・リスト内で用いられる。次いで、要求されたメンバは、キャッシュ・ユニット２１０により、応答２１１Ｂを通じて、クエリ・サービス２１２に返される。
【００４７】
図３は、本発明の実施形態による、キャッシュされたメンバへの参照を含むセキュリティ・リストの例示的な構造を示す図である。図３において、セキュリティ・リスト３２０は、セキュリティ・コンテキスト・フィールド３２１およびディメンジョンフィールド３２２を含む、ヘッダを有する。このヘッダが、セキュリティ・リストを識別する。セキュリティ・リスト３２０の本体３３０は、このセキュリティ・リストに関連付けられたメンバのキャッシュ内格納位置へのアドレス（例えば、インデックス）のリストを含む。例えば、セキュリティ・コンテキスト・フィールド３２１の値は「欧州のセールス・マネージャ」３２３であり、ディメンジョンフィールド３２２の値は「地理」３２４である。セキュリティ・リストの本体３３０は、キャッシュに、例えば図２のデータ・ストレージ２１７に格納されているメンバに対応する、１つまたは複数のアドレスを含む。例えば、セキュリティ・リストの本体３３０は、キャッシュされたメンバ「スペイン」のアドレス、キャッシュされたメンバ「オランダ」のアドレス、およびキャッシュされたメンバ「イタリア」のアドレスを含む。
【００４８】
図４は、本発明の例示的な実施形態による、レベルおよびメンバの単一階層を有する、地理ディメンジョンを示す図である。地理ディメンジョンは、４つのレベルに分割することができる。即ち、ネバダおよびオンタリオのメンバを有する州（ｓｔａｔｅ／ｐｒｏｖｉｎｃｅ）レベル、米国、カナダ、フランスおよびイタリアのメンバを有する国レベル、北アメリカおよび欧州のメンバを有する大陸レベル、並びに、主レベルまたはルート・レベル、即ち、全地理レベルである。
【００４９】
図５に示すように、異なるユーザは、地理ディメンジョンの各レベル内の異なるレベルおよびメンバへのアクセスを有する。例えば、ユーザＡは、大陸レベルのメンバである北アメリカについてのデータにのみアクセスできる。従って、ユーザＡは、北アメリカ・メンバ、並びに、米国およびカナダのようないずれかのより下位レベル・メンバへのアクセスが許される。つまり、ユーザＡにとっての根ノード・メンバは北アメリカであり、北アメリカの全ての子ノードはユーザＡからアクセス可能である。他方、欧州およびその子ノードのような国レベルにある、他の地理ディメンジョンのメンバは、ユーザＡからアクセス可能ではない。
【００５０】
図６は、例示的な実施形態による、種々のユーザについての同じディメンジョンの例示的な見え方を示す。例えば、ユーザＡは、北アメリカ・メンバおよびその全ての子ノードにアクセス可能であり、ユーザＢは、欧州メンバおよびその全ての子ノードにアクセス可能であり、ユーザＣは、地理ディメンジョンの全てのメンバにアクセス可能である。
【００５１】
図７は、キャッシュ内のディメンジョンおよびメンバへのアクセスを提供するための、１つまたは複数のユーザ用のセキュリティ・コンテキストに関連付けられたセキュリティ・リストの使用を示す。ユーザＡおよびユーザＥは共に、プロファイル１というセキュリティ・コンテキストを有する。ユーザＡまたはユーザＥのどちらかがデータを要求すると、プロファイル１用のセキュリティ・リストが発見される。このプロファイル１セキュリティ・リストは、そのセキュリティ・コンテキストを有するユーザ、例えばユーザＡおよびユーザＥを、北アメリカ・メンバおよびその全ての子にリンクさせる。図８は、他のセキュリティ・コンテキストであるプロファイル２およびプロファイル３用の追加のセキュリティ・リストを示す。ここでは、ユーザＢは、プロファイル２を自身のセキュリティ・コンテキストとして有する。このセキュリティ・コンテキストは、プロファイル２セキュリティ・リストに関連付けられ、プロファイル２セキュリティ・リストは、ユーザＢを欧州メンバおよびその全ての子にリンクさせる。ユーザＣおよびユーザＤは、プロファイル３を自身のセキュリティ・コンテキストとして有する。このセキュリティ・コンテキストは、プロファイル３セキュリティ・リストに関連付けられ、プロファイル３セキュリティ・リストは、ユーザＣおよびユーザＤを、地理ディメンジョン内の全てのメンバにリンクさせる。
【００５２】
図９は、本発明の例示的な実施形態による、セキュアなメンバ・キャッシング・プロセスを示すフローチャートである。動作５０１において、ユーザ・クエリを受け取る。ＢＩシステムのクエリ・エンジンに提出されるユーザ・クエリは、潜在的には複数のディメンジョンを参照するが、そのようなクエリは、クエリ・サービスによりサブ・クエリに分解されるので、そのため、このセキュアなメンバ・キャッシング・プロセスが受け取るユーザ・クエリは、単一ディメンジョンについてのメンバ要求であると仮定することができる。このユーザ・クエリは、ユーザのセキュリティ・コンテキストも含む。
【００５３】
上述のように、特定のＯＬＡＰデータ源に照合してデータをクエリ／レポートする、ＢＩシステムの所与のユーザのセキュリティ・コンテキストは、その認証されたユーザおよびそのＯＬＡＰデータ源についての「有効な」セキュリティ・プロファイル（このユーザが属するセキュリティ・グループおよびログイン時に選択されたいずれかのロールに基づく）により定められる。とは言え、ユーザのセキュリティ・コンテキストは、ユーザがＢＩシステムと対話する際に変更される可能性がある。例えば、特定のＯＬＡＰキューブに照合したレポートをする準備をするとき、ユーザは、組織内での自分のロールをさらに説明するよう促されることがある。ひとたび認証されると、このロールは、ＢＩシステムにおけるその後の行為について、このユーザのセキュリティ・コンテキストの一部となり、セキュアなメンバ・キャッシング・プロセスは、この変更されたセキュリティ・コンテキストを、異なるセキュリティ・コンテキストとみなすことになる。
【００５４】
動作５０２において、動作５０１において受け取ったユーザ・クエリ内で識別されたディメンジョンおよびセキュリティ・コンテキストに基づいて、セキュリティ・リスト内における検索が行われる。合致するものが発見された場合（動作５０３−はい）、動作５０５において、キャッシュ内の対応するメンバ・データについてのアドレス情報が入手される。次いで、動作５０６において、要求されたメンバ・データは、入手されたアドレス情報を用いて、キャッシュから直接取得される。他方、現在のセキュリティ・コンテキストおよびディメンジョンについてのセキュリティ・リストが発見されない場合（動作５０３−いいえ）、動作５０４において、要求されたメンバは、データ源から取得され、キャッシュに格納される。動作５０７において、キャッシュに格納されたメンバへのアドレスを含む新たなセキュリティ・リストがキャッシュ内に作成される。
【００５５】
例示的な実施形態において、各ディメンジョンメンバは、一度だけ、データ・キャッシュに格納される。そのディメンジョンについて既に遭遇したユーザ・セキュリティ・コンテキストについて、ディメンジョンメンバ取得要求がデータ・キャッシュに対して為されたときは、根底にあるデータ源にクエリする必要はなく、現在のディメンジョンおよびユーザ・セキュリティ・コンテキストについてのセキュリティ・リストにより指し示されるキャッシュされたメンバが、単に返される。
【００５６】
同じセキュリティ・コンテキストを共有するあらゆるユーザ（例えば、カナダ国内の全てのセールス・マネージャ）は、そのセキュリティ・コンテキストに関連付けられたセキュリティ・リストを用いて、キャッシュに格納されたデータにアクセスすることが可能となる。
【００５７】
図１０は、例示的な実施形態による、セキュアなメンバ・キャッシング・プロセスにおけるセキュリティ・リストの生成を示すフローチャートである。動作６０１において、ユーザ・クエリを受け取る。動作６０２において、プロセスは、受け取ったユーザ・クエリ内で入手したセキュリティ・コンテキストおよびディメンジョンに基づいて、セキュリティ・リストについて検索する。特に、入手されたディメンジョンおよびセキュリティ・コンテキストは、所定の規則に従って結合され、キーまたは識別子になる。この生成されたキーを用いて、既存のリストが検索される。
【００５８】
生成されたキーにより識別されるセキュリティ・リストが存在する場合（動作６０３−はい）、動作６１０において、プロセスは終了する。他方、こうしたリストが発見されない場合（動作６０３−いいえ）、動作６０４において、新たなセキュリティ・リストが生成される。例えば、新たなセキュリティ・リストは、キー・フィールドおよびアドレス・フィールドを含むように初期化されることになる。キー・フィールドには、生成されたキーに対応する値が割り当てられる。
【００５９】
次に、動作６０５において、現在のユーザのセキュリティ・コンテキストにおいて、現在のディメンジョンについて、データ源からメンバ・データが取得される。次に、動作６０６において、返された各メンバがキャッシュ内に存在するかどうか検査される。メンバが既にキャッシュ内に存在する場合（動作６０６−はい）、動作６０７において、キャッシュ内のこのメンバのアドレス等の、このメンバへの参照が、新たなセキュリティ・リストに挿入される。
【００６０】
メンバがキャッシュに格納されていない場合（動作６０６−いいえ）、動作６０８において、このメンバのデータがキャッシュに取り込まれ、動作６０９において、キャッシュ内のこのメンバ・データのアドレス等の、このメンバへの参照が、新たなセキュリティ・リストに加えられる。次いで、プロセスは、次に返されたメンバについて同様の動作を続行する。他のディメンジョンメンバが返されない場合、プロセスは動作６１０に戻って終了する。
【００６１】
図１１および図１２は、本発明の例示的な実施形態による、セキュリティ・リストの削除を示すフローチャートである。
【００６２】
ＢＩシステムは、セキュリティ・リストの削除を含むように、キャッシュの従来の立退き（ｅｖｉｃｔｉｏｎ）戦略を改訂する。特に、キャッシュの立退き戦略は、キャッシュ・サイズ制限または時間制限よってトリガされ、「ディメンジョンごと」に実行することが可能であろう。図１１において、データ、この例ではメタデータをキャッシュから削除する要求を動作７０１において受け取り、そのメタデータは、削除用にマークされる。
【００６３】
例えば、キャッシュのサイズ制限に既に達し、メタデータがキャッシュからディメンジョンごとにパージされていると、その後のメタデータのためにメモリが解放される。あるいは、メタデータは、時間に基づいてパージすることができる。例えば、ディメンジョン内のいずれかのメタデータが所定の時間にわたって用いられていなければ、そのディメンジョンについてのメタデータはキャッシュからパージされる。これら２つの方法の組み合わせを用いて、キャッシュから削除すべきメタデータを決定することができる。また、セキュリティ規則の変更、または、根底にあるデータ源における他のメタデータ変更（例えば、徐々に変化するディメンジョンでは時として起こるような、メンバ・データの更新または削除）の理由で、キャッシュは、メタデータをパージする必要があることがある。
【００６４】
キャッシュが十分に最新であることを保証するため、例示的な実施形態において、ユーザが設定可能な有効期限が提供される。有効期限に到達すると、キャッシュ・データは、パージされ、再読み込みされる。例示的な実施形態において、この方式は、全てのソース・システム型式で機能し得、根底にあるセキュリティ・システムについての具体的な知識を必要としない。ディメンジョンの更新またはセキュリティの更新を決定するための、更新のトリガまたはポーリングのような機構が利用可能である場合、それらの機構は、キャッシュを更新すべき時を知るために用いられる。
【００６５】
動作７０２において、所定の方式に従って、削除用にマークされたメタデータが見いだされる。動作７０３において、削除用にマークされたメタデータのアドレスが入手される。メタデータのアドレスは、対応するセキュリティ・リストを決定することができるように一時的に格納される。動作７０４において、マークされたメタデータは削除される。動作７０５において、格納されたメタデータのアドレスを用いて、このメタデータについてのセキュリティ・リストが見いだされる。セキュリティ・リストは、キャッシュ内のメタデータの位置へのポインタを格納する。従って、セキュリティ・リスト内に保持されたいずれかのポインタが、削除されたメタデータ項目のキャッシュ位置を指し示しているならば、そのポインタは、セキュリティ・リストから削除される必要があり、それは動作７０６にて行われる。
【００６６】
図１２に示される代替的な立退き戦略は、ディメンジョンの一意識別子に基づくことができる。例えば、ディメンジョンは地理とすることができる。動作７１１において、キャッシュからこのディメンジョンを削除する要求を受け取る。動作７１２において、システムは、地理ディメンジョンにより部分的に識別される格納されたセキュリティ・リストについて検索する。動作７１３において、システムは、現在のセキュリティ・リストが地理ディメンジョンによるキーを付されているかどうかを判断する。そうでない場合（動作７１３−いいえ）、動作７１４において、最後のリストが検査されたかどうかを判断する検査が行われる。他のセキュリティ・リストが存在する場合、システムは、動作７１２に戻り、要求されたディメンジョンによるキーを付されたリストがもっとあるかどうかを検査する。
【００６７】
例えば、１つのセキュリティ・リストが「従業者」セキュリティ・コンテキストおよび地理ディメンジョンについてのものであり、別のリストが「セールス・マネージャ」セキュリティ・コンテキストおよび時間ディメンジョンについてのものであり、別のリストが「出納係」セキュリティ・コンテキストおよび地理ディメンジョンについてのものであるとすることができる。このとき、キャッシュから削除されるディメンジョンが地理であるならば、このディメンジョンにより識別される全てのセキュリティ・リストが削除される必要があり、セキュリティ・リスト「従業者」／地理および「出納係」／地理が削除されるべきであることを意味する。
【００６８】
現在のセキュリティ・リストが、要求されたディメンジョンにより部分的に識別される場合（動作７１３−はい）、動作７１５において、このセキュリティ・リストは削除される。次いで、システムは、動作７１４において、そのディメンジョンについて検査を要する他のリストが存在するかどうかを検査する。他のリストが存在する場合（動作７１４−いいえ）、システムは動作７１２に戻り、要求されたディメンジョンについてのキーを付されたリストがもっとあるかどうかを検査する。
【００６９】
他方、全てのリストが検査された場合（動作７１４において−はい）、動作７１６において、ディメンジョンがキャッシュ内で検索される。システムは、同じ一意のキーまたは識別子に基づいて、キャッシュ内でディメンジョンについて検索することができ、このキーまたは識別子は、例えば文字列「地理」とすることができる。このディメンジョンがメタデータ・キャッシュ内で発見されない場合（動作７１７−いいえ）、プロセスは終了する。ディメンジョンが発見された場合（動作７１７−はい）、動作７１８において、システムは、ディメンジョンをキャッシュから削除する。
【００７０】
例示的な実施形態において、且つ、ＢＩシステムに対する付加的な最適化として、共通に用いられるデータをキャッシュに事前ロードすることができる。システムにアクセスする主なセキュリティ・プロファイルに属するサンプルユーザを代表して、より共通に用いられるディメンジョンについてのメンバ・クエリを提出することにより、予め（システムの起動時に）メンバ・データをデータ・キャッシュに事前ロードすることができる。
【００７１】
また、ＢＩシステムに対する付加的な最適化として、ＢＩシステム環境内にモデリング・ツールを提供することができ、その目的は、ディメンジョン、階層、およびレベルといったＯＬＡＰキューブのメタデータを表現すること、並びに、このメタデータを、ＢＩシステム・クエリ・エンジンに自動的に提供される新たな属性で強化することである。このとき、例えば「セキュア済み」と呼ばれるこのモデリング・ツールにおける新たなディメンジョン属性をサポートすることにより、モデラは、どのキューブにおけるどのディメンジョンが実際にセキュリティ処理を要するかを特定することができる。結果として、この属性についての値をキャッシュ取得ロジックによって検証することができ、呼び出し元のクエリ・エンジンに返されるメンバがセキュアされる必要のないディメンジョン（即ち、セキュリティが適用されることがなく、従って、可視性の制限を考慮せずにそのキャッシュされたメンバを直接返すことが適するもの）についてのものであるときには常に、セキュリティ・リストを作成（および処理）するオーバヘッドが解消される。
【００７２】
セキュリティ認識メンバ・キャッシングのための別のメモリ最適化技術として、例示的な実施形態は、同一のセキュリティ・リストを認識してそれらを単一のリストに纏める（ｃｏｌｌａｐｓｅ）、並列にまたはスケジュールに従って実行する個別の作業を含むことができる。このように纏められた任意の２つのリストは、２つの異なるセキュリティ・コンテキストにおける、同じディメンジョンに属するメンバのクエリに由来したものであろう。ひとたび２つのリストが単一のリストになると、この単一のリストを識別するキー付け機構は、元のリストの作成に寄与した２つのセキュリティ・コンテキストがいずれも、得られた単一のリストにいまや関連付けられたことを保証する。
【００７３】
さらに、利用可能なシステム・リソースに応じて、異なる型式のストレージ機構を用いて、キャッシュのサイズを、異なる量のデータを保持するように調節することが可能である。例えば、キャッシング・レイヤは、どれだけの量のディメンジョンがＲＡＭに格納され、どれだけの量がディスク上に格納されるかのバランスを取ることができる。大きいディメンジョンは、１，０００，０００個を超えるメタデータ・メンバを含むことがある。従って、１，０００，０００個のメンバが実際にキャッシュ内に存在しても、これらをＲＡＭ内に保持することも可能であり、またはディスクにパージすることも可能である。
【００７４】
上記の例示的な実施形態は、ＯＬＡＰメンバに関するキャッシングを説明する。メタデータのような様々な異なる種類のデータのキャッシングを、上述の例示的な構造および方法を用いて実装することができる。即ち、上述の例示的な実施形態は、どちらかと言えば、セキュアなＯＬＡＰデータ源に接続されたシステムにおけるセキュアなメンバ・キャッシングに有益であるが、これを他の型式のデータを伴う実施形態において用いることも可能である。例えば、ＯＬＡＰディメンジョンデータ、階層データ、およびレベル・データを含むキャッシュを、これらの型式のデータへのアクセスをデータ源の規則に従ってセキュアにすることを要するときに最適化するために、これを用いることが可能である。タプル値へのアクセスをセキュアにすることを要するときに、ＯＬＡＰセル・データを含むキャッシュを最適化するために、これを用いることも可能である。更に、特定のキャッシュされたデータへのアクセスをデータ源の規則に従ってセキュアにすることを要するときにはいつでも、セキュアな非ＯＬＡＰデータ源に接続されたシステムにおける非ＯＬＡＰデータを含むキャッシュを最適化するために、これを用いることが可能である。
【００７５】
図１３は、例示的な実施形態による、コンピュータ／サーバ・システム８００を示すブロック図である。システム８００は、コンピュータ／サーバ・プラットフォーム８０１、周辺デバイス８０２およびネットワーク・リソース８０３を含む。
【００７６】
コンピュータ・プラットフォーム８０１は、コンピュータ・プラットフォーム８０１の種々の部分に渡ってそれらの間で情報を通信するためのデータ・バス８０４または他の通信機構と、バス８０４に結合された、情報を処理し他の計算および制御のタスクを実行するためのプロセッサ８０５とを含むことができる。コンピュータ・プラットフォーム８０１は、種々の情報並びにプロセッサ８０５により実行される命令を格納するための、バス８０４に結合された、ランダム・アクセス・メモリ（ＲＡＭ）または他の動的ストレージ・デバイス等の揮発性ストレージ８０６も含む。揮発性ストレージ８０６は、プロセッサ８０５による命令の実行の間、一時的な変数または他の中間的な情報を格納するために用いることもできる。
【００７７】
コンピュータ・プラットフォーム８０１は、基本入出力システム（ＢＩＯＳ）等、プロセッサ８０５用の静的な情報および命令、並びに種々の設定パラメタを格納するための、バス８０４に結合された読み出し専用メモリ（ＲＯＭまたはＥＰＲＯＭ）８０７または他の静的なストレージ・デバイスをさらに含むことができる。情報および命令を格納するために、磁気ディスク、光ディスク、またはソリッド・ステート・フラッシュ・メモリ・デバイス等の永続性ストレージ・デバイス８０８が設けられ、バス８０４に結合される。例えば、永続性ストレージ・デバイス８０８は、１つまたは複数のセキュリティ・リストを格納することができ、メタデータ・メンバを格納するキャッシュを含むこともできる。
【００７８】
コンピュータ・プラットフォーム８０１は、コンピュータ・プラットフォーム８０１のユーザに対して情報を表示するための、ブラウン管（ＣＲＴ）、プラズマ・ディスプレイ、または液晶ディスプレイ（ＬＣＤ）等の表示デバイス８０９に、バス８０４を介して結合することができる。プロセッサ８０５への情報伝達およびコマンド選択のために、英数字および他のキーを含む入力デバイス８２０が、バス８０４に結合される。別の種類のユーザ入力デバイスは、方向情報およびＯＬＡＰクエリ等のコマンド選択をプロセッサ８０５に伝達するため、並びに、表示装置８０９上のカーソル動作を制御するための、マウス、トラックボール、カーソル方向キー等のカーソル制御デバイス８１１である。この入力デバイスは、典型的には、第１の軸（例えば、ｘ）および第２の軸（例えば、ｙ）の２軸において自由度２を有し、これにより、デバイスが面内の位置を指定することが可能になる。
【００７９】
コンピュータ・プラットフォーム８０１により用いられるメタデータを格納する外部ストレージ・デバイス（データ源）８１２を、バス８０４を介してコンピュータ・プラットフォーム８０１に接続することができる。簡単にするために、１つのデータ源８１２だけが描かれているが、多数のデータ源８１２、並びに他の種類のデータ源が存在することがある。
【００８０】
本明細書で用いられる「コンピュータ可読媒体」という用語は、プロセッサ８０５に実行のための命令を提供することに関与する任意の媒体を指す。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、電子的、磁気的、光学的、電磁気的、赤外線若しくは半導体のシステム、装置若しくはデバイス、または上記のものの任意の適切な組み合わせとすることができるが、これらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）は、以下のもの、即ち、２つ以上の電線を有する電気的接続、フロッピー・ディスク若しくはフレキシブル・ディスク等のポータブル・コンピュータ・ディスケット、磁気テープ若しくは任意の他の磁気媒体、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、メモリ・カード、任意の他のメモリ・チップ若しくはカートリッジ、光ファイバ、ポータブル・コンパクト・ディスク型読み出し専用メモリ（ＣＤ−ＲＯＭ）、任意の他の光媒体、パンチカード、紙テープ、孔のパターンを伴う任意の他の物理的媒体、若しくはコンピュータが読み取ることが可能な任意の他の媒体、またはこれらの適切な組み合わせを含む。
【００８１】
本文書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって、またはこれらと関連して用いるためのプログラムを、収容または格納することができる任意の有形の媒体とすることができる。
【００８２】
コンピュータ可読信号媒体は、例えば、ベースバンド内または搬送波の一部としてその中に具体化されたコンピュータ可読プログラム・コードを有する、伝搬されるデータ信号を含むことができる。このような伝搬信号は、電磁的、光学的またはそれらの任意の適切な組み合わせを含むがこれらに限定されない種々の形態のいずれかをとることができる。コンピュータ可読信号媒体は、データ・バス８０４を構成する電線を含めて、同軸ケーブル、銅線および光ファイバを含むことができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、且つ、命令実行システム、装置若しくはデバイスによって、またはこれらと関連して用いるためのプログラムを伝達、伝搬または伝送することができる、任意のコンピュータ可読媒体とすることができる。
【００８３】
コンピュータ可読媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦ等、または上記のものの任意の適切な組み合わせを含むがこれらに限定されない、任意の適切な媒体を用いて伝送することができる。
【００８４】
例示的な実施形態の態様に関する動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋  ．ＮＥＴ等のようなオブジェクト指向プログラミング言語、および従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで記述することができる。プログラム・コードは、全体がユーザのコンピュータ上で実行される場合もあり、独立したソフトウェア・パッケージとして、一部がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、または全体が遠隔コンピュータ若しくはサーバ上で実行される場合もある。遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、または外部コンピュータへの（例えば、インターネット・サービス・プロバイダを用いるインターネットを通じた）接続がなされる場合もある。
【００８５】
コンピュータ可読媒体は、本明細書において説明される方法および／または技術のいずれかを実装するための命令を運ぶことができる機械可読媒体の単なる一例に過ぎない。このような媒体は、不揮発性媒体および揮発性媒体を含むがこれらに限定されない多くの形態をとることができる。不揮発性媒体は、例えば、ストレージ・デバイス８０８のような光学ディスクまたは磁気ディスクを含む。揮発性媒体は、揮発性ストレージ８０６のような動的メモリを含む。
【００８６】
種々の形態のコンピュータ可読媒体が、プロセッサ８０５に実行のための１つまたは複数の命令の１つまたは複数のシーケンスを運ぶことに関与することができる。例えば、命令を、最初に、遠隔コンピュータから磁気ディスク上に運ぶことができる。あるいは、遠隔コンピュータは、命令を自己の動的メモリにロードし、その命令を、モデムを用いて電話線を通じて送信することができる。コンピュータ・システム８００のローカルのモデムが、電話線上のデータを受信し、赤外線送信機を用いてデータを赤外線信号に変換する。赤外線検出器は、赤外線で運ばれたデータを受信することができ、適切な回路が、データをデータ・バス８０４に乗せることができる。バス８０４は、データを揮発性ストレージ８０６に運び、そこからプロセッサ８０５が命令を取得し実行する。揮発性メモリ８０６から取得された命令は、プロセッサ８０５によって実行される前か後のどちらかに、随意に、永続性ストレージ・デバイス８０８に格納することができる。命令は、当該技術分野において周知の種々のネットワーク・データ通信プロトコルを用いて、インターネットを介してコンピュータ・プラットフォーム８０１にダウンロードすることもできる。
【００８７】
コンピュータ・プラットフォーム８０１は、データ・バス８０４に結合されたネットワーク・インタフェース・カード８１３等の通信インタフェースも含むことができる。通信インタフェース８１３は、ローカル・ネットワーク８１５に接続されたネットワーク・リンク８１４に、双方向データ通信結合を提供する。例えば、通信インタフェース８１３は、対応する型式の電話線にデータ通信接続を提供する、サービス総合ディジタル網（ＩＳＤＮ）カードまたはモデムとすることができる。別の例として、通信インタフェース８１３は、適合するＬＡＮにデータ通信接続を提供するローカル・エリア・ネットワーク・インタフェース・カード（ＬＡＮ  ＮＩＣ）とすることができる。周知の８０２．１１ａ、８０２．１１ｂ、８０２．１１ｇおよびブルートゥース等の無線リンクも、ネットワークの実装に用いることができる。これらのどのような実装においても、通信インタフェース８１３は、種々の型式の情報を表現するデジタル・データ・ストリームを搬送する、電気信号、電磁信号または光信号を送受信する。
【００８８】
ネットワーク・リンク８１３は、典型的には、１つまたは複数のネットワークを通じた、他のネットワーク・リソースとのデータ通信を提供する。例えば、ネットワーク・リンク８１４は、ローカル・ネットワーク８１５を通じて、ホスト・コンピュータ８１６またはネットワーク・ストレージ／サーバ８２２への接続を提供する。追加的にまたは代替的に、ネットワーク・リンク８１３は、ゲートウェイ／ファイアウォール８１７を通じて、インターネットのような広域ネットワークまたはグローバル・ネットワーク８１８に接続することができる。従って、コンピュータ・プラットフォーム８０１は、データ源の別の例である遠隔ネットワーク・ストレージ／サーバ８１９等、インターネット８１８上のどこに位置するネットワーク・リソースにもアクセスすることが可能である。他方、コンピュータ・プラットフォーム８０１もまた、ローカル・エリア・ネットワーク８１５および／またはインターネット８１８上のどこに位置するクライアントからでもアクセスすることができる。ネットワーク・クライアント８２０および８２１は、システム８０１に遠隔的にアクセスすることができる。
【００８９】
ローカル・ネットワーク８１５およびインターネット８１８は共に、デジタル・データ・ストリームを搬送する電気信号、電磁信号または光信号を用いる。コンピュータ・プラットフォーム８０１へとデジタル・データを搬送し、コンピュータ・プラットフォーム８０１からデジタル・データを搬送する、種々のネットワークを通る信号、並びにネットワーク・リンク８１４上の信号および通信インタフェース８１３を通る信号は、情報を運ぶ搬送波の例示的な形態である。
【００９０】
コンピュータ・プラットフォーム８０１は、インターネット８１８およびＬＡＮ８１５を含む種々のネットワーク、ネットワーク・リンク８１４並びに通信インタフェース８１３を通じて、プログラム・コードを含めて、メッセージを送信し、データを受信することが可能である。インターネットの例において、システム８０１がネットワーク・サーバとして動作するとき、それは、クライアント８２０および／またはクライアント８２１上で実行中のアプリケーション・プログラムに対して、インターネット８１８、ゲートウェイ／ファイアウォール８１７、ローカル・エリア・ネットワーク８１５および通信インタフェース８１３を通じて、要求されたコードまたはデータを送出することができる。同様に、それは、他のネットワーク・リソースからコードを受信することができる。
【００９１】
受信されたコードは、受信されたときにプロセッサ８０５により実行することもでき、および／または、後で実行するために永続性ストレージ・デバイス８０８若しくは揮発性ストレージ・デバイス８０６または他の不揮発性ストレージに格納することもできる。この方式で、コンピュータ・システム８０１は、搬送波の形態のアプリケーション・コードを入手することができる。
【００９２】
図面内のフローチャートおよびブロック図は、種々の例示的な実施形態による、システム、方法およびコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能および動作を示す。この点に関して、フローチャートおよびブロック図内の各ブロックは、指定された論理機能を実装するための１つまたは複数の実行可能な命令を含む、モジュール、セグメント、またはコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図面に記された順序とは異なる順序で行なわれることもあることにも留意すべきである。例えば、連続して図示された２つのブロックが、実際には実質的に同時に実行されることもあり、またはこれらのブロックは、関与する機能に応じて、ときには逆順で実行されることもある。ブロック図および／またはフローチャート図の各ブロック、並びにブロック図および／またはフローチャート図内のブロックの組み合わせは、指定された機能または行為を実行する専用ハードウェア・ベースのシステム、または専用ハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
【００９３】
本明細書において用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図するものではない。本明細書で用いられるとき、単数形「１つの（ａ）」、「１つの（ａｎ）」および「その（ｔｈｅ）」は、文脈が明らかにそうでないことを示していない限り、複数形も含むことが意図されている。本明細書で用いられるとき、「含む」および／または「含んでいる」という用語は、提示された特徴、整数、ステップ、動作、要素、および／またはコンポーネントが存在することを特定するものであるが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、および／またはそれらのグループの存在または追加を排除するものではないことがさらに理解されるであろう。
【００９４】
以下の特許請求の範囲における全ての「手段またはステップと機能との組み合わせ（ミーンズまたはステップ・プラス・ファンクション）」要素の対応する構造、材料、行為および均等物は、その機能を、明確に特許請求されているように他の特許請求された要素と組み合わせて実行するための、いかなる構造、材料または行為をも含むことが意図される。例示的な実施形態の説明は、例示および説明の目的で提示されたものであるが、網羅的であることを意図するものではなく、本発明を開示された形態に限定することを意図するものでもない。本発明の範囲および精神から逸脱することのない多くの変更および変形が、当業者には明らかであろう。実施形態は、本発明の原理および実際の用途を最も良く説明するため、および、当業者が本発明を種々の変更を有する種々の実施形態について企図される特定の使用に適したものとして理解することを可能にするために、選択および記載された。
【符号の説明】
【００９５】
８００：コンピュータ／サーバ・システム
８０２：周辺デバイス
８１４：ネットワーク・リンク
【図１】
2013520738.tif 000003
【図２】
2013520738.tif 000004
【図３】
2013520738.tif 000005
【図４】
2013520738.tif 000006
【図５】
2013520738.tif 000007
【図６】
2013520738.tif 000008
【図７】
2013520738.tif 000009
【図８】
2013520738.tif 000010
【図９】
2013520738.tif 000011
【図１０】
2013520738.tif 000012
【図１１】
2013520738.tif 000013
【図１２】
2013520738.tif 000014
【図１３】
2013520738.tif 000015
2013520738.tif 000016
2013520738.tif 000017
2013520738.tif 000018
2013520738.tif 000019
2013520738.tif 000020
2013520738.tif 000021
2013520738.tif 000022
2013520738.tif 000023
2013520738.tif 000024
2013520738.tif 000025
2013520738.tif 000026
2013520738.tif 000027
2013520738.tif 000028
【手続補正書】
【提出日】平成24年10月25日(2012.10.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データベース・アプリケーションのためのセキュアなキャッシング方法であって、
データについてのユーザ要求およびユーザの前記データベース・アプリケーションのセキュリティ・プロファイルを特定するセキュリティ・コンテキストを受けるステップと、
前記ユーザ要求および前記受けたセキュリティ・コンテキストに基づいて、前記要求されたデータについてキャッシュを検索するステップと、
前記要求されたデータが前記キャッシュ内に発見された場合に、前記キャッシュされたデータを前記ユーザ要求に応答して返すステップと、
前記要求されたデータが前記キャッシュ内に発見されない場合に、前記要求されたデータをデータ源から入手し、前記入手したデータを前記キャッシュに格納し、前記入手したデータを前記セキュリティ・コンテキストに関連付け、前記要求されたデータを前記ユーザ要求に応答して返すステップと、
を含む方法。
【請求項２】
前記キャッシュされたデータは、前記キャッシュされたデータを前記セキュリティ・コンテキストに関連付ける、対応するリストと共に格納され、前記要求されたデータが前記キャッシュ内に発見されない場合、前記キャッシュに格納された前記入手したデータを前記セキュリティ・コンテキストに関連付けるための新たなリストを、前記キャッシュに格納された前記入手したデータへの参照を格納することにより生成する、請求項１に記載の方法。
【請求項３】
前記新たなリストは、リスト・ストレージ・ユニットに格納され、その中で、格納されたリストの数が、受け取ったユーザ・クエリに基づいてインクリメンタルに増加する、請求項２に記載の方法。
【請求項４】
キャッシュされたデータにおける変化がリストの一貫性を損なう場合に、前記リストをリスト・ストレージ・ユニットからパージすることをさらに含む、請求項２に記載の方法。
【請求項５】
前記キャッシュを使用する前にリスト・ストレージ・ユニットを初期化することをさらに含み、前記初期化することは、共通に用いられるセキュリティ・コンテキストについて共通に用いられるデータについてのクエリをデータ源に提出することと、クエリの結果を前記キャッシュにロードすることと、前記キャッシュされたデータを参照するセキュリティ・リストを作成することとを含む、請求項２に記載の方法。
【請求項６】
格納されたリストを冗長性について検査することをさらに含み、２つの同一のリストが発見された場合には、前記２つの同一のリストが単一のリストに纏められる、請求項２に記載の方法。
【請求項７】
前記データは、メタデータである、請求項１に記載の方法。
【請求項８】
前記セキュリティ・コンテキストおよびデータ識別子により識別されるリストの存在についてリスト・ストレージ内を検査するステップと、
前記リストが存在しない場合、前記セキュリティ・コンテキストおよび前記データ識別子により識別されるリストを前記リスト・ストレージ内に作成し、前記データ源からデータを取得し、前記取得したデータをデータ・ストレージ内に格納し、前記データ・ストレージに格納された前記取得したデータのストレージのアドレスを前記作成されたリストに取り込むステップと、
前記リストが存在する場合、前記リスト内の前記ストレージ・アドレスを用いて、前記データ・ストレージからデータを取得するステップと
をさらに含む、請求項１に記載の方法。
【請求項９】
前記データ識別子は、キューブ・ディメンジョン識別子である、請求項８に記載の方法。
【請求項１０】
前記データ・ストレージは、複数の異種の遠隔データ源から提供されたデータを含むキャッシュである、請求項８に記載の方法。
【請求項１１】
前記データ・ストレージおよび前記リスト・ストレージに事前ロードすることをさらに含み、前記リスト・ストレージには、共通に用いられるセキュリティ・コンテキストおよびデータ識別子に対応するリストが事前ロードされ、前記データ・ストレージには、前記事前ロードされたリストにより参照される共通に用いられるデータが事前ロードされる、請求項８に記載の方法。
【請求項１２】
データ・ストレージに格納される前記データは、ＯＬＡＰメタデータである、請求項８に記載の方法。
【請求項１３】
キャッシング・システムであって、
ソフトウェア・モジュールを実行するプロセッサと、
前記ソフトウェア・モジュールを格納するメモリと
を備え、前記ソフトウェア・モジュールは、
データについてのユーザ要求および前記ユーザのセキュリティ・プロファイルを識別する前記データベース・アプリケーションのセキュリティ・コンテキストを受けるレシーバ・モジュールと、
前記ユーザ要求および前記受け取ったセキュリティ・コンテキストに基づいて、前記要求されたデータについてキャッシュを検索する検索モジュールと、
前記要求されたデータが前記キャッシュ内に発見された場合に、前記キャッシュされたデータを前記ユーザ要求に応答して入手する管理モジュールを備え、
前記要求されたデータが前記キャッシュ内に発見されない場合、前記管理モジュールは、前記要求されたデータをデータ源から入手し、前記入手したデータを前記キャッシュに格納し、前記入手したデータを前記セキュリティ・コンテキストに関連付け、前記要求されたデータを前記ユーザ要求に応答して返す、システム。
【請求項１４】
前記検索モジュールが要求されたデータを前記キャッシュ内に発見されない場合、前記管理モジュールは、前記キャッシュに格納された前記入手したデータを前記セキュリティ・コンテキストに関連付けるための新たなリストを、前記キャッシュに格納された前記入手したデータへの参照を格納することにより生成する、請求項１３に記載のシステム。
【請求項１５】
前記管理モジュールは、前記新たなリストをリスト・ストレージ・ユニットに格納し、その中で、格納されたリストの数は、一意の受け取ったユーザ・クエリに基づいてインクリメンタルに増加する、請求項１４に記載のシステム。
【請求項１６】
キャッシュされたデータにおける変化がリストの一貫性を損なう場合に前記リストをリスト・ストレージ・ユニットからパージする、パージ・モジュールをさらに備える、請求項１４に記載のシステム。
【請求項１７】
前記キャッシュを使用する前にリスト・ストレージ・ユニットを初期化する事前ロード・モジュールをさらに備え、前記事前ロード・モジュールは、共通に用いられるセキュリティ・コンテキストについて共通に用いられるデータについてのクエリを前記データ源に提出し、前記クエリの結果を前記キャッシュに事前ロードし、前記キャッシュされたデータを参照する新たなセキュリティ・リストを作成する、請求項１６に記載のシステム。
【請求項１８】
格納されたリストを冗長性について検査し、２つの同一のリストが発見された場合には前記２つの同一のリストを単一のリストに纏める、検査モジュールをさらに備える、請求項１４に記載のシステム。
【請求項１９】
コンピュータ・システムに読み込まれて実行されたときに、請求項１から請求項１２までのいずれか１項に記載の方法の全てのステップを実行するコンピュータ・プログラム・コードを含む、コンピュータ・プログラム。
【請求項２０】
請求項１〜１２のいずれかの方法の各ステップを実行する手段を備える、システム。
【請求項２１】
請求項１〜１２のいずれかの方法の各ステップをコンピュータに実行させる、プログラム。
【国際調査報告】
2013520738.tif 000029
2013520738.tif 000030
2013520738.tif 000031