(57)【特許請求の範囲】
【請求項１】
検索の対象となる検索対象テーブルから複数の検索条件の組合せに適合するレコードを抽出するようデータベースサーバ装置に要求する問合せ文を入力する問合せ文入力部と、
前記問合せ文入力部により入力された入力問合せ文の検索条件ごとに、検索実行時の実行コストが閾値以上であるか否かを判断し、検索実行時の実行コストが閾値未満である検索条件を第１の検索条件カテゴリーに分類し、検索実行時の実行コストが閾値以上である検索条件を第２の検索条件カテゴリーに分類する検索条件分類部と、
前記第１の検索条件カテゴリーに分類された検索条件の組合せに適合するレコードを前記検索対象テーブルから抽出する第１の抽出処理と、前記第１の抽出処理により抽出されたレコードから前記第２の検索条件カテゴリーに分類された検索条件の組合せに適合するレコードを抽出する第２の抽出処理とを実行するよう前記データベースサーバ装置に要求する問合せ文を、前記入力問合せ文を変換して生成する問合せ文変換部とを有することを特徴とする情報処理装置。
【請求項２】
前記問合せ文変換部は、
前記入力問合せ文を変換して、前記第１の抽出処理の実行を前記データベースサーバ装置に要求する第１の問合せ文を生成し、
更に、前記第１の問合せ文を含み、前記第１の問合せ文の実行により抽出されたレコードに対して前記第２の抽出処理を実行するよう前記データベースサーバ装置に要求する第２の問合せ文を、前記入力問合せ文を変換して生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記問合せ文変換部は、
前記検索対象テーブルを管理しているデータベースサーバ装置に、生成した前記第２の問合せ文を出力することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記問合せ文変換部は、
文字列引数により指定された任意の問合せ文の実行を前記データベースサーバ装置に要求する関数を含み、
前記関数の前記文字列引数として前記第１の問合せ文を含む第２の問合せ文を生成することを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記情報処理装置は、更に、
前記第１の抽出処理により抽出された複数のレコードを、それぞれが１つ以上のレコードで構成される複数のブロックに分割させ、前記第２の抽出処理を複数のブロックに対して並列に実行させるための制御情報を、前記第２の問合せ文に含めるよう前記問合せ文変換部に指示する並列処理制御部を有することを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記データベースサーバ装置は、
２つ以上のスレーブ装置を管理しており、
前記並列処理制御部は、
前記第１の抽出処理は、前記データベースサーバ装置に実行させ、前記第２の抽出処理は、前記データベースサーバ装置の管理下で前記２つ以上のスレーブ装置に、複数のブロックに対して並列に実行させるための制御情報を、前記第２の問合せ文に含めるよう前記問合せ文変換部に指示することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記問合せ文変換部は、
前記第２の抽出処理の処理結果に影響を与えることなく前記第２の抽出処理が対象とするレコードを前記第１の抽出処理により抽出されたレコードよりも絞り込む絞り込み処理を定義するとともに、
前記第１の抽出処理と、前記絞り込み処理と、前記絞り込み処理により絞り込まれたレコードから前記第２の検索条件カテゴリーに分類された検索条件の組合せに適合するレコードを抽出する第２の抽出処理とを実行するよう要求する問合せ文を、前記入力問合せ文を変換して生成することを特徴とする請求項１〜６のいずれかに記載の情報処理装置。
【請求項８】
前記問合せ文変換部は、
前記検索対象テーブルに含まれるいずれかのカラムを、絞り込み処理に用いられる絞り込み処理用カラムとして指定するとともに、
絞り込み処理用カラムに記述されているデータ値を基準にして前記第２の抽出処理が対象とするレコードを絞り込む絞り込み処理を定義することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記問合せ文変換部は、
データ値が暗号化されているカラムである暗号化カラムが前記検索対象テーブルに含まれており、暗号化カラムが前記第２の検索条件カテゴリーに分類されている場合に、
前記第２の検索条件カテゴリーに分類された暗号化カラムの暗号化強度に応じて、絞り込み処理の内容を決定することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記問合せ文変換部は、
機密度が設定されているカラムである機密度設定カラムが前記検索対象テーブルに含まれており、機密度設定カラムが前記第２の検索条件カテゴリーに分類されている場合に、
前記第２の検索条件カテゴリーに分類された機密度設定カラムに設定されている機密度に応じて、絞り込み処理の内容を決定することを特徴とする請求項８又は９に記載の情報処理装置。
【請求項１１】
前記情報処理装置は、更に、
問合せ文を生成する問合せ文生成部を有し、
前記問合せ文入力部は、
前記問合せ文生成部により生成された問合せ文を入力することを特徴とする請求項１〜１０のいずれかに記載の情報処理装置。
【請求項１２】
検索の対象となる検索対象テーブルから複数の検索条件の組合せに適合するレコードを抽出するようデータベースサーバ装置に要求する問合せ文を、コンピュータが、入力する問合せ文入力ステップと、
前記コンピュータが、前記問合せ文入力ステップにより入力された入力問合せ文の検索条件ごとに、検索実行時の実行コストが閾値以上であるか否かを判断し、検索実行時の実行コストが閾値未満である検索条件を第１の検索条件カテゴリーに分類し、検索実行時の実行コストが閾値以上である検索条件を第２の検索条件カテゴリーに分類する検索条件分類ステップと、
前記第１の検索条件カテゴリーに分類された検索条件の組合せに適合するレコードを前記検索対象テーブルから抽出する第１の抽出処理と、前記第１の抽出処理により抽出されたレコードから前記第２の検索条件カテゴリーに分類され検索条件の組合せに適合するレコードを抽出する第２の抽出処理とを実行するよう前記データベースサーバ装置に要求する問合せ文を、前記コンピュータが、前記入力問合せ文を変換して生成する問合せ文変換ステップとを有することを特徴とする情報処理方法。
【請求項１３】
検索の対象となる検索対象テーブルから複数の検索条件の組合せに適合するレコードを抽出するようデータベースサーバ装置に要求する問合せ文を入力する問合せ文入力ステップと、
前記問合せ文入力ステップにより入力された入力問合せ文の検索条件ごとに、検索実行時の実行コストが閾値以上であるか否かを判断し、検索実行時の実行コストが閾値未満である検索条件を第１の検索条件カテゴリーに分類し、検索実行時の実行コストが閾値以上である検索条件を第２の検索条件カテゴリーに分類する検索条件分類ステップと、
前記第１の検索条件カテゴリーに分類された検索条件の組合せに適合するレコードを前記検索対象テーブルから抽出する第１の抽出処理と、前記第１の抽出処理により抽出されたレコードから前記第２の検索条件カテゴリーに分類された検索条件の組合せに適合するレコードを抽出する第２の抽出処理とを実行するよう前記データベースサーバ装置に要求する問合せ文を前記入力問合せ文を変換して生成する問合せ文変換ステップとをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースを効率的に検索するための技術に関する。
【背景技術】
【０００２】
データベース管理システムにおいて、データ参照（ＳＱＬのＳＥＬＥＣＴ文に相当）やデータ更新（ＳＱＬのＵＰＤＡＴＥ文に相当）のために発行される問合せ文の実行時間は、一般に、問合せ文において、選択処理（ＳＱＬのＷＨＥＲＥ句に相当）として記述された複数の検索条件（以下、「条件」又は「条件式」ともいう）の評価順序に大きく依存する。
また、記述された条件式を、他の等価な条件式に置き換えられる場合、複数ある等価な候補の中から実行コストが最も低い候補を選択することで、問合せの実行時間を短縮することができる。
【０００３】
なお、実行コストとは、データベースの検索処理に必要なリソースの消費量のことであり、例えば、ディスク・アクセスの回数やＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の負荷などである。
前述のように、一般的に、実行コストが低いと問い合わせの実行時間も短いという関係にある。
【０００４】
このような、問合せの実行計画最適化に関する技術は数多く研究されている。
例えば、特許文献１においては、データベース管理システムが外部関数を利用した参照を行う場合、単一、あるいは、複数の外部関数参照により記述される条件に関して、同一の結果が得られる全ての書き換えを考慮した上で、実行コスト評価に基づいた実行計画の最適化を実現する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−１４１２３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一方で、ある条件式を形成する演算や関数の実行コストが、他の演算や関数の実行コストと比較して十分に高い場合、該条件の実行処理における並列多重度を増やし、複数レコードに対する該処理を同時実行することが、問合せ実行の高速化に有効である。
ただし、並列化によるオーバーヘッドが存在するため、実行コストが低い処理に関しては、並列化しない方が実行速度の面で有利であることが多い。
このように、高コスト処理と低コスト処理とで、並列度を使い分けられることが要求される。
【０００７】
しかしながら、従来の実行計画最適化技術の範疇では、使用するデータベース管理システムによっては、複数レコードに対する同時実行を実現するような、並列化の仕組みを組み込むことが困難であった。
【０００８】
例として、データベース管理システムとして、オープンソースのＰｏｓｔｇｒｅＳＱＬ  ９．０（以下、単にＰｏｓｔｇｒｅＳＱＬ）を使用する場合を考える。
特許文献１の方法を単純に適用すると、問合せに用いるＳＱＬ文の選択処理に該当するＷＨＥＲＥ句が、最適な条件に書き換えられる。
しかしながら、ＰｏｓｔｇｒｅＳＱＬでは、ＷＨＥＲＥ句の評価はレコード単位の逐次処理として実行されるため、ＰｏｓｔｇｒｅＳＱＬ本体を改修しない限り、複数レコードを同時に処理する並列化の機構を単純に組み入れることはできない。
したがって、また、高コスト処理と低コスト処理とで並列度を使い分けることもできない。
【０００９】
本発明は、上記のような課題を解決することを主な目的としており、検索条件の実行コストの高低に応じて抽出処理における並列度を使い分けることを可能にし、問合せの実行時間の短縮を図ることを主な目的とする。
【課題を解決するための手段】
【００１０】
本発明に係る情報処理装置は、
検索の対象となる検索対象テーブルから複数の検索条件の組合せに適合するレコードを抽出するようデータベースサーバ装置に要求する問合せ文を入力する問合せ文入力部と、
前記問合せ文入力部により入力された入力問合せ文の検索条件ごとに、検索実行時の実行コストが閾値以上であるか否かを判断し、検索実行時の実行コストが閾値未満である検索条件を第１の検索条件カテゴリーに分類し、検索実行時の実行コストが閾値以上である検索条件を第２の検索条件カテゴリーに分類する検索条件分類部と、
前記第１の検索条件カテゴリーに分類された検索条件の組合せに適合するレコードを前記検索対象テーブルから抽出する第１の抽出処理と、前記第１の抽出処理により抽出されたレコードから前記第２の検索条件カテゴリーに分類された検索条件の組合せに適合するレコードを抽出する第２の抽出処理とを実行するよう前記データベースサーバ装置に要求する問合せ文を、前記入力問合せ文を変換して生成する問合せ文変換部とを有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、検索実行時の実行コストに基づいて、問合せ文に含まれる検索条件を第１の検索条件カテゴリーと第２の検索条件カテゴリーとに分類し、第１の検索条件カテゴリーについて抽出処理と、第２の検索条件カテゴリーについての抽出処理とを区別するため、実行コストの高低に応じて並列度を使い分けることができ、問合せの実行時間の短縮を図ることができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係るデータベース管理システムの全体構成例を示す図。
【図２】実施の形態１に係るデータ格納装置の構成例を示す図。
【図３】実施の形態１に係る問合せ変換装置の構成例を示す図。
【図４】実施の形態１に係る問合せ変換装置の動作例を示すフローチャート図。
【図５】実施の形態１に係る問合せ文の再生成の例を示す図。
【図６】実施の形態１に係る問合せ文の再生成の例を示す図。
【図７】実施の形態１に係る問合せ文の再生成の例を示す図。
【図８】実施の形態１に係る選択実行関数の動作例を示す図。
【図９】実施の形態２に係るデータベース管理システムの全体構成例を示す図。
【図１０】実施の形態３に係るデータ格納装置の構成例を示す図。
【図１１】実施の形態３に係る問合せ変換装置の構成例を示す図。
【図１２】実施の形態３に係る問合せ変換装置の動作例を示すフローチャート図。
【図１３】実施の形態３に係る暗号データベースのテーブル定義例を示す図。
【図１４】実施の形態３に係る問合せ文の再生成の例を示す図。
【図１５】実施の形態１に係るデータベースサーバ装置の動作例を説明する図。
【図１６】実施の形態１に係るスレーブ装置の並列処理を説明する図。
【図１７】実施の形態１〜３に係る問合せ変換装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【００１３】
実施の形態１．
実施の形態１〜３では、実行計画の最適化と、複数レコードを同時処理する並列化とを両立する、問合せ変換装置を説明する。
実施の形態１〜３における問合せ変換装置は、入力、出力共に問合せ文である。
問合せ文のレベルで、実行計画最適化と並列化を両立するための処理命令を組み込むことにより、既存のデータベース管理システムを改修することなく、問合せ実行時間の短縮効果を得ることが可能となる。
具体的には、問合せ文の選択処理として記述された条件のうち、低コストの条件を優先的に評価し、絞込み処理を効率化すると共に、高コストの検索条件のみをレコード単位で並列化することで、問合せの実行時間を短縮することが可能となる。
【００１４】
以下の説明では、問合せ変換装置を、データベース管理システムに適用した例を挙げる。
なお、実施の形態１及び実施の形態２では、データベースを利用するアプリケーションを具体的に定めずに、問合せ変換装置の一般的な構成や動作について説明する。
具体的なアプリケーションへの適用については、実施の形態３で説明する。
【００１５】
図１は、本実施の形態の問合せ変換装置を適用した、データベース管理システムの構成例を示す。
問合せ発行装置２００（データベースクライアントに相当）は、ネットワーク５００を通じて、問合せ変換装置１００と接続される。
問合せ変換装置１００は、データベースサーバ装置３００と接続されており、データベースサーバ装置３００はデータ格納装置４００と接続されている。
また、データベースサーバ装置３００には、複数のスレーブ装置６００が接続されている。
スレーブ装置６００は、データベースサーバ装置３００の外部の計算機であってもよいし、データベースサーバ装置３００がマルチプロセスに対応している場合はデータベースサーバ装置３００で実行される各プロセスであってもよい。
図１の例では、データベースサーバ装置３００の外部の３台の計算機をスレーブ装置６００としている。
スレーブ装置６００は、データベースサーバ装置３００の管理下で、データ格納装置４００の種々のデータを参照することができる。
【００１６】
問合せ発行装置２００は、ユーザの要求に応じて問合せ文を生成し、データベースサーバ装置３００へ発行する。
問合せ文を記述するデータベース言語としては、例えば、標準ＳＱＬや、各データベース管理システムで独自に拡張されたＳＱＬ言語が挙げられる。
【００１７】
問合せ変換装置１００は、問合せ発行装置２００が発行した問合せ文を受け取り、問合せ文が選択処理（ＳＱＬのＷＨＥＲＥ句に相当）を含む場合に、問合せ文を目的の形に変換し、データベースサーバ装置３００へ発行する。
問合せ文が選択処理を含まない場合には、問合せ文を変換せずに、データベースサーバ装置３００へ発行する。
問合せ変換装置１００は、情報処理装置の例に相当する。
【００１８】
データベースサーバ装置３００は、問合せ変換装置１００から受け取った問合せ文の解析を行い、問合せ（データ格納装置４００内のデータの検索）を実行する。
問合せの実行時には、必要であれば、データ格納装置４００に格納された種々のデータを参照、または、変更する。
【００１９】
図２は、データ格納装置４００の詳細を示したものである。
データ格納装置４００には、少なくともデータ４１０、カタログ情報４２０、演算コスト情報４３０を含む種々のデータが格納されている。
データ４１０は、データベース管理システムにおいて、管理情報を含まないデータそのものを指す。
カタログ情報４２０は、データベースカタログ情報を含むデータが格納される。
演算コスト情報４３０は、データベース管理システムで定義された演算や関数の実行コスト情報を含むデータが格納されている。
演算コスト情報４３０を参照することで、問合せ変換装置１００、および、データベースサーバ装置３００は、問合せに記述される各演算の実行コストを見積もることができる。
【００２０】
次に、問合せ変換装置１００の詳細な構成を、図３を用いて説明する。
問合せ変換装置１００は、問合せ文入力部１１０、問合せ解析部１２０、副問合せ文生成部１３０、並列処理指示部１４０、問合せ文再生成部１５０から構成される。
【００２１】
問合せ文入力部１１０は、問合せ発行装置２００がネットワーク５００を介して発行した問合せ文１０１を受け取り、問合せ変換装置１００へ入力する。
問合せ文１０１は、データ格納装置４００のデータ４１０内の検索の対象となるテーブル（検索対象テーブル）から、複数の検索条件の組合せに適合するレコードを抽出するよう要求するメッセージである。
【００２２】
問合せ解析部１２０は、入力された問合せ文１０１の解析を行い、問合せ変換に必要な情報を取得する。
問合せ解析部１２０は、必要に応じて、カタログ情報４２０や演算コスト情報４３０などの管理情報を参照する。
問合せ文１０１が選択処理を含まない場合は、問合せ文１０１を変換せずに、変換済み問合せ文１０２として出力する。
【００２３】
副問合せ文生成部１３０は、問合せ文１０１に選択処理が含まれる場合に、問合せ解析部１２０による解析結果を元に、選択処理の中から、高コスト処理を除いた、低コスト処理のみで形成される副問合せ文（第１の問合せ文の例）を生成する。
副問合せ文生成部１３０は、必要に応じて、カタログ情報４２０や演算コスト情報４３０などの管理情報を参照する。
【００２４】
副問合せ文生成部１３０は、より具体的には、問合せ文１０１の検索条件ごとに、検索実行時の実行コストが閾値以上であるか否かを判断し、検索実行時の実行コストが閾値未満である検索条件を低コストの検索条件（第１の検索条件カテゴリーの例）に分類し、検索実行時の実行コストが閾値以上である検索条件を高コストの検索条件（第２の検索条件カテゴリーの例）に分類する。
なお、以下では、低コストの検索条件を低コスト処理、高コストの検索条件を高コスト処理という。
また、副問合せ文生成部１３０は、低コスト処理に分類された検索条件の組合せに適合するレコードを検索対象テーブルから抽出する第１の抽出処理の実行を要求する副問合せ文を、問合せ文１０１を変換して生成する。
副問合せ文生成部１３０は、検索条件分類部の例に相当する。
また、副問合せ文生成部１３０は、後述の問合せ文再生成部１５０とともに、問合せ文変換部の例に相当する。
【００２５】
並列処理指示部１４０は、副問合せ文生成部１３０において除かれた、０個以上の各高コスト処理に対して、処理を並列化することを指示する命令を出力する。
並列処理指示部１４０は、より具体的には、データベースサーバ装置３００に、第１の抽出処理により抽出された複数のレコードを、それぞれが１つ以上のレコードで構成される複数のブロックに分割し、後述の第２の抽出処理を複数のブロックに対して並列に実行するよう指示する。
並列処理指示部１４０は、並列処理制御部の例に相当する。
【００２６】
問合せ文再生成部１５０は、副問合せ文生成部１３０で生成された副問合せ文と、副問合せ文生成部１３０において除かれた、０個以上の高コスト処理とを入力に持ち、問合せ文１０１における選択処理の結果を入力とするような後続の処理を実行するのに十分なデータの集合を出力するような関数（選択処理実行関数）の出力を、前記後続の処理への入力とするような問合せ文（第２の問合せ文の例）を再生成する。
つまり、問合せ文再生成部１５０は、副問合せ文生成部１３０で生成された副問合せ文を含み、副問合せ文の実行（第１の抽出処理の実行）により抽出されたレコードから高コスト処理に分類された検索条件の組合せに適合するレコードを抽出する第２の抽出処理を実行するよう要求する問合せ文を、問合せ文１０１を変換して生成する。
そして、問合せ文再生成部１５０は、再生成した問合せ文を、変換済み問合せ文１０２として出力する。
なお、変換済み問合せ文１０２の生成の具体的な方法は、問合せ変換装置１００の動作説明において説明する。
問合せ文再生成部１５０は、前述の副問合せ文生成部１３０とともに、問合せ文変換部の例に相当する。
【００２７】
次に、問合せ変換装置１００の動作について図４を用いて説明する。
【００２８】
問合せ変換装置１００に問合せ文１０１が到着すると、問合せ文入力部１１０は、問合せ文１０１を受け取る（Ｓ１１０）。
問合せ解析部１２０は、問合せ文１０１を解析する（Ｓ１２０）。
解析の結果、問合せ文１０１が、選択処理（ＳＱＬのＷＨＥＲＥ句に相当）を含む場合は（Ｓ１３０でＹＥＳ）、副問合せ文生成部１３０が、選択処理の中から、高コスト処理を除いた、低コスト処理のみで形成される副問合せ文を生成する（Ｓ１４０）。
問合せ文１０１が、選択処理を含まない場合は（Ｓ１３０でＮＯ）、問合せ文１０１を変換せずに、問合せ解析部１２０が、変換済み問合せ文１０２として出力する（Ｓ１８０）。
【００２９】
Ｓ１４０において除かれた、０個以上の高コスト処理に対して、並列化するよう予めシステムで設定されている場合は（Ｓ１５０でＹＥＳ）、並列処理指示部１４０が、処理Ｓ１４０において除かれた、０個以上の各高コスト処理に対して、処理を並列化することを指示する命令をデータベースサーバ装置３００に出力する（Ｓ１６０）。
高コスト処理に対する並列化が設定されていない場合は、処理Ｓ１６０を飛ばし、処理Ｓ１７０に進む。
【００３０】
問合せ文再生成部１５０は、処理Ｓ１４０で生成された副問合せ文、０個以上の高コスト処理、および、処理Ｓ１６０で出力された並列化処理命令を入力として、問合せ文を再生成し（Ｓ１７０）、再生成した問合せ文を変換済み問合せ文１０２として出力する（Ｓ１８０）。
【００３１】
処理Ｓ１２０で適用される問合せ文の解析技術については、公知の技術、あるいはそれらの自明な拡張で実現可能である。
例えば、オープンソースのデータベース管理システムＰｏｓｔｇｒｅＳＱＬでは、ＳＱＬ解析処理を含む全ソースコードが公開されている。
【００３２】
処理Ｓ１３０では、ＳＱＬの場合、選択処理を含む問合せ文として、少なくとも、ＷＨＥＲＥ句を含むＳＥＬＥＣＴ文、および、ＵＰＤＡＴＥ文が含まれる。
【００３３】
処理Ｓ１４０の動作を、具体例を交えて説明する。次のＳＱＬ文を考える（数１）。
【００３４】
【数１】
0005800720.tif 000002
【００３５】
ここで、ｏｐ＿ｉ（ｉ＝１，２，…，Ｎ）は適当な二項演算子である。
重要なのは、ｎ個の条件式が論理積で結合されている点である。
更に、各ｏｐ＿ｉには、実行コストが設定されているものとする。
実行コストは演算コスト情報４３０に格納されており、問合せ解析部１２０、あるいは、副問合せ文生成部１３０において参照される。
ここでは、簡単のため、演算ｏｐ＿ｉには実行コスト（１００＊ｉ）が設定されているものとする。すなわち、ｉが大きいほど、演算ｏｐ＿ｉの実行コストが大きく、実行時間がかかるという状況である。
【００３６】
このとき、システム管理者等によって、予め閾値θが設定されているとする。
この閾値θは、副問合せ文生成部１３０において、高コスト処理と低コスト処理とを分ける基準となる。
実行コストが閾値θ未満となる演算がｏｐ＿ｉ（１＝１，２，…，Ｋ）であったとすると、副問合せ文生成部１３０は、低コスト処理のみで形成される副問合せ文ＳｕｂＱｒｙを次にように生成する（数２）。
【００３７】
【数２】
0005800720.tif 000003
【００３８】
副問合せ文を生成する目的は、選択処理の絞込み効率向上を目的としているため、副問合せ文を形成する条件群は、元の問合せ文１０１において、論理積により切り離されていることが要件となる。
また、副問合せ文生成の際に除かれた高コスト処理、および、カラムｃの射影処理を後に実行可能とするために、高コスト処理で使用するカラム群、および、カラムｃを、副問合せ文内で選択されるカラムに全て含める必要がある。
【００３９】
数１による例は最も基本的な場合であるが、ここから様々な応用を考えることができる。
例えば、一般の論理式は、論理積標準形に代表されるように、論理積で結合された形式で表すことが可能であるため、次のような一般形を想定することができる（数３）。
【００４０】
【数３】
0005800720.tif 000004
【００４１】
ここで、ｃｏｎｄ＿ｉ（ｉ＝１，２，…，Ｎ）は適当な論理式である。
数３では、各ｃｏｎｄ＿ｉを形成する演算子が単一であるとは限らないため、各論理式の実行コストを、各ｃｏｎｄ＿ｉを形成する演算子の中で最も実行コストが大きいもの、として定義することで、数１の場合と同様の副問合せ文生成手法が適用できる。
【００４２】
数３の特別な場合として、高コスト処理を形成する論理式と、低コスト処理を形成する論理式とが、論理積で結合されている場合がある（数４）。
【００４３】
【数４】
0005800720.tif 000005
【００４４】
数４において、ｈｉｇｈｅｒ＿ｃｏｓｔ＿ｐａｒｔとｌｏｗｅｒ＿ｃｏｓｔ＿ｐａｒｔは適当な論理式であり、ｌｏｗｅｒ＿ｃｏｓｔ＿ｐａｒｔが実行コストの小さい処理に対応する。数４に対応する副問合せ文ＳｕｂＱｒｙは数５のようになる。
【００４５】
【数５】
0005800720.tif 000006
【００４６】
ここで、ｈｉｇｈｅｒ＿ｓｅｌｅｃｔ＿ｌｉｓｔは、高コスト処理ｈｉｇｈｅｒ＿ｃｏｓｔ＿ｐａｒｔを実行するために必要なカラム群を指す。
【００４７】
なお、数１、数３、数５はいずれもＳＥＬＥＣＴ文の例であるが、ＵＰＤＡＴＥ文の場合も同様に考えることができる。
ここでは、数１に対応するＵＰＤＡＴＥ文の例を挙げる（数６）。
【００４８】
【数６】
0005800720.tif 000007
【００４９】
数６に対応する副問合せ文ＳｕｂＱｒｙは数７のようになる。
【００５０】
【数７】
0005800720.tif 000008
【００５１】
ここで、ＰＲＩＭＡＲＹＫＥＹはテーブル内の主キーを指す。
ＵＰＤＡＴＥ文の場合に、副問合せ文内で主キーを選択する理由については、後で説明する。
副問合せ文生成の目的は、選択処理の絞込み効率向上であるため、元の問合せ文がＵＰＤＡＴＥ文であっても、副問合せ文はＳＥＬＥＣＴ文となることに注意されたい。
【００５２】
次に、処理Ｓ１７０の動作を、具体例を交えて説明する。
処理Ｓ１７０において、問合せ文再生成部１５０は、処理Ｓ１４０で生成された副問合せ文と、処理Ｓ１４０において除かれた、０個以上の高コスト処理を形成する論理式とを入力に持ち、問合せ文１０１における選択処理の結果を入力とするような後続の処理を実行するのに十分なデータの集合を出力するような関数（選択処理実行関数）の出力を、前記後続の処理への入力とするような問合せ文を再生成する。
【００５３】
ここで、「選択処理の結果を入力とするような後続の処理」の、具体例を挙げる。数１で表されるＳＥＬＥＣＴ文の場合、この後続の処理は、カラムｃへの射影処理を指す。
また、数６で表されるＵＰＤＡＴＥ文の場合、後続の処理は、「ｃ＝ｃ＊１．１」で表されるカラムｃの更新処理を指す。
【００５４】
図５にＳＥＬＥＣＴ文再生成の具体例を示す。
図５の例は、数１を用いた例であり、コスト情報の設定等も数１の例と同様である。
変換後の問合せ文において、ＦＲＯＭ句に表れるＦｕｎｃが上述の選択処理実行関数に相当する。
関数Ｆｕｎｃの引数は、処理Ｓ１４０で生成した副問合せ文ＳｕｂＱｒｙ、および、処理Ｓ１４０で除かれた高コスト処理群である。
関数Ｆｕｎｃの戻り値は、後の射影処理で必要となるカラムｃを含むような、選択結果のデータ集合である。
【００５５】
図６にＳＥＬＥＣＴ文再生成の別の具体例を示す。
図６の例では、処理Ｓ１６０で出力された並列処理命令を選択処理実行関数Ｆｕｎｃに引数として与える例である。
高コスト処理「ａ＿Ｎ  ｏｐ＿ｎ  ｂ＿Ｎ」の次の引数「０」が、並列処理対象か否かのフラグとなっている。
また、変形例として、並列多重度を自然数として渡す方法が挙げられる。
また、図６のように、並列処理命令を明示的に引数とするのではなく、与えられた高コスト処理は、暗黙的に全て並列化対象として扱う、というようにシステム管理者等が設定するという方法もある。
【００５６】
図７にＵＰＤＡＴＥ文再生成の具体例を示す。図の例は、数６を用いた例であり、コスト情報の設定等は数１の例と同様である。
ここで、ＰＲＩＭＡＲＹＫＥＹはテーブル内の主キーを表す。
基本的な考え方は、ＳＥＬＥＣＴ文のときと同様であるが、ＵＰＤＡＴＥ文においては、選択処理を実行するテーブルと更新対象のテーブルが同一のテーブルであるという規則があるため、変換に工夫が必要となる。
そこで、関数Ｆｕｎｃによる選択結果として生成される一時テーブル（図７のｓｕｂ＿ｔ）と、更新対象のテーブル（図７のｔ）とを、主キーによって結合することで、この問題を解決している。
このため、本方法を用いる限り、更新対象のテーブルには主キー、あるいは、それに準じるカラムが設定されていることが要件となる。
【００５７】
選択処理実行関数Ｆｕｎｃは、適当なプログラミング言語で作成されたユーザ定義の関数として実現することができる。
多くのデータベース管理システムでは、ユーザが独自に定義した関数、演算をデータベース言語に組み入れて利用することが可能となっている。
例えば、オープンソースのデータベース管理システムＰｏｓｔｇｒｅＳＱＬや、商用データベースであるＯｒａｃｌｅ  Ｄａｔａｂａｓｅ  １１ｇでは、演算による選択結果のデータ集合を、一時テーブルとして出力することが可能とする機能を、ユーザ定義のＣ言語関数においてサポートしており、本実施の形態を適用することができる。
【００５８】
選択処理実行関数の動作について、図８を用いて説明する。
選択処理実行関数はデータベースサーバ装置３００によって、問合せ実行時に呼び出される。
選択処理実行関数が起動されると、選択処理実行関数は、呼び出し元のデータベースサーバ装置３００を呼び出し、入力された副問合せ文を実行させ、結果を受け取る（Ｓ２１０）。
入力された高コスト処理のうち、未処理のものがあれば（Ｓ２２０）、未処理の高コスト処理を１つ選択し実行し、結果を受け取る（Ｓ２３０）。
この際、処理Ｓ１６０により並列処理命令が併せて入力されている場合は、並列多重度を増やして（並列処理命令に適合する並列多重度にして）、処理を実行する。
未処理の高コスト処理がなくなれば（Ｓ２２０）、結果を出力し、処理を完了する（Ｓ２４０）。
【００５９】
処理Ｓ２１０では、例えばＰｏｓｔｇｒｅＳＱＬの場合、ＳＰＩ（Ｓｅｒｖｅｒ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）というインタフェースを利用して、Ｃ言語のユーザ定義関数からＰｏｓｔｇｒｅＳＱＬサーバを呼び出し、データ集合の受け渡しが可能である。
商用データベースであるＯｒａｃｌｅ（登録商標）  Ｄａｔａｂａｓｅ  １１ｇにおいても、ＯＣＩ（Ｏｒａｃｌｅ（登録商標）  Ｃａｌｌ  Ｉｎｔｅｒｆａｃｅ）を利用して、同様の操作が可能である。
【００６０】
処理Ｓ２１０において、未処理の高コスト処理を１つ選択する方法として、実行コストの小さい順に選択するという方法がある。
こうすることで、絞込み効率を向上させることができる。
【００６１】
ここで、変換済み問合せ文１０２を入力したデータベースサーバ装置３００で行われる動作の具体例を図１５及び図１６を参照して説明する。
図１５は、データベースサーバ装置３００が検索対象とする検索対象テーブルの概略を示している。
図１６は、データベースサーバ装置３００が副問い合わせ文ＳｕｂＱｒｙを実行して抽出したレコードに対する、スレーブ装置６００の並列処理を説明している。
【００６２】
図１５のａ＿１、ａ＿２、ａ＿Ｋ、ａ＿（Ｋ＋１）、ａ＿（Ｋ＋２）、ａ＿Ｎはカラム名を示しており（つまり、図１５の例では、Ｋ＝３、Ｎ＝６）、図５の条件式（ａ＿１  ｏｐ＿１  ｂ＿１）等に対応する。
また、図１５のｃもカラム名を示している。
ｃ＿１、ｃ＿２、ｃ＿３等はカラムｃの値である。
ｃ＿１、ｃ＿２、ｃ＿３等は各レコードを識別できる値である。
更に、図１５の「Ｘ」は、検索条件に合致していることを示している。
例えば、図１５のｃ＿１レコードでは、カラムａ＿１に「Ｘ」が示されているが、これはｃ＿１レコードは検索条件（ａ＿１  ｏｐ＿１  ｂ＿１）に合致していることを意味する。
図１６においても、これらは同じである。
【００６３】
データベースサーバ装置３００では、図５の副問い合わせ文ＳｕｂＱｒｙを実行する。
図１５の例では、データベースサーバ装置３００は、低コストの検索条件（ａ＿１  ｏｐ＿１  ｂ＿１）、（ａ＿２  ｏｐ＿２  ｂ＿２）、（ａ＿Ｋ  ｏｐ＿Ｋ  ｂ＿Ｋ）の組合せに適合するレコードのレコード名ｃと、そのレコードにおけるカラムａ＿（Ｋ＋１）、ａ＿（Ｋ＋２、ａ＿Ｎの値を抽出する（第１の抽出処理）。
副問い合わせ文ＳｕｂＱｒｙの実行の結果、図１５の例では、矢印が示されているレコードが抽出される。
【００６４】
そして、並列処理指示部１４０により並列化が指示されている場合（図４のＳ１５０でＹＥＳの場合）に、データベースサーバ装置３００は、高コストの検索条件についての抽出処理を複数のスレーブ装置６００に並列に実行させる。
例えば、データベースサーバ装置３００は、副問い合わせ文ＳｕｂＱｒｙの実行により得られたレコード群を、所定の単位で分割し、分割により得られたブロックを複数のスレーブ装置６００に出力し、複数のスレーブ装置６００にブロックごとの抽出処理を並列に実行させる。
図１６の例では、データベースサーバ装置３００は、副問い合わせ文ＳｕｂＱｒｙの実行により得られたレコード群を２レコード単位で分割し、３つのスレーブ装置６００の各々に２レコードごとのブロックを出力する。
そして、各スレーブ装置６００では、高コストの検索条件（ａ＿（Ｋ＋１）  ｏｐ＿（Ｋ＋１）  ｂ＿（Ｋ＋１））、（ａ＿（Ｋ＋２）  ｏｐ＿（Ｋ＋２）  ｂ＿（Ｋ＋２））、（ａ＿Ｎ  ｏｐ＿Ｎ  ｂ＿Ｎ）の組合せに適合するレコードのレコード名ｃを抽出し（第２の抽出処理）、データベースサーバ装置３００に出力する。
【００６５】
なお、図１６では、高コストの並列処理を全てスレーブ装置６００で実行することとしているが、並列処理の一部をデータベースサーバ装置３００が実行するようにしてもよい。
また、データベースサーバ装置３００がマルチプロセスに対応している場合には、データベースサーバ装置３００で全ての並列処理を実行するようにしてもよい。
【００６６】
また、図１５の例では、説明の簡明のために、カラム数が少ないテーブルを例にして説明を行ったが、どのような大きさのテーブルであっても、同様の手順により問合せ実行時間の短縮を図ることができる。
【００６７】
以上で述べたように、実施の形態１においては、問合せ変換装置１００に入力された問合せ文１０１に対して、適切な問合せ文変換を施すことで、問合せの実行結果を変えることなく、実行計画の最適化と、複数レコードを同時処理する並列化とを両立させることが可能となる。
問合せ文のレベルで、実行計画最適化と並列化を両立するための処理命令を組み込むことにより、既存のデータベース管理システムを改修することなく、問合せ実行時間の短縮効果を得ることが可能となる。
このように、本実施の形態では、検索実行時の実行コストに基づいて、問合せ文に含まれる検索条件を低コストと高コストに分類し、低コストの検索条件について抽出処理と、高コストの検索条件についての抽出処理とを区別するため、実行コストの高低に応じて並列度を使い分けることができ、問合せの実行時間の短縮を図ることができる。
【００６８】
以上、本実施の形態では、
データベース管理システムにおいて、選択処理を含む問合せ文を変換する問合せ変換装置であって、
１）問合せ文を入力する問合せ文入力部と、
２）入力された問合せ文の解析を行う問合せ解析部と、
３）問合せ解析結果と、演算の実行コスト情報とを元に、前記問合せ文の選択処理の中から、高コスト処理を除いた、低コスト処理のみで形成される副問合せ文を生成する、副問合せ文生成部と、
４）少なくとも、前記副問合せ文と、前記副問合せ文生成部において除かれた、０個以上の高コスト処理とを入力に持ち、前記問合せ文において、前記選択処理の結果を入力とするような後続の処理を実行するのに十分なデータの集合を出力するような関数（選択処理実行関数）の出力を、前記後続の処理への入力とするような問合せ文を再生成する、問合せ文再生成部と
を有する問合せ変換装置を説明した。
【００６９】
また、本実施の形態では、
前記問合せ変換装置は、
前記副問合せ文生成部において除かれた、０個以上の各高コスト処理に対して、処理を並列化することを指示する命令を、前記選択処理実行関数へ入力する並列処理指示部を有することを説明した。
【００７０】
また、本実施の形態では、
前記問合せ文はデータ参照文であって、前記問合せ変換装置は、
前記選択処理の結果を入力とするような後続の処理は、射影処理である
ことを説明した。
【００７１】
また、本実施の形態では、
前記問合せ文はデータ更新文であって、前記問合せ変換装置は、
前記選択処理の結果を入力とするような後続の処理は、更新処理である
ことを説明した。
【００７２】
また、本実施の形態では、
データベース管理システムにおいて、選択処理を含む問合せ文を変換する問合せ変換方法であって、
１）問合せ文を入力する問合せ文入方法と、
２）入力された問合せ文の解析を行う問合せ解析方法と、
３）問合せ解析結果と、演算の実行コスト情報とを元に、前記問合せ文の選択処理の中から、高コスト処理を除いた、低コスト処理のみで形成される副問合せ文を生成する、副問合せ文生成方法と、
４）少なくとも、前記副問合せ文と、前記副問合せ文生成方法において除かれた、０個以上の高コスト処理とを入力に持ち、前記問合せ文において、前記選択処理の結果を入力とするような後続の処理を実行するのに十分なデータの集合を出力するような関数（選択処理実行関数）の出力を、前記後続の処理への入力とするような問合せ文を再生成する、問合せ文再生成方法と
を有する問合せ変換方法を説明した。
【００７３】
実施の形態２．
本実施の形態では、問合せ変換装置を、データベース管理システムに適用した別の例を挙げる。
本実施の形態は、実施の形態１と比較して、システムの構成のみが異なる。
そこで、本実施の形態では、システムの構成のみを説明する。
【００７４】
図９は、本実施の形態の問合せ変換装置を適用した、データベース管理システムを示す構成図である。
問合せ発行装置２００ａ（データベースクライアントに相当）は、ネットワーク５００を通じて、データベースサーバ装置３００と接続されており、データベースサーバ装置３００はデータ格納装置４００と接続されている。
また、データベースサーバ装置３００には、複数のスレーブ装置６００が接続されている。
問合せ変換装置１００ａは、問合せ発行装置２００ａの部分装置として適用される。
【００７５】
問合せ発行装置２００ａでは、問合せ文生成部２０１が、ユーザの要求に応じて問合せ文を生成し、生成された問合せ文を発行する前に、問合せ変換装置１００ａが、必要に応じて問合せ文を変換する。
その後、問合せ発行装置２００ａは、変換済みの問合せ文を問合せ変換装置１００ａから受け取り、データベースサーバ装置３００へ変換済みの問合せ文を発行する。
この点以外は、実施の形態１と同様であるため、説明を省略する。
なお、本実施の形態では、問合せ文生成部２０１及び問合せ変換装置１００ａを含む問合せ発行装置２００ａが情報処理装置の例に相当する。
【００７６】
実施の形態３．
本実施の形態では、問合せ変換装置を、カラム単位で暗号化されたデータを格納するデータベースを扱うシステム（以下、「暗号化データベースシステム」という）へ適用した例を挙げる。
本実施の形態は、実施の形態１や実施の形態２の構成に、暗号化に対応させた構成を追加することで実現する。
そこで、本実施の形態では、実施の形態１との差異部分のみを説明する。
【００７７】
暗号化データベースシステムへ適用した構成図は、図１、図１０、および図１１で示される。
図１０で示されるデータ格納装置４００、および、図１１で示される絞込み処理追加部１６０が、実施の形態１との差異部分である。
本実施の形態では、絞込み処理追加部１６０も問合せ文変換部の例に相当する。
【００７８】
図１０で示されるデータ格納装置４００では、カラム毎に適用される暗号化方式を記録した暗号化方式情報４４０、および、カラム毎に設定された機密度に関する機密度情報４５０が追加の情報となっている。
これら追加の情報は、他の情報と同様に、問合せ変換装置１００、および、データベースサーバ装置３００から参照することができる。
【００７９】
絞込み処理追加部１６０を追加した問合せ変換装置１００の動作を、図１２を用いて説明する。
ここでは、処理Ｓ１９０が追加されている。
【００８０】
絞込み処理追加部１６０は、特定のカラムを参照する演算処理において、処理を高速化するための絞込み処理用カラムが別途用意されている場合に、問合せ解析部１２０による解析結果を元に、問合せ文１０１の選択処理結果の正確さを損なわないような絞込み処理用カラムによる処理を追加し、処理を追加した問合せ文を、副問合せ文生成部１３０への入力とする（Ｓ１９０）。
【００８１】
絞込み処理追加の具体例を説明する。
データの暗号化方式として、表１の３種類の方式をカラムの機密度毎に使い分ける場合を考える。
なお、以降で使用する「確定的暗号」「確率的暗号」「検索可能暗号」といった用語は、一定の性質を持つ暗号化方式の種類を表すものであり、個別の暗号化方式を特定するものではない。
【００８２】
【表１】
0005800720.tif 000009
【００８３】
表１の「確定的暗号」は、平文と暗号文とが一対一に対応する方式であり、完全一致比較が可能である。
この比較は平文カラムの比較性能と同等性能で実現できる。
確定的暗号は、頻度解析に弱いという欠点があるため、暗号強度の面で確率的暗号に劣る。
【００８４】
表中の「確率的暗号」は、暗号強度の高い適当な確率的暗号方式で対象データを暗号化するため、完全一致比較を含む任意の演算が利用できない。
そこで、「確率的暗号」が適用されたカラムに関しては、検索可能暗号を検索に利用することを考える。
【００８５】
検索可能暗号とは、以下の参考文献に端を発し研究が進んでいる、データを暗号化したまま検索可能な暗号化方式を指す。
検索可能暗号により、データベースサーバ装置３００に平文および検索語の内容を漏らすことなく、検索結果を得ることが可能となる。
【００８６】
参考文献：
Ｄ．Ｘ．  Ｓｏｎｇ，  Ｄ．  Ｗａｇｎｅｒ  ａｎｄ  Ａ．  Ｐｅｒｒｉｇ，  “Ｐｒａｃｔｉｃａｌ  Ｔｅｃｈｎｉｑｕｅｓ  ｆｏｒ  Ｓｅａｒｃｈｅｓ  ｏｎ  Ｅｎｃｒｙｐｔｅｄ  Ｄａｔａ”，  ＩＥＥＥ，  ２０００．
【００８７】
検索可能暗号は、検索に使用する専用タグ（以下、「暗号化タグ」という）のみを生成する。
専用のトラップドア（暗号化した検索語のようなもの）を発行し、暗号化タグとの照合を実施する。
検索可能暗号から元の平文の情報を復元することはできず、あくまで、検索のためだけの付加情報である。
「確率的暗号」を適用したカラムでは、暗号化データを格納したカラムとは別に、検索に使用するための暗号化タグを格納するカラムを用意する。
【００８８】
暗号化タグとトラップドアの照合処理は、高いセキュリティ強度を保証するが、照合速度は遅く、「実行コストが高い処理」に該当する。
【００８９】
更に、暗号化タグとトラップドアの照合処理に関して、絞込みを高速化するための索引カラムが別途用意されているとする。
これは、例えば、暗号化前の平文データを入力とする精度の荒いハッシュ値で実現できる。
このハッシュ値による絞込み処理を前処理として行うことで、速度の遅い暗号化タグとトラップドアとの照合処理量を削減することができる。
【００９０】
以上の状況の下で、絞込み処理追加部１６０を含めた問合せ変換の具体例を図１３、図１４に示す。
図１３は、検索対象となるテーブルの定義文をＳＱＬで記述したものである。
カラムｃ＿３が確率的暗号により暗号化されるカラムであり、検索用のカラムとして、検索可能暗号で生成される暗号化タグを格納するカラムｃ＿３＿ｔａｇと、絞り込み用の索引カラムｃ＿３＿ｉｄｘが付加されている。
【００９１】
図１４は、ＳＱＬで記述された問合せ文の具体的な変換方法を示している。
図１４における変換前のＳＱＬ文において、関数ｅｎｃｒｙｐｔ＿ｄｔｒ（），ｇｅｎ＿ｔｒａｐｄｏｏｒ（）は、それぞれ、確定的暗号方式による暗号化、トラップドアの生成を表している。
但し、ここでは、簡単のため、鍵などの引数は一切省略し、暗号化対象となるデータに関する引数のみを記載している。
このように省略しても、本実施の形態を説明する上では支障をきたさない。
また、ｃｏｌｌａｔｅ（）は、暗号化タグとトラップドアの照合処理を実行するため関数である。
【００９２】
図１４における副問合せ文では、カラムｃ＿１，ｃ＿２に関する低コスト処理に加え、カラムｃ＿３の暗号化タグ照合処理の絞込みを実施するため、索引カラムｃ＿３＿ｉｄｘによる処理が追加されている。
前述したように、索引カラムｃ＿３＿ｉｄｘと暗号化前の平文データのハッシュ値（ｈａｓｈ（１２３４５６７８９））との照合処理を追加することで、暗号化タグ（ｃ＿３＿ｔａｇ）とトラップドア（ｔｒａｐｄｏｏｒ（１２３４５６７８９））との照合処理を高速化することができる。
絞込み処理追加部１６０は、索引カラムｃ＿３＿ｉｄｘを絞り込み処理に用いられる絞り込み処理用カラムとして指定し、更に、絞り込み処理を定義する問合せ文（ｃ＿３＿ｉｄｘ＝ｇｅｎ＿ｈａｓｈ（１２３４５６７８９）を生成し、当該問合せ文を副問合せ文生成部１３０に出力する（図１２のＳ１９０）。
副問合せ文生成部１３０は、絞込み処理追加部１６０からの問合せ文を含む副問合せ文を生成する（図１２のＳ１４０）。
なお、副問合せ文を生成した後は、実施の形態１で説明したように問合せ文を再生成すればよい。
図１４における変換後のＳＱＬ文は、再生成された問合せ文を表している。
【００９３】
このように、本実施の形態では、図１４に示すように、副問合せ文に、低コストであるカラムｃ＿１，ｃ＿２についての抽出処理（第１の抽出処理）が示されるとともに、絞り込み処理として、索引カラムｃ＿３＿ｉｄｘと暗号化前の平文データのハッシュ値との照合処理が示される。
この絞り込み処理は、高コストであるｃ＿３＿ｔａｇについての抽出処理（第２の抽出処理）が対象とするレコードを、カラムｃ＿１，ｃ＿２についての抽出処理（第１の抽出処理）で得られるレコードよりも絞り込むことができる。
そして、ｃ＿３＿ｔａｇについての抽出処理（第２の抽出処理）では、絞り込み処理により絞り込まれたレコードを対象にした抽出が行われるため、処理の高速化が図られる。
【００９４】
対象カラムが、暗号化されている暗号化カラムである場合に、絞込み処理追加部１６０は、対象カラムの暗号化方式（暗号化強度）に応じて、追加する絞込み処理の内容を変更させるようにしてもよい。
例えば、「確率的暗号」が適用されたカラムについて、暗号化方式の強度に比例して、索引カラムに使用するハッシュの精度を荒くするという方法がある。
これは、強度の高い暗号化方式を適用しているカラムは、機密度が高い可能性が高いため、索引による絞込み効率の向上よりも、セキュリティを優先するべきという考え方に基づいている。
この場合は、当然ながら、データ格納時には、対応するハッシュ関数を用いて、索引カラムのデータを作っておく必要がある。
【００９５】
また、対象カラムが、機密度が設定されている機密度設定カラムである場合に、絞込み処理追加部１６０は、対象カラムに設定された機密度に応じて、追加する絞込み処理の内容を変更させるようにしてもよい。
例えば、設定された機密度が高いほど、索引カラムに使用するハッシュの精度を荒くするという方法がある。
これは、機密度が高いカラムであるほど、索引による絞込み効率の向上よりも、セキュリティを優先するべきという考え方に基づいている。
この場合は、当然ながら、データ格納時には、対応するハッシュ関数を用いて、索引カラムのデータを作っておく必要がある。
【００９６】
以上で述べたように、実施の形態３においては、問合せ変換装置１００に入力された問合せ文１０１に対して、適切な問合せ文変換を施すことで、問合せの実行結果を変えることなく、実行計画の最適化と、複数レコードを同時処理する並列化とを両立させることができ、更に、適当な絞込み処理を自動追加することで、問合せの実行時間を短縮することが可能となる。
【００９７】
以上、本実施の形態では、
問合せ変換装置は、
特定のカラムを参照する演算処理において、処理を高速化するための絞込み処理用カラムが別途用意されている場合に、問合せ解析部による解析結果を元に、選択処理結果の正確さを損なわないような絞込み処理用カラムによる処理を追加する、絞込み処理追加部を有し、
絞込み処理追加部の出力を副問合せ文生成部への入力とする
ことを説明した。
【００９８】
また、本実施の形態では、
前記問合せ変換装置が適用されるデータベース管理システムは、
カラム単位で暗号化されたデータを格納するテーブルへの問合せを含み、かつ、
カラム毎のデータの暗号化方式を管理しており、
前記絞込み処理追加部は、
問合せに記述された条件が参照するカラムの暗号化方式に応じて、絞込み処理を追加する
ことを説明した。
【００９９】
また、本実施の形態では、
前記問合せ変換装置が適用されるデータベース管理システムは、
カラム単位で暗号化されたデータを格納するテーブルへの問合せを含み、かつ、
カラム毎のデータの機密度を管理しており、
前記絞込み処理追加部は、
問合せに記述された条件が参照するカラムの機密度に応じて、絞込み処理を追加する
ことを説明した。
【０１００】
最後に、実施の形態１〜３に示した問合せ変換装置１００のハードウェア構成例について説明する。
図１７は、実施の形態１〜３に示す問合せ変換装置１００のハードウェア資源の一例を示す図である。
なお、図１７の構成は、あくまでも問合せ変換装置１００のハードウェア構成の一例を示すものであり、問合せ変換装置１００のハードウェア構成は図１７に記載の構成に限らず、他の構成であってもよい。
【０１０１】
図１７において、問合せ変換装置１００は、プログラムを実行するＣＰＵ９１１（中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【０１０２】
通信ボード９１５は、図１に示すように、ネットワークに接続されている。
例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されている。
【０１０３】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【０１０４】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【０１０５】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
問合せ変換装置１００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【０１０６】
上記プログラム群９２３には、実施の形態１〜３の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【０１０７】
ファイル群９２４には、実施の形態１〜３の説明において、「〜の判断」、「〜の解析」、「〜の検索」、「〜の抽出」、「〜の生成」、「〜の再生成」、「〜の比較」、「〜の照合」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値や暗号鍵・復号鍵や乱数値やパラメータが、「〜ファイル」の各項目として記憶されている。
「〜ファイル」は、ディスクやメモリなどの記憶媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１〜３で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記憶媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【０１０８】
また、実施の形態１〜３の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態１〜３で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「情報処理方法」を実現することができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記憶媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、実施の形態１〜３の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１〜３の「〜部」の手順や方法をコンピュータに実行させるものである。
【０１０９】
このように、実施の形態１〜３に示す問合せ変換装置１００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【０１１０】
１００  問合せ変換装置、１０１  問合せ文、１０２  変換済み問合せ文、１１０  問合せ文入力部、１２０  問合せ解析部、１３０  副問合せ文生成部、１４０  並列処理指示部、１５０  問合せ文再生成部、１６０  絞込み処理追加部、２００  問合せ発行装置、２０１  問合せ文生成部、３００  データベースサーバ装置、４００  データ格納装置、４１０  データ、４２０  カタログ情報、４３０  演算コスト情報、４４０  暗号化方式情報、４５０  機密度情報、５００  ネットワーク、６００  スレーブ装置。
【図１】
0005800720.tif 000010
【図２】
0005800720.tif 000011
【図３】
0005800720.tif 000012
【図４】
0005800720.tif 000013
【図５】
0005800720.tif 000014
【図６】
0005800720.tif 000015
【図７】
0005800720.tif 000016
【図８】
0005800720.tif 000017
【図９】
0005800720.tif 000018
【図１０】
0005800720.tif 000019
【図１１】
0005800720.tif 000020
【図１２】
0005800720.tif 000021
【図１３】
0005800720.tif 000022
【図１４】
0005800720.tif 000023
【図１５】
0005800720.tif 000024
【図１６】
0005800720.tif 000025
【図１７】
0005800720.tif 000026