(57)【要約】      （修正有）【課題】連続した一連の主計算を伴った、データベースから情報を抽出する処理を高速化する。【解決手段】第１の主計算は、データベースを表わすデータセットに関して第１の選択アイテムを演算して第１の結果を生成し、第２の主計算は、第１の結果に関して第２の選択アイテムを演算して第２の結果を生成する。第１および第２の結果は、コンピュータメモリにおいてキャッシュする。キャッシュするステップは、少なくとも第１の選択アイテムの関数として第１の選択識別子値と、少なくとも第２の選択アイテムおよび第１の結果の関数として第２の選択識別子値とを計算するステップと、第１の選択識別子値および第１の結果ならびに第２の選択識別子値および第２の結果をそれぞれ関連するオブジェクトとしてデータ構造に格納するステップとを含む。識別子値の各々はハッシュ関数によって統計的に固有のデジタル指紋として生成される。【選択図】図２
2010027058.tif 000002
【特許請求の範囲】
【請求項１】
データベースから情報を抽出するための、コンピュータによって実現される方法であって、
前記方法は、データベースを表わすデータセット（Ｒ０）に関して第１の選択アイテム（Ｓ１）を演算して第１の結果（Ｒ１）を生成する第１の主計算（Ｐ１）と、前記第１の結果（Ｒ１）に関して第２の選択アイテム（Ｓ２）を演算して第２の結果（Ｒ２）を生成する第２の主計算（Ｐ２）とを含む連続した一連の主計算を含み、前記方法はさらに、
少なくとも前記第１の選択アイテム（Ｓ１）の関数として第１の選択識別子値（ＩＤ１）と、少なくとも前記第２の選択アイテム（Ｓ２）および前記第１の結果（Ｒ１）の関数として第２の選択識別子値（ＩＤ３）とを計算し、
前記第１の選択識別子値（ＩＤ１）および前記第１の結果（Ｒ１）ならびに前記第２の選択識別子値（ＩＤ３）および前記第２の結果（Ｒ２）をそれぞれ関連するオブジェクトとしてデータ構造に格納することにより、前記第１および第２の結果（Ｒ１，Ｒ２）をキャッシュするステップを含む、方法。
【請求項２】
前記第１の選択アイテム（Ｓ１）および前記第２の選択アイテム（Ｓ２）に基づき前記第２の結果（Ｒ２）を見出すために、前記データ構造を用いるステップをさらに含み、
前記用いるステップは、
（ａ）前記第１の選択識別子値（ＩＤ１）を少なくとも前記第１の選択アイテム（Ｓ１）の関数として計算するサブステップと、
（ｂ）前記第１の結果（Ｒ１）を位置付けるために、前記第１の選択識別子値（ＩＤ１）に基づいて前記データ構造のオブジェクトを探索するサブステップと、
（ｃ）サブステップ（ｂ）において前記第１の結果（Ｒ１）が見出された場合、前記第１の結果（Ｒ１）および前記第２の選択アイテム（Ｓ２）の関数として前記第２の選択識別子値（ＩＤ３）を計算し、前記第２の結果（Ｒ２）を位置付けるために、前記第２の選択識別子値（ＩＤ３）に基づいて前記データ構造のオブジェクトを探索するサブステップと、
（ｄ）サブステップ（ｂ）において前記第１の結果（Ｒ１）が見出されない場合、前記第１の主計算（Ｐ１）を実行して前記第１の結果（Ｒ１）を生成し、前記第１の結果（Ｒ１）および前記第２の選択アイテム（Ｓ２）の関数として前記第２の選択識別子値（ＩＤ３）を計算し、前記第２の結果（Ｒ２）を位置付けるために、前記第２の選択識別子値（ＩＤ３）に基づいて前記データ構造のオブジェクトを探索するサブステップと、
（ｅ）サブステップ（ｃ）または（ｄ）において前記第２の結果（Ｒ２）が見出されない場合、前記第２の主計算（Ｐ２）を実行して前記第２の結果（Ｒ２）を生成するサブステップとを含む、請求項１に記載の方法。
【請求項３】
第１の結果識別子値（ＩＤ２）を前記第１の結果（Ｒ１）の関数として計算するステップをさらに含み、前記格納するステップは、前記第１の選択識別子値（ＩＤ１）および前記第１の結果識別子値（ＩＤ２）を関連するオブジェクトとして前記データ構造に格納するステップと、前記第１の結果識別子値（ＩＤ２）および前記第１の結果（Ｒ１）を関連するオブジェクトとして前記データ構造に格納するステップとをさらに含む、請求項１に記載の方法。
【請求項４】
前記第１の選択アイテム（Ｓ１）および前記第２の選択アイテム（Ｓ２）に基づき前記第２の結果（Ｒ２）を見出すために、前記データ構造を用いるステップをさらに含み、前記用いるステップは、
（ａ）少なくとも前記第１の選択アイテム（Ｓ１）の関数として前記第１の選択識別子値（ＩＤ１）を計算するサブステップと、
（ｂ）前記第１の結果識別子値（ＩＤ２）を位置付けるために、前記第１の選択識別子
値（ＩＤ１）に基づいて前記データ構造のオブジェクトを探索し、前記第１の結果（Ｒ１）を位置付けるために、前記第１の結果識別子値（ＩＤ２）に基づいて前記データ構造のオブジェクトを探索するサブステップと、
（ｃ）サブステップ（ｂ）において前記第１の結果（Ｒ１）が見出された場合、前記第１の結果（Ｒ１）および前記第２の選択アイテム（Ｓ２）の関数として前記第２の選択識別子値（ＩＤ３）を計算し、前記第２の結果（Ｒ２）を位置付けるために、前記第２の選択識別子値（ＩＤ３）に基づき前記データ構造のオブジェクトを探索するサブステップと、
（ｄ）サブステップ（ｂ）において前記第１の結果識別子値（ＩＤ２）または前記第１の結果（Ｒ１）が見出されない場合、前記第１の主計算（Ｐ１）を実行して前記第１の結果（Ｒ１）を生成し、前記第１の結果（Ｒ１）および前記第２の選択アイテム（Ｓ２）の関数として前記第２の選択識別子値（ＩＤ３）を計算し、前記第２の結果（Ｒ２）を位置付けるために前記第２の選択識別子値（ＩＤ３）に基づき前記データ構造のオブジェクトを探索するサブステップと、
（ｅ）サブステップ（ｃ）または（ｄ）において前記第２の結果（Ｒ２）が見出されない場合、前記第２の主計算（Ｐ２）を実行して前記第２の結果（Ｒ２）を生成するサブステップとを含む、請求項３に記載の方法。
【請求項５】
前記第１の結果（Ｒ１）は、前記第２の選択識別子値（ＩＤ３）の計算において、前記第１の結果識別子値（ＩＤ２）によって表わされる、請求項３に記載の方法。
【請求項６】
前記第１の選択アイテム（Ｓ１）および前記第２の選択アイテム（Ｓ２）に基づき前記第２の結果（Ｒ２）を見出すために、前記データ構造を用いるステップをさらに含み、前記用いるステップは、
（ａ）少なくとも前記第１の選択アイテム（Ｓ１）の関数として前記第１の選択識別子値（ＩＤ１）を計算するサブステップと、
（ｂ）前記第１の結果識別子値（ＩＤ２）を位置付けるために、前記第１の選択識別子値（ＩＤ１）に基づき前記データ構造のオブジェクトを探索するサブステップと、
（ｃ）サブステップ（ｂ）において前記第１の結果識別子値（ＩＤ２）が見出された場合、前記第１の結果識別子値（ＩＤ２）および前記第２の選択アイテム（Ｓ２）の関数として前記第２の選択識別子値（ＩＤ３）を計算し、前記第２の結果（Ｒ２）を位置付けるために、前記第２の選択識別子値（ＩＤ３）に基づいて前記データ構造のオブジェクトを探索するサブステップと、
（ｄ）サブステップ（ｂ）において前記第１の結果識別子値（ＩＤ２）が見出されない場合、前記第１の主計算（Ｐ１）を実行して前記第１の結果（Ｒ１）を生成し、前記第１の結果（Ｒ１）の関数として前記第１の結果識別子値（ＩＤ２）を計算し、前記第１の結果識別子値（ＩＤ２）および前記第２の選択アイテム（Ｓ２）の関数として前記第２の選択識別子値（ＩＤ３）を計算し、前記第２の結果（Ｒ２）を位置付けるために、前記第２の選択識別子値（ＩＤ３）に基づいて前記データ構造のオブジェクトを探索するサブステップと、
（ｅ）サブステップ（ｃ）において前記第２の結果（Ｒ２）が見出されない場合、前記第１の結果（Ｒ１）を位置付けるために、前記第１の結果識別子値（ＩＤ２）に基づいて前記データ構造のオブジェクトを探索し、前記第２の主計算（Ｐ２）を実行して前記第２の結果（Ｒ２）を生成するサブステップと、
（ｆ）サブステップ（ｅ）において前記第１の結果（Ｒ１）が見出されない場合、前記第１の主計算（Ｐ１）を実行して前記第１の結果（Ｒ１）を生成し、前記第２の主計算（Ｐ２）を実行して前記第２の結果（Ｒ２）を生成するサブステップと、
（ｇ）サブステップ（ｄ）において前記第２の結果（Ｒ２）が見出されない場合、前記第２の主計算（Ｐ２）を実行して前記第２の結果（Ｒ２）を生成するサブステップとを含む、請求項５に記載の方法。
【請求項７】
前記第２の結果（Ｒ２）の関数として第２の結果識別子値（ＩＤ４）を計算するステップをさらに含み、前記格納するステップは、前記第２の選択識別子値（ＩＤ３）および前記第２の結果識別子値（ＩＤ４）を関連するオブジェクトとして前記データ構造に格納するステップと、前記第２の結果識別子値（ＩＤ４）および前記第２の結果（Ｒ２）を関連するオブジェクトとして前記データ構造に格納するステップとをさらに含む、請求項１、３または５に記載の方法。
【請求項８】
前記識別子値の各々は統計的に固有である、請求項１から７のいずれかに記載の方法。
【請求項９】
前記識別子値の各々は、ハッシュ関数によって生成されるデジタル指紋である、請求項１から８のいずれかに記載の方法。
【請求項１０】
前記デジタル指紋は少なくとも２５６ビットを含む、請求項９に記載の方法。
【請求項１１】
前記データ構造に前記関連するオブジェクトを含むデータ記録を、少なくとも前記データ記録のサイズに基づいて選択的に削除するステップをさらに含む、請求項１から１０のいずれかに記載の方法。
【請求項１２】
前記選択的に削除するステップは、前記第１の結果（Ｒ１）を含むデータ記録の削除を促進するよう構成される、請求項１１に記載の方法。
【請求項１３】
各々のデータ記録についての使用頻度パラメータ、各々のデータ記録についての計算時間パラメータ、および、各々のデータ記録についてのサイズパラメータの関数として計算される重み値と各々のデータ記録を関連付けるステップをさらに含む、請求項１１または１２に記載の方法。
【請求項１４】
前記重み値は、Ｗ＝Ｕ＊Ｔ／Ｍによって与えられる重み関数を評価することによって計算され、Ｕは使用頻度パラメータであり、Ｔは計算時間パラメータであり、Ｍはサイズパラメータである、請求項１３に記載の方法。
【請求項１５】
前記使用頻度パラメータの値は、データ記録がアクセスされるたびに増分される一方で、時間の関数として指数関数的に低減される、請求項１３または１４に記載の方法。
【請求項１６】
前記選択的に削除するステップは、前記データ構造における前記データ記録の重み値に基づいている、請求項１３から１５のいずれかに記載の方法。
【請求項１７】
前記選択的に削除するステップは、前記データ構造の現在のサイズとしきい値との比較に基づいてトリガされる、請求項１１から１６のいずれかに記載の方法。
【請求項１８】
前記データベースは動的データベースであり、前記第１の選択識別子値（ＩＤ１）は、少なくとも前記第１の選択アイテム（Ｓ１）および前記データセット（Ｒ０）の関数として計算される、請求項１から１７のいずれかに記載の方法。
【請求項１９】
前記情報は、前記データベースにおけるデータのグループ分け、ソートまたは集合を含む、請求項１から１８のいずれかに記載の方法。
【請求項２０】
前記第１の選択アイテム（Ｓ１）は、前記データセット（Ｒ０）における一組のフィールドと、各フィールドについての条件とを規定し、前記第１の結果（Ｒ１）は前記データセット（Ｒ０）のサブセットを表わし、前記第２の選択アイテム（Ｓ２）は数学的関数と
、前記第１の結果（Ｒ１）に含まれる１つ以上の計算変数と、前記第１の結果（Ｒ１）に含まれる１つ以上の分類変数とを規定し、前記第２の結果（Ｒ２）は、各々の分類変数のすべての固有値についての前記１つ以上の計算変数に関して数学的関数を演算した結果を含む多次元キューブデータ構造である、請求項１から１９のいずれかに記載の方法。
【請求項２１】
コンピュータプログラムが格納されたコンピュータ読取可能媒体であって、前記コンピュータプログラムは、コンピュータによって実行されると、請求項１から２０のいずれかに記載の方法を実行するよう適合されている、コンピュータ読取可能媒体。
【請求項２２】
データベースから情報を抽出するための装置であって、前記装置は、前記データベースを表わすデータセット（Ｒ０）に関して第１の選択アイテム（Ｓ１）を演算して第１の結果（Ｒ１）を生成する第１の主計算（Ｐ１）と、前記第１の結果（Ｒ１）に関して第２の選択アイテム（Ｓ２）を演算して第２の結果（Ｒ２）を生成する第２の主計算（Ｐ２）とを含む連続した一連の主計算を実行するための手段を含み、前記装置はさらに、
少なくとも前記第１の選択アイテム（Ｓ１）の関数として第１の選択識別子値（ＩＤ１）と、少なくとも前記第２の選択アイテム（Ｓ２）および前記第１の結果（Ｒ１）の関数として第２の選択識別子値（ＩＤ３）とを計算し、
前記第１の選択識別子値（ＩＤ１）および前記第１の結果（Ｒ１）ならびに前記第２の選択識別子値（ＩＤ３）および前記第２の結果（Ｒ２）をそれぞれ関連するオブジェクトとしてデータ構造に格納することにより、前記第１および第２の結果（Ｒ１，Ｒ２）をキャッシュするための手段を含む、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願との相互参照
本願は、２００８年７月１８日付提出のスウェーデン特許出願番号第０８０１７０８−９号および２００８年７月１８日付提出の米国仮出願番号第６１／０８１，７６１号の権利を主張し、そのすべてをここに引用によって援用する。
【０００２】
技術分野
本発明は、データベースから情報を抽出するための技術に関し、特にデータベースを表わすデータセットに関して第１の選択アイテムを演算して第１の結果を生成する第１の主計算と、第１の結果に関して第２の選択アイテムを演算して第２の結果を生成する第２の主計算とを含む連続した一連の主計算を伴う技術に関する。
【背景技術】
【０００３】
背景技術
データベースから特定の情報を抽出すること、具体的には、データベース中の大量のデータを集約し、集約されたデータをユーザにわかりやすいやり方で提示することが望まれる場合がよくある。このようなデータ処理は通常はコンピュータによって実行され、有効なメモリ能力およびコンピュータの処理能力を必要とし得る。データ処理は、多次元キューブ（ｍｕｌｔｉｄｉｍｅｎｓｉｏｎａｌ  ｃｕｂｅ）として一般に知られる大きなデータ構造を作成することを意図し得る。たとえば、選択されたデータをピボットテーブルでまたは図式的に二次元チャートおよび三次元チャートで視覚化することによって、ユーザは多次元キューブにアクセスし、データベース中のデータを探索することができる。このような多次元キューブを作成するための効率的なアルゴリズムの一例が米国特許番号第７０５８６２１号から公知であり、ここに引用によって援用する。
【０００４】
この先行技術のアルゴリズムは、データベース中のデータについて演算する他の多くのアルゴリズムのように連続した一連の主計算を伴い、１回の主計算の結果が次の主計算によって入力データとして使用される。たとえば、米国特許第７０５８６２１号においては、データベース中のデータ記録が一次メモリに読込まれ、ユーザは１つ以上の変数と、任意にそのような各変数の値または値の範囲とを選択し、それによってデータベース中のデータ記録の対応するサブセットをアルゴリズムに抽出させ得る。抽出されたサブセットは中間結果を構成する。多次元キューブは、抽出されたサブセットについて選択された数学的関数を評価することによって計算される。数学的関数の評価は、選択された１組の計算変数に基づいて行なわれ、キューブの寸法は、選択された１組の分類変数によって与えられる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許番号第７０５８６２１号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
先行技術のアルゴリズムは効率的ではあるが、大量のデータを分析しなければならない場合は特に、多次元キューブを作成するのに多数の演算を実行する必要があり得る。このような状況では、アルゴリズムは望ましくない高い要件を処理ハードウェアに課し、および／または望ましくない長い計算時間を引き起こし得る。
【０００７】
概要
本発明の目的は、上に記載された先行技術の限定のうち１つ以上を少なくとも部分的に克服することである。
【０００８】
以下の記載から明らかとなるであろうこの目的および他の目的は、独立クレームに記載の方法、コンピュータ読取り可能媒体および装置によって少なくとも部分的に達成されるものであり、それら方法、コンピュータ読取り可能媒体および装置の実施例は、従属クレームによって規定されている。
【課題を解決するための手段】
【０００９】
この発明の第１の局面は、データベースから情報を抽出するための、コンピュータによって実現される方法である。当該方法は、データベースを表わすデータセットに関して第１の選択アイテムを演算して第１の結果を生成する第１の主計算と、第１の結果に関して第２の選択アイテムを演算して第２の結果を生成する第２の主計算とを含む連続した一連の主計算を含む。当該方法はさらに、少なくとも第１の選択アイテムの関数として第１の選択識別子値と、少なくとも第２の選択アイテムおよび第１の結果の関数として第２の選択識別子値とを計算し、第１の選択識別子値および第１の結果ならびに第２の選択識別子値および第２の結果をそれぞれ関連するオブジェクトとしてデータ構造に格納することにより、第１および第２の結果をキャッシュするステップを含む。
【００１０】
こうして、第１の局面に従った方法においては、第１および第２の結果は、コンピュータメモリにおいてキャッシュされ、当該方法の次の繰返しの際に再利用できるよう利用可能にされ、これにより、情報を抽出するために第１および／または第２の主計算を実行する必要性を低減させる。再利用する際には、後続の繰返しの間に第１および／または第２の選択識別子値を計算し、データ構造にアクセスして、場合によっては第１および／または第２の結果を検索するステップが含まれ得る。
【００１１】
一実施例においては、当該方法はさらに、第１の選択アイテムおよび第２の選択アイテムに基づき第２の結果を見出すために、データ構造を用いるステップを含み、当該用いるステップは、（ａ）第１の選択識別子値を少なくとも第１の選択アイテムの関数として計算するサブステップと、（ｂ）第１の結果を位置付けるために、第１の選択識別子値に基づいてデータ構造のオブジェクトを探索するサブステップと、（ｃ）サブステップ（ｂ）において第１の結果が見出された場合、第１の結果および第２の選択アイテムの関数として第２の選択識別子値を計算し、第２の結果を位置付けるために、第２の選択識別子値に基づいてデータ構造のオブジェクトを探索するサブステップと、（ｄ）サブステップ（ｂ）において第１の結果が見出されない場合、第１の主計算を実行して第１の結果を生成し、第１の結果および第２の選択アイテムの関数として第２の選択識別子値を計算し、第２の結果を位置付けるために、第２の選択識別子値に基づいてデータ構造のオブジェクトを探索するサブステップと、（ｅ）サブステップ（ｃ）または（ｄ）において第２の結果が見出されない場合、第２の主計算を実行して第２の結果を生成するサブステップとを含む。
【００１２】
一実施例においては、当該方法は、第１の結果識別子値を第１の結果の関数として計算するステップをさらに含み、格納するステップは、第１の選択識別子値および第１の結果識別子値を関連するオブジェクトとしてデータ構造に格納するステップと、第１の結果識別子値および第１の結果を関連するオブジェクトとしてデータ構造に格納するステップとをさらに含む。
【００１３】
一実施例においては、当該方法は、第１の選択アイテムおよび第２の選択アイテムに基
づき第２の結果を見出すために、データ構造を用いるステップをさらに含み、当該用いるステップは、（ａ）少なくとも第１の選択アイテムの関数として第１の選択識別子値を計算するサブステップと、（ｂ）第１の結果識別子値を位置付けるために、第１の選択識別子値に基づいてデータ構造のオブジェクトを探索し、第１の結果を位置付けるために、第１の結果識別子値に基づいてデータ構造のオブジェクトを探索するサブステップと、（ｃ）サブステップ（ｂ）において第１の結果が見出された場合、第１の結果および第２の選択アイテムの関数として第２の選択識別子値を計算し、第２の結果を位置付けるために、第２の選択識別子値に基づきデータ構造のオブジェクトを探索するサブステップと、（ｄ）サブステップ（ｂ）において第１の結果識別子値または第１の結果が見出されない場合、第１の主計算を実行して第１の結果を生成し、第１の結果および第２の選択アイテムの関数として第２の選択識別子値を計算し、第２の結果を位置付けるために第２の選択識別子値に基づきデータ構造のオブジェクトを探索するサブステップと、（ｅ）サブステップ（ｃ）または（ｄ）において第２の結果が見出されない場合、第２の主計算を実行して第２の結果を生成するサブステップとを含む。
【００１４】
一実施例においては、第１の結果は、第２の選択識別子値の計算において、第１の結果識別子値によって表わされる。
【００１５】
一実施例においては、当該方法は、第１の選択アイテムおよび第２の選択アイテムに基づき第２の結果を見出すために、データ構造を用いるステップをさらに含み、当該用いるステップは、（ａ）少なくとも第１の選択アイテムの関数として第１の選択識別子値を計算するサブステップと、（ｂ）第１の結果識別子値を位置付けるために、第１の選択識別子値に基づきデータ構造のオブジェクトを探索するサブステップと、（ｃ）サブステップ（ｂ）において第１の結果識別子値が見出された場合、第１の結果識別子値および第２の選択アイテムの関数として第２の選択識別子値を計算し、第２の結果を位置付けるために、第２の選択識別子値に基づいてデータ構造のオブジェクトを探索するサブステップと、（ｄ）サブステップ（ｂ）において第１の結果識別子値が見出されない場合、第１の主計算を実行して第１の結果を生成し、第１の結果の関数として第１の結果識別子値を計算し、第１の結果識別子値および第２の選択アイテムの関数として第２の選択識別子値を計算し、第２の結果を位置付けるために、第２の選択識別子値に基づいてデータ構造のオブジェクトを探索するサブステップと、（ｅ）サブステップ（ｃ）において第２の結果が見出されない場合、第１の結果を位置付けるために、第１の結果識別子値に基づいてデータ構造のオブジェクトを探索し、第２の主計算を実行して第２の結果を生成するサブステップと、（ｆ）サブステップ（ｅ）において第１の結果が見出されない場合、第１の主計算を実行して第１の結果を生成し、第２の主計算を実行して第２の結果を生成するサブステップと、（ｇ）サブステップ（ｄ）において第２の結果が見出されない場合、第２の主計算を実行して第２の結果を生成するサブステップとを含む。
【００１６】
一実施例においては、当該方法は、第２の結果の関数として第２の結果識別子値を計算するステップをさらに含み、格納するステップは、第２の選択識別子値および第２の結果識別子値を関連するオブジェクトとしてデータ構造に格納するステップと、第２の結果識別子値および第２の結果を関連するオブジェクトとしてデータ構造に格納するステップとをさらに含む。
【００１７】
一実施例においては、識別子値の各々は統計的に固有である。
一実施例においては、識別子値の各々は、ハッシュ関数によって生成されるデジタル指紋である。たとえば、デジタル指紋は少なくとも２５６ビットを含み得る。
【００１８】
一実施例においては、当該方法はさらに、データ構造に関連するオブジェクトを含むデータ記録を、少なくともデータ記録のサイズに基づいて選択的に削除するステップを含む
。選択的に削除するステップは、当該第１の結果を含むデータ記録の削除を促進するよう構成され得る。このような一実施例においては、当該方法は、各々のデータ記録についての使用頻度パラメータ、各々のデータ記録についての計算時間パラメータ、および、各々のデータ記録についてのサイズパラメータの関数として計算される重み値と各々のデータ記録を関連付けるステップを含む。重み値は、Ｗ＝Ｕ＊Ｔ／Ｍによって与えられる重み関数を評価することによって計算され得る。Ｕは使用頻度パラメータであり、Ｔは計算時間パラメータであり、Ｍはサイズパラメータである。使用頻度パラメータの値は、データ記録がアクセスされるたびに増分され得る一方で、時間の関数として指数関数的に低減され得る。選択的に削除するステップは、データ構造におけるデータ記録の重み値に基づき得る。さらに、選択的に削除するステップは、データ構造の現在のサイズとしきい値との比較に基づいてトリガされ得る。
【００１９】
一実施例においては、データベースは動的データベースであり、第１の選択識別子値は、少なくとも第１の選択アイテムおよびデータセットの関数として計算される。
【００２０】
一実施例においては、第１の選択アイテムは、データセットにおける一組のフィールドと、各フィールドについての条件とを規定し、第１の結果はデータセットのサブセットを表わし、第２の選択アイテムは、数学的関数と、第１の結果に含まれる１つ以上の計算変数と、第１の結果に含まれる１つ以上の分類変数とを規定し、第２の結果は、各々の分類変数のすべての固有値についての当該１つ以上の計算変数に関して数学的関数を演算した結果を含む多次元キューブデータ構造である。
【００２１】
この発明の第２の局面は、コンピュータプログラムが格納されたコンピュータ読取可能媒体であって、当該コンピュータプログラムは、コンピュータによって実行されると、第１の局面に記載の方法を実行するよう適合される。
【００２２】
この発明の第３の局面は、データベースから情報を抽出するための装置であって、当該装置は、データベースを表わすデータセットに関して第１の選択アイテムを演算して第１の結果を生成する第１の主計算と、第１の結果に関して第２の選択アイテムを演算して第２の結果を生成する第２の主計算とを含む連続した一連の主計算を実行するための手段を含み、当該装置はさらに、少なくとも第１の選択アイテムの関数として第１の選択識別子値と、少なくとも第２の選択アイテムおよび第１の結果の関数として第２の選択識別子値とを計算し、第１の選択識別子値および第１の結果ならびに第２の選択識別子値および第２の結果をそれぞれ関連するオブジェクトとしてデータ構造に格納することにより、第１および第２の結果をキャッシュするための手段を含む。
【００２３】
第３の局面の装置は、第１の局面の方法の利点を共有し、第１の局面に関連付けて上述された実施例のうちのいずれかに対応するさらに他の特徴を含み得る。
【００２４】
この発明のさらに他の目的、特徴、局面および利点は、以下の詳細な説明、添付の特許請求の範囲および図面から明らかになるだろう。
【００２５】
本発明の実施形態を、添付の概略図を参照してより詳細に説明する。同じ参照符号は、対応する要素を識別するのに用いられる。
【図面の簡単な説明】
【００２６】
【図１】データベースから情報を抽出するための一連の計算を含むプロセスを示し、識別子および結果が選択的にコンピュータメモリに格納され、かつコンピュータメモリから取出される図である。
【図２】図１のプロセスの一実施形態を示す図である。
【図３】図１のプロセスの別の実施形態を示す図である。
【図４】図１のプロセスのさらに別の実施形態を示す図である。
【図５】図１のプロセスのさらに別の実施形態を示す図である。
【図６】図５のプロセスについての例示的なフローチャートである。
【図７】具体的な内容で実現化された図５のプロセスの全体図である。
【図８】本発明の実施形態を実現化するためのコンピュータベース環境のブロック図である。
【発明を実施するための形態】
【００２７】
例示的な実施形態の詳細な説明
本発明は、データベースから情報を抽出するための技術に関する。理解を容易にするため、いくつかの基本的な原理を一般化した例に関してまず説明する。その後、さまざまな局面、特徴および利点を具体的な実現例に関して説明する。
【００２８】
概論
図１は、データベースＤＢから情報を抽出するための、コンピュータによって実現化されるプロセスの一例を示す。データベースＤＢは、当該プロセスを実現化するコンピュータの外部に格納されていても、格納されていなくてもよい。抽出プロセスは、たとえば最初のデータセットＲ０をコンピュータの一次メモリ（たとえばＲＡＭ）に読込むことによって、データベースＤＢから最初のデータセットまたは範囲Ｒ０を抽出することを含む。最初のデータセットＲ０は、データベースＤＢの全内容またはそのサブセットを含み得る。
【００２９】
図１のプロセスは、最初のデータセットＲ０に基づいて最終結果Ｒ２を生成するように演算する連続した主計算手順Ｐ１およびＰ２を含む。具体的には、第１の手順Ｐ１は最初のデータセットＲ０に関して演算し、中間結果Ｒ１を生成する。第２の手順Ｐ２は中間結果に関して演算し、最終結果Ｒ２を生成する。
【００３０】
第１の手順Ｐ１は第１の選択アイテムＳ１によって制御される。第１の選択アイテムＳ１はユーザ入力に起因してもしなくてもよい。同様に、第２の手順Ｐ２は第２の選択アイテムＳ２によって制御される。第２の選択アイテムＳ２はユーザ入力に起因してもしなくてもよい。各選択アイテムＳ１およびＳ２は、それぞれの手順への入力データ、すなわちデータセットＲ０および中間結果Ｒ１それぞれの細分を定義する変数および／または数学的関数のどのような組合せであってもよい。
【００３１】
図１は、第１の手順Ｐ１および第２の手順Ｐ２がコンピュータメモリ１０（典型的にはＲＡＭまたはキャッシュメモリ）にデータアイテムを格納しかつコンピュータメモリ１０からデータアイテムを取出すように動作することによって、抽出プロセスがコンピュータメモリ１０と対話することも示す。図示の例において、第１の手順Ｐ１は、一般にＩＤと表記される識別子および中間結果Ｒ１を格納しかつ取出すように動作し、第２の手順Ｐ２は、一般にＩＤと表記される識別子、中間結果Ｒ１および最終結果Ｒ２を格納しかつ取出すように動作する。以下では、識別子および結果をコンピュータメモリ１０に格納する手順を「キャッシュ」とも称する。
【００３２】
１つ以上の処理パラメータ、たとえば他の識別子および／または選択アイテムＳ１、Ｓ２および／または結果Ｒ１、Ｒ２の関数として、異なる識別子が手順Ｐ１およびＰ２によって典型的に生成される。異なる識別子を生成するには、異なる関数を使用してもしなくてもよい。識別子を生成するための関数は、関連するプロセスパラメータのデジタル指紋を生成するハッシングアルゴリズムであり得る。関数は、パラメータ値の各固有の組合せが、プロセスにおいてすべての異なる識別子について生成されるすべての識別子値の中で
固有な識別子値となるように適切に構成される。この場合、「固有の」とは理論的に固有の識別子値だけでなく、統計的に固有の識別子値も含む。限定はしないが、このような関数の一例は、少なくとも２５６ビットのデジタル指紋を生成するハッシングアルゴリズムである。
【００３３】
さらに図２に示す一実施形態においては、第１の手順Ｐ１は、第１の選択アイテムＳ１の関数すなわちＩＤ１＝ｆ（Ｓ１）として第１の選択識別子値ＩＤ１を計算するように構成される。第２の手順Ｐ２は、第２の選択アイテムＳ２および中間結果Ｒ１の関数すなわちＩＤ３＝ｆ（Ｓ２，Ｒ１）として第２の選択識別子値ＩＤ３を計算するように構成される。第１の手順Ｐ１は、ＩＤ１および中間結果Ｒ１を関連付けられたオブジェクトとしてコンピュータメモリのデータ構造１２に格納するようにも構成される。第２の手順Ｐ２は、ＩＤ３およびＲ２を関連付けられたオブジェクトとしてデータ構造１２に格納するように構成される。したがって、コンピュータメモリ１０のデータ構造１２は、異種のオブジェクトの組、すなわち異なる種類のオブジェクトを格納するように構成される。
【００３４】
本実施形態は、中間結果Ｒ１および最終結果Ｒ２をそれぞれ計算するための主計算手順Ｐ１およびＰ２を実行する必要性を低下させることによって、抽出プロセスの応答時間の短縮、および／または抽出プロセスを実現化するコンピュータの処理要件の低減を可能にする。たとえば、抽出プロセスは、可能な限りデータ構造１２を使用して、第１の選択アイテムＳ１と第２の選択アイテムＳ２とに基づいて最終結果Ｒ２を求めるように構成され得る。したがってプロセスは、Ｓ１およびＳ２に基づいて最終結果Ｒ２を計算する必要性を認めるとＩＤ１＝ｆ（Ｓ１）を生成し、ＩＤ１に基づいてデータ構造１２にアクセスし得る。同一の第１の選択アイテムＳ１が以前に第１の手順Ｐ１で使用されたことがあれば、生成されたＩＤ１の値がデータ構造１２において発見され、対応する中間結果Ｒ１に関連付けられやすい。したがって、中間結果Ｒ１は、手順Ｐ１によって計算される代わりにデータ構造１２から取出され得る。中間結果Ｒ１がデータ構造１２において発見されなければ、プロセスは第１の手順Ｐ１に中間結果Ｒ１を計算させ得る。さらに、中間結果Ｒ１の取得後、プロセスはＩＤ３＝ｆ（Ｒ１，Ｓ２）を生成し、ＩＤ３に基づいてデータ構造１２にアクセスし得る。同じ演算が手順Ｐ２によって以前に実行されたことがあれば、生成されたＩＤ３の値がデータ構造１２において発見され、対応する最終結果Ｒ２に関連付けられやすい。これにより、最終結果Ｒ２は、手順Ｐ２によって計算される代わりにデータ構造１２から取出され得る。
【００３５】
さらに図３に示す一実施形態において、第１の手順Ｐ１は、第１の結果識別子値ＩＤ２を中間結果Ｒ１の関数として計算するようにさらに構成される。第１の手順Ｐ１は、ＩＤ１およびＩＤ２を関連付けられたオブジェクトとしてデータ構造１２に格納し、ＩＤ２および中間結果Ｒ１を関連付けられたオブジェクトとしてデータ構造１２に格納するようにも構成される。
【００３６】
本実施形態によれば、２つ以上の第１の選択アイテムＳ１が同一の中間結果Ｒ１をもたらすとしても、各中間結果Ｒ１はデータ構造１２に一度格納されるだけであるため、プロセスが必要とするコンピュータメモリのサイズを縮小することが可能となる。本実施形態は中間結果Ｒ１が大きい場合に特に関連し、これはデータベースからの情報を処理する場合によくあるケースである。
【００３７】
第１の結果識別子値ＩＤ２の計算によって、図４に示すさらに他の実施形態も可能となる。中間結果Ｒ１は、第２の選択識別子値ＩＤ３の計算すなわちＩＤ３＝ｆ（ＩＤ２，Ｓ２）において、第１の結果識別子値ＩＤ２によって表わされる。
【００３８】
本実施形態によれば、中間結果Ｒ１ではなく、ＩＤ２に基づいて生成されるＩＤ３に基
づいてデータ構造１２から最終結果Ｒ２を取出すことができるため、中間結果Ｒ１をデータ構造１２に格納する必要性が低下する。これにより、中間結果Ｒ１がデータ構造１２からパージされていても、最終結果Ｒ２の効率的な計算が可能となる。たとえば、プロセスは、可能な限りデータ構造１２を使用して、第１の選択アイテムＳ１および第２の選択アイテムＳ２に基づいて最終結果Ｒ２を発見するように構成され得る。したがってプロセスは、Ｓ１およびＳ２に基づいて最終結果Ｒ２を計算する必要性を認めるとＩＤ１＝ｆ（Ｓ１）を生成し、同一の第１の選択アイテムＳ１が以前に第１の手順Ｐ１で使用されたことがあれば、ＩＤ１に基づいてデータ構造１２にアクセスして、それに関連付けられたＩＤ２を取出し得る。次にプロセスはＩＤ３＝ｆ（ＩＤ２，Ｓ２）を生成し、第２の手順Ｐ２が以前に同一の中間結果Ｒ１および同一の第２の選択アイテムＳ２に関して演算したことがあれば、ＩＤ３に基づいてデータ構造１２にアクセスして、それに関連付けられた最終結果Ｒ２を取出し得る。したがってこの例では、中間結果Ｒ１が削除されていても、データ構造１２から最終結果Ｒ２を取出すことができる。
【００３９】
図５に示す一実施形態においては、第１の手順Ｐ１は、第２の結果識別子値ＩＤ４を最終結果Ｒ２の関数として計算するようにさらに構成される。第２の手順Ｐ２は、ＩＤ３およびＩＤ４を関連付けられたオブジェクトとしてデータ構造１２に格納し、ＩＤ４および最終結果Ｒ２を関連付けられたオブジェクトとしてデータ構造１２に格納するようにも構成される。
【００４０】
本実施形態は、２つ以上の第２の選択アイテムＳ２が同一の最終結果Ｒ２をもたらすとしても各最終結果Ｒ２はデータ構造１２に一度格納されるだけであるため、プロセスが必要とするコンピュータメモリのサイズを縮小することが可能となる。本実施形態は、最終結果Ｒ２が大きい場合に特に関連する。
【００４１】
これまで、データベースＤＢおよびしたがってデータセットＲ０を静的なものと見なしてきた。データベースが動的ならば、第１の選択識別子ＩＤ１を第１の選択アイテムＳ１およびデータセットＲ０の関数すなわちＩＤ１＝ｆ（Ｓ１，Ｒ０）として生成するのが適切な場合があり得る。このような変形例によれば、図１から図５に関して説明したすべての実施形態は、動的なデータベースすなわちいつでも変化し得るデータベースに等しく適用可能である。
【００４２】
図６は、動的なデータベースに関して機能するように適合化された図５の実施形態の例示的な一実現例を示すフローチャートである。プロセスは、データセットＲ０（ステップ６００）の入力、第１の選択アイテムＳ１（ステップ６０２）の入力、および第２の選択アイテムＳ２（６０４）の入力によって開始する。次に、第１の選択識別子ＩＤ１の値がＳ１およびＲ０の関数として生成される（ステップ６０６）。ＩＤ１に基づいてデータ構造において参照が行なわれる（ステップ６０８）。ＩＤ１の値がデータ構造において発見されれば、すなわち前回キャッシュされていれば、プロセスはそれに関連付けられた第１の結果識別子ＩＤ２の値を取出し（ステップＳ６１０）、ステップ６１２に進む。
【００４３】
ステップ６０８でＩＤ１の値がデータ構造において発見されなければ、プロセスは、Ｒ０に関してＳ１を演算することによって第１の手順Ｐ１にＲ１を計算させる（ステップ６１４）。次に、ＩＤ２の値がＲ１の関数として生成され（ステップ６１６）、ＩＤ１、ＩＤ２およびＲ１の値が、関連付けられたＩＤ１：ＩＤ２およびＩＤ２：Ｒ１の対でデータ構造に格納される（ステップ６１８）。次にプロセスはステップ６１２に進む。
【００４４】
ステップ６１２において、第２の選択識別子ＩＤ３の値がＳ２およびＩＤ２の関数として生成される。次に、ＩＤ３に基づいてデータ構造において参照が行なわれる（ステップ６２０）。ＩＤ３の値がデータ構造において発見されれば、すなわち前回キャッシュされ
ていれば、プロセスはそれに関連付けられた第２の結果識別子ＩＤ４の値を取出す（ステップ６２２）。ＩＤ４に基づいてデータ構造においてさらに他の参照が行なわれる（ステップ６２４）。ＩＤ４の値がデータ構造において発見されれば、すなわち前回キャッシュされていれば、プロセスはそれに関連付けられた最終結果Ｒ２を取出す（ステップ６２６）。
【００４５】
ステップ６２０でＩＤ３の値がデータ構造において発見されなければ、ステップ６１０またはステップ６１６で決定されたＩＤ２の値に基づいてさらに他の照合がデータ構造において行なわれる（ステップ６２８）。ＩＤ２の値がデータ構造において発見されれば、すなわち前回キャッシュされていれば、プロセスはそれに関連付けられた第１の結果Ｒ１を取出す（ステップ６３０）。プロセスは次に、Ｒ１に関してＳ２を演算することによって、第２の手順Ｐ２にＲ２を計算させる（ステップ６３２）。データ構造を更新するために、プロセスはＩＤ４の値をＲ２の関数として生成し（ステップ６３４）、ＩＤ３、ＩＤ４およびＲ２の値を、関連付けられたＩＤ３：ＩＤ４およびＩＤ４：Ｒ２の対でデータ構造に格納する（ステップ６３６）。
【００４６】
ステップ６２８でＩＤ２の値がデータ構造において発見されなければ、プロセスはＲ０に関してＳ１を演算することによって、第１の手順Ｐ１にＲ１を計算させ（ステップ６３８）、ＩＤ２およびＲ１の値を、関連付けられたＩＤ２：Ｒ１の対でデータ構造に格納する（ステップ６４０）。次にプロセスはステップ６３２に進む。しかし、中間結果Ｒ１が既にステップ６１４で計算された場合は、ステップ６２８、６３０、６３８および６４０を実行することは不要であると認識すべきである。このような場合、ステップ６２０でＩＤ３が発見されなければプロセスは直接ステップ６３２に進み、Ｒ１に関してＳ２を演算することによって、第２の手順Ｐ２にＲ２を計算させる。
【００４７】
ステップ６２２でＩＤ４の値がデータ構造において発見されなければ、プロセスはＲ１に関してＳ２を演算することによって、第２の手順Ｐ２にＲ２を計算させる（ステップ６４２）。データ構造を更新するためには、プロセスはＩＤ４の値をＲ２の関数として生成し（ステップ６４４）、ＩＤ４およびＲ２の値を関連付けられたＩＤ４：Ｒ２の対でデータ構造に格納する（ステップ６４６）。
【００４８】
異なる組合せの識別子を使用していても、図２から図４の実施形態が対応する格納および取出しプロセスをもたらすことを当業者は容易に理解する。表示を簡潔にするため、これらのプロセスはフローチャートには図示せず、上記の概要部分において単に例示的な実施形態として示す。
【００４９】
識別子および結果を格納するために、線形または非線形のいずれのデータ構造１２を使用してもよいと理解される。しかし、処理速度の理由から、たとえばソートされたリストなどの効率的な索引システム、ハッシュテーブル、または、たとえば、ＡＶＬツリーなどの二値ツリーとともにデータ構造１２を使用することが好ましい場合がある。
【００５０】
特定の実施形態、実現例および実施例
以下において、本発明の実施形態をさらに詳細に説明し例示する。
【００５１】
本発明の実施形態では、新たなデータおよび新たな計算に関する連続したリクエストの処理において、前回の計算および結果が使用される。このため、抽出プロセスは、データリクエストの処理中に結果をキャッシュするように設計される。次のリクエストが処理される際、抽出プロセスは、適切な前回の結果が既に生成されかつキャッシュされているかどうかを判断する。そうであれば、前回の結果が次のリクエストの処理に使用される。前回の計算を再度生成する必要がないため、次のリクエストの処理時間が大幅に短縮され得
る。
【００５２】
本発明の実施形態では、キャッシュされた情報を識別するのにデジタル識別子（デジタル指紋）が使用され、前回の計算とは異なる方法で得られたときにも、キャッシュされた結果は、この方法で再利用され得る。
【００５３】
本発明の実施形態では、デジタル識別子自体がキャッシュに格納される。具体的には、計算手順への入力の識別子が、計算手順の出力のデジタル識別子とともに格納される。したがって、必要とされる複合的な中間結果がキャッシュからパージされているときにも、多段階演算の最終結果を得ることができる。中間結果のデジタル識別子のみが必要とされる。
【００５４】
本発明の実施形態では、キャッシュは、テーブル、データサブセット、アレイおよびデジタル識別子などの異種のオブジェクトを格納することができるデータ構造によって実現化される。
【００５５】
したがって本発明の実施形態は、同じまたは別のユーザによって最近実行されたクエリを用いてデータの格納を問合せるユーザに対する応答時間を最小化または少なくとも短縮するように機能し得る。
【００５６】
本発明の実施形態は、２つのクエリまたは計算が同じ結果をもたらす場合、同じキャッシュエントリをいくつかの異なるクエリまたは計算に再利用することによって、キャッシュによるメモリ使用頻度を最小化または少なくとも減少させるようにも機能し得る。
【００５７】
本発明の実施形態は、関係型データベース、事後関係型データベース、オブジェクト指向データベース、階層型データベースなどのいずれの種類の公知のデータベースからいずれの種類の情報を抽出するのにも適用可能である。インターネットも、本発明の文脈におけるデータベースと考えられ得る。
【００５８】
図７は本発明の特定の実施形態を開示しており、クエリ結果に基づく次のチャート計算にデータベースクエリを関与させる抽出プロセスまたは情報探索である。チャート結果と表記されるチャート計算の結果は、典型的には、背景技術で説明した多次元キューブの形態などの一次元、二次元もしくは多次元に集計された、ソートされた、またはグループ分けされたデータである。
【００５９】
第１のステップにおいて、情報探索の範囲が定義される。データベースクエリの場合、範囲は、ＳＥＬＥＣＴ文（または同等物）に含まれるテーブルと、これらのテーブルがどのように結合されているかとによって定義される。インターネット探索の場合、範囲は、発見されたウェブページの索引であり得、通常は１つ以上のテーブルとしても編成される。したがって、第１のステップの出力はデータセットである（図１から図６のＲ０参照）。
【００６０】
第２のステップにおいて、ユーザはデータセットにおいて選択を行ない、データセットについて多数のフィルタを推論エンジンに評価させる。推論エンジンは、たとえばデータベースエンジン、クエリツールまたはビジネス知能ツールであり得る。これはたとえば、注文を出されたデータを保持するデータベースについてのクエリにおいて、発注年が「２００７」であることおよび製品グループが「乳製品」であることを要求することであり得る。したがって選択は、含まれるフィールドのリストと、各フィールドについて、選択された値のリストすなわちより一般的には状態とによって固有に定義され得る。
【００６１】
選択（図１から図６のＳ１参照）に基づいて、推論エンジンは計算手順（図１から図６のＰ１参照）を実行し、範囲の一部（図１から図６のＲ０参照）を表わすデータサブセット（図１から図６のＲ１参照）を生成する。したがってデータサブセットは、当該範囲からの１組の関連データ記録、またはこれらの関連データ記録への参照リスト（たとえば索引、ポインタまたは二値数）を含み得る。上記の例では、関連データ記録は、年度「２００７」と製品グループ「乳製品」とに属するデータ記録のみである。
【００６２】
以前に選択が行なわれていない場合は、図７の推論エンジンは、データサブセットを計算するように作動される。しかし、以前に計算が行われたことがあれば、推論エンジンは、特定のデータ構造「キャッシュ」にアクセスすることによって前回の結果を再利用するように作動される。
【００６３】
次のステップは、データサブセットに基づいて何らかのさらに他の計算、たとえば集計および／またはソートおよび／またはグループ分けを行なうことである場合が多い。図７の例では、これらの次の計算は、データサブセットおよび選択された１組のチャート特性（図１から図６のＳ２参照）に基づいてチャート結果を計算するチャートエンジンによって行なわれる。したがってチャートエンジンは、チャート計算手順（図１から図６のＰ２）を実行して、チャート結果（図１から図６のＲ２参照）を生成する。これらの計算が以前に行なわれたことがなければ、図７のチャートエンジンはチャート結果を生成するように作動される。しかし、これらの計算が以前に行われたことがあれば、チャートエンジンは、上記のキャッシュにアクセスすることによって前回の結果を再利用するように作動される。チャート結果は、ピボットテーブルで、または図式的に二次元チャートおよび三次元チャートでユーザに対して視覚化され得る。
【００６４】
図７はキャッシュを使用するプロセスも示し、ｆはデジタル識別子を生成するように演算されるハッシングアルゴリズムを表わし、ＩＤ１からＩＤ４はそのようにして生成されたデジタル識別子を表わし、実線の矢印は識別子ＩＤ１からＩＤ４を生成するためのデータの流れを表わす。さらに図７において、破線の矢印はキャッシュの参照を表わす。
【００６５】
図７において、ユーザが新たな選択を行なうと、推論エンジンはデータサブセットを計算する。また、範囲とともに選択するための識別子ＩＤ１が当該選択および当該範囲におけるフィルタに基づいて生成される。その後、データサブセットの識別子ＩＤ２が、データサブセット定義、典型的にはデータサブセットの内容を定義するビットシーケンスに基づいて生成される。最後に、ＩＤ１を参照識別子として用いて、ＩＤ２がキャッシュに入力される。同様に、ＩＤ２を参照識別子として用いて、データサブセット定義がキャッシュに入力される。
【００６６】
図７において、チャート計算が同様に行なわれる。ここでは、２つの情報セット、データサブセットおよび関連のチャート特性が存在する。後者は、限定はしないが、典型的には計算変数および分類変数（次元）を加えた数学的関数である。これらの情報セットの両方を用いてチャート結果が計算され、これらの情報セットの両方を用いてチャート計算に入力するための識別子ＩＤ３も生成する。ＩＤ２は先のステップで既に生成されたものであり、ＩＤ３はチャート計算手順の第１のステップとして生成される。
【００６７】
識別子ＩＤ３は、ＩＤ２および関連のチャート特性から構成される。ＩＤ３は、特定のチャート生成インスタンスの識別子と考えることができ、特定のチャート結果を計算するのに必要なすべての情報を含む。また、チャート結果識別子ＩＤ４は、チャート結果定義、典型的にはチャート結果を定義するビットシーケンスから作成される。最後に、ＩＤ３を参照識別子として用いて、ＩＤ４がキャッシュに入力される。同様に、ＩＤ４を参照識別子として用いて、チャート結果定義がキャッシュに入力される。
【００６８】
この特定の例では、推論手順およびチャート計算手順の両方において結果の二段階キャッシュが実行される。推論手順では、ＩＤ１およびＩＤ２は、異なる事柄、選択およびデータサブセット定義をそれぞれ表わす。２つの異なる選択が同じデータサブセットをもたらす可能性が充分にあるが、その場合は二段階キャッシュ（ＩＤ１：ＩＤ２；ＩＤ２：データサブセット）によってデータサブセットが１回だけキャッシュされる。これは以下でオブジェクトフォールディングと表記される。すなわち、キャッシュ内のいくつかのデータオブジェクトが同じキャッシュエントリを共有する。同様に、チャート計算手順では、ＩＤ３およびＩＤ４は異なる事柄、チャート生成インスタンスおよびチャート結果定義をそれぞれ表わす。２つの異なるチャート生成インスタンスが同じチャート結果を生じさせる可能性が充分にあるが、その場合は二段階キャッシュ（ＩＤ３：ＩＤ４；ＩＤ４：チャート結果）によってチャート結果が１回だけキャッシュされる。
【００６９】
さらに、ＩＤ３をキャッシュすることによって、データサブセット定義がキャッシュからパージされている場合にもチャート結果を再作成することができる。これは、キャッシュパージ機構が実装されている場合、データサブセット定義が極めて大きい可能性があり、したがってキャッシュからパージされやすいため、有意義な利点である。このような機構の非限定的な例を以下にさらに説明する。
【００７０】
抽出プロセス中に、選択、関連のチャート特性などから識別子が計算され、図７の破線の矢印によって示されるように、潜在的にキャッシュされた計算結果を参照するのに使用される。識別子が発見されれば、対応するキャッシュされた結果が再利用される。発見されなければ、抽出プロセスは新たな識別子を生成し、識別子をそれぞれの結果とともにキャッシュする。
【００７１】
抽出プロセスをさらに例示するために、発注年「２００７」および製品グループ「乳製品」という上記の選択について考慮する。第１のステップは、デジタル識別子ＩＤ１をこの選択の関数として生成することである。たとえば（１６進法表記では）
'31dca7ad013964891df428095ad9b78ad7a69eaaa1ca3886bcf05d8f8184e84a'
簡潔にするため、以下の例では、各識別子を最初の４文字で表わす。したがってＩＤ１は「３１ｄｃ」となる。さらに、明確にするために、以下の表はデジタル識別子の前に、たとえば「ＩＤ１：」という識別子ラベルを含む。これは実際の解においては必要ではない。
【００７２】
次の抽出プロセスは以下のとおりである。ＩＤ１が生成されているときには、キャッシュ内で探索される。選択が初めて行なわれたときには、この識別子はキャッシュ内では発見されない。したがって、結果として得られるデータサブセットは通常の方法で計算しなければならない。計算が行なわれると、データサブセットからＩＤ２を生成することができ、たとえば「ｄ２ｂ８」となる。次にＩＤ１がキャッシュされ、ＩＤ２を指し、ＩＤ２がキャッシュされ、結果として得られるデータサブセットを定義するビットシーケンスを指す。このビットシーケンスは相当な大きさのサイズであり得る。キャッシュの内容を以下の表１に示す。
【００７３】
【表１】
2010027058.tif 000003
【００７４】
次に同じ選択が行なわれるときには、プロセスは異なったものとなる。ＩＤ１がキャッシュ内で発見され、「ＩＤ２：ｄ２ｂ８」を指すと第２の参照に使用され、時間のかかる計算の代わりに、結果として得られるデータサブセットのビットシーケンスが発見され、取出され、かつ使用される。
【００７５】
異なる選択が行なわれるが同じデータサブセットがもたらされる場合を考える。たとえば、明白に「乳製品」と要望することなく「乳製品」を購入した顧客をユーザが選択し、顧客が乳製品だけを購入したという場合に起こり得る。ＩＤ１は、ここではたとえば「ｆ１４２」として生成され、キャッシュ内では発見されない。したがって、結果として得られるデータサブセットは通常の方法で計算しなければならない。計算が行なわれると、ＩＤ２をデータサブセットから生成することができ、「ｄ２ｂ８」であると判明する。これは既にキャッシュに格納されている。したがって、アルゴリズムは、「ＩＤ１：ｆ１４２」が「ＩＤ２：ｄ２ｂ８」を指す１つのエントリをキャッシュに追加するだけでよい。キャッシュの内容を以下の表２に示す。
【００７６】
【表２】
2010027058.tif 000004
【００７７】
今回は計算時間は短縮されないが、キャッシュエントリを再利用して、キャッシュが不要に増大するのを防ぐ。ここでは、「ＩＤ１：ｆ１４２」および「ＩＤ１：３１ｄｃ」の両方が、同じデータサブセットを含むキャッシュエントリ「ＩＤ２：ｄ２ｂ８」を指し、両方とも後の参照に使用することができる。これが上記の「オブジェクトフォールディング」の一例である。
【００７８】
デジタル識別子をキャッシュするさらに他の利点は、次のチャート計算が行なわれると明確になる。そこで、上記の選択が行なわれ、次のチャート計算が行なわれたと想定する。ＩＤ３およびＩＤ４は、それぞれ「ｅ４０Ａ」および「７５０５」として生成されており、キャッシュに格納されている。キャッシュの内容を以下の表３に示す。
【００７９】
【表３】
2010027058.tif 000005
【００８０】
表３の５つのエントリのうち、潜在的に大きなデータサブセットを定義するビットシーケンス全体を含む「ＩＤ２：ｄ２ｂ８」は、他のすべてのエントリよりも相当に大きいと考えられる。そのサイズによって、以下でさらに説明するように、キャッシュが維持される場合にパージされる候補となる。したがって、しばらくするとキャッシュの内容は以下の表４のようになり得る。
【００８１】
【表４】
2010027058.tif 000006
【００８２】
しかしながら、デジタル識別子がキャッシュされるので、依然として、中間のデータサブセットを再計算する必要なしにチャート結果を得ることができる。代わりに、選択を行う際にＩＤ１が計算される。次に、キャッシュにおいてＩＤ１の参照が行われ、結果としてＩＤ２が検索される。次いで、ＩＤ３が、関連するチャート特性とＩＤ２との組合せから生成される。キャッシュにおけるＩＤ３の参照が行われ、ＩＤ４が検索される。最後に、キャッシュにおけるＩＤ４の参照が行われ、チャート結果が回復される。こうして、チャート結果は、計算を多く行わなくても、高速で処理効率の高い演算によって生成され得るデジタル識別子のみに基づいて見出される。
【００８３】
上述から、キャッシュにおける各識別子の意味が明白になるようにデジタル識別子が固有のものでなければならないことが理解される。一実施例においては、デジタル識別子はハッシングアルゴリズムまたは関数を用いて生成される。ハッシングアルゴリズムで行われる変換では、任意のサイズの入力（メッセージ）が取得され、ハッシュ値（メッセージダイジェスト）と称される一定サイズのストリングが戻される。当該アルゴリズムにより、典型的には、そのデジタル指紋を作成するための入力が細断および混合され、例えば、代用されるかまたは置換えられる。最も単純で最古のハッシングアルゴリズムは、素数演算による単純なモジュロである。ハッシングアルゴリズムは、暗号法を含む様々な計算上
の目的のために用いられる。一般的に言えば、ハッシングアルゴリズムは、実際に決定論的である一方で、等しい「確率」で実現可能な如何なる固定サイズのストリングをも生成することにより、可能な限りランダム関数のように作用するはずである。
【００８４】
上述のデジタル識別子を生成するのに用いられ得る、周知であり頻繁に用いられるいくつかのハッシングアルゴリズムが存在する。異なるハッシングアルゴリズムは異なる目的のために最適化されるものであり、ハッシュ値を効率的かつ高速で計算するのに最適化されるものがあるのに対して、暗号の安全性を高めるよう設計されているものもある。高い暗号安全性を備えたアルゴリズムは、適度な時間内に所与のハッシュ値と適合するメッセージを計算し、第１の所与のメッセージと同じハッシュ値を生成する第２のメッセージを見出すことを困難にするよう設計されている。このようなハッシングアルゴリズムは、ＳＨＡ（Secure Hash Algorithm（セキュア・ハッシュ・アルゴリズム））およびＭＤ５（Message-Digest algorithm（メッセージ・ダイジェスト・アルゴリズム）５）を含む。処理効率の良いハッシングアルゴリズムでは、典型的には、暗号の安全性がより低くなってしまう。このようなハッシングアルゴリズムにはＦＮＶアルゴリズム（Fowler/Noll/Vo）が含まれ、概して非常に低い衝突率を維持しつつも高速となるよう設計されている。ＦＮＶアルゴリズムは、典型的にはオフセットベースで始まるものであり、原則的には、任意のランダムな値の列であり得るが、典型的には、慣習的に常に、元のＦＮＶ−０アルゴリズムに通される１６進コードにおける発明者の署名である。２５６ビットのＦＮＶハッシュ値を生成するために、通常、以下のオフセットベースが用いられる：
′0xdd268dbcaac550362d98c384c4e576ccc8b1536847b6bbb31023b4c8caee0535′
ハッシングアルゴリズムへの入力における各バイトについて、まずオフセットに大きな素数を掛け、次に、当該オフセットが入力からのバイトと比較され、最後に、次のループのためのハッシュ値を形成するために、ビット単位の対称差（ＸＯＲ）が計算される。開示された文献中に適切な素数が見出される。如何なる大きな素数でも作用するであろうが、中には衝突耐性がより優れたものもある。
【００８５】
デジタル識別子は、適度に衝突耐性のあるいずれかのハッシングアルゴリズムを用いて生成されてもよい。一実施例においては、識別子は、衝突耐性が高く、暗号安全性が低い高速のハッシングアルゴリズムを用いて生成される。
【００８６】
特定の一実施例においては、２５６ビットの識別子は、各々が異なる素数の乗数を用いて生成された４つの６４ビットのＦＮＶハッシュを連結することによって生成されてもよい。４つのより短いハッシュを用い、これらを連結することにより、識別子はより高速で生成することができる。識別子の生成をさらに加速させるために、アルゴリズムは、ループ毎に入力のうち１バイトだけではなく４バイトを用いるよう変更されてもよい。これにより結果として、衝突耐性がほぼ同じままとなる一方で、暗号の安全性が損なわれる可能性がある。
【００８７】
少なくとも２５６ビットの長さをもつ識別子は有利な衝突耐性をもたらし得る。２５６ビットのハッシュ値は、およそ１Ｅ＋７７の実現可能な識別子値が存在することを意味する。この数は、１Ｅ＋８０と推定された母集団における原子の数と比較され得る。これは、衝突のリスク、すなわち、２つの異なる選択／データサブセット／チャート特性／チャート結果が同じ識別子をもたらすというリスク、が非常に小さいだけでなく、無視できるほどのものであることを意味している。したがって、衝突のリスクが許容可能なほど小さくなると言っても差し支えないだろう。これは、ハッシングアルゴリズムが理論的には固有の識別子を生成しないものの、統計的には固有の識別子を生成することを意味している。しかしながら、６４または１２８ビットなどのより短いビット長をもつ識別子が特定の用途のために十分に統計的に固有であり得ることが理解されるはずである。
【００８８】
上述のように、パージ機構は、古いエントリまたは未使用のエントリのキャッシュをパージするよう実現されてもよい。キャッシュにおける使用頻度の最も低いエントリをなくすことが戦略の１つであり得る。しかしながら、より高度なパージ機構は、プロセッサ使用頻度およびメモリ使用頻度の両方の最適化をサポートするよう実現されてもよい。このような高度なパージ機構の一実施例は３つのパラメータ、すなわち、使用頻度、計算時間およびメモリ必要性、に関して機能する。
【００８９】
使用頻度パラメータは、エントリが「頻繁にではないが、最近」アクセスされていたかどうかと、エントリが「最近ではないが、頻繁に」アクセスされていたかどうかとを考慮に入れ得る数値である。これは、各エントリを使用頻度パラメータＵに関連付けることによって実現されてもよい。使用頻度パラメータＵは、例えばエントリがアクセスされるたびに一単位ずつ増やされるが、その値を時間が経つにつれて指数関数的に、もしくは他のいずれかの関数分だけ減らすものである。一実現例においては、キャッシュにおけるＵの値がすべて、一定量ずつ定期的に減じられる。こうして、使用頻度パラメータは、放射性崩壊と同様に半減期を有する。Ｕの値は、ここで、エントリがどれほど多くアクセスされたかと、どれほど最近にアクセスされたかとを反映することとなる。
【００９０】
エントリを計算するのに必要とされるプロセッサ時間が多大であれば、エントリはキャッシュにおいてより長く維持されなければならない。逆に、計算に必要とされるプロセッサ時間が少ない場合、再計算のコストが小さくなり、キャッシュにエントリを維持する利点も小さくなる。こうして、各々のエントリが、推定される計算時間を表わす時間パラメータＴに関連付けられる。
【００９１】
エントリを格納するのに必要とされるメモリ空間は、多大であれば、それを維持するのに多くのキャッシュリソースを要し、メモリ空間をさほど必要としないエントリよりも早くキャッシュからパージされなければならない。逆に、メモリ空間をほとんど必要としないエントリはキャッシュにおいてより長く維持することができる。こうして、各々のエントリは、推定されるメモリ必要性を表わすメモリパラメータＭに関連付けられる。
【００９２】
キャッシュにおける各エントリについては、Ｕ、ＴおよびＭパラメータの値は、Ｗ＝Ｕ*Ｔ／Ｍによって与えられる重み関数Ｗによって評価される。
【００９３】
エントリについてのＷの大きな値は、キャッシュにこのエントリを維持する十分な理由が存在することを示している。こうして、大きなＷ値を有するエントリはキャッシュにおいて維持されなければならず、小さなＷ値を有するエントリはパージされなければならない。
【００９４】
効率的なパージ機構は、Ｗの値に従ってキャッシュをソートし、一方端からのソートされたキャッシュ、すなわち、最小のＷ値を有するエントリ、をパージすることを必要とし得る。ソートされたキャッシュを維持するための実現可能な、但し必ずしも必要ではない一方法は、識別子、結果ならびにＵ、Ｔ、ＭおよびＷの値をＡＶＬ（Adelson-Velsky（アデルソンヴェルスキ）およびLandis（ランディス））ツリー、すなわち、自動平衡二分探索木、として格納することであるだろう。
【００９５】
パージ機構は、予め定められたしきい値を下回るＷ値を有するすべてのエントリを断続的にパージし得る。
【００９６】
代替的には、パージ機構は、コンピュータ上の利用可能なメモリの量によって、または利用可能なメモリと全メモリとの比率によって制御されてもよい。こうして、キャッシュメモリのサイズがメモリしきい値に達するたびに、パージ機構は、それぞれのＷ値に基づ
いてキャッシュエントリからエントリを除去する。メモリしきい値を設定することにより、例えば、メモリのための処理能力をトレードするために局所的なハードウェア条件にキャッシュサイズを適合させることができる。たとえば、一次メモリをさらにコンピュータに追加し、メモリしきい値を増加させることにより、コンピュータにおけるより低速のプロセッサを補償することができる。これにより、キャッシュにより多くの結果が保持され、処理のための必要性が減じられることとなる。
【００９７】
本発明の実施例はまた、上述のアルゴリズム、方法、プロセスおよび手順のうちのいずれかを実行するための装置に関する。この装置は、所要の目的で特別に構築され得るか、または、コンピュータに格納されたコンピュータプログラムによって選択的に作動させられるかまたは再構成される汎用コンピュータを含み得る。
【００９８】
図８は、本発明の実施例のいずれかを実現するためのコンピュータベースの環境を示すブロック図である。ユーザ１はプロセッサ３を含むデータ処理システム２と対話する。プロセッサ３は、オペレーティングシステムソフトウェアと、本発明の実施例を実現する１つ以上のアプリケーションプログラムとを実行する。ユーザは、マウス、キーボード、タッチパッドなどの１つ以上の周知の入力装置４を用いることにより、データ処理システム２に情報を入力する。代替的には、カード読取り装置、光学式読取装置または別のコンピュータシステムなどの別のタイプの入力装置によって、ユーザの介入の有無にかかわらず、情報が入力され得る。視角フィードバックは、ディスプレイ５上で、文字、図記号、ウィンドウ、ボタンなどを示すことによってユーザに与えられてもよい。データ処理システムはさらに上述のメモリ１０を含む。プロセッサ３によって実行されるソフトウェアは、その演算に関する情報をメモリ１０に格納し、適切な情報をメモリ１０から検索する。メモリ１０は、典型的には、（ＲＡＭ、キャッシュメモリなどの）一次メモリおよび（ハードディスク、フラッシュメモリ、取外し可能媒体などの）不揮発性の二次メモリを含む。データベースは、データ処理システムのメモリ１０に格納されてもよく、または、データ処理システム２における通信インターフェース６を介して外部の記憶装置上でアクセスされてもよい。
【００９９】
本発明を、主にいくつかの実施例に関連付けて上に記載してきた。しかしながら、当業者に容易に認識されるように、上に開示される以外の実施例が、添付の特許請求の範囲によってのみ規定および限定される発明の範囲および精神内で等しく実現可能である。
【０１００】
たとえば、本発明は、多次元キューブを計算するのに適用可能であるだけでなく、一連の計算を用いて情報がデータベースから抽出される如何なる状況にも有用であり得る。
【０１０１】
さらに、発明上の抽出プロセスは、３つ以上の連続した計算を含む一連の計算に適用され得る。たとえば、一連の計算における２つ以上の中間結果は各々、上述に記載される中間結果と同様にキャッシュされ、次いで検索されてもよい。
【０１０２】
さらに、発明上の抽出プロセスは、最終結果をキャッシュして検索する必要はないが、一連の計算における１つ以上の中間結果をキャッシュして検索するためにだけ機能し得る。
【０１０３】
さらに、データベースから最初のデータセットまたは範囲を抽出する最初のステップを省略してもよく、代わりに抽出プロセスがデータベース上で直接行われてもよいことが理解されるべきである。
【符号の説明】
【０１０４】
ＤＢ  データベース、Ｐ１  第１の手順、Ｐ２  第２の手順、Ｒ０  最初のデータセッ
ト、Ｒ２  最終結果、Ｓ１  第１の選択アイテム、Ｓ２  第２の選択アイテム。
【図１】
2010027058.tif 000007
【図２】
2010027058.tif 000008
【図３】
2010027058.tif 000009
【図４】
2010027058.tif 000010
【図５】
2010027058.tif 000011
【図６】
2010027058.tif 000012
【図７】
2010027058.tif 000013
【図８】
2010027058.tif 000014