(57)【特許請求の範囲】
【請求項１】
コンピューティングデバイスによって実行されるときに前記コンピューティングデバイスに機能を実行させる命令を記憶するコンピュータ可読ストレージ媒体であって、前記機能は、
あり得るキューボイドのディメンションのパターンのハイパー格子の表現において、ディメンションに関して集約されたデータを表す、前記ハイパー格子内の元のキューボイドから生成され得る中間キューボイドの組を決定することと、
前記組の中のどの中間キューボイドが、少なくとも前記ハイパー格子内の目標のキューボイドと同じディメンションに関して集約されるかを決定することと、
少なくとも前記ハイパー格子内の前記目標のキューボイドと同じディメンションに関して集約される前記組の中の各中間キューボイドのサイズを計算することと、
計算されたサイズに基づいて、最も小さなサイズを有する所与の中間キューボイドを決定することと、
少なくとも前記所与の中間キューボイドを含む経路を、前記元のキューボイドから前記目標のキューボイドまでの前記ハイパー格子を通る最適な経路として決定することとを含む、コンピュータ可読ストレージ媒体。
【請求項２】
前記ハイパー格子が２つ以上の基礎キューボイドを含み、前記あり得るキューボイドのディメンションのパターンのうちの少なくとも１つのディメンションのパターンが、第１の基礎キューボイドに対応し、前記あり得るキューボイドのディメンションのパターンのうちの少なくとも１つのその他のディメンションのパターンが、第２の基礎キューボイドに対応する請求項１に記載のコンピュータ可読ストレージ媒体。
【請求項３】
前記目標のキューボイドが、前記第１の基礎キューボイドおよび前記第２の基礎キューボイドのそれぞれに対応する請求項２に記載のコンピュータ可読ストレージ媒体。
【請求項４】
前記元のキューボイドおよび前記目標のキューボイドが、それぞれ、異なる基礎キューボイドに対応する請求項２に記載のコンピュータ可読ストレージ媒体。
【請求項５】
前記機能が、
ディメンションに関して集約されたデータを表す、前記ハイパー格子内の元のキューボイドから生成され得る中間キューボイドの第２の組を決定することと、
前記第２の組の中のどの中間キューボイドが、少なくとも前記ハイパー格子内の目標のキューボイドと同じディメンションに関して集約されるかを決定することと、
少なくとも前記ハイパー格子内の前記目標のキューボイドと同じディメンションに関して集約される前記第２の組の中の各中間キューボイドのサイズを計算することと、
計算されたサイズに基づいて、最も小さなサイズを有する所与の第２の中間キューボイドを決定することと、
少なくとも（ｉ）前記所与の中間キューボイドおよび（ｉｉ）前記第２の所与の中間キューボイドを含む経路を、前記元のキューボイドから前記目標のキューボイドまでの前記ハイパー格子を通る最適な経路として決定することとをさらに含む、請求項１から４のいずれか一項に記載のコンピュータ可読ストレージ媒体。
【請求項６】
中間キューボイドの前記組のうちの各キューボイドが、前記元のキューボイドが集約されるディメンションの数よりも１つ少ないディメンションに関して集約される請求項１から４のいずれか一項に記載のコンピュータ可読ストレージ媒体。
【請求項７】
前記ハイパー格子が、１つまたは複数の基礎キューボイドを含む請求項１から４のいずれか一項に記載のコンピュータ可読ストレージ媒体。
【請求項８】
各中間キューボイドの前記サイズを計算することが、各中間キューボイドに関連するデータセルの数を計算することを含む請求項１から４のいずれか一項に記載のコンピュータ可読ストレージ媒体。
【請求項９】
前記機能が、
前記ハイパー格子内の前記あり得るキューボイドのディメンションのパターンが集約されるそれぞれの異なるディメンションに異なるタグ番号を割り当てることであって、それぞれの異なるタグ番号が一意な整数である、割り当てることと、
前記ハイパー格子内のそれぞれの所与のディメンションのパターンに異なるタグ付けされた値を割り当てることであって、それぞれの所与のディメンションのパターンのそれぞれのタグ付けされた値が、２の指数とみなされるタグ番号の特定の組の合計であり、タグ番号の前記特定の組が、前記所与のディメンションのパターンが集約されるディメンションに割り当てられた前記タグ番号を含む、割り当てることとをさらに含む請求項１に記載のコンピュータ可読ストレージ媒体。
【請求項１０】
前記組の中のどの中間キューボイドが、少なくとも前記ハイパー格子内の目標のキューボイドと同じディメンションに関して集約されるかを決定することが、
前記組の中のそれぞれの所与のキューボイドに関して、前記所与のキューボイドが集約される前記ディメンションのタグ付けされた値を決定することと、
少なくとも前記目標のキューボイドに割り当てられた前記タグ付けされた値を含むタグ付けされた値が割り当てられるキューボイドを、少なくとも前記目標のキューボイドと同じディメンションに関して集約されるキューボイドとして決定することとを含む請求項９に記載のコンピュータ可読ストレージ媒体。
【請求項１１】
コンピューティングデバイスと、
前記コンピューティングデバイスに結合されたメモリストレージと、
前記コンピューティングデバイスによって実行されるときに前記コンピューティングデバイスにオペレーションを実行させる、前記メモリストレージに記憶された命令とを含み、前記オペレーションが、
元のキューボイドから目標のキューボイドを生成すべきハイパー格子を通る最適な経路を決定することであって、前記ハイパー格子が、あり得るキューボイドのディメンションのパターンを表し、前記最適な経路が、１つまたは複数の中間キューボイドを含む、決定することと、
前記決定された最適な経路を介して前記目標のキューボイドを生成することと、
前記生成された目標のキューボイドの表現をクライアントデバイスに提供することとを含む、オンライン分析処理（ＯＬＡＰ）サーバ。
【請求項１２】
元のキューボイドから目標のキューボイドを生成すべき前記ハイパー格子を通る前記最適な経路が、前記ハイパー格子を通る複数の経路のうちの特定の経路であり、前記ハイパー格子を通る前記複数の経路のうちの各経路が、前記元のキューボイドから前記目標のキューボイドを生成すべき経路である請求項１１に記載のＯＬＡＰサーバ。
【請求項１３】
前記ハイパー格子を通る前記複数の経路のうちの各経路が、１つまたは複数のあり得るキューボイドのディメンションのパターンを含み、前記最適な経路が、最も小さな総キューボイドサイズを含む請求項１２に記載のＯＬＡＰサーバ。
【請求項１４】
元のキューボイドから目標のキューボイドを生成すべきハイパー格子を通る最適な経路を決定することが、
前記ハイパー格子に基づいて、前記ハイパー格子内の前記元のキューボイドから生成され得る中間キューボイドの組を決定することと、
前記組の中のどの中間キューボイドが、少なくとも前記ハイパー格子内の前記目標のキューボイドと同じディメンションに関して集約されるかを決定することと、
少なくとも前記ハイパー格子内の前記目標のキューボイドと同じディメンションに関して集約される前記組の中の各中間キューボイドのサイズを計算することと、
計算されたサイズに基づいて、最も小さなサイズを有する所与の中間キューボイドを決定することと、
前記所与の中間キューボイドを含む経路を、前記元のキューボイドから前記目標のキューボイドまでの前記ハイパー格子を通る最適な経路として決定することとを含む請求項１１に記載のＯＬＡＰサーバ。
【請求項１５】
前記命令が、
前記ハイパー格子内の前記あり得るキューボイドのディメンションのパターンが集約されるそれぞれの異なるディメンションに異なるタグ番号を割り当てることであって、それぞれの異なるタグ番号が一意な整数である、割り当てることと、
前記ハイパー格子内のそれぞれの所与のディメンションのパターンに異なるタグ付けされた値を割り当てることであって、それぞれの所与のディメンションのパターンのそれぞれのタグ付けされた値が、２の指数とみなされるタグ番号の特定の組の合計であり、タグ番号の前記特定の組が、前記所与のディメンションのパターンが集約されるディメンションに割り当てられた前記タグ番号を含む、割り当てることとをさらに含む請求項１４に記載のＯＬＡＰサーバ。
【請求項１６】
前記組の中のどの中間キューボイドが、少なくとも前記ハイパー格子内の目標のキューボイドと同じディメンションに関して集約されるかを決定することが、
前記組の中のそれぞれの所与のキューボイドに関して、前記所与のキューボイドが集約される前記ディメンションのタグ付けされた値を決定することと、
少なくとも前記目標のキューボイドに割り当てられた前記タグ付けされた値を含むタグ付けされた値が割り当てられるキューボイドを、少なくとも前記目標のキューボイドと同じディメンションに関して集約されるキューボイドとして決定することとを含む請求項１５に記載のＯＬＡＰサーバ。
【請求項１７】
前記ハイパー格子が、２つ以上の基礎キューボイドを含み、各基礎キューボイドが、ディメンションの異なる組に関して集約され、前記元のキューボイドおよび前記目標のキューボイドが、それぞれ、前記ハイパー格子の異なる基礎キューボイドに対応する請求項１１から１６のいずれか一項に記載のＯＬＡＰサーバ。
【請求項１８】
前記ハイパー格子が、２つ以上の基礎キューボイドを含み、各基礎キューボイドが、ディメンションの異なる組に関して集約され、前記元のキューボイドおよび前記目標のキューボイドが、それぞれ、前記ハイパー格子の同じ基礎キューボイドに対応する請求項１１から１６のいずれか一項に記載のＯＬＡＰサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１０年６月２８日に出願され、インドで出願された、出願番号が６９９／ＫＯＬ／２０１０である対応する特許出願の優先権を主張するものであり、この特許出願の内容全体は、参照により本明細書に援用される。
【０００２】
本出願は、概して、データウェアハウジング技術ならびにオンライン分析処理（ＯＬＡＰ）の方法およびシステムに関する。
【背景技術】
【０００３】
本明細書において別途指示されない限り、本節で説明される題材は本出願の特許請求の範囲に対する従来技術ではなく、本節に含まれることによって従来技術であると認められるわけではない。
【０００４】
十分な情報に得たうえでビジネス上の決定を行うために、多くの組織は、何らかの形態のデータウェアハウジングおよび分析処理を使用する。データウェアハウスは、１つまたは複数のデータソースから収集された情報の電子的なリポジトリである。概して、データウェアハウスは、大きな情報のキャッシュを含み、任意の所与の時間に、その情報の特定のサブセットが、望まれる可能性がある。望まれるデータを取り出し、好ましい方法で（たとえば、コンピュータスクリーンまたはその他の種類のグラフィックユーザインターフェース（ＧＵＩ）上にデータを示すために、分析者は、ウェアハウスデータのオンライン分析処理（ＯＬＡＰ）として知られることを実行することができる。
【０００５】
たとえば、販売組織は、どの販売員が特定の国の特定の地域で特定の時間枠中に特定の個数を超える特定の種類の製品を販売したかを知ることを望む可能性がある。販売組織のデータウェアハウスまたはデータストアは、長期間に及び、全世界にわたる、複数の製品に関する販売員のすべてに対応する販売データを含み得る。ＯＬＡＰ機能は、ウェアハウスデータを処理し、データの望まれる部分を取り出し、適切な形態でデータを示すための方法を提供する。
【０００６】
組織が成長し、拡大するにつれて、それらの組織のデータストアも成長し、拡大する。これは、（たとえば、より洗練された販売時点情報管理テクノロジー、向上したマーケティング技術などのために）データ収集がますます容易になっていることとあいまって、データウェアハウスのサイズの急激な増加を招く。結果として、（たとえば、処理能力および時間で測られる）ＯＬＡＰクエリのコストが上がり、乏しいユーザエクスペリエンスにつながる。これに対処するために、より効率的なデータストレージ、より効率的なデータ表現技術、およびより効率的なＯＬＡＰのルーチンが、望まれる。
【発明の概要】
【０００７】
一実施形態によれば、既存のデータウェアハウスの格子構造（ｌａｔｔｉｃｅ  ｓｔｒｕｃｔｕｒｅ）を修正するための方法が、提供される。方法は、ハイパー格子の新しく挿入されたディメンションおよび既存のディメンションに関して基礎キューボイド（ｂａｓｅ  ｃｕｂｏｉｄ）を形成する追加的なキューボイド（ｃｕｂｏｉｄ）を生成することを含む。方法は、複数の中間的なディメンションのパターンを追加的な基礎キューボイドと関連付けることであって、ディメンションのパターンのうちの少なくとも１つが、既存の格子構造内に存在し、ディメンションのパターンのうちの少なくとも１つが、既存の格子構造内に現在存在しない、関連付けることをさらに含む。
【０００８】
別の実施形態においては、元のキューボイドから目標のキューボイドを生成するための、データウェアハウスの格子を通る最適な経路を決定するためのソフトウェア命令が、与えられる。命令は、元のキューボイドから生成されることができるキューボイドの組を決定することと、その組の中のどのキューボイドが、少なくとも目標のキューボイドと同じディメンションに関して集約されるかを決定することと、少なくとも格子内の目標のキューボイドと同じディメンションに関して集約されるその組の中の各キューボイドのサイズを計算することと、どのキューボイドが最も小さなサイズを有するかを判定することとを含む。最適な経路は、したがって、少なくとも最も小さなサイズのキューボイドを含む経路として決定される。
【０００９】
さらなる実施形態においては、元のキューボイドから目標のキューボイドを生成するための、ハイパー格子を通る最適な経路を決定するためのソフトウェア命令を記憶するＯＬＡＰサーバが、与えられる。元のキューボイドおよび目標のキューボイドは、ハイパー格子内の同じ基礎キューボイドに対応する可能性があるか、またはハイパー格子内の異なる基礎キューボイドに対応する可能性がある。
【００１０】
以上の概要は、例示的であるに過ぎず、限定することは全く意図されていない。上述の例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴が、図面および以下の詳細な説明を参照することによって明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】本明細書において示される実施形態の少なくとも一部が実行され得る例示的なシステムを示すブロック図である。
【図２】例示的なファクトおよびディメンションデータテーブルを示す図である。
【図３】ファクトデータが１つのディメンションに関して集約される例示的なデータキューボイドの図、および、ファクトデータが２つのディメンションに関して集約される例示的なデータキューボイドの図である。
【図４】ファクトデータが３つのディメンションに関して集約される例示的なデータキューボイドの図である。
【図５】ファクトデータが４つのディメンションに関して集約される例示的なデータキューボイドの図である。
【図６】キューボイドの例示的な格子の図である。
【図７】本明細書に記載の少なくとも一部の実施形態にしたがって適合されるハイパー格子構造内の最適な経路決定アルゴリズムの例示的なステップを示す流れ図である。
【図８】２つの基礎キューボイドを含むキューボイドの例示的なハイパー格子の図である。
【図９】３つの基礎キューボイドを含むキューボイドの例示的なハイパー格子の図である。
【図１０】本明細書において示される少なくとも一部の実施形態を実施するためのソフトウェア命令を生成するために構成された例示的なコンピューティングデバイスを示すブロック図である。
【図１１】本明細書において示される少なくとも一部の実施形態にしたがって構成された、コンピューティングデバイスでコンピュータプロセスを実行するためのコンピュータプログラムを含む例示的なコンピュータプログラム製品の部分的な見方を示す概略図である。
【発明を実施するための形態】
【００１２】
以下の詳細な説明において、本明細書の一部をなす添付の図面に対する参照がなされる。図面において、概して、同様の符号は、文脈がそうでないことを示さない限り、同様のコンポーネントを特定する。詳細な説明、図面、および特許請求の範囲に記載の例示的な実施形態は、限定することを意図されていない。本明細書で示される主題の精神または範囲を逸脱することなしに、その他の実施形態が利用される可能性があり、その他の変更がなされる可能性がある。本明細書において全体的に説明され、図面に図示される本開示の態様は、多種多様な異なる構成で配置され、置き換えられ、組み合わされ、設計される可能性があり、それらの構成のすべては、明確に考慮され、本開示の一部をなすことが容易に理解されるであろう。
【００１３】
本明細書において開示されるのは、データウェアハウジングおよびオンライン分析処理（ＯＬＡＰ）を実行するためのアルゴリズムおよび対応するシステムの例である。多くの例および実施形態が、説明され、以下の説明および図面から明らかになるであろう。
【００１４】
図１は、例示的なデータウェアハウジングの構成１００を示すブロック図である。構成１００において、分析者は、クライアントシステム１０２を操作し、ネットワーク１０４を介してＯＬＡＰサーバ１０６にＯＬＡＰクエリを発行することができる。クライアントシステム１０２は、たとえば、ネットワーク１０４に結合された任意のコンピューティングデバイス（たとえば、パーソナルコンピュータ）である可能性がある。ネットワーク１０４は、企業のイーサネットなどのローカルエリアネットワークである可能性があるか、またはインターネットなどの広域ネットワークである可能性がある。
【００１５】
ＯＬＡＰサーバ１０６およびデータウェアハウス１０８は、構成１００において別個のエンティティとして示されているが、それらは、単一のエンティティ（たとえば、コンピュータ）からなる可能性もある。ＯＬＡＰサーバ１０６は、ウェアハウス１０８に記憶されたデータを処理するように設計されたソフトウェアおよびハードウェアを含み得る。ＯＬＡＰサーバは、データの関係テーブル、メタデータを含むウェアハウスデータのさまざまな表現、およびデータ表現を容易にするように設計されたソフトウェアも含み得る。
【００１６】
データウェアハウス１０８は、データおよびデータ間のさまざまな関係の物理的なリポジトリを表す。ウェアハウス１０８は、データソース１１０によって表される組織のデータセット全体のカテゴリー別のサブセットを記憶することができる。たとえば、データソース１１０は、組織のデータ（たとえば、従業員データ、販売データ、株主データ、仕入れ先データなど）のすべてを記憶する１つまたは複数のリポジトリを含む可能性がある一方、データウェアハウス１０８は、それらのデータのカテゴリー別の一部（たとえば、販売データ）だけを含む可能性がある。データソース１１０は、たとえば、その他のデータウェアハウスも含む可能性がある。
【００１７】
データウェアハウス１０８などのデータウェアハウスは、「ファクト」と呼ばれる１つまたは複数の中心的テーマのまわりに組織化される。ファクトは、通常、数値的な測定値（たとえば、販売数）であり、１つまたは複数の「ディメンション」に関連付けられる可能性がある。概して、ディメンションは、さまざまなカテゴリーまたはクラスを定義し、これらのカテゴリーまたはクラスが特定のファクトをさらに定義する。たとえば、１つの種類のファクトが、総売上である可能性があり、そのファクトのあり得るディメンションは、販売された製品の種類（たとえば、おもちゃ、家庭用品）、時間枠（たとえば、年数、月数）、場所、供給元などを含み得る。
【００１８】
ファクトおよびディメンションデータは、図２に示されるようなリレーショナルデータベースのテーブルを用いてデータウェアハウスに記憶され得る。図２は、例示的な販売ファクトテーブル２０２、ならびに対応する例示的な製品２０４、時間２０６、場所２０８、および供給元ディメンションテーブル２１０を示す。販売ファクトテーブル２０２内の各エントリは、特定の販売イベントに対応する可能性があり、その特定の販売イベントの詳細は、個々のディメンションＩＤ（すなわち、製品ＩＤ、時間ＩＤ、場所ＩＤ、供給元ＩＤ）によって定義される。各販売イベントは、一意な販売ＩＤを割り当てられることもでき、その他のデータ（たとえば、収益）に関連付けられる可能性もある。
【００１９】
たとえば、販売ファクトテーブル２０２内のエントリは、特定の製品に関連付けられ得る。製品ＩＤは、いくつかの異なる製品に関する情報（たとえば、名称、説明など）を含み得る製品ディメンションテーブル２０４へのリンクとして働く。販売ファクトテーブル２０２内のエントリは、特定の期間にも関連付けられ得る。時間ＩＤは、いくつかの異なる期間に関する情報（たとえば、日、月、年など）を含み得る時間ディメンションテーブル２０６へのリンクとして働く。販売ファクトテーブル２０２内のエントリは、特定の場所にも関連付けられ得る。場所ＩＤは、いくつかの異なる場所に関する情報（たとえば、国、地域、州、都市など）を含み得る場所ディメンションテーブル２０８へのリンクとして働く。販売ファクトテーブル２０２内のエントリは、特定の供給元にも関連付けられ得る。供給元ＩＤは、いくつかの異なる供給元に関する情報（たとえば、名称、説明など）を含み得る供給元ディメンションテーブル２１０へのリンクとして働く。
【００２０】
ファクトテーブルおよびディメンションテーブルの組の中に記憶されたデータ（たとえば、テーブル２０２〜２１０の中に記憶された販売データ）は、利用可能なディメンションのうちの１つまたは複数を用いて視覚的に表され得る。「ｎ個の」ディメンションを用いて示されるデータは、ｎ−ディメンション「データキューブ」または「キューボイド」と呼ばれる。たとえば、図３Ａは、「種類」ディメンションにわたって集約された販売データを用いた例示的な１−ディメンション（１−Ｄ）キューボイド３０２を示す。「種類」ディメンションは、販売ファクトを集約するべき３つの別個のエントリ、「人形」、「おもちゃの自動車」、および「パズル」を有するように示されている。したがって、キューボイド３０２は、それぞれ、人形、おもちゃの自動車、およびパズルに関する例示的な販売高２８７、２７６、および２９９を含む３つのセルを含む。
【００２１】
キューボイドのサイズは、何個のセルがキューボイドに含まれるかに依存する。したがって、キューボイド３０２のサイズは、ファクトデータを含む３つのセルが存在するので３であると言われる。「種類」ディメンションのサイズは、ファクトデータを集約する３つの種類（すなわち、人形、おもちゃの自動車、パズル）が存在するのでやはり３であると言われる。任意の特定のディメンションのサイズは、対応するディメンションテーブル内の一意なエントリの数を計算することによって決定され得る。ディメンションのサイズを決定するその他の方法も、あり得る。
【００２２】
すべてのディメンションにわたるすべての販売の合計は、０−ディメンション（０−Ｄ）キューボイド（図示せず）と呼ばれ、図３Ａの例においては８６２である単一のセルを含む。
【００２３】
図３Ｂは、「種類」ディメンションおよび「時間」ディメンションにわたって集約された販売データを用いた例示的な２−ディメンション（２−Ｄ）キューボイド３０４を示す。多くの場合、特定のディメンションは、そのディメンションに関連するファクトを表す異なる方法を有する可能性がある。この例においては、時間ディメンションは、日、月、または年を用いて表される可能性があり、図３Ｂは、年を用いた表現を示す。その他の２−Ｄキューボイドも、その他の利用可能なディメンションのうちの任意の２つを組み合わせて用いて生成され得る。
【００２４】
キューボイド３０４のサイズ（すなわち、キューボイド３０４内のセルの数）は、キューボイド３０４で集約される各ディメンションのサイズを掛け合わせることによって決定され得る。「種類」ディメンションのサイズは３であり、（ファクトデータを集約する３つの年が存在するので）「時間」ディメンションのサイズは３である。したがって、キューボイド３０４のサイズは、３×３＝９である。
【００２５】
図４は、ディメンション「種類」、「時間」、および「場所」を用いた視覚的または概念的な３−ディメンション（３−Ｄ）キューボイド４００の例を示す。３−Ｄキューボイドは、並列に並べられた２−Ｄキューボイドの組であると考えられ得る。たとえば、３−Ｄキューボイド４００は、並列に並べられた２−Ｄキューボイド４０２、４０４、４０６、および４０８の組であると考えられ得る。各２−Ｄキューボイド４０２〜４０８は、第３のディメンションの限られた部分に関して２つのディメンションにわたる販売ファクトを示す。したがって、一緒になって、２−Ｄキューボイド４０２〜４０８の組は、第３のディメンションを完成させ、３−Ｄキューボイド４００を構成する。たとえば、３−Ｄキューボイド４００の前面は、２−Ｄキューボイド４０６に対応し、一方、３−Ｄキューボイド４００のそれに続く「層」は、それぞれ、２−Ｄキューボイド４０８、４０４、および４０２に対応する。
【００２６】
３−Ｄキューボイド４００のサイズは、キューボイド４００を集約する各ディメンションのサイズを掛け合わせることによって決定され得る。たとえば、「種類」ディメンションのサイズは３であり、「時間」ディメンションのサイズは３であり、「場所」ディメンションのサイズは４である。したがって、キューボイド４００のサイズは、３×３×４＝３６である。
【００２７】
図５は、ディメンション「種類」、「時間」、「場所」、および「供給元」を用いた視覚的または概念的な４−ディメンション（４−Ｄ）キューボイド５００の例を示す。４−Ｄキューボイドは、並列に並べられた３−Ｄキューボイドの組であると考えられ得る。図５に示されるように、たとえば、４−Ｄキューボイド５００は、「供給者３」キューボイドと並列に並べられた「供給者２」キューボイドと並列に並べられた「供給者１」キューボイドからなる可能性がある。
【００２８】
ディメンションの組が与えられると、ディメンションのそれぞれの可能な組み合わせを表すキューボイドが、生成され得る。キューボイドが必要とされるときにそれらのキューボイドの生成を容易にするために、可能なディメンションのパターンの表現が、データウェアハウスに記憶される。キューボイドのディメンションのパターンのそのような表現は、キューボイドの格子または単に格子と呼ばれる。図６は、文字Ａ、Ｂ、Ｃ、およびＤによって表される４つのディメンションに対応する例示的な格子６００を示す。これらのディメンションは、たとえば、図２に示されたディメンションに対応する可能性があるか、またはその他のディメンションに対応する可能性がある。最も低い集約のレベルを持つキューボイドは、格子の基礎、または単に基礎キューボイドと呼ばれる。格子６００の基礎キューボイドは、ディメンションのパターン＜Ａ，Ｂ，Ｃ，Ｄ＞によって表され、レベル０にある。格子６００を上ると、中間キューボイド（ｉｎｔｅｒｍｅｄｉａｔｅ  ｃｕｂｏｉｄ）が、レベル１、２、および３にあり、さまざまな集約のレベルを表す。例として、レベル２のキューボイド＜Ａ，Ｂ＞は、キューボイド３０４を表す可能性があり、レベル１のキューボイド＜Ａ，Ｂ，Ｃ＞は、キューボイド４００を表す可能性がある。頂点キューボイド（ａｐｅｘ  ｃｕｂｏｉｄ）は、＜ＡＬＬ＞によって表され、格子６００においてはレベル４にある。頂点キューボイドは、すべてのディメンションにわたる集約を表す。
【００２９】
格子は、より下位のレベルのキューボイドからより上位のレベルのキューボイドへの集約のための経路を定義するロードマップとしても働くことができる。そのような集約は、ロールアップオペレーションと呼ばれる。さらに、格子は、より上位のレベルのキューボイドからより下位のレベルのキューボイドへの集約のための経路を定義するロードマップとしても働く可能性がある。そのような集約は、ドリルダウンオペレーションと呼ばれる。
【００３０】
格子６００において、矢印は、より下位のレベルのキューボイドからより上位のレベルのキューボイドへの集約のための経路を示す。たとえば、レベル２において、キューボイド＜Ａ，Ｃ＞は、基礎キューボイドからレベル１のキューボイド＜Ａ，Ｂ，Ｃ＞またはレベル１のキューボイド＜Ａ，Ｃ，Ｄ＞を経由して集約され得る。これらの択一的な経路は、中間キューボイドのサイズに応じて変わるストレージ空間の量および計算の量を含む。たとえば、より大きな中間キューボイドを有する経路上にあるより上位のレベルのキューボイドは、より小さな中間キューボイドを有する経路上にある同じより上位のレベルのキューボイドよりも計算コストが高い可能性がある。より高い計算コストは、中間キューボイドを生成するために必要とされる時間または処理能力に関連する可能性がある。
【００３１】
より下位のレベルのキューボイドとより上位のレベルのキューボイド（またはその逆）の間の異なる集約経路の計算を容易にするために、およびどの経路が処理コストが低いかを決定することを容易にするために、データウェアハウス、対応するＯＬＡＰサーバ、または何らかのその他のエンティティは、一意な整数値を格子の各ディメンションと関連付けることができる。整数値は、タグ番号と呼ばれる。格子６００のディメンションに対する（０で始まり各ディメンションに対して１だけ増加する）タグ番号の例が、例示的なタグ番号テーブル（Ｔａｇ  Ｎｕｍｂｅｒ  Ｔａｂｌｅ）（ＴＮＴ）、表１に示される。
【００３２】
【表１】
0005629821.tif 000002
【００３３】
格子のディメンションのタグ番号は、その格子の個々のキューボイドに関するタグ付けされた値（ｔａｇｇｅｄ−ｖａｌｕｅ）を計算するために使用され得る。格子内の特定のキューボイドに関するタグ付けされた値を計算するための１つの方法は、特定のキューボイドの各ディメンションに関するタグ番号を２の指数とみなし、結果を合計することである。例として、格子６００のキューボイド＜Ａ，Ｂ，Ｄ＞のタグ付けされた値を計算するためには、そのキューボイドのディメンションのタグ番号を、最初に決定する。表１によれば、ディメンションＡ、Ｂ、およびＤのタグ番号は、それぞれ、０、１、および３である。したがって、キューボイド＜Ａ，Ｂ，Ｄ＞に関するタグ付けされた値は、２０＋２１＋２３＝１１と計算され得る。同様に、キューボイド＜Ｃ，Ｄ＞に関するタグ付けされた値は、２２＋２３＝１２と計算され得る。タグ付けされた値は、格子内のキューボイドを一意に識別するための方法、およびどのディメンションが特定のキューボイドで集約されるかを決定するための方法として働くことができる。
【００３４】
ＯＬＡＰのオペレーション中、より上位のレベルのキューボイドが特定のより下位のレベルのキューボイドから生成されることが望まれる状況が、生じる可能性がある。たとえば、クライアントシステム１０２のユーザが、データウェアハウス１０８の格子内の特定のキューボイドを見ることを望む可能性がある。特定のキューボイドは、（格子内のそのキューボイドの表現を除いて）いかなる形態でも現在存在しない可能性があり、したがって、その特定のキューボイドが、より下位のレベルのキューボイド、たとえば、基礎キューボイドから生成される必要がある。
【００３５】
上述のように、格子内に、より上位のレベルのキューボイドをより下位のレベルのキューボイドにつなぐ２つ以上の経路が、存在する可能性がある。これは、２つ以上の経路のうちの任意の１つを経由してより下位のレベルのキューボイドからより上位のレベルのキューボイド（またはその逆）を生成する可能性を表す。しかし、これらのあり得る経路のうち、一部の経路は、たとえば、その経路に沿った中間キューボイドのサイズによって、その他の経路よりも使用するのに（たとえば、計算の観点から）有利である可能性がある。概して、キューボイドを生成するためにエンティティ（たとえば、ＯＬＡＰサーバ１０６）に必要とされる処理能力、メモリ、および／または時間の量は、そのキューボイドのサイズに正比例する。したがって、より下位のレベルのキューボイドからより上位のレベルのキューボイド（またはその逆）を生成するとき、１つまたは複数の特に大きなキューボイドを含む経路を利用することを避けることが望ましい可能性がある。最も小さな総キューボイドサイズを有する経路を利用することが望ましい可能性もある。いずれにしても、ＯＬＡＰサーバまたはことによると別のエンティティが、格子内の２つのキューボイドの間の適切な経路を決定するための経路決定アルゴリズムを実行することができる。
【００３６】
図７は、元のキューボイドと目標のキューボイドの間の最適な経路を決定するための例示的なアルゴリズム７００を示す流れ図である。例示的なアルゴリズム７００は、ブロック７０２、７０４、７０６、７０８、７１０、７１２、７１４、７１６、および／または７１８のうちの１つまたは複数によって示される１つまたは複数のオペレーション、機能、またはアクションを含み得る。流れ図は、これらの実施形態の１つのあり得る実装形態の機能およびオペレーションを示すことを理解されたい。これに関連して、各ブロックは、プロセスの特定の論理的な機能またはステップを実施するためにプロセッサによって実行可能な１つまたは複数の命令を含むプログラムコードのモジュール、セグメント、または一部を表す可能性がある。プログラムコードは、たとえば、ディスクまたはハードドライブを含む記憶装置などの任意の種類のコンピュータ可読媒体（たとえば、コンピュータ可読ストレージ媒体または非一時的媒体）に記憶され得る。加えて、各ブロックは、プロセスの特定の論理的な機能を実行するように配線された回路を表す可能性がある。当業者に理解されるであろうように、機能が、含まれる機能に応じて、実質的に同時または逆順を含め、示されるまたは検討される順序とは異なる順序で実行される可能性がある代替的な実装形態は、本出願の例示的な実施形態の範囲内に含まれる。
【００３７】
アルゴリズム７００に関する処理は、目標のキューボイドおよび元のキューボイドの指示を受信するブロック７０２で開始することができる。クライアントシステム１０２のユーザは、たとえば、格子６００の目標のキューボイド＜Ｂ，Ｃ＞の指示をネットワーク１０４を介してＯＬＡＰサーバ１０６に与えることができる。指示は、概して、目標のキューボイドのタグ付けされた値（すなわち、６）、目標のキューボイドのディメンションのリスト（すなわち、「Ｂ、Ｃ」）、またはことによると何らかのその他の形態の形態をとる可能性がある。ユーザは、たとえば、格子６００内のキューボイド＜Ａ，Ｂ，Ｃ，Ｄ＞である可能性がある元のキューボイドの指示も与えることができる。
【００３８】
アルゴリズムは、元のキューボイドの分割されたタグ付けされた値、および元のアレー（Ｓｏｕｒｃｅ  Ａｒｒａｙ）への記憶を決定し、目標のキューボイドの分割されたタグ付けされた値、および目標のアレー（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｒｒａｙ）への記憶を決定するブロック７０４で継続する。キューボイドの分割されたタグ付けされた値は、そのキューボイドの集約されるディメンションのタグ付けされた値のアレーを指す。例として、格子６００の元のキューボイド＜Ａ，Ｂ，Ｃ，Ｄ＞は、ディメンションＡ、Ｂ、Ｃ、およびＤに関して集約される。したがって、そのキューボイドの分割されたタグ付けされた値は、表１に示された４つのディメンションのタグ番号にしたがって｛２０，２１，２２，２３｝または｛１，２，４，８｝と表され得る。同様に、格子６００の目標のキューボイド＜Ｂ，Ｃ＞は、ディメンションＢおよびＣに関して集約される。したがって、そのキューボイドの分割されたタグ付けされた値は、｛２１，２２｝または｛２，４｝と表され得る。分割されたタグ付けされた値｛１，２，４，８｝は、元のアレーとして記憶されることができ、一方、分割されたタグ付けされた値｛２，４｝は、目標のアレーとして記憶されることができる。
【００３９】
ブロック７０６において、目標のアレーのすべての分割されたタグ付けされた値が元のアレー内に存在するかどうかの判定が、なされる。これは、元のキューボイドを目標のキューボイドにつなぐ対応する格子内の経路が存在するかどうかの指示として働く。経路が存在しない（すなわち、分割されたタグ付けされた値が、目標のアレー内に存在し、元のアレー内に存在しない）場合、アルゴリズムは終了する。目標のアレーのすべての分割されたタグ付けされた値が元のアレー内に存在する場合、アルゴリズムは、元のキューボイドのタグ付けされた値を経路アレー（Ｐａｔｈ  Ａｒｒａｙ）に記憶するブロック７０８で継続する。
【００４０】
アルゴリズムが進むにつれて、経路アレーは、元のキューボイドと目標のキューボイドの間の最適な経路を生成するために中間キューボイドのタグ付けされた値で更新される。たとえば、現在の元のキューボイドが格子６００のキューボイド＜Ａ，Ｂ，Ｃ，Ｄ＞である場合、値「１５」が、経路アレーに追加される。
【００４１】
アルゴリズムは、元のキューボイドから生成されることができる可能性があるすぐ上のレベルのディメンションのパターンを決定するブロック７１０で継続する。中間キューボイドとも呼ばれるこれらの上位のレベルのディメンションのパターンは、データウェアハウス１０８内の適切な格子を調べることによって決定され得る。たとえば、現在の元のキューボイドがキューボイド＜Ａ，Ｂ，Ｃ，Ｄ＞である場合、＜Ａ，Ｂ，Ｃ，Ｄ＞から生成されることができる中間的な上位のレベルのキューボイドは、＜Ａ，Ｂ，Ｃ＞、＜Ａ，Ｂ，Ｄ＞、＜Ａ，Ｃ，Ｄ＞、および＜Ｂ，Ｃ，Ｄ＞である。
【００４２】
前のブロックで決定されたすぐ上のレベルのディメンションのパターンの中で、目標のアレー内の分割されたタグ付けされた値に合致する分割されたタグ付けされた値を有するサブセットが決定されるブロック７１２が、ブロック７１０の後に続く。このサブセット内の各キューボイドは、目標のキューボイドに到達するために生成され得るあり得る中間キューボイドを示す。目標のキューボイドに到達するためにどの中間キューボイドを生成すべきかの選択肢があるとき、たとえば処理時間および処理能力を節約するためにあり得るキューボイドのうちの最小のキューボイドを生成することが有利である。
【００４３】
表２は、格子６００内の元のキューボイド＜Ａ，Ｂ，Ｃ，Ｄ＞から生成されることができるあり得る中間キューボイドと、それらのキューボイドの対応する分割されたタグ付けされた値とを示す。上述のように、格子６００内の目標のキューボイドは、分割されたタグ付けされた値｛２，４｝を有するキューボイド＜Ｂ，Ｃ＞である可能性がある。したがって、表２の分割されたタグ付けされた値のリストに基づいて、分割されたタグ付けされた値｛２，４｝が＜Ａ，Ｂ，Ｃ＞および＜Ｂ，Ｃ，Ｄ＞のそれぞれの分割されたタグ付けされた値の中に存在するので、キューボイド＜Ａ，Ｂ，Ｃ＞および＜Ｂ，Ｃ，Ｄ＞が、目標のキューボイド＜Ｂ，Ｃ＞に到達するために生成され得る中間キューボイドのサブセットを表す。
【００４４】
【表２】
0005629821.tif 000003
【００４５】
ブロック７１２の後にはブロック７１４が続き、ブロック７１４において、決定されたサブセットが２つ以上のディメンションのパターンを含む場合、サブセット内のそれぞれのディメンションのパターンのサイズが計算され、最小のサイズを有するディメンションのパターンが新しい元のキューボイドとして設定される。サブセット内に１つのキューボイドだけが存在する場合、そのキューボイドが、新しい元のキューボイドとして設定される。上述のように、キューボイドのサイズは、特定のキューボイドで集約される個々のディメンションのサイズを一緒に掛け合わせることによって決定され得る。たとえば、ディメンションＡ、Ｂ、Ｃ、およびＤのサイズがそれぞれ１５、６、６、および１０である場合、キューボイド＜Ａ，Ｂ，Ｃ＞のサイズは１５×６×６＝５４０と計算され、一方、キューボイド＜Ｂ，Ｃ，Ｄ＞のサイズは６×６×１０＝３６０と計算される。したがって、キューボイド＜Ｂ，Ｃ，Ｄ＞は、目標のキューボイドに到達するために生成され得るキューボイドのサブセットのうちの最小のキューボイドを表す。このキューボイドを生成することは、潜在的に、＜Ａ，Ｂ，Ｃ＞キューボイドを生成することと比較して処理時間および処理能力を節約する。
【００４６】
中間キューボイドのタグ付けされた値が経路アレーに追加されるブロック７１６が、ブロック７１４の後に続く。たとえば、キューボイド＜Ｂ，Ｃ，Ｄ＞のタグ付けされた値が、現在の経路アレーに追加され、経路アレー｛１５，１４｝をもたらす。
【００４７】
アルゴリズムは、新しい元のキューボイドのこのタグ付けされた値が目標のアレー内のタグ付けされた値に等しいかどうかを判定するブロック７１８で継続する。等しい場合、経路アレーは、元のキューボイドから目標のキューボイドへの最適な経路を構成するキューボイドのタグ付けされた値を含み、アルゴリズムは、終了する。新しい元のキューボイドのタグ付けされた値が目標のキューボイドのタグ付けされた値と等しくない場合、アルゴリズムは、新しい元のキューボイドから生成されることができるそれぞれのより上位のレベルのディメンションのパターンが決定されるブロック７１０に戻る。この例において、キューボイド＜Ｂ，Ｃ，Ｄ＞は、元のキューボイドと目標のキューボイドの間の最適な経路の中間キューボイドとして設定される。上述の例において、キューボイド＜Ｂ，Ｃ，Ｄ＞のタグ付けされた値（すなわち、１４）は目標のキューボイド＜Ｂ，Ｃ＞のタグ付けされた値（すなわち、６）と等しくないので、アルゴリズムは、ブロック７１０に戻り、ブロック７１２、７１４、７１６、および７１８を通じて継続する。
【００４８】
アルゴリズムが終了すると、特定の格子内の元のキューボイドから目標のキューボイドを生成するための最適な経路が、経路アレーで表される。経路アレーは、元のキューボイドのタグ付けされた値、目標のキューボイドのタグ付けされた値、および経路決定アルゴリズム７００によって決定された最適な経路を記載する表３のようなルックアップテーブルに記憶され得る。ルックアップテーブルは、格子内の特定のキューボイドが元のキューボイドから生成されることが望まれるときに調べられることができる。最適な経路が既に導出され、ルックアップテーブルに記載されている場合、経路決定アルゴリズムを再実行する必要がない可能性がある。
【００４９】
【表３】
0005629821.tif 000004
【００５０】
ファクトデータが格子内のディメンションの任意の組み合わせにわたって集約され得る格子が、存在する。たとえば、格子６００においては、ファクトデータが、ディメンションＡ、Ｂ、Ｃ、およびＤの任意の組み合わせ（たとえば、＜Ａ，Ｂ＞、＜Ａ，Ｃ，Ｄ＞、＜Ｄ＞など）に関して集約され得る。そのような格子は、表４のような基礎キューボイドテーブル（Ｂａｓｅ  Ｃｕｂｏｉｄ  Ｔａｂｌｅ）（ＢＣＴ）で特定され得る単一の基礎キューボイドを有する。
【００５１】
【表４】
0005629821.tif 000005
【００５２】
図８は、ハイパー格子と呼ばれる、２つの基礎キューボイドを有する概念的なキューボイドデータ構造の例を示す。概して、用語「ハイパー格子」は、ｎ個の基礎キューボイド（ここでｎ＝１〜∞）を有するデータ構造を示すために使用され得る。したがって、用語「格子」は、ｎ＝１の場合の特定の種類のハイパー格子を示すために使用される。
【００５３】
ハイパー格子８００は、一組の格子、基礎キューボイド＜Ａ，Ｂ，Ｅ＞を有する１つの格子と、基礎キューボイド＜Ａ，Ｂ，Ｃ，Ｄ＞を有する別の格子とを含む。ハイパー格子８００は、ハイパー格子８００によって表されるファクトデータが、ハイパー格子内のディメンションのすべの組み合わせにわたって集約可能なわけではないという点で図６の格子６００と異なる。たとえば、ハイパー格子８００は、新しいディメンションＥの追加を示し、ディメンションＥに関するファクトデータは、その他のディメンション、たとえばＢとＥとの限られたサブセットに対してのみ存在し得る。基礎キューボイド＜Ａ，Ｂ，Ｅ＞および６つの中間的なディメンションのパターン＜Ｂ，Ｅ＞、＜Ａ，Ｅ＞、＜Ａ，Ｂ＞、＜Ｅ＞、＜Ａ＞、および＜Ｂ＞を有する新しい格子を生成し、記憶する代わりに、新しいディメンションのパターンが、格子６００の既存のディメンションのパターンと合併され、ハイパー格子８００を形成することができる。これは、格子６００内のデータウェアハウスに既に存在するディメンションのパターン（すなわち、ディメンションのパターン＜Ａ＞、＜Ｂ＞、および＜Ａ，Ｂ＞）の指示を生成し、記憶する必要がないことの結果として、データウェアハウスのストレージ空間の節約を実現する。新しい基礎キューボイド＜Ａ，Ｂ，Ｅ＞および新しいディメンションのパターン＜Ｂ，Ｅ＞および＜Ａ，Ｅ＞は、格子６００の既存のディメンションのパターンを指し示し、参照して、ハイパー格子を完成させることができる。
【００５４】
基礎キューボイドから生成され得るディメンションのパターンは、その基礎キューボイドに対応すると言われる。したがって、ハイパー格子において、ディメンションのパターンは、そのハイパー格子の基礎キューボイドのうちの１つ、一部、またはすべてに対応する可能性がある。たとえば、ハイパー格子８００において、ディメンションのパターン＜Ｂ，Ｅ＞は、基礎キューボイド＜Ａ，Ｂ，Ｅ＞に対応し、一方、ディメンションのパターン＜Ａ，Ｂ＞は、基礎キューボイド＜Ａ，Ｂ，Ｅ＞と基礎キューボイド＜Ａ，Ｂ，Ｃ，Ｄ＞の両方に対応する。
【００５５】
例として、分析者は、特定のキューボイド、たとえば、「種類」ディメンションおよび「時間」ディメンションに関して集約されたファクトデータを示す図３Ｂのキューボイド３０４を扱っている可能性がある。キューボイド３０４は、ハイパー格子（たとえば、格子６００）内の特定のディメンションのパターン（たとえば、レベル２のディメンションのパターン＜Ａ，Ｂ＞）によってその格子内で表され得る。分析者は、異なるディメンション（たとえば、「種類」および「販売員」）にわたって集約されたファクトデータを見ることを望む可能性がある。そのようなキューボイドの要求に応じて、ＯＬＡＰサーバは、データウェアハウス内の既存の格子に問い合わせを行い、「販売員」ディメンションのデータが存在しないと判定する可能性がある。したがって、ＯＬＡＰサーバは、そのようなデータが存在するかどうかを判定するためにその他のデータウェアハウスに問い合わせを行うことができる。存在する場合、ＯＬＡＰサーバおよび対応するデータウェアハウスは、データを取り出し、既存のハイパー格子（たとえば、格子６００）に新しい基礎キューボイドを挿入することができ、それによって、追加的な基礎キューボイドを有するハイパー格子（たとえば、２つの基礎キューボイドを有するハイパー格子８００）を形成する。新しい基礎キューボイドは、挿入のポイント（ｐｏｉｎｔ  ｏｆ  ｉｎｓｅｒｔｉｏｎ）の既存のディメンションのパターンの１レベル下に挿入される。したがって、挿入のポイントがレベル２のディメンションのパターン＜Ａ，Ｂ＞である場合、新しい基礎キューボイド＜Ａ，Ｂ，Ｅ＞が、ハイパー格子のレベル１に挿入される。（図８において太字体で示される）ディメンションのパターン＜Ｂ，Ｅ＞、＜Ａ，Ｅ＞、および＜Ｅ＞が、形成され、新しい基礎キューボイド＜Ａ，Ｂ，Ｅ＞と適切にリンクされる。新しい基礎キューボイドおよびより上位のレベルのディメンションのパターンは、既存のディメンションのパターン＜Ａ，Ｂ＞、＜Ａ＞、および＜Ｂ＞にやはりリンクすることができる。
【００５６】
ＯＬＡＰサーバは、表５に示されるように、新しいディメンション（すなわち、Ｅ）を既存のタグ番号テーブルにやはり追加し、新しいディメンションに一意なタグ番号を割り当てることができる。
【００５７】
【表５】
0005629821.tif 000006
【００５８】
表６は、ハイパー格子８００内に新しい基礎キューボイド＜Ａ，Ｂ，Ｅ＞を形成することに応じて更新され得る基礎キューボイドテーブルを示す。基礎キューボイド＜Ａ，Ｂ，Ｅ＞のタグ付けされた値は、２０＋２１＋２４＝１９とやはり計算され、基礎キューボイドテーブルに記憶されることができる。ディメンションＥがハイパー格子内の異なる位置に追加され、したがって、新しい基礎キューボイドを形成する場合、基礎キューボイドテーブルがそれに応じて更新されるが、タグ番号テーブルは更新されない。
【００５９】
【表６】
0005629821.tif 000007
【００６０】
図８は、２つの基礎キューボイドを有するハイパー格子を示すが、任意の数の基礎キューボイドがハイパー格子内にあり得る。図９は、３つの基礎キューボイド＜Ａ，Ｂ，Ｃ，Ｄ＞、＜Ａ，Ｂ，Ｅ＞、および＜Ｃ，Ｆ＞を有する例示的なハイパー格子９００を示す。ハイパー格子９００内のディメンションのパターンのそれぞれは、流れ図７００を参照して説明されたアルゴリズムなどの最適な経路決定アルゴリズムの元のキューボイドまたは目標のキューボイドとして使用され得る。
【００６１】
例として、キューボイド＜Ｂ＞が、所望の目標のキューボイドである可能性があり、一方、基礎キューボイド＜Ａ，Ｂ，Ｅ＞が、所望の元のキューボイドである可能性がある。上述のように、より下位のレベルのキューボイドからより上位のレベルのキューボイドを生成することは、ロールアップオペレーションと呼ばれる可能性がある。２つのキューボイド間の最適な経路を決定するために、最初に、基礎キューボイド＜Ａ，Ｂ，Ｅ＞から生成されることができるキューボイドが、＜Ｂ，Ｅ＞、＜Ａ，Ｅ＞、および＜Ａ，Ｂ＞であると決定される。これらの３つの決定されたキューボイドのうち、目標のキューボイドを生成するために使用され得るキューボイドが、＜Ｂ，Ｅ＞および＜Ａ，Ｂ＞であると決定される。これらの２つの決定されたキューボイドのうち、最小のサイズを有するキューボイドが、決定される。たとえば、キューボイド＜Ａ，Ｂ＞がキューボイド＜Ｂ，Ｅ＞よりも小さなサイズを有する場合、キューボイド＜Ａ，Ｂ，Ｅ＞と＜Ｂ＞の間の最適な経路は、キューボイド＜Ａ，Ｂ＞を含む。この経路は、タグ付けされた値のアレー（すなわち、｛１９，３，２｝と表され得る。
【００６２】
別の例として、キューボイド＜Ａ＞が、所望の元のキューボイドである可能性があり、一方、キューボイド＜Ａ，Ｂ，Ｅ＞が、所望の目標のキューボイドである可能性がある。上述のように、より上位のレベルのキューボイドからより下位のレベルのキューボイドを生成することは、ドリルダウンオペレーションと呼ばれる可能性がある。２つのキューボイド間の最適な経路を決定するために、最初に、キューボイド＜Ａ＞からドリルダウンされることができるキューボイドが、＜Ａ，Ｅ＞、＜Ａ，Ｂ＞、＜Ａ，Ｃ＞、および＜Ａ，Ｄ＞であると決定される。これらの４つの決定されたキューボイドのうち、目標のキューボイドに向かってドリルダウンするために使用され得るキューボイドが、＜Ａ，Ｂ＞および＜Ａ，Ｅ＞であると決定される。これらの２つの決定されたキューボイドのうち、最小のサイズを有するキューボイドが、決定される。たとえば、キューボイド＜Ａ，Ｅ＞がキューボイド＜Ａ，Ｂ＞よりも小さなサイズを有する場合、キューボイド＜Ａ＞と＜Ａ，Ｂ，Ｅ＞の間の最適な経路は、キューボイド＜Ａ，Ｅ＞を含む。この経路は、タグ付けされた値のアレー（すなわち、｛１，１７，１９｝）と表され得る。
【００６３】
図１０は、エンティティ１０２、１０４、１０６、１０８、および／または１１０のうちの任意のものと結合されるか、それに一体化されるか、またはそれによって具現化され得る例示的なコンピューティングデバイス１０００を示すブロック図である。ごく基本的な構成１００１において、概して、コンピューティングデバイス１０００は、１つまたは複数のプロセッサ１０１０およびシステムメモリ１０２０を含む。メモリバス１０３０が、プロセッサ１０１０とシステムメモリ１０２０の間の通信のために使用され得る。
【００６４】
所望の構成に応じて、プロセッサ１０１０は、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタル信号プロセッサ（ＤＳＰ）、またはそれらの任意の組み合わせを含むがそれらに限定されない任意の種類である可能性がある。プロセッサ１０１０は、レベル１キャッシュ１０１１およびレベル２キャッシュ１０１２などの１つまたは複数のレベルのキャッシュ、プロセッサコア１０１３、ならびにレジスタ１０１４を含み得る。プロセッサコア１０１３は、算術論理演算ユニット（ＡＬＵ）、浮動小数点演算ユニット（ＦＰＵ）、デジタル信号処理コア（ＤＳＰコア）、またはそれらの任意の組み合わせを含み得る。メモリコントローラ１０１５が、プロセッサ１０１０とともに使用される可能性もあり、または一部の実装形態においては、メモリコントローラ１０１５は、プロセッサ１０１０の内部部分である可能性がある。
【００６５】
所望の構成に応じて、システムメモリ１０２０は、揮発性メモリ（ＲＡＭなど）、不揮発性メモリ（ＲＯＭ、フラッシュメモリなど）、またはそれらの任意の組み合わせを含むがそれらに限定されない任意の種類である可能性がある。概して、システムメモリ１０２０は、オペレーティングシステム１０２１、１つまたは複数のアプリケーション１０２２、およびプログラムデータ１０２４を含む。システムメモリ１０２０は、図１１に関して全体的に説明される１つまたは複数のコンピュータプログラム製品を記憶することができる。
【００６６】
コンピューティングデバイス１０００は、追加的な特徴または機能、および基本構成１００１とその他のエンティティの間の通信を容易にするための追加的なインターフェースを有する可能性がある。たとえば、バス／インターフェースコントローラ１０４０が、ストレージインターフェースバス１０４１を介した基本構成１００１と１つまたは複数のデータ記憶装置１０５０の間の通信を容易にするために使用され得る。データ記憶装置１０５０は、取外し式記憶装置１０５１、非取外し式記憶装置１０５２、またはそれらの組み合わせである可能性がある。取外し式記憶装置および非取外し式記憶装置の例は、いくつか例を挙げるとすれば、フレキシブルディスクドライブおよびハードディスクドライブ（ＨＤＤ）などの磁気ディスクデバイス、コンパクトディスク（ＣＤ）ドライブまたはデジタルバーサタイルディスク（ＤＶＤ）ドライブなどの光ディスクドライブ、ソリッドステートドライブ（ＳＳＤ）、ならびにテープドライブを含む。例示的なコンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法またはテクノロジーで実装された揮発性および不揮発性の取外し式および非取外し式の媒体を含み得る。本明細書に記載の少なくとも一部の実施形態によれば、データ記憶装置１０５０は、データウェアハウス１０８に記憶されるデータのリポジトリとして働くことができる。追加的にまたは代替的に、データ記憶装置１０５０は、データの格子（たとえば、格子６００またはハイパー格子８００）の表現を記憶することができる。
【００６７】
システムメモリ１０２０、取外し式ストレージ１０５１、および非取外し式ストレージ１０５２は、すべてコンピュータストレージ媒体の例である。コンピュータストレージ媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくはその他のメモリテクノロジー、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）、もしくはその他の光学式ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくはその他の磁気記憶装置、または所望の情報を記憶するために使用されることができ、コンピューティングデバイス１０００によってアクセスされることができる任意のその他の媒体を含むがそれらに限定されない。任意のそのようなコンピュータストレージ媒体が、デバイス１０００の一部である可能性がある。
【００６８】
コンピューティングデバイス１０００は、バス／インターフェースコントローラ１０４０を介したさまざまなインターフェースデバイス（たとえば、出力インターフェース、周辺インターフェース、通信インターフェース、および／またはアンテナ１０８、ルシフェリンブロードキャストメカニズム（ｌｕｃｉｆｅｒｉｎ  ｂｒｏａｄｃａｓｔ  ｍｅｃｈａｎｉｓｍ）１０６、スニファ１０４などの、ロボット１００に直接関連するインターフェース）から基本構成１００１への通信を容易にするためのインターフェースバス１０４２も含み得る。例示的な出力インターフェース１０６０は、１つもしくは複数のＡ／Ｖポート１０６３を介してディスプレイまたはスピーカなどのさまざまな外部デバイスと通信するように構成され得るグラフィックス処理ユニット１０６１およびオーディオ処理ユニット１０６２を含む。例示的な周辺インターフェース１０６０は、１つまたは複数のＩ／Ｏポート１０７３を介して入力デバイス（たとえば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなど）またはその他の周辺デバイス（たとえば、プリンタ、スキャナなど）などの外部デバイスと通信するように構成され得るシリアルインターフェースコントローラ１０７１またはパラレルインターフェースコントローラ１０７２を含む。
【００６９】
例示的な通信インターフェース１０８０は、１つまたは複数の通信ポート１０８２を介したネットワーク通信による１つまたは複数のその他のコンピューティングデバイス１０９０との通信を容易にするように構成され得るネットワークコントローラ１０８１を含む。通信接続は、通信媒体の一例である。概して、通信媒体は、搬送波またはその他の搬送メカニズムなどの変調されたデータ信号内のコンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータによって具現化されることができ、任意の情報配信媒体を含む。「変調されたデータ信号」は、その信号の特徴のうちの１つまたは複数を、信号中に情報を符号化するような方法で設定または変更させる信号である可能性がある。限定ではなく例として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響、無線周波数（ＲＦ）、赤外線（ＩＲ）、およびその他の無線媒体などの無線媒体を含み得る。本明細書において使用される用語、（１つまたは複数の）コンピュータ可読媒体は、ストレージ媒体を含む可能性があり、コンピュータ通信は、通信媒体を含む可能性がある。
【００７０】
コンピューティングデバイス１０００は、セル電話、携帯情報端末（ＰＤＡ）、パーソナルメディアプレイヤーデバイス、無線ウェブ閲覧デバイス、パーソナルハンドセットデバイス、特定用途向けデバイス、または上述の機能のうちの任意のものを含む複合デバイスなどの小型フォームファクタ携帯型（または移動体）電子デバイスの一部として実装され得る。コンピューティングデバイス１０００は、ラップトップコンピュータ構成および非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとしても実装され得る。
【００７１】
図１１は、本明細書において示される少なくとも一部の実施形態にしたがって構成された、コンピューティングデバイスでコンピュータプロセスを実行するためのコンピュータプログラムを含む例示的なコンピュータプログラム製品１１００の概念的で部分的な見方を示す概略図である。例示的なコンピュータプログラム製品１１００の例示的な実施形態は、信号を運ぶ媒体１１０２を用いて提供される。信号を運ぶ媒体１１０２は、たとえばプロセッサによって実行されるときに図１〜１０に関して上で説明された機能または機能の一部を提供することができる１つまたは複数の命令１１０４を含み得る。したがって、たとえば、流れ図７００を参照すると、図７のブロック７０２、７０４、７０６、７０８、７１０、７１２、７１４、７１６、および／または７１８の１つまたは複数の特徴が、信号を運ぶ媒体１１０２に関連する１つまたは複数の命令によって引き受けられる可能性がある。
【００７２】
１つまたは複数の命令は、たとえば、コンピュータが実行可能なおよび／または論理によって実施される命令である可能性がある。一部の実施形態において、１つまたは複数のコンピュータプログラム製品１１００の信号を運ぶ媒体１１０２は、コンピュータ可読媒体１１０６、記録可能な媒体１１０８、および／または通信媒体１１１０を含む。一部の例において、図１０のコンピューティングデバイス１０００などのコンピューティングデバイスが、媒体１１０２によってデバイスに搬送された命令１１０４に応じてさまざまなオペレーション、機能、またはアクションを提供するように構成され得る。
【００７３】
一部の実装形態において、信号を運ぶ媒体１１０２は、これらに限定されないが、ハードディスクドライブ、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、デジタルテープ、メモリなどのコンピュータ可読媒体１１０６を包含し得る。一部の実装形態において、信号を運ぶ媒体１１０２は、これらに限定されないが、メモリ、読み出し／書き込み（Ｒ／Ｗ）ＣＤ、Ｒ／Ｗ  ＤＶＤなどの記録可能な媒体１１０８を包含し得る。一部の実装形態において、信号を運ぶ媒体１１０２は、これらに限定されないが、デジタルおよび／またはアナログ通信媒体（たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）などの通信媒体１１１０を包含し得る。したがって、たとえば、コンピュータプログラム製品１１００は、ＲＦ信号を運ぶ媒体１１０２によって、説明されたシステムの１つまたは複数のモジュールに伝達される可能性があり、信号を運ぶ媒体１１０２は、無線通信媒体１１１０の無線の形態（たとえば、ＩＥＥＥ８０２．１１規格に準拠する無線通信媒体）によって伝達される。
【００７４】
本開示は、さまざまな態様の例示として意図されている、本出願に記載の特定の実施形態によって限定されてはならない。当業者に明らかであろうように、多くの修正および変更が、本開示の精神および範囲を逸脱することなしに行われ得る。本明細書に列挙された方法および装置に加えて、本開示の範囲内の機能的に均等な方法および装置が、上述の説明から当業者に明らかであろう。そのような修正および変更は、添付の特許請求の範囲の範囲内に入るように意図される。本開示は、添付の特許請求の範囲に与えられた均等物の全範囲と併せた、そのような特許請求の範囲の請求項によってのみ限定されるべきである。本開示は、特定の方法、試薬、化合物、組成物、または材料に限定されず、これらはもちろん変わり得ることを理解されたい。本明細書において使用された用語は、特定の実施形態を説明することのみを目的としており、限定するように意図されていないことも理解されたい。
【００７５】
本明細書における実質的にすべての複数形および／または単数形の用語の使用に対して、当業者は、状況および／または用途に適切なように、複数形から単数形に、および／または単数形から複数形に変換することができる。さまざまな単数形／複数形の置き換えは、理解しやすいように、本明細書で明確に説明することができる。
【００７６】
通常、本明細書において、特に添付の特許請求の範囲（たとえば、添付の特許請求の範囲の本体部）において使用される用語は、全体を通じて「オープンな（ｏｐｅｎ）」用語として意図されていることが、当業者には理解されよう（たとえば、用語「含む（ｉｎｃｌｕｄｉｎｇ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきであり、用語「有する（ｈａｖｉｎｇ）」は、「少なくとも有する（ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ）」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は、「含むがそれに限定されない（ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｉｓ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ）」と解釈されるべきである、など）。導入される請求項で具体的な数の記載が意図される場合、そのような意図は、当該請求項において明示的に記載されることになり、そのような記載がない場合、そのような意図は存在しないことが、当業者にはさらに理解されよう。
【００７７】
たとえば、理解の一助として、添付の特許請求の範囲は、導入句「少なくとも１つの（ａｔ  ｌｅａｓｔ  ｏｎｅ）」および「１つまたは複数の（ｏｎｅ  ｏｒ  ｍｏｒｅ）」を使用して請求項の記載を導くことを含む場合がある。しかし、そのような句の使用は、同一の請求項が、導入句「１つまたは複数の」または「少なくとも１つの」および「ａ」または「ａｎ」などの不定冠詞を含む場合であっても、不定冠詞「ａ」または「ａｎ」による請求項の記載の導入が、そのように導入される請求項の記載を含む任意の特定の請求項を、単に１つのそのような記載を含む実施形態に限定する、ということを示唆していると解釈されるべきではない（たとえば、「ａ」および／または「ａｎ」は、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである）。同じことが、請求項の記載を導入するのに使用される定冠詞の使用にも当てはまる。また、導入される請求項の記載で具体的な数が明示的に記載されている場合でも、そのような記載は、少なくとも記載された数を意味すると解釈されるべきであることが、当業者には理解されよう（たとえば、他の修飾語なしでの「２つの記載（ｔｗｏ  ｒｅｃｉｔａｔｉｏｎｓ）」の単なる記載は、少なくとも２つの記載、または２つ以上の記載を意味する）。
【００７８】
さらに、「Ａ、ＢおよびＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、およびＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。「Ａ、Ｂ、またはＣ、などの少なくとも１つ」に類似の慣例表現が使用されている事例では、通常、そのような構文は、当業者がその慣例表現を理解するであろう意味で意図されている（たとえば、「Ａ、Ｂ、またはＣの少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡおよびＢを共に、ＡおよびＣを共に、ＢおよびＣを共に、ならびに／またはＡ、Ｂ、およびＣを共に、などを有するシステムを含むが、それに限定されない）。２つ以上の代替用語を提示する事実上いかなる離接する語および／または句も、明細書、特許請求の範囲、または図面のどこにあっても、当該用語の一方（ｏｎｅ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、当該用語のいずれか（ｅｉｔｈｅｒ  ｏｆ  ｔｈｅ  ｔｅｒｍｓ）、または両方の用語（ｂｏｔｈ  ｔｅｒｍｓ）を含む可能性を企図すると理解されるべきであることが、当業者にはさらに理解されよう。たとえば、句「ＡまたはＢ」は、「Ａ」または「Ｂ」あるいは「ＡおよびＢ」の可能性を含むことが理解されよう。
【００７９】
当業者に理解されるであろうように、書面で説明するという観点など、任意のおよびすべての趣旨で、本明細書で開示されたすべての範囲は、それらの範囲の任意のおよびすべてのあり得る部分的な範囲および部分的な範囲の組み合わせも包含する。どの記載された範囲も、同じ範囲が少なくとも２等分、３等分、４等分、５等分、１０等分などに分割されることを十分に説明し、そのように分割されることを可能にすると容易に認識され得る。非限定的な例として、本明細書において検討された各範囲は、下３分の１、真ん中３分の１、および上３分の１などに容易に分割され得る。当業者にやはり理解されるであろうように、「最大で〜まで」、「少なくとも〜」、「〜より大きい」、「〜未満」などのすべての言い回しは、記載された数を含み、上で検討されたように部分的な範囲に続けて分割され得る範囲を指す。最後に、当業者に理解されるであろうように、範囲は、それぞれの個々の構成要素を含む。したがって、たとえば、１〜３個のセルを有する群は、１個、２個、または３個のセルを有する群を指す。同様に、１〜５個のセルを有する群は、１個、２個、３個、４個、または５個のセルを有する群を指し、以下同様である。
【００８０】
さまざまな態様および実施形態が本明細書において開示されたが、その他の態様および実施形態が、当業者には明らかになるであろう。本明細書において開示されたさまざまな態様および実施形態は、例示を目的としており、限定するように意図されておらず、その真の範囲および精神は、以下の特許請求の範囲によって示される。
【図１】
0005629821.tif 000008
【図２】
0005629821.tif 000009
【図３】
0005629821.tif 000010
【図４】
0005629821.tif 000011
【図５】
0005629821.tif 000012
【図６】
0005629821.tif 000013
【図７】
0005629821.tif 000014
【図８】
0005629821.tif 000015
【図９】
0005629821.tif 000016
【図１０】
0005629821.tif 000017
【図１１】
0005629821.tif 000018