(57)【要約】【課題】データの検索効率を向上させる。【解決手段】複数のレコードを含み、第１のカラムを基準カラムとし、複数のレコードを構成するデータが第１のカラムの所定範囲毎にクラスタリングされた第１のデータセットと、複数のレコードを含み、第２のカラムを基準カラムとし、複数のレコードを構成するデータが第２のカラムの所定範囲毎にクラスタリングされた第２のデータセットを生成する。クラスタリングにより生成されたクラスタを記憶装置に記憶させる。基準カラムを示す情報と、所定範囲を示す情報と、クラスタの記憶領域とが対応付けられたインデックス情報に基づいて、基準カラムが検索条件に対応し且つ所定範囲が検索条件を含むクラスタを記憶装置から読み出す。読み出されたクラスタから検索条件に合致したデータを抽出する。【選択図】図４
2019057082.tif 000002
【特許請求の範囲】
【請求項１】
複数のレコードを含み、第１のカラムをソートの基準となる基準カラムとし、前記複数のレコードを構成するデータが前記第１のカラムの所定範囲毎にクラスタリングされた第１のデータセットと、前記複数のレコードを含み、第２のカラムを前記基準カラムとし、前記複数のレコードを構成するデータが前記第２のカラムの所定範囲毎にクラスタリングされた第２のデータセットを生成するデータセット生成部と、
前記クラスタリングにより生成されたクラスタを記憶装置に記憶させる記憶部と、
前記基準カラムを示す情報と、前記所定範囲を示す情報と、前記クラスタの記憶領域とが対応付けられたインデックス情報を生成するインデックス情報生成部と、
前記インデックス情報に基づいて、前記基準カラムが検索条件に対応し且つ前記所定範囲が前記検索条件を含む前記クラスタを前記記憶装置から読み出すクラスタ読出部と、
読み出された前記クラスタから前記検索条件に合致したデータを抽出するデータ抽出部と、
を備えるデータ検索システム。
【請求項２】
前記第２のデータセットを構成する複数の前記クラスタのうちの少なくとも１つの前記クラスタは、当該クラスタ内で前記第２のカラムを基準としたソートがなされていない、
請求項１に記載のデータ検索システム。
【請求項３】
前記第２のデータセットは、前記第１のカラムが前記検索条件に対応していない場合に、前記検索条件に対応するカラムを前記基準カラムとして生成される、
請求項１又は２に記載のデータ検索システム。
【請求項４】
複数の前記クラスタは、複数の前記記憶装置に分散して記憶される、
請求項１〜３のいずれか１項に記載のデータ検索システム。
【請求項５】
同一のカラムのデータを有する第１のクラスタと第２のクラスタとが、それぞれ異なる前記記憶装置に記憶される、
請求項４に記載のデータ検索システム。
【請求項６】
前記記憶装置は、ＳＳＤである、
請求項４又は５に記載のデータ検索システム。
【請求項７】
複数のレコードを含み、第１のカラムをソートの基準となる基準カラムとし、前記複数のレコードを構成するデータが前記第１のカラムの所定範囲毎にクラスタリングされた第１のデータセットと、前記複数のレコードを含み、第２のカラムを前記基準カラムとし、前記複数のレコードを構成するデータが前記第２のカラムの所定範囲毎にクラスタリングされた第２のデータセットを生成するステップと、
前記クラスタリングにより生成されたクラスタを記憶装置に記憶させるステップと、
前記基準カラムを示す情報と、前記所定範囲を示す情報と、前記クラスタの記憶領域とが対応付けられたインデックス情報を生成するステップと、
前記インデックス情報に基づいて、前記基準カラムが検索条件に対応し且つ前記所定範囲が前記検索条件を含む前記クラスタを前記記憶装置から読み出すステップと、
読み出された前記クラスタから前記検索条件に合致したデータを抽出するステップと、
を含むデータ検索方法。
【請求項８】
コンピュータに、
複数のレコードを含み、第１のカラムをソートの基準となる基準カラムとし、前記複数のレコードを構成するデータが前記第１のカラムの所定範囲毎にクラスタリングされた第１のデータセットと、前記複数のレコードを含み、第２のカラムを前記基準カラムとし、前記複数のレコードを構成するデータが前記第２のカラムの所定範囲毎にクラスタリングされた第２のデータセットを生成する処理と、
前記クラスタリングにより生成されたクラスタを記憶装置に記憶させる処理と、
前記基準カラムを示す情報と、前記所定範囲を示す情報と、前記クラスタの記憶領域とが対応付けられたインデックス情報を生成する処理と、
前記インデックス情報に基づいて、前記基準カラムが検索条件に対応し且つ前記所定範囲が前記検索条件を含む前記クラスタを前記記憶装置から読み出す処理と、
読み出された前記クラスタから前記検索条件に合致したデータを抽出する処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ検索システム、データ検索方法、及びプログラムに関する。
【背景技術】
【０００２】
様々な分野においてデータベースから所望のデータを抽出するデータ検索システムが利用されている。データベースの形式として、複数のカラムの属性値が対応付けられたＲＤＢ（Relational  Database）がある。
【０００３】
例えば、プログラムの実行結果を示すトレース情報から所望のデータを抽出するシステムであって、プログラムを構成する関数（スコープ）の種類、関数の処理が開始された開始時間、関数の処理が継続した処理時間、関数間の呼び出し関係等をカラムとし、開始時間を基準として時系列にソートされたＲＤＢから、所定の時間範囲内のデータを抽出するシステムがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２００８／０１７８１５８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のようなＲＤＢを利用した検索システムにおいて、ソートの基準となるカラム（基準カラム）に対応する検索条件が指定された場合には、検索条件に合致するデータを抽出する処理を容易に行うことができる。例えば、ＲＤＢを構成する複数のレコードが時系列にソートされており、検索条件としてある時間範囲が指定された場合には、当該時間範囲に含まれるレコードを容易に抽出することができる。
【０００６】
しかし、検索条件が基準カラムに対応していない場合（例えば、時系列にソートされたデータベースにおいて時間以外の検索条件が指定された場合）、データベース内を全スキャンすることが必要になる場合がある。ビッグデータを検索対象とする場合等には、検索効率を向上させることが非常に重要となる。
【０００７】
そこで、以下の実施形態では、データの検索効率を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
実施形態のデータ検索システムは、データセット生成部と、記憶部と、インデックス情報生成部と、クラスタ読出部と、データ抽出部と、を備える。データセット生成部は、複数のレコードを含み、第１のカラムをソートの基準となる基準カラムとし、複数のレコードを構成するデータが第１のカラムの所定範囲毎にクラスタリングされた第１のデータセットと、複数のレコードを含み、第２のカラムを基準カラムとし、複数のレコードを構成するデータが第２のカラムの所定範囲毎にクラスタリングされた第２のデータセットを生成する。記憶部は、クラスタリングにより生成されたクラスタを記憶装置に記憶させる。インデックス情報生成部は、基準カラムを示す情報と、所定範囲を示す情報と、クラスタの記憶領域とが対応付けられたインデックス情報を生成する。クラスタ読出部は、インデックス情報に基づいて、基準カラムが検索条件に対応し且つ所定範囲が検索条件を含むクラスタを記憶装置から読み出す。データ抽出部は、読み出されたクラスタから検索条件に合致したデータを抽出する。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態の第１の例に係るデータ検索システムのハードウェア構成例を示す図。
【図２】第１の実施形態の第２の例に係るデータ検索システムのハードウェア構成例を示す図。
【図３】第１の実施形態に係る情報処理端末及びサーバのハードウェア構成例を示す図。
【図４】第１の実施形態に係るデータ検索システムの機能構成例を示すブロック図。
【図５】第１の実施形態に係るＤＢの生データのデータ構造例を示す図。
【図６】第１の実施形態に係る第１のデータセットのデータ構造例を示す図。
【図７】第１の実施形態に係る第１のデータセットから生成された第２のデータセットのデータ構造例を示す図。
【図８】第１の実施形態の第１の例に係るインデックス情報のデータ構造例を示す図。
【図９】第１の実施形態の第２の例に係るインデックス情報のデータ構造例を示す図。
【図１０】第１の実施形態の第３の例に係るインデックス情報のデータ構造例を示す図。
【図１１】第１の実施形態に係るデータ検索システムにおけるデータセットの生成処理例を示すフローチャート。
【図１２】第１の実施形態に係るデータ検索システムにおけるクラスタの読み出しから抽出データの出力までの処理の例を示すフローチャート。
【図１３】第１の実施形態の第１の例に係る検索条件のデータ構造例を示す図。
【図１４】第１の実施形態に係るインデックス情報のうち第１の例に係る検索条件に対応する部分の例を示す図。
【図１５】第１の実施形態の第１の例に係る検索条件に対応するクラスタのデータ構造例を示す図。
【図１６】第１の実施形態の第１の例に係る抽出データのデータ構造例を示す図。
【図１７】第１の実施形態の第２の例に係る検索条件のデータ構造例を示す図。
【図１８】第１の実施形態に係るインデックス情報のうち第２の例に係る検索条件に対応する部分の例を示す図。
【図１９】第１の実施形態の第２の例に係る検索条件に対応するクラスタのデータ構造例を示す図。
【図２０】第１の実施形態の第２の例に係る抽出データのデータ構造例を示す図。
【図２１】第１の実施形態の第１の例に係るクラスタの記憶領域の例を示す図。
【図２２】第１の実施形態の第２の例に係るクラスタの記憶領域の例を示す図。
【図２３】第２の実施形態に係る第３のデータセットのデータ構造例を示す図。
【図２４】第２の実施形態に係るクラスタから抽出データを抽出する際の処理例を示すフローチャート。
【図２５】第３の実施形態に係るデータセットの生成処理例を示すフローチャート。
【発明を実施するための形態】
【００１０】
（第１の実施形態）
図１は、第１の実施形態の第１の例に係るデータ検索システム１のハードウェア構成例を示す図である。本例に係るデータ検索システム１は、情報処理端末１１、サーバ１２、及びネットワーク１３を含む。情報処理端末１１は、ユーザが使用するＰＣ（Personal  Computer）（タブレット端末、スマートフォン等を含む）等であり得る。サーバ１２は、データ検索システム１の管理者が管理するサーバコンピュータ等であり得る。情報処理端末１１とサーバ１２とは、インターネット、ＬＡＮ（Local  Area  Network）等のネットワーク１３を介して接続されている。なお、同図においては、情報処理端末１１及びサーバ１２がそれぞれ１つずつ記載されているが、それらの両方又は一方が複数存在してもよい。
【００１１】
サーバ１２は、データベース（ＤＢ）１５を有する。ＤＢ１５は、記憶装置（不揮発性メモリ等）、制御演算装置（プロセッサ等）、制御演算装置を制御するプログラム等を利用して構築及び管理される。ＤＢ１５は、使用目的に応じた各種のデータを蓄積して構築されるものである。ＤＢ１５に蓄積されるデータの種類は特に限定されるべきものではないが、例えばプログラムの実行結果を示すトレース情報、所定のシステムの稼働状態を示すログ情報等であり得る。サーバ１２は、情報処理端末１１から送信された検索条件に合致するデータをＤＢ１５から抽出し、抽出されたデータ（抽出データ）を情報処理端末１１に送信する。
【００１２】
図２は、第１の実施形態の第２の例に係るデータ検索システム１のハードウェア構成例を示す図である。本例に係るデータ検索システム１は、単体の情報処理端末２１により構成される。情報処理端末２１は、ＰＣ等であり得る。本例に係る情報処理端末２１は、制御演算装置２５、ユーザＩ／Ｆ（キーボード、タッチパネル、ディスプレイ等）２６、及びＤＢ１５を含む。なお、同図においては、ＤＢ１５が情報処理端末２１内に存在している状態が示されているが、ＤＢ１５は情報処理端末２１外に存在してもよい。
【００１３】
制御演算装置２５は、ユーザＩ／Ｆ２６を介してユーザにより入力された検索条件に合致するデータをＤＢ１５から抽出し、抽出されたデータ（抽出データ）をユーザＩ／Ｆ２６を介して出力する。
【００１４】
図３は、第１の実施形態に係る情報処理端末１１，２１及びサーバ１２のハードウェア構成例を示す図である。情報処理端末１１，２１及びサーバ１２は、ＣＰＵ（Central  Processing  Unit）３１、ＲＡＭ（Random  Access  Memory）３２、ＲＯＭ（Read  Only  Memory）３３、ストレージ３４、入力デバイス３５、出力デバイス３６、通信Ｉ／Ｆ３７、及びバス３８を含む。ＣＰＵ３１は、ＲＯＭ３３等に記憶されたプログラムに従ってＲＡＭ３２をワーキングエリアとして所定の制御演算処理を行う。ストレージ３４は、不揮発性メモリであって、ＤＢ１５を構成するデータ及びＤＢ１５を検索するために必要なデータを蓄積する。入力デバイス３５は、外部から情報を入力するためのデバイスであり、例えばキーボード、マウス、タッチパネル等である。出力デバイス３６は、内部で生成した情報を外部に出力するためのデバイスであり、例えばディスプレイ、プリンタ等である。通信Ｉ／Ｆ３７は、適宜なコンピュータネットワーク（ネットワーク１３等）を介して外部の装置との間で情報の送受信を可能にするデバイスである。なお、サーバ１２においては、入力デバイス３５及び／又は出力デバイス３６が不要となる場合がある。
【００１５】
なお、図１〜図３に示すハードウェア構成は単なる例示であり、データ検索システム１は、使用状況に応じて適宜なハードウェア及びソフトウェアを利用して構築されるべきものである。
【００１６】
図４は、第１の実施形態に係るデータ検索システム１の機能構成例を示すブロック図である。本実施形態に係るデータ検索システム１は、記憶部１０１、入力部１０２、データセット生成部１０３、インデックス情報生成部１０４、クラスタ読出部１０５、データ抽出部１０６、及び出力部１０７を含む。
【００１７】
記憶部１０１は、ＤＢ１５の検索（検索条件に合致したデータの抽出）に必要な各種のデータを記憶する。本実施形態に係る記憶部１０１は、複数のデータセット１２１，１２２を記憶する。
【００１８】
データセット１２１，１２２は、ＤＢ１５の生データ（ソートされていない複数のレコード、対応付けられていない属性値等）を、基準カラムを基準としてソートしたテーブル状のデータである。基準カラムとは、ソートの基準となるカラムである。ここでは、記憶部１０１に第１のデータセット１２１と第２のデータセット１２２と記憶されている例が示されている。第１のデータセット１２１の基準カラムと第２のデータセット１２２の基準カラムとは異なる。更に多くのデータセットが記憶されてもよく、その場合には各データセットの基準カラムは互いに異なることとなる。記憶部１０１は、ＤＢ１５の生データをそのまま記憶してもよい。
【００１９】
各データセット１２１，１２２はクラスタリングされている。すなわち、第１のデータセット１２１は第１のクラスタ群１３１により構成され、第２のデータセット１２２は第２のクラスタ群１３２により構成されている。更に多くのデータセットが存在する場合には、各データセットはそれぞれクラスタ群により構成される。
【００２０】
入力部１０２は、検索条件を入力する。検索条件とは、ＤＢ１５を検索するためのキーとなる数値、文字、記号、それらの組み合わせ等からなる情報であり、例えば時間、名称、個数等を表す情報であり得る。検索条件は、ＤＢ１５のデータ構造に含まれる複数のカラム（属性）に対応する情報である。例えば、時間のカラムに対応する検索条件は時刻、時間範囲等であり、名称のカラムに対応する検索条件はアルファベット、五十音等である。このように、検索条件は複数のカラムのいずれかに対応するように指定される。検索条件は、ユーザにより指定されてもよいし、所定のシステム（アプリケーション等）により自動的に指定されてもよい。
【００２１】
データセット生成部１０３は、１つ以上のデータセット１２１，１２２を生成する。本実施形態に係るデータセット生成部１０３は、ＤＢ１５の生データから第１のデータセット１２１を生成し、第１のデータセット１２１から第２のデータセット１２２を生成する。ＤＢ１５の生データから直接第２のデータセット１２２を生成してもよい。
【００２２】
図５は、第１の実施形態に係るＤＢ１５の生データ１１１のデータ構造例を示す図である。図６は、第１の実施形態に係る第１のデータセット１２１のデータ構造例を示す図である。図７は、第１の実施形態に係る第１のデータセット１２１から生成された第２のデータセット１２２のデータ構造例を示す図である。
【００２３】
図５に示すように、本実施形態に係る生データ１１１は、複数のレコード１１５が蓄積されて構成されている。各レコード１１５は、複数のデータが対応付けられて構成されている。本例に係るレコード１１５は、３つの属性値（例えば「１」、「Ａ」、及び「５００」）が対応付けられて構成されている。各属性値は、それぞれ異なる属性（カラム）に属する値である。
【００２４】
図６に示すように、本実施形態に係る第１のデータセット１２１は、第１のカラム１４１、第２のカラム１４２、及び第３のカラム１４３を含み、生データ１１１に含まれる複数のレコード１１５が第１のカラム１４１を基準としてソートされた構成を有している（本例では、生データ１１１のレコード１１５の配列と第１のデータセット１２１のレコード１１５の配列とが一致している。）。第１のデータセット１２１の基準カラムは第１のカラム１４１である。例えば、第１のカラム１４１は動作開始からの経過時間等であり得る。カラムの数及び各カラムの内容は、使用状況、生データ１１１の構成等に応じて変化することは無論である。
【００２５】
第１のデータセット１２１は、第１−１のレコードクラスタ１５１、第１−２のレコードクラスタ１５２、及び第１−３のレコードクラスタ１５３を含んでいる。これらのレコードクラスタ１５１〜１５３は、複数のレコード１１５を、第１のカラム１４１を基準としたクラスタ範囲（所定範囲）毎に分割したものである。第１−１のレコードクラスタ１５１は１〜１０のクラスタ範囲（第１のカラム１４１の属性値の範囲）にあるレコード１１５からなり、第１−２のレコードクラスタ１５２は１１〜２０のクラスタ範囲にあるレコード１１５からなり、第１−３のレコードクラスタ１５３は２１〜３０のクラスタ範囲にあるレコード１１５からなる。当該クラスタ範囲は、使用状況に応じて適宜設定されるべきものである。本例に係るクラスタ範囲は均一な間隔で設定されているが、例えば各レコードクラスタ１５１〜１５３に所定数のレコード１１５が含まれるように不均等な間隔で設定されてもよい。
【００２６】
本例においては、第１−１のレコードクラスタ１５１は、第１のカラム１４１の最上位に位置するクラスタ１５１Ａ、第２のカラム１４２の最上位に位置するクラスタ１５１Ｂ、及び第３のカラム１４３の最上位に位置するクラスタ１５１Ｃを含む。第１−２のレコードクラスタ１５２は、第１のカラム１４１の中間に位置するクラスタ１５２Ａ、第２のカラム１４２の中間に位置するクラスタ１５２Ｂ、及び第３のカラム１４３の中間に位置するクラスタ１５２Ｃを含む。第１−３のレコードクラスタ１５３は、第１のカラム１４１の最下位に位置するクラスタ１５３Ａ、第２のカラム１４２の最下位に位置するクラスタ１５３Ｂ、及び第３のカラム１４３の最下位に位置するクラスタ１５３Ｃを含む。
【００２７】
図７に示すように、本実施形態に係る第２のデータセット１２２は、第１のデータセット１２１と同一のカラム１４１〜１４３を含み、第１のデータセット１２１（生データ１１１）に含まれる複数のレコード１１５が第２のカラム１４２を基準としてソートされた構成を有している。第２のデータセット１２２の基準カラムは第２のカラム１４２である。
【００２８】
第２のデータセット１２２は、第２−１のレコードクラスタ１６１、第２−２のレコードクラスタ１６２、及び第２−３のレコードクラスタ１６３を含んでいる。これらのレコードクラスタ１６１〜１６３は、複数のレコード１１５を、第２のカラム１４２を基準としてクラスタ範囲毎に分割したものである。第２−１のレコードクラスタ１６１はＡ〜Ｅのクラスタ範囲（第２のカラム１４２の属性値の範囲）にあるレコード１１５からなり、第２−２のレコードクラスタ１６２はＦ〜Ｎのクラスタ範囲にあるレコード１１５からなり、第２−３のレコードクラスタ１６３はＯ〜Ｚのクラスタ範囲にあるレコード１１５からなる。当該クラスタ範囲は、使用状況に応じて適宜設定されるべきものである。本例では、クラスタ範囲が不均等な間隔で設定されているが、均一な間隔で設定されてもよい。
【００２９】
本例においては、第２−１のレコードクラスタ１６１は、第１のカラム１４１の最上位に位置するクラスタ１６１Ａ、第２のカラム１４２の最上位に位置するクラスタ１６１Ｂ、及び第３のカラム１４３の最上位に位置するクラスタ１６１Ｃを含む。第２−２のレコードクラスタ１６２は、第１のカラム１４１の中間に位置するクラスタ１６２Ａ、第２のカラム１４２の中間に位置するクラスタ１６２Ｂ、及び第３のカラム１４３の中間に位置するクラスタ１６２Ｃを含む。第２−３のレコードクラスタ１６３は、第１のカラム１４１の最下位に位置するクラスタ１６３Ａ、第２のカラム１４２の最下位に位置するクラスタ１６３Ｂ、及び第３のカラム１４３の最下位に位置するクラスタ１６３Ｃを含む。
【００３０】
上記のように生成された第１のデータセット１２１を構成する第１のクラスタ群１３１（クラスタ１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３Ｃ）、及び第２のデータセット１２２を構成する第２のクラスタ群１３２（クラスタ１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃ）は、記憶部１０１により所定の記憶領域に記憶される。
【００３１】
インデックス情報生成部１０４は、基準カラムを示す情報と、クラスタ範囲を示す情報と、各クラスタ１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３Ｃ，１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃの記憶領域を示す情報とが対応付けられたインデックス情報を生成する。
【００３２】
図８は、第１の実施形態の第１の例に係るインデックス情報１７１のデータ構造例を示す図である。第１の例に係るインデックス情報１７１は、第１のデータセット１２１に対応する情報、すなわち基準カラムが第１のカラム１４１である場合における情報であり、基準カラム、レコードクラスタＩＤ、クラスタ範囲、及び記憶領域の関係を示している。
【００３３】
「基準カラム」は、上記基準カラムを示している。「レコードクラスタＩＤ」は、レコードクラスタ１５１〜１５３を特定する情報であり、本例では「１」が第１−１のレコードクラスタ１５１に対応し、「２」が第１−２のレコードクラスタ１５２に対応し、「３」が第１−３のレコードクラスタ１５３に対応している。「クラスタ範囲」は、各レコードクラスタ１５１〜１５３のクラスタ範囲を示している。「記憶領域」は、各クラスタ１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３Ｃの記憶領域を特定する情報（メモリアドレス等）である。本例では、クラスタ１５１Ａが「ＳＳＤ＝０，ＡＤＤＲ＝０」に記憶され、クラスタ１５１Ｂが「ＳＳＤ＝０，ＡＤＤＲ＝３」に記憶され、クラスタ１５１Ｃが「ＳＳＤ＝０，ＡＤＤＲ＝６」に記憶され、クラスタ１５２Ａが「ＳＳＤ＝１，ＡＤＤＲ＝０」に記憶され、クラスタ１５２Ｂが「ＳＳＤ＝１，ＡＤＤＲ＝３」に記憶され、クラスタ１５２Ｃが「ＳＳＤ＝１，ＡＤＤＲ＝６」に記憶され、クラスタ１５３Ａが「ＳＳＤ＝２，ＡＤＤＲ＝０」に記憶され、クラスタ１５３Ｂが「ＳＳＤ＝２，ＡＤＤＲ＝３」に記憶され、クラスタ１５３Ｃが「ＳＳＤ＝２，ＡＤＤＲ＝６」に記憶されていることが示されている。本例では、「ＳＳＤ」が記憶素子（物理メディア）の種類及び位置を示し、「ＡＤＤＲ」が各記憶素子内に割り当てられた領域を示している。本例では、記憶素子として複数のソリッドステートドライブが利用されていることが示されている。
【００３４】
図９は、第１の実施形態の第２の例に係るインデックス情報１７２のデータ構造例を示す図である。第２の例に係るインデックス情報１７２は、第２のデータセット１２２に対応する情報、すなわち基準カラムが第２のカラム１４２である場合における情報であり、図８に示す第１の例に係るインデックス情報１７１と同様に、基準カラム、レコードクラスタＩＤ、クラスタ範囲、及び記憶領域の関係を示している。
【００３５】
本例において、「レコードクラスタＩＤ」の「４」は第２−１のレコードクラスタ１６１に対応し、「５」は第２−２のレコードクラスタ１６２に対応し、「６」は第２−３のレコードクラスタ１６３に対応している。「クラスタ範囲」は、各レコードクラスタ１６１〜１６３のクラスタ範囲を示している。「記憶領域」は、各クラスタ１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃの記憶領域を特定する情報（メモリアドレス等）である。本例では、クラスタ１６１Ａが「ＳＳＤ＝０，ＡＤＤＲ＝９」に記憶され、クラスタ１６１Ｂが「ＳＳＤ＝０，ＡＤＤＲ＝１２」に記憶され、クラスタ１６１Ｃが「ＳＳＤ＝０，ＡＤＤＲ＝１４」に記憶され、クラスタ１６２Ａが「ＳＳＤ＝１，ＡＤＤＲ＝９」に記憶され、クラスタ１６２Ｂが「ＳＳＤ＝１，ＡＤＤＲ＝１２」に記憶され、クラスタ１６２Ｃが「ＳＳＤ＝１，ＡＤＤＲ＝１４」に記憶され、クラスタ１６３Ａが「ＳＳＤ＝２，ＡＤＤＲ＝９」に記憶され、クラスタ１６３Ｂが「ＳＳＤ＝２，ＡＤＤＲ＝１２」に記憶され、クラスタ１６３Ｃが「ＳＳＤ＝２，ＡＤＤＲ＝１４」に記憶されていることが示されている。
【００３６】
図１０は、第１の実施形態の第３の例に係るインデックス情報１７３のデータ構造例を示す図である。第３の例に係るインデックス情報１７３は、第１のデータセット１２１及び第２のデータセット１２２の両方に対応する情報、すなわち基準カラムが第１のカラム１４１又は第２のカラム１４２である場合における情報であり、図８及び図９に示すインデックス情報１７１，１７２と同様に、基準カラム、レコードクラスタＩＤ、クラスタ範囲、及び記憶領域の関係を示している。
【００３７】
上記のように、インデックス情報は、図８及び図９に示す第１及び第２の例に係るインデックス情報１７１，１７２のように、データセット１２１，１２２毎（基準カラム毎）に生成されてもよいし、図１０に示す第３の例に係るインデックス情報１７３のように、全てのデータセット１２１，１２２（全ての基準カラム）について生成されてもよい。
【００３８】
クラスタ読出部１０５は、入力部１０２に入力された検索条件に対応するクラスタ１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３Ｃ，１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃを読み出す。クラスタ読出部１０５は、インデックス情報１７１〜１７３に基づいて、基準カラムが検索条件に対応し且つクラスタ範囲が検索条件を含むクラスタ１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３Ｃ，１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃを、記憶部１０１内の該当する記憶領域から読み出す。
【００３９】
データ抽出部１０６は、クラスタ読出部１０５により読み出されたクラスタ１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３Ｃ，１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃから、検索条件に合致するデータを抽出する。
【００４０】
出力部１０７は、データ抽出部１０６により抽出されたデータ（抽出データ）を所定の形式で出力する。抽出データは、ディスプレイ等のユーザＩ／Ｆ（出力デバイス３６）に直接出力されてもよいし、ＧＵＩ（Graphical  User  Interface）システム、解析システム等の外部システムに出力されてもよい。
【００４１】
上記各機能部１０１〜１０７は、例えば１又は複数の集積回路により実現される。上記各機能部１０１〜１０７は、ＣＰＵ３１等のプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現されてもよい。また、上記各機能部１０１〜１０７は、専用のＩＣ（Integrated  Circuit）等のプロセッサ、すなわちハードウェアにより実現されてもよい。また、上記各機能部１０１〜１０７は、ソフトウェア及びハードウェアを併用して実現されてもよい。複数のプロセッサを用いる場合、各プロセッサは、各機能部１０１〜１０７のうちの１つを実現してもよいし、各機能部１０１〜１０７のうちの２以上を実現してもよい。
【００４２】
図１１は、第１の実施形態に係るデータ検索システム１におけるデータセット１２１，１２２の生成処理例を示すフローチャートである。先ず、データセット生成部１０３は基準カラムを設定する（Ｓ１０１）。図５及び図６に示す例においては、経過時間を示す第１のカラム１４１が最初の基準カラムに設定されている。その後、データセット生成部１０３は、生データ１１１に含まれる複数のレコード１１５を、設定された基準カラム（第１のカラム１４１）を基準としてソートし、第１のデータセット１２１を生成する（Ｓ１０２）。その後、データセット生成部１０３は、第１のデータセット１２１を基準カラム（第１のカラム１４１）の所定範囲（クラスタ範囲）毎にクラスタリングする（Ｓ１０３）。
【００４３】
その後、データセット生成部１０３は、他の基準カラムの候補が存在するか否かを判定する（Ｓ１０４）。他の基準カラムの候補の有無の判定基準は、生データ１１１の構造、使用状況等に応じて適宜設定されるべき事項であるが、例えば全てのカラム（図６に示す例では第１のカラム１４１、第２のカラム１４２、及び第３のカラム１４３）を基準カラムとして複数のデータセットを生成する場合には、未だ基準カラムに設定されていない全てのカラム（第２のカラム１４２及び第３のカラム１４３）が候補となる。
【００４４】
他の基準カラムの候補が存在しない場合（Ｓ１０４：Ｎｏ）、新たなデータセットの生成は行われない。一方、他の基準カラムの候補が存在する場合（Ｓ１０４：Ｙｅｓ）、データセット生成部１０３は当該候補の中から新たな基準カラム（図７に示す例では第２のカラム１４２）を設定し（Ｓ１０５）、既に生成されたデータセット（第１のデータセット１２１）又は生データ１１１を新たな基準カラム（第２のカラム１４２）を基準としてソートし、新たなデータセット（第２のデータセット１２２）を生成する（Ｓ１０６）。その後、データセット生成部１０３は、新たなデータセット（第２のデータセット１２２）を新たな基準カラム（第２のカラム１４２）の所定範囲（クラスタ範囲）毎にクラスタリングする（Ｓ１０７）。その後、再度ステップＳ１０４が実行される。
【００４５】
上記処理により、任意のカラムを基準カラムとするデータセットを生成することができる。図７に示す例では、第１のカラム１４１を基準カラムとする第１のデータセット１２１及び第２のカラム１４２を基準カラムとする第２のデータセット１２２のみが示されているが、上記処理により、第３のカラム１４３を基準カラムとするデータセットを生成してもよい。
【００４６】
インデックス情報生成部１０４は、上記のように生成された各データセット１２１，１２２に基づいてインデックス情報１７１〜１７３を生成する。インデックス情報１７１〜１７３の生成方法は特に限定されるべきものではないが、例えばデータセット１２１，１２２の生成処理と平行して生成されてもよいし、生成されたデータセット１２１，１２２に基づいて生成されてもよい。
【００４７】
図１２は、第１の実施形態に係るデータ検索システム１におけるクラスタ１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３Ｃ，１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃの読み出しから抽出データの出力までの処理の例を示すフローチャートである。入力部１０２に検索条件が入力されると（Ｓ２０１）、クラスタ読出部１０５は、インデックス情報１７１〜１７３に基づいて、基準カラムが検索条件に対応し且つクラスタ範囲が検索条件を含むクラスタ１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３Ｃ，１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃを、インデックス情報１７１〜１７３に示される記憶領域から読み出す（Ｓ２０２）。データ抽出部１０６は、読み出されたクラスタ１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３Ｃ，１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃから、検索条件に合致するデータ（レコード１１５）を抽出する（Ｓ２０３）。出力部１０７は抽出されたデータを所定の形式で出力する（Ｓ２０４）。
【００４８】
図１３は、第１の実施形態の第１の例に係る検索条件２０１のデータ構造例を示す図である。本例に係る検索条件２０１は、「第１のカラム１４１の属性値が２以上且つ１０より小さい」レコード１１５を抽出することを示している。検索条件２０１のデータ構造はこれに限定されるものではなく、データセット１２１，１２２の構造、使用状況等に応じて適宜設定されるべきものである。例えば、レコード１１５に含まれる全ての属性値を抽出する代わりに、検索条件２０１に合致するカラムに対応する属性値のみ（例えば第１のカラム１４１の属性値及び第３のカラム１４３の属性値のみ）を抽出するようにしてもよい。
【００４９】
図１４は、第１の実施形態に係るインデックス情報１７１〜１７３のうち第１の例に係る検索条件２０１に対応する部分の例を示す図である。図１４には、レコードクラスタＩＤが「１」であるレコードクラスタ（第１−１のレコードクラスタ１５１）が、基準カラムが第１のカラム１４１であり、且つクラスタ範囲が２以上且つ１０より小さい属性値を含むことを示している。図６及び図７に示すように、第１−１のレコードクラスタ１５１には３つのクラスタ１５１Ａ〜１５１Ｃが含まれる。図１４には、クラスタ１５１Ａの記憶領域は「ＳＳＤ＝０，ＡＤＤＲ＝０」であり、クラスタ１５１Ｂの記憶領域は「ＳＳＤ＝０，ＡＤＤＲ＝３」であり、クラスタ１５１Ｃの記憶領域は「ＳＳＤ＝０，ＡＤＤＲ＝６」であることが示されている。
【００５０】
図１５は、第１の実施形態の第１の例に係る検索条件２０１に対応するクラスタ１５１Ａ〜１５１Ｃのデータ構造例を示す図である。クラスタ読出部１０５は、図１４に示すような、インデックス情報１７１〜１７３のうちの検索条件２０１に対応する部分の情報に基づいて、該当する記憶領域からこれらのクラスタ１５１Ａ〜１５１Ｃを読み出す。
【００５１】
図１６は、第１の実施形態の第１の例に係る抽出データ２１１のデータ構造例を示す図である。データ抽出部１０６は、図１５に示すような読み出されたクラスタ１５１Ａ〜１５１Ｃから、検索条件２０１に合致するデータである抽出データ２１１を抽出する。本例に係る検索条件２０１は、「第１のカラム１４１の属性値が２以上且つ１０より小さい」レコード１１５を抽出することであるため、第１のカラム１４１の属性値が「３」であるレコード１１５のみが抽出データ２１１となる。
【００５２】
図１７は、第１の実施形態の第２の例に係る検索条件２２１のデータ構造例を示す図である。本例に係る検索条件２２１は、「第２のカラム１４２の属性値がＮ以降である」レコード１１５を抽出することを示している。
【００５３】
図１８は、第１の実施形態に係るインデックス情報１７１〜１７３のうち第２の例に係る検索条件２２１に対応する部分の例を示す図である。図１８には、レコードクラスタＩＤが「５」及び「６」であるレコードクラスタ（第２−２のレコードクラスタ１５２及び第２−３のレコードクラスタ１５３）が、基準カラムが第２のカラム１４２であり、且つクラスタ範囲がＮ以降の属性値を含むことを示している。図７に示すように、第２−２のレコードクラスタ１５１及び第２−３のレコードクラスタ１５２には、合計６つのクラスタ１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃが含まれる。図１８には、クラスタ１６２Ａの記憶領域は「ＳＳＤ＝１，ＡＤＤＲ＝９」であり、クラスタ１６２Ｂの記憶領域は「ＳＳＤ＝１，ＡＤＤＲ＝１２」であり、クラスタ１６２Ｃの記憶領域は「ＳＳＤ＝１，ＡＤＤＲ＝１４」であり、クラスタ１６３Ａの記憶領域は「ＳＳＤ＝２，ＡＤＤＲ＝９」であり、クラスタ１６３Ｂの記憶領域は「ＳＳＤ＝２，ＡＤＤＲ＝１２」であり、クラスタ１６３Ｃの記憶領域は「ＳＳＤ＝２，ＡＤＤＲ＝１４」であることが示されている。
【００５４】
図１９は、第１の実施形態の第２の例に係る検索条件２２１に対応するクラスタ１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃのデータ構造例を示す図である。クラスタ読出部１０５は、図１８に示すような、インデックス情報１７１〜１７３のうちの検索条件２２１に対応する部分の情報に基づいて、該当する記憶領域からこれらのクラスタ１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃを読み出す。
【００５５】
図２０は、第１の実施形態の第２の例に係る抽出データ２３１のデータ構造例を示す図である。データ抽出部１０６は、図１９に示すような読み出されたクラスタ１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃから、検索条件２２１に合致するデータである抽出データ２３１を抽出する。本例に係る検索条件２２１は、「第２のカラム１４２の属性値がＮ以降である」レコード１１５を抽出することであるため、第２のカラム１４２の属性値が「Ｎ」、「Ｕ」、「Ｘ」、「ＸＸ」、及び「Ｚ」であるレコード１１５が抽出データ２３１となる。
【００５６】
図２１は、第１の実施形態の第１の例に係るクラスタ１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３Ｃの記憶領域の例を示す図である。本例に係る記憶領域は、３つのＳＳＤ：第１のＳＳＤ２４１（ＳＳＤ０）、第２のＳＳＤ２４２（ＳＳＤ１）、及び第３のＳＳＤ２４３（ＳＳＤ２）を含み、クラスタ１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３ＣがこれらのＳＳＤ２４１〜２４３に分散するように記憶されている。このように、複数のクラスタを複数の物理メディアに分散させて記憶させることにより、処理速度を向上させることが可能となる。
【００５７】
図２２は、第１の実施形態の第２の例に係るクラスタ１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３Ｃの記憶領域の例を示す図である。本例に係る記憶領域は、４つのＳＳＤ：第１のＳＳＤ２４１（ＳＳＤ０）、第２のＳＳＤ２４２（ＳＳＤ１）、第３のＳＳＤ２４３（ＳＳＤ２）、及び第４のＳＳＤ２４４（ＳＳＤ３）を含み、クラスタ１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３ＣがこれらのＳＳＤ２４１〜２４４に分散するように記憶されている。本例においては、第１のカラム１４１の最上位に位置するクラスタ１５１Ａが２つのクラスタ１５１Ａ１，１５１Ａ２（第１のクラスタ及び第２のクラスタ）に分割され、第２のカラム１４２の最上位に位置するクラスタ１５１Ｂが２つのクラスタ１５１Ｂ１，１５１Ｂ２（第１のクラスタ及び第２のクラスタ）に分割され、第３のカラム１４３の最上位に位置するクラスタ１５１Ｃが２つのクラスタ１５１Ｃ１，１５１Ｃ２（第１のクラスタ及び第２のクラスタ）に分割されており、これらの分割されたクラスタ１５１Ａ１，１５１Ａ２，１５１Ｂ１，１５１Ｂ２，１５１Ｃ１，１５１Ｃ２がそれぞれ異なるＳＳＤ（第１のＳＳＤ２４１及び第４のＳＳＤ２４４）に分散されて記憶されている。なお、１つのクラスタの分割数は上記のように２に限定されるものではなく、３以上であってもよい。このように、１つのクラスタを更に分割して複数の物理メディアに分散させて記憶させてもよい。この場合、インデックス情報１７１〜１７３は、分割されたクラスタ毎に記憶領域を特定できるように拡張される必要がある。このように１つのクラスタを分割させることで、物理メディアの残容量に依存せずにクラスタリングを行い、物理メディアの容量を有効に活用することが可能となる。また、頻繁にアクセスされるクラスタを分割することにより、更に処理速度の向上等を図ることが可能となる。
【００５８】
図２１及び図２２に示す例においては、第１のクラスタ群１３１に含まれるクラスタ（第１のデータセット１２１を構成するクラスタ）１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３Ｃのみについて説明されているが、第２のクラスタ群１３２に含まれるクラスタ（第２のデータセット１２２を構成するクラスタ）１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃ、及びその他のデータセットに対応するクラスタについても同様である。
【００５９】
上記データ検索システム１の機能を実現させるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供することができる。また、プログラムは、ネットワークに接続された所定の記憶装置から所定のコンピュータにダウンロードすることにより提供されてもよいし、予めＲＯＭ等に組み込まれて所定の情報処理装置に提供されてもよい。また、プログラムは、上記機能部１０１〜１０７の機能を実現する複数のモジュールから構成されてもよい。
【００６０】
図４には、データ検索システム１の基本的な機能部１０１〜１０７が示されているが、実施形態はこれに限らない。例えば、各機能部が協調しながら並列的に動作を行う構成、１つの機能部を複数の機能部に分割する構成、これらの構成を組み合わせた構成等であってもよい。
【００６１】
以上のように、本実施形態によれば、データの検索効率を向上させることが可能となる。クラスタを記憶する記憶素子はＳＳＤに限られるものではなく、適宜な記憶素子を利用することができるが、本実施形態によれば、処理速度を向上させることができるので、他の記憶素子（例えばＤＲＡＭ（Dynamic  Random  Access  Memory）等）に比べて単位記憶容量当たりのコストが低いＳＳＤを利用して、十分な処理速度を有するデータ検索システム１を提供することが可能となる。
【００６２】
以下に他の実施形態について図面を参照して説明するが、第１の実施形態と同一又は同様の作用効果を奏する箇所については同一の符号を付してその説明を省略する場合がある。
【００６３】
（第２の実施形態）
図２３は、第２の実施形態に係る第３のデータセット３０１のデータ構造例を示す図である。第３のデータセット３０１は、図７に示す第２のデータセット１２２と同様に、第２のカラム１４２を基準カラムとするが、第３のデータセット３０１の最下部のレコードクラスタ３１１に含まれるクラスタ３１１Ａ〜３１１Ｃは、第２のデータセット１２２の最下部のレコードクラスタ１６３とは異なり、第２のカラム１４２に基づくソートがなされていない。
【００６４】
このように、第２の実施形態に係るデータセット生成部１０３は、基準カラムに基づくソートがなされていないクラスタを含むようにデータセットを生成する。すなわち、第２の実施形態に係る各クラスタは、それぞれクラスタ範囲に応じた数のレコード１１５（例えばクラスタ１６１ＢにはＡ〜Ｅに対応する３つのレコード１１５、１６２ＢにはＦ〜Ｎに対応する２つのレコード１１５、３１１ＢにはＯ〜Ｚに対応する４つのレコード１１５）を格納しているものの、レコード１１５がソートされていないクラスタ（本例ではクラスタ３１１Ｂ）が存在する。このようなデータ構造を有するデータセット３０１であっても、基準カラムのクラスタ範囲毎にクラスタリングされているため、第１の実施形態と同様に、インデックス情報１７１〜１７３に基づいて適切なクラスタ１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，３１１Ａ〜３１１Ｃを読み出すことができる。読み出されたクラスタ１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，３１１Ａ〜３１１Ｃから検索条件に合致する適切なデータを抽出するため、従来技術のようにＤＢ１５内を全検索する場合と比べて、データの検索効率を向上させることができる。
【００６５】
図２４は、第２の実施形態に係るクラスタ１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，３１１Ａ〜３１１Ｃから抽出データを抽出する際の処理例を示すフローチャートである。データ抽出部１０６は、クラスタ読出部１０５により読み出されたクラスタ１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，３１１Ａ〜３１１Ｃ内の検索を開始すると（Ｓ３０１）、先ず、読み出されたクラスタ内がソートされているか否かを判定する（Ｓ３０２）。クラスタ内がソートされているか否かの判定方法は特に限定されるべきものではなく、データセット１２１，１２２のデータ構造、検索条件等に応じて適宜選択されるべきものである。例えば、インデックス情報１７１〜１７３に予めソートの有無を示す情報を含ませる方法、ステップＳ２０２で読み出されたクラスタの基準カラムをスキャンしてソートの有無を確認する方法等が適用され得る。
【００６６】
読み出されたクラスタ内がソートされている場合（Ｓ３０２：Ｙｅｓ）、データ抽出部１０６は、クラスタ１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ内を二分探索により検索し（Ｓ３０３）、検索条件に合致するデータを抽出して出力部１０７に出力させる（Ｓ３０５）。一方、読み出されたクラスタ内がソートされていない場合（Ｓ３０２：Ｎｏ）、データ抽出部１０６は、クラスタ３１１Ａ〜３１１Ｃ内を全検索し（Ｓ３０４）、その後ステップＳ３０５を実行する。その後、データ抽出部１０６は、読み出された複数のクラスタのうち未処理のクラスタが存在するか否かを判定する（Ｓ３０６）。データ抽出部１０６は、未処理のクラスタが存在する場合（Ｓ３０６：Ｙｅｓ）、再度ステップＳ３０２を実行し、未処理のクラスタが存在しない場合（Ｓ３０６：Ｎｏ）、当該ルーチンを終了する。
【００６７】
本実施形態によれば、ソート処理を削減することができるので、第１の実施形態と比較して、データセット１２１，１２２の生成にかかる処理負荷の軽減、処理速度の向上等を図ることができる。
【００６８】
（第３の実施形態）
本実施形態においては、予め複数のデータセットを生成しておくのではなく、既に存在しているデータセットの基準カラム（例えば、第１のデータセット１２１の第１のカラム）が検索条件に対応していない場合に、検索条件に対応するカラムを基準カラムとする新たなデータセットを生成する。
【００６９】
図２５は、第３の実施形態に係るデータセットの生成処理例を示すフローチャートである。入力部１０２に検索条件が入力されると（Ｓ４０１）、データセット生成部１０３は、インデックス情報１７１〜１７３を参照して基準カラムが検索条件に対応するデータセットが存在するか否かを判定する（Ｓ４０２）。基準カラムが検索条件に対応するデータセットが存在する場合（Ｓ４０２：Ｙｅｓ）、クラスタ読出部１０５は、基準カラムが検索条件に対応し、且つクラスタ範囲が検索条件を含むクラスタを記憶領域から読み出す（Ｓ４０３）。その後、データ抽出部１０６は読み出されたクラスタから検索条件に合致するデータを抽出し（Ｓ４０６）、出力部１０７は抽出されたデータを出力する（Ｓ４０７）。
【００７０】
一方、基準カラムが検索条件に対応するデータセットが存在しない場合（Ｓ４０２：Ｎｏ）、クラスタ読出部１０５は、インデックス情報１７１〜１７３に基づいて、記憶領域から特定のデータセット（例えば第１のデータセット１２１を構成する第１のクラスタ群１３１）を読み出す（Ｓ４０４）。特定のデータセットとは、既に存在している１つ以上のデータセットから選択される１つのデータセットである。複数のデータセットから特定のデータセットを選択する方法は特に限定されるべきものではなく、データセットのデータ構造、検索条件等に応じて適宜選択されるべきものである。例えば、第１のカラム１４１を基準としてソートされたデータセット１２１を選択するようにしてもよい。その後、データセット生成部１０３は、読み出された特定のデータセットから検索条件に対応するカラム（例えば第２のカラム１４２）を基準カラムとする新たなデータセット（例えば第２のデータセット１２２）を生成する（Ｓ４０５）。その後、ステップＳ４０３が実行される。
【００７１】
なお、ステップＳ４０４の実行後に、ステップＳ４０５をスキップしてＳ４０３を実行し、その後又はステップＳ４０３，Ｓ４０６，Ｓ４０７と平行して、ステップＳ４０５を実行してもよい。すなわち、基準カラムが検索条件に対応するデータセットが存在しない場合（Ｓ４０２：Ｎｏ）、先ず、Ｓ４０４で読み出された既に存在している特定のデータセットを利用して、検索条件に合致するクラスタ（基準カラムが検索条件に対応し且つクラスタ範囲が検索条件を含むクラスタ（Ｓ４０３））を読み出すようにしてもよい。これにより、検索条件に合致するクラスタの読み出し及び抽出データの出力を、新たなデータセットの生成を待たずに、できるだけ早く行うことが可能となる。
【００７２】
本実施形態によれば、既に存在しているデータセットの基準カラムが検索条件に対応していない場合にのみ新たなデータセットが生成され、次回の検索から新たなデータセットを利用して高速に処理を行うことが可能となる。これにより、不要なデータセットの生成を避けることができ、処理負荷の軽減、処理速度の向上等を図ることが可能となる。
【００７３】
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することを意図するものではない。この新規な実施形態はその他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態及びその変形は発明の範囲及び要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７４】
１  データ検索システム
１１，２１  情報処理端末
１２  サーバ
１３  ネットワーク
１５  データベース
２５  制御演算装置
２６  ユーザＩ／Ｆ
３１  ＣＰＵ
３２  ＲＯＭ
３３  ＲＡＭ
３４  ストレージ
３５  入力デバイス
３６  出力デバイス
３７  通信Ｉ／Ｆ
３８  バス
１０１  記憶部
１０２  入力部
１０３  データセット生成部
１０４  インデックス情報生成部
１０５  クラスタ読出部
１０６  データ抽出部
１０７  出力部
１１５  レコード
１２１  第１のデータセット
１２２  第２のデータセット
１３１  第１のクラスタ群
１３２  第２のクラスタ群
１４１〜１４３  カラム
１５１〜１５３，１６１〜１６３，３１１  レコードクラスタ
１５１Ａ〜１５１Ｃ，１５２Ａ〜１５２Ｃ，１５３Ａ〜１５３Ｃ，１６１Ａ〜１６１Ｃ，１６２Ａ〜１６２Ｃ，１６３Ａ〜１６３Ｃ，３１１Ａ〜３１１Ｃ  クラスタ
１７１〜１７３  インデックス情報
２０１，２２１  検索条件
２１１，２３１  抽出データ
２４１〜２４４  ＳＳＤ
３０１  第３のデータセット
【図１】
2019057082.tif 000003
【図２】
2019057082.tif 000004
【図３】
2019057082.tif 000005
【図４】
2019057082.tif 000006
【図５】
2019057082.tif 000007
【図６】
2019057082.tif 000008
【図７】
2019057082.tif 000009
【図８】
2019057082.tif 000010
【図９】
2019057082.tif 000011
【図１０】
2019057082.tif 000012
【図１１】
2019057082.tif 000013
【図１２】
2019057082.tif 000014
【図１３】
2019057082.tif 000015
【図１４】
2019057082.tif 000016
【図１５】
2019057082.tif 000017
【図１６】
2019057082.tif 000018
【図１７】
2019057082.tif 000019
【図１８】
2019057082.tif 000020
【図１９】
2019057082.tif 000021
【図２０】
2019057082.tif 000022
【図２１】
2019057082.tif 000023
【図２２】
2019057082.tif 000024
【図２３】
2019057082.tif 000025
【図２４】
2019057082.tif 000026
【図２５】
2019057082.tif 000027