(57)【要約】  安全な運用管理と高いデータベース操作処理能力とを併せ持つサーバを用いることなく、データベースからの機微な情報の漏洩を防止できるようにする。中間サーバは、データベースに格納されたデータを暗号化または復号化する暗号処理手段と、データベースへの問い合わせを、暗号処理手段による処理を必要としない第１の問い合わせと暗号処理手段による処理を必要とする第２の問い合わせとに分割する問い合わせ変換手段と、データベースに接続されたデータベースサーバに第１の問い合わせを送出してデータベースサーバから結果を取得するとともに、暗号処理手段を用いて第２の問い合わせを実行する問い合わせ処理手段と、を備える。
2014092180.tif 000002
【特許請求の範囲】
【請求項１】
データベースに格納されたデータを暗号化または復号化する暗号処理手段と、
前記データベースへの問い合わせを、前記暗号処理手段による処理を必要としない第１の問い合わせと前記暗号処理手段による処理を必要とする第２の問い合わせとに分割する問い合わせ変換手段と、
前記データベースに接続されたデータベースサーバに前記第１の問い合わせを送出して該データベースサーバから結果を取得するとともに、前記暗号処理手段を用いて前記第２の問い合わせを実行する問い合わせ処理手段と、を備える、中間サーバ。
【請求項２】
前記問い合わせ変換手段は、前記データベースへの問い合わせに含まれる選択条件を前記暗号処理手段による処理を必要としない第１の選択条件と前記暗号処理手段による処理を必要とする第２の選択条件とに分類し、該問い合わせに含まれるテーブルを該第１の選択条件のみに参照される第１のテーブルとそれ以外の第２のテーブルとに分類するとともに、
前記第１の選択条件および前記第１のテーブルに基づいて前記第１の問い合わせを生成し、前記第２の選択条件および前記第２のテーブルならびに前記データベースサーバから取得した前記第１の問い合わせの結果に基づいて前記第２の問い合わせを生成する、請求項１に記載の中間サーバ。
【請求項３】
前記問い合わせ変換手段は、複数の前記第１のテーブルを前記第１の選択条件に参照されるカラムを有するか否かに応じて分類することで、前記第１の問い合わせをさらに複数の問い合わせに分割し、
前記問い合わせ処理手段は、前記第１の問い合わせを分割して得られた複数の問い合わせを前記データベースサーバに送出し、該複数の問い合わせのそれぞれに対する処理結果を前記データベースサーバから取得する、請求項２に記載の中間サーバ。
【請求項４】
前記第１の問い合わせを前記データベースサーバで処理したときの処理前後におけるデータ量の増減に応じて、前記第１の問い合わせを前記データベースサーバで実行すべきか否かを判定し、前記第１の問い合わせを前記データベースサーバで実行すべきでない場合、前記第１の問い合わせを前記問い合わせ処理手段で実行するための第３の問い合わせに変換する処理分担判定手段を、さらに備え、
前記問い合わせ処理手段は、さらに前記第３の問い合わせを実行する、請求項１ないし３のいずれか１項に記載の中間サーバ。
【請求項５】
前記処理分担判定手段は、前記第１の問い合わせを前記データベースサーバで実行したときの実行後のデータ量が実行前よりも増加する場合、前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定する、請求項４に記載の中間サーバ。
【請求項６】
前記処理分担判定手段は、前記第１の問い合わせを、前記第１のテーブルを前記データベースサーバから取得して実行される第４の問い合わせと、それ以外の第５の問い合わせとに分解することで、該第４の問い合わせと該第５の問い合わせとから成る前記第３の問い合わせを生成し、
前記問い合わせ処理手段は、前記データベースサーバから前記第１のテーブルを取得して前記第４の問い合わせを実行するとともに、前記第５の問い合わせを実行する、請求項５に記載の中間サーバ。
【請求項７】
コンピュータが、データベースへの問い合わせを、暗号化処理および復号化処理を必要としない第１の問い合わせと暗号化処理または復号処理を必要とする第２の問い合わせとに分割する変換工程と、
前記データベースに接続されたデータベースサーバに前記第１の問い合わせを送出して該データベースサーバから結果を取得する取得工程と、
暗号化処理または復号化処理を用いて前記第２の問い合わせを実行する工程と、を含む、データベース問い合わせ処理方法。
【請求項８】
前記変換工程は、前記データベースへの問い合わせに含まれる選択条件を暗号化処理および復号化処理を必要としない第１の選択条件と暗号化処理または復号化処理を必要とする第２の選択条件とに分類し、該問い合わせに含まれるテーブルを該第１の選択条件のみに参照される第１のテーブルとそれ以外の第２のテーブルとに分類する工程と、
前記第１の選択条件および前記第１のテーブルに基づいて前記第１の問い合わせを生成し、前記第２の選択条件および前記第２のテーブルならびに前記データベースサーバから取得した前記第１の問い合わせの結果に基づいて前記第２の問い合わせを生成する工程と、を含む、請求項７に記載のデータベース問い合わせ処理方法。
【請求項９】
前記変換工程において、複数の前記第１のテーブルを前記第１の選択条件に参照されるカラムを有するか否かに応じて分類することで、前記第１の問い合わせをさらに複数の問い合わせに分割し、
前記取得工程において、前記第１の問い合わせを分割して得られた複数の問い合わせを前記データベースサーバに送出し、該複数の問い合わせのそれぞれに対する処理結果を前記データベースサーバから取得する、請求項８に記載のデータベース問い合わせ処理方法。
【請求項１０】
前記第１の問い合わせを前記データベースサーバで処理したときの処理前後におけるデータ量の増減に応じて、前記第１の問い合わせを前記データベースサーバで実行すべきか否かを判定する判定工程と、
前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定された場合、前記第１の問い合わせを第３の問い合わせに変換して実行する工程と、を含む、請求項７ないし９のいずれか１項に記載のデータベース問い合わせ処理方法。
【請求項１１】
前記判定工程において、前記第１の問い合わせを前記データベースサーバで実行したときの実行後のデータ量が実行前よりも増加する場合、前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定する、請求項１０に記載のデータベース問い合わせ処理方法。
【請求項１２】
前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定された場合、前記第１の問い合わせを、前記第１のテーブルを前記データベースサーバから取得して実行される第４の問い合わせと、それ以外の第５の問い合わせとに分解することで、該第４の問い合わせと該第５の問い合わせとから成る前記第３の問い合わせを生成する工程と、
前記データベースサーバから前記第１のテーブルを取得して前記第４の問い合わせを実行するとともに、前記第５の問い合わせを実行する工程と、を含む、請求項１１に記載のデータベース問い合わせ処理方法。
【請求項１３】
データベースへの問い合わせを、暗号化処理および復号化処理を必要としない第１の問い合わせと暗号化処理または復号化処理を必要とする第２の問い合わせとに分割する変換処理と、
前記データベースに接続されたデータベースサーバに前記第１の問い合わせを送出して該データベースサーバから結果を取得する取得処理と、
暗号化処理または復号化処理を用いて前記第２の問い合わせを実行する処理と、をコンピュータに実行させる、プログラム。
【請求項１４】
前記変換処理は、前記データベースへの問い合わせに含まれる選択条件を暗号化処理および復号化処理を必要としない第１の選択条件と暗号化処理または復号化処理を必要とする第２の選択条件とに分類し、該問い合わせに含まれるテーブルを該第１の選択条件のみに参照される第１のテーブルとそれ以外の第２のテーブルとに分類する処理と、
前記第１の選択条件および前記第１のテーブルに基づいて前記第１の問い合わせを生成し、前記第２の選択条件および前記第２のテーブルならびに前記データベースサーバから取得した前記第１の問い合わせの結果に基づいて前記第２の問い合わせを生成する処理と、を含む、請求項１３に記載のプログラム。
【請求項１５】
前記変換処理において、複数の前記第１のテーブルを前記第１の選択条件に参照されるカラムを有するか否かに応じて分類することで、前記第１の問い合わせをさらに複数の問い合わせに分割し、
前記取得処理において、前記第１の問い合わせを分割して得られた複数の問い合わせを前記データベースサーバに送出し、該複数の問い合わせのそれぞれに対する処理結果を前記データベースサーバから取得する、請求項１４に記載のプログラム。
【請求項１６】
前記第１の問い合わせを前記データベースサーバで処理したときの処理前後におけるデータ量の増減に応じて、前記第１の問い合わせを前記データベースサーバで実行すべきか否かを判定する判定処理と、
前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定された場合、前記第１の問い合わせを第３の問い合わせに変換して実行する処理と、を前記コンピュータに実行させる、請求項１３ないし１５のいずれか１項に記載のプログラム。
【請求項１７】
前記判定処理において、前記第１の問い合わせを前記データベースサーバで実行したときの実行後のデータ量が実行前よりも増加する場合、前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定する、請求項１６に記載のプログラム。
【請求項１８】
前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定された場合、前記第１の問い合わせを、前記第１のテーブルを前記データベースサーバから取得して実行される第４の問い合わせと、それ以外の第５の問い合わせとに分解することで、該第４の問い合わせと該第５の問い合わせとから成る前記第３の問い合わせを生成する処理と、
前記データベースサーバから前記第１のテーブルを取得して前記第４の問い合わせを実行するとともに、前記第５の問い合わせを実行する処理と、を前記コンピュータに実行させる、請求項１７に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１２−２７２７９０号（２０１２年１２月１３日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、中間サーバ、データベース問い合わせ処理方法およびプログラムに関し、特に、データベースに格納された機微データ（センシティブデータ）を秘匿する中間サーバ、データベース問い合わせ処理方法およびプログラムに関する。
【背景技術】
【０００２】
図５は、特許文献１に記載されたデータベースシステムの構成を示すブロック図である。図５を参照すると、データベースシステムは、クライアント１０２、サーバ１０４およびデータベース１０６を備えている。また、サーバ１０４は、コマンドインタフェース２０２、コマンドパーサ２０４、コマンド変換器２０６、暗号ユニット２０８、および、データベースインタフェース２１０を備えている。【０００３】
図５に示したデータベースシステムは、以下のように動作することで、データベース１０６内のデータを暗号化して秘匿したまま、データベース問い合わせの処理を行う。【０００４】
クライアント１０２は、ＳＱＬ（Structured Query Language）等の言語で記述されたデータベース操作命令をサーバ１０４に送出する。コマンドインタフェース２０２は、クライアント１０２と通信してデータベース操作命令を受け取る。コマンドパーサ２０４は、コマンドインタフェース２０２が受け取ったデータベース操作命令をパース（解析）して、実行すべき処理の演算子や演算対象のカラム名等を抽出し、解析木を作成する。コマンド変換器２０６は、解析木を調べ、データベース１０６内で暗号化されたカラムが演算対象となっている場合、そのカラムに対する演算を、暗号化や復号等の暗号処理を含むように変換する。サーバ１０４は、このようにして得られた変換結果に従ってデータベース操作を実行する。サーバ１０４は、変換結果が暗号化、復号等の暗号処理を含む場合、暗号ユニット２０８を利用して暗号処理を実行する。【０００５】
また、特許文献２には、暗号化されたデータを含むテーブルを保持するデータベースシステムにおけるクエリ処理が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２００７−５００９１２号公報
【特許文献２】特開２０１０−２２４６５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記の特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明者によってなされたものである。【０００８】
特許文献１に記載されたデータベースシステム（図５）では、安全な運用管理とともに、高いデータベース操作処理能力を併せ持つサーバ１０４が必要とされるという問題がある。【０００９】
その理由は、特許文献１に記載されたデータベースシステムによると、データベース１０６内で暗号化されている機微データの復号、および、復号した平文に対する処理のみならず、データベース１０６内で暗号化されていないデータに対する処理も、サーバ１０４で実行されるからである。【００１０】
また、特許文献２に記載されたデータベース処理方法によると、暗号化されたデータに対するクエリ（問い合わせ）および暗号化されていないデータに対するクエリ（問い合わせ）のいずれも、地図格納装置または地図配信装置で、そのまま処理されることになり、単一のクエリの処理を複数の装置間で処理することで負荷分散を図ることができないという問題がある。【００１１】
そこで、安全な運用管理と高いデータベース操作処理能力とを併せ持つサーバを用いることなく、データベースからの機微な情報の漏洩を防止できるようにすることが要望される。本発明の目的は、かかる要望に寄与するデータベースシステム、データベース問い合わせ処理方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の第１の視点に係る中間サーバは、
データベースに格納されたデータを暗号化または復号化する暗号処理手段と、
前記データベースへの問い合わせを、前記暗号処理手段による処理を必要としない第１の問い合わせと前記暗号処理手段による処理を必要とする第２の問い合わせとに分割する問い合わせ変換手段と、
前記データベースに接続されたデータベースサーバに前記第１の問い合わせを送出して該データベースサーバから結果を取得するとともに、前記暗号処理手段を用いて前記第２の問い合わせを実行する問い合わせ処理手段と、を備える。【００１３】
本発明の第２の視点に係るデータベース問い合わせ処理方法は、
コンピュータが、データベースへの問い合わせを、暗号化処理および復号化処理を必要としない第１の問い合わせと暗号化処理または復号処理を必要とする第２の問い合わせとに分割する変換工程と、
前記データベースに接続されたデータベースサーバに前記第１の問い合わせを送出して該データベースサーバから結果を取得する取得工程と、
暗号化処理または復号化処理を用いて前記第２の問い合わせを実行する工程と、を含む。【００１４】
本発明の第３の視点に係るプログラムは、
データベースへの問い合わせを、暗号化処理および復号化処理を必要としない第１の問い合わせと暗号化処理または復号化処理を必要とする第２の問い合わせとに分割する変換処理と、
前記データベースに接続されたデータベースサーバに前記第１の問い合わせを送出して該データベースサーバから結果を取得する取得処理と、
暗号化処理または復号化処理を用いて前記第２の問い合わせを実行する処理と、をコンピュータに実行させる。
なお、プログラムは、非一時的なコンピュータ可読記録媒体（non-transitory computer-readable storage medium）に記録されたプログラム製品として提供することができる。
【発明の効果】
【００１５】
本発明に係る中間サーバ、データベース問い合わせ処理方法およびプログラムは、安全な運用管理と高いデータベース操作処理能力とを併せ持つサーバを用いることなく、データベースからの機微な情報の漏洩を防止できるようにすることに寄与する。
【図面の簡単な説明】
【００１６】
【図１】第１の実施形態に係るデータベースシステムの構成を一例として示すブロック図である。
【図２】第１の実施形態に係るデータベースシステムの動作を一例として示すフロー図である。
【図３】第１の実施形態に係るデータベースシステムにおける問い合わせ変換手段の動作を一例として示すフロー図である。
【図４】第２の実施形態に係るデータベースシステムの構成を一例として示すプロック図である。
【図５】特許文献１に記載されたデータベースシステムの構成を示すブロック図である。
【発明を実施するための形態】
【００１７】
はじめに、一実施形態の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
【００１８】
図１を参照すると、中間サーバ１１２は、データベース１１６に格納されたデータを暗号化または復号化する暗号処理手段２１４と、データベース１１６への問い合わせを、暗号処理手段２１４による処理を必要としない第１の問い合わせ（非機微問い合わせ）と暗号処理手段２１４による処理を必要とする第２の問い合わせ（機微問い合わせ）とに分割する問い合わせ変換手段２１１と、データベース１１６に接続されたデータベースサーバ１１４に第１の問い合わせ（非機微問い合わせ）を送出してデータベースサーバ１１４から結果を取得するとともに、暗号処理手段２１４を用いて第２の問い合わせ（機微問い合わせ）を実行する問い合わせ処理手段２１２と、を備えている。
【００１９】
また、問い合わせ変換手段２１１は、データベース１１６への問い合わせ（例えば、ＳＱＬ文）に含まれる選択条件（ＳＱＬ文のＷＨＥＲＥ句に含まれる条件）を暗号処理手段２１４による処理を必要としない第１の選択条件（例えば、後述のＦ｛ｈ１｝，…,Ｆ｛ｈｚ｝）と暗号処理手段２１４による処理を必要とする第２の選択条件と（例えば、後述のＦ｛ｓ１｝，…,Ｆ｛ｓｘ｝）に分類し、当該問い合わせに含まれるテーブルを第１の選択条件（Ｆ｛ｈ１｝，…,Ｆ｛ｈｚ｝）のみに参照される第１のテーブル（例えば、後述のＴ｛ｇ１｝，…,Ｔ｛ｇｙ｝）とそれ以外の第２のテーブル（例えば、後述のＴ｛ｅ１｝，…，Ｔ｛ｅｗ｝）とに分類するとともに、第１の選択条件（Ｆ｛ｈ１｝，…,Ｆ｛ｈｚ｝）および第１のテーブル（Ｔ｛ｇ１｝，…,Ｔ｛ｇｙ｝）に基づいて第１の問い合わせ（非機微問い合わせ）を生成し、第２の選択条件（Ｆ｛ｓ１｝，…,Ｆ｛ｓｘ｝）および第２のテーブル（Ｔ｛ｅ１｝，…，Ｔ｛ｅｗ｝）ならびにデータベースサーバ１１４から取得した第１の問い合わせの結果に基づいて第２の問い合わせ（機微問い合わせ）を生成することが好ましい。
【００２０】
さらに、問い合わせ変換手段２１１は、複数の第１のテーブル（Ｔ｛ｇ１｝，…,Ｔ｛ｇｙ｝）を第１の選択条件（Ｆ｛ｈ１｝，…,Ｆ｛ｈｚ｝）に参照されるカラムを有するか否かに応じて分類することで、第１の問い合わせをさらに複数の問い合わせ（例えば、後述の数式３の右辺）に分割し、問い合わせ処理手段２１１は、第１の問い合わせを分割して得られた複数の問い合わせ（数式３の右辺）をデータベースサーバ１１４に送出し、複数の問い合わせ（数式３の右辺）のそれぞれに対する処理結果をデータベースサーバ１１４から取得することが好ましい。
【００２１】
図４を参照すると、中間サーバ１１３は、さらに、処理分担判定手段２１８を備えることが好ましい。処理分担判定手段２１８は、第１の問い合わせをデータベースサーバ１１４で処理したときの処理前後におけるデータ量の増減に応じて、第１の問い合わせをデータベースサーバ１１４で実行すべきか否かを判定し、第１の問い合わせ（非機微問い合わせ）をデータベースサーバ１１４で実行すべきでない場合、第１の問い合わせ（非機微問い合わせ）を問い合わせ処理手段２１２で実行するための第３の問い合わせ（例えば、後述の中間型非機微問い合わせ）に変換する。このとき、問い合わせ処理手段２１２は、さらに第３の問い合わせ（中間型非機微問い合わせ）を実行する。
【００２２】
処理分担判定手段２１８は、一例として、第１の問い合わせをデータベースサーバ１１４で実行したときの実行後のデータ量が実行前よりも増加する場合、第１の問い合わせ（非機微問い合わせ）をデータベースサーバ１１４で実行すべきでないと判定してもよい。
【００２３】
処理分担判定手段２１８は、第１の問い合わせ（非機微問い合わせ、例えば、後述の数式４の右辺）を、第１のテーブル（Ｔ｛ｇ１｝，…,Ｔ｛ｇｙ｝）をデータベースサーバ１１４から取得して実行される第４の問い合わせ（例えば、後述の数式５の右辺）と、それ以外の第５の問い合わせ（例えば、後述の数式６の右辺）とに分解することで、第４の問い合わせと第５の問い合わせとから成る第３の問い合わせを生成することが好ましい。このとき、問い合わせ処理手段２１２は、データベースサーバ１１４から第１のテーブル（Ｔ｛ｇ１｝，…,Ｔ｛ｇｙ｝）を取得して第４の問い合わせ（数式５の右辺）を実行するとともに、第５の問い合わせ（数式６の右辺）を実行する。
【００２４】
また、図１を参照すると、本発明に係る中間サーバ１１２は、機微な情報の保護に用いる暗号鍵等の秘密情報を記憶管理する鍵管理手段２１６と、データの暗号化および変換による秘匿、ならびに、秘匿されたデータの復号および逆変換による復元その他の鍵管理手段２１６の秘密情報を用いた処理を行う暗号処理手段２１４と、データベース問い合わせを入力とし、データベース問い合わせ中に含まれる機微な情報の保護やデータベース１１６に格納されている保護された機微な情報の復元等を含む暗号処理手段２１４による操作およびその操作結果に対する処理を必要とするデータベース問い合わせ（機微問い合わせ）と、それ以外のデータベース問い合わせ（非機微問い合わせ）との組み合わせに変換する問い合わせ変換手段２１１と、問い合わせ変換手段２１１が出力するデータベース問い合わせのうち、非機微問い合わせをデータベースサーバ１１４に送信して処理結果を取得するとともに、暗号処理手段２１４を用いた機微問い合わせを実行する問い合わせ処理手段２１２と、を備えていてもよい。
【００２５】
かかる中間サーバ１１２を備えたデータベースシステムでは、クライアント１１０からのデータベース問い合わせを、中間サーバ１１２内の問い合わせ変換手段２１１によって機微問い合わせと非機微問い合わせとに変換し、非機微問い合わせをデータベースサーバ１１４に送信して処理し、機微問い合わせを中間サーバ１１２内の問い合わせ処理手段２１２で処理する。これにより、非機微問い合わせはデータベースサーバ１１４で実行されるため中間サーバ１１２におけるデータベース問い合わせ処理が軽減されるとともに、データベースサーバ１１４では、機微情報の保護に用いる秘密情報や保護されていない機微情報を直接扱う必要がなくなる。
【００２６】
これにより、単一のサーバで安全な運用管理と高いデータベース操作処理能力とを併せ持つようなサーバをデータベースシステムに設けることなく、データベース１１６からの機微な情報の漏洩を防止することが可能となる。
【００２７】
その理由は、データベース問い合わせを、保護された機微データの復元やその結果得られる保護されていない機微データに対する処理が必要な機微問い合わせと、それ以外の非機微問い合わせに変換し、安全な運用管理が必要な機微問い合わせは中間サーバ１１２で実行し、データベースサーバ１１４では非機微問い合わせのみが実行されるからである。
【００２８】
なお、本発明において、下記の形態が可能である。
［形態１］
上記第１の視点に係る中間サーバのとおりである。
［形態２］
前記問い合わせ変換手段は、前記データベースへの問い合わせに含まれる選択条件を前記暗号処理手段による処理を必要としない第１の選択条件と前記暗号処理手段による処理を必要とする第２の選択条件とに分類し、該問い合わせに含まれるテーブルを該第１の選択条件のみに参照される第１のテーブルとそれ以外の第２のテーブルとに分類するとともに、
前記第１の選択条件および前記第１のテーブルに基づいて前記第１の問い合わせを生成し、前記第２の選択条件および前記第２のテーブルならびに前記データベースサーバから取得した前記第１の問い合わせの結果に基づいて前記第２の問い合わせを生成してもよい。
［形態３］
前記問い合わせ変換手段は、複数の前記第１のテーブルを前記第１の選択条件に参照されるカラムを有するか否かに応じて分類することで、前記第１の問い合わせをさらに複数の問い合わせに分割し、
前記問い合わせ処理手段は、前記第１の問い合わせを分割して得られた複数の問い合わせを前記データベースサーバに送出し、該複数の問い合わせのそれぞれに対する処理結果を前記データベースサーバから取得してもよい。
［形態４］
前記中間サーバは、前記第１の問い合わせを前記データベースサーバで処理したときの処理前後におけるデータ量の増減に応じて、前記第１の問い合わせを前記データベースサーバで実行すべきか否かを判定し、前記第１の問い合わせを前記データベースサーバで実行すべきでない場合、前記第１の問い合わせを前記問い合わせ処理手段で実行するための第３の問い合わせに変換する処理分担判定手段を、さらに備え、
前記問い合わせ処理手段は、さらに前記第３の問い合わせを実行してもよい。
［形態５］
前記処理分担判定手段は、前記第１の問い合わせを前記データベースサーバで実行したときの実行後のデータ量が実行前よりも増加する場合、前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定してもよい。
［形態６］
前記処理分担判定手段は、前記第１の問い合わせを、前記第１のテーブルを前記データベースサーバから取得して実行される第４の問い合わせと、それ以外の第５の問い合わせとに分解することで、該第４の問い合わせと該第５の問い合わせとから成る前記第３の問い合わせを生成し、
前記問い合わせ処理手段は、前記データベースサーバから前記第１のテーブルを取得して前記第４の問い合わせを実行するとともに、前記第５の問い合わせを実行してもよい。
［形態７］
上記第２の視点に係るデータベース問い合わせ処理方法のとおりである。
［形態８］
前記変換工程は、前記データベースへの問い合わせに含まれる選択条件を暗号化処理および復号化処理を必要としない第１の選択条件と暗号化処理または復号化処理を必要とする第２の選択条件とに分類し、該問い合わせに含まれるテーブルを該第１の選択条件のみに参照される第１のテーブルとそれ以外の第２のテーブルとに分類する工程と、
前記第１の選択条件および前記第１のテーブルに基づいて前記第１の問い合わせを生成し、前記第２の選択条件および前記第２のテーブルならびに前記データベースサーバから取得した前記第１の問い合わせの結果に基づいて前記第２の問い合わせを生成する工程と、を含んでもよい。
［形態９］
前記変換工程において、複数の前記第１のテーブルを前記第１の選択条件に参照されるカラムを有するか否かに応じて分類することで、前記第１の問い合わせをさらに複数の問い合わせに分割し、
前記取得工程において、前記第１の問い合わせを分割して得られた複数の問い合わせを前記データベースサーバに送出し、該複数の問い合わせのそれぞれに対する処理結果を前記データベースサーバから取得してもよい。
［形態１０］
前記データベース問い合わせ処理方法は、前記第１の問い合わせを前記データベースサーバで処理したときの処理前後におけるデータ量の増減に応じて、前記第１の問い合わせを前記データベースサーバで実行すべきか否かを判定する判定工程と、
前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定された場合、前記第１の問い合わせを第３の問い合わせに変換して実行する工程と、を含んでもよい。
［形態１１］
前記判定工程において、前記第１の問い合わせを前記データベースサーバで実行したときの実行後のデータ量が実行前よりも増加する場合、前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定してもよい。
［形態１２］
前記データベース問い合わせ処理方法は、前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定された場合、前記第１の問い合わせを、前記第１のテーブルを前記データベースサーバから取得して実行される第４の問い合わせと、それ以外の第５の問い合わせとに分解することで、該第４の問い合わせと該第５の問い合わせとから成る前記第３の問い合わせを生成する工程と、
前記データベースサーバから前記第１のテーブルを取得して前記第４の問い合わせを実行するとともに、前記第５の問い合わせを実行する工程と、を含んでもよい。
［形態１３］
上記第３の視点に係るプログラムのとおりである。
［形態１４］
前記変換処理は、前記データベースへの問い合わせに含まれる選択条件を暗号化処理および復号化処理を必要としない第１の選択条件と暗号化処理または復号化処理を必要とする第２の選択条件とに分類し、該問い合わせに含まれるテーブルを該第１の選択条件のみに参照される第１のテーブルとそれ以外の第２のテーブルとに分類する処理と、
前記第１の選択条件および前記第１のテーブルに基づいて前記第１の問い合わせを生成し、前記第２の選択条件および前記第２のテーブルならびに前記データベースサーバから取得した前記第１の問い合わせの結果に基づいて前記第２の問い合わせを生成する処理と、を含んでもよい。
［形態１５］
前記変換処理において、複数の前記第１のテーブルを前記第１の選択条件に参照されるカラムを有するか否かに応じて分類することで、前記第１の問い合わせをさらに複数の問い合わせに分割し、
前記取得処理において、前記第１の問い合わせを分割して得られた複数の問い合わせを前記データベースサーバに送出し、該複数の問い合わせのそれぞれに対する処理結果を前記データベースサーバから取得してもよい。
［形態１６］
前記プログラムは、前記第１の問い合わせを前記データベースサーバで処理したときの処理前後におけるデータ量の増減に応じて、前記第１の問い合わせを前記データベースサーバで実行すべきか否かを判定する判定処理と、
前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定された場合、前記第１の問い合わせを第３の問い合わせに変換して実行する処理と、を前記コンピュータに実行させてもよい。
［形態１７］
前記判定処理において、前記第１の問い合わせを前記データベースサーバで実行したときの実行後のデータ量が実行前よりも増加する場合、前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定してもよい。
［形態１８］
前記プログラムは、前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定された場合、前記第１の問い合わせを、前記第１のテーブルを前記データベースサーバから取得して実行される第４の問い合わせと、それ以外の第５の問い合わせとに分解することで、該第４の問い合わせと該第５の問い合わせとから成る前記第３の問い合わせを生成する処理と、
前記データベースサーバから前記第１のテーブルを取得して前記第４の問い合わせを実行するとともに、前記第５の問い合わせを実行する処理と、を前記コンピュータに実行させてもよい。
【００２９】
（実施形態１）
第１の実施形態に係る中間サーバについて、図面を参照して詳細に説明する。
【００３０】
図１は、本実施形態に係る中間サーバ１１２を備えたデータベースシステムの構成を一例として示すブロック図である。図１を参照すると、データベースシステムは、中間サーバ１１２、データベースサーバ１１４、および、データベース１１６を備え、クライアント１１０からのアクセスを受け付ける。また、中間サーバ１１２は、問い合わせ変換手段２１１、問い合わせ処理手段２１２、鍵管理手段２１６、および、暗号処理手段２１４を備えている。
【００３１】
これらの手段は、それぞれ、概略次のように動作する。
【００３２】
鍵管理手段２１６は、データベース１１６上の機微な情報の保護に用いる暗号鍵等の秘密情報を記憶管理する。
【００３３】
暗号処理手段２１４は、鍵管理手段２１６に格納された秘密情報を用いて、データの匿名化、暗号化等による秘匿、復号等による復元等の処理を行う。
【００３４】
問い合わせ変換手段２１１は、クライアント１１０からのデータベース問い合わせを入力とし、データベース１１６に格納されているデータに対して暗号処理手段２１４による操作およびその操作結果に対する処理が必要なデータベース問い合わせ（以下、「機微問い合わせ」という。）と、それ以外のデータベース問い合わせ（以下、「非機微問い合わせ」という。）との系列に変換する。
【００３５】
問い合わせ処理手段２１２は、問い合わせ変換手段２１１が出力するデータベース問い合わせのうち、非機微問い合わせについては、データベースサーバ１１４に送信して結果を取得する。一方、問い合わせ処理手段２１２は、機微問い合わせについては、暗号処理手段２１４を用いて問い合わせを実行する。
【００３６】
図２は、本実施形態に係るデータベースシステム（図１）の動作を一例として示すフロー図である。図２を参照して、本実施形態のデータベースシステムの全体の動作について詳細に説明する。
【００３７】
まず、中間サーバ１１２は、クライアント１１０からデータベース問い合わせを受信する（ステップＡ１）。
【００３８】
次に、問い合わせ変換手段２１１は、受信したデータベース問い合わせを、機微問い合わせと非機微問い合わせとの系列に変換する（ステップＡ２）。
【００３９】
次に、問い合わせ処理手段２１２は、変換後の問い合わせの系列を参照し、処理を終えていない未処理の問い合わせのうちの、最初の問い合わせを取得する（ステップＡ３）。
【００４０】
次に、問い合わせ処理手段２１２は、取得した問い合わせが非機微問い合わせであるか、機微問い合わせであるかを確認する（ステップＡ４）。
【００４１】
非機微問い合わせである場合（ステップＡ４のＹｅｓ）、問い合わせ処理手段２１２は、取得した問い合わせをデータベースサーバ１１４に送信し（ステップＡ５）、データベースサーバ１１４によって処理された問い合わせの処理結果を受信する（ステップＡ６）。
【００４２】
一方、機微問い合わせである場合（ステップＡ４のＮｏ）、問い合わせ処理手段２１２は、問い合わせに含まれる機微データの匿名化や暗号化による秘匿の処理、復号等による復元の処理を、暗号処理手段２１４および鍵管理手段２１６を用いて実行する（ステップＡ７）。
【００４３】
次に、問い合わせ処理手段２１２は、ステップＡ３で取得した問い合わせを処理済とする（ステップＡ８）。
【００４４】
次に、問い合わせ処理手段２１２は、変換後の問い合わせ系列を参照し、すべての問い合わせが処理済になっているかどうかを調べる（ステップＡ９）。
【００４５】
処理済となっていない問い合わせが残っている場合（ステップＡ９のＮｏ）、ステップＡ３に戻る。一方、すべて処理済となっていれば（ステップＡ９のＹｅｓ）、処理を終了する。
【００４６】
図３は、問い合わせ変換手段２１１の動作を一例として示すフロー図である。図３を参照しつつ、問い合わせ変換手段２１１の動作について説明する。
【００４７】
問い合わせ変換手段２１１は、例えば、一般的なＳＱＬによるデータベース問い合わせに対して、以下のようにして実現することができる。
【００４８】
ここでは、入力されたデータベース問い合わせの一般的な表現を、次のとおりとする。ただし、本発明におけるデータベース問い合わせの表現は下記に限定されない。
【００４９】
ＳＥＬＥＣＴ  Ｃ｛１｝，…，Ｃ｛ｐ｝  ＦＲＯＭ  Ｔ｛１｝，Ｔ｛２｝，…，Ｔ｛ｑ｝  ＷＨＥＲＥ  Ｆ｛１｝  ＡＮＤ  Ｆ｛２｝  ＡＮＤ  …  ＡＮＤ  Ｆ｛ｒ｝
【００５０】
まず、問い合わせ変換手段２１１は、ＦＲＯＭ句で指定されているテーブルＴ｛１｝，Ｔ｛２｝，…，Ｔ｛ｑ｝とＷＨＥＲＥ句で指定されている選択条件Ｆ｛１｝，Ｆ｛２｝，…，Ｆ｛ｒ｝を調べ、条件の判定に暗号処理手段２１４を用いた処理が必要な選択条件による参照関係に基づいて、テーブルおよび選択条件を以下のように分類する（ステップＢ１）。
【００５１】
α）選択条件の対象カラムにデータベース内で暗号化等による秘匿が必要なカラム（以下、「秘匿カラム」という。）を全く含まないか、含んでいても秘匿データの復元等が不要な演算で判定可能な条件（例えば、カラムに含まれるデータの個数による条件）Ｆ｛ｈ１｝，…，Ｆ｛ｈｚ｝と、Ｆ｛ｈ１｝，…，Ｆ｛ｈｚ｝のみに参照されるテーブルＴ｛ｇ１｝，…，Ｔ｛ｇｙ｝
【００５２】
β）Ｆ｛１｝，…，Ｆ｛ｒ｝からＦ｛ｈ１｝，…，Ｆ｛ｈｚ｝を除いた選択条件Ｆ｛ｓ１｝，…，Ｆ｛ｓｘ｝と、Ｔ｛１｝，Ｔ｛２｝，…，Ｔ｛ｑ｝からＴ｛ｇ１｝，…，Ｔ｛ｇｙ｝を除いたテーブルＴ｛ｅ１｝，…，Ｔ｛ｅｗ｝
【００５３】
次に、問い合わせ変換手段２１１は、ステップＢ１で分類されたテーブルと選択条件に基づいて、以下のように非機微問い合わせの系列を作成する（ステップＢ２）。
【００５４】
まず、問い合わせ変換手段２１１は、α）に分類されたＴ｛ｇ１｝，…，Ｔ｛ｇｙ｝について、以下のＳＱＬ文による非機微問い合わせを作成する。
【００５５】
［数１]
Ｔ’｛α｝＝ＳＥＬＥＣＴ  Ｃ＊｛α｝  ＦＲＯＭ  Ｔ｛ｇ１｝，…，Ｔ｛ｇｙ｝  ＷＨＥＲＥ  Ｆ｛ｈ１｝  ＡＮＤ  …  ＡＮＤ  Ｆ｛ｈｚ｝
【００５６】
数式１の等号の右辺のＳＱＬ文は、データベースサーバ１１４へ送信される非機微問い合わせを表す。一方、数式１の等号の左辺は、中間サーバ１１２が右辺の問い合わせの結果を等号の左辺のテーブル名で中間サーバ１１２内のメモリ等（非図示）に保持することを示す。また、Ｃ＊｛α｝は、テーブルＴ｛ｇ１｝，…，Ｔ｛ｇｙ｝が持つカラムのうち、入力のＳＱＬ文で指定されたカラム名Ｃ｛１｝，…，Ｃ｛ｋ｝に含まれるものと、Ｆ｛ｓ１｝，…，Ｆ｛ｓｘ｝が参照するカラム名に含まれるものの全部から成るカラム指定の省略表記である。
【００５７】
次に、問い合わせ変換手段２１１は、β）に分類されたＴ｛ｅ１｝，…，Ｔ｛ｅｗ｝について、以下の数式２のＳＱＬ文による非機微問い合わせを作成する。
【００５８】
［数２]
Ｔ’｛ｅ１｝＝ＳＥＬＥＣＴ  Ｃ＊｛ｅ１｝  ＦＲＯＭ  Ｔ｛ｅ１｝
Ｔ’｛ｅ２｝＝ＳＥＬＥＣＴ  Ｃ＊｛ｅ２｝  ＦＲＯＭ  Ｔ｛ｅ２｝
：
Ｔ’｛ｅｗ｝＝ＳＥＬＥＣＴ  Ｃ＊｛ｅｗ｝  ＦＲＯＭ  Ｔ｛ｅｗ｝
【００５９】
ここで、Ｃ＊｛ｅ１｝，…，Ｃ＊｛ｅｗ｝は、それぞれＴ｛ｅ１｝，…，Ｔ｛ｅｗ｝が持つカラムのうち、入力のＳＱＬ文で指定されたカラム名Ｃ｛１｝，…，Ｃ｛ｋ｝に含まれるものと、Ｆ｛ｓ１｝，…，Ｆ｛ｓｘ｝が参照するカラム名に含まれるものすべてから成るカラム指定の省略表記である。
【００６０】
なお、ここまでのＳＱＬ文で表された問い合わせは、暗号処理手段２１４を用いた処理が必要な選択条件Ｆ｛ｓ１｝，…，Ｆ｛ｓｘ｝が含まれないため、すべて非機微問い合わせである。
【００６１】
次に、問い合わせ変換手段２１１は、以下のＳＱＬ文による機微問い合わせを作成する（ステップＢ３）。
【００６２】
ＳＥＬＥＣＴ  Ｃ｛１｝，…，Ｃ｛ｋ｝  ＦＲＯＭ  Ｔ’｛α｝，Ｔ’｛ｅ１｝，…，Ｔ’｛ｅｗ｝  ＷＨＥＲＥ  Ｆ｛ｓ１｝  ＡＮＤ  …  ＡＮＤ  Ｆ｛ｓｘ｝
【００６３】
このＳＱＬ文はステップＢ２で作成された非機微問い合わせの結果を参照する問い合わせ処理であり、かつ、暗号処理手段２１４を用いた処理が必要な選択条件を含む、機微問い合わせである。
【００６４】
次に、問い合わせ変換手段２１１は、ステップＢ２で作成した非機微問い合わせの系列に続けて、ステップＢ３で作成した機微問い合わせを並べて出力する（ステップＢ４）。このとき、出力される系列においてステップＢ２で作成した非機微問い合わせの間で順番が入れ替わっていてもよい。
【００６５】
問い合わせ変換手段２１１によって、データベース問い合わせを非機微問い合わせと機微問い合わせの系列に変換することで、問い合わせ処理手段２１２は、中間サーバ１１２での処理が不要な非機微問い合わせをデータベースサーバ１１４に実行させることが可能となる。これにより、中間サーバ１０４におけるデータベース操作処理の増加を抑制することができる。
【００６６】
さらに、上記ステップＢ２におけるＴ’｛α｝を取得する非機微問い合わせのＳＱＬ文は、以下の数式３のような非機微問い合わせのＳＱＬ文の系列に変換することもできる。
【００６７】
［数３]
Ｔ’｛α１｝＝ＳＥＬＥＣＴ  Ｃ＊｛α１｝  ＦＲＯＭ  Ｔ｛ｇ１｝，…，Ｔ｛ｇｉ｝  ＷＨＥＲＥ  Ｆ｛ｈ１｝  ＡＮＤ  …  ＡＮＤ  Ｆ｛ｈｊ｝
Ｔ’｛α２｝＝ＳＥＬＥＣＴ  Ｃ＊｛α２｝  ＦＲＯＭ  Ｔ｛ｇ｛ｉ＋１｝｝，…，Ｔ｛ｇ｛ｉ＋ａ｝｝  ＷＨＥＲＥ  Ｆ｛ｈ｛ｊ＋１｝｝  ＡＮＤ  …  ＡＮＤ  Ｆ｛ｈ｛ｊ＋ｂ｝｝
：
Ｔ’｛αｎ｝＝ＳＥＬＥＣＴ  Ｃ＊｛αｎ｝  ＦＲＯＭ  Ｔ｛ｇｄ｝，…，Ｔ｛ｇｎ｝  ＷＨＥＲＥ  Ｆ｛ｈｄ｝  ＡＮＤ  …  ＡＮＤ  Ｆ｛ｈｎ｝
【００６８】
このときの機微問い合わせは、以下のようになる。
【００６９】
ＳＥＬＥＣＴ  Ｃ｛１｝，…，Ｃ｛ｋ｝  ＦＲＯＭ  Ｔ’｛α１｝，…，Ｔ’｛αｎ｝，Ｔ’｛ｅ１｝，…，Ｔ’｛ｅｗ｝  ＷＨＥＲＥ  Ｆ｛ｓ１｝  ＡＮＤ  …  ＡＮＤ  Ｆ｛ｓｘ｝
【００７０】
Ｔ’｛α１｝，…，Ｔ’｛αｎ｝の右辺のＳＱＬ文のＦＲＯＭ句に指定するテーブルおよびＷＨＥＲＥ句に指定する選択条件は、テーブルＴ｛ｇ１｝，…，Ｔ｛ｇｙ｝を、選択条件Ｆ｛ｈ１｝，…，Ｆ｛ｈｚ｝が参照するカラムを持つかどうかという関係によって閉包分割することで得られる。
【００７１】
なお、Ｃ＊｛α１｝，…，Ｃ＊｛αｎ｝は、それぞれＴ’｛α１｝，…，Ｔ’｛αｎ｝の右辺のＳＱＬ文のＦＲＯＭ句で指定されたテーブルが持つカラムのうち、入力のＳＱＬ文で指定されたカラム名Ｃ｛１｝，…，Ｃ｛ｋ｝に含まれるものと、Ｆ｛ｓ１｝，…，Ｆ｛ｓｘ｝が参照するカラム名に含まれるものすべてから成るカラム指定の省略表記である。
【００７２】
非機微問い合わせを分割する前の問い合わせでは、１つの問い合わせで、データベースサーバ１１４がｙ個のテーブルを結合するため、ｙ−１回のテーブル結合処理が必要となる。一方、非機微問い合わせを、数式３の系列に分割することで、分割後の問い合わせでは、問い合わせがｎ回に分割され、テーブル結合処理をｓ−ｎ回で済ませることができる。したがって、非機微問い合わせを数式３のように分割することで、データベースサーバ１１４での処理を軽減することができる。
【００７３】
また、一般に、データ数ａ個のテーブルとデータ数ｂ個のテーブルとを結合すると、結合結果のテーブルのデータ数は最大でａ×ｂ個となる。したがって、分割前の問い合わせでは、データベースサーバ１１４から中間サーバ１０２に送られるデータ数｜Ｔ’｛α｝｜は最大で｜Ｔ｛ｇ１｝｜×…×｜Ｔ｛ｇｙ｝｜＝｜Ｔ’｛α１｝｜×…×｜Ｔ’｛αｎ｝｜となる。一方、分割後は、｜Ｔ’｛α１｝｜＋…＋｜Ｔ’｛αｎ｝｜となるため、分割前よりもデータ数が抑制されると期待できる。
【００７４】
次に、本実施形態に係る中間サーバ１１２を備えたデータベースシステムによってもたらされる効果について説明する。
【００７５】
中間サーバ１１２を備えたデータベースシステムにおいては、問い合わせ変換手段２１１がデータベース問い合わせを機微問い合わせと非機微問い合わせとの系列に変換し、安全な運用管理が求められる機微問い合わせは中間サーバ１１２で処理し、非機微問い合わせをデータベースサーバ１１４で処理する。したがって、安全な運用管理と高いデータベース操作処理性能とを併せ持つサーバを用いることなく、データベースからの機微な情報の漏洩を防止することができる。
【００７６】
また、問い合わせ変換手段２１１で生成する非機微問い合わせの系列をさらに分割することで、データベースサーバ１１４でのテーブル結合処理の回数を抑制することができる。さらに、この場合、非機微問い合わせの結果のデータ数の増加も抑制され、データベースサーバ１１４と中間サーバ１１２との間の通信量を抑制することもできる。
【００７７】
（実施形態２）
次に、第２の実施形態に係る中間サーバについて、図面を参照して詳細に説明する。図４は、本実施形態に係る中間サーバ１１３を備えたデータベースシステムの構成を一例として示すブロック図である。
【００７８】
図４を参照すると、本実施形態の中間サーバ１１３は、第１の実施形態の中間サーバ１１２の構成（図１）に加えて、さらに処理分担判定手段２１８を備えている。
【００７９】
処理分担判定手段２１８は、問い合わせ変換手段２１１からの非機微問い合わせを入力とする。処理分担判定手段２１８は、非機微問い合わせをデータベースサーバ１１４で処理するよりも、必要なテーブルを中間サーバ１１３に取得した上で中間サーバ１１２で処理した方が通信量や計算量が少なくなるかどうかを判定する。
【００８０】
通信量や計算量が少なくなる場合、処理分担判定手段２１８は、問い合わせ変換手段２１１から受け取った非機微問い合わせを、データベースサーバ１１４から必要なテーブルを中間サーバ１１３に取得する非機微問い合わせと、残りの非機微問い合わせとから成る問い合わせ（以下、「中間型非機微問い合わせ」という。）に変換して出力する。
【００８１】
一方、通信量や計算量が少なくならない場合、処理分担判定手段２１８は、変換不要という判定結果を出力する。また、この場合、処理分担判定手段２１８は、問い合わせ変換手段２１１から受け取った非機微問い合わせを変換することなくそのまま出力する。以下では、問い合わせ変換手段２１１によって変換されることなくそのまま出力された非機微問い合わせを、「通常の非機微問い合わせ」という。
【００８２】
問い合わせ変換手段２１１は、入力されたデータベース問い合わせを機微問い合わせと非機微問い合わせの系列に変換するとともに、処理分担判定手段２１８を用いて、非機微問い合わせを中間型非機微問い合わせと、通常の非機微問い合わせの系列に置き換えた上で問い合わせ処理手段２１２に出力する。
【００８３】
問い合わせ処理手段２１２は、問い合わせ変換手段２１１が出力するデータベース問い合わせのうち、通常の非機微問い合わせをデータベースサーバ１１４に送信して結果を取得した後、中間型非機微問い合わせを実行する。また、問い合わせ処理手段２１２は、暗号処理手段２１４を用いて機微問い合わせを実行する。
【００８４】
処理分担判定手段２１８は、以下のように動作する。
【００８５】
処理分担判定手段２１８は、問い合わせ変換手段２１１からの非機微問い合わせを受け取ると、まず、問い合わせに含まれるテーブルと選択条件の内容を調べ、中間サーバ１１３で処理した方が通信量や計算量が少なくなるかどうかを判定する。具体的には、過去のデータベース問い合わせ処理の実行状況の情報により、処理の実行後にデータ数が増大することが見込まれる問い合わせである場合、データベースサーバ１１４で処理したときと比較して、処理対象のテーブルを中間サーバ１１３に取得した上で、中間サーバ１１３内で問い合わせを処理する方が通信量や計算量が少なくなることが期待される。そこで、かかる場合には、処理分担判定手段２１８は、問い合わせ変換手段２１１から受け取った非機微問い合わせを、以下のように中間型非機微問い合わせに変換する。
【００８６】
ここでは、一例として、受け取った非機微問い合わせが、以下の数式４のように表されているとする。
【００８７】
［数４]
Ｔ’｛α｝＝ＳＥＬＥＣＴ  Ｃ＊｛α｝  ＦＲＯＭ  Ｔ｛ｇ１｝，…，Ｔ｛ｇｙ｝  ＷＨＥＲＥ  Ｆ｛ｈ１｝  ＡＮＤ  …  ＡＮＤ  Ｆ｛ｈｚ｝
【００８８】
このとき、処理分担判定手段２１８は、以下の数式５および数式６から成る系列を中間型非機微問い合わせとして出力する。
【００８９】
［数５]
Ｔ’｛ｇ１｝＝ＳＥＬＥＣＴ  Ｃ＊｛ｇ１｝  ＦＲＯＭ  Ｔ｛ｇ１｝
Ｔ’｛ｇ２｝＝ＳＥＬＥＣＴ  Ｃ＊｛ｇ２｝  ＦＲＯＭ  Ｔ｛ｇ２｝
：
Ｔ’｛ｇｙ｝＝ＳＥＬＥＣＴ  Ｃ＊｛ｇｙ｝  ＦＲＯＭ  Ｔ｛ｇｙ｝
【００９０】
［数６]
Ｔ’｛α｝＝ＳＥＬＥＣＴ  Ｃ＊｛α｝  ＦＲＯＭ  Ｔ’｛ｇ１｝，…，Ｔ’｛ｇｙ｝  ＷＨＥＲＥ  Ｆ｛ｈ１｝  ＡＮＤ  …  ＡＮＤ  Ｆ｛ｈｚ｝
【００９１】
ここで、Ｃ＊｛ｇ１｝，Ｃ＊｛ｇ２｝，…，Ｃ＊｛ｇｉ｝は、テーブルＴ｛ｇ１｝，…，Ｔ｛ｇｙ｝が持つカラムのうち、Ｃ＊｛α｝に含まれるもの全部から成るカラム指定の省略表記である。
【００９２】
一方、カラムの値がある定数以上となっている行を取得するような選択条件や、テーブル同士をカラムの値の一致によって結合させる選択条件は、一般に、問い合わせ処理の実行によってデータ数が小さくなるため、中間サーバ１１３で処理しても、データベースサーバ１１４で処理した場合と比較して通信量や計算量が少なくなることを期待できない。また、これら以外の選択条件であっても、過去のデータベース問い合わせ処理の実行状況の情報に基づいて、処理の実行後にデータ数が小さくなることが見込まれる問い合わせであれば、同様に、中間サーバ１１２で処理しても通信量や計算量が少なくなることを期待できない。そこで、これらの場合には、処理分担判定手段２１８は、変換不要と判定する。
【００９３】
なお、中間サーバ１１３は、データベースサーバ１１４へ送信した非機微問い合わせの系列とそれらの実行結果をキャッシュ（記録）しておいてもよい。このとき、処理分担判定手段２１８は、受け取った非機微問い合わせ中に、キャッシュに格納されているテーブルや問い合わせが含まれている場合、そのキャッシュを参照する中間型非機微問い合わせに変換する。これにより、データベースサーバ１１４と中間サーバ１１３との間における通信量をさらに削減することができる。
【００９４】
次に、本実施形態に係る中間サーバ１１３によってもたらされる効果について説明する。
【００９５】
本実施形態に係る中間サーバ１１３（図４）は、第１の実施形態に係る中間サーバ１１２の構成（図１）に加えて、さらに処理分担判定手段２１８を備えている。処理分担判定手段２１８は、非機微問い合わせを、データベースサーバ１１４と中間サーバ１１３との通信量やデータ処理量が少なくなるように、中間型非機微問い合わせと通常の非機微問い合わせの系列に変換し、問い合わせ処理手段２１２は機微問い合わせに加えて中間型非機微問い合わせも処理する。したがって、本実施形態によると、第１の実施形態の効果に加えて、データベースサーバ１１４と中間サーバ１１２との間の通信量をさらに削減するとともに、データ処理量を削減することもできる。
【００９６】
本発明に係るデータベースシステムは、一例として、機微なデータを秘匿したままでデータベース問い合わせを行うためのデータベースシステムに適用することができる。
【００９７】
なお、上記の特許文献の開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【００９８】
１０２    クライアント
１０４    サーバ
１０６    データベース
１１０    クライアント
１１２、１１３    中間サーバ
１１４    データベースサーバ
１１６    データベース
２０２    コマンドインタフェース
２０４    コマンドパーサ
２０６    コマンド変換器
２０８    暗号ユニット
２１０    データベースインタフェース
２１１    問い合わせ変換手段
２１２    問い合わせ処理手段
２１４    暗号処理手段
２１６    鍵管理手段
２１８    処理分担判定手段
【図１】
2014092180.tif 000003
【図２】
2014092180.tif 000004
【図３】
2014092180.tif 000005
【図４】
2014092180.tif 000006
【図５】
2014092180.tif 000007
【手続補正書】
【提出日】平成27年5月22日(2015.5.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データベースに格納されたデータを暗号化または復号化する暗号処理手段と、
前記データベースへの問い合わせを、前記暗号処理手段による処理を必要としない第１の問い合わせと前記暗号処理手段による処理を必要とする第２の問い合わせとに分割する問い合わせ変換手段と、
前記データベースに接続されたデータベースサーバに前記第１の問い合わせを送出して該データベースサーバから結果を取得するとともに、前記暗号処理手段を用いて前記第２の問い合わせを実行する問い合わせ処理手段と、
を備える、中間サーバ。
【請求項２】
前記問い合わせ変換手段は、前記データベースへの問い合わせに含まれる選択条件を前記暗号処理手段による処理を必要としない第１の選択条件と前記暗号処理手段による処理を必要とする第２の選択条件とに分類し、該問い合わせに含まれるテーブルを該第１の選択条件のみに参照される第１のテーブルとそれ以外の第２のテーブルとに分類するとともに、
前記第１の選択条件および前記第１のテーブルに基づいて前記第１の問い合わせを生成し、前記第２の選択条件および前記第２のテーブルならびに前記データベースサーバから取得した前記第１の問い合わせの結果に基づいて前記第２の問い合わせを生成する、
請求項１に記載の中間サーバ。
【請求項３】
前記問い合わせ変換手段は、複数の前記第１のテーブルを前記第１の選択条件に参照されるカラムを有するか否かに応じて分類することで、前記第１の問い合わせをさらに複数の問い合わせに分割し、前記問い合わせ処理手段は、前記第１の問い合わせを分割して得られた複数の問い合わせを前記データベースサーバに送出し、該複数の問い合わせのそれぞれに対する処理結果を前記データベースサーバから取得する、
請求項２に記載の中間サーバ。
【請求項４】
前記第１の問い合わせを前記データベースサーバで処理したときの処理前後におけるデータ量の増減に応じて、前記第１の問い合わせを前記データベースサーバで実行すべきか否かを判定し、前記第１の問い合わせを前記データベースサーバで実行すべきでない場合、前記第１の問い合わせを前記問い合わせ処理手段で実行するための第３の問い合わせに変換する処理分担判定手段を、さらに備え、
前記問い合わせ処理手段は、さらに前記第３の問い合わせを実行する、
請求項１ないし３のいずれか１項に記載の中間サーバ。
【請求項５】
前記処理分担判定手段は、前記第１の問い合わせを前記データベースサーバで実行したときの実行後のデータ量が実行前よりも増加する場合、前記第１の問い合わせを前記データベースサーバで実行すべきでないと判定する、
請求項４に記載の中間サーバ。
【請求項６】
前記処理分担判定手段は、前記第１の問い合わせを、前記第１のテーブルを前記データベースサーバから取得して実行される第４の問い合わせと、それ以外の第５の問い合わせとに分解することで、該第４の問い合わせと該第５の問い合わせとから成る前記第３の問い合わせを生成し、
前記問い合わせ処理手段は、前記データベースサーバから前記第１のテーブルを取得して前記第４の問い合わせを実行するとともに、前記第５の問い合わせを実行する、
請求項５に記載の中間サーバ。
【請求項７】
コンピュータが、
データベースへの問い合わせを、暗号化処理および復号化処理を必要としない第１の問い合わせと暗号化処理または復号処理を必要とする第２の問い合わせとに分割する変換工程と、
前記データベースに接続されたデータベースサーバに前記第１の問い合わせを送出して該データベースサーバから結果を取得する取得工程と、
暗号化処理または復号化処理を用いて前記第２の問い合わせを実行する工程と、
を含む、データベース問い合わせ処理方法。
【請求項８】
前記変換工程は、前記データベースへの問い合わせに含まれる選択条件を暗号化処理および復号化処理を必要としない第１の選択条件と暗号化処理または復号化処理を必要とする第２の選択条件とに分類し、該問い合わせに含まれるテーブルを該第１の選択条件のみに参照される第１のテーブルとそれ以外の第２のテーブルとに分類する工程と、
前記第１の選択条件および前記第１のテーブルに基づいて前記第１の問い合わせを生成し、前記第２の選択条件および前記第２のテーブルならびに前記データベースサーバから取得した前記第１の問い合わせの結果に基づいて前記第２の問い合わせを生成する工程と、
を含む、請求項７に記載のデータベース問い合わせ処理方法。
【請求項９】
前記変換工程において、複数の前記第１のテーブルを前記第１の選択条件に参照されるカラムを有するか否かに応じて分類することで、前記第１の問い合わせをさらに複数の問い合わせに分割し、
前記取得工程において、前記第１の問い合わせを分割して得られた複数の問い合わせを前記データベースサーバに送出し、該複数の問い合わせのそれぞれに対する処理結果を前記データベースサーバから取得する、
請求項８に記載のデータベース問い合わせ処理方法。
【請求項１０】
データベースへの問い合わせを、暗号化処理および復号化処理を必要としない第１の問い合わせと暗号化処理または復号化処理を必要とする第２の問い合わせとに分割する変換処理と、
前記データベースに接続されたデータベースサーバに前記第１の問い合わせを送出して該データベースサーバから結果を取得する取得処理と、
暗号化処理または復号化処理を用いて前記第２の問い合わせを実行する処理と、
をコンピュータに実行させる、プログラム。
【国際調査報告】
2014092180.tif 000008
2014092180.tif 000009
2014092180.tif 000010
2014092180.tif 000011