(57)【要約】  プロセッサとメモリとを有して、データベースを管理するデータベース管理部を提供する計算機は、インタフェースを介して前記プロセッサに接続されたデバイスを有し、前記デバイスは、複数の不揮発性半導体メモリを有し、前記データベースを格納する不揮発性半導体記憶装置と、前記不揮発性半導体記憶装置から前記データベースを読み込んで、前記データベースの演算を行うデータベース演算モジュールと、前記インタフェースと前記不揮発性半導体記憶装置及びデータベース演算モジュールとを接続するスイッチと、を有する。
2016135874.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリとを有して、データベースを管理するデータベース管理部を提供する計算機であって、
前記計算機は、インタフェースを介して前記プロセッサに接続されたデバイスを有し、
前記デバイスは、
複数の不揮発性半導体メモリを有し、前記データベースを格納する不揮発性半導体記憶装置と、
前記不揮発性半導体記憶装置から前記データベースを読み込んで、前記データベースの演算を行うデータベース演算モジュールと、
前記インタフェースと前記不揮発性半導体記憶装置及びデータベース演算モジュールとを接続するスイッチと、
を有することを特徴とする計算機。
【請求項２】
請求項１に記載の計算機であって、
前記デバイスは、
複数の前記不揮発性半導体記憶装置と、複数の前記データベース演算モジュールとを含み、
前記データベース管理部は、
前記複数の不揮発性半導体記憶装置のうち、前記データベース演算モジュールがアクセス可能な不揮発性半導体記憶装置の関係を設定したデータベース演算モジュール情報をさらに有し、
前記データベースに対する検索要求を受け付けると、当該検索要求のアクセス対象がデータベース全体について読み込む全体検索とデータベースを部分的に読み込む部分検索の何れかを判定し、前記判定の結果に応じて前記データベース演算モジュール情報から使用するデータベース演算モジュールまたは不揮発性半導体記憶装置を選択することを特徴とする計算機。
【請求項３】
請求項２に記載の計算機であって、
前記データベース管理部は、
前記データベースに対する検索要求が前記全体検索の場合には、前記データベース演算モジュール情報を参照して、検索対象のデータベースにアクセス可能な前記不揮発性半導体記憶装置とデータベース演算モジュールを特定し、当該特定したデータベース演算モジュールに対して前記不揮発性半導体記憶装置のアクセス対象領域で検索を実行するためのデータベース演算コマンドを発行し、
前記データベース演算モジュールは、
前記データベース演算コマンドを受信して、前記不揮発性半導体記憶装置の前記アクセス対象領域を所定の小領域に分割し、当該分割された複数の小領域毎にＲＥＡＤコマンドを生成して、当該不揮発性半導体記憶装置に複数のＲＥＡＤコマンドを送信し、
前記不揮発性半導体記憶装置は、
前記複数の小領域毎のＲＥＡＤコマンドを受信して、前記複数の不揮発性半導体メモリから並列的に読み込むことを特徴とする計算機。
【請求項４】
請求項３に記載の計算機であって、
前記不揮発性半導体記憶装置は、
前記複数の小領域毎のＲＥＡＤコマンドが完了すると、読み込んだデータを前記データベース演算モジュールに送信し、
前記データベース演算モジュールは、前記データベース演算コマンドに対応する読み込みが完了した順序でデータベース演算を実行し、データベース演算の結果を前記データベース管理部へ通知することを特徴とする計算機。
【請求項５】
請求項４に記載の計算機であって、
前記データベース演算モジュールは、
同時に実行可能なデータベース演算コマンドの上限数であるコマンド実行多重度が予め設定され、前記データベース管理部から複数のデータベース演算コマンドを受け付け可能であって、当該コマンド実行多重度で設定された数以上のデータベース演算コマンドについては実行を保留し、先行するデータベース演算コマンドの処理が終了した後に、実行を保留したデータベース演算コマンドの実行を開始することを特徴とする計算機。
【請求項６】
請求項５に記載の計算機であって、
前記データベース管理部は、
演算対象のデータベースが格納されている不揮発性半導体記憶装置の表領域管理情報と、
前記データベース演算モジュールの前記コマンド実行多重度の情報と、をさらに有し、
前記表領域管理情報と、前記コマンド実行多重度の情報と、前記データベース演算モジュール情報とを参照し、前記データベース演算モジュールへ送信するデータベース演算コマンドのスケジューリングを実行し、前記スケジューリングに基づいて前記データベース演算コマンドを生成することを特徴とする計算機。
【請求項７】
請求項２に記載の計算機であって、
前記データベース管理部は、
前記不揮発性半導体記憶装置に格納したデータベースのインデックス情報の有無に応じて、全体検索と部分検索の何れかを判定することを特徴とする計算機。
【請求項８】
請求項４に記載の計算機であって、
前記データベース演算モジュールは、
前記データベース演算を実行するデータベース演算回路をさらに含み、
前記データベース演算モジュールが、前記データベース演算コマンドに対応する読み込みが完了した順序で前記データベース演算回路でデータベース演算を実行させ、前記データベース演算回路の演算結果を取得して前記データベース管理部へ通知することを特徴とする計算機。
【請求項９】
プロセッサとメモリを有してデータベース管理部を提供する計算機が、データベースを管理するデータベースの管理方法であって、
前記計算機は、インタフェースを介して前記プロセッサに接続されたデバイスを有し、
前記デバイスは、複数の不揮発性半導体メモリを有し、前記データベースを格納する不揮発性半導体記憶装置と、前記不揮発性半導体記憶装置から前記データベースを読み込んで、前記データベースの演算を行うデータベース演算モジュールと、前記インタフェースと複数の前記不揮発性半導体記憶装置及び複数のデータベース演算モジュールとを接続するスイッチと、を有し、
前記管理方法は、
前記データベース管理部が、前記データベースに対する検索要求を受け付ける第１のステップと、
前記データベース管理部が、前記検索要求のアクセス対象がデータベース全体について読み込む全体検索とデータベースを部分的に読み込む部分検索の何れかを判定する第２のステップと、
前記データベース管理部が、前記複数の不揮発性半導体記憶装置のうち、前記データベース演算モジュールがアクセス可能な不揮発性半導体記憶装置の関係を設定したデータベース演算モジュール情報を参照し、前記判定の結果に応じて前記データベース演算モジュール情報から使用するデータベース演算モジュールまたは不揮発性半導体記憶装置を選択する第３のステップと、
を含むことを特徴とするデータベースの管理方法。
【請求項１０】
請求項９に記載のデータベースの管理方法であって、
前記データベース管理部は、前記データベースに対する検索要求が前記全体検索の場合には、前記データベース演算モジュール情報を参照して、検索対象のデータベースにアクセス可能な前記不揮発性半導体記憶装置とデータベース演算モジュールを特定する第４のステップと、
前記データベース管理部は、前記特定したデータベース演算モジュールに対して前記不揮発性半導体記憶装置のアクセス対象領域で検索を実行するためのデータベース演算コマンドを発行する第５のステップと、
前記データベース演算モジュールは、前記データベース演算コマンドを受信して、前記不揮発性半導体記憶装置の前記アクセス対象領域を所定の小領域に分割し、当該分割された複数の小領域毎にＲＥＡＤコマンドを生成して、当該不揮発性半導体記憶装置に複数のＲＥＡＤコマンドを送信する第６のステップと、
前記不揮発性半導体記憶装置は、前記複数の小領域毎のＲＥＡＤコマンドを受信して、前記複数の不揮発性半導体メモリから並列的に読み込む第７のステップと、
をさらに含むことを特徴とするデータベースの管理方法。
【請求項１１】
請求項１０に記載のデータベースの管理方法であって、
前記不揮発性半導体記憶装置は、前記複数の小領域毎のＲＥＡＤコマンドが完了すると、読み込んだデータを前記データベース演算モジュールに送信する第８のステップと、
前記データベース演算モジュールは、前記データベース演算コマンドに対応する読み込みが完了した順序でデータベース演算を実行する第９のステップと、
前記データベース演算モジュールは、データベース演算の結果を前記データベース管理部へ通知する第１０のステップと、
をさらに含むことを特徴とするデータベースの管理方法。
【請求項１２】
請求項１１に記載のデータベースの管理方法であって、
前記データベース演算モジュールは、
同時に実行可能なデータベース演算コマンドの上限数であるコマンド実行多重度が予め設定され、前記データベース管理部から複数のデータベース演算コマンドを受け付け可能であって、
前記第９のステップは、
前記コマンド実行多重度で設定された数以上のデータベース演算コマンドについては実行を保留し、先行するデータベース演算コマンドの処理が終了した後に、実行を保留したデータベース演算コマンドの実行を開始することを特徴とするデータベースの管理方法。
【請求項１３】
請求項１２に記載のデータベースの管理方法であって、
前記データベース管理部は、
演算対象のデータベースが格納されている不揮発性半導体記憶装置の表領域管理情報と、
前記データベース演算モジュールの前記コマンド実行多重度の情報と、をさらに有し、
前記第５のステップは、
前記表領域管理情報と、前記コマンド実行多重度の情報と、前記データベース演算モジュール情報とを参照し、前記データベース演算モジュールへ送信するデータベース演算コマンドのスケジューリングを実行し、前記スケジューリングに基づいて前記データベース演算コマンドを生成することを特徴とするデータベースの管理方法。
【請求項１４】
請求項９に記載のデータベースの管理方法であって、
前記第２のステップは、
前記不揮発性半導体記憶装置に格納したデータベースのインデックス情報の有無に応じて、全体検索と部分検索の何れかを判定することを特徴とするデータベースの管理方法。
【請求項１５】
請求項１１に記載のデータベースの管理方法であって、
前記データベース演算モジュールは、
前記データベース演算を実行するデータベース演算回路をさらに含み、
前記第９のステップは、
前記データベース演算モジュールが、前記データベース演算コマンドに対応する読み込みが完了した順序で前記データベース演算回路でデータベース演算を実行させ、
前記第１０のステップは、
前記データベース演算モジュールが、前記データベース演算回路の演算結果を取得して前記データベース管理部へ通知することを特徴とするデータベースの管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを格納するフラッシュモジュールと、データベース演算を実行するデータベース演算回路を有する計算機システム、および、データベース演算回路に関する。
【背景技術】
【０００２】
近年、フラッシュメモリなどの半導体メモリを用いた情報記憶装置（以下、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、または、フラッシュモジュールと称す）に、データベース演算機能を追加する技術が開発されている。データベース演算機能を有するＳＳＤは、従来から備えていたデータの読み書きに加えて、従来はサーバ装置のＣＰＵで実行されていたデータベース処理を実行する機能を有する。【０００３】
非特許文献１では、ＳＳＤが有するＣＰＵでユーザプログラムを実行可能とし、ＳＳＤが有するＣＰＵで、マイクロソフト社のデータベース製品Ｍｉｃｒｏｓｏｆｔ  ＳＱＬ  Ｓｅｒｖｅｒ（Ｒ）の選択クエリを実行している。非特許文献２では、ＳＳＤ内部にシステムオンチップ技術を用いた計算モジュールを配置し、フラッシュメモリから読み出したデータに対するデータベース演算を実行している。【０００４】
これらの技術により、サーバ装置とＳＳＤの間の通信量が削減される。一般に、ＳＳＤ内部のデータ転送帯域は、サーバ装置とＳＳＤ間のデータ転送帯域より大きいため、性能向上の効果が得られる。非特許文献１と非特許文献２では、データベース演算機能を有するＳＳＤを用いることで、システムの性能が向上したことを示す評価結果が記載されている。非特許文献２では、ＳＳＤ内部にシステムオンチップ技術を用いた計算モジュールを配置することで、ＣＰＵを用いた技術と比較して、エネルギー効率が向上したことを示す評価結果が記載されている。【０００５】
特許文献１では、データの記憶および検索のデバイスおよび装置が開示されている。特許文献１のデバイスは、目標データを保管するように構成された少なくとも１つの磁気記憶媒体と、少なくとも１つの再構成可能論理デバイスとを含み、この再構成可能論理デバイスは、少なくとも１つの磁気記憶媒体に結合されたＦＰＧＡを含み、そこから目標データの連続ストリームを読み取るように構成され、テンプレートを用いてまたは検索のタイプおよび検索されるデータに合うように望みに合わせて構成される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第６，７１１，５５８号明細書
【非特許文献】
【０００７】
【非特許文献１】Ｊａｅｙｏｕｎｇ  Ｄｏ、  Ｙａｎｇ−Ｓｕｋ  Ｋｅｅ、  Ｊｉｇｎｅｓｈ  Ｍ．Ｐａｔｅｌ、  Ｃｈａｎｉｋ  Ｐａｒｋ、  Ｋｗａｎｇｈｙｕｎ  Ｐａｒｋ、  Ｄａｖｉｄ  Ｊ．  ＤｅＷｉｔｔ、“Ｑｕｅｒｙ  Ｐｒｏｃｅｓｓｉｎｇ  ｏｎ  Ｓｍａｒｔ  ＳＳＤｓ：  Ｏｐｐｏｒｔｕｎｉｔｉｅｓ  ａｎｄ  Ｃｈａｌｌｅｎｇｅｓ”、  ＳＩＧＭＯＤ  ２０１３．
【非特許文献２】Ｓｕｎｇｃｈａｎ  Ｋｉｍ、  Ｈｙｕｎｏｋ  Ｏｈ、  Ｃｈａｎｉｋ  Ｐａｒｋ、  Ｓａｎｇｙｅｕｎ  Ｃｈｏ、  Ｓａｎｇ−Ｗｏｎ  Ｌｅｅ、  “Ｆａｓｔ、  Ｅｎｅｒｇｙ  Ｅｆｆｉｃｉｅｎｔ  Ｓｃａｎ  ｉｎｓｉｄｅ  Ｆｌａｓｈ  Ｍｅｍｏｒｙ  ＳＳＤｓ”、  ＡＤＭＳ  ２０１１．
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記非特許文献１及び非特許文献２では、フラッシュモジュールとデータベース演算部の関係が固定的である。このため、フラッシュモジュールまたはデータベース演算部の何れか一方が故障すると使用できない場合があった。また、データベース演算部が主にデータベース処理を行う場合では、条件によってはホスト計算機がデータベース処理を行った方が処理が速い場合もある。例えば、ホスト計算機側にのみインデックスがある部分検索などでは、データベース演算部で処理を行うよりもホスト計算機が処理を行った方が速い場合もある。【０００９】
そこで、本発明は、上記問題点に鑑み点されたもので、フラッシュモジュールとデータベース演算部を備え、冗長性を確保しながらも、データベースの処理性能を向上可能な計算機を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、プロセッサとメモリとを有して、データベースを管理するデータベース管理部を提供する計算機であって、前記計算機は、インタフェースを介して前記プロセッサに接続されたデバイスを有し、前記デバイスは、複数の不揮発性半導体メモリを有し、前記データベースを格納する不揮発性半導体記憶装置と、前記不揮発性半導体記憶装置から前記データベースを読み込んで、前記データベースの演算を行うデータベース演算モジュールと、前記インタフェースと前記不揮発性半導体記憶装置及びデータベース演算モジュールとを接続するスイッチと、を有する。
【発明の効果】
【００１１】
本発明によれば、不揮発性半導体記憶装置とデータベース演算モジュールを分離したデバイスを有する計算機システムにおいて、冗長性を確保しながらも計算機の処理性能を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施例を示し、フラッシュカードを含む計算機システムの一例を示すブロック図である。
【図２】本発明の第１の実施例を示し、データベースマネージメントシステムの一例を示す機能ブロック図である。
【図３】本発明の第１の実施例を示し、表領域管理情報の一例を示す図である。
【図４】本発明の第１の実施例を示し、表構造情報の一例を示す図である。
【図５】本発明の第１の実施例を示し、インデックス管理情報の一例を示す図である。
【図６】本発明の第１の実施例を示し、データベース統計管理情報の一例を示す図である。
【図７】本発明の第１の実施例を示し、データベース演算回路情報の一例を示す図である。
【図８】本発明の第１の実施例を示し、ＳＱＬ文の一例を示す図である。
【図９】本発明の第１の実施例を示し、実行プラン生成部で行われる処理の一例を示すフローチャートである。
【図１０】本発明の第１の実施例を示し、データベース演算コマンドスケジューリング部で行われる処理の一例を示すフローチャートである。
【図１１】本発明の第１の実施例を示し、データベース演算コマンドに含まれる情報の一例を示す図である。
【図１２】本発明の第１の実施例を示し、データベース演算モジュールの一例を示すブロック図である。
【図１３】本発明の第１の実施例を示し、データベース演算モジュールのデータベース演算制御部で行われる処理の一例を示すフローチャートである。
【図１４】本発明の第１の実施例を示し、データベース演算モジュールのデータＲＥＡＤ処理部で行われる処理の一例を示すフローチャートである。
【図１５】本発明の第１の実施例を示し、データベース演算モジュールのデータＲＥＡＤ処理部で行われる処理の他の例を示すフローチャートである。
【図１６】本発明の第１の実施例を示し、データベース演算モジュールのデータベース演算制御部で行われる処理の一例を示すフローチャートである。
【図１７】本発明の第１の実施例を示し、データベース演算モジュールのデータベース演算制御部で行われる処理の一例を示すフローチャートである。
【図１８】本発明の第１の実施例を示し、データベース演算モジュールの一例を示すブロック図である。
【図１９】本発明の第２の実施例を示し、データベース処理を行う計算機システムの一例を示すブロック図である。
【発明を実施するための形態】
【００１３】
以下、本発明の一実施形態について添付図面を用いて説明する。
【実施例１】
【００１４】
図１は本発明のフラッシュカード１０３（ストレージ装置）を含む計算機システムの一例を示すブロック図である。図１に示すように、サーバ装置１０１ではデータベースマネージメントシステム（以下、ＤＢＭＳと称す）１０２が稼働する。【００１５】
ＤＢＭＳ１０２はサーバ装置１０１のメモリ２０にロードされて、ＣＰＵ１０によって実行されるプログラムである。サーバ装置１０１は図示しないネットワークに接続されて、図示しないクライアント計算機からデータベースの処理要求を受信し、データベースの処理結果をクライアント計算機へ応答する。【００１６】
サーバ装置１０１は、データベースのデータを格納するのに加えて、データベース演算を実行可能な演算回路を含むデバイスとしてのフラッシュカード１０３を有する。本発明のフラッシュカード１０３は、データベース処理の支援機能を有するストレージデバイスとして機能する。サーバ装置１０１とフラッシュカード１０３は、インタフェース（図中Ｉ／Ｆ）３０を介して接続される。なお、サーバ装置１０１は、ＤＢＭＳ１０２のプログラムを格納する図示しない記憶装置を有することができる。【００１７】
フラッシュカード１０３は、複数のフラッシュモジュール１０５−１〜１０５−ｎと、複数のデータベース演算モジュール１０８−１〜１０８−ｎと、これらフラッシュモジュール１０５−１〜１０５−ｎとデータベース演算モジュール１０８−１〜１０８−ｎとインタフェース３０を接続するスイッチ１０４を含む。【００１８】
なお、スイッチ１０４は、例えば、ＰＣＩｅｘｐｒｅｓｓやＳＡＳ等に準拠したインタフェース３０に接続される。【００１９】
なお、以下ではフラッシュモジュール１０５−１〜１０５−ｎの総称を添え字のない符号１０５で表示する。また、データベース演算モジュール１０８−１〜１０８−ｎの総称も、添え字のない符号１０８で表示する。他の構成要素についても同様である。【００２０】
スイッチ１０４は、送受信されるデータに記載された送信先に応じて、データの送信先を選択する。サーバ装置１０１は、スイッチ１０４を介してフラッシュモジュール１０５やデータベース演算モジュール１０８と通信を行うことができる。また、スイッチ１０４を介して、フラッシュモジュール１０５とデータベース演算モジュール１０８は通信を行うことができる。【００２１】
フラッシュモジュール１０５は、複数のフラッシュメモリ（図中ＦＭ）１０７と、フラッシュメモリ１０７へのアクセスを制御するフラッシュモジュールコントローラ１０６と、フラッシュモジュールコントローラ１０６等を初期化するリセット回路１０９と、フラッシュモジュール１０５へ供給する電力を制御する電源制御部１１０と、を含む。フラッシュモジュール１０５のリセット回路１０９と電源制御部１１０は、サーバ装置１０１から制御することができる。【００２２】
なお、フラッシュモジュール１０５は、フラッシュメモリ１０７で構成する例を示したが、不揮発性の半導体記憶装置であればよく、フラッシュメモリ１０７に限定されるものではなく、相変化メモリ等を採用することができる。【００２３】
データベース演算モジュール１０８は、ＤＢＭＳ１０２からの指令に基づいて複数のフラッシュモジュール１０５−１〜１０５−ｎから並列的にデータを読み込んでデータベース演算を実行する。データベース演算モジュール１０８の構成については後述する。【００２４】
また、データベース演算モジュール１０８は、ＤＢＭＳ１０２からの指令に基づいて並列してデータベース演算を実行することができる。【００２５】
図２は、ＤＢＭＳ１０２の一例を示す機能ブロック図である。ＤＢＭＳ１０２は、データベース管理部を構成する機能部位として、ユーザ送受信部２０１と、実行プラン生成部２０２と、データベース演算コマンドスケジューリング部２０３と、データベース演算コマンド生成部２０４と、コマンド発行部２０５と、ＳＱＬ処理部２０６とを含む。【００２６】
ＤＢＭＳ１０２は、管理情報として、表領域管理情報２０７と、表構造情報２０８と、インデックス管理情報２０９と、データベース統計情報２１０と、データベース演算モジュール情報２１１とを含む。【００２７】
ＤＢＭＳ１０２の各機能を実現するプログラム等の情報は、不揮発性半導体メモリや、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。【００２８】
ユーザ送受信部２０１は、図示しないクライアント計算機からＳＱＬ文を含むデータベースの処理要求を受け付けて、当該処理要求からＳＱＬ文を抽出して実行プラン生成部２０２へ送信する。また、ユーザ送受信部２０１は、ＳＱＬ処理部２０６またはデータベース演算モジュール１０８から受信したデータベースの処理結果を図示しないクライアント計算機へ送信する。【００２９】
実行プラン生成部２０２は、ユーザ送受信部２０１から受信したＳＱＬ文を解析して、検索処理の場合は、フラッシュカード１０３に格納されたデータベースについて全件検索と部分検索の何れを実行するか決定する。後述するように、実行プラン生成部２０２は、検索対象のデータベースについて、インデックスがフラッシュカード１０３に格納されている場合には部分検索を選択し、インデックスがフラッシュカード１０３に格納されていない場合には全件検索を選択する。【００３０】
実行プラン生成部２０２は、部分検索の場合や更新処理の場合には、ＳＱＬ文をＳＱＬコマンドとしてコマンド発行部２０５へ送信する。一方、全体検索の場合、実行プラン生成部２０２は、データベース演算モジュール１０８が並列的に複数のフラッシュモジュール１０５−１〜１０５−ｎにアクセスしてデータベース演算を実行させるため、ＳＱＬ文をデータベース演算コマンドスケジューリング部２０３へ送信する。【００３１】
データベース演算コマンドスケジューリング部２０３は、実行プラン生成部２０２から受信したＳＱＬ文を解析し、全体検索を並列的に実行させるデータベース演算モジュール１０８の多重度（コマンドの配分数や配分先など）を決定する。データベース演算コマンドスケジューリング部２０３は、全体検索を実行するデータベース演算モジュール１０８と多重度を後述するように決定し、ＳＱＬ文と共にデータベース演算コマンド生成部２０４へ通知する。【００３２】
データベース演算コマンド生成部２０４は、データベース演算コマンドスケジューリング部２０３から受信したスケジューリングから、データベース演算モジュール１０８に実行させるデータベース演算コマンド１１０１を生成し、コマンド発行部２０５へ送信する。【００３３】
コマンド発行部２０５は、データベース演算コマンド生成部２０４から受信したデータベース演算コマンドをデータベース演算モジュール１０８に送信する。また、コマンド発行部２０５は、実行プラン生成部２０２から、インデックスを使用した表の検索を行うことを通知された場合、検索対象の表領域のトップノードアドレス５０３を読み込むＲＥＡＤコマンドを生成して、フラッシュモジュール１０５にＲＥＡＤコマンドを送信する。【００３４】
また、コマンド発行部２０５は、実行プラン生成部２０２から、データベースの更新あるいは追加を行うことを通知された場合、処理対象の表に所定のコマンドを生成して、ＳＱＬ処理部２０６に生成したコマンドを送信し、ＤＢＭＳ１０２でデータベース演算を実行する。【００３５】
ＳＱＬ処理部２０６は、部分検索または更新処理または追加処理のときには、受け付けたコマンドを実行し、フラッシュカード１０３のフラッシュモジュール１０５にアクセスしてデータベース演算を実行する。ＳＱＬ処理部２０６は、データベース演算の結果をユーザ送受信部２０１へ送信する。【００３６】
ユーザ送受信部２０１、実行プラン生成部２０２、データベース演算コマンドスケジューリング部２０３と、データベース演算コマンド生成部２０４と、コマンド発行部２０５とＳＱＬ処理部２０６のＤＢＭＳ１０２の各機能部はプログラムとしてメモリ２０にロードされる。ＣＰＵ１０は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、ＣＰＵ１０は、データベース管理プログラムに従って処理することでＤＢＭＳ１０２として機能する。他のプログラムについても同様である。さらに、ＣＰＵ１０は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。【００３７】
図１２は、データベース演算モジュール１０８−１の一例を示すブロック図である。データベース演算モジュール１０８−１は、所定の処理を実行するＣＰＵ４０と、データやプログラムを格納するメモリ５０と、複数のフラッシュモジュール１０５−１〜１０５−ｎから並列的にデータを読み込むデータＲＥＡＤ処理部６０と、読み込んだデータに対してデータベース演算を実行するデータベース演算回路７０と、ＣＰＵ４０等を初期化するリセット回路９１と、データベース演算モジュール１０８へ供給する電力を制御する電源制御部９２と、を含む。なお、リセット回路９１と電源制御部９２は、サーバ装置１０１から制御することができる。また、データベース演算モジュール１０８−１〜１０８−ｎは同様の構成であるので、以下ではデータベース演算モジュール１０８−１のみについて説明し、重複した説明は省略する。【００３８】
メモリ５０には、データベース演算制御部８１がロードされてＣＰＵ４０によって実行される。また、メモリ５０には、データベース演算制御部８１が管理する領域として、データベース演算コマンド格納領域８２と、ＲＥＡＤデータ格納領域８３−１〜８３−ｎと、データベース演算結果格納領域８４−１、８４−２が設定される。【００３９】
データベース演算結果格納領域８４−１、８４−２はデータベース演算モジュール１０８の多重度に応じて設定され、図１２の例では、多重度が“２”の例を示す。また、ＲＥＡＤデータ格納領域８３−１〜８３−ｎは、フラッシュモジュール１０５−１〜１０５−ｎの数に応じて設定することができる。【００４０】
データベース演算制御部８１は、サーバ装置１０１との通信を行い、データＲＥＡＤ処理部６０とデータベース演算回路７０を制御する。データベース演算制御部８１は、サーバ装置１０１からコマンドを受信すると、当該コマンドをデータベース演算コマンド格納領域８２に格納し、データＲＥＡＤ処理部６０へ送信する。【００４１】
データＲＥＡＤ処理部６０は、受信したデータベース演算コマンドを解析して検索対象のアクセス領域を所定の小領域に分割する。そして、データＲＥＡＤ処理部６０は、分割した小領域に対する複数のＲＥＡＤコマンドを小領域毎に生成してフラッシュモジュール１０５−１〜１０５−ｎに送信して検索対象のデータベースを並列的に読み込む。【００４２】
ここで、データＲＥＡＤ処理部６０は、検索対象の所定のアクセス領域が８Ｍｂｙｔｅの場合、６４の小領域に分割して１つの小領域を１２８Ｋｂｙｔｅとし、当該小領域に対するＲＥＡＤコマンドを生成する。【００４３】
データＲＥＡＤ処理部６０は、読み込みが完了したフラッシュモジュール１０５−１〜１０５−ｎから順次データを受信して、ＲＥＡＤデータ格納領域８３−１〜８３−ｎに順次格納する。データベース演算制御部８１は、読み込みが完了したＲＥＡＤデータ格納領域８３−１〜８３−ｎをデータベース演算回路７０へ通知して、データベース演算コマンドを実行させる。【００４４】
データベース演算回路７０は、データベース演算コマンドの処理結果をデータベース演算結果格納領域８４−１または８４−２に格納する。【００４５】
データベース演算制御部８１は、データベースの演算結果が格納されたデータベース演算結果格納領域８４−１、８４−２の内容をサーバ装置１０１のＤＢＭＳ１０２へ送信する。【００４６】
以上の構成により、データベース演算モジュール１０８は、データベース演算コマンドを受信すると検索対象のデータベースのアクセス領域を小領域に分割して複数のＲＥＡＤコマンドを生成する。データＲＥＡＤ処理部６０は１以上のフラッシュモジュール１０５に対して小領域毎のＲＥＡＤコマンドを発行し、並列的にデータの読み込みを実行する。【００４７】
そして、データベース演算制御部８１は、読み込みが完了したアクセス領域の順にデータベース演算回路７０でデータベース演算コマンドを実行させ、データベースの演算結果をサーバ装置１０１のＤＢＭＳ１０２へ送信する。【００４８】
以上の構成により、データＲＥＡＤ処理部６０は複数の小領域毎にフラッシュモジュールで並列的に読み込み処理を行い、さらに、データＲＥＡＤ処理部６０とデータベース演算回路７０を独立して稼働させることで、読み込み処理とデータベースの演算処理を平行して実行することでデータベースの処理性能を向上させることができるのである。【００４９】
図３は、表領域管理情報２０７の一例を示す図である。表領域管理情報２０７は、フラッシュカード１０３に格納されているデータベースの表（テーブル）を管理する情報である。表領域管理情報２０７は、ＤＢＭＳ１０２に生成される。【００５０】
表領域管理情報２０７は、データベースの表の名称を格納する表領域名３０１と、当該表を格納するフラッシュモジュール１０５の名称（または識別子）を格納するデバイス名３０２と、当該フラッシュモジュール１０５に割り当てられた開始アドレス３０３及び終了アドレス３０４がひとつのエントリに含まれる。【００５１】
開始アドレス３０３及び終了アドレス３０４は、フラッシュモジュール１０５に割り当てられたＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）を用いることができる。【００５２】
表領域管理情報２０７は、ＤＢＭＳ１０２によって生成される。ＤＢＭＳ１０２は、起動時などの所定のタイミングで、サーバ装置１０１の図示しないＯＳからデバイス名３０２毎に開始アドレス３０３と、終了アドレス３０４を取得することで表領域管理情報２０７を生成することができる。【００５３】
図４は、表構造情報２０８の一例を示す図である。表構造情報２０８は、表の名称を格納する表領域名４１０、４２０、４３０と、各表の列（またはフィールド）の名称を格納する列名４１１、４２１、４３１と、各列のデータ形式を格納するデータ形式４１２、４２２、４３２とを含む。【００５４】
図示の例では、表領域名４１０が「ＰＡＲＴ」の表の定義と、表領域名４２０が「ＬＩＮＥＩＴＥＭ」の表の定義と、表領域名４３０が「ＴＥＭＰＯＲＡＲＹ１」の表の定義が格納された例を示している。【００５５】
表構造情報２０８は、ＤＢＭＳ１０２によって生成される。ＤＢＭＳ１０２は、起動時などの所定のタイミングで、フラッシュカード１０３から表領域名４１０、４２０、４３０のデータを参照して各列名（フィールド）の形式を設定し、表構造情報２０８を設定することができる。【００５６】
図５は、インデックス管理情報２０９の一例を示す図である。インデックス管理情報２０９は、インデックスの名称を格納するインデックス名５０１と、当該インデックスを格納するフラッシュモジュール１０５の名称（または識別子）を格納するデバイス名５０２と、フラッシュモジュール１０５上での当該インデックスのルートノードのアドレスを格納するトップノードアドレス５０３がひとつのエントリに含まれる。トップノードアドレス５０３は、フラッシュモジュール１０５に割り当てられたＬＢＡを用いることができる。【００５７】
インデックス管理情報２０９は、ＤＢＭＳ１０２によって生成される。ＤＢＭＳ１０２は、起動時などの所定のタイミングで、サーバ装置１０１の図示しないＯＳからデバイス名５０２毎にインデックス名５０１のルートノードのアドレスを取得することでインデックス管理情報２０９を生成してもよい。あるいは、サーバ装置１０１の図示しない入力装置から、ＤＢＭＳ１０２に対してインデックスの情報を通知するようにしてもよい。【００５８】
図６は、データベース統計情報２１０の一例を示す図である。データベース統計情報２１０は、表の名称を格納する表領域名２１１０、２１２０、２１３０と、各表の行数を格納する行数２１１１、２１２１、２１３１と、各表の平均行長を格納する平均行長２１１２、２１２２、２１３２と、当該表のインデックスの有無を格納するインデックス有無２１１３、２１２３、２１３３と、インデックスが有る場合には当該表に対応するインデックスの名称を格納するインデックス名２１２４、２１３４とを含む。【００５９】
図示の例では、表領域名２１１０が「ＰＡＲＴ」の統計情報と、表領域名２１２０が「ＬＩＮＥＩＴＥＭ」の表の統計情報と、表領域名２１３０が「ＣＵＳＴＯＭＥＲ」の表の統計情報が格納された例を示している。【００６０】
データベース統計情報２１０は、ＤＢＭＳ１０２によって生成される。ＤＢＭＳ１０２は、起動時などの所定のタイミングで、フラッシュカード１０３から表領域名２１１０、２１２０、２１３０のデータを参照して各行数や行長を算出し、データベース統計情報２１０を設定することができる。【００６１】
図７は、データベース演算モジュール情報２１１の一例を示す図である。データベース演算モジュール情報２１１は、データベース演算モジュール１０８の名称（または識別子）を格納するデータベース演算モジュール名７０１と、当該データベース演算モジュール１０８のデバイス名（または識別子）を格納するデバイス名７０２と、当該データベース演算モジュール１０８に割り当てられたフラッシュモジュール１０５の名称（または識別子）を格納する演算対象ドライブ名７０３と、当該データベース演算モジュール１０８のコマンド実行の多重度を格納するコマンド実行多重度７０４とをひとつのエントリに含む。【００６２】
ひとつのデータベース演算モジュール１０８には、１以上のフラッシュモジュール１０５が割り当てられており、演算対象ドライブ名７０３には、１以上のデバイス名が格納される。【００６３】
データベース演算モジュール情報２１１は、サーバ装置１０１の管理者などによって生成される。演算対象ドライブ名７０３については、データベース演算モジュール１０８ごとにアクセスするフラッシュモジュール１０５−１〜１０５−ｎを管理者が割り当てることができる。あるいは、ＤＢＭＳ１０２がデータベース演算モジュール１０８ごとにアクセスするフラッシュモジュール１０５−１〜１０５−ｎを割り当てるようにしてもよい。【００６４】
コマンド実行多重度７０４は、データベース演算モジュール１０８のデータベース演算回路７０で同時に実行可能なデータベース演算コマンドの数を示す。データベース演算モジュール１０８は、コマンド実行多重度７０４に設定された数を超えてデータベース演算コマンドを受け付けたときには、データベース演算コマンドの実行を保留する。【００６５】
図８は、ＳＱＬ文８０１の一例を示す図である。図示の例では、表「ＰＡＲＴ」と「ＬＩＮＥＩＴＥＭ」を検索して結合する処理を示す。サーバ装置１０１のＤＢＭＳ１０２のユーザ送受信部２０１は、図示しないクライアント計算機からＳＱＬ文８０１を受信すると、ＳＱＬ文８０１を実行プラン生成部２０２へ送信してデータベース演算を後述するように実行する。【００６６】
図９は、実行プラン生成部２０２で行われる処理の一例を示すフローチャートである。この処理は、実行プラン生成部２０２が、ユーザ送受信部２０１から検索処理を含むＳＱＬ文８０１を受信したときに実行される。【００６７】
実行プラン生成部２０２は、受信したＳＱＬ文８０１を読み込んで検索対象の表を決定する（Ｓ１）。実行プラン生成部２０２は、受信したＳＱＬ文８０１を読み込んで検索対象の検索条件を決定する（Ｓ２）。【００６８】
次に、実行プラン生成部２０２は、データベース統計情報２１０を参照して、検索対象の表にインデックスが存在するか否かを判定する（Ｓ４）。実行プラン生成部２０２は、検索対象の表にインデックスが存在する場合には、検索の種類が部分検索であると判定し、ステップＳ７へ進む。【００６９】
一方、実行プラン生成部２０２は、検索対象の表にインデックスが存在しない場合には、検索の種類が全体検索であると判定し、ステップＳ５へ進む。【００７０】
ステップＳ５では、実行プラン生成部２０２が、表の検索にデータベース演算モジュール１０８を使用することを決定する。そして、ステップＳ６で実行プラン生成部２０２は、ＳＱＬ文８０１をデータベース演算コマンドスケジューリング部２０３へ通知する。【００７１】
一方、部分検索のステップＳ７では、実行プラン生成部２０２が表の検索にインデックスを使用することを決定する。そして、ステップＳ８で実行プラン生成部２０２は、ＳＱＬ文８０１をコマンド発行部２０５へ通知する。【００７２】
以上の処理によって、ＤＢＭＳ１０２は受信したＳＱＬ文８０１を読み込んで、検索対象の表のインデックスの有無に応じて、部分検索と全体検索のいずれを実行するか決定する。実行プラン生成部２０２は、フラッシュモジュール１０５にインデックスがあればＤＢＭＳ１０２自身がデータベース演算を実行する部分検索を実行するためＳＱＬ文８０１をコマンド発行部２０５へ通知する。【００７３】
一方、実行プラン生成部２０２は、フラッシュモジュール１０５にインデックスがなければデータベース演算モジュール１０８で全体検索を実行させるため、データベース演算コマンドスケジューリング部２０３へＳＱＬ文８０１を通知する。【００７４】
なお、実行プラン生成部２０２は、ユーザ送受信部２０１から検索処理のないＳＱＬ文８０１を受信した場合には、部分検索と同様に、ＳＱＬ文８０１をコマンド発行部２０５へ通知してＤＢＭＳ１０２で処理を実行する。【００７５】
図１０は、データベース演算コマンドスケジューリング部２０３で行われる処理の一例を示すフローチャートである。この処理は、データベース演算コマンドスケジューリング部２０３がＳＱＬ文８０１を受信したときに実行される。【００７６】
データベース演算コマンドスケジューリング部２０３は、ＳＱＬ文８０１を受信すると、表領域管理情報２０７を参照して検索対象の表を格納しているフラッシュモジュール１０５のデバイス名３０２をアクセス先のデバイスとして取得する（Ｓ１１）。【００７７】
また、データベース演算コマンドスケジューリング部２０３は、表領域管理情報２０７を参照してアクセス先のフラッシュモジュール１０５の開始アドレス３０３と、終了アドレス３０４を取得して、読み出す表のサイズを算出する（Ｓ１２）。【００７８】
次に、データベース演算コマンドスケジューリング部２０３は、データベース演算モジュール情報２１１を参照して、アクセス先のフラッシュモジュール１０５のデバイス名を演算対象ドライブ名７０３に含むデータベース演算モジュール名７０１を取得し、データベース演算を実行するデータベース演算モジュール１０８として決定する（Ｓ１３）。【００７９】
ステップＳ１４で、データベース演算コマンドスケジューリング部２０３は、データベース演算モジュール情報２１１を参照して、データベースの読み込み用として決定されたデータベース演算モジュール１０８のコマンド実行多重度７０４を取得する。そして、データベース演算コマンドスケジューリング部２０３は、コマンド実行多重度７０４に基づいて、データベース処理に要する時間（実行時間）が最短となるようにデータベース演算コマンドのスケジューリングを決定する。【００８０】
ここで、データベース処理の実行時間は、複数のデータベース演算モジュール１０８でデータベースの読み込み処理と、データベース演算を行う際に、読み込み処理とデータベース演算に要する時間の和である実行時間が、各データベース演算モジュール１０８で等しいか、あるいはほぼ等しいときにデータベース処理の実行時間が最短となる。【００８１】
ステップＳ１５では、データベース演算コマンドスケジューリング部２０３が、データベース演算モジュール１０８毎に決定したデータベース演算のスケジューリングをデータベース演算コマンド生成部２０４へ通知する。【００８２】
以上の処理により、データベースの全体検索を行う際には、１以上のデータベース演算モジュール１０８によってデータベース処理（読み込み処理＋データベース演算）を実行するデータベース演算がスケジュールされる。【００８３】
上記スケジューリングは、データベース演算コマンドスケジューリング部２０３が受け付けたＳＱＬ文８０１に基づいて生成され、アクセス対象のデータベース演算モジュール１０８と、アクセス対象の開始アドレス及び終了アドレスと、データベース演算を含む。なお、データベース演算は、後述するように、データ検索条件と、検索条件結合方法と、データ抽出条件と、を含む。【００８４】
ここで、データベース演算コマンドスケジューリング部２０３が生成するスケジューリングは、ＳＱＬ文８０１から検索対象のデータベース演算モジュール１０８を特定し、データベース演算モジュール１０８毎のアクセス範囲を特定する。【００８５】
そして、データベース演算コマンドスケジューリング部２０３は、特定したデータベース演算モジュール１０８毎のアクセス範囲を、所定のアクセス領域（サイズ）毎にスケジューリングを生成する。なお、上記スケジューリングは、データベースが複数のデータベース演算モジュール１０８に跨がる場合には、データベース演算モジュール１０８の数に応じて生成される。【００８６】
本実施例では、一例として、所定のアクセス領域を８Ｍｂｙｔｅとし、データベース演算コマンドスケジューリング部２０３は、アクセス対象のフラッシュモジュール１０５の全体のアクセス範囲に対して、８Ｍｂｙｔｅごとに分割して読み出しのスケジューリングを生成する。【００８７】
なお、データベース演算コマンドスケジューリング部２０３は、フラッシュモジュール１０５の全体のアクセス範囲を複数の所定のアクセス領域に分割した場合、端数の８Ｍｂｙｔｅ未満の領域をスケジューリングすることができる。【００８８】
図１１は、データベース演算コマンド１１０１に含まれる情報の一例を示す図である。データベース演算コマンド生成部２０４は、データベース演算コマンドスケジューリング部２０３から受信したデータベース演算モジュール１０８毎のスケジューリングに基づいてデータベース演算コマンド１１０１を生成して、コマンド発行部２０５へ通知する。【００８９】
データベース演算コマンド１１０１には、コマンドオペレーションコード１１０２と、デバイス名（フラッシュモジュール名）１１０３と、データベース演算開始論理アドレス１１０４と、データベース演算終了論理アドレス１１０５と、データ検索条件１１０６−１〜１１０６−Ｎと、検索条件結合方法１１０７−１〜１１０７−Ｍと、データ抽出条件１１０８−１〜１１０８−Ｌと、データベース行長１１０９が含まれる。【００９０】
コマンドオペレーションコード１１０２は、データベース演算コマンド１１０１であることを示すコードである。デバイス名（フラッシュモジュール名）１１０３には、アクセス対象のフラッシュモジュール１０５−１〜１０５−ｎの識別子が設定される。【００９１】
データベース演算開始論理アドレス１１０４は、データベース演算を開始する論理アドレス（ＬＢＡ）で、アクセス対象のフラッシュモジュール１０５に割り当てられたアドレスが指定される。データベース演算終了論理アドレス１１０５は、データベース演算を終了する論理アドレスで、アクセス対象のフラッシュモジュール１０５に割り当てられたアドレスが指定される。【００９２】
データ検索条件１１０６−１〜１１０６−Ｎは、データベースのデータを検索する条件が設定される。データベースのデータを検索する条件は、比較対象データの格納位置と、比較するデータの値と、比較方法を含む。例えば、データベースのデータの０バイト目から７バイト目に格納されているデータを、比較するデータの値「１０」と比較して、大きいか否かを判定する、といった条件が含まれる。【００９３】
検索条件結合方法１１０７−１〜１１０７−Ｍは、データ検索条件１１０６−１〜１１０６−ＮをＡＮＤやＯＲによって結合する方法が定義される。例えば、検索条件結合方法１１０７−１には、（データ検索条件１）ＡＮＤ（データ検索条件２）ＯＲ（データ検索条件３）といったように、データ検索条件をＡＮＤやＯＲによって結合する方法が含まれる。【００９４】
データ抽出条件１１０８−１〜１１０８−Ｌは、データ検索条件１１０６−１〜１１０６−Ｎと検索条件結合方法１１０７−１〜１１０７−Ｍに合致したデータから、サーバ装置１０１に送信するデータを抽出する条件が設定される。例えば、データ抽出条件１１０８−１には、データベースの０バイト目から７バイト目までを抽出する、といった条件が格納される。データベース行長１１０９は、データベースの一つの行の長さが設定される。【００９５】
なお、ひとつのデータベース演算コマンド１１０１は、１以上のデータ検索条件と、１以上のデータ検索条件結合方法と、１以上のデータ抽出条件を含むことができる。【００９６】
図１３は、データベース演算モジュール１０８のデータベース演算制御部８１で行われる処理の一例を示すフローチャートである。このフローチャートは、データベース演算モジュール１０８がサーバ装置１０１からデータベース演算コマンド１１０１を受信したときに実行される。【００９７】
データベース演算制御部８１は、サーバ装置１０１からデータベース演算コマンド１１０１を受信すると、データベース演算コマンド格納領域８２に格納する（Ｓ２０）。データベース演算制御部８１は、データベース演算モジュール１０８で現在実行中のデータベース演算コマンド１１０１の数が多重度に達しているか否かを判定する（Ｓ２１）。なお、図示の例では、当該データベース演算モジュール１０８の多重度が「２」の場合を示している。なお、データベース演算モジュール１０８の多重度は、データベース演算制御部８１がＤＢＭＳ１０２に問い合わせて、データベース演算モジュール情報２１１からコマンド実行多重度７０４を取得すればよい。【００９８】
現在実行中のデータベース演算コマンド１１０１の数が多重度に達していなければ、ステップＳ２２へ進んでデータベース演算制御部８１は受信したデータベース演算コマンド１１０１をデータＲＥＡＤ処理部６０へ送信し、データベース演算コマンド１１０１の実行を開始する。【００９９】
一方、現在実行中のデータベース演算コマンド１１０１の数が多重度に達していれば、ステップＳ２３へ進んで、データベース演算制御部８１は、新たなデータベース演算コマンド１１０１の実行を保留する。【０１００】
以上の処理によって、データベース演算制御部８１は、サーバ装置１０１からデータベース演算コマンド１１０１を受信すると、当該データベース演算モジュール１０８に設定された多重度以内でデータベース演算コマンド１１０１を実行することができる。【０１０１】
図１４は、データベース演算モジュール１０８のデータＲＥＡＤ処理部６０で行われる処理の一例を示すフローチャートである。このフローチャートは、データＲＥＡＤ処理部６０がデータベース演算制御部８１からデータベース演算コマンド１１０１を受信したときに実行される。本実施例では、検索対象の領域のサイズを上述のように８Ｍｂｙｔｅとし、８ＭＢの検索対象データを１２８ＫＢごとに分割して６４個のＲＥＡＤコマンドを作成して、フラッシュモジュール１０５に送信する。【０１０２】
データＲＥＡＤ処理部６０は、データベース演算制御部８１から受信したデータベース演算コマンド１１０１を解析して、検索対象のデータ領域を特定する。図１１に示したデータベース演算コマンド１１０１にはデバイス名１１０３が含まれており、データＲＥＡＤ処理部６０は、デバイス名１１０３からアクセス対象のフラッシュモジュール１０５−１〜１０５−ｎを特定する（Ｓ３０）。【０１０３】
データＲＥＡＤ処理部６０は、データベース演算コマンド１１０１のデータベース演算開始論理アドレス１１０４〜データベース演算終了論理アドレス１１０５のデータ領域を所定数（例えば、６４）の小領域（例えば、所定の領域が８Ｍｂｙｔｅの場合、１２８Ｋｂｙｔｅ）に分割し、小領域毎にＲＥＡＤコマンドを生成する（Ｓ３１）。【０１０４】
データＲＥＡＤ処理部６０は、ステップＳ３０で特定したフラッシュモジュール１０５に対して、小領域毎に生成した複数のＲＥＡＤコマンドを送信する（Ｓ３２）。【０１０５】
上記処理により、データベース演算コマンド１１０１で指定されたフラッシュモジュール１０５のデータ領域は所定の小領域に分割され、小領域毎のＲＥＡＤコマンドが複数生成されてフラッシュモジュール１０５に送信される。【０１０６】
フラッシュモジュール１０５のフラッシュモジュールコントローラ１０６は、受信した複数のＲＥＡＤコマンドを並列的に実行し、複数のフラッシュメモリ１０７に対して並列的にデータの読み込みを実行する。フラッシュモジュールコントローラ１０６は、読み込みが完了したアクセス領域毎に、読み込んだデータをデータベース演算モジュール１０８へ送信する。【０１０７】
図１５は、データベース演算モジュール１０８のデータＲＥＡＤ処理部６０で行われる処理の一例を示すフローチャートである。この処理は、データベース演算モジュール１０８がフラッシュモジュール１０５からデータを受信したときに実行される。【０１０８】
データＲＥＡＤ処理部６０は、フラッシュモジュール１０５からデータを受信すると、メモリ５０に設定されたＲＥＡＤデータ格納領域８３−１〜８３−ｎに当該データを格納する（Ｓ４０）。【０１０９】
データＲＥＡＤ処理部６０は、ＲＥＡＤデータ格納領域８３に受信したデータを格納すると、データベース演算制御部８１にＲＥＡＤの完了を通知する（Ｓ４１）。このとき、データＲＥＡＤ処理部６０は、データを格納したＲＥＡＤデータ格納領域８３−１〜８３−ｎの識別子またはアドレスを通知する。【０１１０】
以上の処理によって、ＲＥＡＤ処理部６０は、フラッシュモジュール１０５−１〜１０５−ｎから受信したデータを順次ＲＥＡＤデータ格納領域８３−１〜８３−ｎに格納し、受信した順に読み込みが完了したことをデータベース演算制御部８１へ通知する。【０１１１】
図１６は、データベース演算モジュール１０８のデータベース演算制御部８１で行われる処理の一例を示すフローチャートである。この処理は、データベース演算制御部８１がＲＥＡＤ処理部６０から読み込みが完了した通知を受信したときに実行される。【０１１２】
データベース演算制御部８１は、ＲＥＡＤ処理部６０から受信した通知に含まれるＲＥＡＤデータ格納領域８３からデータベースのデータを読み込んで、データベース演算回路７０に当該データを送信する（Ｓ５０）。【０１１３】
これにより、データベース演算回路７０は、ＲＥＡＤコマンドが完了した順序で、受信したデータに対してデータベース演算を実行することができる。そして、データベース演算回路７０は、データベース演算が完了すると演算結果をデータベース演算制御部８１へ送信する。【０１１４】
図１７は、データベース演算モジュール１０８のデータベース演算制御部８１で行われる処理の一例を示すフローチャートである。この処理は、データベース演算制御部８１がデータベース演算回路７０から演算結果を受信したときに実行される。【０１１５】
データベース演算制御部８１は、データベース演算回路７０から演算結果を受信すると、演算結果をデータベース演算結果格納領域８４−１、８４−２に格納し、当該データベース演算の結果をサーバ装置１０１へ送信する（Ｓ６０）。【０１１６】
次に、データベース演算制御部８１は、演算対象のデータベース演算コマンド１１０１の全てのデータについて、データベース演算が完了したか否かを判定する（Ｓ６１）。全てのデータについて、データベース演算が完了していればステップＳ６２へ進む。一方、全てのデータについて、データベース演算が完了していない場合には、当該処理を終了して図１３のステップＳ２１へ戻って上記処理を繰り返す。【０１１７】
ステップＳ６２では、データベース演算制御部８１が、サーバ装置１０１へデータベース演算コマンドの実行が完了したことを通知する。【０１１８】
次に、ステップＳ６３では、データベース演算制御部８１が、データベース演算コマンド格納領域８２に格納されたデータベース演算コマンド１１０１で、実行が完了していないデータベース演算コマンドがあるか否かを判定する。この処理は、図１３のフローチャートのステップＳ２３で、データベース演算制御部８１が、データベース演算コマンド１１０１の実行を保留したデータベース演算コマンドの有無を判定する。【０１１９】
データベース演算制御部８１は、実行を保留しコマンドがある場合には、ステップＳ６４に進み、そうでなければ当該処理を終了する。ステップＳ６４では、保留されていたデータベース演算コマンド１１０１をＲＥＡＤ処理部６０へ送信し、上記処理を実行する。【０１２０】
以上の処理により、データベース演算モジュール１０８は、受信したデータベース演算コマンド１１０１を多重度以内で並列的に実行し、フラッシュモジュール１０５で読み込み処理が完了したデータの順序でデータベース演算を実行する。【０１２１】
データベース演算モジュール１０８のデータＲＥＡＤ処理部６０は、データベース演算コマンド１１０１のアクセス領域を所定の小領域に分割し、小領域（１２８Ｋｂｙｔｅ）毎の複数のＲＥＡＤコマンドを生成してフラッシュモジュール１０５に読み込みを指令する。【０１２２】
フラッシュモジュール１０５は、複数のフラッシュメモリ１０７を有するため、フラッシュモジュールコントローラ１０６は、小領域毎のＲＥＡＤコマンドにより読み込み処理を並列的に行うことが出来る。これにより、フラッシュモジュール１０５内の読み込み処理を高速化して、データベース処理全体を高速化することができる。【０１２３】
データベース演算モジュール１０８は、データベースが複数のフラッシュモジュール１０５に跨がる場合には、フラッシュモジュール１０５毎にＲＥＡＤコマンドを発行することができるので、フラッシュモジュール１０５間の読み込み処理を並列的に実行することで、読み込み処理の高速化を実現できる。【０１２４】
さらに、データベース演算モジュール１０８は、読み込み処理が完了したデータからデータベース演算を実行することができるため、データ待ちによる処理性能の低下を防止してデータベース処理の高速化を図ることができる。【０１２５】
図１８はデータベース演算回路７０の一例を示すブロック図である。図１８に示すように、データベース演算回路７０は、コマンド設定部１２０１と、データ取り出し回路１２０２と、データ検索回路１２０３と、検索条件結合回路１２０４と、データ抽出回路１２０５と、行データ格納メモリ１２０６とを含む。【０１２６】
コマンド設定部１２０１は、データベース演算制御部８１から、データベース演算コマンド１１０１を受信することで処理を開始する。コマンド設定部１２０１は、受信したデータベース演算コマンド１１０１から、データ取り出し回路１２０２、データ検索回路１２０３、検索条件結合回路１２０４、データ抽出回路１２０５、で必要な情報を抽出して、各回路に設定する。【０１２７】
コマンド設定部１２０１は、データベース演算コマンド１１０１からデータ検索条件１１０６−１〜１１０６−Ｎに格納された比較対象の行データのバイト位置を、データ取り出し回路１２０２に設定する。【０１２８】
コマンド設定部１２０１は、データベース演算コマンド１１０１からデータ検索条件１１０６−１〜１１０６−Ｎに格納された行データの比較方法を抽出してデータ検索回路１２０３に設定する。この行データの比較方法とは、例えば、大小の比較条件と比較値の組である。  コマンド設定部１２０１は、データベース演算コマンド１１０１から検索条件結合方法１１０７−１〜１１０７−Ｍを検索条件結合回路１２０４に設定する。ここで、結合方法とは、例えば、（１番目の条件）ＡＮＤ（２番目の条件）ＯＲ（３番目の条件）といったように、検索条件をＡＮＤとＯＲで結合する方法である。【０１２９】
コマンド設定部１２０１は、データベース演算コマンド１１０１からデータ抽出条件１１０８−１〜１１０８−Ｌをデータ抽出回路１２０５に設定する。ここで、データ抽出条件１１０８−１〜１１０８−Ｌとは、例えば、行データの０バイト目から７バイト目、行データの１５バイト目から２３バイト目といったように、行データからデータを取り出す条件を含む。【０１３０】
行データ格納メモリ１２０６は、データベース演算制御部８１から受信した行データを格納する。行データ格納メモリ１２０６は、必要に応じて、データ取り出し回路１２０２とデータ抽出回路１２０５から参照される。【０１３１】
データ取り出し回路１２０２は、データベース演算制御部８１から演算開始の指示を受信すると処理を開始する。データ取り出し回路１２０２は、データベース演算コマンド１１０１のデータ検索条件１１０６−１〜１１０６−Ｎに格納された比較対象の行データのバイト位置に基づいて、行データ格納メモリ１２０６からデータを取り出して、データ検索回路１２０３に送信する。【０１３２】
データ検索回路１２０３は、データ取り出し回路１２０２から受信したデータを、行データの比較方法に基づいて条件の一致不一致を判定し、条件の一致不一致の判定結果を検索条件結合回路１２０４に送信する。【０１３３】
検索条件結合回路１２０４は、検索条件結合方法１１０７−１〜１１０７−Ｍに基づいてデータ検索回路１２０３から受信した判定結果を結合し、判定結果をデータ抽出回路１２０５に送信する。データ抽出回路１２０５は、検索条件結合回路１２０４から受信した判定結果が偽の場合には処理しない。データ抽出回路１２０５は、検索条件結合回路１２０４から受信した判定結果が真の場合、データ抽出条件１１０８−１〜１１０８−Ｌに従って行データ格納メモリ１２０６からデータを抽出して、抽出したデータをデータベース演算制御部８１に送信する。【０１３４】
なお、本実施例では、データベース演算回路７０をハードウェアで実装する例を示したが、ＣＰＵ４０によって実行されるプログラムで実装することも可能である。この場合、ＣＰＵ４０は、メモリ５０にロードしたデータベース演算プログラムを実行して、データベース演算部として機能する。【０１３５】
以上のように、本実施例１によれば、複数のフラッシュメモリ１０７有するフラッシュモジュール１０５に対して、データベース演算モジュール１０８は所定領域の読み込みを、小領域のＲＥＡＤアクセスに分割することで、フラッシュモジュール１０５内の読み込みを高速化することができる。【０１３６】
さらに、データベース演算モジュール１０８は、複数のフラッシュモジュール１０５にＲＥＡＤコマンドを発行することで、フラッシュモジュール１０５間の読み込み処理を高速化することができる。【０１３７】
そして、データベース演算モジュール１０８は、読み込み処理が完了したデータについて順次データベース演算を実行することで、データ待ちによるオーバーヘッドを低減してデータベース演算の高速化を図ることできる。【０１３８】
また、本実施例１によれば、フラッシュモジュール１０５−１〜１０５−ｎとデータベース演算モジュール１０８−１〜１０８−ｎを分離することにより、データベース処理の内容に応じて、ＤＢＭＳ１０２からのコマンドの送信先を、フラッシュモジュール１０５とデータベース演算モジュール１０８から適切に選択することができる。【０１３９】
また、本実施例１によれば、フラッシュモジュール１０５とデータベース演算モジュール１０８が分離した構成において性能を向上するためには、フラッシュモジュール１０５に送信するコマンドと、データベース演算モジュール１０８に送信するコマンドを適切にスケジューリングすることができる。【０１４０】
また、本実施例１によれば、フラッシュモジュール１０５とデータベース演算モジュール１０８を分離し、さらに、フラッシュモジュール１０５とデータベース演算モジュール１０８にそれぞれリセット回路１０９、９１と電源制御部１１０、９２を設ける。これにより、障害が発生したモジュールのリセットや遮断を行うことが可能となり、冗長性を向上させることができる。これにより、冗長性を確保しながらも、データベース処理性能を向上することができる。【０１４１】
なお、上記実施例１では、フラッシュモジュール１０５のアクセス領域に対するＲＥＡＤコマンドが完了すると、データベース演算回路７０でデータベース演算を実行させたが、フラッシュモジュール１０５の小領域に対するＲＥＡＤコマンドが完了すると、データベース演算回路７０でデータベース演算を実行させてもよい。
【実施例２】
【０１４２】
図１９は、第２の実施例を示し、フラッシュカードを含む計算機システムの一例を示すブロック図である。前記実施例１では、１枚のフラッシュカード１０３にスイッチ１０４と、複数のフラッシュモジュール１０５、および、複数のデータベース演算モジュール１０８を配置する例を示した。これに対して、本実施例２では、スイッチ１０４と、フラッシュモジュール１０５、および、データベース演算モジュール１０８を個別のカードとして実装することも可能である。【０１４３】
本実施例２のフラッシュカード１０３−１〜１０３−ｎは、前記実施例１のデータベース演算モジュール１０８とフラッシュモジュール１０５を１対１で実装してスイッチ１０４で接続し、複数のフラッシュカード１０３−１〜１０３−ｎをインタフェース３０に接続したものである。フラッシュカード１０３−１〜１０３−ｎの内部は、前記実施例１と同様であり、スイッチ１０４にデータベース演算モジュール１０８とフラッシュモジュール１０５が接続される。【０１４４】
本実施例２によれば、サーバ装置１０１に搭載するフラッシュカード１０３の数に応じてデータベースの処理性能を調整することができる。【０１４５】
＜まとめ＞
なお、本発明は上記した各実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。【０１４６】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。【０１４７】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【図１】
2016135874.tif 000003
【図２】
2016135874.tif 000004
【図３】
2016135874.tif 000005
【図４】
2016135874.tif 000006
【図５】
2016135874.tif 000007
【図６】
2016135874.tif 000008
【図７】
2016135874.tif 000009
【図８】
2016135874.tif 000010
【図９】
2016135874.tif 000011
【図１０】
2016135874.tif 000012
【図１１】
2016135874.tif 000013
【図１２】
2016135874.tif 000014
【図１３】
2016135874.tif 000015
【図１４】
2016135874.tif 000016
【図１５】
2016135874.tif 000017
【図１６】
2016135874.tif 000018
【図１７】
2016135874.tif 000019
【図１８】
2016135874.tif 000020
【図１９】
2016135874.tif 000021
【国際調査報告】
2016135874.tif 000022
2016135874.tif 000023
2016135874.tif 000024
2016135874.tif 000025