(57)【要約】  多次元データベース（例えば、ＯＬＡＰシステムの一部として）のユーザに対し、多次元データベースの少なくとも一部のコピー（すなわち、ローカルキューブ）をユーザのユーザ装置上にローカルにキャッシュすることができる。ユーザは多次元データベースサーバではなくローカルキューブにその後問合せることができる。さらにローカルキューブはデータベースからのデータだけでなくデータ片の間の依存性を表す関数を含むことができる。ユーザ装置上のレポーティングツールをローカルキューブと通信するように構成して、ユーザはレポーティングツールを使用して、ローカルキューブからのデータおよび関数にアクセスすることで、「ｗｈａｔ−ｉｆ」シナリオをローカル（例えば、揮発性）メモリ内で試行することができる。例えば、フロントエンドレポーティングツールからローカルにキャッシュしたデータへ全てのクエリを向けるシンクライアント側クエリレイヤを提供できる。
2009512909.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワークのユーザ装置において、前記通信ネットワーク上で前記ユーザ装置と別個の装置であるネットワーク装置に格納された多次元データベースの少なくとも一部を使用するシステムであって、前記多次元データベースは前記通信ネットワーク上の複数のユーザ装置によって共有され、前記システムは、
前記多次元データベースの少なくとも一部のコピーを前記ユーザ装置の不揮発性記憶媒体に格納することを制御する記憶コントローラと、
前記多次元データベースの少なくとも一部に含まれる情報片に対する要求を前記ユーザ装置上で実行するアプリケーションから受信し、前記不揮発性記憶媒体上のコピーから前記情報片を取り出すことを制御するクエリコントローラと
を有することを特徴とするシステム。
【請求項２】
前記多次元データベースの少なくとも一部は、第１の情報片を含み、当該第１の情報片は前記少なくとも一部に含まれる少なくとも第２の情報片の関数であり、
前記記憶コントローラは、前記コピー内部の関数を前記不揮発性記憶媒体に格納することを制御するように動作し、前記システムは、
前記ユーザ装置上の揮発性メモリの前記第２の情報片の値を変更するアプリケーションに応じて、前記揮発性メモリの前記第１の情報片上の前記関数を実施する関数コントローラをさらに有すること
を特徴とする請求項１に記載のシステム。
【請求項３】
前記関数コントローラは、前記関数の実施結果である前記第１情報片の値を表示可能なように、前記関数の実施結果を前記アプリケーションのユーザインタフェースディスプレイに通信するように動作することを特徴とする請求項２に記載のシステム。
【請求項４】
前記変更は、前記多次元データベースの少なくとも一部のコピーに含まれる１つまたは複数の情報片に対して前記揮発性メモリ内で行った複数の変更のうちの１つであり、前記システムは、
前記複数の変更を表しかつ前記揮発性メモリ内に存在する変更リストに前記変更を追加することを制御する変更リストコントローラをさらに有することを特徴とする請求項２に記載のシステム。
【請求項５】
前記記憶コントローラは、前記揮発性メモリからの前記変更リストを適用することによって、前記不揮発性記憶媒体上の前記多次元データベースの少なくとも一部のコピーに対する更新を制御するよう動作することを特徴とする請求項４に記載のシステム。
【請求項６】
前記記憶コントローラは、前記変更リストを前記不揮発性記憶媒体に記憶することを制御するよう動作することを特徴とする請求項４に記載のシステム。
【請求項７】
前記変更リストを前記ユーザ装置から前記ネットワーク装置に伝送することを制御するサーバインタフェースコントローラをさらに有する請求項４に記載のシステム。
【請求項８】
前記多次元データベースの少なくとも一部に対する１つまたは複数の変更を示す前記ネットワーク装置からの少なくとも１つの通信を受信し、前記の少なくとも１つの通信に応じて、前記多次元データベースの少なくとも一部のローカルコピーを前記多次元データベースの少なくとも一部と同期することを制御するよう動作するサーバインタフェースコントローラをさらに有する請求項１に記載のシステム。
【請求項９】
通信ネットワークのネットワーク装置に存在する多次元データベースの少なくとも一部を用いる方法であって、前記多次元データベースは、前記通信ネットワーク上の複数のユーザ装置により共有され、第１の情報片を含み、当該第１の情報片は前記の少なくとも一部に含まれる少なくとも第２の情報片の関数であり、前記方法は、
（Ａ）前記多次元データベースの少なくとも一部のコピーを前記通信ネットワーク上の前記ネットワーク装置と別個の装置であるユーザ装置の不揮発性記憶媒体に記憶し、前記コピー内の前記関数を前記不揮発性媒体に記憶することを含む動作と、
（Ｂ）前記ユーザ装置上の揮発性メモリにおける前記第２の情報片の値を変更するアプリケーションに応じて、前記揮発性メモリ内の前記第１の情報片における前記関数を実施する動作と
を有することを特徴とする方法。
【請求項１０】
前記変更は、前記多次元データベースの少なくとも一部のコピーに含まれる１つまたは複数の情報片に対して前記揮発性メモリにおいて行った複数の変更の１つであり、前記方法は、
（Ｅ）前記複数の変更を表す変更リストに対する変更を加える動作をさらに有し、当該変更リストは前記揮発性メモリ内に存在すること
を特徴とする請求項９に記載の方法。
【請求項１１】
（Ｆ）前記揮発性メモリからの前記変更リストを適用することによって、前記不揮発性記憶媒体上の前記多次元データベースの少なくとも一部のコピーを更新する動作
をさらに有することを特徴とする請求項１０に記載の方法。
【請求項１２】
（Ｆ）前記変更リストを前記不揮発性記憶媒体に記憶する動作
をさらに有することを特徴とする請求項１０に記載の方法。
【請求項１３】
（Ｆ）前記変更リストを前記ユーザ装置から前記ネットワーク装置に伝送する動作
をさらに有することを特徴とする請求項１０に記載の方法。
【請求項１４】
（Ｇ）前記多次元データベースの少なくとも一部のコピーからレポートを生成する動作
をさらに有することを特徴とする請求項９に記載の方法。
【請求項１５】
（Ｃ）前記多次元データベースの少なくとも一部に対する１つまたは複数の変更を示す、前記ネットワーク装置からの少なくとも１つの通信を受信すること、
（Ｄ）前記の少なくとも１つの通信に応じて、前記多次元データベースの少なくとも一部のローカルコピーを前記の次元データベースの少なくとも一部と同期すること
をさらに有することを特徴とする請求項９に記載の方法。
【請求項１６】
コンピュータ可読媒体と、
前記コンピュータ可読媒体に記憶されたコンピュータ可読信号と
を有するコンピュータプログラム製品であって、
前記コンピュータ可読信号は、命令を定義し、当該命令はコンピュータによる実行の結果として前記コンピュータを制御して通信ネットワークのネットワーク装置に存在する多次元データベースの少なくとも一部を使用するプロセスを実施し、当該多次元データベースは前記通信ネットワーク上の複数のユーザ装置によって共有されており、当該プロセスは、
（Ａ）前記多次元データベースの少なくとも一部のコピーに対する要求を、前記通信ネットワーク上の前記ネットワーク装置とは別個の装置であるユーザ装置から前記ネットワーク装置へ伝送する動作と、
（Ｂ）前記ユーザ装置で、前記の多次元データベースの少なくとも一部のコピーを受信する動作と、
（Ｃ）前記多次元データベースの少なくとも一部のコピーを、前記ユーザ装置の不揮発性記憶媒体に記憶する動作とを有すること
を特徴とするコンピュータプログラム製品。
【請求項１７】
（Ｄ）前記ユーザ装置上で実行するアプリケーションからの前記多次元データベースの少なくとも一部に含まれる情報片に対する要求に応じて、前記情報片を前記不揮発性記憶媒体上の前記コピーから取り出す動作
をさらに有することを特徴とする請求項１６に記載のコンピュータ可読媒体。
【請求項１８】
前記多次元データベースの少なくとも一部は、少なくとも第１の情報片を含み、当該第１の情報片は前記少なくとも一部に含まれる少なくとも第２の情報片の関数であり、
前記動作（Ａ）は、前記コピー内の前記関数を前記不揮発性記憶媒体に記憶する動作を有し、前記コンピュータ可読媒体は、
前記ユーザ装置上の揮発性メモリにおける前記第２情報片の値を変更するアプリケーションに応じて、前記揮発性メモリの前記第１情報片の前記関数を実施する（Ｃ）の動作
をさらに有すること
を特徴とする請求項１６に記載のコンピュータ可読媒体。
【請求項１９】
前記変更は、前記多次元データベースの少なくとも一部のコピーに含まれる１つまたは複数の情報片に対して前記揮発性メモリにおいて行った複数の変更の１つであり、前記プロセスは、
（Ｅ）前記複数の変更を表す変更リストに前記変更を加える動作をさらに有し、当該変更リストは前記揮発性メモリに存在すること
を特徴とする請求項１８に記載のコンピュータ可読媒体。
【請求項２０】
前記プロセスは、
（Ｆ）前記変更リストを前記ユーザ装置から前記ネットワーク装置に伝送する動作
をさらに有することを特徴とする請求項１９に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ装置上の多次元データベースの部分的キャッシングおよび修正に関する。
【背景技術】
【０００２】
多次元データベース（キューブまたは統一次元モデル（ＵＤＭ）としても知られる）は今日のビジネス世界において益々大きな役割を果たしており、一般にオンライン分析処理（ＯＬＡＰ）の主要なコンポーネントである。関係がフラットなデータの２次元ビューのみを提供するリレーショナルデータベースとは異なり、多次元データベースは一般に多数の抽象化次元を提供する。さらに、多次元データベースは、一般に階層および階層の組み合わせの表現を完全にサポートする。例えば、上記のデータベースが提供する多次元ビューは、生産ラインの階層、ビジネス組織の階層、顧客の階層、時間、および他の次元を複雑に組み合わせたものを表現することができる。多次元データベースは一般に、多次元のデータおよびデータ間で定義した関係に基づいて複雑な計算を行う機能性で構成される。（定義により、多次元のデータベースシステムを使用する）ＯＬＡＰシステムの例には、ワシントン州レドモンド（Ｒｅｄｍｏｎｄ、Ｗａｓｈｉｎｇｔｏｎ）のマイクロソフト社（Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ）より入手可能なＭｉｃｒｏｓｏｆｔ（登録商標）  Ａｎａｌｙｓｉｓ  Ｓｅｒｖｉｃｅｓがある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＯＬＡＰシステム（例えば、Ｍｉｃｒｏｓｏｆｔ  Ａｎａｌｙｓｉｓ  Ｓｅｒｖｉｃｅｓ）を利用するレポーティングツールは一般に、多次元データの静的なビューのみ生成するよう構成される。レポーティングツール（例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｅｘｃｅｌのようなアプリケーション）は、ユーザ装置（すなわち、クライアント）に存在し、ネットワークを介してクエリを多次元データベースサーバに送信し、そのサーバはビューを生成してそれをユーザ装置に返信する。このビューは、例えば依存する値が変化した際に値の再計算を実施することで、ユーザがビューと対話してレポートビューデータを試行できるような効率的メカニズムを提供しないという点で静的である。すなわち、ユーザデータはビューデータで「ｗｈａｔ−ｉｆ」シナリオを展開することができない。例えば、アプリケーションはスプレッドシートまたはテーブル内にレポート（すなわち、ビュー）を提供でき、この場合、１つまたは複数のセルの値は１つまたは複数の他のセルの値に依存する（すなわち、１つまたは複数の他セルの値の関数である）。
【０００４】
データ片に対する変更の影響を試行するため、ユーザはアプリケーション内で変更を行い、それをサーバに送信しなければならないだろう。サーバはその後前記データ片を伴うサーバ側の計算を多次元データベース内で実施し、その変更をユーザに折り返し報告する。前記変更は、それがデータベース内に存続し、従って前記変更はデータベースを共有する他のユーザに強制されるという点で永続的である。さらに、ユーザはユーザ装置とサーバとの間の通信、およびサーバが計算する時間の間待機しなければならない。また、ＯＬＡＰのユーザ数が増加すると、サーバを伴う上記通信および計算の数が増加し、このことはネットワーク上の輻輳の原因となりうる。この輻輳はさらに、例えばクエリへの応答の遅延原因となる。
【０００５】
多次元データに対する「ｗｈａｔ−ｉｆ」シナリオを実装する他の選択肢は、レポーティングツール自身を構成して、依存データ間で必要な計算を実施することである。しかしながら、レポーティングツールは本質的に、提示するデータを関連付ける能力が非常に未熟である。すなわち、レポーティングツールは一般に、比較的フラットなデータの２次元ビューを定義および表示できるだけである。従って、多次元データベースのデータ間の複雑な関係を、レポーティングツールが提供するデータのビューにマッピングすることは、一般に不可能ではないにしても極度に困難な作業である。さらに、レポーティングツールは一般に、多次元データベースのデータ変更に対して必要な、頻繁で複雑な多次元計算を実施するようには構成されていない。加えて、これらの複雑な計算の一部は、（例えば、データがレポートに表示されていないため）レポートを実行中のユーザ装置に存在しないデータへアクセスすることを伴う。上記データはサーバから取り出さねばならず、そのため、レポーティングツールを用いた多次元計算の実施がさらに困難かつ時間のかかるものとなる。
【０００６】
このように、現在利用可能なレポーティングツールは、ユーザが、多次元データベースのビューにおいて、ビュー内でデータを変更することにより生ずる影響を試行可能にするには不適切である。
【課題を解決するための手段】
【０００７】
ここでは本発明の態様に対する例示的なコンテキストを簡潔な形で提供する。ここでは特許請求された対象の範囲を制限するよう意図しておらず、特許請求された対象の主要なおよび／または本質的な特徴を識別するようにも意図していない。本発明のこれらおよび他の態様は、後述する発明を実施するための最良の形態でより完全に説明する。
【０００８】
（例えば、ＯＬＡＰシステムの一部として）多次元データベースのユーザに対し、多次元データベースの少なくとも一部のコピー（すなわち、ローカルキューブ）をユーザのユーザ装置上にローカルにキャッシュすることができる。例えば、ユーザ装置は、ユーザのローカルキューブに対する要求を多次元データベースサーバ（例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ａｎａｌｙｓｉｓ  Ｓｅｒｖｉｃｅｓサーバ）に送信できる。ユーザのセキュリティコンテキストに基づいて、ユーザに対してサーバが生成したキューブはサブキューブ、すなわち、多次元データベースの全体に満たないキューブである可能性がある。サーバはキューブのセキュアなコピーをサーバ自身に格納し、そのキューブをユーザ装置に送信し、ユーザ装置はそのキューブをローカルに格納することができる。
【０００９】
ユーザはその後、多次元データベースサーバではなくローカルキューブに問い合わせることができる。さらに、ローカルキューブはデータベースからのデータだけでなく、データ片の間の依存関係を表す関数を含むことができる。ユーザ装置上のレポーティングツールを構成してローカルキューブと通信することができる。レポーティングツールはローカルキューブに問い合わせ、ローカルキューブおよびローカル（例えば揮発性）メモリからのデータを含む操作を実施することができる。例えば、ローカルキューブからのデータに対する操作は多次元の操作を含むことができ、レポーティングツールを実行するコンピュータプロセスまたはそこから発生するコンピュータプロセスの一部として実施することができる。これらの操作にローカルキューブからアクセスすることもできる。従って、ユーザは「オフライン（ｏｆｆ−ｌｉｎｅ）」で、すなわちデータベースサーバと接続せずに作業することができる。ユーザはこの機能を利用して、「ｗｈａｔ−ｉｆ」シナリオをリモートサーバにアクセスする必要なく、ローカルに試行することができる。
【００１０】
例えば、シンクライアント側クエリレイヤを提供できる。このシンクライアント側クエリレイヤは、例えばＭｉｃｒｏｓｏｆｔ（登録商標）  Ｅｘｃｅｌのようなフロントエンドレポーティングツールからの全てのクエリをローカルにキャッシュしたデータに向ける。従って、フロントエンドレポーティングツールは、データサーバに接続せずにユーザのニーズを満たすことができる。ユーザはレポート内に提示されたデータを自由に変更することができ、データ変更をローカルキューブに送信することができる。その後全ての関連するデータ変更（計算、集計、等）をクライアント側プロセス内部のメモリ内操作として比較的迅速に計算することができ、ユーザに伝える（例えば、表示する）ことができる。例えば、ユーザはスプレッドシートアプリケーション（例えばＭｉｃｒｏｓｏｆｔ（登録商標）  Ｅｘｃｅｌ）の最初のセルに変更を加えることができ、結果として生ずるデータベース操作をローカルに実施し、スプレッドシート内部の影響を受けたセルは、ユーザに提示したユーザインタフェースディスプレイ内で更新することができる。
【００１１】
ローカルキューブをユーザ装置に提供する多次元データベースサーバは、ローカルキューブにタイムスタンプを付与することができる。ローカルキューブに加えた変更の変更リストをユーザ装置上で保持し、これら変更の各々にタイムスタンプを付与することができる。ローカルキューブが多次元データベースサーバからロードされた時間を表すタイムスタンプおよび／または変更リスト内に列挙した変更のタイムスタンプに基づいて、ローカルキューブ内のデータをそのコピー元である多次元データベースサーバからのデータと同期することができる。同期更新はインクリメンタルであるか、またはローカルキューブの完全なリフレッシュを伴うことが可能であり、同期更新をユーザが開始することおよび／または予めスケジュールした時間に実施することが可能である。
【００１２】
本発明の実施形態では、システムが、通信ネットワークのユーザ装置上で、その通信ネットワーク上のユーザ装置とは別個の装置であるネットワーク装置上に記憶された多次元データベースの少なくとも一部を使用するために提供される。多次元データベースは通信ネットワーク上の複数のユーザ装置で共有される。システムには記憶コントローラが含まれ、ユーザ装置の不揮発性記憶媒体にある多次元データベースの少なくとも一部のコピーを格納することを制御する。
【００１３】
本実施形態の態様において、システムにはクエリコントローラも含まれ、多次元データベースの少なくとも一部に含まれる情報片に対する要求をユーザ装置上で実行するアプリケーションから受信し、前記情報片を不揮発性記憶媒体上のコピーから取得することを制御する。
【００１４】
本実施形態の別態様において、多次元データベースの少なくとも一部には、少なくとも第１の情報片が含まれ、当該第１の情報片は前記少なくとも一部に含まれる少なくとも第２の情報片の関数であり、記憶コントローラはコピー内の前記関数を不揮発性記憶媒体に格納することを制御するよう動作する。本態様において、システムには関数コントローラがさらに含まれ、ユーザ装置上の揮発性メモリにおける第２情報片の値を変更するアプリケーションに応じて、揮発性メモリ内の第１の情報片の関数を実施する。
【００１５】
本実施形態の別態様において、関数コントローラは、関数の実施結果から得られる第１情報片の値を表示することができるように、関数の実施結果をアプリケーションのユーザインタフェースディスプレイに通信するように動作する。
【００１６】
本実施形態の別態様において、変更は、多次元データベースの少なくとも一部のコピーに含まれる１つまたは複数の情報片に対する、揮発性メモリ内で行った複数の変更の１つである。本態様において、このシステムには変更リストコントローラがさらに含まれ、変更を複数の変更を表す変更リストに追加することを制御する。その変更リストは揮発性メモリ内に存在する。
【００１７】
本実施形態のさらなる別態様において、記憶コントローラは揮発性メモリからの変更リストを適用することで、不揮発性記憶媒体上にある多次元データベースの少なくとも一部のコピーの更新を制御するよう動作する。
【００１８】
本実施形態の別態様において、記憶コントローラは不揮発性記憶媒体上の変更リストの記憶を制御するよう動作する。
【００１９】
本実施形態の別態様において、システムにはサーバインタフェースコントローラがさらに含まれ、変更リストをユーザ装置からネットワーク装置への送信することを制御する。
【００２０】
本実施形態の別態様において、アプリケーションは多次元データベースの少なくとも一部のコピーからレポートを生成するよう動作する。
【００２１】
本実施形態のさらなる別態様において、システムにはサーバインタフェースコントローラがさらに含まれ、多次元データベースの少なくとも一部のコピーに対する要求をネットワーク装置に送信し、多次元データベースの少なくとも一部を受信するよう動作する。
【００２２】
本実施形態の別態様において、システムにはサーバインタフェースコントローラがさらに含まれ、多次元データベースの少なくとも一部に対する１つまたは複数の変更を示す少なくとも１つの通信を、ネットワーク装置から受信するよう動作する。このサーバインタフェースコントローラは、前記の少なくとも１つの通信に応じて、多次元データベースの少なくとも一部のローカルコピーを多次元データベースの少なくとも一部と同期するよう動作する。
【００２３】
本発明の別実施形態において、ネットワーク装置上に格納した多次元データベースの少なくとも一部が、通信ネットワーク上のネットワーク装置とは別個の装置であるユーザ装置によって使用される。多次元データベースは、通信ネットワーク上の複数のユーザ装置により共有される。多次元データベースの少なくとも一部のコピーは、ユーザ装置上の不揮発性記憶媒体に記憶される。
【００２４】
本実施形態の態様において、多次元データベースの少なくとも一部に含まれる情報片に対する要求をユーザ装置上で実行しているアプリケーションから受信し、前記情報片を不揮発性記憶媒体上のコピーから取得する。
【００２５】
本実施形態の別態様において、多次元データベースの少なくとも一部には少なくとも第１の情報片が含まれ、当該第１の情報片は前記の少なくとも一部に含まれる少なくとも第２の情報片の関数である。本態様において、コピー内の前記関数を不揮発性記憶媒体に格納し、アプリケーションがユーザ装置上の揮発性メモリにおける第２情報片の値を変更することに応じて、前記関数が揮発性メモリの第１の情報片で実施される。
【００２６】
本実施形態の別態様において、関数の実施結果をユーザ装置のユーザに表示する。
【００２７】
本実施形態のさらなる別態様において、変更は、多次元データベースの少なくとも一部のコピーに含まれる１つまたは複数の情報片に対する、揮発性メモリ内で行った複数の変更の１つである。本態様において、変更が複数の変更を表す変更リストに加えられ、変更リストは揮発性メモリに存在する。
【００２８】
本実施形態の別態様において、揮発性メモリからの変更リストを適用することで、不揮発性記憶媒体上の多次元データベースの少なくとも一部のコピーが更新される。
【００２９】
本実施形態の別態様において、変更リストを不揮発性記憶媒体に格納する。
【００３０】
本実施形態の別態様において、変更リストをユーザ装置からネットワーク装置に送信する。
【００３１】
本実施形態のさらなる別態様において、多次元データベースの少なくとも一部のコピーからレポートを生成する。
【００３２】
本実施形態の別態様において、多次元データベースの少なくとも一部のコピーに対する要求をユーザ装置からネットワーク装置に送信し、前記の多次元データベースの少なくとも一部のコピーをユーザ装置で受信する。
【００３３】
本実施形態の別態様において、多次元データベースの少なくとも一部に対する１つまたは複数の変更を示す少なくとも１つの通信を、ネットワーク装置から受信する。多次元データベースの少なくとも一部のローカルコピーを、前記少なくとも１つの通信に応じて多次元データベースの少なくとも一部と同期する。
【００３４】
本発明の別実施形態において、コンピュータプログラム製品を提供する。前記製品には、コンピュータ可読媒体と、そのコンピュータ可読媒体上に記憶され命令を定義するコンピュータ可読信号とが含まれる。命令は、コンピュータによる実行の結果として、コンピュータに対して前述した本発明の実施形態および／または前述したそれらの１つまたは複数の態様の方法を実施させる。
【００３５】
本発明の他の利点、新規な特徴、および目的、ならびにその態様および実施形態は、添付図面と関連させて考慮すると、本発明の態様と実施形態とを含む以下の本発明の詳細説明から明らかになるであろう。添付図面は概略図であり、スケール（ｓｃａｌｅ）するように描かれてはいない。図面においては、様々な図面で示された同一またはほぼ同一な各コンポーネントは単一の数字で表してある。明りょうさのため、全てのコンポーネントが全ての図面においてはラベル付けされておらず、当業者に本発明を理解させるために必ずしも図示する必要がないところでは、本発明の各実施形態または各態様を構成するコンポーネントの全ては示してはいない。
【発明を実施するための最良の形態】
【００３６】
本発明の幾つかの実施形態を、レポーティングツールとしてＭｉｃｒｏｓｏｆｔ（登録商標）  Ｅｘｃｅｌに主に関連させて以下で説明するが、当然のことながら本発明はそれに限定されない。様々な他のレポーティングツールのうち任意のものを使用することができる。さらに、本発明の幾つかの実施形態をＭｉｃｒｏｓｏｆｔ（登録商標）  Ａｎａｌｙｓｉｓ  Ｓｅｒｖｉｃｅｓに関連させて説明するが、他の多次元データベースシステム（すなわち、ＯＬＡＰ）または、ＯＬＡＰをシミュレートするリレーショナルデータベース（一般にはＲＯＬＡＰと呼ばれる）システムを使用することができ、これらも本発明の範囲内にあると意図される。
【００３７】
本発明のこれらおよび他の実施形態の機能および利点は、後述の例からより完全に理解されるであろう。以下の例は、本発明の更なる理解の促進と本発明の利点の説明を意図しているが、本発明の完全な範囲を裏付けるものではない。
【００３８】
ここで使用される際、明細書または請求項に関わらず、「備える」、「含む」、「扱う」、「内包する」、「伴う」、等の用語は非制限であり、すなわち、「〜を含むがこれらに限らない」という意味で理解されるべきである。移行句の「〜から成る」および「本質的に〜から成る」のみがそれぞれ、請求項に関して米国特許庁特許審査便覧（２００４年５月、第８版、改訂２版）、２１１１．０３条に規定されるように、制限的または半制限的な移行句であるものとする。
【実施例】
【００３９】
図１は、本発明の幾つかの実施形態に従う、多次元データベースシステムの例を示すブロック図である。システム１００は単に多次元データベースシステムの例示的実施形態であって、本発明の範囲を限定することを意図していない。例えばシステム１００の変形のような、上記システムの多数の他の実装のうち任意のものが可能であり、それらが本発明の範囲内にあると意図してされる。
【００４０】
システム１００は、ユーザ装置１０２、１０４および１０６、通信ネットワーク１０８、サーバ１１２、多次元データベース１１４、他のネットワーク要素のうち任意のもの、または上述のものの任意で適切な組合せを含むことができる。
【００４１】
本明細書で使用される際、「ネットワーク」は、伝送媒体の１つまたは複数のセグメントで相互接続した複数のネットワーク要素からなる所定のグループである。１つまたは複数のネットワーク要素はネットワーク装置を含むことができ、伝送媒体の１つまたは複数のセグメント上の１つまたは複数のネットワーク要素に対する通信を送信および／または受信するよう構成できる。ネットワークの所定グループのメンバーであるネットワーク要素は、例えばネットワーク要素をネットワークに追加したときおよび／またはユーザがネットワークにログオンしたとき、ならびにネットワーク要素が除去されたときおよび／またはユーザがログオフしたときに、経時的に変化することができる。それぞれのセグメントは複数種類の伝送媒体のうち任意のものでよく、それには１つまたは複数の電気配線または光配線あるいは金属製および／または光ファイバ製のケーブル、（例えば、搬送波上の無線電送を用いた）大気またはこれら伝送媒体の任意の組合せが含まれる。本明細書で使用するとき、「複数」は２つ以上を意味する。当然のことながら、ネットワークは、単線、バス、無線接続、または他の種類のセグメントにより接続した２つ程度の要素で単純であってもよい。さらに、当然のことながら、ネットワークがこのアプリケーションの図面で、図面内の要素に接続されるように示されるとき、接続された要素自体がネットワークの一部である。
【００４２】
本明細書で使用される際、「ネットワーク装置」はネットワーク上で通信するよう動作する装置であり、ワークステーション、パーソナルコンピュータ、端末、ラップトップコンピュータ、エンドステーション、ユーザ装置、サーバ、ゲートウェイ、レジスタ、スイッチ、ルータ、ハブ、ブリッジ、ディレクトリ、トランスミッタ、レシーバ、リピータ、およびこれらの任意の組合せを含むが、これらに限定されない。本明細書で使用される際、「ユーザ装置」はユーザが通信を送信および／または受信可能なネットワーク装置であり、通信ネットワーク上の通信に対するエンドポイントとしての役割を果たすことができる。当然のことながら、ユーザ装置は全ての時点において実際にネットワークの一部になっていなくともよい。ユーザ装置は、ワークステーション、パーソナルコンピュータ（例えば、ＰＣ）、ラップトップコンピュータ、ノートブックコンピュータ、電話（例えば、固定電話または携帯電話）、ページャ、Ｂｌａｃｋｂｅｒｒｙ（商標）ブランドの装置、ＰＣＳ装置、携帯情報端末（ＰＤＡ）、双方向無線（例えば、「ウォーキートーキー」）、その他の種類のユーザ装置、および上述の任意の適切な組合せを含むが、これらに限定されない。
【００４３】
ネットワーク１０８は様々な種類のネットワークであること、および／またはそれらを含むことができる。それらのネットワークは、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、広域ネットワーク（ＷＡＮ）、無線ネットワーク（例えば、上述したもののうち任意のもの）、他の種類のネットワーク、または上述の任意の適切な組合せを含むが、これらに限定されない。
【００４４】
図１に示すように、サーバ１１２および多次元データベース１１４は同一のネットワーク装置１１０に存在することができる。しかし当然のことながら、サーバ１１２および多次元データベース１１４は別個の装置に存在してもよい。
【００４５】
サーバ１１２は多次元データベース１１４へのアクセスを制御することができ、ユーザ装置１０２、１０４および１０６を含む複数のユーザ装置により多次元データベース１１４を共有することができる。当然のことながら、３つのユーザ装置のみを図１に示しているが、システム１００は数十、数百または数千のユーザ装置を含みうる。さらに、ネットワーク１０８上に１つ以上のサーバがあってもよい。それぞれのユーザ装置は、通信ネットワーク１０８を通じてサーバ１１２と通信を交換することで、多次元データベース１１４に格納したデータに対するアクセスおよび／または修正をすることができる。例えば、ユーザ装置は、サーバ１１２上のクエリコントローラ（例えば、サーバサイドクエリレイヤ）と通信するように構成されたクエリコントローラ（例えば、クライアントサイドクエリレイヤ）で構成され、クエリを実装することができる。さらに、ユーザ装置は、他のロジックで構成され、データに対する変更を実装して、これら変更をサーバ１１２に通信することができ、サーバ１１２は、データベース１１４に存在するデータに対して変更を加えることができる。
【００４６】
さらに、本発明の幾つかの実施形態において、サーバ１１２が構成され、例えばユーザ装置１０２、１０４または１０６のうち１つから受信したリクエストに応じて、多次元データベース１１４の少なくとも一部であるキューブを生成することができる。サーバ１１２は、要求しているユーザ装置にそのキューブを通信することができる。この通信には、キューブの生成時を表すタイムスタンプを含めることもできる。以下でより詳細に説明するように、このタイムスタンプは要求するユーザ装置によって使用され、キューブを多次元データベース１１４と同期させることができる。サーバ１１２は、ユーザまたはユーザのグループのセキュリティコンテキストに基づいてキューブを生成することができる。例えば、サーバ１１２はデータベース１１４のうち、ユーザに権限を与える部分（すなわち、スライス）のみを選択することができる。この選択は、情報片間の依存性の考慮を伴うかもしれない。さらに、幾つかの実施形態において、リクエストは、選択されるデータに対する１つまたは複数の他の制約を指定することができ、サーバ１１２はキューブの生成時にこれを考慮することができる。
【００４７】
以下でより詳細に説明するように、ユーザ装置（例えば、ユーザ装置１０２、１０４または１０６）は、そのローカルキューブに格納された１つまたは複数の情報片に対して加えられた変更を表す変更リストを生成するように構成されることができ、およびこの変更リストをサーバ１１２に伝送するように構成されることができる。サーバ１１２は、変更リスト内の変更を多次元データベース１１４に適用するように、および多次元データベースを共有する１つまたは複数のユーザ装置にこれらの変更を報告するように構成されることができる。さらに、サーバ１１２は、データベースを共有する複数のユーザ装置に定期的な更新を送信するように構成されることができ、それぞれの更新はタイムスタンプを含むことができる。これらの更新は多次元データベース１１４に変更を指定することができる。さらに、サーバ１１２は、２つの異なるユーザ装置の一方または両方が定期的な更新を受信した後、それらのユーザ装置によって多次元データベース１１４の同じ情報片に対して加えた変更間の衝突を解決するように構成されることができる。
【００４８】
図２は、本発明の幾つかの実施形態に従って、通信ネットワーク上のユーザ装置とは別個のネットワーク装置上に格納した多次元データベースを、ユーザ装置上で使用するシステム２００の例を示すブロック図である。
【００４９】
システム２００は単に、通信ネットワーク上のユーザ装置とは別個のネットワーク装置上に格納した多次元データベースをユーザ装置上で使用するシステムの例示的実施形態であり、本発明の範囲を限定するよう意図していない。例えばシステム２００の変形のような上記システムの多数の他の実装のうち任意のものが可能であり、本発明の範囲内にあると意図される。
【００５０】
システム２００は、ユーザインタフェース２０８、アプリケーション２１０、サーバインタフェースコントローラ２１２、変更リストコントローラ２１４、関数コントローラ２１６、クエリコントローラ２１８、記憶コントローラ２２０、不揮発性記憶媒体２２２、通信ネットワーク２３０、他のコンポーネント、および前述したものの任意の適切な組み合わせ、のうち任意のものを含むことができる。図２に示すように、幾つかの実施形態において、アプリケーション２１０はコンポーネント２１２−２２０とは別個かつ相違なコンポーネントとすることが可能である。他の実施形態において、１つまたは複数のこれらコンポーネントをアプリケーション２１０内部に統合することができる。例えば、１つまたは複数のコンポーネント２１２−２２０、またはそれらが提供する機能性をアプリケーション２１０（例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｅｘｃｅｌ）に対するアドインとして実装することができる。さらに、コンポーネント２０８−２２０のうち１つまたは複数をアプリケーション２１０の実行中（すなわち、ランタイムの間）に揮発性メモリ２０６内部に格納することができる。
【００５１】
不揮発性記憶媒体は様々な時点で、レポートファイル２２４、ローカルキューブ２２６、変更リスト２２８、他のコンポーネント、または前述の任意の適切な組み合わせを格納することができ、それらの各々を以下でより詳細に説明する。
【００５２】
コンポーネント２０６−２２８の全ては図２に示すようにユーザ装置２０４（例えば、システム１００のユーザ装置１０２−１０６のうち任意のもの）に存在するが、幾つかの実施形態では、１つまたは複数のこれらコンポーネントが異なる装置に存在してもよい。例えば、不揮発性記憶媒体２２２はユーザ装置２０４とは別個の装置に存在可能である。１つまたは複数のコンポーネント２０８−２２０はクライアント／サーバシステムの「クライアント」の部分としてみなすことができ、この場合、サーバを例えばサーバ１１２のような多次元データベースのサーバとすることができる。
【００５３】
サーバインタフェースコントローラ２１２を多次元データベース１１４の少なくとも一部に対する要求をサーバ１１２に伝送する制御をするように構成できる。それに応じて、コントローラ２１２は多次元データベースの一部を受信することができる。記憶コントローラ２２０を例えば記憶媒体２２２のような不揮発性記憶媒体に、ローカルキューブ２２６を格納するのを制御するように構成できる。本明細書で使用するとき、「ローカルキューブ」は、ユーザ装置の不揮発性媒体に格納した（または格納すべき）多次元データベースの少なくとも一部のコピーである。
【００５４】
本発明の幾つかの実施形態において、ローカルキューブ２２６はユーザ装置２０４の１つまたは複数のユーザに特化したものにできる。例えば、ローカルキューブ２２６は多次元データベースの１つまたは複数の部分のみを含むことができ、その部分に対してユーザ装置２０４の１人または複数のユーザがアクセス可能である。上記実施形態において、ローカルキューブに含まれる１つまたは複数の部分を、多次元データベースシステムに対して実装したセキュリティシステムに従って、１人または複数のユーザのセキュリティコンテクキトに基づいて決定することができる。上記実施形態において、ローカルキューブ２２６に含まれる多次元データベースに、１人または複数のユーザによるアクセスが許可される部分が無いことを確実にするように配慮されることが可能である。上述のように、サーバ１１２はキューブの生成時にこれらのセキュリティ手段を実装することができる。部分をそのように限定することは、多次元データベース内に含まれるデータ片間の依存関係の考慮を伴うかもしれない。
【００５５】
上述のように、ユーザ装置２０４上にローカルキューブ２２６をキャッシュすること、並びにユーザがローカルキューブ２２６内部に格納したデータおよび関数にアクセスおよび使用可能になることで、ユーザに対して高速なアクセスと計算時間を提供できる。さらに、ローカルキューブ２２６が多次元データベースの全体に満たない場合、これは多次元データベースに格納されたある特定のデータのみにアクセスが限定されたユーザの場合であるかもしれないが、アクセスおよび処理速度はデータ量の減少によってさらに増加する。
【００５６】
ユーザインタフェース２０８を構成して、ユーザ入力および出力２０２を受信および出力し、ユーザ並びにユーザ装置２０４上のアプリケーションおよび／または他のコンポーネント間のインタフェースとしての役割を果たすことができる。本明細書で使用するとき、「ユーザインタフェース」は、アプリケーションまたはアプリケーションの一部（すなわち、コンピュータ可読命令のセット）であり、これによりユーザはアプリケーションの実行中にアプリケーションと対話できる。ユーザインタフェースはコードを含むことができる。このコードは、アプリケーションがユーザに対してアプリケーションの実行中に、例えばコンピュータスクリーンまたは他の手段を通して視覚的に、他の手段のスピーカを通して聴覚的に、並びにゲームコントローラまたは他の手段を通して手動で、どのように情報を出力するかを定義する。上記ユーザインタフェースは、例えばマイクロフォンを用いて聴覚的に、またはキーボード、マウス、ゲームコントローラ、トラックボール、タッチスクリーンまたは他の手段を用いて手動で、アプリケーション実行中にユーザが情報を入力する方法を定義するコードを含むこともできる。
【００５７】
ユーザインタフェースは、ユーザに情報を視覚的に提示（すなわち、表示）する方法を定義することができ、ユーザが情報の視覚的プレゼンテーション（すなわち、表示）をナビゲートする方法と、ユーザが視覚的プレゼンテーションのコンテキスト内で情報を入力する方法とを定義する。アプリケーションの実行中に、ユーザインタフェースは情報の視覚的プレゼンテーションを制御することができ、このインタフェースによりユーザは視覚的プレゼンテーションをナビゲートすること、および視覚的プレゼンテーションのコンテクキト内で情報を入力することが可能となる。ユーザインタフェースの種類は、ユーザが命令をタイプするコマンド駆動型、ユーザがメニューから情報を選択するメニュー駆動型インタフェース、およびその組み合わせから、ＧＵＩにまで及ぶ。ＧＵＩは一般にコンピュータのグラフィック能力のより有利な点を利用しており、ナビゲートするのにより柔軟、直感的かつ容易であり、コマンド駆動型およびメニュー駆動型の視覚的ユーザインタフェースより魅力的な「ルックアンドフィール」を有する。本明細書で使用するとき、ユーザインタフェースまたはＧＵＩにより提示される情報の視覚的プレゼンテーションはそれぞれ、「ユーザインタフェースディスプレイ」または「ＧＵＩディスプレイ」と呼称される。
【００５８】
アプリケーション２１０としては、ユーザが多次元データベース１１４内部に格納したデータからレポートを生成可能なレポーティングツールまたは他の種類のアプリケーションが可能である。本発明の幾つかの実施形態において、アプリケーション２１０は、ユーザ装置２０４上の１つまたは複数のコンポーネントと相互作用する（またはそのコンポーネントを含む）ように構成され、上記データに多次元データベース１１４からではなくローカルキューブ２２６から上記データにアクセスできる。例えば、クエリコントローラ２１８は、ローカルキューブ２２６に含まれる（および多次元データベース１１４自体の内部にも含まれる）情報片に対する要求をアプリケーション２１０から受信し、その情報片をデータベース１１４からではなくローカルキューブ２２６から取得することを制御できるよう構成されることができる。
【００５９】
データベース１１４およびローカルキューブ２２６からコピーされたデータを格納することに加え、記憶コントローラ２２０を構成してデータベース１１４からコピーした関数をローカルキューブ２２６に格納することができる。これらの関数はローカルキューブ内部に格納したデータ片の間の関係を定義することができ、１つまたは複数の多次元操作を含む１つまたは複数の操作を含むことができる。例えば、第１の情報片は少なくとも第２の情報片の関数である値を有する。ユーザがアプリケーション２１０の第２の情報片に加えた変更に応じて、関数コントローラ２１６は第１のデータ片に対して関数を実施してその値を修正することができる。関数コントローラ２１６は、揮発性メモリ２０６内で本関数を実施できるよう構成され、それにより、関数がサーバ１１２および／または多次元データベース１１４上でリモートに他の方法で実施された場合よりも高速な処理時間を提供する。従って、その変更を存続させることなく、ユーザは様々な情報片の様々な値を試行して、これらの値がローカルメモリ内の他の情報片の値にどのように影響するかを判定することができる。上記関数の実行結果を、例えば、ユーザインタフェースの提示データを再描画するユーザ要求に応じて、ユーザインタフェース２０８を通してユーザに表示することができる。
【００６０】
例えば、ユーザはスプレッドシートアプリケーション（例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｅｘｃｅｌ）の第１のセルに現れる値を変更することができる。この値は、ローカルキューブ２２６に格納した多次元データベースからのデータ片の値を表すかもしれない。この情報片をローカルキューブ２２６の１つまたは複数の他の情報片に関連付けることができ、これら関係の各々を１つまたは複数の多次元操作により定義することができる。ユーザがセル内の値を変更したことに応じて、関数コントローラ２１６を構成して、ローカルキューブ２２６から多次元操作を用いて、関連する情報片の全ての値を再計算することができる。新しい値の計算後、再計算の結果変更された値を表す全てのセルを更新して変更を反映するように、関数コントローラ２１６はこれらの新しい値をアプリケーション２１０および／またはユーザインタフェース２０８に通信する。
【００６１】
本発明の幾つかの実施形態では、情報片に対する変更を、変更リストコントローラ２１４により変更リスト内に格納する。上記変更リストは揮発性メモリ２０６内に保持することができ、これら変更を多次元データベース１１４に記録できるように、上記変更リストを変更リスト２２８として不揮発性記憶媒体に存続することおよび／またはサーバ１１２に送信することができる。変更リスト内のそれぞれの変更に対し、その変更とともにタイムスタンプを記録することができる。以下でより詳細に説明するように、これらタイムスタンプを使用してローカルキューブ２２６が多次元データベース１１４と同期することができる。
【００６２】
例えば、アプリケーション２１０のユーザは１つまたは複数の情報片の値を変更することで、これが他の情報片にどのように影響するかを試行することができる。ユーザが情報片を変更する度に、その変更を揮発性メモリ内の変更リストに記録することができる。ユーザが試行を完了した後に、ユーザは変更した情報片を元の値に戻すか、或いは１つまたは複数の情報片を変更したままにしておくことができる。ユーザは次いで情報片を含むレポートまたは他の文書をレポートファイル２２４として保存することができ、変更リストをローカルキューブ２２６に適用することができる。さらに、変更リスト自体を変更リスト２２８として記憶媒体２２２に記憶することができる。
【００６３】
サーバインタフェースコントローラ２１２を構成して、変更を多次元データベース１１４に適用できるように変更リスト２２８をサーバ１１２に伝送することができる。例えば、サーバインタフェースコントローラ２１２を構成して、変更リスト２２８をサーバ１１２に定期的に送信することおよび／または変更リストをイベントに応じて送信することができる。例えばそのイベントには、記憶媒体２２２への変更リスト２２８の保存、アプリケーション２１０の終了、ユーザコマンド、等がある。データの完全性が維持されるように、変更リストをサーバ１１２に伝送した後に変更リスト２２８を記憶媒体２２２から削除して、同一の変更が多次元データベース１１４に対して再度行われないことを保証することができる。別の方法として、変更リスト内のタイムスタンプを利用する他の同期技術を使用することができ、および／またはサーバ１１２に送信した変更リスト内の最後の変更を反映する指標を変更リスト２２８内に保持することができる。
【００６４】
サーバ１１２を構成して、変更リスト２２８の変更と多次元データベース１１４のデータとの同期を調整することができる。例えば、サーバ１１２を構成して、情報片をデータベース１１４からユーザ装置に最後にロードしてから変更したユーザ装置上の情報片に対してユーザが変更を加えた場合に、データを同期することができる。さらに、サーバ１１２を構成して、多次元データベース１１４に対して行った変更を、データベース１１４内のデータを共有する複数のユーザ装置（例えば、ユーザ装置１０２−１０６）に対して（例えば定期的に）プッシュすることができる。ユーザ装置は次いでプッシュされた変更を使用して自身のローカルキューブを更新することができる。
【００６５】
多次元データベースを共有するそれぞれのユーザ装置は、同期技術自体を使用できるよう構成されうる。例えば、ユーザ装置２０４のサーバインタフェースコントローラ２１２を使用して、ローカルキューブ２２６と多次元データベース１１４とを同期することができる。上述のように、サーバからローカルキューブを含むユーザ装置２０４への通信は、ローカルキューブの生成時点を表すタイムスタンプを含むこともできる。また上述したように、サーバを構成して、タイムスタンプを含むユーザ装置に定期的な更新を伝送することができる。サーバインタフェースコントローラ２１２を構成して、例えばローカルキューブ２２６と通信したタイムスタンプに基づいて、定期的な通信の受信に応じてローカルキューブ２２６を多次元データベース１１４と同期することができる。コントローラ２１２を構成して、サーバ１１２からの更新情報とともに含まれるタイムスタンプを、最初にローカルキューブ２２６と通信したタイムスタンプと比較できる。更新のタイムスタンプがローカルキューブのそれより後の場合、ローカルキューブは無効であり、同期される必要がある。
【００６６】
ローカルキューブ２２６をインクリメンタルに更新可能なように、ローカルキューブ２２６およびサーバインタフェースコントローラ２１２を構成して、すなわち、最後の更新から変更されたローカルキューブ２２６内部の情報片のみ更新することができる。さらに、サーバインタフェースコントローラ２１２を構成して、ローカルキューブ２２６の完全なリフレッシュを実施することもできる。例えば、コントローラ２１２は、サーバから受信した更新がローカルキューブ２２６に含まれない変更を含むと判定される場合に、サーバ１１２から現在のローカルキューブを要求することができるよう構成されることが可能である。
【００６７】
サーバインタフェースコントローラ２００を構成して、サーバ１１２からの更新の受信に応じて別の同期シナリオを処理することができる。例えば、最後にローカルキューブ２２６をインクリメンタルに更新またはリフレッシュしてからローカルキューブ２２６に変更が加えられなかった場合、その後インクリメンタル更新をローカルキューブ２２６に行うか、またはローカルキューブの完全なリフレッシュを実施するかのいずれかを行うことができる。最後にインクリメンタルな更新または完全なリフレッシュを行ってからローカルキューブ２２６に変更が加えられた場合、コントローラ２１２を構成して完全なリフレッシュをローカルキューブ２２６に実施し、次いでその変更を再適用することができる。例えば、コントローラ２１２は、サーバ１１２からの更新の受信並びに前回のインクリメンタルな更新またはリフレッシュとの間で発生した変更リスト２２８に維持した変更を、再適用することができる。
【００６８】
幾つかの実施形態では、コントローラ２１２が変更リスト２２８をサーバ１１２に伝える処理中であるとき、コントローラ２１２は「変更をプレビュー」することができる。すなわち、コントローラ２１２は送信中の変更を、ユーザ装置２０４にまだ送信されていない多次元データベース１１４上の変更と比較することができる。例えば、コントローラ２１２はサーバ１１２から更新情報を（どの定期更新とも独立して）要求し、次いでその更新情報で指定された変更を送信中の変更リストの変更と比較することができる。コントローラ２１２は、様々な技術のうち任意のものを用いてこれら変更の間の衝突を解決することができる。それらの技術には、例えば、更新時に指定された変更に基づいてローカルキューブ２２６に対してインクリメンタルな変更を加え、次いで変更リストからの変更を適用すること、またはローカルキューブ２２６に対して完全なリフレッシュを実行して、変更リスト２２８の変更を再適用し、次いで変更リスト２２８をサーバ１１２に伝送することがある。
【００６９】
システム１００および２００、およびそれらのコンポーネントを様々な技術のうち任意のものを使用して実装することができる。その技術には、ソフトウェア（例えば、Ｃ、Ｃ＃（登録商標）、Ｃ＋＋、Ｊａｖａ（登録商標），またはその組合せ）、ハードウェア（例えば、１つまたは複数の特定用途向け集積回路）、ファームウェア（例えば、電気的にプログラムされたメモリ）またはそれらの任意の組合せが含まれる。システム１００および／または２００の１つまたは複数のコンポーネントが単一の装置（例えば、コンピュータ）に存在するか、或いは１つまたは複数のコンポーネントが別個の個々の装置に存在できる。さらに、それぞれのコンポーネントを複数の装置に渡って分散させることができ、１つまたは複数の装置を相互接続できる。
【００７０】
さらに、システム１００および／または２００の１つまたは複数のコンポーネントを含む１つまたは複数の装置の各々に、コンポーネントの各々はシステムの１つまたは複数の位置に存在できる。例えば、これらシステムのコンポーネントの様々な部分は装置のメモリ（例えば、ＲＡＭ、ＲＯＭ、ディスク、等）の様々な領域に存在することができる。上記の１つまたは複数の装置の各々は、他のコンポーネントの中で、複数の既知のコンポーネントを含むことができる。そのコンポーネントには例えば、１つまたは複数のプロセッサ、メモリシステム、ディスクストレージシステム、１つまたは複数のネットワークインタフェース、および１つまたは複数のバスまたは様々なコンポーネントを相互接続する他の内部通信リンクがある。システム１００および／または２００、およびそれらのコンポーネントを、図４および５に関連して後述するようなコンピュータシステムを用いて実装することができる。
【００７１】
図３は、本発明の幾つかの実施形態に従って、通信ネットワーク上のユーザ装置からリモートに配置されるネットワーク装置に格納した多次元データベースの少なくとも一部を、ユーザ装置上で使用する方法３００の例を示すフローチャートである。方法３００は単に、通信ネットワーク上のユーザ装置からリモートに配置されるネットワーク装置に格納した多次元データベースの少なくとも一部を、ユーザ装置上で使用する方法の例示的実施形態であって、本発明の範囲を限定するようには意図していない。例えば方法３００の変形のような、上記方法の多数の他の実装のうち任意のものが可能であり、本発明の範囲内にあるとして意図される。
【００７２】
最初に、ユーザ装置は多次元データベースの少なくとも一部に対する要求を、例えば図１のシステム２００に関連して上述したように、多次元データベースのサーバ（図示せず）に送信することができる。それに応じて、例えばシステム２００に関連して上述したように、サーバは前記の少なくとも一部のコピーを生成し、前記の少なくとも一部をユーザ装置（図示せず）に伝送することができる。
【００７３】
動作３０２で、例えばシステム２００の記憶コントローラ２２０に関連して上述したように、多次元データベースの少なくとも一部のコピーをユーザ装置の不揮発性記憶媒体に格納することができる。動作３０４で、多次元データベースの少なくとも一部（すなわち、ローカルキューブ）に含まれる情報片に対する、ユーザ装置上で実行されているアプリケーションからの要求に応じて、その情報片をローカルキューブから取り出すことができる。動作３０４をシステム２００に関連して上述したように実施することができる。
【００７４】
上述のように、幾つかの実施形態において、少なくとも１つまたは複数の第１情報片はローカルキューブの第２情報片の値の関数であってもよい（すなわち、第２情報片の値に依存する）。従って、動作３０６において、アプリケーションがユーザ装置上の揮発性メモリにおける第２情報片の値を変更することに応じて、前記関数（例えば、１つまたは複数の操作）を揮発性メモリ内の第１情報片に対して実施することができる。図２に関連して上述したように、動作３０６をシステム２００の関数コントローラ２１６により実施することができる。
【００７５】
動作３０８で、例えばシステム２００に関連して上述したように、関数の実施結果から得られる第１情報片の値を、アプリケーションにより提供されるユーザインタフェースディスプレイ内部で表示することができる。動作３１０で、複数の変更を表す変更リストに変更を追加することができる。例えば、変更リストは揮発性メモリ内に存在することができる。図２に関連して上述したように、動作３１０をシステム２００の変更リストコントローラ２１４により実施することができる。
【００７６】
動作３１２で、例えば方法２００に関連して上述したように、揮発性メモリからの変更リストをローカルキューブに適用することで、ローカルキューブのコピーを更新することができる。
【００７７】
動作３１４で、例えば方法２００の変更リストコントローラ２１４に関連して上述したように、変更リストを不揮発性記憶媒体に格納することができる。動作３１６で、例えば方法２００のサーバインタフェースコントローラ２１２に関連して上述したように、変更リストをユーザ装置からネットワーク装置に伝送することができる。
【００７８】
図３には示していないが、方法３００は、多次元データベースに対する更新を指定可能な多次元データベースサーバからの定期的な通信の受信を含むことができる。様々な同期技術のうち任意のもの、例えばシステム２００に関連して上述したうち任意のものを上記更新の受信に応じてローカルキューブおよび／または多次元データベースに適用することができる。
【００７９】
動作３１８で、例えば２００に関連して上述したように、レポートをローカルキューブから生成することができる。
【００８０】
方法３００の１つまたは複数の動作を（少なくとも部分的に）並列に実施するか、または図３に示したもの以外の順序で実施することができる。例えば、レポートを生成する動作３１８を、方法３００を実施中の任意の時点で実施することができる。さらに、変更リストをユーザ装置からネットワーク装置に伝送する動作３１６を、キューブを更新する動作３１２および変更リストを記憶媒体に格納する動作３１４のそれぞれの前に実施することができる。さらに、方法３００の１つまたは複数の動作を、例えばイベントに応じて、方法３００の１つまたは複数の他の動作を実施した後に繰り返すことができる。方法３００はイベントベースのプログラミング技術および処理技術を使用することができ、その場合、様々な動作を特定のイベントに応じて実施するが、その順序は必ずしも方法３００に示した順序ではない。
【００８１】
方法３００およびその動作、並びに前記方法およびそれらの動作の様々な実施形態および変形を、個々にまたは組み合わせで、１つまたは複数のコンピュータ可読媒体上に明確に具体化したコンピュータ可読信号によって定義することができる。そのコンピュータ可読媒体には、例えば、不揮発性記録媒体、集積回路メモリ要素、またはそれらの組合せがある。コンピュータ可読媒体は、コンピュータがアクセスできる利用可能な任意の媒体であってよい。例として、限定はしないが、コンピュータ可読媒体はコンピュータ記憶媒体と通信媒体とを備えることができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータのような情報を格納するための任意の方法または技術で実装した、揮発性および不揮発性、取り外し可能および取り外し不可能な媒体が含まれる。コンピュータ記憶媒体はＲＡＭ，ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光学記憶、磁気カセット、磁気テープ、磁気ディスク記憶または他の磁気記憶装置、他種の揮発性および不揮発性メモリ、所望の情報を格納するのに使用可能で、コンピュータによるアクセスが可能な任意の他の媒体、ならびに前述したものの任意の適切な組合せ、を含むがこれらに限らない。
【００８２】
通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを搬送波または他のトランスポート機構のような変調データ信号で具体化し、任意の情報配信媒体を含む。用語「変調データ信号」は、１つまたは複数の特性を有するかまたは信号内で情報を符号化するように変化する信号を意味する。例として、限定はしないが、通信媒体には有線ネットワークまたは直接配線接続のような有線媒体、音響、ＲＦ、赤外線および他の無線媒体のような無線媒体、他種の通信媒体、および前述したものの任意の適切な組合せが含まれる。
【００８３】
１つまたは複数のコンピュータ可読媒体に具体化したコンピュータ可読信号は、例えば１つまたは複数のプログラムの一部として命令を定義することができる。その命令は、コンピュータによる実行の結果として、コンピュータに指示して本明細書で説明した１つまたは複数の関数（例えば、方法３００またはその任意の動作）、および／または様々な実施形態、それらの変形および組合せを実施させる。上記の命令は複数のプログラミング言語のうち任意のもので記述することができる。そのプログラミング言語には、例えば、Ｊａｖａ（登録商標）、Ｊ＃、Ｖｉｓｕａｌ  Ｂａｓｉｃ、Ｃ、Ｃ＃、またはＣ＋＋、Ｆｏｒｔｒａｎ、Ｐａｓｃａｌ、Ｅｉｆｆｅｌ、Ｂａｓｉｃ、ＣＯＢＯＬ、等、あるいはそれらの任意な組合せがある。上記命令が具体化されるコンピュータ可読媒体は、システム１００、２００、４００および５００のうち任意のものの１つまたは複数のコンポーネントに存在でき、１つまたは複数の上記コンポーネントに渡り分散することができ、それらの間で移動することができる。
【００８４】
コンピュータ可読媒体は可搬型であり、そこに格納した命令を任意のコンピュータシステムリソース上にロードして、本明細書に説明した本発明の態様を実施することができる。加えて、当然のことながら、上述したコンピュータ可読媒体上に格納した命令は、ホストコンピュータ上で実行されるアプリケーションプログラムの一部として具体化される命令に限定されない。むしろ、前記命令を任意の種類のコンピュータコード（例えば、ソフトウェアまたはマイクロコード）として具体化することができ、そのコードを用いて本発明の上述の態様を実施するためにプロセッサをプログラムできる。
【００８５】
当然のことながら、例えば図１、２、４および５に関連して説明したコンピュータシステムのような、本明細書で説明した関数を実施する任意の単一コンポーネントまたは複数のコンピュータシステムのコンポーネント集合を、上記関数を制御する１つまたは複数のコントローラとして総称的に考えることができる。前記の１つまたは複数のコントローラを専用のハードウェアおよび／またはファームウェアのような多数の方法で、マイクロコードまたはソフトウェアを用いて上述の関数または前述の任意の適切な組合せを実施するようプログラムしたプロセッサを使用することにより、実装することができる。
【００８６】
本発明に従う様々な実施形態を１つまたは複数のコンピュータシステム上で実装することができる。これらのコンピュータシステムは例えば、インテル（Ｉｎｔｅｌ）のＰＥＮＴＩＵＭ（登録商標）型プロセッサ、モトローラ（Ｍｏｔｏｒｏｌａ）のＰｏｗｅｒＰＣ、サン（Ｓｕｎ）のＵｌｔｒａＳＰＡＲＣ、ヒューレットパッカード（Ｈｅｗｌｅｔｔｅ  Ｐａｃｋａｒｄ）のＰＡ−ＲＩＳＣプロセッサ、アドバンストマイクロデバイス（Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ（ＡＭＤ））から入手可能な様々なプロセッサのうち任意のもの、または任意の他種のプロセッサに基づくもののような汎用コンピュータで可能である。当然のことながら、任意の種類のコンピュータシステムのうち１つまたは複数を使用して本発明の様々な実施形態を実装できる。
【００８７】
本発明の一実施形態に従う汎用コンピュータシステムを構成して、上述の１つまたは複数の機能を実施する。当然のことながら、このシステムは他の機能を実施可能であり、本発明は特定の機能または機能セットを有することに限定されない。
【００８８】
例えば、本発明の様々な態様を、図４に示すような汎用コンピュータシステム４００で実行される専用ソフトウェアとして実装することができる。コンピュータシステム４００は、ディスクドライブ、メモリ、またはデータ記憶用の他の装置のような１つまたは複数のメモリ装置４０４に接続したプロセッサ４０３を含むことができる。一般に、コンピュータシステム４００の動作中にプログラムおよびデータを格納するためにメモリ４０４を使用する。コンピュータシステム４００のコンポーネントを相互接続機構４０５により結合することができる。相互接続機構４０５は１つまたは複数の（例えば、同一マシン内部に統合したコンポーネント間の）バスおよび／または（例えば、別個の個々のマシンに存在するコンポーネント間の）ネットワークを含むことができる。相互接続機構４０５により、通信（例えば、データ、命令）をシステム４００のシステムコンポーネント間で交換できる。さらに、コンピュータシステム４００には、例えば、キーボード、マウス、トラックボール、マイクロフォン、タッチスクリーンのような１つまたは複数の入力装置４０２と、例えば印刷装置、ディスプレイスクリーン、スピーカのような１つまたは複数の出力装置４０１とが含まれる。加えて、コンピュータシステム４００は、（相互接続機構４０５に加えて、またはその代わりとして）コンピュータシステム４００を通信ネットワークに接続する１つまたは複数のインタフェース（図示せず）を含むことができる。
【００８９】
図５に詳細に示すがストレージシステム４０６には、一般にコンピュータ可読および書込み可能な不揮発性記録媒体５０１が含まれる。不揮発性記録媒体５０１に、プロセッサが実行すべきプログラムを定義する信号、あるいはプログラムが処理すべき媒体５０１上または内部に格納した情報を定義する信号が格納される。その媒体は、例えば、ディスクまたはフラッシュメモリであってもよい。一般には、動作中にプロセッサは、不揮発性記録媒体５０１から、プロセッサによる情報へのアクセスを媒体５０１よりも高速にすることが可能な別のメモリ５０２内にデータを読み込ませる。このメモリ５０２は一般に、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）またはスタティックメモリ（ＳＲＡＭ）のような揮発性のランダムアクセスメモリである。メモリ５０２は、図示したストレージシステム４０６、または図示していないがメモリシステム４０４内で可能である。プロセッサ４０３は一般に集積回路メモリ４０４、５０２内部のデータを操作し、処理の完了後にデータを媒体５０１にコピーする。媒体５０１と集積回路メモリ要素４０４、５０２との間のデータ移動を管理する様々なメカニズムが知られており、本発明はそれらに限定されない。本発明は特定のメモリシステム４０４またはストレージシステム４０６に限定されない。
【００９０】
コンピュータシステムは、例えば特定用途向け集積回路（ＡＳＩＣ）のような特別にプログラムした専用ハードウェアを含むことができる。本発明の態様をソフトウェア、ハードウェアまたはファームウェア、あるいはそれらの任意の組合せで実装することができる。さらに、上記の方法、動作、システム、システム要素およびそれらのコンポーネントを、上述のコンピュータシステムの一部として、または独立したコンポーネントとして実装することができる。
【００９１】
コンピュータシステム４００を、本発明の様々な態様を実践可能なある種類のコンピュータシステムとして例に示すが、当然のことながら、本発明の態様は図４に示すようなコンピュータシステム上で実装することに限定されない。本発明の様々な態様を、図４に示す様々なアーキテクチャまたはコンポーネントを有する１つまたは複数のコンピュータ上で実践することができる。
【００９２】
コンピュータシステム４００は、高レベルのコンピュータプログラミング言語を用いてプログラム可能な汎用コンピュータシステムが可能である。コンピュータシステム４００を、特別にプログラムした専用ハードウェアを用いて実装できる。コンピュータシステム４００において、プロセッサ４０３は、一般に、インテル社（Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ）から入手可能な公知のペンティアム（Ｐｅｎｔｉｕｍ）（登録商標）クラスのプロセッサなどの商用的に利用可能なプロセッサである。多数の他のプロセッサが利用可能である。上記のプロセッサは、通常オペレーティングシステムを実行する。このオペレーティングシステムは、例えば、マイクロソフト社から入手可能なＷｉｎｄｏｗｓ（登録商標）９５、Ｗｉｎｄｏｗｓ（登録商標）９８、Ｗｉｎｄｏｗｓ（登録商標）ＮＴ、Ｗｉｎｄｏｗｓ（登録商標）２０００（Ｗｉｎｄｏｗｓ（登録商標）ＭＥ）またはＷｉｎｄｏｗｓ（登録商標）ＸＰオペレーティングシステム、アップル社から入手可能なＭＡＣ  ＯＳシステムＸ、サンマイクロシステムズ（Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ）から入手可能なＳｏｌａｒｉｓ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ、様々なソースから入手可能なＬｉｎｕｘまたは様々なソースから入手可能なＵＮＩＸ（登録商標）が可能である。様々な他のオペレーティングシステムの任意のものも使用できる。
【００９３】
プロセッサおよびオペレーティングシステムは共同で、アプリケーションプログラムが高レベルプログラミング言語で記述されるコンピュータプラットフォームを定義する。当然のことながら、本発明は特定のコンピュータシステムプラットフォーム、プロセッサ、オペレーティングシステム、またはネットワークに限定されない。また、本発明は特定のプログラミング言語またはコンピュータシステムに限定されず、他の適切なプログラミング言語および他の適切なコンピュータシステムを利用することもできることは当業者には明らかであろう。
【００９４】
コンピュータシステムの１つまたは複数の部分を、通信ネットワークに接続した１つまたは複数のコンピュータシステム（図示せず）に渡り分散することができる。これらのコンピュータシステムは汎用コンピュータシステムでもある。例えば、本発明の様々な態様を１つまたは複数のコンピュータシステム間で分散させることができる。これらのコンピュータシステムは、サービス（例えば、サーバ）を１つまたは複数のクライアントコンピュータに提供するか、または分散システムの一部として全体のタスクを実施するように、構成する。例えば、本発明の様々な態様はクライアントサーバシステム上で実施できる。このクライアントサーバシステムは、本発明の様々な実施形態に従って様々な機能を実施する１つまたは複数のサーバシステム間で分散させたコンポーネントを含む。これらコンポーネントは、通信プロトコル（例えば、ＴＣＰ／ＩＰ）を用いて通信ネットワーク（例えば、インターネット）上で通信する実行可能な中間（例えば、ＩＬ）コードまたはインタプリタ型（例えば、Ｊａｖａ（登録商標））コードで可能である。
【００９５】
当然のことながら、本発明は特定のシステムまたはシステムグループでの実行に限定されず、本発明は特定の分散アーキテクチャ、ネットワーク、または通信プロトコルに限定されない。
【００９６】
本発明の様々な実施形態を、ＳｍａｌｌＴａｌｋ、Ｊａｖａ（登録商標），Ｊ＃（Ｊシャープ）、Ｃ＋＋、Ａｄａ、またはＣ＃（Ｃシャープ）のようなオブジェクト指向プログラミング言語を用いてプログラムすることができる。他のオブジェクト指向プログラミング言語も使用することができる。または、関数型、スクリプト型、および／または論理型プログラミング言語も使用することができる。本発明の様々な態様をプログラムされてない環境で実装することができる（例えば、ブラウザプログラムのウィンドウでの参照時にグラフィカルユーザインタフェース（ＧＵＩ）の態様を表示または他の機能を実施する、ＨＴＭＬ、ＸＭＬ、または他のフォーマットで作成したドキュメント）。本発明の様々な態様をプログラムされた要素またはプログラムされてない要素あるいはそれらいずれかの組み合わせとして実装することができる。さらに、本発明の様々な実施形態をマイクロソフト社から入手可能なＭｉｃｒｏｓｏｆｔ（登録商標）．ＮＥＴ技術を用いて実装することができる。
【００９７】
本発明の幾つかの例示的実施形態を説明してきたが、前述したことは単に例であって限定的ではなく例としてのみ提示されたことは、当業者には明らかであろう。多数の修正および他の例示的実施形態が当業界の技術の範囲内であり、本発明の範囲内であると考慮されている。特に、本明細書で提示した例の多くは方法の動作またはシステム要素の特定の組み合わせを伴うが、当然のことながらこれら動作およびこれら要素を他の方法で組み合わせて同一の目的を達成できる。１つの実施形態と関連させてのみ議論した動作、要素および機能は、他の実施形態で同様な役割から除外されるとは意図していない。さらに、添付の特許請求の範囲で述べる１つまたは複数のミーンズ・プラス・ファンクション（ｍｅａｎｓ−ｐｌｕｓ−ｆｕｎｃｔｉｏｎ）の限定に対して、ミーンズ（手段）は引用した機能を実施する本発明で開示した手段に限定されず、引用した機能を実施する、公知または後に開発される任意の等価な手段を範囲内に含むことを意図される。
【００９８】
「第１の」、「第２の」、「第３の」、等のような序数用語を特許請求の範囲において請求要素を修正するために使用することそれ自体は、方法の動作が実施される別順序または一時的順序に対するいずれの優先度、優先順位、あるいはある請求要素の順序を示唆しておらず、特定の名前を有するある請求要素を（序数用語の使用は除き）同一名を有する別要素から区別し、その請求要素を区別するために、それらの序数用語を単にラベルとして使用している。
【図面の簡単な説明】
【００９９】
【図１】本発明の幾つかの実施形態に従う多次元データベースシステムの例を示すブロック図である。
【図２】本発明の幾つかの実施形態に従って、通信ネットワーク上のユーザ装置とは別個のネットワーク装置上に格納した多次元データベースを、ユーザ装置上で使用するシステムの例を示すブロック図である。
【図３】本発明の幾つかの実施形態に従って、通信ネットワーク上のユーザ装置からリモートに配置されるネットワーク装置に格納した多次元データベースの少なくとも一部を、ユーザ装置上で使用する方法の例を示すフローチャートである。
【図４】本発明の幾つかの実施形態を実装可能なコンピュータシステムの例を示すブロック図である。
【図５】本発明の幾つかの実施形態を実装するコンピュータシステムの一部として使用可能な、ストレージシステムの例を示すブロック図である。
【図１】
2009512909.tif 000003
【図２】
2009512909.tif 000004
【図３】
2009512909.tif 000005
【図４】
2009512909.tif 000006
【図５】
2009512909.tif 000007