(57)【特許請求の範囲】
【請求項１】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおける多次元データ処理方法であって、
各次元に属する複数のメンバをそれぞれグループ分けし、
前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、
前記複数のページには、データと、該データに対応する次元メンバの組と一意に対応付けた数値とを対にして格納し、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、
前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、データに対応する次元メンバの組中の各メンバを、前記グループ分けで対応づけられた次元メンバグループで置き換えた組が、該エントリに対応する次元メンバグループの組と一致するデータを格納する
といった上記処理をコンピュータに実行させることを特徴とする多次元データ処理方法。
【請求項２】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおける多次元データ処理方法であって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、
前記複数のページには、データと、該データのセル座標を数値コード化して一意に該データと対応付けたセルＩＤとを対にして格納し、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納する
といった上記処理をコンピュータに実行させることを特徴とする多次元データ処理方法。
【請求項３】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおける多次元データ処理方法であって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、
前記複数のページには、データと、該データのセル座標を数値コード化して一意に該データと対応付けたセルＩＤとを対にして格納し、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置する
といった上記処理をコンピュータに実行させることを特徴とする多次元データ処理方法。
【請求項４】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおける多次元データ処理方法であって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
各データのセル座標中の各次元メンバ座標値を、該値から、該座標値のメンバと同じグループに属するメンバの座標値のうちの最小値を差し引いた値で置き換えた組を、該データの相対セル座標とし、
各データに、該データのブロック座標を数値コード化した値が上位桁部分、該データの相対セル座標を数値コード化した値が下位桁部分となるセルＩＤを割当て、
前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、
前記複数のページの本体部には、データと、該データのセルＩＤの下位桁部分とを対にして格納し、
前記複数のページのヘッダ部には、該ページの本体部に格納されたデータのセルＩＤの上位桁部分を格納し、該データとセルＩＤとが一意に対応付けてあり、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置する
といった上記処理をコンピュータに実行させることを特徴とする多次元データ処理方法。
【請求項５】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおける多次元データ処理方法であって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
各データのセル座標中の各次元メンバ座標値を、該値から、該座標値のメンバと同じグループに属するメンバの座標値のうちの最小値を差し引いた値で置き換えた組を、該データの相対セル座標とし、
前記記憶装置にインデクスを格納する領域と複数の第１種のページと複数の第２種のページを格納する領域を割当て、
前記複数の第１種のページには、データと、該データのセル座標を数値コード化したセルＩＤとを一意に対応付けて格納し、
前記複数の第２種のページには、データを格納し、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、
前記各エントリに前記ページＩＤで関連付けられた第１種の各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、
かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置し、
前記各エントリに前記ページＩＤで関連付けられた第２種の各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、かつ、該データのページ中の格納位置は、相対セル座標について入れ子順に線形配置する
といった上記処理をコンピュータに実行させることを特徴とする多次元データ処理方法。
【請求項６】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおける多次元データ処理方法であって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、
前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとが一意に対応付けて格納されており、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、
前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータが格納されており、かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置されており、
データ検索要求があった場合、
データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲を割当て、
前記各次元のメンバ範囲に対応する座標範囲に対応するメンバグループの一連の座標範囲を割当て、
各次元のメンバ範囲に対応する座標範囲に対応する各次元メンバ範囲座標値を前記グループ分けで対応づけられた次元メンバグループの座標範囲に対応する範囲座標値に置き換えたブロック座標の組を検索要求の検索範囲とし、
検索要求で指定された多次元の参照順序に基づいてブロック座標の組を参照し、
参照したブロック座標の組に対応する前記インデクスのエントリを計算しエントリに格納されているページＩＤに対応するページからブロック座標の組に対応する各次元のメンバ範囲に対応する座標範囲と前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲に対応するセルＩＤを持ったデータを検索し、かつ
前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲によって決まるセルＩＤを用いて検索の開始位置をソートされたデータの連続配置位置から決める
といった上記処理をコンピュータに実行させることを特徴とする多次元データ処理方法。
【請求項７】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおける多次元データ処理方法であって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
各データのセル座標中の各次元メンバ座標値を、該値から、該座標値のメンバと同じグループに属するメンバの座標値のうちの最小値を差し引いた値で置き換えた組を、該データの相対セル座標とし、
前記記憶装置にインデクスを格納する領域と複数の第１種のページと複数の第２種のページを格納する領域を割当て、
前記複数の第１種のページには、データと、該データのセル座標を数値コード化したセルＩＤとが一意に対応付けて格納されており、
前記複数の第２種のページには、データを格納し、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、
前記各エントリに前記ページＩＤで関連付けられた第１種の各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータが格納されており、
かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置し、
前記各エントリに前記ページＩＤで関連付けられた第２種の各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータが格納されており、かつ、該データのページ中の格納位置は、相対セル座標について入れ子順に線形配置されており、
データ検索要求があった場合、
データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲を割当て、
前記各次元のメンバ範囲に対応する座標範囲に対応するメンバグループの一連の座標範囲を割当て、
各次元のメンバ範囲に対応する座標範囲に対応する各次元メンバ範囲座標値を前記グループ分けで対応づけられた次元メンバグループの座標範囲に対応する範囲座標値に置き換えたブロック座標の組を検索要求の検索範囲とし、
検索要求で指定された多次元の参照順序に基づいてブロック座標の組を参照し参照したブロック座標の組に対応する前記インデクスのエントリを計算しエントリに格納されているページＩＤに対応するページから前記第１種のページに関してブロック座標の組に対応する各次元のメンバ範囲に対応する座標範囲と前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲に対応するセルＩＤを持ったデータを検索し、かつ
前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲によって決まるセルＩＤを用いて検索の開始位置をソートされたデータの連続配置位置から決める前記第２種のページに関してブロック座標の組に対応する各次元のメンバ範囲に対応する座標範囲と前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲に内包されるセルＩＤを持ったデータを検索し、かつ
前記ブロック座標の組に対応する各次元のメンバ範囲に対応する座標範囲に対応して決まるセルＩＤを用いて入れ子順に線形配置したデータの検索開始位置を決める
といった上記処理をコンピュータに実行させることを特徴とする多次元データ処理方法。
【請求項８】
１つまたは複数のＣＰＵと、１つまたは複数の並列読出し可能な記憶装置を含む複数の処理ノードを有し、複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおける多次元データ処理方法であって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
前記各処理ノードに含まれる各記憶装置に複数のページを格納する領域をそれぞれ割当て、
ブロック座標空間のある対角面に並行で、かつ、互いに異なる平面上に位置するデータを異なる記憶装置に割当てデータを格納する
といった上記処理をコンピュータに実行させることを特徴とする多次元データ処理方法。
【請求項９】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおける多次元データ処理方法であって、
複数の元データの複数のフィールドに対応する複数の次元の個々のメンバの元データ件数を数え上げ、
各次元のメンバにそれぞれ一連の座標値を割当て、
各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、前記グループ分けにおいてある次元に属する複数のメンバの持つ元データ件数の総和が同じになるようにそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、
元データを読み、
元データの複数のフィールドに対応する複数の次元の個々のメンバに対応するセル座標を数値コード化したセルＩＤと元データの上記複数次元に対応しないフィールドを対にしてデータを構成し、前記データを作業記憶領域に格納し、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、
前記作業記憶領域中のデータに対してデータをセルＩＤをキーとしてソートし、
作業領域のデータのセルＩＤに対応する複数の次元の座標値に対応する前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組に対応する前記インデクスのエントリを計算し、
前記各エントリに前記ページＩＤで関連付けられた各ページに作業領域から取り出したデータを格納し、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納する
といった上記処理をコンピュータに実行させることを特徴とする多次元データ処理方法。
【請求項１０】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおける多次元データ処理方法であって、
各次元のメンバに、同一の上位メンバをもつものどうしで値が連続するように、それぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
２次記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、
前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとを一意に対応付けて格納し、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、
前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、
データ集約要求があった場合、
１次記憶装置に集約計算の中間結果を格納する領域と集約計算対象データを格納する領域を割当て、２次記憶装置から集約計算対象となるデータを格納するページを順次、１次記憶装置の該集約計算対象データ格納領域に読み込んでは、該領域中のデータと前記中間結果格納領域のデータとに所定の集約演算を施し、該演算結果を前記中間結果格納領域に格納することにより、集約計算の最終結果を得る
といった上記処理をコンピュータに実行させることを特徴とする多次元データ処理方法。
【請求項１１】
１つまたは複数のＣＰＵと、１つまたは複数の並列読出し可能な記憶装置を含む複数の処理ノードを有し、複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおける多次元データ処理方法であって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
前記各処理ノードに含まれる２次記憶装置にインデクスを格納する領域と複数のページを格納する領域をそれぞれ割当て、
前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとを一意に対応付けて格納し、
前記インデックスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、
前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、
データ集約要求があった場合、
前記各処理ノードに含まれる１次記憶装置に集約計算の中間結果を格納する領域を割当て、
前記各処理ノードに含まれる各記憶装置から集約計算の演算対象となる一連のデータを格納するページを順次、該処理ノードに含まれる１次記憶装置に読込みながら、前記中間結果格納領域のデータに集約し、
前記各中間結果格納領域のデータを併合することで、集約計算の最終結果を得る
といった上記処理をコンピュータに実行させることを特徴とする多次元データ処理方法。
【請求項１２】
１つまたは複数のＣＰＵと、１つまたは複数の並列読出し可能な記憶装置を含む複数の処理ノードを有し、複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおける多次元データ処理方法であって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
前記各処理ノードに含まれる２次記憶装置にインデクスを格納する領域と複数のページを格納する領域をそれぞれ割当て、
ブロック座標空間で次元のある対角面に平行で、かつ、隣合う超平面上に位置する２つのデータを互いに異なる記憶装置のページに割当て、
同一記憶装置に割当てられる対角面上の一連のデータが記憶装置の連続するページに割当てられるようにデータを格納し、
前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとを一意に対応付けて格納し、
前記インデックスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、
前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、
データ集約要求があった場合、
前記各処理ノードに含まれる１次記憶装置に集約計算の中間結果を格納する領域を割当て、
前記１次記憶装置の領域に同時に格納できる集約計算結果のブロック座標空間内の範囲を決定し、
ブロック座標空間の対角面上の一連のデータを連続的に読み出す順にメンバグループの組合せを求め、
前記各処理ノードに含まれる各記憶装置から前記インデクスの前記メンバグループの組合せに対応するエントリのページＩＤで識別されるページを順次、１次記憶装置に読込みながら、前記中間結果格納領域のデータに集約し、
前記各中間結果格納領域のデータを併合することで、集約計算の最終結果を得る
といった上記処理をコンピュータに実行させることを特徴とする多次元データ処理方法。
【請求項１３】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムであって、
各次元に属する複数のメンバをそれぞれグループ分けし、
前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、
前記複数のページには、データと、該データに対応する次元メンバの組と一意に対応付けた数値とを対にして格納し、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、
前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、データに対応する次元メンバの組中の各メンバを、前記グループ分けで対応づけられた次元メンバグループで置き換えた組が、該エントリに対応する次元メンバグループの組と一致するデータを格納する
といった上記処理を実行するデータベース管理システム。
【請求項１４】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムであって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、
前記複数のページには、データと、該データのセル座標を数値コード化して一意に該データと対応付けたセルＩＤとを対にして格納し、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納する
といった上記処理を実行するデータベース管理システム。
【請求項１５】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムであって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、
前記複数のページには、データと、該データのセル座標を数値コード化して一意に該データと対応付けたセルＩＤとを対にして格納し、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置する
といった上記処理を実行するデータベース管理システム。
【請求項１６】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムであって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
各データのセル座標中の各次元メンバ座標値を、該値から、該座標値のメンバと同じグループに属するメンバの座標値のうちの最小値を差し引いた値で置き換えた組を、該データの相対セル座標とし、
各データに、該データのブロック座標を数値コード化した値が上位桁部分、該データの相対セル座標を数値コード化した値が下位桁部分となるセルＩＤを割当て、
前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、
前記複数のページの本体部には、データと、該データのセルＩＤの下位桁部分とを対にして格納し、
前記複数のページのヘッダ部には、該ページの本体部に格納されたデータのセルＩＤの上位桁部分を格納し、該データとセルＩＤとが一意に対応付けてあり、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置する
といった上記処理を実行するデータベース管理システム。
【請求項１７】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムであって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
各データのセル座標中の各次元メンバ座標値を、該値から、該座標値のメンバと同じグループに属するメンバの座標値のうちの最小値を差し引いた値で置き換えた組を、該データの相対セル座標とし、
前記記憶装置にインデクスを格納する領域と複数の第１種のページと複数の第２種のページを格納する領域を割当て、
前記複数の第１種のページには、データと、該データのセル座標を数値コード化したセルＩＤとを一意に対応付けて格納し、
前記複数の第２種のページには、データを格納し、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、
前記各エントリに前記ページＩＤで関連付けられた第１種の各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、
かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置し、
前記各エントリに前記ページＩＤで関連付けられた第２種の各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、かつ、該データのページ中の格納位置は、相対セル座標について入れ子順に線形配置する
といった上記処理を実行するデータベース管理システム。
【請求項１８】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムであって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、
前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとが一意に対応付けて格納されており、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、
前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータが格納されており、かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置されており、
データ検索要求があった場合、
データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲を割当て、
前記各次元のメンバ範囲に対応する座標範囲に対応するメンバグループの一連の座標範囲を割当て、
各次元のメンバ範囲に対応する座標範囲に対応する各次元メンバ範囲座標値を前記グループ分けで対応づけられた次元メンバグループの座標範囲に対応する範囲座標値に置き換えたブロック座標の組を検索要求の検索範囲とし、
検索要求で指定された多次元の参照順序に基づいてブロック座標の組を参照し、
参照したブロック座標の組に対応する前記インデクスのエントリを計算しエントリに格納されているページＩＤに対応するページからブロック座標の組に対応する各次元のメンバ範囲に対応する座標範囲と前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲に対応するセルＩＤを持ったデータを検索し、かつ
前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲によって決まるセルＩＤを用いて検索の開始位置をソートされたデータの連続配置位置から決める
といった上記処理を実行するデータベース管理システム。
【請求項１９】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムであって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
各データのセル座標中の各次元メンバ座標値を、該値から、該座標値のメンバと同じグループに属するメンバの座標値のうちの最小値を差し引いた値で置き換えた組を、該データの相対セル座標とし、
前記記憶装置にインデクスを格納する領域と複数の第１種のページと複数の第２種のページを格納する領域を割当て、
前記複数の第１種のページには、データと、該データのセル座標を数値コード化したセルＩＤとが一意に対応付けて格納されており、
前記複数の第２種のページには、データを格納し、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、
前記各エントリに前記ページＩＤで関連付けられた第１種の各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータが格納されており、
かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置し、
前記各エントリに前記ページＩＤで関連付けられた第２種の各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータが格納されており、かつ、該データのページ中の格納位置は、相対セル座標について入れ子順に線形配置されており、
データ検索要求があった場合、
データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲を割当て、
前記各次元のメンバ範囲に対応する座標範囲に対応するメンバグループの一連の座標範囲を割当て、
各次元のメンバ範囲に対応する座標範囲に対応する各次元メンバ範囲座標値を前記グループ分けで対応づけられた次元メンバグループの座標範囲に対応する範囲座標値に置き換えたブロック座標の組を検索要求の検索範囲とし、
検索要求で指定された多次元の参照順序に基づいてブロック座標の組を参照し参照したブロック座標の組に対応する前記インデクスのエントリを計算しエントリに格納されているページＩＤに対応するページから前記第１種のページに関してブロック座標の組に対応する各次元のメンバ範囲に対応する座標範囲と前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲に対応するセルＩＤを持ったデータを検索し、かつ
前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲によって決まるセルＩＤを用いて検索の開始位置をソートされたデータの連続配置位置から決める前記第２種のページに関してブロック座標の組に対応する各次元のメンバ範囲に対応する座標範囲と前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲に内包されるセルＩＤを持ったデータを検索し、かつ
前記ブロック座標の組に対応する各次元のメンバ範囲に対応する座標範囲に対応して決まるセルＩＤを用いて入れ子順に線形配置したデータの検索開始位置を決める
といった上記処理を実行するデータベース管理システム。
【請求項２０】
１つまたは複数のＣＰＵと、１つまたは複数の並列読出し可能な記憶装置を含む複数の処理ノードを有し、複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムであって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
前記各処理ノードに含まれる各記憶装置に複数のページを格納する領域をそれぞれ割当て、
ブロック座標空間のある対角面に並行で、かつ、互いに異なる平面上に位置するデータを異なる記憶装置に割当てデータを格納する
といった上記処理を実行するデータベース管理システム。
【請求項２１】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムであって、
複数の元データの複数のフィールドに対応する複数の次元の個々のメンバの元データ件数を数え上げ、
各次元のメンバにそれぞれ一連の座標値を割当て、
各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、前記グループ分けにおいてある次元に属する複数のメンバの持つ元データ件数の総和が同じになるようにそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、
元データを読み、
元データの複数のフィールドに対応する複数の次元の個々のメンバに対応するセル座標を数値コード化したセルＩＤと元データの上記複数次元に対応しないフィールドを対にしてデータを構成し、前記データを作業記憶領域に格納し、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、
前記作業記憶領域中のデータに対してデータをセルＩＤをキーとしてソートし、
作業領域のデータのセルＩＤに対応する複数の次元の座標値に対応する前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組に対応する前記インデクスのエントリを計算し、
前記各エントリに前記ページＩＤで関連付けられた各ページに作業領域から取り出したデータを格納し、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納する
といった上記処理を実行するデータベース管理システム。
【請求項２２】
複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムであって、
各次元のメンバに、同一の上位メンバをもつものどうしで値が連続するように、それぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
２次記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、
前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとを一意に対応付けて格納し、
前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、
前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、
データ集約要求があった場合、
１次記憶装置に集約計算の中間結果を格納する領域と集約計算対象データを格納する領域を割当て、２次記憶装置から集約計算対象となるデータを格納するページを順次、１次記憶装置の該集約計算対象データ格納領域に読み込んでは、該領域中のデータと前記中間結果格納領域のデータとに所定の集約演算を施し、該演算結果を前記中間結果格納領域に格納することにより、集約計算の最終結果を得る
といった上記処理を実行するデータベース管理システム。
【請求項２３】
１つまたは複数のＣＰＵと、１つまたは複数の並列読出し可能な記憶装置を含む複数の処理ノードを有し、複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムであって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
前記各処理ノードに含まれる２次記憶装置にインデクスを格納する領域と複数のページを格納する領域をそれぞれ割当て、
前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとを一意に対応付けて格納し、
前記インデックスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、
前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、
データ集約要求があった場合、
前記各処理ノードに含まれる１次記憶装置に集約計算の中間結果を格納する領域を割当て、
前記各処理ノードに含まれる各記憶装置から集約計算の演算対象となる一連のデータを格納するページを順次、該処理ノードに含まれる１次記憶装置に読込みながら、前記中間結果格納領域のデータに集約し、
前記各中間結果格納領域のデータを併合することで、集約計算の最終結果を得る
といった上記処理を実行するデータベース管理システム。
【請求項２４】
１つまたは複数のＣＰＵと、１つまたは複数の並列読出し可能な記憶装置を含む複数の処理ノードを有し、複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムであって、
各次元のメンバにそれぞれ一連の座標値を割当て、
各データに対応する次元メンバの座標値の組を該データのセル座標とし、
各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、
各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、
前記各処理ノードに含まれる２次記憶装置にインデクスを格納する領域と複数のページを格納する領域をそれぞれ割当て、
ブロック座標空間で次元のある対角面に平行で、かつ、隣合う超平面上に位置する２つのデータを互いに異なる記憶装置のページに割当て、
同一記憶装置に割当てられる対角面上の一連のデータが記憶装置の連続するページに割当てられるようにデータを格納し、
前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとを一意に対応付けて格納し、
前記インデックスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、
前記エントリは、ページを識別するページＩＤの格納域を含み、
前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、
データ集約要求があった場合、
前記各処理ノードに含まれる１次記憶装置に集約計算の中間結果を格納する領域を割当て、
前記１次記憶装置の領域に同時に格納できる集約計算結果のブロック座標空間内の範囲を決定し、
ブロック座標空間の対角面上の一連のデータを連続的に読み出す順にメンバグループの組合せを求め、
前記各処理ノードに含まれる各記憶装置から前記インデクスの前記メンバグループの組合せに対応するエントリのページＩＤで識別されるページを順次、１次記憶装置に読込みながら、前記中間結果格納領域のデータに集約し、
前記各中間結果格納領域のデータを併合することで、集約計算の最終結果を得る
といった上記処理を実行するデータベース管理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データベース管理システムに係り、とくに多次元データを高速に検索、集約するのに好適な多次元データ処理方法に関する。
【０００２】
【従来の技術】
多次元データの分析の効率化を目標とする多次元データベース管理システムは、次元のメンバの自由な組合せで指定されたデータを検索する機能（スライス機能）と、さまざまな次元方向についてさまざまな詳細レベルでデータを集約する機能を、データ演算の基本機能として提供する。これら機能の高速処理のために、従来、以下のような技術が用いられてきた。
【０００３】
多次元データ検索に向いたデータの格納方法として、計算機言語の配列データのメモリ配置方法にならって、データを次元座標の入れ子順に線形配置する方法、多次元のデータ空間を有効な値をもつデータが粗に分布する部分空間と密に分布する空間の直積に分けられると仮定して、後者の部分空間のうち空でないものについてのみ記憶域を割当て、前者の部分空間に対応するポインタ配列で前記記憶域をポイントする方法（米国特許番号０５３５９７２４）、リレーショナルモデルのレコードデータの各属性を次元と考え、この次元で構成されるデータ空間を直方体状のブロックに分割し、同一ブロックに属するレコードを格納するページを割当て、ブロックの座標とページの対応を記録するインデックスを作成するグリッドファイル方式（Nievergelt, J., et al., *The Grid File: An Adaptable, Symmetric Multikey File Structure*, ACM Transactions on Database Systems, vol.9, no.1, pp.38-71, 1984.）がある。
【０００４】
データ検索は、並列処理の適用によっても高速化できる。この場合、並列読出し可能な複数の記憶装置に、データをどう割振って格納するかということが問題になる。リレーショナルデータベース管理システムでは、ラウンドロビン分割、ハッシュ分割、レンジ分割等の方法が用いられている（DeWitt, D., et al., *The Gamma Database Machine Project*, IEEE Transactions on Knowledge and Data Engineering, vol.2, no.1, pp.44-63, 1990.）。
【０００５】
多次元データベース管理システムにおけるデータ集約の代表的な高速化手法は、データベースにデータを読込む際に集約計算を済ませ結果を保存（実体化）するという方法である（Pendse, N., and Creeth, R.F., *The OLAP Report*, pp.69-77, Business Intelligence, 1995.）。集約要求があったときは、実体化してある集約データを読み出すだけでよい。しかし、多次元の素データをさまざまに集約して得られる集約データの総量は、次元の増大や集約の詳細レベルを決める次元階層の増大とともに組合せ爆発を起こすことが知られており（前掲書）、考えられる集約データをすべて実体化することは、大規模なデータベースでは不可能になる。この問題に対処するため、性能劣化を最小限に抑えながら、実体化対象とする集約データを制限する方法（Harinarayan, V., et al., *Implementing Data Cubes Efficiently*, Submitted for publication, also available from http://www-db.stanford.edu/pub/harinarayan/1995/cube.ps.）も提案されている。
【０００６】
リレーショナルデータベース管理システムで集約計算を行うときの代表的な手順は、集約するテーブルのレコードをデータベースから読出し、集約計算の演算対象となる一連のレコードが連続した並びとなるようソートし、ソートしたレコードに対し逐次、集約計算を行うというものである。この方法は、データ読出し、ソート、集約計算という処理の流れに、並列処理を適用することで高速化が可能である。
【０００７】
【発明が解決しようとする課題】
多次元データの検索の高速化は、検索対象データの格納位置の決定の高速化と、データの見かけ上の読出し速度の高速化、並列処理の適用による高速化とに分けて考えることができる。データ読出し速度の高速化には、ページ当りのデータ読出し効率やページバッファリングの効率が影響し、これらはさらに、関連データがどれだけかたまって同一ページに格納されるかというクラスタリングの影響や、多次元のデータ空間に粗に分布する有効データを圧縮してページに割当てる際の圧縮率の影響を受ける。また、多次元データの集約の高速化の問題は、実体化する集約データの範囲を適切に管理する問題と、実体化されていない集約データが要求された時に集約計算を高速に処理する問題とに分けて考えることができる。
【０００８】
多次元データを単純に線形配置するデータ格納方法は、データを格納したページを決定するページアドレシングをデータの多次元座標の計算で処理できるという利点がある反面、粗データの圧縮が効果がない、データ空間で隣接するデータどうしの物理的な配置距離が次元方向によって大きく偏る、すなわちクラスタリングに偏りがある等の問題がある。米国特許番号０５３５９７２４のデータ格納方法は、アドレシングの容易性と粗データの圧縮格納を両立するという利点があるが、次元の粗密への分類が明瞭でないと圧縮の効果がない、次元の粗密の識別は一般に困難等の問題がある。グリッドファイルによるデータ格納方法は、アドレシングの容易性、粗データの圧縮格納、クラスタリングに次元の偏りがない等の利点があるが、多次元データモデルを前提に考案されたものでないことから、次元情報を含むレコード全体を格納単位とするため、ページのデータ格納効率を悪くするという問題がある。
【０００９】
ラウンドロビン分割、ハッシュ分割、レンジ分割等の並列処理向けのデータ分割格納方法は、単純な巡回割当て、または単一のキー値を使った割当てを行うものであり、多次元データの特性を生かしたものとなっていない。
【００１０】
データ読出し・ソート・集約計算手順によるデータ集約方法は、データ量が多い場合、ソート処理でディスク等２次記憶装置を使うため、これが性能向上の阻害要因となっている。
【００１１】
集約データの最適実体化方式は、実体化による集約要求処理の高速化と、集約データ総量の組合せ爆発の抑制をうまく両立させているが、集約データごとの要求頻度の違いや、頻度の時間的な変化については十分配慮されていない。
【００１２】
本発明の目的は、以上指摘した従来技術の欠点、弱点を解消することにより、多次元データ分析向けデータベース管理システムの基本機能である多次元データの検索機能（スライス機能）と集約機能を高速化する多次元データ処理方法を提供することにある。
【００１３】
【課題を解決するための手段】
上記目的は、以下の手順により達成される。
１）複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、記憶装置にデータを格納する方法であって、各次元に属する複数のメンバをそれぞれグループ分けし、前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、前記複数のページには、データと、該データに対応する次元メンバの組をコード表現した数値とを対にして格納し、前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、データに対応する次元メンバの組中の各メンバを、前記グループ分けで対応づけられた次元メンバグループで置き換えた組が、該エントリに対応する次元メンバグループの組と一致するデータを格納する過程。
【００１４】
２）複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、記憶装置にデータを格納する方法であって、各次元のメンバにそれぞれ一連の座標値を割当て、各データに対応する次元メンバの座標値の組を該データのセル座標とし、各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとを対にして格納し、前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納する過程。
【００１５】
３）複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、記憶装置にデータを格納する方法であって、各次元のメンバにそれぞれ一連の座標値を割当て、各データに対応する次元メンバの座標値の組を該データのセル座標とし、各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとを対にして格納し、前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置する過程。
【００１６】
４）複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、記憶装置にデータを格納する方法であって、各次元のメンバにそれぞれ一連の座標値を割当て、各データに対応する次元メンバの座標値の組を該データのセル座標とし、各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、各データのセル座標中の各次元メンバ座標値を、該値から、該座標値のメンバと同じグループに属するメンバの座標値のうちの最小値を差し引いた値で置き換えた組を、該データの相対セル座標とし、各データに、該データのブロック座標を数値コード化した値が上位桁部分、該データの相対セル座標を数値コード化した値が下位桁部分となるセルＩＤを割当て、前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、前記複数のページの本体部には、データと、該データのセルＩＤの下位桁部分とを対にして格納し、前記複数のページのヘッダ部には、該ページの本体部に格納されたデータのセルＩＤの上位桁部分を格納し、前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置する過程。
【００１７】
５）複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、記憶装置にデータを格納する方法であって、各次元のメンバにそれぞれ一連の座標値を割当て、各データに対応する次元メンバの座標値の組を該データのセル座標とし、各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、各データのセル座標中の各次元メンバ座標値を、該値から、該座標値のメンバと同じグループに属するメンバの座標値のうちの最小値を差し引いた値で置き換えた組を、該データの相対セル座標とし、前記記憶装置にインデクスを格納する領域と複数の第１種のページと複数の第２種のページを格納する領域を割当て、前記複数の第１種のページには、データと、該データのセル座標を数値コード化したセルＩＤとを対にして格納し、前記複数の第２種のページには、データを格納し、前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた第１種の各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置し、前記各エントリに前記ページＩＤで関連付けられた第２種の各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、かつ、該データのページ中の格納位置は、相対セル座標について入れ子順に線形配置する過程。
【００１８】
６）複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、データ検索要求を処理する方法であって、各次元のメンバにそれぞれ一連の座標値を割当て、各データに対応する次元メンバの座標値の組を該データのセル座標とし、各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとを対にして格納し、前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置し、データ検索要求があった場合、データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲を割当て、前記各次元のメンバ範囲に対応する座標範囲に対応するメンバグループの一連の座標範囲を割当て、各次元のメンバ範囲に対応する座標範囲に対応する各次元メンバ範囲座標値を前記グループ分けで対応づけられた次元メンバグループの座標範囲に対応する範囲座標値に置き換えたブロック座標の組を検索要求の検索範囲とし、検索要求で指定された多次元の参照順序に基づいてブロック座標の組を参照し、参照したブロック座標の組に対応する前記インデクスのエントリを計算しエントリに格納されているページＩＤに対応するページからブロック座標の組に対応する各次元のメンバ範囲に対応する座標範囲と前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲に対応するセルＩＤを持ったデータを検索し、かつ、前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲によって決まるセルＩＤを用いて検索の開始位置をソートされたデータの連続配置位置から決める過程。
【００１９】
７）複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、データ検索要求を処理する方法であって、各次元のメンバにそれぞれ一連の座標値を割当て、各データに対応する次元メンバの座標値の組を該データのセル座標とし、各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、各データのセル座標中の各次元メンバ座標値を、該値から、該座標値のメンバと同じグループに属するメンバの座標値のうちの最小値を差し引いた値で置き換えた組を、該データの相対セル座標とし、前記記憶装置にインデクスを格納する領域と複数の第１種のページと複数の第２種のページを格納する領域を割当て、前記複数の第１種のページには、データと、該データのセル座標を数値コード化したセルＩＤとを対にして格納し、
前記複数の第２種のページには、データを格納し、前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた第１種の各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、かつ、該データのページ中の格納位置は、セルＩＤでソートした順に連続配置し、前記各エントリに前記ページＩＤで関連付けられた第２種の各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、かつ、該データのページ中の格納位置は、相対セル座標について入れ子順に線形配置し、データ検索要求があった場合、データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲を割当て、前記各次元のメンバ範囲に対応する座標範囲に対応するメンバグループの一連の座標範囲を割当て、各次元のメンバ範囲に対応する座標範囲に対応する各次元メンバ範囲座標値を前記グループ分けで対応づけられた次元メンバグループの座標範囲に対応する範囲座標値に置き換えたブロック座標の組を検索要求の検索範囲とし、検索要求で指定された多次元の参照順序に基づいてブロック座標の組を参照し参照したブロック座標の組に対応する前記インデクスのエントリを計算しエントリに格納されているページＩＤに対応するページから前記第１種のページに関してブロック座標の組に対応する各次元のメンバ範囲に対応する座標範囲と前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲に対応するセルＩＤを持ったデータを検索し、かつ、前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲によって決まるセルＩＤを用いて検索の開始位置をソートされたデータの連続配置位置から決める前記第２種のページに関してブロック座標の組に対応する各次元のメンバ範囲に対応する座標範囲と前記データ検索要求に指定された各次元のメンバ範囲に対応する座標範囲に内包されるセルＩＤを持ったデータを検索し、かつ、前記ブロック座標の組に対応する各次元のメンバ範囲に対応する座標範囲に対応して決まるセルＩＤを用いて入れ子順に線形配置したデータの検索開始位置を決める過程。
【００２０】
８）１つまたは複数のＣＰＵと、１つまたは複数の並列読出し可能な複数の記憶装置を含む処理ノードを有し、複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、前記複数の記憶装置にデータを格納する方法であって、各次元のメンバにそれぞれ一連の座標値を割当て、各データに対応する次元メンバの座標値の組を該データのセル座標とし、各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、前記各処理ノードに含まれる各記憶装置に複数のページを格納する領域をそれぞれ割当て、ブロック座標空間で次元のある対角面に並行で、かつ、隣合う超平面上に位置する２つのデータが互いに異なる記憶装置のページに割当てられるようにデータを格納する過程。
【００２１】
９）複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、記憶装置に任意の元データを格納する方法であって、複数の元データの複数のフィールドに対応する複数の次元の個々のメンバの元データ件数を数え上げ、各次元のメンバにそれぞれ一連の座標値を割当て、各次元に属する複数のメンバを座標値が連続する単位でそれぞれグループ分けし、前記グループ分けにおいてある次元に属する複数のメンバの持つ元データ件数の総和が同じになるようにそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、前記記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、元データを読み、元データの複数のフィールドに対応する複数の次元の個々のメンバに対応するセル座標を数値コード化したセルＩＤと元データの上記複数次元に対応しないフィールドを対にしてデータを構成し、前記データを作業記憶領域に格納し、全ての元データに前記を適用し、前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、前記エントリは、ページを識別するページＩＤの格納域を含み、前記作業記憶領域中のデータに対してデータをセルＩＤをキーとしてソートし、作業領域のデータのセルＩＤに対応する複数の次元の座標値に対応する前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組に対応する前記インデクスのエントリを計算し、前記各エントリに前記ページＩＤで関連付けられた各ページに作業領域から取り出したデータを格納し、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納する過程。
【００２２】
１０）複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、各次元がもつメンバの階層構造をもとに規定されるデータ集約要求を処理する方法であって、各次元のメンバに、同一の上位メンバをもつものどうしで値が連続するように、それぞれ一連の座標値を割当て、各データに対応する次元メンバの座標値の組を該データのセル座標とし、各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、２次記憶装置にインデクスを格納する領域と複数のページを格納する領域を割当て、前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとを対にして格納し、前記インデクスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、データ集約要求があった場合、１次記憶装置に集約計算の中間結果を格納する領域を割当て、集約計算の演算対象となる一連のデータを格納するページを順次、１次記憶装置に読込ながら、前記中間結果格納領域のデータに集約することにより、集約計算の最終結果を得る過程。
【００２３】
１１）複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、各次元がもつメンバの階層構造をもとに規定されるデータ集約要求を処理する方法であって、各次元のメンバに、同一の上位メンバをもつものどうしで値が連続するように、それぞれ一連の座標値を割当て、各データに対応する次元メンバの座標値の組を該データのセル座標とし、各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、２次記憶装置にインデックスを格納する領域と複数のページを格納する領域を割当て、前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとを対にして格納し、前記インデックスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、データ集約要求があった場合、１次記憶装置に集約計算の中間結果を格納する領域を割当て、集約する１つまたは複数の次元のメンバグループの座標値を任意の次元について優先的に順次変化させ、集約計算の演算対象となるデータのメンバグループの組合せを決定し、前記インデクスの前記メンバグループの組合せに対応するエントリのページＩＤで識別されるページを順次、１次記憶装置に読込みながら、前記中間結果格納領域のデータに集約することにより、集約計算の最終結果を得る過程。
【００２４】
１２）１つまたは複数のＣＰＵと、１つまたは複数の並列読出し可能な複数の記憶装置を含む処理ノードを有し、複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、各次元がもつメンバの階層構造をもとに規定されるデータ集約要求を処理する方法であって、各次元のメンバにそれぞれ一連の座標値を割当て、各データに対応する次元メンバの座標値の組を該データのセル座標とし、各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、前記各処理ノードに含まれる２次記憶装置にインデクスを格納する領域と複数のページを格納する領域をそれぞれ割当て、前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとを対にして格納し、前記インデックスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、データ集約要求があった場合、前記各処理ノードに含まれる１次記憶装置に集約計算の中間結果を格納する領域を割当て、前記各処理ノードに含まれる各記憶装置から集約計算の演算対象となる一連のデータを格納するページを順次、該処理ノードに含まれる１次記憶装置に読込みながら、前記中間結果格納領域のデータに集約し、前記各中間結果格納領域のデータを併合することで、集約計算の最終結果を得る過程。
【００２５】
１３）１つまたは複数のＣＰＵと、１つまたは並列読出し可能な複数の記憶装置を含む複数の処理ノードを有し、複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、各次元がもつメンバの階層構造をもとに規定されるデータ集約要求を処理する方法であって、各次元のメンバにそれぞれ一連の座標値を割当て、各データに対応する次元メンバの座標値の組を該データのセル座標とし、各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、前記各処理ノードに含まれる２次記憶装置にインデクスを格納する領域と複数のページを格納する領域をそれぞれ割当て、前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとを対にして格納し、前記インデックスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、データ集約要求があった場合、前記各処理ノードに含まれる１次記憶装置に集約計算の中間結果を格納する領域を割当て、集約する１つまたは複数の次元のメンバグループの座標値を任意の次元について優先的に順次変化させ、集約計算の演算対象となるデータのメンバグループの組合せを決定し、前記各処理ノードに含まれる各記憶装置から前記インデクスの前記メンバグループの組合せに対応するエントリのページＩＤで識別されるページを順次、１次記憶装置に読込みながら、前記中間結果格納領域のデータに集約し、前記各中間結果格納領域のデータを併合することで、集約計算の最終結果を得る過程。
【００２６】
１４）１つまたは複数のＣＰＵと、１つまたは複数の並列読出し可能な複数の記憶装置を含む処理ノードを有し、複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、各次元がもつメンバの階層構造をもとに規定されるデータ集約要求を処理する方法であって、各次元のメンバにそれぞれ一連の座標値を割当て、各データに対応する次元メンバの座標値の組を該データのセル座標とし、各次元に属する複数のメンバをそれぞれグループ分けし、該メンバグループにそれぞれ一連の座標値を割当て、各データのセル座標中の各次元メンバ座標値を、前記グループ分けで対応づけられた次元メンバグループの座標値で置き換えた組を、該データのブロック座標とし、前記各処理ノードに含まれる２次記憶装置にインデクスを格納する領域と複数のページを格納する領域をそれぞれ割当て、ブロック座標空間で次元のある対角面に平行で、かつ、隣合う超平面上に位置する２つのデータを互いに異なる記憶装置のページに割当て、同一記憶装置に割当てられる対角面上の一連のデータが記憶装置の連続するページに割当てられるようにデータを格納し、前記複数のページには、データと、該データのセル座標を数値コード化したセルＩＤとを対にして格納し、前記インデックスは、次元のメンバグループの各組合せにそれぞれ対応するエントリで構成し、かつ、エントリは対応するブロック座標について入れ子順になるよう線形配置し、前記エントリは、ページを識別するページＩＤの格納域を含み、前記各エントリに前記ページＩＤで関連付けられた各ページには、該エントリに対応するブロック座標と同一のブロック座標をもつデータを格納し、データ集約要求があった場合、前記各処理ノードに含まれる１次記憶装置に集約計算の中間結果を格納する領域を割当て、前記１次記憶装置の領域に同時に格納できる集約計算結果のブロック座標空間内の範囲を決定し、ブロック座標空間の対角面上の一連のデータを連続的に読み出す順にメンバグループの組合せを求め、前記各処理ノードに含まれる各記憶装置から前記インデクスの前記メンバグループの組合せに対応するエントリのページＩＤで識別されるページを順次、１次記憶装置に読込みながら、前記中間結果格納領域のデータに集約し、前記各中間結果格納領域のデータを併合することで、集約計算の最終結果を得る過程。
【００２７】
１５）複数の次元のメンバの組合せで識別されるデータを記憶し、該データに関する問合せ要求を処理するデータベース管理システムにおいて、事前に集約計算を実行して格納する対象のデータを決定し、格納する方法であって、一部分の集約計算処理を事前に実行し、前記集約計算処理によって生成されるデータの集合を記憶装置に格納し、前記格納したデータ、または、各次元がもつメンバの階層構造をもとに規定されるデータの集約要求を受けて生成するデータの参照頻度を監視し、前記参照頻度の分布から記憶装置に格納するデータの集合を更新する契機を判定し、前記参照頻度を各次元がもつメンバの階層構造をもとに規定されるデータの重みとして事前に集約計算を実行して格納する対象のデータを決定し、前記決定したデータを生成するためのデータ集約要求が発行された場合にデータ集約処理を実行し、前記決定したデータを記憶装置に格納する過程。
【００２８】
【発明の実施の形態】
図１は、本発明の一実施例である多次元データベース管理システムの処理ブロック構成を示す図である。
【００２９】
多次元問合せ処理は、クライアントからの問合せを各プロセサに対して実行指示し、各プロセサからの結果を記録、クライアントからの要求により検索結果を返却する。集約データ最適実体処理は、最適な集約データの実体化対象を選択すると共に、実体化されていない集約データ生成の生成指示を行う。多次元スキャン処理はキューブデータを検索する。多次元インサート処理はキューブデータにセルデータを追加する。集約計算処理は複数のセルデータを集約し集約セルデータ化する。データ併合は複数のプロセサの任意処理から転送されるセルデータを任意の順序に基づいて併合する処理である。データ分配はセルデータ内容に基づいて、セルデータを任意のプロセサの任意処理へ転送する。
【００３０】
クライアント１０１はＷＡＮ／ＬＡＮ１０２を経由して多次元データベース管理システムと接続する。プロセサ１０３及び１０６から１１１は相互結合ネットワーク１１５で接続する。１０４は多次元データベース管理情報である。１０５及び１１２から１１４は多次元ブロックインデクスである。
【００３１】
クライアント１０１から要求される問合せは多次元問合せ要求処理で処理される。多次元問合せ要求処理は問合せを各プロセサ（プロセサ１０６から１１１）に存在する多次元スキャン処理に転送する。多次元スキャン処理は問合せを満足するセルデータをキューブデータから検索する。個々のプロセサに存在する多次元スキャン処理の結果はデータ分配を経由せず、プロセサ１０３に存在するデータ併合によって併合し、併合結果を検索結果データとして記録する。検索結果データはクライアント１０１の参照要求によりＷＡＮ／ＬＡＮ１０２を経由してクライアント１０１に返却する。集約データ最適実体化処理は最適な集約キューブデータを選択、要求時実体化処理を制御する。要求時実体化処理が要求されると、多次元スキャン処理は集約対象セルデータを検索して、集約計算処理を行う各プロセサ（プロセサ１０６から１１１）へデータ分配する。集約計算処理は各多次元スキャン処理から転送されるセルデータに対して集約計算を行い集約結果としてのセルデータを生成する。集約結果セルデータは適切なプロセサのキューブデータに格納するためにデータ分配を経由して任意プロセサへ集約結果セルデータを分配する。各プロセサ（プロセサ１０６から１１１）は各集約計算処理からデータ分配されたセルデータをデータ併合し、多次元インサート処理を経由してキューブデータに記録する。
【００３２】
図２は、多次元データベースにおけるデータモデル定義形式を示す図である。多次元データベースを定義するには、モデル名２０１、次元名２０２、次元メンバ名２０３、変数名２０４、及び集約関数名２０５を定義する。
【００３３】
２０１は、モデルの名称を定義する文である。モデルは多次元データベースの論理的な構造を表現したものである。２０２は、モデルの次元を定義する文である。モデルの次元はデータの集まりを分類する観点を表現したものであり、その次元を構成するメンバ（次元メンバ）から構成される。データの集まりはセル単位で分類される。２０３は、次元メンバの階層関係を定義する文である。この定義文は、＜親メンバ名＞で指定された次元メンバの下位のメンバが、＜子メンバ名＞のリストで指定された次元メンバで構成される事を意味する。
【００３４】
２０４は変数を定義する文である。変数は複数のデータから構成され、前記セルは、変数からなり、＜変数名＞で指定された変数のデータ型が＜データ型名＞であることを意味する。２０５はデータモデルで用いる集約計算の関数を定義する文である。下位メンバのセル値を集約して上位メンバの値を求める際、＜集約関数名＞で指定された関数を使って集約値を計算することを意味する。
【００３５】
図３は、多次元データベースの具体的なデータモデル定義例を示す図である。この例はある会社のプロセサ売り上げ分析３０１を想定したものであり、「商品」、「マーケット」、「期間」の３次元３０２を持つ。変数は売上予算３１９及び売上実算３２０である。データの集約計算３２１は、各次元毎に売り上げデータを合計することにより行う。各次元の次元階層は図４（「商品」の次元階層）、図５（「マーケット」の次元階層）、図６（「期間」の次元階層）に示す。
【００３６】
次元「商品」の下には、商品の分類である「ＰＣ」、「ＷＳ」が階層として定義されている（３０３）。
【００３７】
「ＰＣ」の下にはＰＣの分類である「デスクトップ」、「ノートＰＣ」、「ＰＣサーバ」が階層として定義されている（３０４）。「ＷＳ」の下にはＷＳの機種である「３０５０」、「３５００」が階層として定義されている（３０８）。
【００３８】
「デスクトップ」の下にはデスクトップ機種である「ＤＭ１」、「ＤＳ１」が階層として定義されている（３０５）。「ノートＰＣ」の下にはノートＰＣ機種である「ＮＤ１」、「ＮＳ１」が階層として定義されている（３０６）。「ＰＣサーバ」の下にはＰＣサーバ機種である「３１００ＬＰ」、「３１００ＳＰ」が階層として定義されている（３０７）。
【００３９】
次元「マーケット」の下には、マーケットの分類である「関東」、「関西」が階層として定義されている（３０９）。「関東」の下には「東京」、「千葉」、「神奈川」が階層として定義されている（３１０）。「関西」の下には「大阪」、「兵庫」、「京都」が階層として定義されている（３１１）。
【００４０】
次元「期間」の下には、「９４年度」、「９５年度」が階層として定義されている（３１２）。「９４年度」の下には「９４年度上期」、「９４年度下期」が階層として定義されている（３１３）。「９４年度上期」の下には上期の各月である「９４年４月」から「９４年９月」が階層として定義されている（３１４）。「９４年度下期」の下には下期の各月である「９４年１０月」から「９５年３月」が階層として定義されている（３１５）。
【００４１】
同様に「９５年度」の下には「９５年度上期」、「９５年度下期」が階層として定義されている（３１６）。「９５年度上期」の下には「９５年４月」から「９５年９月」が階層として定義されている（３１７）。「９５年度下期」の下には「９５年１０月」から「９６年３月」が階層として定義されている（３１８）。
【００４２】
図７は、図３の多次元データベースの素データを論理的な空間として表した図である。元データを多次元データベースに格納したものが素データキューブである。この図では左右軸が「期間」、上下軸が「マーケット」、奥行き軸が「商品」である。特定の次元のあるメンバを選択すると、素データを、選択された軸に沿って取り出すことができる。データベースの次元毎にメンバを一つ選択すると、選択された各次元のメンバ値が交差する箇所のデータを取り出すことができる。
【００４３】
図８は、図７の素データと各次元の集約データを論理的な空間として表した図である。この図では８０１が素データである。集約データは、集約する次元軸に沿って、集約される。
【００４４】
このデータを「期間」の次元で集約していくと、８０５が「９４年度上期」、「９４年度下期」、「９５年度上期」、「９５年度下期」で集約したデータ、８０９が「９４年度」、「９５年度」で集約したデータ、８１３が「期間」で集約したデータである。
【００４５】
素データを「商品」の次元で集約していくと、８０２が「デスクトップ」、「ノートＰＣ」、「ＰＣサーバ」で集約したデータ、８０３が「ＰＣ」、「ＷＳ」で集約したデータ、８０４が「商品」で集約したデータである。
【００４６】
８０５の集約データを「商品」の次元で集約していくと、８０６が素データを「９４年度上期」、「９４年度下期」、「９５年度上期」、「９５年度下期」と「デスクトップ」、「ノートＰＣ」、「ＰＣサーバ」で集約したデータ、８０７が素データを「９４年度上期」、「９４年度下期」、「９５年度上期」、「９５年度下期」と「ＰＣ」、「ＷＳ」で集約したデータ、８０８が素データを「９４年度上期」、「９４年度下期」、「９５年度上期」、「９５年度下期」と「商品」で集約したデータである。
【００４７】
８０９の集約データを「商品」の次元で集約していくと、８１０が素データを「９４年度」、「９５年度」と「デスクトップ」、「ノートＰＣ」、「ＰＣサーバ」で集約したデータ、８１１が素データを「９４年度」、「９５年度」と「ＰＣ」、「ＷＳ」で集約したデータ、８１２が素データを「期間」と「商品」で集約したデータである。
【００４８】
８１３の集約データを「商品」の次元で集約していくと、８１４が素データを「期間」と「デスクトップ」、「ノートＰＣ」、「ＰＣサーバ」で集約したデータ、８１５が素データを「期間」と「ＰＣ」、「ＷＳ」で集約したデータ、８１６が素データを「期間」と「商品」で集約したデータである。
【００４９】
８０４の集約データを「マーケット」の次元で集約していくと、８１７が「商品」と「関東」、「関西」で集約したデータ、８１８が「商品」と「マーケット」で集約したデータである。
【００５０】
８０８の集約データを「マーケット」の次元で集約していくと、８１９が「９４年度上期」、「９４年度下期」、「９５年度上期」、「９５年度下期」、「商品」と「関東」、「関西」で集約したデータ、８２０が「９４年度上期」、「９４年度下期」、「９５年度上期」、「９５年度下期」、「商品」と「マーケット」で集約したデータである。
【００５１】
８１２の集約データを「マーケット」の次元で集約していくと、８２１が「９４年度」、「９５年度」、「商品」と「関東」、「関西」で集約したデータ、８２２が「９４年度」、「９５年度」、「商品」と「マーケット」で集約したデータである。
【００５２】
８１３の集約データを「マーケット」の次元で集約していくと、８２５が「期間」、「商品」と「関東」、「関西」で集約したデータ、８２６が「期間」、「商品」と「マーケット」で集約したデータである。
【００５３】
８１４の集約データを「マーケット」の次元で集約していくと、８２７が「期間」、「デスクトップ」、「ノートＰＣ」、「ＰＣサーバ」と「関東」、「関西」で集約したデータ、８２８が「期間」、「デスクトップ」、「ノートＰＣ」、「ＰＣサーバ」と「マーケット」で集約したデータである。
【００５４】
８１５の集約データを「マーケット」の次元で集約していくと、８２９が「期間」、「ＰＣ」、「ＷＳ」と「関東」、「関西」で集約したデータ、８３０が「期間」、「ＰＣ」、「ＷＳ」と「マーケット」で集約したデータである。
【００５５】
８１６の集約データを「マーケット」の次元で集約していくと、８２３が「期間」、「商品」と「関東」、「関西」で集約したデータ、８２４が「期間」、「商品」と「マーケット」の全次元で集約したデータである。
【００５６】
図９は、本発明が適用されるハードウェア構成の一例を示すものである。具体的には、図９は、多次元データベース管理システムでの適用例である。クライアント９０１から９０４は、ＷＡＮ／ＬＡＮである９０５で接続される。プロセサ９０６、ハードディスク装置９０７、プロセサ９０９から９１１及びハードディスク装置９１２から９２０は相互結合ネットワーク９０８で接続される。ハードディスク装置９０７にはシステム管理情報が格納されている。
【００５７】
クライアント９０１から９０４は、多次元データベースの検索要求を、ＷＡＮ／ＬＡＮ９０５を経由してプロセサ９０６に送信する。プロセサ９０６は問合せの検索要求を解析し、問合せの実行内容を決定後、相互結合ネットワーク９０８を経由してプロセサ９０９から９１１に処理を振り分ける。プロセサ９０９から９１１の処理結果を併合した結果は、ハードディスク装置９０７に格納され、クライアント９０１から９０４に返される。
【００５８】
図１０は、図１の多次元データベース管理システムを、異なる構成で構築した多次元データベース管理システムの処理ブロック構成を示す図である。クライアント１００１は、ＷＡＮ／ＬＡＮ１００２によって多次元データベース管理システムに接続される。ＦＥＳ（フロント・エンド・サ−バ）１００３、ＢＥＳ（バック・エンド・サ−バ）１００６から１００８は相互結合ネットワーク１０１２で接続されている。１００５及び１００９から１０１１は多次元ブロックインデクスである。１００４は多次元データベース管理情報である。
【００５９】
ＦＥＳ１００３は、クライアントからの問合せを解析し、その問合せの実行を各ＢＥＳに要求する。その後、各ＢＥＳからの問合せの結果を併合してクライアントに返却する。また集約データ最適実体化処理を行い、最適な集約キューブデータの選択と要求時集約計算の実行指示並びに集約計算を行う。ＢＥＳ（１００６から１００８）は多次元ブロックインデクス、キューブデータを保持し、ＦＥＳ１００３から実行を要求された問合せの実行を行う。
【００６０】
多次元データベース管理システムで集約計算を行う場合は、取り出しフェーズ（多次元スキャン処理、データ分配）、集約フェーズ（データ併合、集約計算処理、データ分配処理）、格納フェーズ（データ併合、多次元インサート処理）がパイプライン的に実行される。図１の構成では、これらの処理フェーズがそれぞれ異なるプロセサで実行され、図１０の構成では、これらの処理フェーズが同じプロセサで実行される。
【００６１】
図１１は多次元データベース格納構造を示す図である。ＦＥＳ１１０１は、クライアントからの問合せを解析し、その問合せの実行を各ＢＥＳに要求する。その後、各ＢＥＳからの問合せの結果を併合してクライアントに返却する。また集約データ最適実体化処理を行い、最適な集約キューブデータの選択と要求時集約計算の実行指示並びに集約計算を行う。
【００６２】
ＢＥＳ１からＢＥＳ４（１１０２から１１０５）は多次元ブロックインデクス、キューブデータを保持し、ＦＥＳから実行を要求された問合せの実行を行う。ＨＤ１からＨＤ４（１１１１から１１１４）はハードディスクと呼ばれる記録媒体の一例であり、多次元ブロックインデクス、キューブデータを格納する。
【００６３】
ＦＥＳ多次元ブロック化メンバ範囲テーブル１１２０はＦＥＳ多次元ブロックインデクス１１３０のブロック化メンバ範囲情報を保持する。ブロック化メンバ範囲はあるメンバＩＤからあるメンバＩＤのことである。ブロック化メンバ範囲情報はあるメンバＩＤからあるメンバＩＤまでがどのブロックＩＤに対応するかの対応情報である。ＢＥＳ多次元ブロック化メンバ範囲テーブル１１２１はＢＥＳ多次元ブロックインデクス１１３１の各次元のブロック化メンバ範囲を保持する。
【００６４】
キューブデータ１１４０はセルデータ群をブロック化して記録媒体に格納する。ブロック化とは各次元のブロック化メンバ範囲情報により決まる多次元論理データ空間を任意の物理領域に対応させ、その物理領域にブロック化メンバ範囲内のセルデータのみを存在させることである。オーバフローファイル１１５０はキューブデータ上の物理領域に格納できなかったセルデータを格納する。
【００６５】
図１２は本発明におけるセルデータ格納ページの対角割当て方法を示す図である。
【００６６】
以下の説明では「商品」、「マーケット」、「期間」の３つの次元から構成された多次元データベースモデルを想定する。各次元のブロック化メンバ範囲の個数はそれぞれ３つあるとする。
【００６７】
ある多次元の各次元のメンバの直積空間を多次元論理データ空間と呼ぶ。多次元論理データ空間を構成する各次元のメンバ範囲テーブルに従い空間のひとつ以上のセルをブロックにまとめたものを、多次元論理ブロック空間と呼ぶ。  この時、多次元論理ブロック空間は立方体１２０１の構成になる。立方体は３×３×３＝２７個のブロックＩＤを持つ。
【００６８】
セルデータを格納する資源を上記各ブロックＩＤに対応して割当てる。この時、ある次元軸に隣接するブロックＩＤ値の割当て資源がそれぞれ異なる資源に割当てられるように資源を割当てる。
【００６９】
本例では以下のように資源を割当てる。（尚、資源の番号はＢＥＳ１のＨＤ１を１、ＢＥＳ１のＨＤ２を２、ＢＥＳ２のＨＤ１を３、ＢＥＳ２のＨＤ２を４とする。また商品次元を資源割当て次元と仮定する。資源割当て次元はその次元に沿って資源を割当てる次元である。）
初期資源割当てを以下とする。
商品次元の初期資源割当て
ブロックＩＤ（１、１、１）→資源番号 １
ブロックＩＤ（２、１、１）→資源番号 ２
ブロックＩＤ（３、１、１）→資源番号 ３
マーケット次元の初期資源割当て
ブロックＩＤ（１、１、１）→資源番号 １
ブロックＩＤ（１、２、１）→資源番号 ２
ブロックＩＤ（１、３、１）→資源番号 ３
期間次元の初期資源割当て
ブロックＩＤ（１、１、１）→資源番号 １
ブロックＩＤ（１、１、２）→資源番号 ２
ブロックＩＤ（１、１、３）→資源番号 ３
開始ブロックＩＤ（１、1、１）から各次元のメンバ範囲の昇順方向に順番に資源番号を割当てる。割当てる資源番号がなくなった場合、最初の資源番号から再度、割当てる。
【００７０】
上記初期資源割当てを行い、初期資源割当てを行ったブロックＩＤの対角ブロックＩＤに対して同一資源番号を割当てる。たとえば、ブロックＩＤ(１、１、１）は資源番号１が割当てる。その対角ブロックＩＤ（２、２、２）と(３、３、３）に対しても同様に資源番号１が割当てる。
【００７１】
対角ブロックＩＤ（２、２、２）の資源番号１が割当てられると、資源割当て次元に沿って資源番号を割当てる。割当て次元の隣接ブロックが異なる資源となるように１つ上の軸のブロックには現ブロック資源番号ー１を、１つ下の軸のブロックには現ブロック資源番号＋１を割当てる。ブロックＩＤ(２、２、２）場合、資源割当て次元に沿った割当ては以下となる。
【００７２】
ブロックＩＤ（２、２、２）  資源番号１
「商品」次元の上位次元座標ブロックＩＤ（１、２、２）
→割当て資源番号４（１ー１＝０となり最後の４から再度割当て）
「商品」次元の下位次元座標ブロックＩＤ（３、２、２）
→割当て資源番号２
上記資源割当てを初期資源割当てされたブロックＩＤから対角方向のブロックＩＤに対して適用したのが、１２０２から１２０５に示す分解した３つの３×３平面（破線で記述）の実線で囲まれたブロックＩＤである。そのブロックＩＤを同一資源番号に割当てる。
【００７３】
次に対角上のブロックＩＤに連続的に資源を割当てるような資源割当てを行う。例えば資源番号１に割当てられたブロックＩＤ(１、１、１）（２、２、２）(３、３、３）をＢＥＳ１のＨＤ１上の物理領域配置において連続的に読み出すことが可能なような資源割当てを行う。連続的に読み出すとは、ハードディスクの場合、読み出し用ヘッドがシリンダ上の位置を移動することなく連続的にデータを読む状態を言う。上記資源割当てによりブロックＩＤにページＩＤを付与した結果が１２１０から１２４１に示すページＩＤとページの並びの構成である。
【００７４】
上記方法を適用することにより「商品」、「マーケット」、「期間」の多次元論理データ空間１２０１は異なるＢＥＳ上のあるハードディスク１２１０から１２４１に示す各資源に対角にブロックＩＤが割当てられ、かつ対角上のブロックＩＤが資源上の領域として連続的に割当てられる。
【００７５】
図１３は、多次元データベーステーブル１３００の構成を示す図である。このテーブルは、多次元データベースのモデル定義を参照する場合や、データキューブの情報を参照する場合等に参照される。データキューブとは、多次元データベースのモデル定義に従って生成されるデータの集まりである。このテーブルは、図１０の多次元データベース管理情報１００４に格納されている。
【００７６】
多次元データベーステーブル１３００は、多次元データベース名１３０１と、多次元データモデルテーブルエントリへのポインタ１３０２と、データキューブテーブルエントリへのポインタ１３０３と、集約データキューブテーブルへのポインタ１３０４からなる。テーブルに登録された各エントリが、ひとつの多次元データベースに対応する。
【００７７】
多次元データベース名１３０１には、多次元データベースの名称を表す文字列を格納する。多次元データモデルテーブルエントリへのポインタ１３０２には、多次元データモデルテーブルのエントリへのポインタを格納する。データキューブテーブルエントリへのポインタ１３０３には、データキューブテーブルのエントリへのポインタを格納する。集約データキューブテーブルへのポインタ１３０４には、集約データキューブテーブルへのポインタを格納する。
【００７８】
図１４は、多次元データモデル定義情報の格納形式を示す図である。多次元データモデル定義情報は、多次元データモデルテーブル、次元テーブル、変数テーブル、および次元メンバテーブルから構成される。多次元データモデルテーブルはモデル名１４０１、集約関数識別コード１４０２、次元テーブルへのポインタ１４０３、変数テーブルへのポインタ１４０４から構成される。モデル名１４０１には、多次元データモデルの名称を格納する。集約関数１４０２には、多次元データを集約する際に利用する関数の識別コードを格納する。次元テーブルの次元ＩＤ列１４１１には次元ＩＤを格納する。次元名列１４１２には次元名を格納する。次元メンバテーブルへのポインタ列１４１３には次元メンバテーブルへのポインタを格納する。変数テーブルの変数名列１４２１には変数名を格納する。データ型識別コード列１４２２には、その変数のデータ型識別コードを格納する。
【００７９】
次元メンバテーブルは次元の数だけ生成する。この例では次元「商品」、「マーケット」、「期間」それぞれに次元メンバテーブルを生成する。次元メンバテーブルは、メンバ名１４３１、親ＩＤ１４３２、次の兄弟ＩＤ１４３３、メンバＩＤ１４３４、レベルＩＤ１４３５より構成される。本次元メンバテーブルは、ハッシュ構造に格納する。メンバ名をハッシュすることで、メンバの格納エントリを決定する。
【００８０】
メンバＩＤ列１４３１、１４４１、１４５１には、次元メンバのメンバ名を格納する。親ＩＤ列１４３２、１４４２、１４５２には、次元メンバの親メンバのＩＤを格納する。次の兄弟のＩＤ列１４３３、１４４３、１４５３には、同じ親を持つ、次の兄弟メンバのＩＤを格納する。メンバＩＤ列１４３４、１４４４、１４５４には次元メンバのＩＤが格納する。レベルＩＤ列１４３５、１４４５、１４５５には、次元メンバの階層レベルを表すＩＤを格納する。階層レベルの定義は次のとおりである。図４を例にとると、次元「商品」のレベルは０である。「商品」の直下である「ＰＣ」のレベルは１であり、「ＰＣ」の直下である「デスクトップ」のレベルは２である。
【００８１】
図１５は、データキューブテーブル１５００の構成を示す図である。このテーブルは、素データキューブ、または、集約データキューブの格納位置を特定する場合に参照される。このテーブルは、図１０の多次元データベース管理情報１００４に格納されている。
【００８２】
データキューブテーブル１５００は、ＦＥＳ多次元ブロック化メンバ範囲テーブルへのポインタ１５０１と、格納形式識別コード１５０２と、ＦＥＳ多次元ブロックインデクスまたはキューブデータへのポインタ１５０３からなる。テーブルに登録された各エントリが、ひとつの素データキューブ、または集約データキューブに対応する。
【００８３】
ＦＥＳ多次元ブロック化メンバ範囲テーブルへのポインタ１５０１には、多次元ブロック化メンバ範囲テーブルへのポインタを格納する。格納形式識別コード１５０２には、素データキューブ、または、集約データキューブの格納形式を表すコードを格納する。この例では、格納形式が圧縮配置型の場合には１、線形配置型の場合には０を格納する。
【００８４】
ＦＥＳ多次元ブロックインデクスまたはキューブデータへのポインタ１５０３には、格納形式が圧縮配置型の場合にはＦＥＳ多次元ブロックインデクスへのポインタ、線形配置型の場合にはキューブデータへのポインタを格納する。
【００８５】
図１６は、集約データキューブテーブル１６００の構成を示す図である。このテーブルは、集約データキューブの格納位置を特定する場合や、集約データキューブが実体化されているか否かを特定する場合等に参照される。このテーブルは、図１０の多次元データベース管理情報１００４に格納されている。
【００８６】
集約データキューブテーブル１６００は、集約データＩＤ１６０１と、集約データキューブテーブルエントリへのポインタ１６０２と、有効セル数１６０３と、生成要求状態識別コード１６０４と、参照頻度１６０５と、実体化状態識別コード１６０６と、データキューブテーブルエントリへのポインタ１６０７からなる。テーブルに登録された各エントリが、ひとつの集約データキューブに対応する。
【００８７】
集約データＩＤ１６０１には、集約データキューブを構成する各次元のレベルＩＤを格納する。この例では、次元「商品」、「マーケット」、「期間」のそれぞれのレベルＩＤを格納する。これらのレベルＩＤの組合せが集約データＩＤとなる。
【００８８】
集約データキューブテーブルエントリへのポインタ１６０２には、要求時に集約計算を実行して集約データキューブを生成する場合の、要求時集約計算対象となるデータキューブに対応する集約データキューブテーブルのエントリへのポインタを格納する。要求時集約計算対象となるデータキューブは、集約データキューブ生成時の計算コストが最小であるデータキューブを選択するための任意のアルゴリズムによって決定される。要求時集約計算対象となるデータキューブとして素データキューブを選択した場合は、集約データキューブテーブルエントリへのポインタ１６０２には、素データキューブを表すコードを格納する。有効セル数１６０３には、集約データキューブ内の、有効なデータを格納しているセルの数を格納する。
【００８９】
生成要求状態識別コード１６０４には、集約データキューブの要求時生成を実行する要求の有無を識別するコードを格納する。この例では、要求有りの場合には１、要求無しの場合には０を格納する。
【００９０】
参照頻度１６０５には、集約データキューブの参照回数を格納する。参照回数は、実体化する集約データキューブの最適集合決定処理の実行が終了した時点で０にセットされる。参照頻度１６０５の前回列には、前回０にセットする直前の参照回数を格納し、現在列には、前回０にセットしてから現在までの参照回数を格納する。
【００９１】
実体化状態種別コード１６０６には、集約データキューブの実体化状態を識別するコードを格納する。集約データキューブの実体化状態は、以下に示す４種類である。
【００９２】
(1) 実体化されておらず実体化する候補にもなっていない「非実体化状態」
(2) 実体化されていて削除する候補になっていない「実体化状態」
(3) 実体化する候補になっている「実体化待ち状態」
(4) 削除する候補になっている「削除待ち状態」
この例では、「非実体化状態」の場合０、「実体化状態」の場合１、「実体化待ち状態」の場合２、「削除待ち状態」の場合３を格納する。
【００９３】
データキューブテーブルエントリへのポインタ１６０７には、データキューブテーブルの集約データキューブに対応するエントリへのポインタを格納する。
【００９４】
図１７は多次元ブロック化メンバ範囲テーブルの構成を示す図である。多次元ブロック化メンバ範囲テーブルは多次元データベースまたは集約データキューブを構成している次元に関する情報と多次元ブロックインデクスの座標計算によりブロック座標を決定するための次元メンバ範囲テーブルを持つ。次元に関する情報は次元ＩＤ１７０１と次元メンバ範囲テーブルへのポインタ１７０２からなる。次元ＩＤ１７０１は多次元データベースまたは集約データベースキューブを構成する次元の次元メンバテーブルで付与された次元ＩＤ１４１１をいれる。次元メンバ範囲テーブル１７０５は各次元毎の開始メンバＩＤ１７０３とその開始位置に対応するブロック座標１７０４を持つ。ブロック座標は任意メンバ範囲に付与された値である。各次元の任意順序の計算で決定される多次元論理ブロック空間の１つの空間を識別する識別子をブロックＩＤと呼ぶ。
【００９５】
もし多次元論理データ空間に全てのセルデータが存在する、または非常に密に有効なセルデータが存在し、格納構造として線形配置型が選択される場合には多次元ブロック化メンバ範囲テーブルを作成または参照する必要はない。
【００９６】
図１８はＦＥＳ多次元ブロックインデクスのデータページの構成を示す図である。データページにはページを管理するヘッダ情報１８０１とＢＥＳＩＤ格納領域群を格納している領域から構成される。
【００９７】
ＢＥＳＩＤ格納領域１８１０はＦＥＳにおいて、多次元のメンバＩＤをブロックＩＤに変換した時、そのブロックＩＤに格納されるセルデータが、どのＢＥＳに格納されているかを示すＢＥＳＩＤ１８１１を持つ。
【００９８】
図１９はＢＥＳ多次元ブロックインデクスのデータページの構成を示す図である。データページにはページを管理するヘッダ情報格納部１９０１とページＩＤ格納域群を格納している部分から構成される。
【００９９】
ページＩＤ格納域１９１０はＢＥＳにおいて多次元のメンバＩＤをブロックＩＤ化した時、そのブロックＩＤに格納されるセルデータがどのページに格納されているかを示す。ページＩＤ１９１１はキューブデータ上のページアドレスを示す。
【０１００】
図２０はキューブデータにおける圧縮配置型セルデータページの構成を示す図である。線形配置型セルデータページは多次元論理データ空間に存在する全ての座標のうち、有効な座標、即ち値を持った座標が少ない場合に選択されるページ形式である。
【０１０１】
圧縮配置型セルデータページはヘッダ情報２００１とセルデータ格納部２００２から構成される。ヘッダ情報２００１はページを管理する情報を持つ。ページ管理情報には以下がある。
【０１０２】
格納セル数２０２０はページ内に格納されたセル数を持つ。オーバフローページへのページＩＤ２０２１はこのページに収まりきらなかったセルデータを保持するオーバフローページへのページＩＤである。ページ内セル上位値２０２２とページ内共通セル下位値２０２３はページ内に存在するセルに共通なセルＩＤの値の上位部分、下位部分を保持する。セルデータ格納部２００２はセルＩＤ２０１０とセルレコード２０１１の組で構成されるセルデータを格納する領域である。セルＩＤ２０１０はそのセルデータを多次元論理データ空間上で一意に識別する座標値に相当する値である。ただし実際のセルＩＤは（ページ内セル上位値、セルデータに付与されるセルＩＤ、ページ内共通セル下位値）の連結で示す。セルＩＤの復元は上記を組み立てることをいう。尚、本実施例では特に断らない限り復元されたものをセルＩＤと呼ぶ。セルレコードはセルＩＤに対応するセルデータが持つ値であり、データモデル定義で定義した変数２０４が入る。
【０１０３】
図２１はキューブデータ内における線形配置型セルデータページの構成を示す図である。線形配置型セルデータページは多次元論理データ空間に存在するほとんどの座標が有効な場合、即ち全ての座標の値が設定されている場合に選択されるページ形式である。線形配置型セルデータページはヘッダ情報２１０１とセルデータ格納部２１０２から構成される。
【０１０４】
ヘッダ情報２１０１はページを管理する情報を持つ。オーバフローページへのページＩＤ２１２１はこのページに収まりきらなかったセルデータを保持するオーバフローページへのページＩＤである。セルデータ格納部にはセルレコード格納域２１１０がある。
【０１０５】
図２２は多次元データベース問合せ要求処理手順を示すフローチャートである。  問合せはクライアントから送信され、多次元データベース管理システムが受信した後、ＦＥＳ上の任意の多次元データベース問合せ要求処理に渡される。多次元データベース問合せ要求処理は以下を行い検索結果をクライアントに返却する。  問合せの構文解析２２０１はクライアントから送信されたテキスト形式の問合せを計算機が内部処理可能な形式に翻訳するために、その構文を解析し、構文解析木を生成する。
【０１０６】
問合せの意味解析２３００は上記構文解析木を入力として、問合せの各対象に対する意味解析を行い、次の実行フェーズに必要な実行コードを生成する。
【０１０７】
実行コードはどの処理をどの順番に行い、誰宛にその結果を送信するか、または誰から結果を受信し、その結果を併合するか等、問合せを実施するために必要な指示情報を持つ。意味解析終了後の処理は実行コードの指示に対応した処理手順が起動され、各処理の連携で行われる。
【０１０８】
多次元データベース問合せでの実行フェーズはＦＥＳが実行の指示を行う。実行指示内容とＦＥＳの処理内容は以下である。
（１）ＦＥＳによる実行ＢＥＳの選択
（２）ＢＥＳへの多次元データ検索の実行指示
（３）任意場所で行われるデータ併合実行の指示
（４）任意場所で行われるクライアントへの結果返却指示
実行ＢＥＳの選択は問合せ条件に対応するＢＥＳをＦＥＳの多次元ブロックインデクスから決定する。どの多次元ブロックインデクスを利用するかは問合せの意味解析から返却される（２２０３）。
【０１０９】
多次元データ検索処理とデータ併合処理の並列実行２６００は上記（２）（３）（４）に相当し、多次元データベースを検索、その結果を併合する指示をＦＥＳが行う。
【０１１０】
ＢＥＳからの検索結果データ併合処理が終了すると検索結果が完成している。それをクライアントへ返却することにより多次元データベース問合せ処理が終了する（２２０５）。
【０１１１】
図２３は問合せの意味解析処理を示すフローチャートである。問合せの構文解析で得た構文解析木を入力して処理を行う。問合せ内容の判定２３０１は図１３から図１４で述べた各テーブルを参照して問合せの内容を意味的に正しいか否か判定する。意味的に誤った指定の場合はエラーとなり以後の処理が行われない。
【０１１２】
意味解析で参照するテーブルと参照内容は以下である。
（１）多次元データベーステーブル
問合せ中の多次元データベース名の有無を判定する。
（２）多次元データモデルテーブル
多次元データベーステーブルからモデルテーブルポインタ１３０２を参照し、多次元データモデルテーブルを参照する。
【０１１３】
（３）次元テーブル
多次元データモデルテーブルの次元テーブルポインタ１４０３を参照し、次元テーブルを参照する。次元テーブル参照により問合せ中で指定された次元が実際に存在するか否か次元名１４１１を参照して判定する。
【０１１４】
（４）次元メンバテーブル
次元テーブルの次元メンバテーブルへのポインタ１４１３を参照し、次元メンバテーブルを参照する。次元メンバテーブル参照により、問合せの条件式で指定されているメンバ名が実際に存在するか、メンバの階層レベルの組合せが正しいか否か、等をメンバ名１４３１やレベルＩＤ１４３５等を利用して判定する。また実行コード内はメンバＩＤで処理されるため、メンバ名からメンバＩＤへの変換処理を行う。
【０１１５】
上記の各判定により問合せが意味的に正しい場合、問合せに指定された次元から集約データキューブテーブルの参照か、多次元データベースモデルの参照か判定する（２３０２）。集約データキューブの参照であれば、その集約データキューブが実体化されているか否かを集約データキューブテーブルの実体化状態コードを参照して判定する（２３０３）。
【０１１６】
集約データキューブが実体化されていなければ、その集約データキューブを要求時集約計算するために要求時集約計算処理３１０１を呼び出す。
実行コードの生成２３０５では問合せの内容に応じた実行コードを生成する。また上記処理以外に問合せを実行するＢＥＳを特定化する処理２２０３のためにＦＥＳ多次元ブロックインデクスを特定する。多次元データモデルの参照の場合、多次元データベーステーブルからデータキューブテーブルへのポインタ１３０３からデータキューブテーブルを参照し、ＦＥＳ多次元ブロックインデクスへのポインタ１５０３を取得する。集約データキューブテーブルの参照の場合、現在処理しようとしている集約データキューブに対応する集約データキューブテーブルのエントリ上のデータ格納位置ポインタ１６０７からデータキューブテーブルを参照し、ＦＥＳ多次元ブロックインデクスへのポインタを取得する。
【０１１７】
図２４は多次元データ検索実行手順を示すフローチャートである。多次元データ検索実行手順はＢＥＳ上の多次元ブロックインデクスとキューブデータを参照し、問合せ条件を満たすセルデータを検索し、その結果をデータ併合処理に渡す処理を行う。
【０１１８】
多次元データ検索実行はＦＥＳがＢＥＳにその実行を要求した時点で起動する。ＦＥＳからは多次元データ検索実行を行うために必要な問合せ情報（実行コード）が転送される。また結果をどこで併合するかも同時に転送される。
【０１１９】
上記が転送されると、検索結果をデータ併合処理に転送するためのセルデータ転送用バッファを確保しバッファ情報（バッファの現ポインタ等）を初期化する（２４０１）。
【０１２０】
次に問合せに記述された多次元データモデルまたは集約キューブデータの多次元ブロック化範囲テーブルをデータキューブテーブルから取得する（２４０２）。  ＦＥＳから送信する問合せの条件には各次元毎の検索条件がある。検索条件から各次元毎にどのブロックＩＤを検索するかを決める。その決定は実行コード中の検索条件に保持されたメンバＩＤによって行われ、多次元ブロック化範囲テーブルの次元メンバ範囲テーブル１７０５のメンバＩＤ１７０３（メンバＩＤ値を保持）からブロック座標１７０４を決める。上記処理を各次元の検索条件に適用し、各次元毎に検索範囲の開始ブロック座標、終了ブロック座標の組みが複数個決まる。開始ブロック座標と終了ブロック座標が検索時のある次元のブロック参照範囲となる（２４０３）。
【０１２１】
各次元のブロック参照範囲が決定されると、検索方向に沿って多次元データ検索が行われる。検索方向とは検索結果を取得する時の次元のメンバの昇順、降順および次元の並びである。この順序関係で検索方向が決まる。またこの並びはデータ併合する時のトーナメント併合の選択優先条件にもなる。
上記検索方向に従い、次に読み出す次元の参照ブロックを移動する（２４０４）。
【０１２２】
移動した各次元の現ブロック座標をパラメタとしてＢＥＳ多次元ブロックインデクス位置計算２５００を呼び出す。多次元インデクス位置計算は各次元の現ブロックＩＤに対応する多次元ブロックインデクスのページＩＤとページ上のオフセットを返却する。
【０１２３】
返却されたページＩＤから多次元ブロックインデクスの対応ページを取得し、同オフセットから多次元ブロックインデクスのページＩＤ格納域１９１０を参照してページＩＤを取得する（２４０６）。
【０１２４】
ページＩＤに対応するキューブデータのページを取得する（２４０７）。
上記の結果取得されたページ内に問合せを満たすセルデータがある。
【０１２５】
次にページ内のセルデータの検索について述べる。
取得ページ内に未参照セルデータがあるか無いかを圧縮配置型セルデータページの場合は格納セル数、線形配置型データページの場合はページ内セル数と参照セル数カウンタの比較により行う。参照セル数カウンタはページ内セル参照開始時に初期化する（２４０８）。
【０１２６】
参照セル数カウンタに対応するセルデータが問合せ条件を満足するか否かの判定を行う。問合せ条件を満足するか否かの処理は最初にセルＩＤを各次元のメンバＩＤに戻すことから行う。メンバＩＤへの逆変換は以下である
（１）圧縮配置型セルデータページの場合
セルデータのセルＩＤを復元し、セルＩＤから各次元のメンバＩＤ値に戻す。メンバＩＤ値はメンバＩＤと同値である。
【０１２７】
（２）線形配置型データページの場合
線形配置型データページ上のセルデータの場合、ブロックＩＤに対応するメンバＩＤからそのページの開始セルＩＤが決まるので、そこから処理しようとするセルデータのセルＩＤを計算する。（セルＩＤ＝開始セルＩＤ＋参照セル数カウンタ）同セルＩＤから各次元のメンバＩＤ値、即ちメンバＩＤに戻す。
【０１２８】
メンバＩＤに戻し、そのメンバＩＤが問合せの条件を満足するか否か判定し、セルレコードの値の条件が問合せに指定されていればそれを判定する（２４０９）。
【０１２９】
２４０９においてそのセルデータが問合せ条件を満足する場合、対象セルデータを併合処理用セルデータ転送バッファへ複写、バッファ情報を更新する（２４１０）。併合処理用セルデータ転送バッファが満杯になったか否かバッファ情報から判定する。
【０１３０】
２４１１においてセルデータ転送バッファが満杯になった場合、データ併合処理へ同バッファを転送し、バッファ情報を初期化状態にした後、参照セル数カウンタを１増分し、２４０８の処理へ戻る。２４１１においてセルデータ転送バッファがまだ満杯でない場合、参照セル数カウンタを１増分し、２４０８の処理へ戻る。
【０１３１】
２４０９でセルデータが問合せ条件を満足しない場合、次のセルデータを読むために参照セル数カウンタを１増分し、２４０８の処理へ戻る。２４０８の処理でページ内の全セルの条件判定を終了したならば、オーバフローページＩＤ２０２１または２１２１を参照し、オーバフローページが存在するか否か判定する（２４１３）。
【０１３２】
オーバフローページがある場合、そのオーバフローページＩＤからページを取得し、参照セル数カウンタを初期化し、再度２４０８の未判定セルの有無処理を行う。オーバフローページが無い場合、そのブロックＩＤの参照は終了したのでブロック参照範囲を全て検索したか否か判定する（２４１５）。
【０１３３】
ブロック参照範囲を全て検索していない場合、２４０４の処理に戻り、次のブロックの参照を行う。すべてのブロック参照範囲の検索が終了した場合、セルデータ転送用バッファに残っているセルデータ群と多次元データ検索実行が終了したことを示す終了コードをデータ併合処理へ転送後、セルデータ転送用バッファを解放し、多次元データ検索実行処理を終了する。
【０１３４】
図２５は多次元ブロックインデクス位置計算処理を示すフローチャートである。  各次元のブロック範囲の個数と各次元のブロック座標から多次元ブロックインデクスのセルＩＤを計算する（２５０１）。
【０１３５】
対象多次元ブロックインデクスのセルレコード長と多次元ブロックインデクスの先頭ページＩＤ、ページ長からセルＩＤに対応するページＩＤ、ページ上のオフセットを計算する。結果を要求者に返却する（２５０２）。
【０１３６】
図２６は検索結果データ併合処理手順を示すフローチャートである。検索結果データ併合処理手順は図２４で説明した多次元データ検索実行の処理の一貫として検索セルデータを参照順序に従い、クライアントへ返却する。
【０１３７】
検索結果データ併合はＦＥＳが任意ＢＥＳにその実行を要求した時に起動する。ＦＥＳからはどのＢＥＳからデータが転送され、どの順序で結果をクライアントに返却するかの情報が転送される。
【０１３８】
検索結果データ併合処理では最初に併合対象ＢＥＳ数分の多次元スキャン結果受信領域とユーザ返却データ領域を確保する（２６０１）。ＢＥＳからのデータ受信待ちに入る（２６０２）。全ＢＥＳが多次元データ検索処理を終了したか判定する（２６０３）。全ＢＥＳが多次元データ検索処理を終了していない場合、終了コードを受信していない全てのＢＥＳからの多次元データ検索の結果が受信されているか否か判定する（２６０４）。
【０１３９】
もし未終了のＢＥＳの多次元データ検索が終了している場合、各ＢＥＳの参照順序に従いバッファからユーザ返却領域に受信結果を複写する（２６０５）。ユーザ返却データ領域が満杯か否か判定する（２６０６）。
【０１４０】
返却データ領域が満杯の場合、同作業領域の結果を一時的に作業領域へ保持する。作業領域は返却データ領域に比べ十分な記憶容量を持った記憶媒体である。ユーザ返却データ領域が満杯でないか、作業領域への保持が終了した場合、まだ終了していない任意のＢＥＳの多次元データ検索結果受信領域が空になったか否か判定する（２６０８）。
【０１４１】
空になった場合、そのＢＥＳのデータを受信するためにＢＥＳからのデータ受信待ち（２６０２）に入る。全てのＢＥＳからの多次元データ検索が終了し、全データを作業領域に保持した場合、多次元データ検索結果受信領域を解放する（２６０９）。
【０１４２】
図２７は、要求時集約計算処理の中間結果をＦＥＳメモリ上に格納するためのデータ構造を示す図である。要求時集約計算で求める集約データキューブを、以後、要求時生成集約データキューブと呼ぶ。
【０１４３】
要求時生成集約データキューブは、ＦＥＳの主メモリ上に格納ページ形式で保持される。主メモリ領域に制限がある場合、確保できるページ数が限られ、主メモリ上で同時に集計できる集約データの範囲も限られる。この範囲を、以後、同時集計範囲と呼ぶ。
【０１４４】
集計メンバ範囲リスト２７００は、同時集計範囲を特定する際や、集約計算中間結果を保持する主メモリ上の領域を特定する場合に参照される。集計メンバ範囲リスト２７００は、集計メンバ範囲２７０１と、集計結果格納領域へのポインタ２７０２からなる。このリストのひとつのエントリは、集計で求める集約データキューブのひとつのブロックに対応する。
【０１４５】
集計メンバ範囲２７０１には、同時集計範囲に含まれる要求時生成集約データキューブの各次元のメンバ範囲の開始メンバＩＤと終了メンバＩＤを格納する。開始メンバＩＤと終了メンバＩＤの決定方法は、後述するブロック検索範囲決定処理手順３４０１において説明する。集計メンバ範囲２７０１は、同時集計範囲の集約データを生成し終えた時点で、未処理の範囲に更新される。集計結果格納領域へのポインタ２７０２には、集約計算中間結果を保持するための主メモリ上の領域へのポインタを格納する。
【０１４６】
主メモリ上ページ領域２７０３から２７０４は、ＦＥＳで集計するデータを格納するための、主メモリ上のページ領域である。要求時集約計算処理では、集計メンバ範囲リスト２７００を作成した後、同リストのエントリ数だけのページ領域を主メモリ上に確保する。この例では、２つのページ領域を主メモリ上に確保している。主メモリ上ページ領域２７０３から２７０４に格納する内容については、後述する。
【０１４７】
図２８は、要求時集約計算処理におけるブロック読み出し順を説明する図である。要求時集約計算処理の集約元データキューブを集約計算対象データキューブと呼ぶ。説明を具体化するため、例として、図３の多次元データベースモデル定義例で定義した多次元データベースにおいて、図８の多次元論理空間８０１に対する集約計算を実行し、８０４を生成する処理を下記に示す。
【０１４８】
多次元論理ブロック空間２８０１Ａから２８０１Ｄは、集約計算対象データキューブの多次元論理ブロック部分空間であり、「商品」次元のメンバ範囲が、それぞれ、メンバＩＤ１〜３、４〜５、６、７〜８の空間に対応する。多次元論理ブロック空間２８０１Ａから２８０１Ｄの左右軸には「期間」次元のメンバ範囲、上下軸には「マーケット」次元のメンバ範囲を、メンバＩＤで記述している。次元のメンバ範囲の組合せに対応するひとつの四角形が、ひとつの多次元ブロックに対応する。各ブロックは、後述する図５０の対角割当て処理に従って、対角線上に並ぶブロックがＢＥＳの同一ハードディスクに割当てられている。四角形の中に記述している数字は、任意のひとつのハードディスクに格納しているブロックを読み出す順番を表している。
【０１４９】
ここで、図２８の例により、ひとつのハードディスク上に格納しているブロックの読みだし手順を説明する。この説明では、ブロックの位置を表すメンバ範囲を、（「商品」のメンバＩＤの範囲、「マーケット」のメンバＩＤの範囲、「期間」のメンバＩＤの範囲）という形式で記述する。まず、最初に読み出す対角線上の列を決め、先頭のブロックのメンバ範囲、（１〜３、１、１〜８）を取得する。次に、この範囲が、ＦＥＳから受信した集計メンバ範囲２７０１に、全次元において一部分でも重なっているかどうかを判定する。この例では重なっていると判定されるので、（１〜３、１、１〜８）のブロックを読み出す。次に、多次元論理ブロック空間の対角線上に並ぶブロックを読み出すために、全次元のメンバ範囲をひとつ進めて、メンバ範囲（４〜５、２、９〜１１）を取得する。ここで再び、取得した範囲が集計メンバ範囲２７０１に、全次元において一部分でも重なっているかどうかを判定し、重なっていると判定されるので、ブロックを読み出す。同様にして、メンバ範囲（６、３、１２〜１６）のブロックを読み出す。次に、全次元のメンバ範囲をひとつ進めた範囲（７〜８、４〜６、１７〜２１）を取得し、集計メンバ範囲２７０１と比較すると、「マーケット」「期間」の２つの次元についてメンバ範囲が重なっていないため、ブロックは読み出さない。ここで、集計メンバ範囲２７０１の範囲外の空間に入ったことがわかる。そこで、同一のハードディスク上に格納している次の対角線上の列を決め、この列の先頭ブロックのメンバ範囲（１〜３、２、１２〜１６）を取得する。以後、集計するブロックがなくなるまで、前述の処理を繰り返す。
【０１５０】
図２９は、要求時集約計算処理の中間結果をＢＥＳメモリ上に格納するためのデータ構造を示す図である。各ＢＥＳでは、ＦＥＳから、要求時生成集約データキューブと集計対象データキューブの各次元のレベルＩＤを受け取る。両データキューブの同一次元について、レベルＩＤを比較し、要求時生成集約データキューブのレベルＩＤの方が小さい値である次元を集約次元、そのレベルＩＤを集約レベルとする。この例では、「商品」、「マーケット」、「期間」のそれぞれの次元について、要求時生成集約データキューブのレベルＩＤは０、２、３、集計対象データキューブのレベルＩＤは３、２、３である。これらを比較すると、「商品」次元のレベルについて要求時生成集約データキューブの方が小さいので、「商品」次元を集約次元とする。また、集約レベルは０である。
【０１５１】
ＢＥＳ集約計算中間結果リスト２９００Ａから２９００Ｃは、各ＢＥＳにおいて、図２８で説明した規則に従って読み出したブロックに格納しているデータについて、集約レベルに集約した結果を格納するリストである。このリストは、セルＩＤ２９０１Ａから２９０１Ｃと、セルレコード集約計算中間結果２９０２Ａから２９０２Ｃからなる。セルＩＤ２９０１Ａから２９０１Ｃには、各次元のメンバＩＤから算出した、要求時生成集約データキューブのセルＩＤを格納する。セルレコード集約計算中間結果２９０２Ａから２９０２Ｃには、読み出したデータを集約計算した結果を格納する。ＢＥＳ集約計算中間結果リスト２９００Ａから２９００Ｃのひとつのエントリは、要求時生成集約データキューブのひとつのセルデータに対応する。
【０１５２】
集約計算によって生成されたセルＩＤ２９０１Ａから２９０１Ｃと、このＩＤに対応するセルレコード集約計算中間結果２９０２Ａから２９０２Ｃは、生成された順番でリストに追加され、読み出したブロックのすべてのデータについて処理を終了した時点で、ＦＥＳに返却される。
【０１５３】
データキューブに対応する格納形式識別コード１５０２に格納されている格納形式コードが、圧縮配置型の場合には図２０の圧縮配置型セルデータページの構成、線形配置型の場合には図２１の線形配置型セルデータページの構成に従って生成される。
【０１５４】
ＢＥＳから返却されたＢＥＳ集約計算中間結果リスト２９００Ａから２９００Ｃのセルレコードは、ＦＥＳで同一セルＩＤのレコードを集めて集約計算される。主メモリ上ページ領域２７０３から２７０４のセルレコードには、ＦＥＳで計算した集約計算中間結果に対応するセルＩＤを持つセルレコードを格納する。
【０１５５】
図２７の主メモリ上ページ領域２７０３から２７０４内のデータ構造は、要求時生成集約データキューブに対応する格納形式識別コード１５０２に格納されている格納形式コードが、圧縮配置型の場合には図２０の圧縮配置型セルデータページの構成、線形配置型の場合には図２１の線形配置型セルデータページの構成に従って生成される。
【０１５６】
ＢＥＳから返却されたＢＥＳ集約計算中間結果リスト２９００Ａから２９００Ｃのセルレコードは、ＦＥＳで同一セルＩＤのレコードを集めて集約計算される。主メモリ上ページ領域２７０３から２７０４のセルレコードには、ＦＥＳで計算した集約計算中間結果に対応するセルＩＤを持つセルレコードを格納する。
【０１５７】
図３０は、要求時集約計算処理の最終結果の格納構造を示す図である。ＦＥＳ１１０１には、集約計算結果格納用データ構造作成処理において作成したＦＥＳ多次元ブロックインデクス１１３０がある。ＢＥＳ１１０２、１１０３には、それぞれ、集約計算結果格納用データ構造作成処理において作成したＢＥＳ多次元ブロックインデクス１１３１、３００４がある。バッファ機能付きメモリ領域３６００Ａから３６００Ｂは、集約計算の最終結果を一時的に格納するための、バッファ機能を備えたメモリ領域である。
【０１５８】
ページ３００５Ａから３００５Ｂは、集約計算最終結果を一時的に格納するためのページである。メモリをオーバーフローしたページは、ハードディスク上の作業用領域に一時的に格納される。
【０１５９】
ＦＥＳ１１０１では、ＦＥＳ多次元ブロックインデクス１１３０が、主メモリ上ページ領域２７０３から２７０４に格納しているページ形式の集約計算中間結果のＢＥＳへの割当てを決める。ＦＥＳ１１０１は、各集約計算中間結果を割当てるＢＥＳに、それらの集約計算中間結果に対応する集計メンバ範囲２７０１を転送する。ＢＥＳ１１０２、１１０３では、ＦＥＳ１１０１から受信した集計メンバ範囲２７０１を入力として多次元ブロックインデクス位置決定処理を呼び出し、ＢＥＳ多次元ブロックインデクス１１３１、３００４の位置を求める。ＢＥＳ１１０２、１１０３では、割当てられたページ形式の集約計算中間結果を格納するページ３００５Ａから３００５Ｂを、バッファ機能付きメモリ領域３００６Ａから３００６Ｂに確保する。ＢＥＳ多次元ブロックインデクス１１３１、３００４の求めた位置に、確保したページのページＩＤを格納する。ＦＥＳ１１０１は、メモリ上ページ領域２７０３から２７０４に格納しているページ形式の集約計算中間結果を、割当てたＢＥＳに転送する。ＦＥＳ１１０１から受信したページ形式の集約中間結果を、確保したページ３００５Ａから３００５Ｂに格納する。
【０１６０】
図３１は、要求時集約計算処理３１０１の手順を示すフローチャートであり、図２３のステップ３１０１での処理の詳細を具体化したものである。
まずステップ３１０２で、集約データキューブテーブル１６００から要求時生成集約データキューブの集約データＩＤに対応するエントリを検索して、集約データキューブテーブルエントリへのポインタ１６０２を取得し、ステップ３１０３へ進む。
【０１６１】
ステップ３１０３では、取得したポインタが素データキューブ用の値かどうかを判定し、素データキューブ用の値であればステップ３１１０へ進み、素データキューブ用の値でなければ取得したポインタが指しているエントリの集約データＩＤ１６０１を集計対象データＩＤ変数に格納し、ステップ３２０１へ進む。
【０１６２】
ステップ３１１０では、図１４の多次元データモデル定義情報の次元メンバテーブルのレベルＩＤを検索して、各次元のレベルＩＤの最大値を集計対象データＩＤ変数に格納し、ステップ３２０１へ進む。
【０１６３】
ステップ３２０１では、集約計算結果を格納するためのデータ構造を作成し、ステップ３３０１へ進む。
ステップ３３０１では、並列集約計算処理を実行し、ステップ３１０６へ進む。  ステップ３１０６では、生成した集約計算結果をユーザに返却し、ステップ３１０７へ進む。
【０１６４】
ステップ３１０７では、集約データキューブテーブル１６００から、要求時生成集約データキューブの集約データＩＤと集約データＩＤ１６０１が一致するエントリを検索して、実体化状態識別コード１６０６が実体化待ち状態（図１６の例では２）であるかどうかを判定し、実体化待ち状態であればステップ３８１０へ進み、実体化待ち状態でなければステップ３１０８へ進む。
【０１６５】
ステップ３８０１では、実体化集約データキューブの入替えを実行し、本手順を終了する。
ステップ３１０８では、要求時集約計算で求めた集約データキューブの格納のために確保した領域を解放し、本手順を終了する。
【０１６６】
図３２は、集約計算結果格納用データ構造作成処理３２０１の手順を示すフローチャートであり、図３１のステップ３２０１での処理の詳細を具体化したものである。
【０１６７】
まずステップ４８００で、要求時生成集約データキューブの集約データＩＤを入力して、要求時生成集約データキューブ用の多次元ブロック化メンバ範囲テーブル、具体的には、図１１のＦＥＳ多次元ブロック化メンバ範囲テーブル１１２０とＢＥＳ多次元ブロック化メンバ範囲テーブル１１２１を生成し、ステップ４９００へ進む。
【０１６８】
ステップ４９００では、要求時生成集約データキューブの集約データＩＤを入力して、要求時生成集約データキューブ用の多次元ブロックインデクス、具体的には、図３０のＦＥＳ多次元ブロックインデクス１１３０とＢＥＳ多次元ブロックインデクス１１３１、３００４を生成し、本手順を終了する。
【０１６９】
図３３は、並列集約計算処理の制御３３０１の手順を示すフローチャートであり、図３１のステップ３３０１での処理の詳細を具体化したものである。
まずステップ３４０１で、ＦＥＳの主メモリ上で同時に集約計算するブロック範囲を決定し、ステップ３５０１へ進む。
ステップ３５０１では、各ＢＥＳにおいて集約計算処理を実行し、ステップ３６０１へ進む。
【０１７０】
ステップ３６０１では、各ＢＥＳの集約計算中間結果を集約計算して、ページ形式の集約計算中間結果を生成し、ステップ３３０５へ進む。
ステップ３３０５では、ＦＥＳで生成したページ形式の集約計算中間結果をＢＥＳに転送し、ステップ３７０１へ進む。
ステップ３７０１では、ＦＥＳから転送されたページ形式の集約計算中間結果を、最終集約計算結果として格納し、ステップ３３０７へ進む。
【０１７１】
ステップ３３０７では、ＦＥＳ多次元ブロック化メンバ範囲テーブル１１２０の各次元のメンバ範囲の組合せを処理したかどうかを判定し、すべて実行した場合には本手順を終了し、まだ実行していないメンバ範囲の組合せがある場合にはステップ３４０１に戻って、以後上述の手順を繰り返す。
【０１７２】
図３４は、ブロック検索範囲決定処理３４０１の手順を示すフローチャートであり、図３３のステップ３４０１での処理の詳細を具体化したものである。
まずステップ３４０２で、多次元データベースシステム管理者が設定したＦＥＳの集計用ページ数の上限を取得して、ＦＥＳ多次元ブロック化メンバ範囲テーブル１１２０からこのページ数上限以下の個数のメンバ範囲組合せ（図２７の例では、「商品」、「マーケット」、「期間」の各次元メンバ範囲の開始メンバＩＤと終了メンバＩＤが、それぞれ、１と８、１と３、１と７の組合せと、１と８、１と３、８と１５の組合せ）を選択し、ステップ３４０３へ進む。
【０１７３】
ステップ３４０３では、集計メンバ範囲リスト２７００の領域を確保して、集計メンバ範囲２７０１に選択したメンバ範囲を登録し、ステップ３４０４へ進む。  ステップ３４０４では、集計メンバ範囲リスト２７００のエントリ数だけの集約計算用の主メモリ上ページ領域２７０３から２７０４を確保し、ステップ３４０５へ進む。
【０１７４】
ステップ３４０５では、集計メンバ範囲リスト２７００の集約計算結果格納領域へのポインタ２７０２に、確保した主メモリ上ページ領域２７０３から２７０４の各先頭アドレスを格納し、本手順を終了する。
【０１７５】
図３５は、ＢＥＳ側での集約計算処理３５０１の手順を示すフローチャートであり、図３３のステップ３５０１での処理の詳細を具体化したものである。
【０１７６】
まずステップ３５０２で、ＦＥＳに置かれている集計メンバ範囲リスト２７００から集計メンバ範囲２７０１のメンバＩＤを取得し、ステップ３５０３へ進む。  ステップ３５０３では、図２８で説明したブロック読み出し手順により、集計する範囲内のブロックを対角線上に並ぶ順に読み出す。
【０１７７】
ステップ３５０４では、読み出したデータを集約計算して、ＢＥＳ集約計算結果リスト２９００Ａから２９００Ｃに登録し、ステップ３５０５へ進む。
ステップ３５０５では、ＢＥＳ集約結果リスト２９００Ａから２９００ＣをＦＥＳに転送し、本手順を終了する。
【０１７８】
図３６は、ＦＥＳ側での集約計算処理３６０１の手順を示すフローチャートであり、図３３のステップ３６０１での処理の詳細を具体化したものである。
まずステップ３６０２で、各ＢＥＳの集約計算中間結果を受信し、ステップ３６０３へ進む。
【０１７９】
ステップ３６０３では、ＢＥＳから受信した集約計算中間結果のセルＩＤに対応するメンバを計算で求め、集計メンバ範囲リスト２７００から、求めたメンバを範囲に含む集計メンバ範囲２７０１を持つエントリを検索し、ステップ３６０４へ進む。
【０１８０】
ステップ３６０４では、検索したエントリの集約計算結果格納領域へのポインタ２７０２に主メモリ上ページ領域のアドレスが格納されているかどうかを判定し、格納されていればステップ３６０５へ進み、格納されていなければステップ３６０６へ進む。
【０１８１】
ステップ３６０５では、集約計算結果格納領域へのポインタ２７０２に格納されているアドレスを先頭とするページ領域に、ＢＥＳより受信した集約計算中間結果と同一のセルＩＤを持つセルレコードがあるかどうかを判定し、あればＢＥＳより受信した集約計算中間結果のセルレコードとページ領域の同セルＩＤのセルレコードの集約計算結果を格納し、なければページ領域にＢＥＳより受信した集約計算中間結果を格納する。次にステップ３６０６へ進む。
【０１８２】
ステップ３６０６では、ＢＥＳから受信する集約計算中間結果がまだあるかどうかを判定し、あればステップ３６０２に戻って、以後上述の手順を繰返し、なければ本手順を終了する。
【０１８３】
図３７は、ＢＥＳ側での最終集約計算結果の格納処理３７０１の手順を示すフローチャートであり、図３３のステップ３７０１での処理の詳細を具体化したものである。
【０１８４】
まずステップ３７０２で、ＦＥＳからＢＥＳに格納するページ形式の集約計算結果２７０３から２７０４と、各ページ形式の集約結果に対応する集計メンバ範囲２７０１を受信し、ステップ３７０３へ進む。
ステップ３７０３では、受信した集計メンバ範囲から、多次元ブロック位置取得関数によってＢＥＳ多次元ブロックインデクス１１３１、３００４の該当位置を取得し、ステップ３７０４へ進む。
【０１８５】
ステップ３７０４では、各ＢＥＳのバッファ機能付き一時メモリ領域３００６Ａから３００６Ｂに集約計算最終結果格納ページ３００５Ａから３００５Ｂを確保し、ステップ３７０５へ進む。
ステップ３７０５では、該当するＢＥＳ多次元ブロックインデクスに、確保した集約計算最終結果格納ページ３００５Ａから３００５ＢのページＩＤを登録し、ステップ３７０６へ進む。
【０１８６】
ステップ３７０６では、確保した集約計算最終結果格納ページ３００５Ａから３００５Ｂに、ＦＥＳから受信したページ形式の集約計算結果データ２７０３から２７０４の内容を格納し、ステップ３７０７へ進む。
ステップ３７０７では、ＦＥＳから受け取るページ形式の集約計算結果データがまだあるかどうかを判定し、あればステップ３７０２に戻って、以後上述の手順を繰返し、なければ本手順を終了する。
【０１８７】
図３８は、実体化集約データキューブの入替え処理の手順を示すフローチャートであり、図３１のステップ３８０１での処理の詳細を具体化したものである。まずステップ３８０２で、集約データキューブテーブル１６００から、集約データＩＤ１６０１が要求時生成集約データキューブの集約データＩＤに一致するエントリを検索して、このエントリの有効セル数１６０３に格納している有効セル数（図１６の例では１４４）を取得し、ステップ３８０３へ進む。
【０１８８】
ステップ３８０３では、集約データキューブテーブル１６００から、実体化状態識別コード１６０６が削除待ち状態（図１６の例では３）であるエントリを検索し、ステップ３８０４へ進む。
ステップ３８０４では、検索で取得した削除待ち状態の集約データキューブテーブル１６００のエントリの有効セル数１６０３に格納している有効セル数を、削除データ件数合計に加え、ステップ３８０５へ進む。
【０１８９】
ステップ３８０５では、検索で取得した削除待ち状態の集約データキューブテーブル１６００のエントリから、データキューブテーブルエントリへのポインタ１６０７に格納しているポインタを取得して、このポインタが指すデータキューブテーブル１５００のエントリを参照し、ＦＥＳ多次元ブロックインデクスまたはキューブデータへのポインタ１５０３に格納しているＦＥＳ多次元ブロックインデクスへのポインタを取得する。このポインタが指している先ＦＥＳ多次元ブロックインデクス１１０１と、各ＢＥＳの削除する集約データに対応するＢＥＳ多次元ブロックインデクス１１０２と、集約データを格納しているページを削除し、削除が終了した時点で集約データキューブテーブル１６００の該当するエントリの実体化状態識別コードを非実体化（図１６の例では０）に変更し、ステップ３８０６へ進む。
【０１９０】
ステップ３８０６では、ステップ３８０２で取得した、実体化する集約データキューブの有効セル数が、削除データ件数合計以下かどうかを判定し、削除データ件数合計以下であればステップ３８０７へ進み、削除データ件数合計より大きければステップ３８０３に戻って以後上述の処理を繰り返す。
【０１９１】
ステップ３８０７では、ＢＥＳのバッファ付き一時メモリ領域３００６Ａから３００６Ｂに格納している集約計算最終結果格納ページ３００５Ａから３００５Ｂを、これらが格納されている各ＢＥＳのハードディスクに書き出し、ステップ３８０８へ進む。
ステップ３８０８では、集約データキューブテーブル１６００から、本処理でハードディスクに書き出した集約データキューブに対応するエントリを検索し、このエントリの実体化状態識別コードを実体化状態（図１６の例では１）に変更し、本手順を終了する。
【０１９２】
図３９は、実体化集約データキューブの最適集合再計算処理３９０１の手順を示すフローチャートである。
この処理では、更新契機を示すフラグを使用する。以後、このフラグを更新契機フラグと呼ぶ。更新契機フラグは、任意の判定基準によって、実体化集約データキューブ集合を更新する時期と判定した場合に立てるフラグである。ここで、判定基準の一例を説明する。集約データキューブテーブル１６００の参照頻度１６０５の前回と現在の参照頻度について、全エントリの参照頻度の合計に対する各エントリの参照頻度の比率を求める。次に、各エントリについて、参照頻度の比率の現在と前回との差を求め、全エントリの差の合計が、任意のしきい値を超えたときに更新契機と判定する。
【０１９３】
ここから、実体化集約データキューブの最適集合再計算処理３９０１の手順を説明する。
まずステップ３９０２で、更新契機フラグが立っているかどうかを判定し、立っていればステップ３９０３へ進み、立っていなければ本手順を終了する。
【０１９４】
ステップ３９０３では、集約データキューブテーブル１６００の全エントリの参照頻度１６０５と有効セル数１６０３を取得し、ステップ３９０４へ進む。
ステップ３９０４では、参照頻度と有効セル数を使った任意のアルゴリズムにより、最適実体化集約データキューブ集合を決定し、ステップ３９０５へ進む。アルゴリズムの一例として、参照頻度１６０５の現在の参照頻度を有効セル数の重みとし、要求時に生成する集約データキューブを最小の計算コストで生成できるように実体化する集約データキューブを決定する方法がある。
【０１９５】
ステップ３９０５では、最適実体化集約データキューブ集合を決定した結果、集約データキューブテーブル１６００の実体化状態識別コードを、以下に示す規則で更新する。
【０１９６】
(1) 非実体化状態であったが実体化することが決まった集約データキューブの実体化識別コード→実体化待ち状態
(2) 実体化状態であったが実体化しないことが決まった集約データキューブの実体化識別コード→削除待ち状態
(3) 実体化待ち状態であったが実体化しないことが決まった集約データキューブの実体化識別コード→非実体化状態
(4) 削除待ち状態であったが実体化することが決まった集約データキューブの実体化識別コード→実体化状態
更新を終えた時点で、本手順を終了する。
【０１９７】
図４０は元データ解析とデータベース管理情報初期化に関する処理ブロック構成を示す。
元データファイル４０３０は、多次元データベース管理システムに格納される元データを保持する。元データはセルデータに変換される前のデータである。データ解析４００１は元データのデータ分布を解析し、多次元データベーステーブル１３００、次元メンバテーブル１４３１、ブロック化メンバ範囲テーブル１７００、集約データキューブテーブル１６００、データキューブテーブル１５００等を作成する。
【０１９８】
データベース初期化４００２はデータ解析が解析した上記の解析情報とデータモデル定義に従い、ＢＥＳ側にあるＢＥＳデータベース初期化４０１０から４０１２と連携してあらかじめ多次元ブロックインデクス（１１３１、４０４１、４０４２）やキューブデータ（１１４０、４０４３、４０４４）、オーバフローファイル等のデータベース構造を作成する。
【０１９９】
辞書４０２１はデータ解析時に作成されたテーブル群を格納、保持する。
ＤＤＳ４０２０は辞書を管理するデータ辞書サーバであり、データ解析で作成したテーブル群の辞書への格納やデータベース初期化やデータロード処理で必要とするテーブルの検索を行う。
【０２００】
図４１は元データのロードに関する構成である。
ローダ４１０１はデータモデル定義とデータ解析で作成した多次元データベーステーブル１３００、ブロック化メンバ範囲テーブル１７００、集約データキューブテーブル１６００、データキューブテーブル１５００に基づいて、元データファイル４００１を読み込み、ＢＥＳ側に存在するＢＥＳローダ（４１１０、４１１１、４１１２）と連携して多次元ブロックインデクス（１１３０、１１３１、４０４３、４０４４）にＢＥＳＩＤ、ページＩＤを格納し、キューブデータ（１１３１、４０４１、４０４２）にセルデータを格納する。
【０２０１】
図４２は多次元データベース管理システムが管理する物理記憶構成を格納するテーブル構成である。
物理記憶構成テーブル４２００は辞書に格納される。サーバＩＤ４２０１はＦＥＳ、ＢＥＳのＩＤである。デバイス名称４２０２は各物理記憶媒体の識別名である。空き容量４２０３はデバイス名称で識別される記憶媒体の使用可能な空き領域容量である。空き領域へのポインタ４２０４はその空き領域の最初のページＩＤを持つ。
【０２０２】
データロード処理は以下の３つのフェーズからなる。
（１）データ解析
元データのデータ分布、データ件数、各次元のメンバの数、メンバの値等を元データから解析する。
（２）データベース初期化
データ解析の解析結果を利用して多次元データベースや集約キューブデータを格納する格納構造を事前に作成する。
（３）データロード
元データをキューブデータに格納する。
【０２０３】
以下各フェーズの内容をフローチャートを用いて説明する。
図４３は元データ解析処理手順を示すフローチャートである。
元データ解析４３００はユーザパラメタを読み込む（４３０１）。
ユーザパラメタは、どの多次元データベースモデルの元データを解析するか、どの元データファイルを解析の対象とするか、解析対象元データ数等を指示する。尚、本実施例ではすべての元データを解析対象とする。
【０２０４】
ユーザパラメタから処理対象の多次元データモデルテーブルとそれに関連する次元テーブルと次元メンバテーブルを辞書から取得する（４３０２）。
次元メンバテーブルは多次元データベースモデルを定義した段階でユーザが定義する場合とデータ解析により次元メンバテーブルを自動的に生成する場合がある。定義されている場合は、その内容に基づいて処理を行う。未定義の場合はメンバ情報を取得するために、一度元データを解析し、次元メンバテーブルを作成、辞書に格納する。
【０２０５】
次元メンバテーブルから、各次元、階層レベルが持つメンバ数を調べ、元データの統計情報を取得するために各次元の組合せについて多次元論理データ空間ビットマップ記憶領域を割当てる。多次元論理データ空間ビットマップ記憶領域は１ビットで多次元論理データ空間の座標を示すビットマップであり、その多次元論理データ空間の疎密率（＝有効な（実在する）座標の個数÷多次元論理データ空間の座標の個数）を得るために生成する。各次元の組合せにおいて、メンバ数が大量であったり次元組合せ数が大きく任意の記憶容量を超える場合、生成可能な次元組合せの多次元論理データ空間ビットマップ記憶領域のみを作成する（４３０３）。
【０２０６】
元データ統計情報取得処理４４００は上記生成された各多次元の多次元論理データ空間ビットマップを渡され、ビット設定された多次元論理データ空間ビットマップと解析データ件数を返す。また多次元論理データ空間ビットマップからそれに対応する集約キューブデータの疎密率を計算される（４４００）。
【０２０７】
集約データキューブテーブルとデータキューブテーブルを作成し、集約データキューブの各エントリ毎に疎密率を計算する。その疎密率を評価基準として最適な実体化対象を選択し、集約データキューブの実体化状態識別コードに実体化の設定を行う（４３０５）。
【０２０８】
上記決定後、格納構造の決定を呼び出し、集約データキューブテーブルの各対象に対して格納構造の決定を行い、データキューブテーブルに格納する（４５００）。
集約データキューブテーブル、データキューブテーブルを辞書へ格納し（４３０６）、データ解析を終了する。
【０２０９】
図４４は元データの統計情報を取得手順を示すフローチャートである。
元データ件数をカウントするためのカウンタを初期化する（４４０１）。
元データファイルから一件元データを読む（４４０２）。
元データが終了か否か判定する（４４０３）。
元データがあるならば、元データの持つフィールドに対応する次元の各メンバ値に対応するメンバＩＤをそれぞれ決定し、セルＩＤを計算し、生成している多次元論理データ空間ビットマップの対応する座標上のビットを設定する（４４０４）。
【０２１０】
元データ件数を１件増分し次の元データを読む（４４０５）。
元データが終了した場合、元データ件数を元データ統計情報取得を呼び出した要求者に返却する（４４０６）。
【０２１１】
生成された多次元論理データ空間ビットマップに関してその有効件数をカウントし各集約データキューブ毎に疎密率を一時記憶領域に記憶する。カウントされなかった集約データキューブに関しては実在する集約データキューブから予測疎密率を計算し上記同様に一時記憶領域に記憶し、本処理ユニット要求者に返却する（４４０７）。
【０２１２】
図４５は格納構造の決定処理手順を示すフローチャートである。
集約データキューブと多次元論理データ空間ビットマップを入力として以下の処理を集約データキューブ数分繰り返す。
【０２１３】
対象集約キューブデータの実／予測疎密率が任意敷居値を超えるか否かを判定する。ここで任意敷居値はその多次元論理データ空間における有効な座標の数が多次元論理データ空間の座標の数に近い場合、ほとんどの座標にデータが存在すると判定し、格納形式を選択することを判定するための値であり、データ容量や生成時間等を考慮して決定する（４５０１）。
【０２１４】
多次元論理データ空間の座標数に対して任意敷居値を超える有効座標がある場合、データキューブテーブルの格納形式コードを線形配置型とする（４５０２）。  多次元論理データ空間の座標数に対して有効座標が任意敷居値を超えない場合、データキューブテーブルの格納形式コードを圧縮配置型とする（４５０３）。
上記を素キューブデータならびに集約キューブデータに適用する。
【０２１５】
図４６、図４７を用いてデータロード処理手順について述べる。実体化対象集約キューブデータの要約計算は先に述べた要求時集約計算処理と同様の処理で行われる。
物理記憶構成テーブル、多次元データベーステーブル、次元メンバテーブルを辞書より取得する（４６０１）。
【０２１６】
データ解析で求めた元データ件数から各ＢＥＳへの平均分割件数を決定する（４６０２）。
ＢＥＳ平均分割件数をパラメタとしてＦＥＳ次元メンバ範囲生成を呼び出し、ＦＥＳ用ブロック化メンバ範囲テーブルを生成する（４８００）。
上記で生成したＦＥＳ用ブロック化メンバ範囲テーブルを辞書に記憶する（４６０４）。
【０２１７】
各ＢＥＳ毎のページ当たり平均データ件数を決定する（４６０５）。
ページ当たり平均データ件数をパラメタとしてＢＥＳ次元メンバ範囲生成を呼び出し、ＢＥＳ用ブロック化メンバ範囲テーブルを生成する（４８００）。
上記で生成したＢＥＳ用ブロック化メンバ範囲テーブルを辞書に記憶する（４６０４）。
【０２１８】
ＦＥＳ、ＢＥＳ用のブロックインデクスを割当て、初期化するために上記で作成したブロック化メンバ範囲テーブルを各ＦＥＳ、ＢＥＳで稼動するデータベース初期化処理に転送し、ＦＥＳ、ＢＥＳ用多次元ブロックインデクスを作成する。（４７０１）
上記により、ＦＥＳ、ＢＥＳの多次元ブロックインデクスとキューブデータの格納構造を初期化する。データロードは格納構造が初期化した後に元データを格納する。
【０２１９】
最初にＢＥＳ用作業領域を確保する。本領域はＦＥＳ側で各ＢＥＳに元データを分配する時の元データの一時的なバッファとして用意し、ＢＥＳ個数分確保される（４７０４）。
【０２２０】
元データファイルから元データを読む（４７０５）。
元データ読み込みが終了したか否か判定する（４７０６）。
【０２２１】
元データ読み込みが終了していなければ読み込んだ元データ上の次元に対応するフィールドの値を次元メンバテーブルを参照してメンバＩＤに変換する。元データ上に存在する各次元について上記処理を適用する。各次元のメンバＩＤが決定したならば、各次元のメンバＩＤについてＦＥＳのブロック化メンバ範囲テーブルを参照してブロック座標を決定し、ＦＥＳ多次元ブロックインデクスを参照して、元データの格納場所を決定する（４７０７）。
【０２２２】
上記で決定したメンバＩＤからセルＩＤを計算する（４７０８）。
元データ上に存在する次元に対応するフィールドを削除し、上記で決定したセルＩＤを付与してセルデータ化する（４７０９）。セルデータを格納ＢＥＳに対応するＢＥＳ用作業領域へ複写する（４７１０）。
【０２２３】
上記作業領域が満杯か否か判定する（４７１１）。
満杯でなければ次の元データを読む（４７０５）。
満杯であれば、対応するＢＥＳへ同作業領域データを転送し、ＢＥＳキューブデータの生成を行い（５１００）、次の元データを読み出す（４７０５）。元データ終了判定（４７０６）において、元データが終了したと判断された場合、各ＢＥＳ用の作業領域上に残っているセルデータを転送し、残りのセルデータによるＢＥＳキューブデータ生成を行う（５１００）。
上記終了後、各ＢＥＳ用作業領域を解放し（４７１４）、データロード処理を終了する。
【０２２４】
図４８はブロック化範囲テーブル生成を示すフローチャートである。
ブロック化範囲テーブルを作成する次元の個数をカウントする次元カウンタを初期化する（４８０１）。
ある次元のブロック化範囲個数をカウントする範囲カウンタを初期化する（４８０２）。
処理対象次元の範囲当たりデータ件数を計算する（４８０３）。元データ次元メンバテーブルを参照し、範囲当たりデータ件数まで各メンバ毎の件数をカウントする（４８０４）。
【０２２５】
上記範囲を範囲カウンタのブロック化範囲としてブロック化メンバ範囲テーブルに記憶し、範囲カウンタを１増分する（４８０５）。
範囲カウンタが最大範囲数を超えるか否か判定する（４８０６）。もし超えない場合、次のブロック化メンバ範囲の件数をカウントする（４８０７）。超えた場合、次元カウンタを１増分する。次元カウンタが多次元数を超えるか否か判定する（４８０８）。もし超えない場合、次の次元のブロック化メンバ範囲を決定する。超えた場合、次元メンバ範囲テーブル生成を終了する。
【０２２６】
図４９は多次元ブロックインデクスの生成処理手順を示すフローチャートである。
多次元ブロックインデクスは各次元のブロック範囲値の積で決定された多次元ブロックインデクスの任意座標から参照されるＢＥＳＩＤやページＩＤからセルデータ集合を決定するインデクス機能として利用する。また多次元ブロックインデクス生成はＦＥＳ多次元ブロックインデクス、ＢＥＳ多次元ブロックインデクスの生成に利用され、ＦＥＳ、ＢＥＳで稼動する処理である。
【０２２７】
多次元ブロックインデクスの生成では、ブロック化メンバ範囲テーブルと、ＦＥＳ、ＢＥＳの処理サーバ種別を入力パラメタとする。
ブロック化メンバ範囲テーブルの各次元の範囲の個数の積とページ長、ページヘッダ長、ＢＥＳＩＤ長またはページＩＤ長から、多次元ブロックインデクスの容量を計算する（４９０１）。上記で決定した容量分、多次元ブロックインデクスを記憶媒体に割当てる（４９０２）。
【０２２８】
生成サーバ種別を判定する（４９０３）。生成サーバ種別がＦＥＳの場合、多次元ブロックインデクスのセルにＢＥＳＩＤを対角割当てし（５０００）、処理を終了する。
【０２２９】
生成サーバ種別がＢＥＳの場合、ブロック化メンバ範囲テーブルの各次元の範囲の個数の積からキューブデータ、オーバフローデータの容量を計算する。ＢＥＳ用多次元ブロックインデクスのセル数とキューブデータのページ数は１対１になるように範囲を選択する。よってＢＥＳ用多次元ブロックインデクスのセル数×キューブデータページ長をキューブデータ容量とする（４９０５）。キューブデータ、オーバフローデータを記憶媒体の記憶領域に上記容量分割当てる（４９０６）。割当てた多次元ブロックインデクスのセルにキューブデータのページＩＤが対角上に割当てられるようページＩＤを設定し（５０００）処理を終了する。
【０２３０】
図５０は対角割当て手順を示すフローチャートである。
対角割当てについて述べる。本処理の例を図１２で示した。以下詳細を述べる。  資源割当て次元を決定する（５００１）。本例では単純に次元ＩＤの最も若いものを資源割当て次元と仮定する。資源割当て次元の機能は線形性を持つ資源との対応関係を割当てることで、次元メンバの追加の少ない次元を選択するのが望ましい。
【０２３１】
資源の初期割当てを行う（５００２）。図１２では以下のように割当てた。
商品次元の初期資源割当て
ブロックＩＤ（１、１、１）→資源番号 １
ブロックＩＤ（２、１、１）→資源番号 ２
ブロックＩＤ（３、１、１）→資源番号 ３
マーケット次元の初期資源割当て
ブロックＩＤ（１、１、１）→資源番号 １
ブロックＩＤ（１、２、１）→資源番号 ２
ブロックＩＤ（１、３、１）→資源番号 ３
期間次元の初期資源割当て
ブロックＩＤ（１、１、１）→資源番号 １
ブロックＩＤ（１、１、２）→資源番号 ２
ブロックＩＤ（１、１、３）→資源番号 ３
この例の場合、ブロックＩＤ（１、1、１）から各次元のブロックＩＤ方向に順番に資源を割当てる。割当てる資源がなくなった場合、最初の資源番号から割当て直す。
【０２３２】
次に次元ＩＤカウンタｉを初期化する（５００３）。次元ＩＤカウンタｉのブロックカウンタｊを初期化する。ブロックカウンタは多次元ブロック化メンバ範囲テーブル１７００の次元メンバ範囲テーブル１７０５の各エントリを示すカウンタである（５００４）。次元ＩＤｉ以外の次元のブロックカウンタを初期化する。ｉ以外のブロックカウンタは対角座標を決めるためのカウンタである（５００５）。上記により対角割当てを行うためのブロック初期座標が決められる。
【０２３３】
ブロック初期座標が決まると、その初期座標に先の初期割当てで割当てた資源番号を現資源番号として保持する（５００６）。次元ＩＤｉ以外の全次元のブロックカウンタを１増分しブロックＩＤの対角移動を行う（５００８）。
【０２３４】
各次元のブロックカウンタからブロックＩＤを計算し、同ブロックＩＤの資源に現資源番号を割当て、割当て次元に沿った隣接ブロックが異なる資源となるように資源を割当てる（５００７）。図１２では対角座標（２、２、２）の資源番号１が割当てられると、資源割当て次元に沿って資源を割当てる。
【０２３５】
本処理ではブロックＩＤに割当てられた資源について割当て次元の上位方向については現資源番号より１つ小さな資源番号を付与し、下位方向については現資源番号より１つ大きな資源番号を付与する。同資源番号付与を繰り返すことで割当て次元に沿って資源が割当てられる。
【０２３６】
次にｉ以外の次元のブロックカウンタが各次元のブロック化メンバ範囲の個数より小さいか否か判定し、対角座標割当て可能な範囲の判定を行う（５００９）。  範囲内でない場合、５００８の対角座標移動を行う。範囲外になった場合、現在割当てを行っている次元ＩＤｉのブロックカウンタｊを１増分する（５０１０）。
【０２３７】
ｊが次元ＩＤｉのブロック化メンバ範囲個数以下か否か判定し次元ｉのブロック化メンバ範囲個数内か否か判定する（５０１１）。もし範囲内でなければ５００５の次元ＩＤｉ以外のブロックカウンタ初期化を行う。範囲外の場合、次の処理対象次元ＩＤを決めるため、次元ＩＤカウンタｉを１増分する（５０１２）。次元ＩＤカウンタが次元数以下か否か判定し、全次元についての対角割当てが終了したか否か判定する（５０１３）。全次元の割当てが終了していなければ、５００４の次元ＩＤｉのブロックカウンタ初期化を行い、終了していれば対角割当て処理を終了する。
【０２３８】
上記では単純に資源番号を資源に割当てることで対角割当てを行う処理を説明した。図４９の多次元ブロックインデクスの生成４９００ではＦＥＳ、ＢＥＳの多次元ブロックインデクスの対角割当てに本処理が呼び出される。ＦＥＳの場合、上記の資源番号がＢＥＳＩＤに対応する。ＢＥＳの場合、ページＩＤを対角に割当てる必要があるため、上記の資源番号は物理記憶構成テーブルのエントリ番号に相当する。ページＩＤの取得は割当てた資源番号から決まる物理記憶構成テーブルのエントリ番号に対応する空き領域へのポインタ４２０４から１ページ分ページＩＤを取得する。物理記憶構成テーブルの処理対象エントリの空き領域ポインタ更新と空き容量４２０３の更新を行うことで次のページ取得時に異なるページＩＤを返す。
【０２３９】
また、対角上に並ぶブロックＩＤを連続したページに割当てる場合、対角の割当てを優先的に行い、上記ページ取得を行ってページＩＤを付与した後、割当て次元に沿った資源割当てを行うことで、対角座標が連続的ページＩＤに配置されることを保証する。
【０２４０】
図５１はＢＥＳ多次元キューブデータ生成処理手順を示すフローチャートである。
ＢＥＳ多次元キューブデータ生成処理は全セルデータを多次元キューブデータまたはオーバフローページ中に格納後、セルＩＤによるソートでセルデータを多次元ブロックインデクスで示されるページ位置に格納する。ＦＥＳからのデータを受信する（５１０１）。ＦＥＳからの最後のデータ登録か否か判定する（５１０２）。最後のデータ登録でない場合、ＦＥＳから転送されたセルデータ群をハードディスク上の作業領域に格納して（５１１１）、再度ＦＥＳからのデータ受信を待つ。
【０２４１】
ＦＥＳからのデータを全て受信した場合、キューブデータへのデータロードを開始する。最初にハードディスク上の作業領域をｎ個に分割する（５１０３）。ｎ個の作業領域をそれぞれセルＩＤでソートする（５１０４）。ｎ個の作業領域のすべてのセルデータ参照が終了したか否かの判定を行う（５１０５）。すべての参照が終了した場合、ＢＥＳ多次元キューブデータの生成は終了する。すべての参照が終了していない場合、以下を行う。
【０２４２】
ソートされたハードディスク上の作業領域に対してトーナメントスキャンを行い、最小のセルＩＤを持ったセルデータを取得する（５１０６）。取得したセルデータを持っていたｎ分割作業領域の次の参照は参照セルデータの次のセルデータとなる。次にセルＩＤに対応するページを多次元ブロックインデクスより取得する（５１０７）。該当ページが満杯か否かの判定を行う（５１０８）。この時、オーバフローページ群が既にあれば、そのオーバフローページ群に対して満杯か否かの判定を行う。既に満杯の場合、オーバフローファイルからページを取得し、多次元ブロックインデクスから取得したページにポインタを設定する。既に取得ページにオーバフローページへのポインタが設定されている場合、新たに取得したオーバフローページから古いオーバフローページへのポインタを設定する（５１０９）。
【０２４３】
満杯でなかったページもしくは取得したページにセルデータを格納する。この時、対象多次元データベースモデルの格納形式に従い、線形配置型データページ形式または圧縮配置型データページ形式のいづれかの形式でセルデータをページに格納し、次のセルデータが残っているか否かの判定を行う（５１１０）。
【０２４４】
【発明の効果】
本発明によれば、多次元データ分析向けのデータベース管理システムにおいて、その基本機能である多次元データの検索機能（スライス機能）と集約機能を高速化する効果がある。
【図面の簡単な説明】
【図１】本発明による多次元データベース管理システムの一実施例の処理ブロック構成を示す図である。
【図２】多次元データベースのデータモデル定義形式の一例を示す図である。
【図３】多次元データベースのデータモデル定義例を示す図である。
【図４】多次元データベース定義例の商品次元の次元階層を説明する図である。
【図５】多次元データベース定義例のマーケット次元の次元階層を説明する図である。
【図６】多次元データベース定義例の期間次元の次元階層を説明する図である。
【図７】多次元データベース定義例の素データを説明する図である。
【図８】多次元データベース定義例の素データと集約データの関係を説明する図である。
【図９】本発明による多次元データベース管理システムの一実施例のハードウェア構成を示す図である。
【図１０】本発明による多次元データベース管理システムの一実施例の処理ブロック構成を示す図である。
【図１１】多次元データベース格納構造を示す図である。
【図１２】セルデータ格納ページの対角割当て方法を示す図である。
【図１３】多次元データベーステーブルの構成を示す図である。
【図１４】多次元データモデル定義情報の格納形式を説明する図である。
【図１５】データキューブテーブルの構成を示す図である。
【図１６】集約データキューブテーブルの構成を示す図である。
【図１７】多次元ブロック化メンバ範囲テーブルの構成を示す図である。
【図１８】ＦＥＳ多次元ブロックインデクスのデータページの構成を示す図である。
【図１９】ＢＥＳ多次元ブロックインデクスのデータページの構成を示す図である。
【図２０】圧縮配置型セルデータページの構成を示す図である。
【図２１】線形配置型セルデータページの構成を示す図である。
【図２２】多次元データベース問合せ要求処理手順を示すフローチャートである。
【図２３】問合せの意味解析処理を示すフローチャートである。
【図２４】多次元データ検索実行手順を示すフローチャートである。
【図２５】多次元ブロックインデクス位置計算処理を示すフローチャートである。
【図２６】検索結果データ併合処理手順を示すフローチャートである。
【図２７】要求時集約計算処理の中間結果をＦＥＳメモリ上に格納するためのデータ構造を示す図である。
【図２８】要求時集約計算処理におけるブロック読み出し順を説明する図である。
【図２９】要求時集約計算処理の中間結果をＦＥＳメモリ上に格納するためのデータ構造を示す図である。
【図３０】要求時集約計算処理の最終結果の格納構造を示す図である。
【図３１】要求時集約計算処理手順を示すフローチャートである。
【図３２】集約計算結果格納用データ構造作成処理手順を示すフローチャートである。
【図３３】並列集約計算処理の制御手順を示すフローチャートである。
【図３４】ブロック検索範囲決定処理手順を示すフローチャートである。
【図３５】ＢＥＳ側での集約計算処理手順を示すフローチャートである。
【図３６】ＦＥＳ側での集約計算処理手順を示すフローチャートである。
【図３７】ＢＥＳ側での最終集約計算結果の格納処理手順を示すフローチャートである。
【図３８】実体化集約データキューブの入替え処理手順を示すフローチャートである。
【図３９】実体化集約データキューブの最適集合再計算処理手順を示すフローチャートである。
【図４０】元データ解析とデータベース管理情報初期化に関する処理ブロック構成を示す図である。
【図４１】元データのロードに関する構成を示す図である。
【図４２】多次元データベース管理システムが管理する物理記憶構成を格納するテーブル構成を示す図である。
【図４３】元データ解析処理手順を示すフローチャートである。
【図４４】元データの統計情報の取得手順を示すフローチャートである。
【図４５】格納構造の決定処理手順を示すフローチャートである。
【図４６】データロード処理手順の第一部分を示すフローチャートである。
【図４７】データロード処理手順の第二部分を示すフローチャートである。
【図４８】ブロック化範囲テーブル生成を示すフローチャートである。
【図４９】多次元ブロックインデクスの生成処理手順を示すフローチャートである。
【図５０】対角割当て手順を示すフローチャートである。
【図５１】ＢＥＳ多次元キューブデータ生成処理手順を示すフローチャートである。
【符号の説明】
１０１…問合せ端末、１０２…ＷＡＮ・ＬＡＮ、１０３…多次元問合せ要求処理・集約データ最適実体化処理ノード、１０４…多次元データベース管理情報、１０５…多次元ブロックインデクス、１０６、１０７、１０８…集約計算処理ノード、１０９、１１０、１１１…多次元スキャン処理・多次元インサート処理ノード、１１２、１１３、１１４…多次元ブロックインデクス、１１５…相互結合ネットワーク、８０１…素データ、
８０２、８０３、８０４、８０５、８０６、８０７、８０８、８０９、８１０、８１１、８１２、８１３、８１４、８１５、８１６、８１７、８１８、８１９、８２０、８２１、８２２、８２３、８２４、８２５、８２６、８２７、８２８、８２９、８３０…集約データ、
９０１、９０２、９０３、９０４…問合せ端末、９０５… ＷＡＮ・ＬＡＮ、９０６…プロセサ、９０７…ハードディスク装置、９０８…相互結合ネットワーク、９０９、９１０、９１１…プロセサ、９１２、９１３、９１４、９１５、９１６、９１７、９１８、９１９、９２０…ハードディスク装置、
１００１…問合せ端末、１００２…ＷＡＮ・ＬＡＮ、１００３…フロントエンドサーバノード、１００４…多次元データベース管理情報、１００５…多次元ブロックインデクス、１００６、１００７、１００８…バックエンドサーバノード、１００９、１０１０、１０１１…多次元ブロックインデクス、１０１２…相互結合ネットワーク、
１１０１…フロントエンドサーバノード、１１０２ 、１１０３ 、１１０４ 、１１０５…バックエンドサーバノード 、１１１１ 、１１１２ 、１１１３ 、１１１４…ハードディスク、１１２０… ＦＥＳ多次元ブロック化メンバ範囲テーブル、１１２１… ＢＥＳ多次元ブロック化メンバ範囲テーブル、１１３０… ＦＥＳ多次元ブロックインデクス、１１３１… ＢＥＳ多次元ブロックインデクス、１１４０…キューブデータ、１１５０…オーバフローファイル、
１２０１…多次元論理ブロック空間、１２０２ 、１２０３ 、１２０４ 、１２０５…ブロックＩＤ、１２１０、１２２０、１２３０、１２４０…ハードディスク、
１３００…多次元データベーステーブル、１５００…データキューブテーブル、  １６００…集約データキューブテーブル、
２８０１Ａ、２８０１Ｂ、２８０１Ｃ、２８０１Ｄ…多次元論理ブロック空間、  ２９００Ａ、２９００Ｂ、２９００Ｄ…ＢＥＳ集約計算中間結果リスト、
３００５Ａ、３００５Ｂ…ページ、３００６Ａ、３００６Ｂ…バッファ機能付きメモリ領域。
【図１】
0003952518.tif 000002
【図２】
0003952518.tif 000003
【図３】
0003952518.tif 000004
【図４】
0003952518.tif 000005
【図５】
0003952518.tif 000006
【図６】
0003952518.tif 000007
【図７】
0003952518.tif 000008
【図８】
0003952518.tif 000009
【図９】
0003952518.tif 000010
【図１０】
0003952518.tif 000011
【図１１】
0003952518.tif 000012
【図１２】
0003952518.tif 000013
【図１３】
0003952518.tif 000014
【図１４】
0003952518.tif 000015
【図１５】
0003952518.tif 000016
【図１６】
0003952518.tif 000017
【図１７】
0003952518.tif 000018
【図１８】
0003952518.tif 000019
【図１９】
0003952518.tif 000020
【図２０】
0003952518.tif 000021
【図２１】
0003952518.tif 000022
【図２２】
0003952518.tif 000023
【図２３】
0003952518.tif 000024
【図２４】
0003952518.tif 000025
【図２５】
0003952518.tif 000026
【図２６】
0003952518.tif 000027
【図２７】
0003952518.tif 000028
【図２８】
0003952518.tif 000029
【図２９】
0003952518.tif 000030
【図３０】
0003952518.tif 000031
【図３１】
0003952518.tif 000032
【図３２】
0003952518.tif 000033
【図３３】
0003952518.tif 000034
【図３４】
0003952518.tif 000035
【図３５】
0003952518.tif 000036
【図３６】
0003952518.tif 000037
【図３７】
0003952518.tif 000038
【図３８】
0003952518.tif 000039
【図３９】
0003952518.tif 000040
【図４０】
0003952518.tif 000041
【図４１】
0003952518.tif 000042
【図４２】
0003952518.tif 000043
【図４３】
0003952518.tif 000044
【図４４】
0003952518.tif 000045
【図４５】
0003952518.tif 000046
【図４６】
0003952518.tif 000047
【図４７】
0003952518.tif 000048
【図４８】
0003952518.tif 000049
【図４９】
0003952518.tif 000050
【図５０】
0003952518.tif 000051
【図５１】
0003952518.tif 000052