(57)【特許請求の範囲】
【請求項１】
プロセッサとメモリを有する高速化装置であって、
処理要求を受信する通信処理部と、
前記メモリに予め格納した適用条件に前記処理要求の内容が一致するか否かを判定し、前記処理要求の内容が前記適用条件に一致する場合には、前記処理要求に含まれる処理対象のデータを特定し、前記処理要求から前記データを取得するデータ取得要求に変換して前記通信処理部を介して送信する変換処理部と、
前記処理要求を実行する処理高速化部と、を有し、
前記変換処理部は、
前記通信処理部が前記データ取得要求に対するデータを受信すると、前記処理高速化部への入出力フォーマットを予め設定した変換定義に従って前記データを所定の入力データに変換して前記処理高速化部に実行させ、前記処理高速化部から結果を受信すると、前記変換定義に従って前記結果を前記処理要求の実行結果に変換し、前記通信処理部を介して処理要求の送信元へ前記処理要求の実行結果を送信することを特徴とする高速化装置。
【請求項２】
請求項１に記載の高速化装置であって、
前記変換処理部は、
前記処理要求を前記処理高速化部で実行する場合の予測処理時間を算出し、前記処理要求を外部で実行する場合の予測処理時間を算出し、予測処理時間の短い方に前記処理要求の実行を指令することを特徴とする高速化装置。
【請求項３】
請求項２に記載の高速化装置であって、
前記変換処理部は、
前記処理高速化部で実行する場合の予測処理時間を、前記処理要求の内容に応じて予め設定した算出式に基づいて算出し、
前記処理要求を外部で実行する場合の予測処理時間を、前記処理要求の実行にかかる処理時間相当値を問い合わせ、前記処理時間相当値から前記予測処理時間を算出することを特徴とする高速化装置。
【請求項４】
請求項２に記載の高速化装置であって、
前記変換処理部は、
前記処理要求毎に、前記処理高速化部で実行した処理時間と、前記処理要求を外部に実行させた処理時間を、統計情報に格納し、前記処理高速化部または外部で実行する処理要求の予測処理時間を前記統計情報に基づいて算出することを特徴とする高速化装置。
【請求項５】
請求項１に記載の高速化装置であって、
前記データは、検索可能な暗号データで構成され、
前記変換処理部は、
前記データ取得要求に対するデータと、予め設定された検索鍵とを前記処理高速化部へ入力して処理要求を実行させることを特徴とする高速化装置。
【請求項６】
プロセッサとメモリを有する高速化装置と、
データを管理するデータベースサーバと、
前記高速化装置に処理要求を発行するクライアントと、を含む計算機システムであって、
前記高速化装置は、
前記クライアントから処理要求を受信する通信処理部と、
前記メモリに予め格納した適用条件に前記処理要求の内容が一致するか否かを判定し、前記処理要求の内容が前記適用条件に一致する場合には、前記処理要求に含まれる処理対象のデータを特定し、前記処理要求から前記データを取得するデータ取得要求に変換して前記通信処理部を介して前記データベースサーバへ送信する変換処理部と、
前記処理要求を実行する処理高速化部と、を有し、
前記変換処理部は、
前記通信処理部が前記データ取得要求に対するデータを前記データベースサーバから受信すると、前記処理高速化部への入出力フォーマットを予め設定した変換定義に従って前記データを所定の入力データに変換して前記処理高速化部に実行させ、前記処理高速化部から結果を受信すると、前記変換定義に従って前記結果を前記処理要求の実行結果に変換し、前記通信処理部を介して前記クライアントへ前記処理要求の実行結果を送信することを特徴とする計算機システム。
【請求項７】
請求項６に記載の計算機システムであって、
前記変換処理部は、
前記処理要求を前記処理高速化部で実行する場合の予測処理時間を算出し、前記処理要求を前記データベースサーバで実行する場合の予測処理時間を算出し、予測処理時間の短い方に前記処理要求の実行を指令することを特徴とする計算機システム。
【請求項８】
請求項７に記載の計算機システムであって、
前記変換処理部は、
前記処理高速化部で実行する場合の予測処理時間を、処理要求の内容に応じて予め設定した算出式に基づいて算出し、
前記処理要求をデータベースサーバで実行する場合の予測処理時間を、前記処理要求の実行にかかる処理時間相当値を前記データベースサーバに問い合わせ、前記処理時間相当値から前記予測処理時間を算出することを特徴とする計算機システム。
【請求項９】
請求項７に記載の計算機システムであって、
前記変換処理部は、
前記処理要求毎に、前記処理高速化部で実行した処理時間と、前記処理要求を前記データベースサーバに実行させた処理時間を、統計情報に格納し、前記処理高速化部または前記データベースサーバで実行する処理要求の予測処理時間を前記統計情報に基づいて算出することを特徴とする計算機システム。
【請求項１０】
請求項６に記載の計算機システムであって、
前記データは、検索可能な暗号データで構成され、
前記変換処理部は、
前記データ取得要求に対するデータと、予め設定された検索鍵とを前記処理高速化部へ入力して処理要求を実行させることを特徴とする計算機システム。
【請求項１１】
プロセッサとメモリを有する計算機でデータを処理するデータ処理方法であって、
前記プロセッサが、処理要求を受信する第１のステップと、
前記プロセッサが、前記メモリに予め格納した適用条件に前記処理要求の内容が一致するか否かを判定する第２のステップと、
前記プロセッサが、前記処理要求の内容が前記適用条件に一致する場合には、前記処理要求に含まれる処理対象のデータを特定し、前記処理要求から前記データを取得するデータ取得要求に変換してから送信する第３のステップと、
前記プロセッサが、前記計算機の処理高速化部に前記処理要求を実行させる第４のステップと、を含み、
前記第３のステップは、
前記データ取得要求に対するデータを受信すると、前記処理高速化部への入出力フォーマットを予め設定した変換定義に従って前記データを所定の入力データに変換して前記処理高速化部に実行させるステップと、
前記処理高速化部から結果を受信すると、前記変換定義に従って前記結果を前記処理要求の実行結果に変換し、処理要求の送信元へ前記処理要求の実行結果を送信するステップと、
を含むことを特徴とするデータ処理方法。
【請求項１２】
請求項１１に記載のデータ処理方法であって、
前記第３のステップは、
前記処理要求を前記処理高速化部で実行する場合の予測処理時間を算出するステップと、
前記処理要求を外部で実行する場合の予測処理時間を算出するステップと、
前記予測処理時間の短い方に前記処理要求の実行を指令するステップと、
を含むことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース処理等を高速化する計算機システムに関する。
【背景技術】
【０００２】
近年、様々な機器により大量のデータが生成され、今後より一層、データが生成されることが想定される。こうした大量のデータを計算機で収集し、分析することで新たな知見を獲得し、ビジネスに活かそうという試みが広まっている。
【０００３】
しかし、爆発的に増えるデータを決められた時間内に分析するためには、より多くの計算機リソースが必要であり、その処理方法にも工夫が必要になる。計算機で生成されるデータの多くはデータベースに蓄積されて、様々なアプリケーションから利用される。
【０００４】
より効率的にデータベースを活用する方法として、ユーザがデータベースに独自に処理を追加できるＵＤＦ(User Defined Function)をコプロセッサで行う方法（特許文献１）や、複数のリレーショナルデータベース間のＪｏｉｎ処理を工夫して高速化する方法（特許文献２）などが知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第５８１４９８９号公報
【特許文献２】特開２０１４−２１１６７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、上記従来例はデータベース側、あるいはデータベース側とクライアント側の両方を拡張するする必要があり、既に稼働している環境に適用するのが難しいという課題があった。また、上記ＵＤＦで実装した処理や、ＳＱＬのＪｏｉｎ処理などでは、特定の処理しか高速化できないという制約があった。
【０００７】
そこで本発明は、上記問題点に鑑みてなされたもので、既存のデータベースを変更することなく処理の高速化を実現することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、プロセッサとメモリを有する高速化装置であって、処理要求を受信する通信処理部と、前記メモリに予め格納した適用条件に前記処理要求の内容が一致するか否かを判定し、前記処理要求の内容が前記適用条件に一致する場合には、前記処理要求に含まれる処理対象のデータを特定し、前記処理要求から前記データを取得するデータ取得要求に変換して前記通信処理部を介して送信する変換処理部と、前記処理要求を実行する処理高速化部と、を有し、前記変換処理部は、前記通信処理部が前記データ取得要求に対するデータを受信すると、前記処理高速化部への入出力フォーマットを予め設定した変換定義に従って前記データを所定の入力データに変換して前記処理高速化部に実行させ、前記処理高速化部から結果を受信すると、前記変換定義に従って前記結果を前記処理要求の実行結果に変換し、前記通信処理部を介して処理要求の送信元へ前記処理要求の実行結果を送信する。
【発明の効果】
【０００９】
したがって、本発明によれば、大量データのデータ分析などの処理負荷が重い演算を処理高速化部で実行することができ、処理時間の短縮や作業能率の向上を実現できる。また、高速化装置は既存環境の外部に追加する構成であるため、既存の計算機システムに影響を与えない。このため、既存の計算機システムにも容易に適用可能である。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施例を示し、計算機システムの一例を示すブロック図である。
【図２】本発明の第１の実施例を示し、計算機システムの機能の一例を示すブロック図である。
【図３】本発明の第１の実施例を示し、適用条件の一例を示す図である。
【図４】本発明の第１の実施例を示し、変換定義の一例を示す図である。
【図５】本発明の第１の実施例を示し、処理要求を高速化する処理の一例を示すアクティビティ図である。
【図６】本発明の第２の実施例を示し、計算機システムの機能の一例を示すブロック図である。
【図７】本発明の第２の実施例を示し、登録時間および処理時間算出式を保持した変換定義の一例を示す図である。
【図８】本発明の第２の実施例を示し、予測処理時間を活用する処理の一例を示すアクティビティ図である。
【図９】本発明の第３の実施例を示し、計算機システムの機能の一例を示すブロック図である。
【図１０】本発明の第３の実施例を示し、統計情報の一例を示す図である。
【図１１】本発明の第３の実施例を示し、統計情報を利用する処理の一例を示すアクティビティ図である。
【図１２】本発明の第４の実施例を示し、計算機システムの機能の一例を示すブロック図である。
【図１３】本発明の第４の実施例を示し、処理の一例を示すアクティビティ図である。
【図１４】本発明の第５の実施例を示し、暗号データ検索システムの一例を示すブロック図である。
【図１５】本発明の第５の実施例を示し、処理の一例を示すシーケンス図である。
【発明を実施するための形態】
【００１１】
以下、図面を用いて本発明の実施例を説明する。なお、本発明が本実施例に限定されるものではない。
【実施例１】
【００１２】
図１は、本発明を実現する計算機システムの全体構成を示すブロック図である。計算機システムは大きく、データベースに処理を要求するクライアント１００と、データの管理を行うデータベースサーバ２００と、データベース処理を高速化する高速化装置１０００およびこれらを接続するネットワーク３００で構成される。
【００１３】
クライアント１００は、プロセッサ１０１とメモリ１０２と通信処理部１２０を含む計算機で、メモリ０２にはデータベースへの処理を依頼するアプリケーション１１０がロードされてプロセッサ１０１によって実行される。アプリケーション１１０は、データベースサーバ２００のベンダが提供する独自のインタフェースや、アプリケーションの実装言語に用意されたデータベースアクセスインタフェースを利用して、データベースサーバ２００に対してデータ処理を依頼する。本実施例１では、アプリケーション１１０が要求した処理は通信処理部１２０からネットワーク３００及び高速化装置１０００を介して、データベースサーバ２００に通知される。
【００１４】
データベースサーバ２００は、プロセッサ２０１と、メモリ２０２とデータ蓄積部２１０と通信処理部２３０を含む計算機である。メモリ２０２には、処理制御部２２０がロードされてプロセッサ２０１によって実行される。
【００１５】
データベースサーバ２００は、クライアント１００からの処理要求を受け取り、処理制御部２２０がＨＤＤやＳＳＤなどで構成されるデータ蓄積部２１０に格納されたデータ（テーブル２４０）の読み込み、書き込み、演算を実行してその処理結果を応答する。
【００１６】
データベースサーバ２００の処理制御部２２０は、具体的にはＯｒａｃｌｅ（登録商標）  ＤａｔａｂａｓｅやＰｏｓｔｇｒｅＳＱＬなどのＤＢＭＳ（ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）に相当する。
【００１７】
本実施例１は、クライアント１００とデータベースサーバ２００の通信を、高速化装置１０００を介して行うことで実現する。高速化装置１０００は、クライアント１００からの処理要求を解析してデータベースサーバ２００で実行していた処理を高速に実行し、クライアント１００が要求した処理の応答時間の削減を実現する。
【００１８】
高速化装置１０００は、プロセッサ１００１と、メモリ１００２と、クライアント１００およびデータベースサーバ２００と通信するための通信処理部１１００を有し、クライアント１００からの処理要求の内容を解析してその処理方法を判断して変更する変換処理部１２００と、特定した処理をＧＰＵ（Graphics Processing Unit）やＦＰＧＡ（field-programmable gate array）等のハードウェアアクセラレータで高速に処理する機能を含む処理高速化部１５００を有する。
【００１９】
変換処理部１２００の各機能部はプログラムとしてメモリ１００２にロードされる。プロセッサ１００１は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、プロセッサ１００１は、変換処理プログラムに従って処理することで変換処理部１２００として機能する。他のプログラムについても同様である。さらに、プロセッサ１００１は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
【００２０】
変換処理部１２００の各機能を実現するプログラム、テーブル等の情報は、ストレージサブシステムや不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【００２１】
クライアント１００と、データベースサーバ２００と、高速化装置１０００は、それぞれネットワーク３００を介して通信する。ネットワーク３００は、ひとつの機器内のシステムバスなどの内部ネットワークであってもよいし、インターネットなどの広域ネットワークであってもよい。
【００２２】
以下、具体例として、クライアント１００からデータベースサーバ２００への処理要求としてＳＱＬを含む場合の処理高速化方法について以下に説明する。これは本発明の実施例が、データベースサーバ２００がＳＱＬを処理するリレーショナルデータベースであることを限定するものではない。
【００２３】
図２は本実施例における高速化装置１０００の機能の詳細を示すブロック図である。変換処理部１２００はクライアント１００との通信を処理するクライアント通信処理部１２１０と、データベースサーバ２００との通信を処理するデータベース通信部１２２０と、クライアント１００からの処理要求の内容を解析し、高速化処理の要否を判断して実行する高速処理制御部１２３０と、処理高速化部１５００に処理を依頼してその処理結果を受け取る高速化処理管理部１２４０を有し、高速処理制御部１２３０が高速化処理の要否判断時に参照する適用条件１２５０と変換定義１２６０を保持する。
【００２４】
高速処理制御部１２３０は、クライアント１００から受け取った処理要求から式や関数を検出し、それらが高速化可能かどうか判断する。ここで、式とは例えばＳＱＬであればｊｏｉｎやｏｒｄｅｒ  ｂｙなどのデータベースに対するデータ操作要求、またはテーブル、カラム、値そのものなどの処理実行時に参照する情報全般のことである。
【００２５】
処理高速化部１５００は、指定された処理を実行する処理実行部１５１０と変換処理部１２００から指示される高速化処理を管理する登録処理管理部１５２０を有する。
【００２６】
図３は、適用条件１２５０の一実施例を示す。図４は、変換定義１２６０の一実施例を示す。
【００２７】
適用条件１２５０には、高速処理変換対象  となる式や関数と、その対象が通知された際に高速化可否を判断するための条件を高速化装置１０００のユーザ（または管理者）が登録する。図３の例では、適用条件１２５０は変換対象処理１２５１と、適用条件の項目１２５２と、適用条件の値１２５３がひとつのエントリに含まれる。
【００２８】
図４の変換定義１２６０は、変換対象処理１２６１と、クライアント１００から通知された処理要求（本実施例１ではＳＱＬ文）のＳＱＬ変換方法１２６２と、処理高速化部１５００で実際に実行する処理の名称を格納する高速化処理１２６３と、この処理高速化部１５００に通知するデータフォーマットを設定するデータ構造１２６４と、処理高速化部１５００から受け取るデータフォーマットを設定するデータ構造１２６５とを、高速化装置１０００のユーザ（または管理者）が予め登録しておく。
【００２９】
変換定義１２６０は、処理高速化部１５００へのデータの入出力フォーマットの変換定義（データ構造など）を含み、変換処理部１２００は、変換定義１２６０に従って、データベースサーバ２００からデータを変換して処理高速化部１５００へ入力する。また、変換処理部１２００は、処理高速化部１５００の出力を変換定義１２６０に従って処理結果に変換する。
【００３０】
これらの情報を使って、高速化装置１０００はデータベースサーバ２００で実行される処理の高速化可否を判断し、高速化が可能であれば、実際に処理高速化部１５００で処理を実行して処理結果をクライアント１００に応答する。この具体的な処理の一例をアクティビティ図で表現したものが図５である。以下、例としてクライアント１００が適用条件１２５０を満たした「ｓｅｌｅｃｔ  ｆｕｎｃＡ（ｃ１，ｃ２，ｃ３）  ｆｒｏｍ  ｔａｂｌｅＤ」という「ｆｕｎｃＡ」が含まれるＳＱＬ文を通知した際に実行する変換定義について述べる。
【００３１】
クライアント１００はデータベースサーバ２００で処理したい内容、本実施例１では「ｓｅｌｅｃｔ  ｆｕｎｃＡ（ｃ１，ｃ２，ｃ３）  ｆｒｏｍ  ｔａｂｌｅＤ」を高速化装置１０００に通知する。この処理要求を受け取った高速化装置１０００のクライアント通信処理部１１２１０は、変換処理部１２００に受け取った処理要求を通知し、変換処理部１２００の高速処理制御部１２３０は処理要求に含まれるＳＱＬ文を解析する（ステップＳ１０００）。
【００３２】
クライアント通信処理部１２１０から処理要求に含まれるＳＱＬ文字列を受け取った高速処理制御部１２３０は、ＳＱＬ文から式および関数を検出して、ｆｕｎｃＡが利用されていること、ｔａｂｌｅＤのｃ１、ｃ２、ｃ３のカラムをｆｕｎｃＡの引数として利用することなどを検出する。
【００３３】
高速処理制御部１２３０は、検出した処理要求の内容を元に、適用条件１２５０を検索する（ステップＳ１１００）。高速処理制御部１２３０は、適用条件１２５０の変換対象処理１２５１のうち、処理要求の内容が一致するエントリを判定する。高速処理制御部１２３０は、適用条件１２５０には処理要求の内容「ｆｕｎｃＡ」に関する条件として「ｔａｂｌｅＤ」を利用しているエントリが登録されており、本実施例１のＳＱＬ文はこの適用条件１２５０を満たし、処理高速化部１５００で処理を実行することが有効と判定する。
【００３４】
なお、実装上は登録される変換対象処理１２５１の数は変換定義１２６０の方が適用条件１２５０よりも少なくなることが予想されるため、変換定義１２６０を検索して対象処理の有無を判定してもよい。
【００３５】
上記判定の結果、高速処理制御部１２３０は、処理高速化部１５００を使用して処理を高速化できると判定し、変換定義１２６０を参照して受け付けたＳＱＬ文を処理高速化部１５００へ入力可能なデータ構造に変換する（ステップＳ１２００〜ステップＳ１６００）。
【００３６】
まず、高速処理制御部１２３０は、変換定義１２６０を参照して、検出した内容が変換対象処理１２６１に存在するか否かを判定する。本実施例１ではＳＱＬ文中の「ｆｕｎｃＡ」が変換対象処理１２６１に含まれるため、該当するＳＱＬ変換方法１２６２を参照する。具体的な変換定義は、図５では「ＳＱＬ変換方法」（１２６２）の欄に定義されており、ＳＱＬ変換方法１２６２には各カラムを取得すると定義されている。この場合、高速処理制御部１２３０は、変換定義１２６０に基づいて処理対象のデータを特定するが、これに限定されるものではなく、処理要求に含まれるＳＱＬ文などから処理対象のデータを特定してもよい。
【００３７】
高速処理制御部１２３０は、変換定義１２６０に基づいて処理要求を、データが格納されているテーブル「ｔａｂｌｅＤ」の「ｃ１」、「ｃ２」、「ｃ３」の各カラムのみをデータベースサーバ２００から取得する処理（データ取得要求）に変換する。つまり、高速処理制御部１２３０は、クライアント１００から受け付けた処理要求を、ｃ１カラムをデータベースサーバ２００から取得するために「ｓｅｌｅｃｔ  ｃ１  ｆｒｏｍ  ｔａｂｌｅＤ」というデータ取得要求に変換して（ステップＳ１２００）、データベースサーバ２００から処理対象のカラムのみを取得する（ステップＳ１３００）。
【００３８】
高速処理制御部１２３０は、カラムｃ２、ｃ３についても同様に処理要求を、データ取得要求に変換してデータベースサーバ２００に処理対象のデータを要求し、データベースサーバ２００からの処理結果を保持する。このように、変換処理部１２００は、データベースサーバ２００のテーブル２４０から処理に必要なデータのみを取得する内容に変換することで、高速化装置１０００の利用時に発生するテーブル２４０のデータ取得処理のオーバーヘッドを削減する。すなわち、変換処理部１２００は、処理対象のテーブル２４０を全て読み込むのではなく、処理対象のカラムのみをテーブル２４０から読み込むことでデータ取得処理に要する時間を低減する。
【００３９】
高速処理制御部１２３０は、上記のようにデータベースサーバ２００から取得したデータを、「処理高速化部に通知するデータ構造」（１２６４）に定義されているデータ構造に変換して図示しない入力領域（例えば、キュー）に格納する。
【００４０】
本実施例１の場合、高速処理制御部１２３０は、カラムｃ１の１行目の情報を８ｂｉｔ幅で入力領域に格納し、その直後にカラムｃ２の１行目の情報を２ｂｉｔ幅で格納し、その後にカラムｃ３の１行目の情報を２ｂｉｔ幅で入力領域に格納する。その後、高速処理制御部１２３０は、４ｂｉｔの空白領域を設けた上で、同様にカラムｃ１、ｃ２、ｃ３の２行目の情報、次に３行目の情報と、順次の読み込んだデータを指定された形式で入力領域に格納する。
【００４１】
こうして変換定義１２６０に基づいて所定の入力フォーマットに変換したデータを入力として、高速化処理管理部１２４０は処理高速化部１５００に「ｆｕｎｃＡ．ｉｍｇ」の実行を指令する（ステップＳ１４００）。「ｆｕｎｃＡ．ｉｍｇ」が実際に利用可能かは登録処理管理部１５２０が判定する。なお、高速化処理管理部１２４０は、処理高速化部１５００の「ｆｕｎｃＡ．ｉｍｇ」が利用不可の場合はエラーを返すなどして処理を中断する。
【００４２】
処理高速化部１５００に依頼した処理の結果は、「処理高速化部からの応答」（１２６５）に定義されているデータ構造（出力フォーマット）で出力される。高速化処理管理部１２４０は、通知された出力を高速処理制御部１２３０に渡す。
【００４３】
高速処理制御部１２３０は処理高速化部１５００の処理結果を、「処理高速化部からの応答」（１２６５）のデータ構造から、アプリケーション１１０への応答として適した形式のデータに変換して（ステップＳ１６００）、データベースサーバ２００からの処理結果としてクライアント１００に返す（ステップＳ１８００）。
【００４４】
高速化処理を具体的に実行するＧＰＵやＦＰＧＡなどの処理高速化部１５００を実現するハードウェアのアクセラレータは、データ操作の読み書きは数バイト単位でしか実行できないという制約が存在する。さらに、そのハードウェアで処理する高速化処理の実装に応じたデータの送受信を行う必要がある。このデータ送受信時のデータ構造を変換定義１２６０のように用意しておくことで、処理高速化部１５００の性能を引き出せるデータ送受信方法を明確にでき、高速処理制御部１２３０が処理高速化部１５００を最適に扱えるようになる。
【００４５】
また、変換定義１２６０として送受信（または入出力）用のデータ定義（１２６４、１２６５）を用意することで、高速処理制御部１２３０と処理高速化部１５００間のデータ送受信処理をフレームワーク化した汎用的な仕組みを構築できる。
【００４６】
なお、処理高速化部１５００の入出力に利用するデータ構造を本実施例１のように定義するのではなく、「ＳＱＬ変換方法」（１２６２）欄の具体的な変換処理方法内容に含めてしまってもよい。また、実際の実装ではテーブル２４０から取得するカラムのデータ型（Ｉｎｔｅｇｅｒ、Ｌｏｎｇ、Ｓｔｒｉｎｇなど）によっても、利用する処理高速化部１５００の高速化処理１２６３や、高速化処理１２６３と変換処理部１２００の間で入出力するデータ構造が異なる場合がある。
【００４７】
変換対象処理１２６１で利用される引数の種類に応じた高速化処理１２６３および入出力のデータ構造（１２６４、１２６５）がある場合は、それに応じた内容を変換定義１２６０Ｂに定義してもよい。実際のデータ構造（１２６４、１２６５）の定義は、例えばＣ言語の構造体定義のように定義し、プログラムとして参照または利用できる形式で格納することができる。
【００４８】
なお、適用条件１２５０でクライアント１００を判定した際に条件を満たさない場合はクライアント１００から要求されたＳＱＬ文をそのままデータベースサーバ２００に通知し、その処理結果を取得する（ステップＳ１７００）。そしてその結果をアプリケーション１１０に返す（ステップＳ１８００）。
【００４９】
このように、クライアント１００から通知された処理要求のうち、適用条件１２５０を満たす処理要求を変換処理部１２００でデータを取得する要求に変換して、処理に必要な情報だけをデータベースサーバ２００から取得し、高速化装置１０００で特定の処理を高速実行できる処理高速化部１５００にてデータベースサーバ２００に代わって処理を実行する。
【００５０】
本実施例１の高速化装置１０００により、データベースサーバ２００で実行していた処理を高速化でき、処理高速化部１５００で実行する処理数が増えれば増えるほど、データベースサーバ２００で処理をするよりもより高速に結果を応答することができる。
【実施例２】
【００５１】
図６は、第２の実施例を示し、計算機システムの機能の一例を示すブロック図である。実施例２は、前記図２に示した高速化装置１０００の変換処理部１２００に、ハードウェアコンフィグレーション１２６８や処理時間などの情報が加わった変換定義１２６０Ｂとし、補足情報１２７０を加えたもので、その他の構成は前記実施例１と同様である。
【００５２】
補足情報１２７０は、計算機システムに固定的な情報や、計算機システムを実環境にデプロイした際に明確になる情報を記録する。例えば、クライアント１００、データベースサーバ２００、高速化装置１０００が利用できるネットワーク３００の通信帯域や通信速度、データベースサーバ２００内に格納されたテーブル２４０のサイズやデータ量のようなほぼ更新が不要な情報などの、静的あるいはほぼ静的な情報などを保持する。これらの情報は動的に取得することも可能であるが、このように別途情報を保持することで問い合わせ処理を削減することができる。
【００５３】
図７は変換定義１２６０Ｂの一例を示す図である。変換定義１２６０Ｂは、前記実施例１の図４に示した変換定義１２６０に、登録時間１２６６と処理時間算出式１２６７を追加したものであり、その他の構成は前記実施例１と同様である。
【００５４】
変換定義１２６０Ｂには、高速化処理を実際に処理高速化部１５００で利用できるよう準備するための時間（登録時間１２６６）、実際に処理高速化部１５００で実行する処理に要する時間を算出するための処理時間算出式１２６７の情報を保持する。なお、他のデータ入出力のデータ構造（１２６４、１２６５）などの情報は前記実施例１の変換定義１２６０と同様であり、図７では図示を省略している。
【００５５】
また、前記実施例１の変換定義１２６０では変換処理部１２００から通知された高速化処理の存在を判定するのみであったが、本実施例２では、変換処理部１２００から処理高速化部１５００に処理を依頼した高速化処理１２６３が処理高速化部１５００に存在しない場合は、変換処理部１２００はハードウェアコンフィグレーション１２６８から高速化処理１２６３のイメージ（または設定）を読み込んで新規に処理高速化部１５００に登録する。
【００５６】
処理高速化部１５００に高速化処理１２６３を登録処理に要する処理時間が、変換定義１２６０Ｂの「登録時間」（１２６６）に相当する。処理高速化部１５００側では登録処理管理部１５２０が、変換処理部１２００の高速化処理管理部１２４０から通知される高速化処理１２６３の情報を管理し、必要に応じて登録済み処理（１２６３）の更新を実施する。
【００５７】
また登録処理管理部１５２０は、変換処理部１２００からの要求に応じて処理実行部１５１０で実行する内容も制御する。この機能により、変換処理部１２００から複数の処理が依頼されても、処理高速化部１５００では登録した高速化処理を切り替えて稼働させることができる。なお、処理高速化部１５００に登録する高速化処理は高速化装置１０００内部で管理しているものだけでなく、ネットワーク３００を介して取得できるものでもよい。
【００５８】
本実施例２では、クライアント１００からの処理要求で適用条件１２５０の条件を満たすものについて、データベースサーバ２００で実行する場合と高速化装置１０００で実行する場合の処理時間を予測し、予測処理時間が短い方で処理を実行する。
【００５９】
このため、基本的な処理のアクティビティ図は前記実施例１の図５の通りであるが、図５に示したステップＳ１１００の「変換条件判定」において、予測処理時間に応じた分岐が生じる点で異なる。図８は、予測処理時間を活用する本実施例２の高速化装置１０００で行われる処理の一例を示すアクティビティ図である。
【００６０】
以下の例では、高速化装置１０００がクライアント１００から「ｓｅｌｅｃｔ  ｆｕｎｃＡ（ｔ１，  ｔ２，  ｔ３）  ｆｒｏｍ  ｔ」というＳＱＬ文を含む処理要求を受け取った場合について、前記実施例１と異なる部分の処理について説明する。
【００６１】
クライアント１００から要求された処理を解析して適用条件１２５０を検索した結果、変換処理部１２００は変換対象処理１２６１に登録されている「ｆｕｎｃＡ」を検出する（ステップＳ１１１０）。
【００６２】
図３に示した適用条件１２５０には２つの条件があり、このＳＱＬは「処理コストが５０００以上」という条件に一致する可能性がある。このため、変換処理部１２００は処理コストを算出する。
【００６３】
ここで、「処理コスト」はデータベースサーバ２００が事前に見積もる処理量（または処理量相当値）である。データベースサーバ２００の処理制御部２２０として機能する各種ＤＢＭＳには、通知されたＳＱＬ文に対して実際にＤＢＭＳ内部で実行する処理計画とその予測処理量を予測した値を返す機能がある。「処理コスト」とは、この予測処理量のことである。
【００６４】
変換処理部１２００は、データベースサーバ２００に処理コストを問い合わせるため、クライアント１００から受け取ったＳＱＬ文字列をデータベース通信部１２２０からデータベースサーバ２００に通知する。本実施例２では、ＳＱＬの処理コストが５０００を越えているものとする。各ＤＢＭＳ（処理制御部２２０）から取得できる処理コストは予測処理時間とは異なるものであるが、その数値は処理時間とある程度の相関関係がある。この処理コストから予測処理時間を算出するためのパラメータを補足情報１２７０に記憶しておき、変換処理部１２００はこの情報を使ってデータベースサーバ２００で処理要求を実行した場合の予測処理時間を算出する。
【００６５】
一方、変換処理部１２００は、データベースサーバ２００との予測処理時間を比較するために、高速化装置１０００の処理高速化部１５００を利用した時の予測処理時間も算出する必要がある。
【００６６】
高速化装置１０００で処理を実行した場合、図８のステップＳ１２００からＳ１６００の実行時間がかかるため、これらの処理時間を予測する。本実施例２のＳＱＬでは、まずテーブルｔ（２４０）からｔ１、ｔ２、ｔ３の各カラムを取得する。この処理に要する時間は各カラムのデータ量およびデータベースサーバ２００と高速化装置１０００間でのデータ転送速度から算出できる。取得対象カラムのデータ量は、変換処理部１２００がデータベースサーバ２００に問い合わせる、あるいは事前に補足情報１２７０に登録しておいたものを利用する。
【００６７】
データベースサーバ２００と高速化装置１０００間でのデータ転送速度についても同様である。これらの値を使い、変換処理部１２００ではステップＳ１３００の予測処理時間が算出できる。ステップＳ１４００およびステップＳ１６００の処理に必要な予測処理時間は、高速処理制御部１２３０から高速化処理管理部１２４０を介して処理高速化部１５００にデータを転送する、あるいはその逆方向の通信時間とほぼ等しい。
【００６８】
このため、変換処理部１２００は、ステップＳ１３００で取得した処理対象のデータ量と、変換定義１２６０Ｂで定義される処理結果を格納するデータ構造と、変換処理部１２００と処理高速化部１５００の間のデータ転送速度から算出できる。なお、データ転送速度は動的に判定、または補足情報１２７０に事前に登録したものを参照して取得することができる。ステップＳ１５００の処理時間は、変換処理部１２００が処理回数の情報と変換定義１２６０Ｂの処理時間算出式を使って取得できる（ステップＳ１１５０）。
【００６９】
こうして、変換処理部１２００はデータベースサーバ２００での予測処理時間と、高速化装置１０００での予測処理時間が得られるため、これらを比較し、より短い時間で処理を実行できる方を選択する。
【００７０】
変換処理部１２００では、データベースサーバ２００での処理が速い場合（予測処理時間が高速化装置１０００より小）は、データベースサーバ２００で処理要求を実行させ（ステップＳ１７００）、高速化装置１０００での処理が速い場合（予測処理時間がデータベースサーバ２００より小）は実施例１の場合と同様に高速化装置１０００で処理要求を実行して（ステップＳ１２００〜ステップＳ１６００）、最後にアプリケーションに結果を返す（ステップＳ１８００）。
【００７１】
上記処理により、クライアント１００から要求された処理の内容に応じて、高速化装置１０００では処理時間の短い装置（処理高速化部１５００またはデータベースサーバ２００）を選択して処理要求を実行することで処理を高速化することができる。
【００７２】
なお、本実施例２では、クライアント１００から受け付けた処理要求が、適用条件１２５０を満たし、かつ、予測処理時間が高速化装置１０００の短いときに処理高速化部１５００で処理要求を実行するので、処理時間を最小にすることが可能となる。
【実施例３】
【００７３】
図９は、第３の実施例を示し、計算機システムの機能の一例を示すブロック図である。本実施例３の構成は前記実施例２の高速化装置１０００に統計情報１２８０が追加されており、統計情報を使って高速化処理の利用判断をより的確に行う。その他の構成については前記実施例２と同様である。
【００７４】
図１０は統計情報１２８０の一例を示す図である。統計情報１２８０は、変換対象処理１２８１と、処理高速化１２８２と、変換対象処理が参照する情報１２８３と、予測コスト１２８４と、予測処理時間１２８５と、処理回数１２８６と、実処理時間１２８７とをひとつのエントリに含む。
【００７５】
変換対象処理１２８１は、処理高速化部１５００で実行する処理（関数や命令）を格納する。処理高速化１２８２は、当該エントリの処理で処理高速化部１５００を使用したか否かが格納される。変換対象処理が参照する情報（処理対象情報）１２８３には、変換対象処理１２８１で使用するテーブル２４０とカラムなどが格納される。
【００７６】
予測コスト１２８４には、処理対象情報１２８３で変換対象処理１２８１の処理をデータベースサーバ２００で実行した場合の処理コストが格納される。この予測コスト１２８４には、変換処理部１２００がデータベースサーバ２００に問い合わせた処理コストが格納される。
【００７７】
予測処理時間１２８５には、前記実施例２と同様に、処理対象情報１２８３について変換対象処理１２８１の処理を処理高速化部１５００で実行する場合の時間を変換処理部１２００で見積もった値が格納される。
【００７８】
処理回数１２８６には、処理高速化部１５００が処理対象情報１２８３を処理するのに必要な処理回数が格納される。この処理回数１２８６は、変換処理部１２００が処理高速化部１５００に処理を実行させた回数を格納することができる。実処理時間１２８７には、処理高速化部１５００が処理対象情報１２８３を処理した時間が格納される。
【００７９】
なお、処理高速化１２８２で「未使用」の場合には、高速化装置１０００の外部となるデータベースサーバ２００で処理要求を実行させたことを示す。一方、処理高速化１２８２が「使用」の場合には、処理高速化部１５００で処理要求を実行させたことを示す。
【００８０】
図１０の例では、変換対象処理１２８１を実際に高速化装置１０００で実行したか（１２８２）、その変換対象処理が参照していた情報（１２８３）は何か、予測コスト１２８４および予測処理時間１２８５、変換対象処理の処理回数１２８６、実際にかかった処理時間１２８７を記録している。その他、実際に処理したカラム数やデータ転送に要した時間など、変換対象処理１２８１に直接関与しない情報も蓄積してもよい。
【００８１】
図１１に本実施例３における高速化装置１０００で行われる処理の一例を示すアクティビティ図を示す。図１１の処理は前記実施例２に示した図８にステップＳ１９００の処理を加え、ステップＳ１１５０の処理で統計情報１２８０を用いる点が前記実施例２と相違する。その他の構成は前記実施例２と同様である。
【００８２】
ステップＳ１１５０では、変換処理部１２００が前記実施例２と同様に予測処理時間を算出するのに加え、予測処理時間の算出時に統計情報１２８０の実処理時間１２８７を参照して、より的確な予測処理時間を算出する（ステップＳ１１５０）。そして、処理結果をアプリケーションに返した後（ステップＳ１８００）、実際に実施した際に得られた情報（処理回数１２８６や実処理時間１２８７）を統計情報１２８０に追加する（ステップＳ１９００）。なお、変換処理部１２００は、統計情報１２８０の実処理時間１２８７の平均値などから予測処理時間を算出してもよい。この場合、処理要求に含まれる変換対象処理１２８１について平均値を算出して、予測処理時間とすればよい。あるいは、前記実施例２と同様に算出した予測処理時間を、実処理時間１２８７の平均値などで補正してもよい。
【００８３】
なお、統計情報１２８０は処理を実行する度に増加していく情報であるため、予測処理時間の算出時（ステップＳ１１５０）において、その情報全てを参照して利用すると処理時間がかかることが予想される。この問題を回避するため、予測処理時間の算出時に利用する統計情報を、統計情報更新時（ステップＳ１９００）に補足情報１２７０に記録しておいてもよい。
【００８４】
さらに、変換処理部１２００は、得られた統計情報１２８０を元に、適用条件１２５０を更新してもよい。この更新処理により、ユーザが適用条件１２５０としてかなり幅を有する設定をしている場合や、誤った設定をしている場合でも、適切に高速な処理を選択できるようになる。また、統計情報の収集は、クライアント１００からの処理要求に応じて実行するだけでなく、高速化装置１０００が独自に処理を実行して収集してもよい。
【００８５】
また、高速化装置１０００は統計情報１２８０を保持しているため、計算機システム全体として稼働率が低い時間帯を特定することができる。稼働率が低い時間帯に統計情報１２８０を取得する処理を実行することで、計算機システム全体に与える影響を抑えながら情報取得することができる。
【実施例４】
【００８６】
図１２は、第４の実施例を示し、計算機システムの機能の一例を示すブロック図である。本実施例４は、高速化装置１０００がデータベースサーバ２００に論理的に内包されている例を示す。本実施例４では、前記実施例３の構成に加えて、データベースサーバ２００と高速化装置１０００がインターコネクト３５０を介して接続され、さらに、データベースサーバ２００の処理制御部２２０には、実行計画構築部２２１と、処理実行部２２２と、データ操作部２２３が含まれる。その他の構成については前記実施例３と同様である。インターコネクト３５０は、例えば、ＰＣＩｅｘｐｒｅｓｓで構成され、変換処理部１２００は、インターコネクト３５０を介してテーブル２４０のデータを読み込む。
【００８７】
本実施例４では、クライアント１００からの処理要求は直接データベースサーバ２００に通知され、データベースサーバ２００の処理制御部２２０が必要に応じて高速化装置１０００を利用する。このため、データベースサーバ２００内部の処理制御部２２０が高速化装置１０００と直接通信を行う。この通信は、ネットワーク３００を経由してもよいし、インターコネクト３５０を経由してもよい。
【００８８】
通常のデータベース処理では、クライアント１００から処理要求を受け取ったデータベースサーバ２００は、処理制御部２２０内の実行計画構築部２２１が処理要求の内容を解析して実行計画を生成する。そして、処理実行部２２２が実行計画を実施してデータ操作部２２３にデータアクセスを指示して処理を実現する。
【００８９】
本実施例４で行われる処理の一例を示すアクティビティ図を図１３に示す。処理の内容は、前記実施例１〜３と同様であるがデータベースサーバ２００から高速化装置１０００を呼び出す部分が前記実施例１と異なる。
【００９０】
まず、クライアント１００から処理要求を受け取ったデータベースサーバ２００は、処理制御部２２０の実行計画構築部２２１で、処理要求の実行計画を生成し、処理コストを算出する（ステップＳ２０００）。
【００９１】
実行計画結果と処理コストの演算結果を入力として、処理実行部２２２が高速化装置１０００に処理高速化の可否判定を依頼する（ステップＳ１１００）。高速化装置１０００では前記実施例２、３と同様にして、データベースサーバ２００での予測処理時間と、高速化装置１０００での予測処理時間を算出し、予測処理時間が短い装置を選択する。
【００９２】
データベースサーバ２００の予測処理時間が短い（高速化できないまたはオリジナル処理の方が速い）場合には、処理実行部２２２で処理を行う（ステップＳ２７００）。
【００９３】
一方、高速化装置１０００の予測処理時間が短い場合には、実行計画構築部２２１で生成した実行計画を処理実行部２２２で変更し（ステップＳ１２００）、処理高速化部１５００に提供するデータの取得をデータ操作部２２３に依頼する（ステップＳ２３００）。高速化装置１０００の変換処理部１２００は、インターコネクト３５０を介してデータを取得し、処理高速化部１５００で対象の処理を実行する（ステップＳ１５００）。変換処理部１２００は、処理高速化部１５００からの処理結果からアプリケーションに返すデータを生成し（ステップＳ１６００）、データベースサーバ２００の処理実行部２２２に転送し、処理要求の発行元のクライアント１００へ処理の結果を応答する（ステップＳ１８００）。
【００９４】
本実施例４のように高速化装置１０００をデータベースサーバ２００から利用する構成の場合、データベースサーバ２００への依存性は高まる。しかし、処理実行部２２２を入れ替え可能なモジュール構成にすれば、実施例１から３と同等の可搬性を確保することができる。また、データベースサーバ２００と高速化装置１０００を同一機器内に構築する場合、本構成にすることでデータベースサーバ２００から高速化装置１０００間でのデータ送受信の時間を大幅に削減できるため、処理性能を大きく向上させることができる。
【実施例５】
【００９５】
図１４は、第５の実施例を示し、暗号データ検索システムの機能の一例を示すブロック図である。本実施例５は、前記実施例１から実施例４で説明したデータベースを高速化する計算機システムを具体的に利用した例として、検索可能暗号を利用した暗号データ検索システムについて説明する。
【００９６】
検索可能暗号とは、暗号化されたデータを復号せずに検索を可能にする技術である。この技術を利用してデータを暗号化することで、クラウドやデータセンタなどのユーザが直接管理していない外部のデータ蓄積場所を利用しても、データを漏洩させずに検索できる。
【００９７】
なお、本実施例５の暗号データに対する検索処理は、複合はできないが検索可能な鍵を使用する。例えば、トラップドアと呼ばれる特殊な演算を実行するなど、利用する検索可能暗号アルゴリズムに応じた演算を実施することで実現される。本実施例５では、暗号データの検索処理に検索鍵を使用する例について説明する。これらの検索鍵やトラップドアを用いた検索処理では複雑な演算が実行される。また、検索対象が大量になればなるほど、この独自演算の回数が増加するため、より高速に処理することが求められる。
【００９８】
図１４は、前記実施例１から実施例４の構成に加え、具体的に暗号処理を実行するためにクライアント１００に暗号処理部１３０と、処理高速化部１５００内部に検索可能暗号で暗号化されたデータを検索するための暗号データ検索処理１５３０が追加されている。  暗号処理部１３０で平文と暗号文の変換を実施するため、図１４の暗号データ検索システムでは、この暗号処理部１３０より上部は平文が利用できるセキュアな領域であり、これより下部は暗号データしか利用しない非セキュアな領域となる。暗号化や複合化に必要な暗号鍵４００は暗号処理部１３０内に保管されており、データベースサーバ２００及び暗号データ検索処理１５３０には検索時に利用する検索鍵４１０が格納される。暗号鍵４００及び検索鍵４１０は、クライアント１００が指定する暗号化対象に応じて複数存在してもよい。例えば、カラム毎に異なる検索鍵４１０を使用するように設定することもできる。
【００９９】
本暗号データ検索システムにおける、初期化、データ追加、データ検索の処理の一例を示すシーケンス図を図１５に示す。
【０１００】
初期化は、クライアント１００がユーザから指示を受け付けて、高速化装置１０００を介してデータベースサーバ２００にデータ格納場所の準備を実施させる。ＳＱＬの場合であれば、ＣＲＥＡＴＥ  ＴＡＢＬＥを使ってカラム及び格納するデータ型の指示をする等の処理を実行する（ステップＳ２００〜Ｓ２２０）。
【０１０１】
次に、クライアント１００は、暗号データを検索するための処理と、暗号データの検索処理で利用する検索鍵４１０と、暗号データの検索処理を利用する対象カラムや検索鍵４１０とデータベースサーバ２００のテーブル２４０及びカラムを対応付ける情報と、暗号データ検索処理の実行に必要な予測処理時間などの情報の登録を高速化装置１０００に指示する（ステップＳ２３０）。
【０１０２】
高速化装置１０００はクライアント１００から受け取った情報のうち、検索要処理と、検索処理で利用する検索鍵４１０をデータベースサーバ２００に登録する指示を送出し、登録の指示を受け付けたデータベースサーバ２００は、受け付けた情報を登録する（ステップＳ２４０、Ｓ２５０）。
【０１０３】
次に、高速化装置１０００は検索要処理と、利用する検索鍵４１０と、検索鍵４１０に対応付けられた情報とを、適用条件１２５０と、変換定義１２６０及び１２６０Ｂ、補足情報１２７０及び統計情報１２８０に登録し、検索処理の構成を変換処理部１２００のハードウェアコンフィグレーション１２６８または処理高速化部１５００に登録する（ステップＳ２３０）。データベースサーバ２００は、データ格納場所（テーブル２４０）の初期化後に、クライアント１００から受け付けた暗号データ及び検索鍵４１０を登録する（ステップＳ２５０）。
【０１０４】
クライアント１００は、まず、データベースサーバ２００へ格納するデータを検索可能暗号で暗号化し、このデータをデータベースサーバ２００に登録あるいは更新する（ステップＳ３００〜Ｓ３３０）。初期化及びデータ登録の処理において、テーブル初期化（ステップＳ２００）と検索用処理と検索鍵４１０の登録（ステップＳ２５０）、暗号データ登録（ステップＳ３１０）の処理は、高速化装置１０００を介さず、クライアント１００が直接データベースサーバ２００に処理を依頼してもよい。あるいは、必ず高速化装置１０００を利用する場合には、検索用処理と検索鍵４１０の登録処理（ステップＳ２５０）は実行しなくてもよい。
【０１０５】
また、本実施例５では初期化処理の一部として変換対象処理の登録を実施したが（ステップＳ２３０〜Ｓ２６０）、これらの処理は高速化装置１０００として最初に受け付ける検索処理を実行する前までに実行すればよい。
【０１０６】
暗号データを検索する一連の手順がステップＳ４００台の処理である。ここでは、高速化装置１０００の処理高速化部１５００を呼び出す場合の手順を例として説明する。まず、クライアント１００はユーザからの指示を受けて、暗号処理部１３０でデータベースサーバ２００のテーブル２４０に格納された暗号データを検索するための検索クエリを生成する（ステップＳ４００）。クライアント１００は、生成した検索クエリを使って、初期化時に登録した検索処理を呼び出すＳＱＬを生成して高速化装置１０００に処理を依頼する（ステップＳ４１０）。
【０１０７】
処理要求を受けた高速化装置１０００は、依頼された内容を解析して処理高速化を進める（ステップＳ４２０）。まず、高速化装置１０００は、データベースサーバ２００から処理対象の暗号データを取得する指示を送出し（ステップＳ４３０）、処理対象のデータを取得する（Ｓ４４０）。
【０１０８】
処理高速化部１５００や変換処理部１２００に、処理高速化部１５００で高速実行する処理が未登録であれば、この処理対象データの取得時にデータベースサーバ２００から検索処理に必要なデータを取得してもよい。
【０１０９】
取得した暗号データに対して、処理高速化部１５００に登録した検索可能暗号の検索処理を適切な検索鍵４１０を用いて実行し、処理対象データの検索を処理高速化部１５００のハードウェアで高速に実行する（ステップＳ４５０）。なお、変換処理部１２００は、データベースサーバ２００から取得した暗号データと、当該暗号データに対応する検索鍵４１０を処理高速化部１５００へ入力して検索要求を実行させる。
【０１１０】
高速化装置１０００は暗号データの検索結果を処理高速化部１５００から受け付けて、この検索結果をクライアント１００に応答する。検索要求の結果を受信したクライアントは暗号データを復号し、アプリケーション１１０で処理を実行してユーザに応答を返す（ステップＳ４６０）。
【０１１１】
本実施例５では検索可能暗号のデータ検索処理に適用した例を説明した。検索以外にも、暗号データを復号することなく処理する（演算する、分析するなど）様々な暗号技術が提案されている。これらの暗号技術に対しても、各実施例の計算機システムを適用することができる。
【０１１２】
同様に、機械学習などの大量データに対して複雑な演算を実施するシステムに適応可能である。具体的には暗号データ検索（ステップＳ４５０）の処理を、実際に適用する計算機システムに応じた処理に変更することで、本実施例５の構成で処理高速化を実現することができる。
【０１１３】
＜まとめ＞
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
【０１１４】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１１５】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【０１１６】
なお、上記実施例１〜５は、以下のような構成とすることもできる。
【０１１７】
１６．
１５に記載のデータ処理方法であって、
前記第３のステップは、
前記処理高速化部で実行する場合の予測処理時間を、前記処理要求の内容に応じて予め設定した算出式に基づいて算出するステップと、
前記処理要求を外部で実行する場合の予測処理時間を、前記処理要求の実行にかかる処理時間相当値を問い合わせ、前記処理時間相当値から前記予測処理時間を算出するステップと、
を含むことを特徴とするデータ処理方法。
【０１１８】
１７．
１５に記載のデータ処理方法であって、
前記第３のステップは、
前記処理要求毎に、前記処理高速化部で実行した処理時間と、前記処理要求を外部に実行させた処理時間を、統計情報に格納し、前記処理高速化部または外部で実行する処理要求の予測処理時間を前記統計情報に基づいて算出することを特徴とすることを特徴とするデータ処理方法。
【０１１９】
１８．
１４に記載のデータ処理方法であって、
前記データは、検索可能な暗号データで構成され、
前記第３のステップは、
前記データ取得要求に対するデータと、予め設定された検索鍵とを前記処理高速化部へ入力して処理要求を実行させることを特徴とすることを特徴とするデータ処理方法。
【符号の説明】
【０１２０】
１００  クライアント
１１０  アプリケーション
２００  データベース
３００  ネットワーク
１０００  高速化システム
１２００  変換処理部
１２１０  クライアント通信処理部
１２２０  データベース通信部
１２３０  高速処理制御部
１２４０  高速化処理管理部
１２５０  適用条件
１２６０  変換定義
１５００  処理高速化部
１５１０  処理実行部
１５２０  登録処理管理部
【図１】
0006644637.tif 000002
【図２】
0006644637.tif 000003
【図３】
0006644637.tif 000004
【図４】
0006644637.tif 000005
【図５】
0006644637.tif 000006
【図６】
0006644637.tif 000007
【図７】
0006644637.tif 000008
【図８】
0006644637.tif 000009
【図９】
0006644637.tif 000010
【図１０】
0006644637.tif 000011
【図１１】
0006644637.tif 000012
【図１２】
0006644637.tif 000013
【図１３】
0006644637.tif 000014
【図１４】
0006644637.tif 000015
【図１５】
0006644637.tif 000016