(57)【要約】  カラム形式データベースを格納するストレージ装置は、ストレージコントローラが読み出した検索対象のカラム形式データベースのページデータを読み込んで、ページデータに設定された先頭の行番号を取得し、ページデータに格納された列ごとのカラムデータについて、先頭の行番号から終端の行まで順に読み出すカラム読み出し部と、列毎に読み出されたカラムデータの先頭の行から終端の行までそれぞれ第１の検索条件との比較を行って比較結果を出力するデータ検索部と、検索要求で指定された範囲の列の比較結果が出力されると、前記比較結果の行方向で前記第２の検索条件と比較して、前記比較結果から前記第２の検索条件を満たす行を判定する検索結果集計部と、を有する。
2016157310.tif 000002
【特許請求の範囲】
【請求項１】
カラム形式データベースを格納するストレージ装置であって、
前記ストレージ装置は、
前記カラム形式データベースを格納する不揮発性半導体記憶部と、
前記不揮発性半導体記憶部に対する読み書きを制御するストレージコントローラと、
前記カラム形式データベースの検索処理を行う検索部と、
検索要求を受信して前記ストレージコントローラと検索部とを制御する管理プロセッサと、を含み、
前記管理プロセッサは、
前記検索要求に含まれる検索対象のデータを前記ストレージコントローラに要求し、前記検索要求に含まれる第１の検索条件と、第２の検索条件を取得して前記検索部へ通知して前記検索対象のデータについて検索処理を実行させ、
前記検索部は、
前記ストレージコントローラが読み出した検索対象の前記カラム形式データベースのページデータを読み込んで、前記ページデータに設定された先頭の行番号を取得し、前記ページデータに格納された列ごとのカラムデータについて、前記先頭の行番号から終端の行まで順に読み出すカラム読み出し部と、
前記列毎に読み出されたカラムデータの前記先頭の行から終端の行までそれぞれ第１の検索条件との比較を行って比較結果を出力するデータ検索部と、
前記検索要求で指定された範囲の列の比較結果が出力されると、前記比較結果の行方向で前記第２の検索条件と比較して、前記比較結果から前記第２の検索条件を満たす行を判定する検索結果集計部と、
を有することを特徴とするストレージ装置。
【請求項２】
請求項１に記載のストレージ装置であって、
前記検索部は、
前記カラム読み出し部から前記列ごとのカラムデータを、前記先頭の行番号から終端の行まで順に受け付けて、前記検索結果集計部の判定結果と前記カラムデータを比較し、前記第２の検索条件を満たす行のカラムデータを抽出するデータ射影部と、
前記データ射影部が抽出した前記第２の検索条件を満たす行のカラムデータを、行方向で結合して行形式データに変換して出力する射影結果フォーマット部と、をさらに有することを特徴とするストレージ装置。
【請求項３】
請求項１に記載のストレージ装置であって、
前記検索部は、ハードウェアで構成されたことを特徴とするストレージ装置。
【請求項４】
請求項１に記載のストレージ装置であって、
前記データ検索部は、
前記カラムデータと前記第１の検索条件との比較結果を１ビットのデータで、前記先頭の行から終端の行まで前記列ごとに出力することを特徴とするストレージ装置。
【請求項５】
請求項１に記載のストレージ装置であって、
前記管理プロセッサは、
前記先頭の行番号が異なる複数の前記ページデータについて検索処理を前記検索部に指令し、
前記データ検索部は、
複数の前記カラム読み出し部と、複数の前記データ検索部と、を有し、前記管理プロセッサから受け付けた前記複数のページデータについて並列的に検索処理を実行することを特徴とするストレージ装置。
【請求項６】
請求項２に記載のストレージ装置であって、
前記管理プロセッサは、
前記先頭の行番号が異なる複数の前記ページデータについて検索処理を前記検索部に指令し、
前記データ検索部は、
複数の前記カラム読み出し部と、複数の前記データ検索部と、複数の前記データ射影部とを有し、前記管理プロセッサから受け付けた前記複数のページデータについて並列的に検索処理を実行することを特徴とするストレージ装置。
【請求項７】
カラム形式データベースを管理する計算機と、
カラム形式データベースを格納するストレージ装置と、を有する計算機システムであって、
前記計算機は、
前記ストレージ装置に対して検索要求を発行し、
前記ストレージ装置は、
前記カラム形式データベースを格納する不揮発性半導体記憶部と、
前記不揮発性半導体記憶部に対する読み書きを制御するストレージコントローラと、
前記カラム形式データベースの検索処理を行う検索部と、
前記計算機からの検索要求を受信して前記ストレージコントローラと検索部とを制御する管理プロセッサと、を含み、
前記管理プロセッサは、
前記計算機から受信した前記検索要求に含まれる検索対象のデータを前記ストレージコントローラに要求し、前記検索要求に含まれる第１の検索条件と、第２の検索条件を取得して前記検索部へ通知して前記検索対象のデータについて検索処理を実行させ、
前記検索部は、
前記ストレージコントローラが読み出した検索対象の前記カラム形式データベースのページデータを読み込んで、前記ページデータに設定された先頭の行番号を取得し、前記ページデータに格納された列ごとのカラムデータについて、前記先頭の行番号から終端の行まで順に読み出すカラム読み出し部と、
前記列毎に読み出されたカラムデータの前記先頭の行から終端の行までそれぞれ第１の検索条件との比較を行って比較結果を出力するデータ検索部と、
前記検索要求で指定された範囲の列の比較結果が出力されると、前記比較結果の行方向で前記第２の検索条件と比較して、前記比較結果から前記第２の検索条件を満たす行を判定する検索結果集計部と、を有することを特徴とする計算機システム。
【請求項８】
請求項７に記載の計算機システムであって、
前記検索部は、
前記カラム読み出し部から前記列ごとのカラムデータを、前記先頭の行番号から終端の行まで順に受け付けて、前記検索結果集計部の判定結果と前記カラムデータを比較し、前記第２の検索条件を満たす行のカラムデータを抽出するデータ射影部と、
前記データ射影部が抽出した前記第２の検索条件を満たす行のカラムデータを、行方向で結合して行形式データに変換して出力する射影結果フォーマット部と、をさらに有することを特徴とする計算機システム。
【請求項９】
請求項７に記載の計算機システムであって、
前記検索部は、ハードウェアで構成されたことを特徴とする計算機システム。
【請求項１０】
請求項７に記載の計算機システムであって、
前記データ検索部は、
前記カラムデータと前記第１の検索条件との比較結果を１ビットのデータで、前記先頭の行から終端の行まで前記列ごとに出力することを特徴とする計算機システム。
【請求項１１】
請求項７に記載の計算機システムであって、
前記管理プロセッサは、
前記先頭の行番号が異なる複数の前記ページデータについて検索処理を前記検索部に指令し、
前記データ検索部は、
複数の前記カラム読み出し部と、複数の前記データ検索部と、を有し、前記管理プロセッサから受け付けた前記複数のページデータについて並列的に検索処理を実行することを特徴とする計算機システム。
【請求項１２】
請求項７に記載の計算機システムであって、
前記管理プロセッサは、
前記先頭の行番号が異なる複数の前記ページデータについて検索処理を前記検索部に指令し、
前記データ検索部は、
複数の前記カラム読み出し部と、複数の前記データ検索部と、複数の前記データ射影部とを有し、前記管理プロセッサから受け付けた前記複数のページデータについて並列的に検索処理を実行することを特徴とする計算機システム。
【請求項１３】
カラム形式データベースを格納するストレージ装置の制御方法であって、
前記ストレージ装置は、
前記カラム形式データベースを格納する不揮発性半導体記憶部と、
前記不揮発性半導体記憶部に対する読み書きを制御するストレージコントローラと、
前記カラム形式データベースの検索処理を行う検索部と、
検索要求を受信して前記ストレージコントローラと検索部とを制御する管理プロセッサと、を有し、
前記制御方法は、
前記管理プロセッサが、前記検索要求に含まれる検索対象のデータを前記ストレージコントローラに要求し、前記検索要求に含まれる第１の検索条件と、第２の検索条件を取得して前記検索部へ通知して前記検索対象のデータについて検索処理を実行させる第１のステップと、
前記検索部が、前記ストレージコントローラが読み出した検索対象の前記カラム形式データベースのページデータを読み込んで、前記ページデータに設定された先頭の行番号を取得し、前記ページデータに格納された列ごとのカラムデータについて、前記先頭の行番号から終端の行まで順に読み出す第２のステップと、
前記検索部が、前記列毎に読み出されたカラムデータの前記先頭の行から終端の行までそれぞれ第１の検索条件との比較を行って比較結果を出力する第３のステップと、
前記検索部が、前記検索要求で指定された範囲の列の比較結果が出力されると、前記比較結果の行方向で前記第２の検索条件と比較して、前記比較結果から前記第２の検索条件を満たす行を判定する第４のステップと、
を含むことを特徴とするストレージ装置の制御方法。
【請求項１４】
請求項１３に記載のストレージ装置の制御方法であって、
前記検索部が、前記読み出された前記列ごとのカラムデータを、前記先頭の行番号から終端の行まで順に受け付けて、前記第４のステップの判定結果と前記カラムデータを比較し、前記第２の検索条件を満たす行のカラムデータを抽出する第５のステップと、
前記検索部が、前記抽出された前記第２の検索条件を満たす行のカラムデータを、行方向で結合して行形式データに変換して出力する第６のステップと、をさらに含むことを特徴とするストレージ装置の制御方法。
【請求項１５】
請求項１３に記載のストレージ装置の制御方法であって、
前記第３のステップは、
前記カラムデータと前記第１の検索条件との比較結果を１ビットのデータで、前記先頭の行から終端の行まで前記列ごとに出力することを特徴とするストレージ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース処理を実行可能なアクセラレータを含む計算機に関する。
【背景技術】
【０００２】
ストレージ装置では、従来のＨＤＤ（Hard Disc Drive）に代わって、フラッシュメモリ等の半導体不揮発性記憶素子を用いたＳＳＤ（Solid State Drive）等が普及している。半導体不揮発性記憶素子を用いたストレージ装置では、ＨＤＤに比してＩ／Ｏ性能が飛躍的に向上した。Ｉ／Ｏ性能の飛躍的な向上によって、ＳＳＤ等を用いたサーバでは、全てのデータベースについてサーバのプロセッサで処理を行うには負荷が過大になる場合があった。【０００３】
また、データベース処理においては処理の高速化のために、従来のロー形式のデータベースに代わって、カラム形式（カラムストア）のデータベースが台頭している。【０００４】
特許文献１には、計算機のプロセッサに加えて、データベースを処理する専用のハードウェアを付加する構成が開示されている。そして、特許文献１では、計算機のプロセッサが、カラムストアデータベースの処理を専用ハードウェアにオフロードする技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許公開第２０１１−０２４６４３２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記従来例では、カラムストアのデータベース処理を専用のハードウェアにハードオフロードする場合、以下の課題がある。【０００７】
従来例のロー形式のデータベースでは、検索処理を行う際に、１行のデータが近接して保存されているため、ある行の検索条件の合致判定は近接するレコードのデータを読み込めば処理可能であった。【０００８】
これに対して、カラムストアのデータベースでは、検索条件の合致判定に必要な１行のデータが近接のレコードには存在せず、検索結果を算出するためには複数のカラムデータを取得して検索条件の合致判定を行う必要があるので、ランダムアクセスが必要となり、処理性能のボトルネックとなる、という課題があった。【０００９】
そこで本発明は、上記問題点に鑑みてなされたもので、カラムストアデータベースの検索時にランダムアクセスを抑制し、検索処理の性能を向上させることを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、カラム形式データベースを格納するストレージ装置であって、前記ストレージ装置は、前記カラム形式データベースを格納する不揮発性半導体記憶部と、前記不揮発性半導体記憶部に対する読み書きを制御するストレージコントローラと、前記カラム形式データベースの検索処理を行う検索部と、検索要求を受信して前記ストレージコントローラと検索部とを制御する管理プロセッサと、を含み、前記管理プロセッサは、前記検索要求に含まれる検索対象のデータを前記ストレージコントローラに要求し、前記検索要求に含まれる第１の検索条件と、第２の検索条件を取得して前記検索部へ通知して検索処理を実行させ、前記検索部は、前記ストレージコントローラが読み出した検索対象の前記カラム形式データベースのページデータを読み込んで、前記ページデータに設定された先頭の行番号を取得し、前記ページデータに格納された列ごとのカラムデータについて、前記先頭の行番号から終端の行まで順に読み出すカラム読み出し部と、前記列毎に読み出されたカラムデータの前記先頭の行から終端の行までそれぞれ第１の検索条件との比較を行って比較結果を出力するデータ検索部と、前記検索要求で指定された範囲の列の比較結果が出力されると、前記比較結果の行方向で前記第２の検索条件と比較して、前記比較結果から前記第２の検索条件を満たす行を判定する検索結果集計部と、を有する。
【発明の効果】
【００１１】
したがって、本発明は、カラム形式データベースの検索時にストレージ装置に対するランダムアクセスを排除して、処理性能を向上させることが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施例を示し、データベースアシスト機能付きのフラッシュストレージを有する計算機システムの一例を示すブロック図である。
【図２】本発明の第１の実施例を示し、フラッシュストレージの一例を示すブロック図である。
【図３】本発明の第１の実施例を示し、カラム伸張回路の一例を示すブロック図である。
【図４】本発明の第１の実施例を示し、代表値バッファの一例示す図である。
【図５】本発明の第１の実施例を示し、入力ページデータのフォーマットの一例を示す図である。
【図６】本発明の第１の実施例を示し、データ検索回路の一例を示すブロック図である。
【図７】本発明の第１の実施例を示し、比較値テーブルの一例を示す図である。
【図８】本発明の第１の実施例を示し、検索結果中間バッファの一例を示す図である。
【図９】本発明の第１の実施例を示し、検索結果集計回路の一例を示すブロック図である。
【図１０】本発明の第１の実施例を示し、論理条件テーブルの一例を示す図である。
【図１１】本発明の第１の実施例を示し、論理演算回路の一例を示すブロック図である。
【図１２】本発明の第１の実施例を示し、データ射影回路の一例を示すブロック図である。
【図１３】本発明の第１の実施例を示し、射影結果フォーマッタの一例を示すブロック図である。
【図１４】本発明の第１の実施例を示し、ロー形式データのフォーマットの一例を示す図である。
【図１５】本発明の第１の実施例を示し、カラムストアデータベースの検索処理の前半部を示す図である。
【図１６】本発明の第１の実施例を示し、カラムストアデータベースの検索処理の後半部を示す図である。
【図１７】本発明の第２の実施例を示し、カラムストアデータベースの検索処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態を添付図面に基づいて説明する。
【実施例１】
【００１４】
図１は、本発明の第１の実施形態を示し、データベースアシスト機能付きストレージ装置を有する計算機システムの一例を示すブロック図である。【００１５】
図１の計算機システムでは、計算機１に、ストレージ装置として複数のフラッシュストレージ２−１〜２−Ｎが接続され、各フラッシュストレージ２−１〜２−Ｎは、データベースアシスト機能としてカラムストア検索回路を有する例を示す。なお、以下の説明では、フラッシュストレージの全体について説明する場合には「−」のない符号「２」で示し、個々のフラッシュストレージを特定するときには「−」以降の添え字を付加した符号を用いる。他の構成要素についても同様である。なお、フラッシュストレージ２の数は、１以上であればよく、複数に限定されるものではない。【００１６】
計算機１は、演算処理を行うホストＣＰＵ１１と、プログラムやデータを保持するホスト主記憶１２と、Ｉ／Ｏスイッチ５を介してフラッシュストレージ２に接続されるホストインタフェース（図中ホストＩ／Ｆ）１３と、を含む。【００１７】
ホストインタフェース１３は、例えば、ＰＣＩ  ｅｘｐｒｅｓｓ（ＰＣＩｅ）等で構成することができる。この場合、Ｉ／Ｏスイッチ５は、ＰＣＩｅｘｐｒｅｓｓスイッチで構成される。【００１８】
フラッシュストレージ２−１は、１以上のフラッシュメモリと、カラムストア（形式）データベースの検索処理を実行可能なカラムストア検索回路３と、管理ＣＰＵやフラッシュコントローラなどからなる制御部とを含む。フラッシュメモリにはカラムストアデータデータベース（以下カラムストアＤＢ）４が格納される。なお、フラッシュストレージ２−２〜２−Ｎも同様に構成されるので図示は省略した。【００１９】
ホスト主記憶１２には、フラッシュストレージ２に格納されたカラムストアＤＢ４を管理するデータベース管理システム（以下、ＤＢＭＳ）２０がロードされて、ホストＣＰＵ１１によって実行される。【００２０】
ＤＢＭＳ２０の各機能部はプログラムとしてホスト主記憶１２にロードされる。ＣＰＵ１１は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、ＣＰＵ１１は、データベース管理プログラムに従って処理することでＤＢＭＳ２０として機能する。さらに、ＣＰＵ１１は、各種プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。【００２１】
ＤＢＭＳ２０の各機能を実現するデータベース管理プログラム、テーブル等の情報は、フラッシュストレージ２等のストレージサブシステムや不揮発性半導体メモリ、ハードディスクドライブや、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。【００２２】
なお、ＤＢＭＳ２０は、フラッシュストレージ２−１〜２−Ｎに分散配置されたカラムストアＤＢ４と、フラッシュストレージ２の識別子の対応関係を保持する。ＤＢＭＳ２０は、図示しないクライアントから検索要求や更新要求などのアクセス要求を受け付ける。【００２３】
ＤＢＭＳ２０は、クライアントから受信したアクセス要求の処理対象となるデータを格納したフラッシュストレージ２−１〜２−Ｎを特定し、当該特定したフラッシュストレージ２に対して検索要求などのアクセス要求を発行する。なお、カラムストアＤＢ４などのデータベースの分散配置については、公知または周知の技術を適用すれば良いので、ここでは詳述しない。【００２４】
図２は、フラッシュストレージ２−１の構成の一例を示すブロック図である。なお、図１のフラッシュストレージ２−２〜２−Ｎも同様の構成であるので、重複する説明は省略する。【００２５】
フラッシュストレージ２−１（以下、２とする）は、カラムストアＤＢ４を格納する複数のフラッシュメモリ１０８−１〜１０８−ｊと、フラッシュメモリ１０８を制御するフラッシュコントローラ（ストレージコントローラ）１０７−１〜１０７−ｉと、Ｉ／Ｏスイッチ５に接続されるインタフェース１０３と、計算機１との間でデータの転送を行うＤＭＡコントローラで構成されたデータＤＭＡ１０４と、フラッシュストレージ２を制御する管理ＣＰＵ１０５と、データやコマンドを一時的に格納するデータバッファ１０６と、カラムストアＤＢ４を検索するハードウェア（またはアクセラレータ）としてのカラムストア検索回路３と、を含む。【００２６】
インタフェース１０３と、データＤＭＡ１０４と、管理ＣＰＵ１０５と、データバッファ１０６及びフラッシュコントローラ１０７は、図１で示したようにフラッシュストレージ２の制御部１００を構成する。【００２７】
インタフェース１０３は、受信したデータやコマンドがＤＭＡ以外であれば、管理ＣＰＵ１０５やデータバッファ１０６に転送することができる。データＤＭＡ１０４は、ロー形式データに変換された検索結果をカラムストア検索回路３から受信すると、インタフェース１０３及びＩ／Ｏスイッチ５を介してホスト主記憶１２の予め設定されたアドレスに書き込む。【００２８】
管理ＣＰＵ１０５は、所定のプログラムを実行し、フラッシュコントローラ１０７を制御してフラッシュメモリ１０８への読み書きを実行させ、また、データＤＭＡ１０４の起動や、データバッファ１０６の管理及びカラムストア検索回路３の制御を行う。【００２９】
例えば、計算機１から検索要求を受け付けると、管理ＣＰＵ１０５は、検索要求に含まれるデータの範囲に応じてフラッシュコントローラ１０７に読み出しを指令し、フラッシュコントローラ１０７はカラムストアＤＢ４のデータをフラッシュメモリ１０８から読み出して、データバッファ１０６にページデータとして格納する。【００３０】
カラムストアＤＢ４の読み出しが完了すると、管理ＣＰＵ１０５は、カラムストア検索回路３に後述するような検索処理を実行させる。【００３１】
データバッファ１０６は、フラッシュコントローラ１０７によるフラッシュメモリ１０８の読み出し、書き込みの際に一時的なページデータの記憶バッファとして機能し、また、後述するデータ検索回路１１０で使用するカラムデータ等を一時的に保持する際に使用される。【００３２】
フラッシュコントローラ１０７は、管理ＣＰＵ１０５からの指令に応じてフラッシュメモリ１０８の読み書きを制御する。フラッシュコントローラ１０７は、ブロック単位でフラッシュメモリ１０８へデータの書き込みを行い、ページ単位でフラッシュメモリ１０８からデータを読み出す。【００３３】
フラッシュメモリ１０８への書き込みの際には、フラッシュコントローラ１０７がデータバッファ１０６に一時保存された書き込みデータをフラッシュメモリ１０８に書き込む。読み出しの場合は、フラッシュコントローラ１０７がフラッシュメモリ１０８からデータを読み出してデータバッファ１０６に格納する。【００３４】
複数のフラッシュメモリ１０８には、カラムストアＤＢ４が格納される。カラムストアＤＢ４は、後述するように、カラムデータが圧縮されて格納される。【００３５】
カラムストア検索回路３は、検索要求に基づいてフラッシュコントローラ１０７がフラッシュメモリ１０８から読み出したカラムストアＤＢ４のデータを伸張（展開）して、要求された検索をカラム（列）毎に実行し、検索結果をデータＤＭＡ１０４に出力する。【００３６】
カラムストア検索回路３は、圧縮されたカラムストアＤＢ４を伸張してカラム単位でカラムデータを復元するカラム伸張回路１０９−１〜１０９−ｋと、検索要求に含まれる第１の検索条件に基づいてカラム単位でカラムデータを検索するデータ検索回路１１０−１〜１１０−ｋと、データ検索回路１１０が出力したカラム毎の検索結果を格納する検索結果中間バッファ１１１と、検索要求に含まれる第２の検索条件に合致するカラム毎の検索結果を抽出し、最終的な検索結果（最終比較結果）を集計する検索結果集計回路１１２と、最終比較結果とカラムデータを突き合わせて、最終的な検索結果のカラムデータを行単位で抽出するデータ射影回路１１３−１〜１１３−ｋと、カラムデータの抽出結果を行に対応付けて格納する射影結果中間バッファ１１４と、カラムデータの抽出結果をロー（行）形式データに変換してデータＤＭＡ１０４に出力する射影結果フォーマッタ１１５と、を含む。【００３７】
以下、カラムストア検索回路３の各構成要素について以下に説明する。【００３８】
カラム伸張回路１０９は、カラムストアＤＢ４のデータを扱うため、まず圧縮されているページデータを展開する。本実施例１では、一例として、後述する図５のようなページ単位のテーブルを使用した圧縮手法について説明する。【００３９】
なお、管理ＣＰＵ１０５は、カラムストア検索回路３に入力するページデータが所属するカラム番号を管理する。【００４０】
カラム伸張回路１０９は、カラムストアＤＢ４のページデータからカラム毎のデータを取り出して、後述するデータ検索回路１１０や、データ射影回路１１３またはデータバッファ１０６にカラムデータを転送する。【００４１】
データ検索回路１１０は、カラム伸張回路１０９で伸張されたカラムデータを、第１の検索条件と比較して検索処理を行う。具体的には、検索要求によってカラム毎に設定されている第１の検索条件を使用して、データ検索回路１１０がカラムデータと第１の検索条件の比較を行単位で行い、比較結果を検索結果中間バッファ１１１にカラム毎に行単位で格納する。【００４２】
検索結果中間バッファ１１１は、データ検索回路１１０−１〜１１０−ｋの比較結果（検索結果）を保存するバッファである。検索結果中間バッファ１１１は、一例として、１つのカラムデータについて１ビットの比較結果を保持する。例えば、カラムデータが、第１の条件に合致していれば「１」を設定する一方、第１の条件に合致しなければ「０」を設定する。【００４３】
検索結果集計回路１１２は、検索結果中間バッファ１１１の内容を集計し、最終的な行単位の検索結果を生成する。検索結果集計回路１１２は、検索要求に含まれる第２の検索条件と、検索結果中間バッファ１１１の比較結果の論理理演算を行って、最終的な行単位の検索結果である最終比較結果を生成する。最終比較結果は、ページデータ内の行数に応じたデータ数となる。【００４４】
データ射影回路１１３は、検索結果集計回路１１２から出力される行単位の最終的な比較結果と、伸張回路１０９から出力されるカラムデータとを突き合わせて、第２の検索条件を満たす行のデータを抽出して射影結果中間バッファ１１４に格納する。【００４５】
射影結果中間バッファ１１４は、データ射影回路１１３−１〜１１３−ｋの出力をカラム毎に格納する。射影結果中間バッファ１１４は、行方向のデータが揃った時点で、射影結果フォーマッタ１１５に行データとして出力する。なお、射影結果中間バッファ１１４の構成は、図８に示した検索結果中間バッファ１１１と同様に構成することができる。また、射影結果フォーマッタ１１５へ出力するタイミングは、全ての（または指定された検索範囲の）カラムについて、ページデータ２０６の先頭の行から終端の行までとの突き合わせが完了してからでもよい。【００４６】
射影結果フォーマッタ１１５は、射影結果中間バッファ１１４に格納した行単位のカラムデータを変換してロー形式データ生成し、計算機１に検索結果としてデータを応答するためにデータＤＭＡ１０４に出力する。【００４７】
計算機システムにおける検索処理は、次のように行われる。まず、計算機１のホストＣＰＵ１１が、カラムストアＤＢ４に対する検索要求をフラッシュストレージ２の管理ＣＰＵ１０５に送信する。【００４８】
管理ＣＰＵ１０５はフラッシュコントローラ１０７を起動し、フラッシュコントローラ１０７は圧縮保存されているカラムストアＤＢ４のページデータをフラッシュメモリ１０８から読み出してデータバッファ１０６に保存する。【００４９】
管理ＣＰＵ１０５は、データバッファ１０６に保存されたページデータをカラム伸張回路１０９に通知し、カラム伸張回路１０９は圧縮されたページデータを伸張してカラムデータを生成（復元）する。伸張されたカラムデータはデータ検索回路１１０に入力され、カラム毎に設定されている第１の検索条件とカラムデータの比較が行われ、比較結果が検索結果中間バッファ１１１に保存される。【００５０】
検索対象のカラムデータに対して検索処理が完了すると、検索結果中間バッファ１１１からは、行ごとの比較結果が検索結果集計回路１１２に送信される。【００５１】
検索結果集計回路１１２では、行ごとの比較結果から最終的にその行が第２の検索条件を満たしているか否かの論理演算を行い、論理演算結果（最終比較結果）を行毎に保持する。【００５２】
次に、管理ＣＰＵ１０５は、射影を行うページデータをデータバッファ１０６から読出し、カラム伸張回路１０９でカラムデータに伸張し、データ射影回路１１３に伸張したカラムデータと、検索結果集計回路１１２の最終比較結果を入力する。【００５３】
データ射影回路１１３は、検索結果集計回路１１２の最終比較結果を元に、ガラムデータの行について射影するデータであるか否かを判定し、射影するカラムデータのみ射影結果中間バッファ１１４に格納する。【００５４】
データ射影回路１１３は、射影予定の全カラムの処理が終了すると、射影結果中間バッファ１１４に保存されている行単位のデータ（選択カラムデータ）を射影結果フォーマッタ１１５に出力する。【００５５】
行単位の選択カラムデータを受信した射影結果フォーマッタ１１５は、行単位の選択カラムデータをロー形式のデータにフォーマットし直してロー形式データを生成し、データＤＭＡ１０４からロー形式データをホスト主記憶１０２に転送する。【００５６】
上記処理によって、圧縮されたカラムストアＤＢ４のページデータをデコードしてカラムデータを生成し、カラムデータに対して検索要求に応じた検索を行い、検索結果をロー形式データに変換して計算機１に応答することができる。【００５７】
＜カラム伸張回路＞
図３は、カラム伸張回路１０９−１の構成の一例を示すブロック図である。なお、他のカラム伸張回路１０９−２〜１０９−ｋも同様の構成であるので、重複する説明は省略する。【００５８】
カラム伸張回路１０９−１（以下、１０９とする）は、カラムストアＤＢ４の読み込み単位であるページデータ２０６を入力とする。カラム伸張回路１０９は、データバッファ１０６からページデータ２０６を入力してロー番号２０７を出力するためのロー開始番号レジスタ２０１及びロー番号カウンタ２０２と、ページデータ２０６からページ中のカラムの代表値を切り出す代表値切り出し回路２０３と、ページデータ２０６と代表値からカラムデータ２０９を出力する符号切り出し回路２０４及び代表値バッファ２０５と、を含む。【００５９】
ロー開始番号レジスタ２０１には、カラムストアＤＢ４の管理単位であるページ毎に付与された先頭カラムのロー番号が管理ＣＰＵ１０５によって書き込まれる。カラムストアＤＢ４のページデータ２０６のフォーマットについては図５で後述する。【００６０】
ロー番号カウンタ２０２は、ロー開始番号レジスタ２０１の値をページ先頭の初期値とし、圧縮符号１つにつき１ずつインクリメントしてロー番号２０７をカウント値として出力する。なお、ロー番号カウンタ２０２は、ロー開始番号からページデータ２０６の終端の圧縮符号までのロー番号２０７を出力する。【００６１】
代表値切り出し回路２０３は、カラムストアＤＢ４の圧縮に使用されたカラムの代表値をページデータ２０６の中から切り出して、後述する代表値バッファ２０５に代表値を保存する。【００６２】
符号切り出し回路２０４は、ページデータ２０６内で圧縮されている行毎の符号を、１カラムデータ（１行）毎に切り出して、符号データ２０８として出力する回路である。符号データ２０８は、後述する代表値バッファ２０５から伸張されたカラムデータ２０９を生成するためのキーである。【００６３】
代表値バッファ２０５は、圧縮されたページデータ２０６を伸張するために参照するテーブルである。代表値バッファ２０５は、圧縮に使用された代表値を代表値切り出し回路２０３から受け付け、符号切り出し回路２０４が出力した符号データ２０８でテーブルを検索し、検索した代表値を当該符号データ２０８の行に対応するカラムデータ２０９として出力する。カラム伸張回路１０９が出力するカラムデータ２０９は、例えば、データバッファ１０６に書き込むことができる。【００６４】
カラム伸張回路１０９は、入力されたページデータ２０６から、カラム毎にロー番号の順序でカラムデータ２０９を生成して出力する。【００６５】
図４は、代表値バッファ２０５の一例を示す図である。代表値バッファ２０５は、カラムデータの代表値を示す値を格納する圧縮符号３０１と、ページデータ２０６に含まれるカラムの値を代表する値を格納する代表値３０２と、をひとつのレコードに含むテーブルである。【００６６】
図示の例では、圧縮符号３０１には、圧縮符号１〜Ｋが格納されて、代表値３０２には代表値１〜Ｋが格納される例を示す。この代表値バッファ２０５により、入力される符号データ２０８から代表値３０２をカラムデータ２０９として出力することができる。【００６７】
カラム伸張回路１０９は、まずページデータ２０６が入力されると、図５で後述するように、ページデータ２０６の先頭に格納されたロー開始番号４０１を読み込み、ロー開始番号レジスタ２０１に保存する。【００６８】
次に、カラム伸張回路１０９は、ページデータ２０６から後述する代表値（４０２〜４０５）を順次読み込み、代表値切り出し回路２０３で代表値を切り出して、代表値バッファ２０５の代表値に保存する。このとき代表値その１（４０２）〜代表値そのｍ（４０５）に含まれる圧縮符号を代表値バッファ２０５の圧縮符号３０１に格納する。なお、圧縮符号３０１は、複数の圧縮符号を格納することができる。【００６９】
次に、カラム伸張回路１０９は、ページデータ２０６から後述するカラム圧縮符号４０６〜４０９を順次読み出しして、符号切り出し回路２０４で符号データ２０８を切り出す。そして、カラム伸張回路１０９は、切り出された符号データ２０８をキーとして代表値バッファ２０５を検索し、ヒットした代表値３０２をカラムデータ２０９として出力する。【００７０】
図５は、図２に示したカラム伸張回路１０９に入力されるページデータ２０６のフォーマットの一例を示す図である。【００７１】
ページデータ２０６は、先頭にロー開始番号４０１を格納し、その次に、代表値その１（４０２）〜代表値そのｍ（４０５）と、１行目カラム圧縮符号４０６〜ｐ行目カラム圧縮符号４０９とを格納する。【００７２】
ロー開始番号４０１には、ページデータ２０６に格納されるデータのうち、先頭のカラムが所属する行番号が記載される。前述のロー開始番号レジスタ２０１には、ロー開始番号４０１の値が格納される。【００７３】
ページデータ２０６に格納されたカラムのデータは、代表値と圧縮符号によって圧縮されている。本実施例１では、単純なテーブル方式を用いているが、その他の圧縮方式でも実装は可能である。【００７４】
代表値その１（４０２）〜代表値そのｍ（４０５）は、ページデータ２０６のカラムで使用される値と、当該値を設定する圧縮符号で構成される。代表値は、圧縮データを伸張する際に使用されるカラムのデータで、１行目カラム圧縮符号４０６〜ｐ行目カラム圧縮符号４０９の値が指し示す代表値４０２〜４０５を、行毎に設定してカラムデータ２０９としてデータを復元する。【００７５】
本実施例１のページデータ２０６は、当該ページに含まれるカラム毎のデータについて、ロー開始番号４０１が設定されている。したがって、後述するカラムストア検索回路３の各回路が並列的にページデータ２０６を読み込んで、それぞれ検索結果を出力する際に、検索結果のロー番号２０７を特定できる。【００７６】
このように、カラムストアＤＢ４において、ページデータ２０６の所定の位置にロー開始番号４０１を設定するデータ構造を採用することで、異なるロー開始番号４０１のページデータ２０６を複数のカラム伸張回路１０９、複数のデータ検索回路１１０、複数のデータ射影回路１１３で、それぞれ並列的に処理することが容易となる。すなわち、各処理回路では、カラムデータ２０９の先頭の行番号が特定されるので、管理ＣＰＵ１０５は、ページデータ２０６間のロー開始番号４０１の前後関係に係わらず、カラムストア検索回路３に検索処理を指令し、カラムストア検索回路３が出力したロー形式データ１２０５の行番号に基づいてデータのソートを行えば良い。したがって、フラッシュストレージ２では、ページデータ２０６の検索処理を並列的に実行することで、高速に処理を実現することができる。【００７７】
＜データ検索回路＞
図６は、図２に示したデータ検索回路１１０−１の一例を示すブロック図である。他のデータ検索回路１１０−２〜１１０−ｋもデータ検索回路１１０−１と同様の構成である。【００７８】
データ検索回路１１０−１（以下、１１０とする）は、比較値テーブル５０１と、カラムデータ２０９を入力してカラム比較結果５０３を出力する比較回路５０２と、ロー番号２０７とカラム比較結果５０３とを入力して、ロー番号２０７にカラム比較結果５０３を対応付けて格納する検索結果中間バッファ１１１と、を含む。【００７９】
比較値テーブル５０１は、検索処理の対象となるカラムの番号と、カラムデータ２０９と比較する比較値と比較条件を設定したテーブルである。カラム番号と比較値と比較条件は、フラッシュコントローラ１０７が受信した検索要求のうち第１の検索条件に含まれるデータで構成される。管理ＣＰＵ１０５は、検索要求から第１の検索条件を選択して比較値テーブル５０１に設定する。【００８０】
なお、カラム番号については、カラムストア検索回路３に検索を指令するデータバッファ１０６のページデータ２０６毎に管理ＣＰＵ１０５が管理する。管理ＣＰＵ１０５は、後述する処理カラム番号１１０５としてカラム伸張回路１０９やデータ検索回路１１０に現在検索を指令したカラムの番号を通知することができる。【００８１】
比較回路５０２は、カラムデータ２０９について比較値テーブル５０１を参照してカラム毎の比較値及び比較条件との比較を行う回路である。比較回路５０２は、各カラムに対応した比較値と比較条件を比較値テーブル５０１から参照して、カラムデータ２０９の先頭の行から終端の行まで行単位で、比較条件にマッチするか否かを判定する。そして、比較回路５０２は、当該判定結果をカラム比較結果５０３として検索結果中間バッファ１１１へ出力する。【００８２】
検索結果中間バッファ１１１は、カラム伸張回路１０９からロー番号２０７を受け付け、比較回路５０２から受け付けたカラム毎のカラム比較結果５０３を、ロー番号２０７に対応付けて格納する。なお、カラム比較結果５０３は、例えば１ビットのデータ構成すると、条件に合致する場合は“１”を設定し、条件に合致しない場合は“０”を設定する。したがって、検索結果中間バッファ１１１にはカラム毎に、ロー番号２０７と第１の検索条件による検索結果（比較結果）が対になったカラム比較結果５０３が格納される。【００８３】
図７は、比較値テーブル５０１の一例を示す図である。比較値テーブル５０１は、カラム番号６０１と、比較値６０２と、比較条件６０３と、をひとつのレコードに含む。【００８４】
カラム番号６０１には、比較を行う列の番号（または識別子）が格納される。比較値６０２には、カラムデータ２０９と比較するための値や文字列が格納される。比較条件６０３には、比較値６０２と比較する条件が格納される。比較条件６０３としては、「＞」、「＝」、「≧」等の比較演算子や、ワイルドカードなどのテキスト検索記号を含むことができる。【００８５】
比較値テーブル５０１は、管理ＣＰＵ１０５によって設定される。管理ＣＰＵ１０５は、検索要求を受け付けると、当該検索要求に含まれる第１の検索条件から比較値と比較条件及びカラム番号を取得して、図示のように比較値テーブル５０１へ設定する。【００８６】
＜検索結果中間バッファ＞
図８は、検索結果中間バッファ１１１の一例を示す図である。検索結果中間バッファ１１１は、ページデータ２０６の列を特定する番号または識別子を格納する列７０１と、ページデータ２０６の列７０１と行に対応するカラム比較結果５０３を格納する行１（７０２−１）〜行ｍ（７０２−ｍ）と、をひとつのレコードに含む。なお、図示の例では、ページデータ２０６が、ｍ行×ｎ列の例を示す。【００８７】
検索結果中間バッファ１１１は、図６で示したように、カラムデータ２０９に対応する列７０１のカラム比較結果５０３を受け付けると、カラム伸張回路１０９から入力されたロー番号２０７に対応する行１（７０２−１）〜行ｍ（７０２−ｍ）にカラム比較結果５０３を格納する。【００８８】
以上のように、ページデータ２０６の検索結果としてのカラム比較結果５０３が、検索結果中間バッファ１１１にｍ行×ｎ列のテーブルとして保持される。【００８９】
＜検索結果集計回路＞
図９は、検索結果集計回路１１２の一例を示すブロック図である。検索結果集計回路１１２は、第２の検索条件を設定した論理条件テーブル８０１と、検索結果中間バッファ１１１から取得したカラム比較結果５０３について、論理条件テーブル８０１に設定された第２の検索条件で論理演算を実行し、論理演算結果８０５を出力する論理演算回路８０２と、論理演算結果８０５を格納する最終検索結果バッファ８０３と、を含む。【００９０】
なお、第２の検索条件は、管理ＣＰＵ１０５が受け付けた検索要求から第２の検索条件を取得し、論理条件テーブル８０１に設定する。第２の検索条件は、例えば、カラム比較結果５０３の行方向のカラム毎の値の組合せなどの論理積や論理和などを含むことができる。【００９１】
図６の比較回路５０２では、カラムデータ２０９についてカラム番号６０１毎に比較値６０２と比較条件６０３を含む第１の検索条件で比較を行った。これに対して、論理演算回路８０２では、カラム間の検索条件などを規定した第２の検索条件によって、カラム比較結果５０３に対して論理演算を実施する。【００９２】
論理演算回路８０２は、データ検索回路１１０が管理ＣＰＵ１０５から指定された範囲の検索対象のページデータ２０６の列について比較結果の出力が完了すると、処理を開始する。【００９３】
論理条件テーブル８０１には上述のように予め第２の検索条件が設定される。検索結果中間バッファ１１１に格納されたカラム比較結果５０３は、カラム内のひとつの行（例えばフィールド）について単純な比較を行った結果を保存しただけである。このため、カラム比較結果５０３だけでは、カラム間の比較など複雑な検索条件を実行することができない。【００９４】
そこで、論理条件テーブル８０１には、ページデータ２０６の行方向で、カラム比較結果５０３の値に関する論理演算の条件（第２の検索条件）を設定しておく。論理演算回路８０２では、ページデータ２０６の行方向で複数の検索条件を適用して、カラム比較結果５０３に対して論理演算を行って、上記比較回路５０２よりも複雑な検索を実行する。そして、論理演算の結果を第２の比較（または検索）結果とする。【００９５】
論理演算回路８０２は、カラム比較結果５０３を入力として、論理条件テーブル８０１の第２の検索条件により論理演算を行って論理演算結果８０５を出力する。論理演算結果８０５は、ロー番号と第２の比較結果の対で構成される。【００９６】
論理演算結果８０５の一例としては、カラム比較結果５０３の行単位で、第２の検索条件に対して合致するか否かの値が設定される。例えば、論理演算結果８０５は、カラム比較結果５０３の行単位で第２の条件に合致していれば「１」を設定する一方、第２の条件に合致しなければ「０」を設定する。【００９７】
最終検索結果バッファ８０３は、論理演算結果８０５をロー番号２０７の先頭から終端に向けた順序で格納するバッファである。【００９８】
最終検索結果バッファ８０３の論理演算結果８０５は、最終比較結果８０６として出力される。この最終比較結果８０６は、後述のデータ射影回路１１３で射影するデータの判定に使用される。なお、最終比較結果８０６は、検索結果として選択すべき行の番号や識別子を含んでもよい。【００９９】
検索結果集計回路１１２の処理は次のように行われる。まず、論理演算回路８０２は、検索結果中間バッファ１１１から行ごとにカラム比較結果５０３を読み出し、論理条件テーブル８０１に設定されている第２の検索条件で論理演算を実行する。【０１００】
論理演算回路８０２は、読み込んだ行について最終的に検索結果として選択するか否かを判定し、この判定結果を論理演算結果８０５としてロー番号２０７とともに最終検索結果バッファ８０３に格納する。最終検索結果バッファ８０３は、論理演算結果８０５を最終比較結果８０６として出力し、後述のデータ射影回路１１３に送信される。【０１０１】
最終比較結果８０６は、ページデータ２０６の行単位で、検索結果として選択するか否かを示す値である。例えば、検索結果集計回路１１２は、第２の検索条件を満たす（Ｈｉｔ）行であれば、当該行の最終比較結果８０６の値に「１」を設定する。一方、第２の検索条件に該当しない行（Ｍｉｓｓ）であれば、当該行の最終比較結果８０６の値に「０」を設定する。【０１０２】
最終比較結果８０６によって、検索要求に対して検索結果となるカラムデータ２０９の行を特定することが可能となる。したがって、最終比較結果８０６を検索結果として出力することも可能である。【０１０３】
図１０は、論理条件テーブル８０１の一例を示す図である。論理条件テーブル８０１は、第２の検索条件としての識別子を格納する条件９０１と、条件９０１毎に項１〜項ｐが有効（すなわち、論理演算結果８０５＝１）であるか否かを示すフラッグビットを格納した項１有効ビット９０２−１〜項ｐ有効ビット９０２−ｐと、をひとつのレコードに含む。【０１０４】
図示の例では、条件１〜条件ｏの各レコードのそれぞれについて、項１有効ビット９０２−１〜項ｐ有効ビット９０２−ｐで、各項（カラム）の有効または無効が設定されている。なお、各項の有効ビットの値は、有効であれば、上記最終比較結果８０６が第２の検索条件に合致する「１」を示し、無効であれば、上記最終比較結果８０６が第２の検索条件に合致しない「０」を示す。【０１０５】
条件９０１間（列方向）では論理和をとり、項１有効ビット９０２−１〜項ｐ有効ビット９０２−ｐの行方向では、論理積となる。【０１０６】
論理条件テーブル８０１は、検索要求に含まれる第２の検索条件を管理ＣＰＵ１０５が取得して検索結果集計回路１１２に出力したものである。【０１０７】
図１１は、論理演算回路８０２の一例を示すブロック図である。論理演算回路８０２は、複数の反転論理回路１００１と、複数の論理和回路１００２と、複数の論理積回路１００３と、論理和回路１００４とを順次接続したものである。【０１０８】
論理演算回路８０２の処理としては、論理条件テーブル８０１の出力を反転論理回路１００１で値を反転して論理和回路１００２へ入力し、検索結果中間バッファ１１１の出力との論理和を生成する。これにより、各第２の検索条件で判定されない項については常に真となる。【０１０９】
次に、各論理和回路１００２の出力を論理積回路１００３へ入力し、検索結果中間バッファ１１１の各項の論理積を出力する。この論理積により、第２の検索条件に合致するか否かを判定する。最後に全ての第２の検索条件について論理和回路１００４によって論理和を演算することで、全ての第２の検索条件に対する結果を論理演算結果８０５として算出することがきる。【０１１０】
＜データ射影回路＞
図１２は、データ射影回路１１３−１の一例を示すブロック図である。他のデータ射影回路１１３−２〜１１３−ｋも同様の構成であるので、以下、データ射影回路１１３−１（１１３とする）についてのみ説明し、重複する説明を省略する。【０１１１】
データ射影回路１１３は、カラムデータ２０９と最終比較結果８０６と処理カラム番号１１０５を入力として、選択カラムデータ１１０４と書込先のロー番号とカラム番号を出力する。データ射影回路１１３は、カラムデータ２０９を選択する選択回路１１０１と、ロー書込番号カウンタ１１０３及びカラム書込番号レジスタ１１０２を含む。【０１１２】
カラムデータ２０９は、カラム伸張回路１０９から上記と同様に入力される。最終比較結果８０６は、最終検索結果バッファ８０３から出力される。処理カラム番号１１０５は、カラム伸張回路１０９を起動するときに管理ＣＰＵ１０５がカラム伸張回路１０９へ書き込む番号である。管理ＣＰＵ１０５は、カラム伸張回路１０９やデータ検索回路１１０に処理を行うカラムの番号を通知する。データ射影回路１１３は、管理ＣＰＵ１０５から処理カラム番号１１０５を取得する。【０１１３】
選択回路１１０１は、カラム伸張回路１０９からカラムデータ２０９が入力され、検索結果集計回路１１２の最終検索結果バッファ８０３から最終比較結果８０６が入力される。選択回路１１０１は、受け付けたカラムデータ２０９のうち最終比較結果８０６に合致する行のデータのみを選択カラムデータ１１０４として射影結果中間バッファ１１４に出力する。すなわち、第２の検索条件を満たす行のカラムデータ２０９のみが選択カラムデータ１１０４として射影結果中間バッファ１１４に出力される。【０１１４】
カラム書込番号レジスタ１１０２は、管理ＣＰＵ１０５がカラム伸張回路１０９に通知した処理カラム番号１１０５を取得して、射影結果中間バッファ１１４に通知する。射影結果中間バッファ１１４は、入力された選択カラムデータ１１０４を書き込むカラムの番号を、カラム書込番号レジスタ１１０２からの通知に基づいて決定する。【０１１５】
ロー書込番号カウンタ１１０３は、最終比較結果８０６で指定される行（ロー）の番号を射影結果中間バッファ１１４に通知する。射影結果中間バッファ１１４は、入力された選択カラムデータ１１０４を書き込む行の番号を、ロー書込番号カウンタ１１０３からの通知に基づいて決定する。【０１１６】
データ射影回路１１３の処理としては、カラムデータ２０９から最終比較結果８０６に合致する行のデータのみを選択カラムデータ１１０４として射影結果中間バッファ１１４に書き込む。書き込み位置は、カラム書込番号レジスタ１１０２とロー書込番号カウンタ１１０３で決定する。これにより、射影結果中間バッファ１１４には、検索要求に合致するページデータ２０６の値が行方向に書き込まれる。【０１１７】
＜射影結果フォーマッタ＞
図１３は、射影結果フォーマッタ１１５の一例を示すブロック図である。射影結果フォーマッタ１１５は、射影結果中間バッファ１１４に格納された選択カラムデータ１１０４を読み出して、ロー形式データ１２０５に変換しデータＤＭＡ１０４へ出力する回路である。【０１１８】
射影結果フォーマッタ１１５は、射影結果中間バッファ１１４に読み出し開始のカラムを設定するカラム読出番号カウンタ１２０１と、読み出し開始のローを設定するロー読出番号カウンタ１２０２と、射影結果中間バッファ１１４から読み出したカラムをロー単位で切り出すカラム切り出し回路１２０３と、切り出したカラムをロー形式データ１２０５に貼り付けるカラム貼り付け回路１２０４と、を含む。【０１１９】
カラム読出番号カウンタ１２０１は、射影結果中間バッファ１１４から読み出すデータのカラム方向の位置を示すカウンタである。ロー読出番号カウンタ１２０２は、射影結果中間バッファ１１４から読み出すデータのロー方向の位置を示すカウンタである。ロー読出番号カウンタ１２０２の初期値は、例えば、射影結果中間バッファ１１４に書き込まれた選択カラムデータ１１０４の先頭の位置が設定される。なお、カラム読出番号カウンタ１２０１とロー読出番号カウンタ１２０２の設定は、管理ＣＰＵ１０５が行うようにしてもよい。【０１２０】
カラム切り出し回路１２０３は、射影結果中間バッファ１１４から読み出したデータのうち、有効となるデータを切り出す。カラム貼り付け回路１２０４は、カラム切り出し回路１２０３で切り出した有効なデータをデータバッファ１０６上の所定の領域に詰め込んで配置し、ロー形式データ１２０５を生成する。カラム貼り付け回路１２０４は、ロー形式データ１２０５を生成した後に、データＤＭＡ１０４へ出力する。【０１２１】
射影結果フォーマッタ１１５は、まず、ロー読出番号カウンタ１２０２に読み出しを開始する行番号（先頭行番号）を設定して、カラム読出番号カウンタ１２０１を先頭の列番号（例えば、１）から順次進めて、射影結果中間バッファ１１４の内容を同一行のデータとして順次読み出す。【０１２２】
射影結果フォーマッタ１１５は、読み出したデータからカラム切り出し回路１２０３で有効となるデータを切り出し、切り出したデータをカラム貼り付け回路１２０４でデータバッファ１０６上に詰めて配置することで、ロー形式データ１２０５を生成してデータＤＭＡ回路１０４に出力する。【０１２３】
図１４は、射影結果フォーマッタ１１５が出力するロー形式データ１２０５のフォーマットの一例を示す図である。【０１２４】
ロー形式データ１２０５は、データバッファ１０６上の所定の領域に格納され、１行目１列のデータ１３０１から、１行目２列のデータ１３０２、１行目３列のデータ１３０３の順に、１行目ｎ列のデータ１３０４までが順次配置される。１行目のデータの次には、２行目１列のデータ１３０４、２行目２列のデータ１３０５、２行目３列のデータ１３０７の順に、２行目ｎ列のデータ１３０８までが順次配置される。そして、最後の行のｍ行目ｎ列のデータ１３０９までが、行と列の順で詰め込まれ、ロー形式データ１２０５が生成される。【０１２５】
図１５、図１６は、カラムストア検索回路３で行われる検索処理の一例を示す説明図である。図１５は、カラムストア検索回路３で行われるカラムストアＤＢ４の検索処理の前半部を示す図である。図１６は、カラムストア検索回路３で行われるカラムストアデータベースの検索処理の後半部を示す図である。図示の例では、ｎ行２列のカラムストアＤＢ４について検索する例を示す。【０１２６】
図１５において、計算機１から検索要求を受信した管理ＣＰＵ１０５は、フラッシュコントローラ１０７にカラムストアＤＢ４の読み込みを指令し、フラッシュコントローラ１０７がカラムストアＤＢ４をデータバッファ１０６に読み込む。次に、管理ＣＰＵ１０５は、カラム伸張回路１０９を起動する。管理ＣＰＵ１０５は、起動する各カラム伸張回路１０９のそれぞれに処理カラム番号１１０５を通知して、処理を開始するカラムを指定する。【０１２７】
カラム伸張回路１０９−１〜１０９−ｋは、カラムストアＤＢ４のデータのうち、管理ＣＰＵ１０５から割り当てられた処理カラム番号１１０５のページデータ２０６を読み込んで、伸張処理を行ってカラムデータ２０９を生成（または復元）する。図１５では、ｎ行２列のカラムデータ２０９が生成された例を示す。【０１２８】
カラムデータ２０９の生成が完了すると、カラム伸張回路１０９は、データ検索回路１１０に検索開始を指令する。なお、検索開始の指令は、管理ＣＰＵ１０５が行うようにしてもよい。データ検索回路１１０は、第１の検索条件によってカラムデータ２０９と比較値６０２および比較条件６０３を比較することで第１の検索処理を実行し、カラム比較結果５０３を検索結果中間バッファ１１１に格納する。【０１２９】
図示の例では、データ検索回路１１０はカラムデータ２０９の列について行単位で比較を行い、検索結果中間バッファ１１１内では、カラム比較結果５０３が行方向に書き込まれる。図示の例では、「Ｈｉｔ」が第１の検索条件に合致したデータを示し、「Ｍｉｓｓ」が第１の検索条件に合致しないデータを示す。【０１３０】
次に、検索結果集計回路１１２では、論理条件テーブル８０１に設定された第２の検索条件とカラム比較結果５０３の論理演算が行われ、検索結果として出力する行番号を指定した最終比較結果８０６を出力する。【０１３１】
図１５では、図１０の論理条件テーブル８０１で、条件１が項１有効ビット９０２−１＝「１」（Ｈｉｔ：合致）、項２有効ビット９０２−２＝「１」の場合を示し、第２の検索条件が、同一行の１列目と２列目が第１の検索条件に合致しているものを選択することを示す。この結果、検索結果集計回路１１２は、１行目からｎ行目までの最終比較結果８０６を順次出力する。図示の例では、行番号と第２の検索条件に合致したか否かを示す検索結果「Ｈｉｔ」または「Ｍｉｓｓ」で示し、２行目のデータが第２の検索条件に合致した検索結果となる。【０１３２】
次に、図１６では、データ射影回路１１３が第１及び第２の検索条件を満たしカラム（またはフィールド）データを取り出す。データ射影回路１１３は、カラム伸張回路１０９からカラムデータ２０９を入力し、検索結果集計回路１１２が出力する最終比較結果８０６と突き合わせ、最終比較結果８０６が「Ｈｉｔ」の行について、列データを切り出して選択カラムデータ１１０４として射影結果中間バッファ１１４に格納する。すなわち、データ射影回路１１３は、各カラムデータ２０９から２行目の各カラムを切り出して選択カラムデータ１１０４として、射影結果中間バッファ１１４に書き込む。【０１３３】
射影結果中間バッファ１１４には、カラムデータ２０９のうち第２の検索条件に合致する選択カラムデータ１１０４がカラム毎に格納される。データ射影回路１１３は、検索結果集計回路１１２からの最終比較結果８０６と、カラム伸張回路１０９からのカラムデータ２０９について処理が完了すると、射影結果フォーマッタ１１５を起動する。【０１３４】
射影結果フォーマッタ１１５は、射影結果中間バッファ１１４から選択カラムデータ１１０４を行毎に全てのカラムデータを読み込んで、ロー形式データ１２０５に格納する。射影結果フォーマッタ１１５は、選択カラムデータ１１０４の全ての行をロー形式データ１２０５に格納すると、データＤＭＡ１０４に出力する。なお、射影結果フォーマッタ１１５の起動は、検索結果集計回路１１２が行っても良いし、管理ＣＰＵ１０５が行っても良い。【０１３５】
なお、データ射影回路１１３による検索結果のカラムの切り出しは、カラム伸張回路１０９から入力するカラムデータ２０９に限定されるものではない。例えば、カラム伸張回路１０９が生成したカラムデータ２０９をデータバッファ１０６に格納しておき、データ射影回路１１３はデータバッファ１０６からカラムデータ２０９を読み込んで、最終比較結果８０６と突き合わせを行ってもよい。【０１３６】
以上の処理によって、フラッシュストレージ２が計算機１から検索要求を受信すると、フラッシュストレージ２のカラムストア検索回路３がカラムストアＤＢ４の検索を行って、ロー形式データ１２０５で検索結果を応答する。【０１３７】
本実施例１によれば、カラムストア検索回路３は、カラムデータ２０９のカラム毎に１以上の第１の検索条件と比較してカラム毎のカラム比較結果５０３を算出し、カラム毎のカラム比較結果５０３に対して第２の検索条件を満たすか否かを行単位で判定して最終比較結果８０６を算出する。そして、カラムストア検索回路３は、最終比較結果８０６で第２の検索条件を満たす行についてロー形式データ１２０５として出力する。【０１３８】
フラッシュコントローラ１０７がフラッシュメモリ１０８からカラムストアＤＢ４の検索対象のページデータ２０６をデータバッファ１０６に読み出した後は、カラムストア検索回路３で検索要求に応じた検索処理行うことができる。これにより、本実施例１では、カラムストアＤＢ４の検索時には、前記従来例のようなフラッシュメモリ１０８へのランダムアクセスを行う必要がなくなる。【０１３９】
したがって、本実施例１によれば、カラムストアＤＢ４の検索時にフラッシュメモリ１０８等のストレージ装置に対するランダムアクセスを排除して、検索処理の性能を向上させることが可能となる。【０１４０】
また、複数のフラッシュメモリ１０８にカラムストアＤＢ４を格納して検索処理を行う際には、複数のフラッシュコントローラ１０７がフラッシュメモリ１０８の読み出し単位（ページ）毎に並列処理を行うことで高速に読み出すことが可能である。しかし、カラムストアＤＢ４のページデータ２０６が保持しているカラムの数は均一ではないため、割り当てられたページデータ２０６によってフラッシュコントローラ１０７−１〜１０７−ｉの読み出し時間にはばらつきが発生する。【０１４１】
ここで、フラッシュメモリ１０８−１〜１０８−ｊから並列で読み込んだカラムストアＤＢ４のページデータ２０６を専用のハードウェアであるカラムストア検索回路３で処理する場合、カラムストア検索回路３には、先頭のページデータ２０６から所定の順序でカラムデータを入力しなければならない。【０１４２】
しかしながら、複数のフラッシュコントローラ１０７−１〜１０７−ｉがフラッシュメモリ１０８−１〜１０８−ｊのページデータ２０６を並列で読み込んだ場合には、ページによって読み出し時間のばらつきが発生するため、カラムストア検索回路３は先頭のページデータ２０６の読み出しが完了するまで、処理の開始を待たなければならない、という課題があった。【０１４３】
これに対して、本実施例１によれば、フラッシュメモリ１０８等の半導体記憶素子を用いたストレージ装置にカラムストアＤＢ４を格納し、専用のカラムストア検索回路３で演算を行う際に、先頭のページよりも後のページが先に読み込めた場合には、後のページから専用のカラムストア検索回路３で処理を行うことが可能となって、カラムストアＤＢ４の処理性能を向上させることができる。【０１４４】
また、カラムストア検索回路３は、カラムストアＤＢ４の検索結果としてロー形式データ１２０５で出力することができるので、検索結果を利用する計算機１ではアプリケーションのオーバーヘッドを小さくすることができる。すなわち、既存のアプリケーションの多くはロー形式データ１２０５を扱うことができるのに対し、カラムストアＤＢ４のフォーマットを扱うことが可能なアプリケーションは少ない。【０１４５】
このため、本実施例１によれば、計算機１でカラムストアＤＢ４のフォーマットをロー形式データ１２０５へ変換する必要がないので、カラムストアＤＢ４の検索結果を極めて容易に扱うことが可能となる。【０１４６】
なお、上記実施例１では、Ｉ／Ｏスイッチ５を介して複数のフラッシュストレージ２が計算機１に接続される例を示したが、Ｉ／Ｏスイッチ５に代わってネットワークを採用し、複数のフラッシュストレージ２と計算機１を接続しても良い。【０１４７】
また、上記実施例１では、カラムストアＤＢ４を格納する媒体としてフラッシュメモリ１０８を採用した例を示したが、これに限定されるものではなく、不揮発性の半導体記憶媒体または不揮発性半導体記憶部であれば良い。【０１４８】
また、上記実施例１では、カラムストアＤＢ４が圧縮された例を示したが、カラムストアＤＢ４が圧縮されていない場合には、カラム伸張回路１０９はデータバッファ１０６からページデータ２０６を読み込んで、カラム毎にデータを展開するカラム読み出し回路として機能する。
【実施例２】
【０１４９】
図１７は、本発明の第２の実施例を示し、カラムストアＤＢ４の検索処理の一例を示すフローチャートである。本実施例２では、前記実施例１のカラムストア検索回路３に代わって、フラッシュストレージ２の管理ＣＰＵ１０５がカラムストア検索処理プログラムを実行して、カラムストアＤＢ４の検索を行う。【０１５０】
カラムストア検索処理プログラムは、前記実施例１のカラムストア検索回路３で行われる処理をソフトウェアで実現するプログラムである。フラッシュストレージ２の構成は、前記実施例１のカラムストア検索回路３に代わってメモリ（図示省略）を有するもので、その他の構成は前記実施例１と同様である。なお、図示しないメモリとデータバッファ１０６が同一の記憶装置であってもよい。【０１５１】
カラムストア検索処理プログラムは、カラム伸張プログラムと、データ検索プログラムと、検索結果集計プログラムと、データ射影プログラムと、射影結果フォーマットプログラムと、を含む。【０１５２】
カラムストア検索処理プログラムの処理内容は、図１７に示すとおりである。管理ＣＰＵ１０５は、計算機１から検索要求を受け付けると、カラムストア検索処理プログラムをメモリにロードして実行する。【０１５３】
まず、ステップＳ１では、管理ＣＰＵ１０５は受信した検索要求から、第１の検索条件と、第２の検索条件を取得する。管理ＣＰＵ１０５はメモリ上に設定した比較値テーブルに第１の検索条件を格納する。比較値テーブルは、前記実施例１の図７に示したテーブルと同様である。また、管理ＣＰＵ１０５はメモリ上に設定した論理条件テーブルに第２の検索条件を格納する。論理条件テーブルは、前記実施例１の図１０に示したテーブルと同様である。【０１５４】
次に、ステップＳ２では、管理ＣＰＵ１０５は、検索要求に含まれるデータの範囲に応じてフラッシュコントローラ１０７に読み出しを指令し、フラッシュコントローラ１０７はカラムストアＤＢ４のデータを読み出してデータバッファ１０６にページデータ２０６を格納する。カラムストアＤＢ４の読み出しが完了すると、管理ＣＰＵ１０５は、データバッファ１０６からページデータ２０６を読み込む。【０１５５】
ステップＳ３では、管理ＣＰＵ１０５が、読み込んだページデータ２０６について前記実施例１のカラム伸張回路１０９と同様にしてカラム伸張処理を行って、圧縮されたページデータ２０６からカラムデータ２０９を復元する。この処理は、上記カラム伸張プログラムに相当する処理である。【０１５６】
また、管理ＣＰＵ１０５は、ページデータ２０６に含まれるロー開始番号４０１からページデータ２０６の終端までのロー番号２０７を圧縮符号の数に応じて算出する。なお、カラムデータ２０９へのロー番号２０７の付与は、前記実施例１では、第１の検索条件とカラムデータ２０９を比較した後に行ったが、本実施例２では、カラム毎に、ロー番号２０７と代表値を対にしたカラムデータ２０９を出力する。なお、管理ＣＰＵ１０５は、出力したカラムデータ２０９をデータバッファ１０６に格納しておくことができる。【０１５７】
カラム伸張処理では、管理ＣＰＵ１０５がページデータ２０６から代表値その１（４０２）〜代表値そのｍ（４０５）までを取得して、メモリ上に設定した代表値バッファに代表値と、当該代表値をカラムデータとする圧縮符号の値を書き込む。【０１５８】
そして、管理ＣＰＵ１０５は、ページデータ２０６の先頭の圧縮符号４０６から終端の圧縮符号４０９に向けて代表値を順次検索し、カラムデータ２０９を列単位で出力する。なお、管理ＣＰＵ１０５は、復元したカラムデータ２０９をデータバッファ１０６に格納することができる。【０１５９】
ステップＳ４では、管理ＣＰＵ１０５がカラムデータ２０９を読み込んで、第１の検索条件が設定された比較値テーブルに設定されたカラム毎の比較値と比較条件について、カラムデータ２０９の先頭の行から終端の行まで比較をカラム単位で行う。この比較は、前記実施例１のデータ検索回路１１０と同様の処理を行う。この処理は、上記データ検索プログラムの処理である。管理ＣＰＵ１０５は、カラムデータ２０９と第１の検索条件との比較結果を示す値を行毎に付加したカラム比較結果５０３を出力する。【０１６０】
ステップＳ５では、管理ＣＰＵ１０５が、メモリ上に設定した検索結果中間バッファにカラム比較結果５０３を格納する。検索結果中間バッファには、カラム毎に、ページデータ２０６の先頭のロー番号２０７から終端のロー番号２０７の順にカラム比較結果５０３が格納される。【０１６１】
ステップＳ６では、管理ＣＰＵ１０５が、検索結果中間バッファから読み込んだカラム比較結果５０３について、ステップＳ１で設定された論理条件テーブルの第２の検索条件に基づいて論理演算を行う。この処理は、前記実施例１の検索結果集計回路１１２と同様の処理で、上記検索結果集計プログラムの処理ある。このステップＳ６では、カラム間の検索条件などを規定した第２の検索条件によって、管理ＣＰＵ１０５が、カラム比較結果５０３の行方向に対して論理演算を実施する。【０１６２】
論理条件テーブルには、ページデータ２０６の行方向で、カラム比較結果５０３の値に関する論理演算の条件を設定しておく。管理ＣＰＵ１０５は、ページデータ２０６の行方向で複数の検索条件を適用して論理演算を行い、上記ステップＳ４の第１の検索条件による比較よりも複雑な検索を実行する。【０１６３】
管理ＣＰＵ１０５は、カラム比較結果５０３を入力として、論理条件テーブルの第２の検索条件により論理演算を行って行毎に論理演算結果８０５を出力する。論理演算結果８０５は、ロー番号と第２の比較結果の対で構成される。【０１６４】
第２の比較結果の一例としては、１ビットの場合で「１」が第２の検索条件に合致する値であり、「０」が第２の検索条件に合致しない値である。あるいは、上記図１５のように、第２の比較結果が文字列の場合では「Ｈｉｔ」が第２の検索条件に合致する値であり、「Ｍｉｓｓ」が第２の検索条件に合致しない値である。管理ＣＰＵ１０５は、メモリ上に設定した最終検索結果バッファに論理演算結果８０５を行方向（ページデータ２０６の先頭の行から終端の行に向かう方向けて）に書き込む。【０１６５】
最終検索結果バッファ内には、先頭のロー番号２０７から終端のロー番号２０７に対応する論理演算結果８０５が行毎に格納される。なお、管理ＣＰＵ１０５が、最終検索結果バッファから論理演算結果８０５を読み出す際には最終比較結果８０６として読み出す。【０１６６】
上記ステップＳ１〜Ｓ６により、最終検索結果バッファには、ロー番号と第２の比較結果の対で構成された論理演算結果８０５＝最終比較結果８０６が検索結果として格納される。【０１６７】
次に、ステップＳ７では、管理ＣＰＵ１０５は、検索条件に一致した行のカラムデータ２０９を抽出する。この処理は、前記実施例１の図１２に示したデータ射影回路１１３で行われる処理で、上記データ射影プログラムの処理である。【０１６８】
管理ＣＰＵ１０５は、カラム単位でカラムデータ２０９を読み込み、最終比較結果８０６と突き合わせ、第２の検索条件に合致した行のデータを選択カラムデータ１１０４として選択する。【０１６９】
ステップＳ８では、管理ＣＰＵ１０５が、メモリ上に設定した射影結果中間バッファに選択カラムデータ１１０４をカラム毎にロー番号２０７の先頭から終端に向けてそれぞれ格納する。射影結果中間バッファには、第２の検索条件、すなわち、検索要求を満たす行のカラムデータ２０９のみが選択カラムデータとして格納される。【０１７０】
ステップＳ９では、管理ＣＰＵ１０５が、射影結果中間バッファに格納された選択カラムデータ１１０４のうち、同一の行の選択カラムデータを行方向に結合する。この処理は、前記実施例１の図１３に示した射影結果フォーマッタ１１５で行われる処理と同様であり、上記射影結果フォーマット処理に相当する。【０１７１】
管理ＣＰＵ１０５は、射影結果中間バッファに格納された選択カラムデータ１１０４を読み出して、同一の行の選択カラムデータ１１０４を行方向で結合する。そして、管理ＣＰＵ１０５は、結合した行単位の選択カラムデータ１１０４を、前記実施例１の図１４に示したロー形式データ１２０５に変換してデータＤＭＡ１０４に出力する。【０１７２】
本実施例２によれば、カラムストア検索プログラムは、カラムデータ２０９のカラム毎に１以上の第１の検索条件と比較してカラム毎のカラム比較結果５０３を算出し、カラム毎のカラム比較結果５０３に対して第２の検索条件を満たすか否かを行単位で判定して最終比較結果８０６を算出する。そして、カラムストア検索プログラムは、最終比較結果８０６で第２の検索条件を満たす行についてロー形式データ１２０５として出力する。【０１７３】
フラッシュコントローラ１０７がフラッシュメモリ１０８からカラムストアＤＢ４の検索対象のページデータ２０６をデータバッファ１０６に読み出した後は、管理ＣＰＵ１０５が検索要求に応じた検索処理行うことができる。これにより、本実施例２では、前記実施例１と同様に、カラムストアＤＢ４の検索時には、前記従来例のようなフラッシュメモリ１０８へのランダムアクセスを行う必要がなくなる。【０１７４】
したがって、本実施例２も前記実施例１と同様に、カラムストアＤＢ４の検索時にフラッシュメモリ１０８等のストレージ装置に対するランダムアクセスを排除して、検索処理の性能を向上させることが可能となる。【０１７５】
＜まとめ＞
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。【０１７６】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。【０１７７】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。【０１７８】
＜補足＞
カラム形式データベースのデータ構造であって、
前記カラム形式データベースは、１以上のページデータで構成され、
前記ページデータは、
当該ページデータに含まれる先頭の行番号を所定の位置に設定し、カラム毎のデータを行方向の所定の順序で格納することを特徴とするデータ構造。
【図１】
2016157310.tif 000003
【図２】
2016157310.tif 000004
【図３】
2016157310.tif 000005
【図４】
2016157310.tif 000006
【図５】
2016157310.tif 000007
【図６】
2016157310.tif 000008
【図７】
2016157310.tif 000009
【図８】
2016157310.tif 000010
【図９】
2016157310.tif 000011
【図１０】
2016157310.tif 000012
【図１１】
2016157310.tif 000013
【図１２】
2016157310.tif 000014
【図１３】
2016157310.tif 000015
【図１４】
2016157310.tif 000016
【図１５】
2016157310.tif 000017
【図１６】
2016157310.tif 000018
【図１７】
2016157310.tif 000019
【手続補正書】
【提出日】平成29年2月28日(2017.2.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
カラム形式データベースを格納するストレージ装置であって、
前記ストレージ装置は、
前記カラム形式データベースを格納する不揮発性半導体記憶部と、
前記不揮発性半導体記憶部に対する読み書きを制御するストレージコントローラと、
前記カラム形式データベースの検索処理を行う検索部と、
検索要求を受信して前記ストレージコントローラと検索部とを制御する管理プロセッサと、を含み、
前記管理プロセッサは、
前記検索要求に含まれる検索対象のデータを前記ストレージコントローラに要求し、前記検索要求に含まれる第１の検索条件と、第２の検索条件を取得して前記検索部へ通知して前記検索対象のデータについて検索処理を実行させ、
前記検索部は、
前記ストレージコントローラが読み出した検索対象の前記カラム形式データベースのページデータを読み込んで、前記ページデータに設定された先頭の行番号を取得し、前記ページデータに格納された列ごとのカラムデータについて、前記先頭の行番号から終端の行まで順に読み出すカラム読み出し部と、
前記列毎に読み出されたカラムデータの前記先頭の行から終端の行までそれぞれ第１の検索条件との比較を行って比較結果を出力するデータ検索部と、
前記検索要求で指定された範囲の列の比較結果が出力されると、前記比較結果の行方向で前記第２の検索条件と比較して、前記比較結果から前記第２の検索条件を満たす行を判定する検索結果集計部と、
を有することを特徴とするストレージ装置。
【請求項２】
請求項１に記載のストレージ装置であって、
前記検索部は、
前記カラム読み出し部から前記列ごとのカラムデータを、前記先頭の行番号から終端の行まで順に受け付けて、前記検索結果集計部の判定結果と前記カラムデータを比較し、前記第２の検索条件を満たす行のカラムデータを抽出するデータ射影部と、
前記データ射影部が抽出した前記第２の検索条件を満たす行のカラムデータを、行方向で結合して行形式データに変換して出力する射影結果フォーマット部と、をさらに有することを特徴とするストレージ装置。
【請求項３】
請求項１に記載のストレージ装置であって、
前記検索部は、ハードウェアで構成されたことを特徴とするストレージ装置。
【請求項４】
請求項１に記載のストレージ装置であって、
前記データ検索部は、
前記カラムデータと前記第１の検索条件との比較結果を１ビットのデータで、前記先頭の行から終端の行まで前記列ごとに出力することを特徴とするストレージ装置。
【請求項５】
請求項１に記載のストレージ装置であって、
前記管理プロセッサは、
前記先頭の行番号が異なる複数の前記ページデータについて検索処理を前記検索部に指令し、
前記データ検索部は、
複数の前記カラム読み出し部と、複数の前記データ検索部と、を有し、前記管理プロセッサから受け付けた前記複数のページデータについて並列的に検索処理を実行することを特徴とするストレージ装置。
【請求項６】
請求項２に記載のストレージ装置であって、
前記管理プロセッサは、
前記先頭の行番号が異なる複数の前記ページデータについて検索処理を前記検索部に指令し、
前記データ検索部は、
複数の前記カラム読み出し部と、複数の前記データ検索部と、複数の前記データ射影部とを有し、前記管理プロセッサから受け付けた前記複数のページデータについて並列的に検索処理を実行することを特徴とするストレージ装置。
【請求項７】
カラム形式データベースを管理する計算機と、
カラム形式データベースを格納するストレージ装置と、を有する計算機システムであって、
前記計算機は、
前記ストレージ装置に対して検索要求を発行し、
前記ストレージ装置は、
前記カラム形式データベースを格納する不揮発性半導体記憶部と、
前記不揮発性半導体記憶部に対する読み書きを制御するストレージコントローラと、
前記カラム形式データベースの検索処理を行う検索部と、
前記計算機からの検索要求を受信して前記ストレージコントローラと検索部とを制御する管理プロセッサと、を含み、
前記管理プロセッサは、
前記計算機から受信した前記検索要求に含まれる検索対象のデータを前記ストレージコントローラに要求し、前記検索要求に含まれる第１の検索条件と、第２の検索条件を取得して前記検索部へ通知して前記検索対象のデータについて検索処理を実行させ、
前記検索部は、
前記ストレージコントローラが読み出した検索対象の前記カラム形式データベースのページデータを読み込んで、前記ページデータに設定された先頭の行番号を取得し、前記ページデータに格納された列ごとのカラムデータについて、前記先頭の行番号から終端の行まで順に読み出すカラム読み出し部と、
前記列毎に読み出されたカラムデータの前記先頭の行から終端の行までそれぞれ第１の検索条件との比較を行って比較結果を出力するデータ検索部と、
前記検索要求で指定された範囲の列の比較結果が出力されると、前記比較結果の行方向で前記第２の検索条件と比較して、前記比較結果から前記第２の検索条件を満たす行を判定する検索結果集計部と、を有することを特徴とする計算機システム。
【請求項８】
請求項７に記載の計算機システムであって、
前記検索部は、
前記カラム読み出し部から前記列ごとのカラムデータを、前記先頭の行番号から終端の行まで順に受け付けて、前記検索結果集計部の判定結果と前記カラムデータを比較し、前記第２の検索条件を満たす行のカラムデータを抽出するデータ射影部と、
前記データ射影部が抽出した前記第２の検索条件を満たす行のカラムデータを、行方向で結合して行形式データに変換して出力する射影結果フォーマット部と、をさらに有することを特徴とする計算機システム。
【請求項９】
請求項７に記載の計算機システムであって、
前記検索部は、ハードウェアで構成されたことを特徴とする計算機システム。
【請求項１０】
請求項７に記載の計算機システムであって、
前記データ検索部は、
前記カラムデータと前記第１の検索条件との比較結果を１ビットのデータで、前記先頭の行から終端の行まで前記列ごとに出力することを特徴とする計算機システム。
【請求項１１】
請求項７に記載の計算機システムであって、
前記管理プロセッサは、
前記先頭の行番号が異なる複数の前記ページデータについて検索処理を前記検索部に指令し、
前記データ検索部は、
複数の前記カラム読み出し部と、複数の前記データ検索部と、を有し、前記管理プロセッサから受け付けた前記複数のページデータについて並列的に検索処理を実行することを特徴とする計算機システム。
【請求項１２】
請求項８に記載の計算機システムであって、
前記管理プロセッサは、
前記先頭の行番号が異なる複数の前記ページデータについて検索処理を前記検索部に指令し、
前記データ検索部は、
複数の前記カラム読み出し部と、複数の前記データ検索部と、複数の前記データ射影部とを有し、前記管理プロセッサから受け付けた前記複数のページデータについて並列的に検索処理を実行することを特徴とする計算機システム。
【請求項１３】
カラム形式データベースを格納するストレージ装置の制御方法であって、
前記ストレージ装置は、
前記カラム形式データベースを格納する不揮発性半導体記憶部と、
前記不揮発性半導体記憶部に対する読み書きを制御するストレージコントローラと、
前記カラム形式データベースの検索処理を行う検索部と、
検索要求を受信して前記ストレージコントローラと検索部とを制御する管理プロセッサと、を有し、
前記制御方法は、
前記管理プロセッサが、前記検索要求に含まれる検索対象のデータを前記ストレージコントローラに要求し、前記検索要求に含まれる第１の検索条件と、第２の検索条件を取得して前記検索部へ通知して前記検索対象のデータについて検索処理を実行させる第１のステップと、
前記検索部が、前記ストレージコントローラが読み出した検索対象の前記カラム形式データベースのページデータを読み込んで、前記ページデータに設定された先頭の行番号を取得し、前記ページデータに格納された列ごとのカラムデータについて、前記先頭の行番号から終端の行まで順に読み出す第２のステップと、
前記検索部が、前記列毎に読み出されたカラムデータの前記先頭の行から終端の行までそれぞれ第１の検索条件との比較を行って比較結果を出力する第３のステップと、
前記検索部が、前記検索要求で指定された範囲の列の比較結果が出力されると、前記比較結果の行方向で前記第２の検索条件と比較して、前記比較結果から前記第２の検索条件を満たす行を判定する第４のステップと、
を含むことを特徴とするストレージ装置の制御方法。
【請求項１４】
請求項１３に記載のストレージ装置の制御方法であって、
前記検索部が、前記読み出された前記列ごとのカラムデータを、前記先頭の行番号から終端の行まで順に受け付けて、前記第４のステップの判定結果と前記カラムデータを比較し、前記第２の検索条件を満たす行のカラムデータを抽出する第５のステップと、
前記検索部が、前記抽出された前記第２の検索条件を満たす行のカラムデータを、行方向で結合して行形式データに変換して出力する第６のステップと、をさらに含むことを特徴とするストレージ装置の制御方法。
【請求項１５】
請求項１３に記載のストレージ装置の制御方法であって、
前記第３のステップは、
前記カラムデータと前記第１の検索条件との比較結果を１ビットのデータで、前記先頭の行から終端の行まで前記列ごとに出力することを特徴とするストレージ装置の制御方法。
【国際調査報告】
2016157310.tif 000020
2016157310.tif 000021
2016157310.tif 000022
2016157310.tif 000023