(57)【要約】  本発明のデータ処理装置は、テーブルデータに含まれるレコードを、複数のブロックに、レコードを単位とした分割である水平分割する分割手段と、ブロックのそれぞれについて、ブロックにおけるレコードに含まれる属性の統計値を算出する統計値算出手段と、テーブルデータに対し、レコードの選択処理後に集約処理をする問合せを処理する際に、選択処理に基づいてブロック内のレコードが全て選択されるか否かを、ブロックのそれぞれについて、統計値を基に、判定する判定手段と、判定手段に基づいてレコードが全て選択されると判定されたブロックについては、判定されたブロックの統計値を、判定されたブロックに対する問合せの結果として利用する問合せ実行手段とを含む。
2016027451.tif 000002
【特許請求の範囲】
【請求項１】
テーブルデータに含まれるレコードを、複数のブロックに、レコードを単位とした分割である水平分割する分割手段と、
前記ブロックのそれぞれについて、前記ブロックにおけるレコードに含まれる属性の統計値を算出する統計値算出手段と、
前記テーブルデータに対し、レコードの選択処理後に集約処理をする問合せを処理する際に、前記選択処理に基づいて前記ブロック内のレコードが全て選択されるか否かを、前記ブロックのそれぞれについて、前記統計値を基に、判定する判定手段と、
前記判定手段に基づいてレコードが全て選択されると判定されたブロックについては、前記判定されたブロックの統計値を、前記判定されたブロックに対する前記問合せの結果として利用する問合せ実行手段と
を含むデータ処理装置。
【請求項２】
各ブロックの各属性について値の分布を近似した分布情報を算出する分布情報算出手段をさらに含み、
前記判定手段が、前記分布情報を利用して、前記判定を実行する
請求項１に記載のデータ処理装置。
【請求項３】
前記分布情報算出手段が、複数の異なる情報における複数の分布情報を算出し、
前記判定手段が、前記複数の分布情報を利用して、前記判定を実行する
請求項２に記載のデータ処理装置。
【請求項４】
前記判定手段が、レコード選択処理の選択条件が属性の大小関係に基づく場合、各ブロックの統計値から取得した前記属性の最大値と最小値を利用して、前記判定を実行する
請求項１乃至３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記分割手段が、過去の問合せでの選択処理の条件式に頻出する属性に関して、前記テーブルデータに含まれるレコードを並び替え、並び替えた後の前記テーブルデータをブロックに水平分割する
請求項１乃至４のいずれか１項に記載のデータ処理装置。
【請求項６】
テーブルデータに含まれるレコードを、複数のブロックに、レコードを単位とした分割である水平分割し、
前記ブロックのそれぞれについて、前記ブロックにおけるレコードに含まれる属性の統計値を算出し、
前記テーブルデータに対しレコードの選択処理後に集約処理をする問合せを処理する際に、前記選択処理に基づいて前記ブロック内のレコードが全て選択されるか否かを、前記ブロックのそれぞれについて、前記統計値を基に、判定し、
前記判定に基づいてレコードが全て選択されると判定されたブロックについては、前記判定されたブロックの統計値を、前記判定されたブロックに対する前記問合せの結果として利用する
データ処理方法。
【請求項７】
テーブルデータに含まれるレコードを、複数のブロックに、レコードを単位とした分割である水平分割する分割処理と、
前記ブロックのそれぞれについて、前記ブロックにおけるレコードに含まれる属性の統計値を算出する統計値算出処理と、
前記テーブルデータに対しレコードの選択処理後に集約処理をする問合せを処理する際に、前記選択処理に基づいて前記ブロック内のレコードが全て選択されるか否かを、前記ブロックのそれぞれについて、前記統計値を基に、判定する判定処理と、
前記判定処理に基づいてレコードが全て選択されると判定されたブロックについては、前記判定されたブロックの統計値を、前記判定されたブロックに対する前記問合せの結果として利用する問合せ実行処理と、
をコンピュータ装置に実行させるプログラムをコンピュータ装置に読み取り可能に記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理方法、及び、記録媒体に関する。
【背景技術】
【０００２】
上記技術分野において、非特許文献１は、属性の集約処理を高速化するため、集約処理の際に上述の文献に記載されたインデックス（以下、軽量インデックス）を用いる。そして、非特許文献１は、軽量インデックスを用いて、レコードのスキャンを省き、ストレージに対するデータのＩ／Ｏ（Input / Output）量と計算量を削減する。非特許文献１には、このような、属性の集約処理を高速化する技術が、開示されている。【０００３】
例えば、非特許文献１に記載の技術は、図１９に示した従業員（Ｓｔａｆｆ）の身長（Ｈｅｉｇｈｔ）の最大値（ＭＡＸ）を算出（Ｓｅｌｅｃｔ）する問合せ１９００の処理に対し、通常、図２０のように、問合せを処理する。つまり、非特許文献１に記載の技術は、テーブルデータ２００１に対して、属性選択２００２を実行し、解２００３を求める。【０００４】
非特許文献１に記載の技術は、図２１に示すように、大きなテーブルデータ２１０１を、ブロック２１１１〜２１１３と呼ばれる複数のパーティションに水平分割し、それぞれのブロックに軽量インデックス２１１４〜２１１６を付して、保存する。そして、非特許文献１に記載の技術は、各ブロックのHeight属性（身長）の軽量インデックス２１１４〜２１１６をスキャンし、各ブロック内での身長の最大値２１１７〜２１１９を取得し、それらの最大値を計算（選択）する。非特許文献１に記載の技術は、上記の動作を基に、テーブルデータ２１０１全体での、身長の最大値を計算する。このときの一連の処理において必要なＩ／Ｏ量は、各ブロックの軽量インデックスのスキャンにおけるＩ／Ｏ量でよい。また、最大値の計算処理は、各ブロックから得られた最大値の中から、最大の値を計算すれよい。そのため、非特許文献１に記載の技術は、ブロック全体のスキャン及び計算を要する単純な処理と比べ、高速となる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Y. Huai, Ashutosh Chauhan, Alan Gates, Gunther Haqleitner, Eric n. Hanson, Owen O'Malley, Jitendra Pandy, Yuan Yuan, Ruboa Lee, and Xiaodong Zhang, "Major Technical Advancements in Apache Hive", SIGMOD '14, Proceedings of the 2014 ACM SIGMOD international conference on Management of data, pp.1235-1246, June 18, 2014
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、非特許文献１に記載の技術は、単純な問合せにしか、適用できない。非特許文献１に記載の技術が、適用可能でない問合せの例として、図２２に示す問合せ２２００を、考える。図２２に示す問合せ２２００は、在職している従業員の最大身長を計算する問合せである。この問合せ２２００では、テーブルStaff内で集約の対象となるレコード（テーブル内の行）が、退職した従業員のＩＤを格納したテーブルRetiredの中に含まれない（NOT EXISTS）レコードに限定されている。【０００７】
図２３は、図２２の問合せ２２００の実行例を図示したものである。図２３において、テーブルデータ２１０１のブロック２１１１には、退職してしまった従業員の２つのレコード２３０１、及び２３０２が、含まれる（ＩＤ＝２、ＩＤ＝４のレコード）。このため、集計対象となるレコードは、ＩＤ＝１（身長＝１７８．０）のレコードと、ＩＤ＝３（身長＝１５２．５）のレコードとなる。そして、ブロック２１１１における問合せ２２００の最大値は、「１７８．０」となる。しかし、ブロック２１１１の軽量インデックス２１１４には、最大身長として、退職した従業員（ＩＤ＝２）の身長１９０．０（最大値２１１７）が、格納されている。この格納されている値は、問合せ２２００の結果の算出に使うことができない値である。このように、集約処理の対象が、レコードの選択処理の結果であるとき、非特許文献１に記載の技術は、有効な値を算出できないという問題点があった。【０００８】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の一形態におけるデータ処理装置は、
テーブルデータに含まれるレコードを、複数のブロックに、レコードを単位とした分割である水平分割する分割手段と、
ブロックのそれぞれについて、ブロックにおけるレコードに含まれる属性の統計値を算出する統計値算出手段と、
テーブルデータに対し、レコードの選択処理後に集約処理をする問合せを処理する際に、選択処理に基づいてブロック内のレコードが全て選択されるか否かを、ブロックのそれぞれについて、統計量を基に、判定する判定手段と、
判定手段に基づいてレコードが全て選択されると判定されたブロックについては、判定されたブロックの統計値を、判定されたブロックに対する問合せの結果として利用する問合せ実行手段と
を含む。【００１０】
上記目的を達成するため、本発明の一形態におけるデータ処理方法は、
テーブルデータに含まれるレコードを、複数のブロックに、レコードを単位とした文化である水平分割し、
ブロックのそれぞれについて、ブロックにおけるレコードに含まれる属性の統計値を算出し、
テーブルデータに対しレコードの選択処理後に集約処理をする問合せを処理する際に、選択処理に基づいてブロック内のレコードが全て選択されるか否かを、ブロックのそれぞれについて、統計量を基に、判定し、
判定に基づいてレコードが全て選択されると判定されたブロックについては、判定されたブロックの統計値を、判定されたブロックに対する問合せの結果として利用する。【００１１】
上記目的を達成するため、本発明の一形態における記録媒体は、
テーブルデータに含まれるレコードを、複数のブロックに、レコードを単位とした分割である水平分割する分割処理と、
ブロックのそれぞれについて、ブロックにおけるレコードに含まれる属性の統計値を算出する統計値算出処理と、
テーブルデータに対しレコードの選択処理後に集約処理をする問合せを処理する際に、選択処理に基づいてブロック内のレコードが全て選択されるか否かを、ブロックのそれぞれについて、統計値を基に、判定する判定処理と、
判定処理に基づいてレコードが全て選択されると判定されたブロックについては、判定されたブロックの統計値を、判定されたブロックに対する問合せの結果として利用する問合せ実行処理と
をコンピュータ装置に実行させるプログラムをコンピュータ装置に読み取り可能に記録する。
【発明の効果】
【００１２】
本発明に基づけば、より柔軟に、集約処理を高速化するとの効果を奏することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明における第１実施形態に係るデータ処理装置の構成を示すブロック図である。
【図２】図２は、第２実施形態に係るデータ処理装置の機能構成を示すブロック図である。
【図３】図３は、テーブルデータの一例を示す図である。
【図４】図４は、ブロックに分割されたテーブルデータの一例を示す図である。
【図５】図５は、テーブルデータの一例を示す図である。
【図６】図６は、問い合わせの例を示す図である。
【図７】図７は、問合せに対応する実行プランの例を示す図である。
【図８】図８は、図７に示す実行プランを、ブロックごとにスキャン処理するように変換した実行プランを示す図である。
【図９】図９は、図７に示す実行プランを、軽量インデックス内の統計値を利用するよう変換した実行プランを示す図である。
【図１０】図１０は、図６に示す問合せに対応する実行プランの例を示す図である。
【図１１】図１１は、図１０に示す実行プランにおいて、ブロックごとにスキャン処理するように変換した実行プランを示す図である。
【図１２】図１２は、図１１に示す実行プランにおいて、全てのレコードが選択されるブロックについて選択処理を取り除いた実行プランを示す図である。
【図１３】図１３は、図１２に示す実行プランにおいて、全てのレコードが選択されるブロックについて統計値を利用するよう変換した実行プランを示す図である。
【図１４】図１４は、図６に示す問合せにおける統計値の利用可否をテーブルデータに対して判定した結果を例示する図である。
【図１５】図１５は、図３に示すテーブルデータを、属性Ageについて並び替えた後に、統計値の利用可否を判定した結果を示す図である。
【図１６】図１６は、第２実施形態に係るデータ処理装置において、テーブルデータを入力した際に実行される処理の流れを例示するフローチャートである。
【図１７】図１７は、第２実施形態に係るデータ処理装置において、問合せの実行時の処理の流れを例示するフローチャートである。
【図１８】図１８は、第３実施形態に係るデータ処理装置を例示するブロック図である。
【図１９】図１９は、従業員の中での最大の身長を求める問合せを例示する図である。
【図２０】図２０は、図１９の問合せの処理イメージを示す図である。
【図２１】図２１は、非特許文献１におけるテーブルの格納形式を示す図である。
【図２２】図２２は、在職している従業員の最大の身長を算出する集約処理の問合せを示す図である。
【図２３】図２３は、図２２に示す問合せの処理イメージを示す図である。
【図２４】図２４は、データ処理装置のハードウェア構成を例示するブロック図である。
【発明を実施するための形態】
【００１４】
以下に、図面を参照して、本発明の実施の形態について、例示的に、詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は、あくまで例示であり、本発明の技術範囲を、それらのみに限定する趣旨のものではない。
【００１５】
[第１実施形態]
本発明における第１実施形態としてのデータ処理装置１００について、図１を用いて説明する。図１に示すように、データ処理装置１００は、分割部１０１と、統計値算出部１０２と、判定部１０３と、問合せ実行部１０４とを含む。
【００１６】
分割部１０１は、テーブルデータ１１０を、複数のブロックに、水平分割する。ここで、水平分割とは、データの単位であるレコードを、分割の単位とした分割である。統計値算出部１０２は、分割後のブロックのそれぞれについて、属性の統計値を算出する。判定部１０３は、テーブルデータ１１０に対し、レコードの選択処理後に集約処理をする問合せ１２０を処理する際に、選択処理においてブロック内のレコードが全て選択されるか否かを、ブロックごとに、判定する。なお、上記は、判定部１０３が、ブロック内のレコードのデータを参照せずに、選択処理においてブロック内のレコードが全て選択されるか否かを判定することでもある。
【００１７】
問合せ実行部１０４は、判定部１０３が、ブロック内のレコードが全て選択されると判定した場合に、そのブロックの統計値を、そのブロックに対する問合せ１２０の結果として、利用する。
【００１８】
（効果）
本実施形態は、ブロック内のレコードが全て選択されると判定された場合に、ブロックの統計値をブロックに対する問合せの結果として利用する。そのため、本実施形態は、より柔軟に集約処理を高速化するとの効果を奏することができる。
【００１９】
その詳細な理由は、次のとおりである。分割部１０１は、テーブルデータ１１０を、複数のブロックに水平分割する。統計値算出部１０２は、分割後のブロックのそれぞれについて、属性の統計値を算出する。判定部１０３は、テーブルデータ１１０に対し、レコードの選択処理後に集約処理をする問合せ１２０を処理する際に、選択処理に基づいてブロック内のレコードが全て選択されるか否かを、ブロックごとに判定する。そして、問合せ実行部１０４は、判定部１０３の判定が、ブロック内のレコードが全て選択されると判定した場合に、そのブロックの統計値を、そのブロックに対する問合せ１２０の結果として、利用するためである。
【００２０】
[第２実施形態]
（前提技術）
関係データベースシステム（Relational Database Management System, 以下、ＲＤＢＭＳとする）は、関係モデルに基づく行と列とを用いた表形式のデータの集合（以下、このデータの集合をテーブル又はテーブルデータと呼ぶ）を保持する。そして、ＲＤＢＭＳは、ＲＤＢＭＳのユーザに、データの効率的な検索手段と、更新手段とを提供する。テーブル内のデータの単位である行は、「レコード」と呼ばれる。つまり、レコードは、一つのデータを表す。レコード（データ）は、１つ又は複数の属性を、含む。テーブル内の列が、各属性に対応する。なお、テーブルに含まれる列の＜列名，データ型＞の一覧を、そのテーブルの「スキーマ」と呼ぶ。
【００２１】
ＲＤＢＭＳのユーザは、ＲＤＢＭＳに対して、プログラミング言語を用いて、テーブルに対する検索・更新処理を指示する。この指示は、問合せ（Query）と呼ばれる。問合せを記述するためには、ＳＱＬというプログラミング言語が、標準的に用いられている。ＳＱＬを用いると、ＲＤＢＭＳのユーザは、テーブルの中から条件にあてはまるレコードを、簡便かつ効率的に、取り出すことができる。また、ＲＤＢＭＳのユーザは、ＳＱＬを用いて、列名を指定することで、レコードの中から、必要な属性を取り出すことができる。
【００２２】
ＲＤＢＭＳにおいて頻繁におこなわれる処理の一つに、属性の集約処理が、ある。属性の集約処理とは、テーブルのある属性の値群から、何らかの集約値を計算する処理である。集約値としては、最大値、最小値、平均値、又は、標準偏差などがある。属性の集約処理は、テーブル内の全て、又は、大部分のレコードに関して、行われることが多い。そのため、テーブルが巨大であった場合、集約処理は、大量のレコードをスキャンする（調べる）こととなるため、多量のＩ／Ｏ処理と計算処理とが、発生する。そして、その結果、処理速度が、長大となる。
【００２３】
（データ処理装置２００の機能構成）
次に、本発明における第２実施形態に係るデータ処理装置２００について、図２を用いて説明する。図２は、本実施形態に係るデータ処理装置２００の構成を示すブロック図である。図２において、各ブロックは、ハードウェア単位の構成ではなく、機能単位の構成を表している。
【００２４】
データ処理装置２００は、テーブルデータ入力部２０１と、ファイル作成部２０２と、統計値情報算出部２０３と、分布情報算出部２０４と、問合せ受付部２０５と、問合せ実行部２０６と、統計値利用可否判定部２０７と、ファイル格納部２０８とを含む。以下、それぞれについて、説明する。なお、ファイル作成部２０２は、第１の実施形態における分割部１０１に相当する。統計値情報算出部２０３は、統計値算出部１０２に相当する。統計値利用可否判定部２０７は、判定部１０３に相当する。問合せ実行部２０６は、問合せ実行部１０４に相当する。
【００２５】
（テーブルデータ入力部２０１）
テーブルデータ入力部２０１は、テーブルデータ（テーブル）を取得する。テーブルデータ（テーブル）は、表形式のデータである。テーブルデータの行は、レコードである。また、レコードの各列は、レコードの属性となる。また、テーブルデータ（テーブル）は、テーブルデータに含まれる列の列名及びデータ型などから構成されるスキーマの情報を持つ。
【００２６】
図３に、テーブルデータの一例として、従業員の属性を集計したテーブルデータ３０１を示す。図３に示すテーブルデータ３０１は、従業員の属性の例として、ここでは、年齢（Ａｇｅ）と身長（Ｈｅｉｇｈｔ）とを記録している。図３のＩＤは、従業員の識別子である。また、図３の「ｉｎｔ」は、整数型データを示す。同様に、図３の「float」は、浮動小数点型データを示す。
【００２７】
テーブルデータ入力部２０１がテーブルデータ（テーブル）を取得する方法は、様々である。例えば、テーブルデータ入力部２０１は、テーブルデータとして、外部の装置から入力される対象行列を取得してもよい。その他にも、例えば、テーブルデータ入力部２０１は、ユーザが手動で入力するテーブルデータを、取得してもよい。さらに、テーブルデータ入力部２０１は、外部の装置にアクセスして、対象行列を取得してもよい。
【００２８】
（ファイル作成部２０２）
ファイル作成部２０２は、テーブルデータを、主記憶又は二次記憶などの記録装置に記録するために、ファイル化する。ファイルは、ブロックと呼ばれる複数の領域を含む。具体的には、ファイル作成部２０２は、テーブルデータを、レコードを単位とした分割である水平分割を実行する分割手段として機能し、テーブルを複数のブロックに分割後、各ブロックを、ファイルの各ブロック領域に記録する。ファイル作成部２０２は、テーブルを水平分割する前に、テーブルの行の順番を並び替え、それから水平分割すると、問合せにおいて統計値が利用できる確率を高めることができる。
【００２９】
各ブロックは、統計値情報算出部２０３に基づいて計算された、そのブロック内に含まれるレコード群の統計値（最大値、又は、最小値など）を、保持する。この統計値を、「軽量インデックス」と呼ぶ。また、各ブロックは、分布情報算出部２０４に基づいて計算された、そのブロック内に含まれるレコード群のデータの分布をビット列で近似した分布情報を、属性ごとに、保持する。
【００３０】
図４は、ファイル作成部２０２が、図３に示したテーブルデータ３０１に対して、ファイル化処理を加えた状態のテーブルデータ４０１を示している。テーブルデータ４０１内には、水平分割に基づいて、ブロック４１１〜４１３が、生成されている。ブロック４１１〜４１３のそれぞれは、統計値情報算出部２０３に基づいて計算されたそのブロック内に含まれるレコード群の統計値（ここでは、最小値及び最大値）を、軽量インデックス４１４〜４１６として、保持する。
【００３１】
（統計値情報算出部２０３）
統計値情報算出部２０３は、ブロックの中に含まれるレコード群の統計値を、属性ごとに、算出する。統計値の例としては、属性の最大値、最小値、平均値、又は、そのブロック内に含まれるレコード数がある。
【００３２】
（分布情報算出部２０４）
分布情報算出部２０４は、属性ごとに、ブロック内レコード群のデータ分布をビット列で近似した分布情報を算出する。分布情報は、固定長のビット列である。ある属性の分布情報は、ブロック内の各レコードの属性の値を、属性の値を受け取ってビット位置を返却するマッピング関数に入力し、マッピング関数から出力として得られたビット位置のビットを１にすることで、算出される。マッピング関数の例としては、数式（１）のように、剰余演算を用いて値を量子化する関数「ｆ（ｘ）」がある。数式（１）において、ｘは、属性の値である。また、Ｎは、分布情報を表すビット列のビット長に対応する。なお、数式（１）の第２項は、床関数を示すガウス記号と、除法の剰余を示すｍｏｄ記号（modular記号）を用いている。
【００３３】
【数１】
2016027451.tif 000003
【００３４】
具体的な例として、図５におけるＲｅｔｉｒｅｄテーブル５０１のブロック５１１の属性ＩＤの分布情報の算出を考える。ここで、ビット数Ｎは、「８」とする。ブロックＡ内のＩＤは、２、４、及び５０である。これらを上述の関数ｆ（ｘ）に入力すると、ｆ（２）＝１、ｆ（４）＝１、及びｆ（５０）＝５であることから、分布情報算出部２０４は、分布情報のビット列のうち１ビット目と５ビット目とを「１」にした、「１０００１０００」を算出する。
【００３５】
なお、本実施形態は、分布情報をファイルに格納している。しかし、この他の格納の形態として、実施形態２で説明するように、分布情報からなるデータベースをファイルとは別に用意するなどの形態がある。
【００３６】
（問合せ受付部２０５）
問合せ受付部２０５は、ファイル格納部２０８に格納されているテーブルデータ（テーブル）に対する処理の記述、すなわち、問合せを取得する。問合せに使われるプログラミング言語の例としては、ＳＱＬ又はHive Query Language（非特許文献１を参照）がある。
【００３７】
図６は、年齢が２９歳より小さい従業員の中での最大の身長を求める問合せ６０１、及び、在職している従業員（退職した従業員に含まれない従業員）の最大身長を求める問合せ６０２を示す図である。
【００３８】
（問合せ実行部２０６）
問合せ実行部２０６は、問合せ受付部２０５が取得した問合せを実行する。
具体的には、問合せ実行部２０６は、問合せを、基本演算のグラフとして構成される実行プランへと変換する。そして、問合せ実行部２０６は、実行プランを、得られる処理結果が同じであるが、より高速に実行できる実行プランへと最適化する。そのうえで、問合せ実行部２０６は、最適化した実行プランにしたがって、処理を行う。基本演算としては、関係データベースで用いられる選択、結合、若しくは、射影の処理、又は、レコード集合内の属性の値の最大値、最小値、平均値、若しくは標準偏差の算出処理などがある。
【００３９】
図７は、テーブルデータ３０１内の職員の最大身長を求める問合せ６０１から得られた実行プランの例である。図７において、Ｓｔａｆｆ７０１は、Ｓｔａｆｆテーブルを表し、Ｓｃａｎ７０２は、テーブルのスキャン処理を表し、Ｍａｘheight７０３は、ｈｅｉｇｈｔ属性の最大値を求める処理を、それぞれ、表す。問合せ実行部２０６は、次のような流れで、図７の実行プランを、統計値情報を利用する実行プラン（図９）へと、最適化する。
【００４０】
まず、Ｓｔａｆｆが、複数のブロックへ水平分割されていることから、問合せ実行部２０６は、図７の実行プラン７００を、図８の実行プラン８００へと、変換する。図８において、Ｓｔａｆｆ  Ａ、Ｓｔａｆｆ  Ｂ、及びＳｔａｆｆ  Ｃは、ＳｔａｆｆのブロックＡ、Ｂ、及びＣを表し、Ｍａｘは、最大値の算出処理を、それぞれ、表す。また、Ｍａｘｈｅｉｇｈｔは、各ブロックのヘッダにおける統計値情報としの身長ｈｅｉｇｈｔの最大値を表す。そして、図８の実行プラン８００の各ブロックのヘッダに、統計値情報として、身長ｈｅｉｇｈｔの最大値（Ｍａｘｈｅｉｇｈｔ）が格納されていることを利用し、問合せ実行部２０６は、図８の実行プラン８００を、図９の実行プラン９００へと変換する。実行プラン９００において、ＳｃａｎMaxheightは、ブロックのヘッダをスキャンして身長ｈｅｉｇｈｔの最大値を求める処理を表す。最適化後の図９に示す実行プラン９００は、各ブロックのヘッダのスキャンを実行する。そのため、実行プラン９００は、全てのブロックのスキャンを要した図７の実行プラン７００と比べて、計算量とＩ／Ｏ量が少なく、高速である。
【００４１】
図１０は、図４で例示したＳｔａｆｆテーブル内の在職している職員の最大身長を求める問合せから得られた実行プラン１０００の例である。図１０において、Ｒｅｔｉｒｅｄ１００１は、退職した社員のＩＤが格納されたＲｅｔｉｒｅｄテーブルを表し、σＮＯＴ ＥＸＩＳＴＳ１００２は、ＮＯＴ  ＥＸＩＳＴＳ（退職した社員のＩＤに含まれないＩＤ）に基づく選択処理を、それぞれ、表す。問合せ実行部２０６は、次のような流れで、図１０の実行プラン１０００を、統計値情報を利用する実行プラン（図１３）へと、最適化する。まず、Ｓｔａｆｆが、複数のブロックへ水平分割されていることから、問合せ実行部２０６は、図１０の実行プラン１０００を、図１１の実行プラン１１００へと、変換する。そして、問合せ実行部２０６は、実行プラン１１００を、統計値利用可否判定部２０７に、入力する。そして、統計値利用可否判定部２０７は、各ブロックの全てのレコードが、σＮＯＴ ＥＸＩＳＴＳに基づいて選択されるか否かを、判定する。そして、全てのレコードが選択されると判定された場合、問合せ実行部２０６は、選択処理を取り除く。例えば、ブロックＢとＣで全てのレコードが選択されると判定された場合、問合せ実行部２０６は、図１１の実行プラン１１００を、図１２の実行プラン１２００へと、変換する。その後、問合せ実行部２０６は、前述の例と同様に、ＢとＣとに対して、ブロックのスキャン処理と最大値の算出処理とを、統計値のスキャン処理に置換し、最終的に、図１３の実行プラン１３００を得る。
【００４２】
（統計値利用可否判定部２０７）
統計値利用可否判定部２０７は、実行プランの中で、統計値を利用できるか否かを判定する。例えば、ブロックのスキャン処理と集約処理との間に選択処理があった場合、統計値利用可否判定部２０７は、その選択処理において、ブロック内のレコードが全て選択されるか否かを、ブロックに格納されているレコードを参照することなく判定する。
【００４３】
レコードが全て選択されるかどうかの判定方法として、分布情報を利用した偽陰性のある判定方式がある。偽陰性があるとは、実際にはレコードが全て選択されるにもかかわらず、選択されないレコードがあると判定してしまうことを意味する。選択されないレコードがあると判定された場合、その部分に関しては最適化されないため、最適化の機会損失となる。しかし、最適化されない場合でも、処理結果に対する影響は、ない。そのため、この判定方法は、安全である。
【００４４】
図６の問合せ６０１を処理する場合、レコード選択処理の選択条件が、属性の大小関係に基づくため、統計値利用可否判定部２０７は、ブロックのヘッダに格納されている属性の最大値と最小値とを利用する。そして、統計値利用可否判定部２０７は、そのブロック内の全てのレコードが選択されるか否か、すなわち、統計値が利用可能か否かを判定する。
【００４５】
一方、図６に示す問合せ６０２を処理する場合、統計値利用可否判定部２０７は、数式（１）に示すマッピング関数を基に算出された分布情報を用いる。すなわち、統計値利用可否判定部２０７は、分布情報を用いて、問合せ６０２内に出現するＮＯＴ  ＥＸＩＳＴＳに基づいた選択処理において、レコードが全て選択されるか否かを判定する。ここでのタスク（判定）は、Ｓｔａｆｆテーブルの各ブロック内に、Ｒｅｔｉｒｅｄテーブル内のＩＤを持つレコードが一つも含まれないか否かを判定することである。一つも含まれない場合、統計値利用可否判定部２０７は、選択処理に基づいて、ブロック内の全てのレコードが選択されることがわかる。
【００４６】
前述したように、分布情報算出部２０４は、ＲｅｔｉｒｅｄテーブルのＩＤ属性に対して、分布情報として、ビット列１０００１０００を得る。また、同様にマッピング関数を使うと、分布情報算出部２０４は、ＳｔａｆｆテーブルのブロックＡ、Ｂ、及びＣについて、それぞれ、分布情報として、ビット列１０００００００、０１００００００、及び００１０００００を得る。このとき、統計値利用可否判定部２０７は、Ｒｅｔｉｒｅｄテーブルのビット列と各ブロックのビット列とのＡＮＤ演算を行う。そして、演算結果が「０」になった場合、統計値利用可否判定部２０７は、そのＳｔａｆｆテーブルブロック内に、Ｒｅｔｉｒｅｄテーブル内のＩＤを持つレコードが一つも含まれないと判断する。すなわち、統計値利用可否判定部２０７は、選択処理に基づいて、そのブロック内の全てのレコードが選択されると、判断する。ここでは、ブロックＡに対しては、ＡＮＤ演算結果が、「０」でない値となる、また、ブロックＢとＣとについては、ＡＮＤ演算結果が、「０」となる。そのため、統計値利用可否判定部２０７は、ブロックＢとＣについてＮＯＴ  ＥＸＩＳＴＳに基づいた選択処理で、全てのレコードが選択されると判断する。これらの処理を基に、問合せ実行部２０６は、これらのブロック（ブロックＢ及びＣ）について統計値を利用して処理するように、実行プランを最適化し、計算時間を短縮する。
【００４７】
例えば、統計値利用可否判定部２０７は、問合せ６０１に対し、図１４で例示されているテーブルデータ１４０１の各ブロック１４１１〜１４１３に対して、各ブロックのヘッダをスキャンし、そのブロックにおけるＡｇｅ属性の最大値と最小値を取得する。なお、この際、統計値利用可否判定部２０７は、ブロック１４１１〜１４１３の軽量インデックス１４１４〜１４１６を用いる。そして、選択条件が「Age＜２９」であることから、統計値利用可否判定部２０７は、Ageの最大値が２９よりも小さいブロックについては、全てのレコードが選択される、すなわち、統計値が利用可能であると判定する。図１４では、ブロック１４１２が、この判定に該当する。
【００４８】
なお、上述したとおり、ファイル作成部２０２は、テーブルを水平分割する前に、レコードの順序を並び替えてもよい。具体的には、ファイル作成部２０２は、過去の問合せでの選択処理の条件式に頻出する属性に関して、テーブルデータのレコード（行）を並び替えたうえで、テーブルデータを水平分割してブロックを作成してもよい。この並び替えに基づいて、ファイル作成部２０２は、ブロック内の属性の値の分散を小さくし、問合せ内で統計値が利用できる確率を高めることができる。図１５は、図１４のテーブルデータ１４０１を、属性Ageについて並び替えたテーブルデータ１５０１を示す図である。図１５のテーブルデータ１５０１において、統計値を利用できるブロックは、３つのブロック１５１１〜１５１３の中の、ブロック１５１１及び１５１２の２つである。テーブルデータ１５０１における統計量を利用できるブロックの数は、並び替え前のテーブルデータ１４０１でのブロックの数の一つより、多い。すなわち、スキャンを省くことのできるブロック数が多くなっているため、テーブルデータ１５０１において、Ｉ／Ｏ量と計算量とが、少なくなる。そのため、問合せ処理は、より効率的である。
【００４９】
並び替えを行う属性については、利用者が、決定してもよいし、データ処理装置２００が、自動的に決定してもよい。並び替え属性の決定方式の例としては、過去に行われた問合せの履歴の中で、選択処理の条件式に頻繁に登場する属性を選ぶ、という方法がある。一般に、過去に行われた問合せに似た問合せが、将来も行われる可能性が高い。そのため、この方式は、将来行われる問合せの性能を向上することが、期待される。
【００５０】
（ファイル格納部２０８）
ファイル格納部２０８は、ファイル作成部２０２に基づいて作成されたファイルを、記録媒体に格納する。この記録媒体は、主記憶でもよいし、二次記憶でもよい。
【００５１】
（処理の流れ）
図１６は、データ処理装置２００において、テーブルデータを入力した際に実行される処理の流れを例示するフローチャートである。ステップＳ１６０２において、テーブルデータ入力部２０１は、テーブルデータを取得する。ステップＳ１６０４において、ファイル作成部２０２は、テーブルを水平分割し、ブロックを作成する。ステップＳ１６０６〜Ｓ１６１２において、統計値情報算出部２０３は、各ブロックについて、統計値を算出する（Ｓ１６０８）。さらに、分布情報算出部２０４は、各ブロックについて、分布情報を算出する（Ｓ１６１０）。その後、ファイル作成部２０２は、ブロックと、得られた統計値情報及び分布情報とを基に、ファイルを作成し、ファイル格納部２０８に格納する（Ｓ１６１４）。
【００５２】
図１７は、データ処理装置２００において、問合せの実行時の処理の流れを例示するフローチャートである。ステップＳ１７０２において、問合せ受付部２０５は、問合せを取得する。ステップＳ１７０４において、問合せ実行部２０６は、実行プランを作成する。ステップＳ１７０６において、問合せ実行部２０６は、実行プラン内の各レコード選択処理について、そのレコード選択処理の直後に集約処理が行われる場合、統計値利用可否判定部２０７に問合せを行なう。そして、問合せ実行部２０６は、選択処理の処理結果に対して、統計値が利用できるか否かを判定する（Ｓ１７０８）。そして、利用可能と判定された場合、問合せ実行部２０６は、選択処理と、その後の集約処理とを、統計値の参照処理へと、置換する（Ｓ１７１０）。問合せ実行部２０６が、実行プランの最適化処理（全てのレコード選択処理に対する判定及び置換）を完了すると、データ処理装置２００は、ステップＳ１７１２からステップＳ１７１４に進む。ステップＳ１７１４において、問合せ実行部２０６は、最適化後の実行プランに従って、ファイル格納部２０８に格納されているテーブルデータを参照しながら、問合せを処理する。
【００５３】
（効果）
本実施形態は、実行プラン内に含まれるレコードの選択処理結果の集約処理を、軽量インデックス内の統計値のスキャン処理に置換する。そのため、本実施形態は、計算量とＩ／Ｏ量とを削減するとの効果を奏することができる。そして、その結果、本実施形態は、集約処理の実行時間を短縮するとの効果を奏することができる。
【００５４】
その詳細な理由は、次の通りである。テーブルデータ入力部２０１は、テーブルデータを取得する。そして、ファイル作成部２０２は、テーブルを水平分割し、ブロックを作成する。統計値情報算出部２０３は、各ブロックについて、統計値を算出する。さらに、分布情報算出部２０４は、各ブロックについて、分布情報を算出する。その後、ファイル作成部２０２は、ブロックと、得られた統計値情報及び分布情報とを含むファイルを作成し、保存する。
【００５５】
そして、問合せ実行部２０６は、問合せ受付部２０５が取得した問合せに対して、実行プランを作成する。そして、問合せ実行部２０６は、実行プラン内の各レコード選択処理について、そのレコード選択処理の直後に集約処理が行われる場合、統計値利用可否判定部２０７を用いて、統計値が利用できるか否かを判定する。利用可能と判定された場合、問合せ実行部２０６は、選択処理と、その後の集約処理とを、統計値の参照処理へと置換、つまり、最適化する。そして、問合せ実行部２０６は、最適化後の実行プランに従って、問合せを処理するためである。
【００５６】
[第３実施形態]
次に、本発明の第３実施形態に係るデータ処理装置１８００について、図１８を用いて説明する。図１８は、本実施形態に係るデータ処理装置１８００の機能構成を説明するための図である。本実施形態に係るデータ処理装置１８００は、上記第２実施形態と比べると、分布情報格納部１８０１を有する点で異なる。その他の構成及び動作は、第２実施形態と同様である。そのため、同じ構成及び動作については、同じ符号を付して、その詳しい説明を省略する。
【００５７】
データの分布情報を、テーブルデータファイルのブロックのヘッダ部分に格納していたデータ処理装置２００と異なり、データ処理装置１８００は、データの分布情報を、分布情報格納部１８０１に格納する。そのため、統計値利用可否判定部２０７は、統計値の利用可否を判断する際に、ブロックのヘッダではなく、分布情報格納部１８０１への問合せを行う。
【００５８】
（分布情報格納部１８０１）
分布情報格納部１８０１は、分布情報算出部２０４が算出した各ブロックの各属性に対する分布情報を格納する。分布情報格納部１８０１は、主記憶又は二次記憶内のデータベースでもよいし、ファイルでもよい。
【００５９】
（効果）
本実施形態は、分布情報とデータの実体の格納先とを分離する。そのため、本実施形態は、テーブルデータの格納されているファイルを更新しないで、分布情報の種類を変更又は追加できるとの効果を奏することができる。
【００６０】
[他の実施形態]
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステム、又は、装置も、本発明の範疇に含まれる。
【００６１】
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する情報処理プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるデータ処理プログラム、あるいは、そのプログラムを格納した媒体、そのプログラムをダウンロードさせるＷＷＷ(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体（non-transitory computer readable medium）は、本発明の範疇に含まれる。
【００６２】
[ハードウェア構成]
以上の説明した、データ処理装置１００、データ処理装置２００、及び、データ処理装置１８００（以下まとめて、データ処理装置１００とする）は、次のように構成される。
【００６３】
例えば、データ処理装置１００の各構成部は、ハードウェア回路で構成されてもよい。
【００６４】
また、データ処理装置１００は、各構成部が、ネットワークを介して接続した複数の装置を用いて、構成されてもよい。
【００６５】
また、データ処理装置１００は、複数の構成部を１つのハードウェアで構成されてもよい。
【００６６】
また、データ処理装置１００は、ＣＰＵ（Central Processing Unit）と、ＲＯＭ（Read Only Memory）と、ＲＡＭ（Random Access Memory）とを含むコンピュータ装置として実現されてもよい。データ処理装置１００は、上記構成に加え、さらに、入出力接続回路（ＩＯＣ：Input / Output Circuit）と、ネットワークインターフェース回路（ＮＩＣ：Network Interface Circuit）とを含むコンピュータ装置として実現されてもよい。
【００６７】
図２４は、データ処理装置１００の一例であるデータ処理装置６００のハードウェア構成を例示するブロック図である。
【００６８】
データ処理装置６００は、ＣＰＵ６１０と、ＲＯＭ６２０と、ＲＡＭ６３０と、内部記憶装置６４０と、ＩＯＣ６５０と、ＮＩＣ６８０とを含み、コンピュータ装置を構成している。
【００６９】
ＣＰＵ６１０は、ＲＯＭ６２０からプログラムを読み込む。そして、ＣＰＵ６１０は、読み込んだプログラムに基づいて、ＲＡＭ６３０と、内部記憶装置６４０と、ＩＯＣ６５０と、ＮＩＣ６８０とを制御する。そして、ＣＰＵ６１０を含むコンピュータは、これらの構成を制御し、図１に示す、分割部１０１と、統計値算出部１０２と、判定部１０３と、問合せ実行部１０４としての各機能を実現する。あるは、ＣＰＵ６１０を含むコンピュータは、これらの構成を制御し、図２又は図１８に示す各構成部としての各機能を実現する。
【００７０】
ＣＰＵ６１０は、各機能を実現する際に、ＲＡＭ６３０又は内部記憶装置６４０を、プログラムの一時記憶として使用してもよい。
【００７１】
また、ＣＰＵ６１０は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体６９０が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでもよい。あるいは、ＣＰＵ６１０は、ＮＩＣ６８０を介して、図示しない外部の装置からプログラムを受け取り、ＲＡＭ６３０に保存して、保存したプログラムを基に動作してもよい。
【００７２】
ＲＯＭ６２０は、ＣＰＵ６１０が実行するプログラム及び固定的なデータを記憶する。ＲＯＭ６２０は、例えば、Ｐ−ＲＯＭ（Programmable-ROM）又はフラッシュＲＯＭである。
【００７３】
ＲＡＭ６３０は、ＣＰＵ６１０が実行するプログラム及びデータを一時的に記憶する。ＲＡＭ６３０は、例えば、Ｄ−ＲＡＭ（Dynamic-RAM）である。
【００７４】
内部記憶装置６４０は、データ処理装置６００が長期的に保存するデータ及びプログラムを記憶する。また、内部記憶装置６４０は、ＣＰＵ６１０の一時記憶装置として動作してもよい。内部記憶装置６４０は、例えば、ハードディスク装置、光磁気ディスク装置、ＳＳＤ（Solid State Drive）又はディスクアレイ装置である。
【００７５】
ここで、ＲＯＭ６２０と内部記憶装置６４０は、不揮発性（non-transitory）の記憶媒体（記録媒体）である。一方、ＲＡＭ６３０は、揮発性（transitory）の記憶媒体である。そして、ＣＰＵ６１０は、ＲＯＭ６２０、内部記憶装置６４０、又は、ＲＡＭ６３０に記憶されているプログラムを基に動作可能である。つまり、ＣＰＵ６１０は、不揮発性記憶媒体又は揮発性記憶媒体を用いて動作可能である。
【００７６】
ＩＯＣ６５０は、ＣＰＵ６１０と、入力機器６６０及び表示機器６７０とのデータを仲介する。ＩＯＣ６５０は、例えば、ＩＯインターフェースカード又はＵＳＢ（Universal Serial Bus）カードである。
【００７７】
入力機器６６０は、データ処理装置６００の操作者からの入力指示を受け取る機器である。入力機器６６０は、例えば、キーボード、マウス又はタッチパネルである。
【００７８】
表示機器６７０は、データ処理装置６００の操作者に情報を表示する機器である。表示機器６７０は、例えば、液晶ディスプレイである。
【００７９】
ＮＩＣ６８０は、ネットワークを介した図示しない外部の装置とのデータのやり取りを中継する。ＮＩＣ６８０は、例えば、ＬＡＮ（Local Area Network）カードである。
【００８０】
このように構成されたデータ処理装置６００は、データ処理装置１００と同様の効果を得ることができる。
【００８１】
その理由は、データ処理装置６００のＣＰＵ６１０が、プログラムに基づいてデータ処理装置１００と同様の機能を実現できるためである。
【００８２】
[実施形態の他の表現]
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
テーブルデータに含まれるレコードを、複数のブロックに、レコードを単位とした分割である水平分割する分割手段と、
ブロックのそれぞれについて、ブロックにおけるレコードに含まれる属性の統計値を算出する統計値算出手段と、
テーブルデータに対し、レコードの選択処理後に集約処理をする問合せを処理する際に、選択処理に基づいてブロック内のレコードが全て選択されるか否かを、ブロックのそれぞれについて、統計値に基づいて、判定する判定手段と、
判定手段に基づいてレコードが全て選択されると判定されたブロックについては、判定されたブロックの統計値を、判定されたブロックに対する問合せの結果として利用する問合せ実行手段と
を含むデータ処理装置。
（付記２）
各ブロックの各属性について値の分布を近似した分布情報を算出する分布情報算出手段をさらに含み、
判定手段が、分布情報を利用して、判定を実行する
付記１に記載のデータ処理装置。
（付記３）
分布情報算出手段が、複数の異なる情報における複数の分布情報を算出し、
判定手段が、複数の分布情報を利用して、判定を実行する
付記２に記載のデータ処理装置。
（付記４）
判定手段が、レコード選択処理の選択条件が属性の大小関係に基づく場合、各ブロックの統計値から取得した属性の最大値と最小値を利用して、判定を実行する
付記１乃至３のいずれか１項に記載のデータ処理装置。
（付記５）
分割手段が、過去の問合せでの選択処理の条件式に頻出する属性に関して、テーブルデータに含まれるレコードを並び替え、並び替えた後のテーブルデータをブロックに水平分割する
付記１乃至４のいずれか１項に記載のデータ処理装置。
（付記６）
テーブルデータに含まれるレコードを、複数のブロックに、レコードを単位とした分割である水平分割し、
ブロックのそれぞれについて、ブロックにおけるレコードに含まれる属性の統計値を算出し、
テーブルデータに対しレコードの選択処理後に集約処理をする問合せを処理する際に、選択処理に基づいてブロック内のレコードが全て選択されるか否かを、ブロックのそれぞれについて、統計値を基に、判定し、
判定に基づいてレコードが全て選択されると判定されたブロックについては、判定されたブロックの統計値を、判定されたブロックに対する問合せの結果として利用する
データ処理方法。
（付記７）
テーブルデータに含まれるレコードを、複数のブロックに、レコードを単位とした分割である水平分割する分割処理と、
ブロックのそれぞれについて、ブロックにおけるレコードに含まれる属性の統計値を算出する統計値算出処理と、
テーブルデータに対しレコードの選択処理後に集約処理をする問合せを処理する際に、選択処理に基づいてブロック内のレコードが全て選択されるか否かを、ブロックのそれぞれについて、統計値を基に、判定する判定処理と、
判定処理に基づいてレコードが全て選択されると判定されたブロックについては、判定されたブロックの統計値を、判定されたブロックに対する問合せの結果として利用する問合せ実行処理
をコンピュータ装置に実行させるプログラムをコンピュータ装置に読み取り可能に記憶する記録媒体。
【００８３】
この出願は、２０１４年８月１９日に出願された日本出願特願２０１４−１６６７５３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【００８４】
本発明の活用例として、分散データウェアハウスシステムが、挙げられる。分散データウェアハウスシステムでは、テーブルデータが、水平分割され、複数のノードに分散配置される。そのため、本発明を用いると、分散データウェアハウス上の集約処理は、高速となる。
【符号の説明】
【００８５】
１００    データ処理装置
１０１    分割部
１０２    統計値算出部
１０３    判定部
１０４    問合せ実行部
１１０    テーブルデータ
１２０    問合せ
２００    データ処理装置
２０１    テーブルデータ入力部
２０２    ファイル作成部
２０３    統計値情報算出部
２０４    分布情報算出部
２０５    問合せ受付部
２０６    問合せ実行部
２０７    統計値利用可否判定部
２０８    ファイル格納部
３０１    テーブルデータ
４０１    テーブルデータ
４１１    ブロック
４１４    軽量インデックス
５０１    Ｒｅｔｉｒｅｄテーブル
５１１    ブロック
６００    データ処理装置
６０１    問合せ
６０２    問合せ
６１０    ＣＰＵ
６２０    ＲＯＭ
６３０    ＲＡＭ
６４０    内部記憶装置
６５０    ＩＯＣ
６６０    入力機器
６７０    表示機器
６８０    ＮＩＣ
６９０    記憶媒体
７００    実行プラン
７０１    Ｓｔａｆｆ
７０２    Ｓｃａｎ
７０３    Ｍａｘheight
８００    実行プラン
９００    実行プラン
１０００    実行プラン
１００１    Ｒｅｔｉｒｅｄ
１００２    σＮＯＴ ＥＸＩＳＴＳ
１１００    実行プラン
１２００    実行プラン
１３００    実行プラン
１４０１    テーブルデータ
１４１１    ブロック
１４１２    ブロック
１４１４    軽量インデックス
１５０１    テーブルデータ
１５１１    ブロック
１８００    データ処理装置
１８０１    分布情報格納部
１９００    問合せ
２００１    テーブルデータ
２００２    属性選択
２００３    解
２１０１    テーブルデータ
２１１１    ブロック
２１１４    軽量インデックス
２１１７    最大値
２２００    問合せ
２３０１    レコード
【図１】
2016027451.tif 000004
【図２】
2016027451.tif 000005
【図３】
2016027451.tif 000006
【図４】
2016027451.tif 000007
【図５】
2016027451.tif 000008
【図６】
2016027451.tif 000009
【図７】
2016027451.tif 000010
【図８】
2016027451.tif 000011
【図９】
2016027451.tif 000012
【図１０】
2016027451.tif 000013
【図１１】
2016027451.tif 000014
【図１２】
2016027451.tif 000015
【図１３】
2016027451.tif 000016
【図１４】
2016027451.tif 000017
【図１５】
2016027451.tif 000018
【図１６】
2016027451.tif 000019
【図１７】
2016027451.tif 000020
【図１８】
2016027451.tif 000021
【図１９】
2016027451.tif 000022
【図２０】
2016027451.tif 000023
【図２１】
2016027451.tif 000024
【図２２】
2016027451.tif 000025
【図２３】
2016027451.tif 000026
【図２４】
2016027451.tif 000027
【国際調査報告】
2016027451.tif 000028
2016027451.tif 000029
2016027451.tif 000030
2016027451.tif 000031