(57)【要約】  情報処理装置であって、データの集合を分割したブロックごとの統計値を保持する統計値保持手段と、過去の問合せに関する情報を問合せ履歴として保持する問合せ履歴保持手段と、前記問合せ履歴に基づいて、前記ブロックごとの統計値を利用して行なう統計処理のコストが最小となるように、前記データの集合を２つ以上のブロックに分割するときのブロックサイズを推定する推定手段と、前記推定手段によって推定された前記ブロックサイズを用いて、前記データの集合を分割すると共に、分割した前記ブロックごとに、前記ブロックに含まれるデータの統計値を算出して前記統計値保持手段に保持させるブロック作成手段と、を備える。
2016178312.tif 000002
【特許請求の範囲】
【請求項１】
データの集合を２つ以上のブロックに分割した場合の各ブロックに含まれるデータの統計値を保持する統計値保持手段と、
前記データの集合についての過去の問合せに関する情報を問合せ履歴として保持する問合せ履歴保持手段と、
前記問合せ履歴に基づいて、いくつかのブロックの前記統計値を用いて問合せに対応する回答を導出するための平均コストが最小となるブロックサイズを推定する推定手段と、
前記推定手段によって推定された前記ブロックサイズに応じて、前記データの集合を分割して２つ以上のブロックを生成すると共に、生成されたブロックごとに前記統計値を算出して前記統計値保持手段に保持させるブロック生成手段と、
を備える情報処理装置。
【請求項２】
前記推定手段は、前記問合せがあったときに、前記問合せ履歴に基づいて、前記統計値を用いずにデータを用いたブロック数の平均値を取得し、該平均値を用いて前記ブロックサイズを推定する、請求項１に記載の情報処理装置。
【請求項３】
前記推定手段は、前記ブロックサイズを変数とする前記平均コストを算出するためのコスト関数を有し、該コスト関数を用いて前記平均コストが最小となる前記ブロックサイズを推定する、請求項１または２に記載の情報処理装置。
【請求項４】
前記推定手段は、ブロックごとに事前に算出された前記統計値を参照するためのコストと、前記問合せに対応する回答を導出するために必要なデータを含む前記ブロックを読み取るためのコストとの和を前記平均コストとし、前記平均コストが最小となる前記ブロックサイズを推定する、請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記推定手段は、前記統計値を参照するためのコスト（ReadMetaCost）を、全体のブロック数Ｂ、前記統計値を用いずに前記データを用いたブロック数の平均値Ｐ、一つのブロックの統計値の保持に必要なバイト数Ｓagg、ストレージのページサイズＳpageを含む以下の式を用いて算出する、請求項４に記載の情報処理装置。
【数１】
2016178312.tif 000010
【請求項６】
前記推定手段は、前記ブロックを読み取るためのコスト（ReadBlockCost）を、データの要素数Ｎ、全体のブロック数Ｂ、前記統計値を用いずにデータを用いたブロック数の平均値Ｐ、データ要素一つのサイズＳtuple、ストレージのページサイズＳpageを含む以下の式を用いて算出する、請求項４に記載の情報処理装置。
【数２】
2016178312.tif 000011
【請求項７】
前記推定手段は、前記統計値保持手段が前記統計値を保持するための保持サイズが事前に設定された上限値を超えない範囲で、前記回答を導出するための前記平均コストが最小となる前記ブロックサイズを推定する、請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記データの集合は、属性を有する２つ以上のレコードを含むテーブルによって構成され、
前記ブロック生成手段は、前記属性についてレコードを並べ替えたテーブルを作成した後に該テーブルをそれぞれ１つ以上のレコードを含む２つ以上のブロックに分割する、請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
データの集合についての過去の問合せに関する情報を問合せ履歴として保持する問合せ履歴保持ステップと、
前記問合せ履歴に基づいて、いくつかのブロックの統計値を用いて問合せに対応する回答を導出するための平均コストが最小となるブロックサイズを推定する推定ステップと、
前記推定ステップにおいて推定された前記ブロックサイズに応じて、前記データの集合を分割して２つ以上のブロックを生成すると共に、生成されたブロックごとに前記統計値を算出するブロック生成ステップと、
を含む情報処理方法。
【請求項１０】
データの集合についての過去の問合せに関する情報を問合せ履歴として保持し、
前記問合せ履歴に基づいて、いくつかのブロックの統計値を用いて問合せに対応する回答を導出するための平均コストが最小となるブロックサイズを推定し、
推定された前記ブロックサイズに応じて、前記データの集合を分割して２つ以上のブロックを生成すると共に、生成されたブロックごとに前記統計値を算出する、
ことをコンピュータに実行させる情報処理プログラムを格納する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法および記憶媒体に関する。
【背景技術】
【０００２】
上記技術分野において、非特許文献１には、データ集合を用いて統計処理を行なう際に、データ集合を２つ以上のブロックに分割してブロックごとの統計値を算出しておくことが開示されている。また、非特許文献１には、これにより、事前計算したブロックごとの統計値を再利用することで、レコードのスキャンを省いてＩ／Ｏ(Input / Output)量と計算量を削減し、属性の統計処理を高速化する技術が開示されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】小山田など、「データの部分集約による高速かつ正確なデータ集計処理の実現」、データベース・システム研究会報告2014-DBS-160(19)、 pp. 1-7、２０１５年 (http://ci.nii.ac.jp/naid/110009842514)
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記文献に記載の技術では、統計値の再利用による統計処理の性能はブロックサイズに大きく左右されるため、適切でないブロックサイズを選択した場合、統計処理を高速化できない可能性がある。【０００５】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明に係る情報処理装置の一態様は、
データの集合を２つ以上のブロックに分割した場合の各ブロックに含まれるデータの統計値を保持する統計値保持手段と、
前記データの集合についての過去の問合せに関する情報を問合せ履歴として保持する問合せ履歴保持手段と、
前記問合せ履歴に基づいて、いくつかのブロックの前記統計値を用いて問合せに対応する回答を導出するための平均コストが最小となるブロックサイズを推定する推定手段と、
前記推定手段によって推定された前記ブロックサイズに応じて、前記データの集合を分割して２つ以上のブロックを生成すると共に、生成されたブロックごとに前記統計値を算出して前記統計値保持手段に保持させるブロック生成手段と、を備える。【０００７】
上記目的を達成するため、本発明に係る情報処理方法の一態様は、
データの集合についての過去の問合せに関する情報を問合せ履歴として保持し、
前記問合せ履歴に基づいて、いくつかのブロックの統計値を用いて問合せに対応する回答を導出するための平均コストが最小となるブロックサイズを推定し
推定された前記ブロックサイズに応じて、前記データの集合を分割して２つ以上のブロックを生成すると共に、生成されたブロックごとに前記統計値を算出する。【０００８】
上記目的を達成するため、本発明に係る記憶媒体に格納された情報処理プログラムは、
データの集合についての過去の問合せに関する情報を問合せ履歴として保持し、
前記問合せ履歴に基づいて、いくつかのブロックの統計値を用いて問合せに対応する回答を導出するための平均コストが最小となるブロックサイズを推定し、
推定された前記ブロックサイズに応じて、前記データの集合を分割して２つ以上のブロックを生成すると共に、生成されたブロックごとに前記統計値を算出する、ことをコンピュータに実行させる。
【発明の効果】
【０００９】
本発明によれば、統計処理を高速化することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１実施形態に係る情報処理装置の構成を示すブロック図である。
【図２】本発明の第２実施形態に係る情報処理装置の機能構成を示すブロック図である。
【図３】本発明の第２実施形態に係る入力データの一例を説明する図である。
【図４】本発明の第２実施形態に係る統計値保持部とデータ保持部とが保持する統計値とデータとの保持内容の一例を説明する図である。
【図５】本発明の第２実施形態に係る問合せ履歴保持部が保持するデータテーブルの構成の一例を説明する図である。
【図６Ａ】本発明の第２実施形態に係るブロックサイズ推定テーブルの構成を説明する図である。
【図６Ｂ】本発明の第２実施形態に係るブロックサイズと平均実行コストとの関係を説明する図である。
【図７】本発明の第２実施形態に係る情報処理装置のハードウェア構成を説明するブロック図である。
【図８Ａ】本発明の第２実施形態に係るデータ格納処理手順を説明するフローチャートである。
【図８Ｂ】本発明の第２実施形態に係る最適ブロックサイズ推定処理手順を説明するフローチャートである。
【図９】本発明の第２実施形態に係る情報処理装置における問合せの実行時の処理の流れを例示するフローチャートである。
【図１０】本発明の第３実施形態に係る情報処理装置の機能構成を示すブロック図である。
【図１１】本発明の第３実施形態に係る情報処理装置のハードウェア構成の一例を示すブロック図である。
【図１２】本発明の第３実施形態に係る最適ブロックサイズ推定処理手順を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素はあくまで例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
【００１２】
［第１実施形態］
本発明の第１実施形態としての情報処理装置について、図１を用いて説明する。情報処理装置１００は、統計値保持部１０１と、ブロックサイズ推定部１０２と、ブロック生成部１０３と、問合せ履歴保持部１０４を含む装置である。
【００１３】
統計値保持部１０１は、データの集合を２つ以上のブロックに分割した場合の各ブロックに含まれるデータの統計値を保持する。
【００１４】
ブロックサイズ推定部１０２は、問合せ履歴保持部１０４が保持する問合せ履歴に基づいて、いくつかのブロックの統計値を用いて問合せに対応する回答を導出するための平均コストが最小となるようにブロックサイズを推定する。なお、ブロックサイズとは、データの集合が２つ以上のレコードを含むテーブルによって構成される場合は、例えば、統計値の事前計算を何レコードごとにおこなうかを表わすサイズである。
【００１５】
ブロック生成部１０３は、ブロックサイズ推定部１０２によって推定されたブロックサイズに応じて、データの集合を分割して２つ以上のブロックを生成すると共に、生成されたブロックごとに統計値を算出して統計値保持部１０１に保持させる。
【００１６】
問合せ履歴保持部１０４は、データの集合についての過去の問合せに関する情報を問合せ履歴として保持する。
【００１７】
本実施形態によれば、問合せに対応する回答を導出するための平均コストが最小となるように推定されたブロックサイズによってデータの集合が分割され、ブロックごとに算出された統計値が統計処理に利用されるので、統計処理の実行時間を高速化することができる。
【００１８】
［第２実施形態］
次に本発明の第２実施形態に係る情報処理装置について、図２〜図９を用いて説明する。なお、全ての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００１９】
《前提技術》
関係データベースシステム（Relational DataBase Management System）は、関係モデルにもとづく表形式のデータ（以下テーブル）を保持し、ユーザにデータの効率的な検索と更新とを提供する。テーブル内の行はレコードと呼ばれ、ひとつのデータを表わす。データはいくつかの属性を持つことができ、テーブル内の列が各属性に対応する。そのテーブルに含まれる列の＜列名、データ型＞一覧を、そのテーブルのスキーマと呼ぶ。
【００２０】
関係データベースシステムのユーザは、テーブルに対する検索処理および更新処理をプログラミング言語によって関係データベースシステムに対して指示する。この指示は問合せ（Query）と呼ばれる。問合せを記述するためには、ＳＱＬ（Structured Query Language）というプログラミング言語が標準的に用いられている。ＳＱＬを用いると、テーブルの中から条件にあてはまるレコードを簡便かつ効率的に取り出すことができる。また、列名を指定することで、レコードの中から必要な属性のみを取り出すこともできる。
【００２１】
関係データベースシステムにおいて頻繁におこなわれる処理のひとつに、属性の統計処理がある。属性の統計処理とは、テーブルの所定の属性の値群から何らかの統計値を計算するものであり、統計値の例としては最大値、最小値、平均値、および標準偏差などがある。
【００２２】
属性の統計処理はテーブル内の全てないし大部分のレコードに関しておこなわれることが多い。そのため、テーブルが巨大であった場合には大量のレコードをスキャンすることとなり、多量のＩ／Ｏ処理と計算処理が発生して処理速度が長大となる。
【００２３】
《本実施形態の説明》
図２は、本実施形態に係る情報処理装置の機能構成を説明するためのブロック図である。図２において、各ブロックは、ハードウェア単位の構成ではなく、機能単位の構成を表している。
【００２４】
情報処理装置２００は、データ入力部２０１と、ブロック生成部２０２と、データ保持部２０３と、統計値保持部２０４と、問合せ受付部２０５を有する。さらに、情報処理装置２００は、問合せ実行部２０６と、統計値利用可否判定部２０７と、問合せ履歴保持部２０８と、最適ブロックサイズ推定部２０９を有する。以下、それぞれについて説明する。
【００２５】
《データ入力部》
データ入力部２０１は、情報処理装置２００の処理対象となるデータを入力する。データ形式の例は、関係データベースシステムにおけるテーブルである。
【００２６】
データ入力部２０１がデータの集合を入力する方法は様々である。例えばデータ入力部２０１は、外部の装置から入力されるデータの集合を取得する。その他にも例えば、データ入力部２０１は、手動で入力されるデータの集合を取得する。さらにデータ入力部２０１は、外部の装置にアクセスして、データの集合を入力してもよい。
【００２７】
《ブロック生成部》
ブロック生成部２０２は、データ入力部２０１が入力したデータの集合を主記憶装置又は二次記憶装置などの記憶装置に記憶するためにファイル化する。この際、ブロック生成部２０２は最適ブロックサイズ推定部２０９と通信し、その後の情報処理が最も高速になると期待されるブロックサイズを得る。さらに、ブロック生成部２０２は、そのブロックサイズに応じてデータ入力部２０１に入力されたデータの集合を分割し、分割したブロックごとにデータの統計値を算出する。そして、ブロック生成部２０２はデータの集合をデータ保持部２０３へ保存すると共に、データの統計値を統計値保持部２０４へ保存する。データ保持部２０３と統計値保持部２０４は同一の記憶装置にあってもよいし、それぞれ異なる記憶装置にあってもよい。
【００２８】
例えばデータの集合がテーブル形式であった場合、ブロック生成部２０２はブロックサイズとしてレコード数を受け取り、そのレコード数ごとにテーブルを水平分割した上で、各属性の最大値、最小値等の統計値を計算し、統計値保持部２０４へその統計値を保存する。本実施形態以降では、レコードを分割単位としてテーブルを分割することを水平分割と称する。
【００２９】
なお、ブロック生成部２０２は物理的にブロックを作成することもあれば、論理的にブロックを作成するだけのこともある。物理的にブロックを作成する場合の例としては、ブロックをデータ保持部２０３上へ異なるファイルとして別々に保存するというものがある。また、論理的にブロックを作成する例としては、データの集合は単一のファイルとしてデータ保持部２０３へ保存する。さらに、統計値保持部２０４の各ブロックの統計値情報と共にブロックを構成するデータ保持部２０３上のファイル内のデータ群へのポインタを保持するというものがある。
【００３０】
《データ保持部》
データ保持部２０３は、ブロック生成部２０２が作成したファイルを記憶装置に保持する。記憶装置は主記憶装置であってもよいし、二次記憶装置であってもよい。
【００３１】
《統計値保持部》
統計値保持部２０４は、ブロック生成部２０２が算出したブロックごとの統計値を記憶装置に保持する。記憶装置は主記憶装置であってもよいし、二次記憶装置であってもよい。
【００３２】
《問合せ受付部》
問合せ受付部２０５は、データ保持部２０３に保持されているデータの集合に対する処理の指示を取得する。指示の例としては、データの集合に対する問合せを記述するプログラミング言語の一種であるＳＱＬやHive Query Language（非特許文献１）がある。
【００３３】
問合せの例としては、データの集合から最大値、最小値、平均値、および標準偏差などの統計値を集計する処理や、関係データベースで用いられる選択、結合、射影処理、およびこれらの処理の組み合わせによる複雑な情報処理などがある。
【００３４】
《問合せ実行部》
問合せ実行部２０６は、問合せ受付部２０５が取得した問合せを実行する。この際、問合せ実行部２０６は統計値利用可否判定部２０７と通信して、処理対象となるデータの集合の各ブロックについて事前に計算した統計値を再利用できるかどうかを確認する。そして、統計値を再利用できるブロックに関しては統計値保持部２０４から事前に計算しておいた統計値を取得する。再利用できないブロックに関してはデータ保持部２０３からブロックを取得し、取得したブロックに含まれるデータの中から必要なデータを用いて統計値を算出する。その後、問合せ実行部２０６はこうして得た各ブロックの統計値から最終的な問合せ結果を構築し、問合せに対する回答値として出力する。
【００３５】
《統計値利用可否判定部》
統計値利用可否判定部２０７は、処理対象となるデータの集合の各ブロックについて事前に算出した統計値が再利用できるかどうかを判定する。あるブロックについて統計値が再利用できるのは、ブロック内のデータ全てが問合せの対象に含まれる場合である。このことを実際のブロックの中身を確認せずに判定するために、統計値利用可否判定部２０７は統計値保持部２０４から各ブロックの統計値（例：問合せの対象を指定する属性の最大値と最小値）を取得する。さらに、統計値利用可否判定部２０７は取得した統計値を使って各ブロック内のデータが全て問合せの対象であるかどうか（例：ブロックの属性値の最大値と最小値の範囲が、問合せ対象の範囲に収まっているかどうか）を判定する。
【００３６】
例えば、企業の職員の情報を、「年齢が２０〜３０歳のブロック（年齢の最小値＝２０、最大値＝３０）」「年齢が３１〜４０歳のブロック」「年齢が４１〜６５歳のブロック」の３つへ分割して保持している場合を考える。このとき、問合せとして「年齢が３５歳以下の職員の平均給与」が与えられたとする。このとき問合せの対象は３５歳以下の職員であるため、該当する職員は「年齢が２０〜３０歳のブロック」と「年齢が３１〜４０歳のブロック」の２ブロックに存在する。ここで、「年齢が２０〜３０歳のブロック」についてはブロック内の全ての職員が問合せの対象であるため、ブロックに対して事前に算出した統計値を再利用することができる。一方で、「年齢が３１〜４０歳のブロック」に関しては、問合せの対象にならない職員（例：３６〜４０歳の職員）のデータが含まれている可能性があるため、事前に計算した統計値を再利用することができない。
【００３７】
《問合せ履歴保持部》
問合せ履歴保持部２０８は情報処理装置２００の処理した過去の問合せに関する情報を履歴として保持する。履歴は完全な問合せの記録であってもよいし、頻出する問合せのパターンを表わす統計情報でもよい。履歴の具体的な一例としては、問合せの内容（例えば問合せの範囲）に対する、統計値の参照数、ブロックデータの参照数等が挙げられる。さらに、これらの参照に要した時間、統計値を算出するのに要した時間、Ｉ／Ｏ回数、データのサイズ、および問合せ範囲の指定に使われる属性数の期待値などの情報が挙げられる。この履歴は最適ブロックサイズ推定部２０９によって、問合せに対応する回答を導出するための平均コストを見積もる際に利用される。
【００３８】
《最適ブロックサイズ推定部》
最適ブロックサイズ推定部２０９は、問合せ実行部２０６による問合せに対応する回答処理の平均コストを最小にすると期待されるブロックサイズを推定する。最適ブロックサイズ推定部２０９は、ブロックサイズを入力として問合せに対応する回答を導出するための平均コストを見積もるコスト関数を持つ。コスト関数はデータのサイズや問合せ範囲の指定に使われる属性数の期待値などの情報を利用しうるため、最適ブロックサイズ推定部２０９はブロック生成部２０２や問合せ履歴保持部２０８と通信して、これらの情報を得る。最適ブロックサイズの推定時には、このコスト関数を最小化するブロックサイズを算出し、最適ブロックサイズとする。
【００３９】
最適ブロックサイズ推定部２０９は、最適ブロックサイズを推定する際に、ブロックサイズ推定テーブル６００を作成して最適ブロックサイズを推定する。
【００４０】
次に、最適ブロックサイズ推定部２０９における具体的なコスト関数について述べる。
本実施形態では、ブロックの統計値が再利用できる場合は統計値保持部２０４からの統計値読み込みが発生し、ブロックの統計値が再利用できない場合はブロックのデータをデータ保持部２０３から読み込む動作が発生する。そのため、コスト関数はブロック数（何レコードごとに統計値を計算するか）をＢとしたとき、
【００４１】
【数１】
2016178312.tif 000003
【００４２】
のようにブロックを読み込むＩ／Ｏコスト（ReadBlockCost）と統計値を読み込むＩ／Ｏコスト（ReadMetaCost）の和となる。
【００４３】
Ｉ／Ｏコストとしてこれらの処理時に発生するページ参照数（ストレージレベルでのＩ／Ｏの回数）を考えると、ブロックを読み込む際のコスト（ページ参照数）は、切り上げを算出する天井関数を使って表わすと、次式で表わされる。
【００４４】
【数２】
2016178312.tif 000004
【００４５】
これは、Ｐ個のブロックの読み込み Read （ブロック全体の読み込み）で生じるページ参照数をあらわす。実際には、Ｐは平均的に Read 参照されるブロック数（問合せ履歴保持部から取得）とする。ここで、Ｎはデータの要素数（全タプル数）、Ｓpageはストレージのページサイズ（バイト数）、Ｓtupleはデータ要素ひとつのサイズ（バイト数）を表わしている。
【００４６】
ここで、
【００４７】
【数３】
2016178312.tif 000005
【００４８】
は、１ブロック内のタプル数、
【００４９】
【数４】
2016178312.tif 000006
【００５０】
は、１ブロックのサイズである。
【００５１】
また、統計値を読み込む際のコスト（ページ参照数）は、切り上げを算出する天井関数を使って表わすと、次式で表わされる。
【００５２】
【数５】
2016178312.tif 000007
【００５３】
これは、（Ｂ−Ｐ）個のブロック統計値の読み込みで生じるページ参照数を表わす。ここでＳaggは１つのブロックの統計値の保持に必要なバイト数をあらわしている。
【００５４】
以上のコストモデルから、ブロック数Ｂを大きくしていくとブロック一つ一つのサイズが小さくなるためブロックの読み込みで生じるＩ／Ｏは減ってゆく。しかし、その一方でブロック数が増えるために統計値の数も増えて統計値の読み込みで生じるＩ／Ｏが増えてしまうことがわかる。このトレードオフ関係から、上述のコスト関数は凸関数となり、最小値を持つ。この最小値を与えるブロック数Ｂが、問合せ処理の平均コストを最小化する最適なブロック数となり、全タプル数を最適なブロック数で割った結果が最適なブロックサイズとなる。
【００５５】
図３は、データ入力部２０１が入力するデータ構成の一例を示す図である。データ入力部２０１が入力するデータは例えば表形式のデータであり、表の行はひとつのレコード（例：職員の情報）、表の各列はレコードの属性値（例：職員の年齢(Age)、身長(Height)、体重(Weight)、性別(Gender)など）となる。
【００５６】
図４は、データ保持部２０３及び統計値保持部２０４がそれぞれ保持するデータと統計値との保持内容の一構成例を示す図である。図においては複数の属性４０１〜４０３ごとにブロックＡ〜Ｃに分けられ、ブロックごとに統計値４０４とデータ４０５とが保持されている。なお、データと統計値とが分けられて保持されていてもよい。
【００５７】
図５は、問合せ履歴保持部２０８が保持する履歴データのデータテーブル５００の一構成例を示す図である。図５に示すテーブル５００には、問合せＩＤ５０１ごとに、問合せ日時５０２、問合せ条件５０３、問合せブロック数５０４、および問合せがあったときに統計値を用いずにデータを用いたブロック数の平均値（Ｐ）５０５が保持される。また、問合せ条件５０３は、問合せ対象５３１と問合せ範囲５３２などを含む。問合せブロック数５０４は、統計値を使用したブロック数５４１とデータを使用したブロック数５４２を含む。なお、問合せがあったときに統計値を用いずにデータを用いたブロック数の平均値（Ｐ）５０５は、問合せがある都度更新される。問合せ履歴保持部２０８が保持する問合せ履歴に基づいて、最適ブロックサイズ推定部２０９は、ブロックごとの統計値を利用してブロックサイズを推定する。すなわち、最適ブロックサイズ推定部２０９は、ブロックごとの統計値を利用して行なう問合せに対応する回答処理の平均コストが最小となるように、データの集合を２つ以上のブロックに分割するときのブロックサイズを推定する。
【００５８】
図６Ａは最適ブロックサイズ推定部２０９が使用するブロックサイズ推定テーブル６００の構成を示す図である。ブロックサイズ推定テーブル６００は、集合データのパラメータ（タプル数Ｎ、データ要素一つのサイズ（バイト数）Ｓtuple、一つのブロックの統計値の保持に必要なバイト数Ｓagg、およびストレージのページサイズ（バイト数）Ｓpage）を有する。さらにブロックサイズ推定テーブル６００は、問合せがあったときに統計値を用いずにデータを用いたブロック数の平均値（Ｐ）６０２、およびブロックの読み取りコスト（ReadBlockCost）６０３を有する。さらにブロックサイズ推定テーブル６００は、統計値読み取りコスト（ReadMetaCost）６０４、コスト（Cost(B)）６０５、推定した最小コストのブロック数(B)６０６、および推定した最小コストのブロックサイズ(N/B)６０７を有する。
【００５９】
図６Ｂは、さまざまなブロックサイズ(N/B)における平均実行コスト（Cost(B)）（見積）をプロットした図である。図に示すように、ある程度まではブロックサイズを大きくしてゆくと平均コストが下がってゆくが、最適ブロックサイズを超えて大きくしてゆくと再び平均コストが高くなっていく、ということが見て取れる。
【００６０】
《ハードウェア構成の一例》
次に、本実施形態に係る情報処理装置２００のハードウェア構成の一例を図７を参照して説明する。
【００６１】
図に示すように、情報処理装置２００は、ＣＰＵ(Central Processing Unit)７０１、ＲＯＭ(Read Only Memory)７０２、通信制御部７０３、およびＲＡＭ(Random Access Memory)７０４を備えている。さらに、情報処理装置２００は、ストレージ７０５、出力インタフェース７０６、表示部７０７、プリンタ７０８、および入力部７１０を備えている。ＣＰＵ７０１は中央処理部であって、様々なプログラムを実行することにより情報処理装置２００全体を制御する。
【００６２】
ＲＯＭ７０２は、リードオンリメモリであり、ＣＰＵ７０１が最初に実行すべきブートプログラムの他、各種パラメータ等を記憶している。また、通信制御部７０３は、ネットワークを介した各種装置との通信を制御する。ＲＡＭ７０４は、ランダムアクセスメモリであり、問合せがあったときに統計値を用いずにデータを用いたブロック数の平均値（Ｐ）６０２、およびブロックサイズ推定テーブル６００を有する。また、ＲＡＭ７０４は、推定した最小コストのブロックサイズ(N/B)６０７、統計値７４１、入出力データ７４２、および送受信データ７４３を有する。
【００６３】
また、ストレージ７０５は、データ保持領域７５１と統計値保持領域７５２と問合せ履歴保持領域７５３とを有している。また、ストレージ７０５は、データ入力モジュール７５４、問合せ受付モジュール７５５、統計値利用可否判定モジュール７５６、およびブロック生成モジュール７５７を有する。さらにストレージ７０５は、問合せ実行モジュール７５８、最適ブロックサイズ推定モジュール７５９、およびデータ出力モジュール７６０等を有している。
【００６４】
入力部７１０は、リーダ７１１、キーパッド７１２、タッチパネル７１３およびこれらからの入力をＣＰＵ７０１に渡す入力インタフェース７１５を含む。ここではリーダ７１１は、一例としてバーコードリーダとするが、ＲＦＩＤ(Radio Frequency Identifier)タグリーダなどでもよい。
【００６５】
一方、入力部７１０あるいは通信制御部７０３を介して問合せ受付モジュール７５５が受け付けた問合せに対する回答は、通信制御部７０３を介して外部装置に送信される、あるいは出力インタフェース７０６を介して表示部７０７やプリンタ７０８に出力される。
【００６６】
なお、データ入力部２０１は、ＣＰＵ７０１、ＲＯＭ７０２、通信制御部７０３、ＲＡＭ７０４、入力部７１０、データ入力モジュール７５４によって構成される。
【００６７】
ブロック生成部２０２は、ＣＰＵ７０１、ＲＯＭ７０２、ＲＡＭ７０４、ブロック生成モジュール７５７によって構成される。
【００６８】
データ保持部２０３は、記憶部７０５のデータ保持領域７５１によって構成される。
【００６９】
統計値保持部２０４は、記憶部７０５の統計値保持領域７５２によって構成される。
【００７０】
問合せ受付部２０５は、ＣＰＵ７０１、ＲＯＭ７０２、通信制御部７０３、ＲＡＭ７０４、入力部７１０、問合せ受付モジュール７５５によって構成される。
【００７１】
問合せ実行部２０６は、ＣＰＵ７０１、ＲＯＭ７０２、ＲＡＭ７０４、問合せ実行モジュール７５８によって構成される。
【００７２】
統計値利用可否判定部２０７は、ＣＰＵ７０１、ＲＯＭ７０２、ＲＡＭ７０４、統計値利用可否判定モジュール７５６によって構成される。
【００７３】
最適ブロックサイズ推定部２０９は、ＣＰＵ７０１、ＲＯＭ７０２、ＲＡＭ７０４、最適ブロックサイズ推定モジュール７５９によって構成される。
【００７４】
問合せ履歴保持部２０８は、記憶部７０５の問合せ履歴保持領域７５３によって構成される。
【００７５】
《処理の流れ》
図８Ａは、本実施形態の情報処理装置２００において、データの集合を入力した際に実行される処理の流れを例示するフローチャートである。ステップＳ８０１において、データ入力部２０１はデータの集合を入力する。ステップＳ８０３において、最適ブロックサイズ推定部２０９はブロック生成部２０２と問合せ履歴保持部２０８から得た情報を使って、入力したデータの集合に対する問合せの平均コストを最小化するブロックサイズを算出して推定する。ステップＳ８０５において、ブロック生成部２０２は最適ブロックサイズ推定部２０９の算出したブロックサイズを用いてデータの集合をブロックへ分割し、データ保持部２０３へ保存する。ステップＳ８０７〜Ｓ８１１において、ブロック生成部２０２は各ブロックについて統計値を算出し、全てのブロックについて統計値を算出し終えると、それらの統計値を統計値保持部２０４へ保存する。
【００７６】
次に、ステップＳ８０３の処理の詳細を図８Ｂを参照して説明する。
【００７７】
ステップＳ８２１において、最適ブロックサイズ推定部２０９は、問合せ履歴保持部２０８から問合せ履歴を取得する。ステップＳ８２３において、最適ブロックサイズ推定部２０９は、集合データパラメータ６０１を取得する。次に、ステップＳ８２５において、最適ブロックサイズ推定部２０９は、ブロック数Ｂを１に設定する。次に、ステップＳ８２７において、最適ブロックサイズ推定部２０９は、ブロック数Ｂに１を加算した数をブロック数とする。この後、ステップＳ８２９において、最適ブロックサイズ推定部２０９は、ブロック読み取りコストを算出する。さらに、ステップＳ８３１において、最適ブロックサイズ推定部２０９は、統計値読み取りコストを算出する。この後、ステップＳ８３３において、最適ブロックサイズ推定部２０９は、これらの算出結果を合計したコストを算出する。次に、ステップＳ８３５において、最適ブロックサイズ推定部２０９は、ブロック数Ｂがデータの要素数Ｎよりも小さいか否かを判定する。ブロック数Ｂがデータの要素数Ｎよりも小さいときは、最適ブロックサイズ推定部２０９は、ステップＳ８２７の処理に移行して処理を続行する。また、ブロック数Ｂがデータの要素数Ｎ以上のときは、ステップＳ８３７において、最適ブロックサイズ推定部２０９は、このときのブロック数Ｂを平均コストが最小となるブロック数Ｂとして選択する。次に、ステップＳ８３９において、最適ブロックサイズ推定部２０９は、Ｎ／Ｂを平均コストが最小となるブロックサイズとして算出する。
【００７８】
図９は、本実施形態の情報処理装置２００において、問合せの実行時の処理の流れを例示するフローチャートである。ステップＳ９０１において、問合せ受付部２０５は問合せを取得する。ステップＳ９０３〜Ｓ９１１において、問合せ実行部２０６は各ブロックについて統計値を算出する。すなわち、ステップＳ９０５において、統計値利用可否判定部２０７は各ブロックについて、問合せで事前計算し統計値保持部２０４に保持されている統計値が再利用できるか否かを判定する。統計値が再利用可能であるならば、ステップＳ９０７において、問合せ実行部２０６は統計値利用可否判定部２０７を介して統計値保持部２０４よりブロックの統計値を取得する。統計値が再利用できないならば、ステップＳ９０９において、問合せ実行部２０６はデータ保持部２０３からブロックのデータを読み込み、必要なデータを用いて統計値を算出する。ステップＳ９１１において、問合せ実行部２０６は、問合せのあった範囲内の全てのブロックの統計値およびブロックの統計値を利用できないデータに対する統計値を取得し終える。次に、ステップＳ９１３において、問合せ実行部２０６は、それらの統計値を併合して最終的な問合せ結果を算出する。その後、ステップＳ９１５において、問合せ実行部２０６は実行した問合せの情報を問合せ履歴保持部２０８へ記録する。
【００７９】
本実施形態によれば、問合せに対応する回答を導出するための平均コストを最小にするブロックサイズを決定し、このブロックサイズを用いてデータの集合を分割し、ブロックごとに算出したデータの統計値を再利用するので、統計処理の実行時間を高速化することができる。
【００８０】
［第３実施形態］
次に本発明の第３実施形態に係る情報処理装置について、図１０を用いて説明する。図１０は、本実施形態に係る情報処理装置１０００の一例を説明するための機能ブロック図である。図１０に示す各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。本実施形態に係る情報処理装置１０００は、上記第２実施形態と比べると、統計値サイズ上限入力部１００１を有する点で異なる。これに伴い、最適ブロックサイズ推定部１００２の挙動も実施形態から変化している。その他の構成および動作は、第２実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【００８１】
《統計値サイズ上限入力部》
統計値サイズ上限入力部１００１は、生成される統計値が統計値保持部２０４の記憶装置で保持される全体の保持サイズ（記憶容量）の上限値を外部から受け取り、最適ブロックサイズ推定部１００２に設定する。
【００８２】
《最適ブロックサイズ推定部》
最適ブロックサイズ推定部１００２は、問合せ実行部２０６による問合せに対応する回答処理の平均コストを最小にすると期待されるブロックサイズを推定する。最適ブロックサイズ推定部１００２は、ブロックサイズを入力として問合せに対応する回答を導出するための平均コストを見積もるコスト関数を持つ。コスト関数はデータのサイズや問合せ範囲の指定につかわれる属性数の期待値などの情報を利用しうるため、最適ブロックサイズ推定部１００２はブロック生成部２０２や問合せ履歴保持部２０８と通信して、これらの情報を得る。最適ブロックサイズの推定時には、このコスト関数を最小化するブロックサイズを算出し、最適ブロックサイズとする。
【００８３】
また、最適ブロックサイズ推定部１００２は、最適ブロックサイズを算出する際に、統計値サイズ上限入力部１００１から設定された統計値サイズの上限値に基づいてブロックサイズの上限値を算出する。ここで、統計値サイズとは、生成される統計値が統計値保持部２０４の記憶装置で保持される全体のサイズ（記憶容量）のことである。さらに、最適ブロックサイズ推定部１００２は、この上限値をブロックサイズの推定に対する制約としたうえで、コスト関数の最小化をおこない、最適ブロックサイズを推定する。
【００８４】
《ハードウェア構成の一例》
次に、本実施形態に係る情報処理装置１０００のハードウェア構成の一例を図１１を参照して説明する。なお、統計値サイズ上限値１１４１をＲＡＭ７０４に備えると共に、最適ブロックサイズ推定モジュール７５９に代えて最適ブロックサイズ推定モジュール１１４２をストレージ７０５に設けた点において第２実施形態と異なる。
【００８５】
なお、統計値サイズ上限入力部１００１は、ＣＰＵ７０１、ＲＯＭ７０２、通信制御部７０３、ＲＡＭ７０４、入力部７１０、統計値サイズ上限値１１４１によって構成される。また、最適ブロックサイズ推定部１００２は、ＣＰＵ７０１、ＲＯＭ７０２、ＲＡＭ７０４、最適ブロックサイズ推定モジュール１１４２によって構成される。
【００８６】
《処理の流れ》
本実施形態の情報処理装置１０００において、データを入力した際に実行される処理の流れは第２実施形態と同様であるが、最適ブロックサイズ推定処理が異なる。
【００８７】
図１２に本実施形態における最適ブロックサイズ推定処理のフローチャートを示して説明する。なお、図８Ｂと同一部分は同一符号をもって表わし、その説明を省略する。本実施形態の処理と第２実施形態の処理とでは、ステップＳ８３３とステップ８３５の間にステップＳ１２０１の処理が加わった点において異なる。すなわち、ステップＳ８３３の処理の後、ステップＳ１２０１において、最適ブロックサイズ推定部１００２は、統計値保持部２０４が保持している統計値の保持サイズ（統計値の全体が占める記憶容量）Ｋが統計値サイズ上限入力部１００１から入力された統計値サイズ上限値Ｍ以上か否かを判定する。この判定の結果、最適ブロックサイズ推定部１００２は、統計値保持部２０４が保持している統計値の保持サイズＫが統計値サイズ上限入力部１００１から入力された統計値サイズ上限値Ｍ以上のときはステップＳ８３７に移行して処理を実行する。また、ステップＳ１２０１の判定の結果、保持している統計値の保持サイズＫが統計値サイズ上限値Ｍよりも小さいとき、最適ブロックサイズ推定部１００２は、ステップＳ８３５に移行して処理を実行する。
【００８８】
本実施形態によれば、生成される統計値が統計値保持部２０４の記憶媒体において占めるサイズが事前に設定された上限を超えない範囲で平均コストを最小化するブロックサイズが算出される。このため、事前計算されて統計値保持部２０４の記憶装置に保持されている統計値の保持サイズが肥大化することを防ぐことができる。
【００８９】
［他の実施形態］
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
【００９０】
例えば、ブロック生成部２０２においてテーブルを水平分割する前にレコードの順序を並び替えることにより問合せ内で統計値が利用できる確率を高めることができる。すなわち、ブロック生成部２０２は、テーブルを水平分割する前にレコードの順序を並び替えることにより、ブロック内の属性値の分散を小さくし、問合せ内で統計値が利用できる確率を高める。これにより、スキャンを省くことのできるブロック数が多くなっているため、Ｉ／Ｏ量と計算量が少なくてすむ。そのため、問合せ処理が効率的となる。
【００９１】
並び替えをおこなう属性は利用者が決定してもよいし、システムが自動的に決定してもよい。システムによる並び替え属性の決定方式例としては、過去におこなわれた問合せの履歴のなかで選択処理の条件式に頻繁に登場する属性を選ぶ、というものがある。一般に過去におこなわれた問合せに似た問合せが将来おこなわれる可能性は高いため、この方式をとることによって将来おこなわれる問合せの性能が向上することが期待される。
【００９２】
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する情報処理プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるＷＷＷ(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体（non-transitory computer readable medium）は本発明の範疇に含まれる。
【００９３】
［実施形態の他の表現］
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
データの集合を２つ以上のブロックに分割した場合の各ブロックに含まれるデータの統計値を保持する統計値保持手段と、
前記データの集合についての過去の問合せに関する情報を問合せ履歴として保持する問合せ履歴保持手段と、
前記問合せ履歴に基づいて、いくつかのブロックの前記統計値を用いて問合せに対応する回答を導出するための平均コストが最小となるブロックサイズを推定する推定手段と、
前記推定手段によって推定された前記ブロックサイズに応じて、前記データの集合を分割して２つ以上のブロックを生成すると共に、生成されたブロックごとに前記統計値を算出して前記統計値保持手段に保持させるブロック生成手段と、
を備える情報処理装置。
（付記２）
前記推定手段は、前記問合せがあったときに、前記問合せ履歴に基づいて、前記統計値を用いずにデータを用いたブロック数の平均値を取得し、該平均値を用いて前記ブロックサイズを推定する、付記１に記載の情報処理装置。
（付記３）
前記推定手段は、前記ブロックサイズを変数とする前記平均コストを算出するためのコスト関数を有し、該コスト関数を用いて前記平均コストが最小となる前記ブロックサイズを推定する、付記１または２に記載の情報処理装置。
（付記４）
前記推定手段は、ブロックごとに事前に算出された前記統計値を参照するためのコストと、前記問合せに対応する回答を導出するために必要なデータを含む前記ブロックを読み取るためのコストとの和を前記平均コストとし、前記平均コストが最小となる前記ブロックサイズを推定する、付記１乃至３のいずれか１項に記載の情報処理装置。
（付記５）
前記推定手段は、前記統計値を参照するためのコスト（ReadMetaCost）を、全体のブロック数Ｂ、前記統計値を用いずに前記データを用いたブロック数の平均値Ｐ、一つのブロックの統計値の保持に必要なバイト数Ｓagg、ストレージのページサイズＳpageを含む以下の式を用いて算出する、付記４に記載の情報処理装置。
【００９４】
【数６】
2016178312.tif 000008
【００９５】
（付記６）
前記推定手段は、前記ブロックを読み取るためのコスト（ReadBlockCost）を、データの要素数Ｎ、全体のブロック数Ｂ、前記統計値を用いずにデータを用いたブロック数の平均値Ｐ、データ要素一つのサイズＳtuple、ストレージのページサイズＳpageを含む以下の式を用いて算出する、付記４に記載の情報処理装置。
【００９６】
【数７】
2016178312.tif 000009
【００９７】
（付記７）
前記推定手段は、前記統計値保持手段が前記統計値を保持するための保持サイズが事前に設定された上限値を超えない範囲で、前記回答を導出するための前記平均コストが最小となる前記ブロックサイズを推定する、付記１乃至６のいずれか１項に記載の情報処理装置。
（付記８）
前記データの集合は、属性を有する２つ以上のレコードを含むテーブルによって構成され、
前記ブロック生成手段は、前記属性についてレコードを並べ替えたテーブルを作成した後に該テーブルをそれぞれ１つ以上のレコードを含む２つ以上のブロックに分割する、付記１乃至７のいずれか１項に記載の情報処理装置。
（付記９）
前記データの集合を保持するデータ保持手段と、
前記データの集合についての問合せを受付ける問合せ受付手段と、
前記問合せ受付手段によって受付けた問合せに対して前記統計値保持手段が保持している各ブロックの統計値を利用できるか否かを判定する判定手段と、
前記判定手段の判定の結果、ブロックの統計値を利用可能なときは該利用可能な統計値を利用して前記問合せに対する回答を生成する問合せ実行手段と、
をさらに備えた付記１乃至８のいずれか１項に記載の情報処理装置。
（付記１０）
データの集合についての過去の問合せに関する情報を問合せ履歴として保持する問合せ履歴保持ステップと、
前記問合せ履歴に基づいて、いくつかのブロックの統計値を用いて問合せに対応する回答を導出するための平均コストが最小となるブロックサイズを推定する推定ステップと、
前記推定ステップにおいて推定された前記ブロックサイズに応じて、前記データの集合を分割して２つ以上のブロックを生成すると共に、生成されたブロックごとに前記統計値を算出するブロック生成ステップと、を含む情報処理方法。
（付記１１）
データの集合についての過去の問合せに関する情報を問合せ履歴として保持する問合せ履歴保持ステップと、
前記問合せ履歴に基づいて、いくつかのブロックの統計値を用いて問合せに対応する回答を導出するための平均コストが最小となるブロックサイズを推定する推定ステップと、
前記推定ステップにおいて推定された前記ブロックサイズに応じて、前記データの集合を分割して２つ以上のブロックを生成すると共に、生成されたブロックごとに前記統計値を算出するブロック生成ステップと、をコンピュータに実行させる情報処理プログラムを格納する記憶媒体。
【００９８】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【００９９】
この出願は、２０１５年５月７日に出願された日本出願特願２０１５−０９４６２４を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2016178312.tif 000012
【図２】
2016178312.tif 000013
【図３】
2016178312.tif 000014
【図４】
2016178312.tif 000015
【図５】
2016178312.tif 000016
【図６Ａ】
2016178312.tif 000017
【図６Ｂ】
2016178312.tif 000018
【図７】
2016178312.tif 000019
【図８Ａ】
2016178312.tif 000020
【図８Ｂ】
2016178312.tif 000021
【図９】
2016178312.tif 000022
【図１０】
2016178312.tif 000023
【図１１】
2016178312.tif 000024
【図１２】
2016178312.tif 000025
【手続補正書】
【提出日】平成29年10月19日(2017.10.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項９
【補正方法】変更
【補正の内容】
【請求項９】
データの集合についての過去の問合せに関する情報を問合せ履歴として保持し、
前記問合せ履歴に基づいて、いくつかのブロックの統計値を用いて問合せに対応する回答を導出するための平均コストが最小となるブロックサイズを推定し、
推定された前記ブロックサイズに応じて、前記データの集合を分割して２つ以上のブロックを生成すると共に、生成されたブロックごとに前記統計値を算出する、情報処理方法。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１０
【補正方法】変更
【補正の内容】
【請求項１０】
データの集合についての過去の問合せに関する情報を問合せ履歴として保持し、
前記問合せ履歴に基づいて、いくつかのブロックの統計値を用いて問合せに対応する回答を導出するための平均コストが最小となるブロックサイズを推定し、
推定された前記ブロックサイズに応じて、前記データの集合を分割して２つ以上のブロックを生成すると共に、生成されたブロックごとに前記統計値を算出する、
ことをコンピュータに実行させるプログラム。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、情報処理装置、情報処理方法およびプログラムに関する。
【国際調査報告】
2016178312.tif 000026
2016178312.tif 000027