(57)【要約】  データ記憶部（１１１）は、外部データベース（１５０）で実行可能な演算が定義されている外部表演算ルール（１３０）を記憶する。検索条件受信部（１０３１）は、検索条件（３０１）を受信する。問合せ文生成部（１０５）は、検索条件（３０１）で外部データベース（１５０）に格納されているデータの検索と検索されたデータを用いた演算とが要求されている場合に、外部表演算ルール（１３０）に基づき、検索条件（３０１）で要求されている演算が外部データベース（１５０）で実行可能であるか否かを判断し、当該演算が外部データベース（１５０）で実行可能である場合に、検索条件（３０１）で要求されている検索と演算とを外部データベース（１５０）に実行させる問合せ文である拡張問合せ文を生成する。問合せ実行部（１０３２）は、拡張問合せ文を外部データベース（１５０）に送信する。
2016132433.tif 000002
【特許請求の範囲】
【請求項１】
外部データベースで実行可能な演算が定義されている外部表演算ルールを記憶するデータ記憶部と、
検索条件を受信する検索条件受信部と、
前記検索条件受信部により受信された前記検索条件で前記外部データベースに格納されているデータの検索と検索されたデータを用いた演算とが要求されている場合に、前記外部表演算ルールに基づき、前記検索条件で要求されている演算が前記外部データベースで実行可能であるか否かを判断し、前記検索条件で要求されている演算が前記外部データベースで実行可能である場合に、前記検索条件で要求されている検索と演算とを前記外部データベースに実行させる問合せ文である拡張問合せ文を生成する問合せ文生成部と、
前記問合せ文生成部により生成された前記拡張問合せ文を前記外部データベースに送信する問合せ実行部とを有するデータ管理装置。
【請求項２】
前記データ記憶部は、
前記外部データベースで実行可能な演算の演算子と被演算子のデータ型と演算結果のデータ型とが定義される外部表演算ルールを記憶しており、
前記問合せ文生成部は、
前記検索条件で要求されている演算の演算子と被演算子のデータ型と演算結果のデータ型とを解析し、前記検索条件で要求されている演算の演算子と被演算子のデータ型と演算結果のデータ型とが前記外部表演算ルールに定義されている場合に、前記検索条件で要求されている演算が前記外部データベースで実行可能であると判断する請求項１に記載のデータ管理装置。
【請求項３】
前記データ記憶部は、
前記外部データベースが実行可能な複数の演算が定義される外部表演算ルールを記憶しており、
前記問合せ文生成部は、
前記検索条件受信部により受信された前記検索条件で複数の演算が要求され、前記複数の演算の実行順序が指定されている場合に、
実行順序が先の演算から順に、演算ごとに、前記外部表演算ルールに基づき、前記外部データベースで演算が実行可能であるか否かを判断し、前記検索条件で要求されている検索と、前記検索条件で要求されている前記複数の演算のうち前記外部データベースで実行可能な演算とを前記外部データベースに実行させる拡張問合せ文を生成する請求項１に記載のデータ管理装置。
【請求項４】
前記データ記憶部は、
前記外部データベースからの応答の標準形式が定義される標準外部表定義を記憶しており、
前記問合せ文生成部は、
前記検索条件受信部により受信された前記検索条件で前記外部データベースに格納されているデータの検索と検索されたデータを用いた演算とが要求されている場合に、
前記標準外部表定義で定義されている前記標準形式に基づき、前記検索条件で要求されている検索を前記外部データベースに実行させる問合せ文である標準問合せ文を生成し、
前記外部表演算ルールに基づき、前記検索条件で要求されている演算が前記外部データベースで実行可能であるか否かを判断し、前記検索条件で要求されている演算が前記外部データベースで実行可能である場合に、前記標準問合せ文を書き換えて前記拡張問合せ文を生成する請求項１に記載のデータ管理装置。
【請求項５】
前記データ記憶部は、
前記外部データベースが実行可能な複数の演算が定義される外部表演算ルールを記憶しており、
前記問合せ文生成部は、
前記検索条件受信部により受信された前記検索条件で複数の演算が要求され、前記複数の演算の実行順序が指定されている場合に、
実行順序が先の演算から順に、演算ごとに、前記外部表演算ルールに基づき、前記外部データベースで演算が実行可能であるか否かを判断し、前記検索条件で要求されている検索と、前記検索条件で要求されている前記複数の演算のうち前記外部データベースで実行可能であると判断された演算とを前記外部データベースに実行させる拡張問合せ文を、前記標準問合せ文を書き換えて生成する請求項４に記載のデータ管理装置。
【請求項６】
前記データ記憶部は、
前記外部データベースが実行可能な複数の演算が定義される外部表演算ルールを記憶しており、
前記問合せ文生成部は、
前記検索条件受信部により受信された前記検索条件で複数の演算が要求され、前記複数の演算の実行順序が指定されている場合に、
実行順序が先の演算から順に、演算ごとに、前記外部表演算ルールに基づき、前記外部データベースで演算が実行可能であるか否かを判断する判断処理と、前記判断処理により前記外部データベースで実行可能であると判断された演算を前記外部データベースに実行させるための記述を拡張問合せ記述として生成する記述生成処理とを繰り返し、演算ごとの拡張問合せ記述の組み合わせにより前記拡張問合せ文を生成する請求項１に記載のデータ管理装置。
【請求項７】
前記問合せ文生成部は、
前記拡張問合せ文に対する前記外部データベースからの応答の形式が定義される拡張外部表定義を生成する請求項１に記載のデータ管理装置。
【請求項８】
前記データ管理装置は、更に、
前記問合せ文生成部により生成された前記拡張外部表定義を参照して、前記外部データベースからの応答を受信する応答受信部を有する請求項７に記載のデータ管理装置。
【請求項９】
外部データベースで実行可能な演算が定義されている外部表演算ルールを記憶するコンピュータが、
検索条件を受信し、
受信した前記検索条件で前記外部データベースに格納されているデータの検索と検索されたデータを用いた演算とが要求されている場合に、前記外部表演算ルールに基づき、前記検索条件で要求されている演算が前記外部データベースで実行可能であるか否かを判断し、前記検索条件で要求されている演算が前記外部データベースで実行可能である場合に、前記検索条件で要求されている検索と演算とを前記外部データベースに実行させる問合せ文である拡張問合せ文を生成し、
生成した前記拡張問合せ文を前記外部データベースに送信するデータ管理方法。
【請求項１０】
外部データベースで実行可能な演算が定義されている外部表演算ルールを記憶するコンピュータに、
検索条件を受信する検索条件受信処理と、
前記検索条件受信処理により受信された前記検索条件で前記外部データベースに格納されているデータの検索と検索されたデータを用いた演算とが要求されている場合に、前記外部表演算ルールに基づき、前記検索条件で要求されている演算が前記外部データベースで実行可能であるか否かを判断し、前記検索条件で要求されている演算が前記外部データベースで実行可能である場合に、前記検索条件で要求されている検索と演算とを前記外部データベースに実行させる問合せ文である拡張問合せ文を生成する問合せ文生成処理と、
前記問合せ文生成処理により生成された前記拡張問合せ文を前記外部データベースに送信する問合せ実行処理とを実行させるデータ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースを検索する技術に関する。
【背景技術】
【０００２】
特許文献１には、データ管理装置の管理対象外のデータを管理する外部データベースをデータ管理装置から検索する技術が開示されている。
データ管理装置は、例えば、ＳＱＬ’９９に準拠したＤＢＭＳ（Ｄａｔａｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）であり、外部データベースは、例えば、ＳＱＬ’９９に準拠しないＤＢＭＳである。
特許文献１の技術では、データ管理装置から外部データベースの検索を高速化するため、データ管理装置に外部データベースが保持する情報の一部を記憶させている。
そして、特許文献１の技術では、外部データベースへの検索条件がデータ管理装置に届いた場合に、データ管理装置は、データ管理装置が記憶する情報（外部データベースが保持する情報の一部）を用いて、外部データベースへの検索条件を書き換える。
特許文献１の技術では、この検索条件の書き換えにより、外部データベースをより効率的に検索できるようにしている。【０００３】
特許文献２には、外部データベースへの検索条件の生成を効率化する技術が開示されている。
特許文献２の技術では、データ管理装置が作成した外部データベースの検索条件をデータ管理装置に保持させておく。
また、特許文献２の技術では、外部データベースへの検索条件が新たにデータ管理装置に届いた場合に、データ管理装置は、データ管理装置が保持している外部データベースへの検索条件から、新たに届いた検索条件に対応する検索条件を探索する。
そして、データ管理装置は、探索した検索条件を利用して外部データベースを検索する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４４８３０３４号公報
【特許文献２】特開２００３−３１６８１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来技術では、データ管理装置から外部データベースへの検索条件の生成を効率に行うことができ、データ管理装置への検索要求から最適な外部データベースへの検索条件を得ることが可能である。
しかしながら、データ管理装置が生成した外部データベースへの検索条件を用いてデータ管理装置が外部データベースへの検索を行うためには、データ管理装置に予め保持された外部データベースの検索結果情報を用いる必要がある。
検索結果情報は、外部データベースからの検索結果の形式が定義される情報である。
検索結果情報には、例えば、検索結果に含まれるデータが抽出された外部データベースの列名及び検索結果に含まれるデータのデータ型が示される。
従来技術では、検索結果情報と同じ形式の検索結果が得られる検索条件しか外部データベースの検索に利用することができない。
従って、外部データベースに格納されているデータの検索と検索されたデータを用いる演算とが検索条件で要求されている場合に、検索結果情報に示されるデータ型が検索条件で要求されている演算の演算結果のデータ型と異なっていれば、データ管理装置は、外部データベースに演算を要求することができず、検索結果情報に基づき、データの検索のみを外部データベースに要求し、外部データベースから検索結果を受信することなる。
そして、データ管理装置は、外部データベースから受信した検索結果を用いて、検索条件で要求されている演算を行うことになる。
しかしながら、外部データベースにデータの検索と演算の両方を実行させる場合に比べて、データ管理装置が外部データベースから検索結果を受信し、受信した検索結果を用いて演算を行うと処理速度が著しく遅くなる。【０００６】
本発明は、このような事情に鑑みたものであり、外部データベースの検索と演算とが要求されている検索条件を処理する際の処理効率を向上させることを主な目的とする。
【課題を解決するための手段】
【０００７】
本発明に係るデータ管理装置は、
外部データベースで実行可能な演算が定義されている外部表演算ルールを記憶するデータ記憶部と、
検索条件を受信する検索条件受信部と、
前記検索条件受信部により受信された前記検索条件で前記外部データベースに格納されているデータの検索と検索されたデータを用いた演算とが要求されている場合に、前記外部表演算ルールに基づき、前記検索条件で要求されている演算が前記外部データベースで実行可能であるか否かを判断し、前記検索条件で要求されている演算が前記外部データベースで実行可能である場合に、前記検索条件で要求されている検索と演算とを前記外部データベースに実行させる問合せ文である拡張問合せ文を生成する問合せ文生成部と、
前記問合せ文生成部により生成された前記拡張問合せ文を前記外部データベースに送信する問合せ実行部とを有する。
【発明の効果】
【０００８】
本発明では、検索条件で要求されている演算が外部データベースで実行可能であるか否かを判断し、検索条件で要求されている演算が外部データベースで実行可能である場合に、検索条件で要求されている検索と演算とを外部データベースに実行させる拡張問合せ文を生成し、拡張問合せ文を外部データベースに送信する。
このため、本発明によれば、検索条件で要求されている検索と演算の両方を外部データベースに実行させることができ、外部データベースの検索と演算とが要求されている検索条件を処理する際の処理効率を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るデータ管理装置の機能モジュール構成例を示す図。
【図２】実施の形態１に係るシステム構成例を示す図。
【図３】実施の形態１及び２に係るデータ管理装置のハードウェア構成例を示す図。
【図４】実施の形態１に係る外部表定義処理の例を示すフローチャート図。
【図５】実施の形態１に係るデータ検索処理の例を示すフローチャート図。
【図６】実施の形態１に係る外部表定義の例を示す図。
【図７】実施の形態１に係る外部表の例を示す図。
【図８】実施の形態１に係る問合せ文生成ルールの例を示す図。
【図９】実施の形態１に係る外部表演算ルールの例を示す図。
【図１０】実施の形態１に係る外部データベース定義の例を示す図。
【図１１】実施の形態１に係る更新前の実行プランの例を示す図。
【図１２】実施の形態１に係る更新後の実行プランの例を示す図。
【図１３】実施の形態２に係るデータ管理装置の機能モジュール構成例を示す図。
【図１４】実施の形態２に係るデータ検索処理の例を示すフローチャート図。
【図１５】実施の形態２に係る拡張問合せ文生成処理の例を示すフローチャート図。
【発明を実施するための形態】
【００１０】
実施の形態１．
本実施の形態及び以降の実施の形態では、検索条件において集約演算が指定された場合に、外部データベースの検索結果のデータ型が予め保持された外部データベースの検索結果情報と異なったとしても、外部データベースの検索条件として集約演算をｐｕｓｈ−ｄｏｗｎし、外部データベースを効率的に検索可能とする構成を説明する。
【００１１】
＊＊＊構成の説明＊＊＊
図１は、本実施の形態に係るデータ管理装置１０１の機能モジュール構成例を示す。
【００１２】
データ管理装置１０１は、外部表定義アプリケーション２００で定義された外部表定義２０１を受信し、受信した外部表定義２０１の形式を変換し、後述するデータ記憶部１１１に外部表定義１２０として格納する。
また、データ管理装置１０１は、外部データベース１５０に接続されており、データ検索アプリケーション３００から検索条件３０１を受信し、受信した検索条件３０１を外部データベース１５０に送信する。
また、データ管理装置１０１は、外部データベース１５０から検索条件３０１に対する検索結果を受信し、受信した検索結果をデータ検索アプリケーション３００に送信する。
【００１３】
データ管理装置１０１は、外部表定義部１０２、検索制御部１０３、検索条件最適化部１０４、問合せ文生成部１０５及びデータ記憶部１１１から構成される。
【００１４】
外部表定義部１０２は、外部表定義アプリケーション２００から外部表定義２０１を受信し、受信した外部表定義２０１を外部表定義１２０としてデータ記憶部１１１に格納する。
外部表定義１２０は、外部表定義２０１の形式を変換した情報である。
外部表定義２０１と外部表定義１２０は形式が異なるのみであるため、以下では外部表定義１２０について説明を行うが、以下の説明は外部表定義２０１にもあてはまる。
外部表定義１２０は、外部表の形式が定義されている情報である。
外部データベース１５０は、検索条件に対して表形式の応答をデータ管理装置１０１に送信する。
外部データベース１５０からデータ管理装置１０１に応答として送信される表を外部表という。
外部表定義１２０には、この外部表の形式が定義されている。
データ検索アプリケーション３００は、外部データベース１５０に格納されているデータの検索のみを要求する検索条件と、外部データベースに格納されているデータの検索と検索されたデータを用いた演算とを要求する検索条件との２種類の検索条件を送信する。
前者を標準検索条件といい、後者を拡張検索条件という。
標準検索条件に対する応答として送信される外部表を標準外部表という。
拡張検索条件に対する応答として送信される外部表を拡張外部表という。
外部表定義１２０には、標準外部表の形式が定義されている。
外部表定義１２０は標準外部表定義ともいう。
外部表定義１２０に定義されている、標準外部表の形式を標準形式という。
一方、後述する問合せ文生成部１０５は、拡張外部表の形式が定義される外部表定義を生成する。
問合せ文生成部１０５により生成される拡張外部表の形式が定義される外部表定義を拡張外部表定義という。
また、拡張外部表定義に定義されている、拡張外部表の形式を拡張形式という。
外部データベース１５０は、標準検索条件及び拡張検索条件に対して表形式の応答をデータ管理装置１０１に送信する。
また、標準検索条件に対する外部データベース１５０からの応答を標準応答といい。拡張検索条件に対する外部データベース１５０からの応答を拡張応答という。
外部表定義１２０の詳細及び拡張外部表定義の詳細は後述する。
【００１５】
検索制御部１０３は、検索条件受信部１０３１、問合せ実行部１０３２、応答受信部１０３３及び応答送信部１０３４で構成される。
【００１６】
検索条件受信部１０３１は、データ検索アプリケーション３００から検索条件３０１を受信する。
検索条件３０１は、標準検索条件又は拡張検索条件である。
検索条件３０１がデータ管理装置１０１内のデータの検索を要求している場合もあるが、本実施の形態の特徴的な部分とは直接関係なので、以下では、検索条件３０１は標準検索条件又は拡張検索条件であるとする。
検索条件受信部１０３１は、受信した検索条件３０１を後述する検索条件最適化部１０４に出力する。
【００１７】
問合せ実行部１０３２は、後述する問合せ文生成部１０５で生成された外部データベース１５０への問合せ文を実行する。
すなわち、問合せ実行部１０３２は、問合せ文を外部データベース１５０の検索実行部１５１に送信する。
【００１８】
応答受信部１０３３は、外部データベース１５０の検索実行部１５１から問合せ文に対する応答（標準外部表又は拡張外部表）を受信する。
応答受信部１０３３は、検索実行部１５１からの応答が標準外部表であれば標準外部表定義（外部表定義１２０）を参照して検索実行部１５１からの応答を受信する。
また、応答受信部１０３３は、検索実行部１５１からの応答が拡張外部表であれば拡張外部表定義を参照して検索実行部１５１からの応答を受信する。
【００１９】
応答送信部１０３４は、応答受信部１０３３により受信された検索実行部１５１からの応答をデータ検索アプリケーション３００に送信する。
応答送信部１０３４からデータ検索アプリケーション３００に返信された応答は、データ検索アプリケーション３００において検索結果３０２として利用される。
【００２０】
検索条件最適化部１０４は、検索条件受信部１０３１から取得した検索条件３０１を解釈し、問合せ文生成部１０５に外部データベース１５０への問合せ文の生成を指示する。
また、検索条件最適化部１０４は、問合せ文生成部１０５により生成された問合せ文を問合せ実行部１０３２に出力する。
【００２１】
問合せ文生成部１０５は、検索条件３０１が拡張検索条件である場合、すなわち、外部データベース１５０に格納されているデータの検索と検索されたデータを用いた演算とが検索条件３０１において要求されている場合に、検索条件３０１で要求されている検索と演算とを外部データベース１５０に実行させる問合せ文を生成する。
検索条件３０１で要求されている検索と演算とを外部データベース１５０に実行させる問合せ文を拡張問合せ文という。
より具体的には、問合せ文生成部１０５は、標準外部表定義（外部表定義１２０）で定義されている標準形式に基づき、検索条件３０１で要求されている検索のみを外部データベース１５０に実行させる問合せ文である標準問合せ文を生成する。
そして、問合せ文生成部１０５は、後述の外部表演算ルール１３０に基づき、検索条件３０１で要求されている演算が外部データベース１５０で実行可能であるか否かを判断する。
検索条件３０１で要求されている演算が外部データベース１５０で実行可能である場合に、問合せ文生成部１０５は、標準問合せ文を書き換えて拡張問合せ文を生成する。
検索条件３０１が標準検索条件である場合は、問合せ文生成部１０５は、標準問合せ文の書換えは行わない。
問合せ文生成部１０５は、標準問合せ文生成部１０５１と拡張問合せ文生成部１０５２で構成される。
標準問合せ文生成部１０５１は、標準問合せ文を生成する。
拡張問合せ文生成部１０５２は、標準問合せ文を書き換えて拡張問合せ文を生成する。
【００２２】
データ記憶部１１１は、外部表定義１２０、外部表演算ルール１３０、外部データベース定義１４０、実行プラン１４５及び問合せ文生成ルール１４７を記憶する。
【００２３】
外部表定義１２０は、外部表定義２０１である。
外部表定義１２０は、図６に示す情報である。
図６は、図７に示す外部表の形式を定義している。
外部表定義１２０は、外部表ＩＤ１２１、列名１２２、データ型１２３で構成される。
外部表ＩＤ１２１には、外部表のＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）が記述される。
図６の「ｆｔ０００１」は、図７の外部表のＩＤである。
列名１２２には、外部表に含まれる列の名称が記述される。
図６では、図７の外部表の列「ｆｔａ＿１」、「ｆｔａ＿２」、「ｆｔａ＿３」が記述されている。
データ型１２３には、列名１２２の欄に示される各列のデータのデータ型が記述される。
図６では、図７の「ｆｔａ＿１」のデータのデータ型がｉｎｔｅｇｅｒであり、図７の「ｆｔａ＿２」のデータのデータ型がｉｎｔｅｇｅｒであり、図７の「ｆｔａ＿３」のデータのデータ型がｔｅｘｔであることが記述されている。
【００２４】
外部表演算ルール１３０には、外部データベース１５０で実行可能な演算が定義されている。
外部表演算ルール１３０は、図９に示す情報である。
外部表演算ルール１３０は、ルールＩＤ１３１、演算内容１３２、演算結果１３３、演算対象１（１３４）、演算対象２（１３５）で構成される。
ルールＩＤ１３１には、外部表演算ルールのＩＤが記述される。
演算内容１３２には、外部データベース１５０で実行可能な演算（例えば、演算子）が記述される。
演算結果１３３には、演算結果のデータ型が記述される。
演算対象１（１３４）及び演算対象２（１３５）には、被演算子のデータ型が記述される。
被演算子が存在しない場合は、演算対象１（１３４）及び演算対象２（１３５）には「−」が記述される。
【００２５】
外部データベース定義１４０には、外部データベースごとに外部表が定義されている。
外部データベース定義１４０は、図１０に示す情報である。
外部データベース定義１４０は、外部表ＩＤ１４１、外部表名１４２、外部データベースＩＤ１４３で構成される。
外部データベースＩＤ１４３は、外部データベース１５０のＩＤが記述される。
図１０は、外部データベース１５０が複数存在していることを前提としている。
外部表ＩＤ１４１には、外部データベースＩＤ１４３にＩＤが記述されている外部データベース１５０の外部表のＩＤが記述される。
外部表ＩＤ１４１は、図６の外部表定義の外部表ＩＤ１２１と同様である。
外部表名１４２には、外部データベースＩＤ１４３にＩＤが記述されている外部データベース１５０の外部表の名称が記述される。
【００２６】
実行プラン１４５は、検索条件３０１の解析結果である。
実行プラン１４５は、図１１に例示するような木構造のデータである。
実行プラン１４５の詳細は後述する。
【００２７】
問合せ文生成ルール１４７には、問合せ文に含ませる演算内容が定義されている。
問合せ文生成ルール１４７は、図８に示す情報である。
問合せ文生成ルール１４７は、演算内容１４８と問合せ１４９で構成される。
演算内容１４８には、検索条件３０１に含まれる演算内容が定義されている。
問合せ１４９には、問合せ文に含ませる演算内容が定義されている。
【００２８】
図１において、外部表定義アプリケーション２００は、データ管理装置１０１へ外部表定義要求を行う上位のアプリケーションプログラムである。
【００２９】
データ検索アプリケーション３００は、データ管理装置１０１に対してデータ検索を要求する上位のアプリケーションプログラムである。
【００３０】
図２は、データ管理装置１０１を含むシステム構成例を示す。
【００３１】
データ収集装置２５１は、外部表定義アプリケーション２００を備え、データ管理装置１０１に外部表定義要求を行う。
データ収集装置２５１は、外部表定義２０１を保持する。
【００３２】
データ検索装置２５２は、データ検索アプリケーション３００を備え、データ管理装置１０１かに対してデータ検索を要求する。
データ検索装置２５２は、データ検索アプリケーション３００を実行して検索条件３０１を生成し、データ管理装置１０１から検索結果３０２を受信する。
【００３３】
外部データ管理装置２５３は、外部データベース１５０を備える。
外部データベース１５０には、データ管理装置１０１から送信された問合せ文を処理する検索実行部１５１と、データが格納されているデータ格納領域１５２が含まれる。
【００３４】
データ収集装置２５１、データ検索装置２５２、外部データ管理装置２５３は、それぞれ１つでも複数でも構わない。
【００３５】
図３は、データ管理装置１０１のハードウェア構成例を示す。
図３の詳細は後述する。
【００３６】
＊＊＊動作の説明＊＊＊
次に、本実施の形態に係るデータ管理装置１０１の動作を説明する。
先ず、図４のフローチャートに基づいて、データ管理装置１０１の外部表定義処理を説明する。
【００３７】
ステップＳ１０１において、外部表定義部１０２が、外部表定義アプリケーション２００から外部表定義２０１を受信する。
【００３８】
次に、ステップＳ１０２において、外部表定義部１０２は、外部表定義２０１を解釈し、外部表定義２０１の形式を変換する。
前述のように、形式が変換された後の外部表定義２０１が外部表定義１２０である。
【００３９】
次に、ステップＳ１０３において、外部表定義部１０２は、外部表定義１２０をデータ記憶部１１１に格納する。
【００４０】
次に、図５のフローチャートに基づいて、データ管理装置１０１のデータ検索処理を説明する。
図５に示す手順は、本願のデータ管理方法及びデータ管理プログラムの例に相当する。
以降の説明では、図５の開始前に、図６の外部表定義１２０と図９の外部表演算ルール１３０と図８の問合せ文生成ルール１４７とがデータ記憶部１１１に格納されているものとする。
なお、図１１の実行プラン１４５は、後述のステップＳ２０２で生成されるため、図５の開始前はデータ記憶部１１１には格納されていない。
【００４１】
ステップＳ２０１において、検索制御部１０３の検索条件受信部１０３１がデータ検索アプリケーション３００から検索条件３０１を受信する（検索条件受信処理）。
ここでは、検索条件受信部１０３１は、ＳＱＬ問合せ文である「ｓｅｌｅｃｔ  ｓｕｍ（（ｆｔａ＿１＋１００）  ＊  ０．１５）  ｆｒｏｍ  ｆｔ  ｗｈｅｒｅ  ｆｔａ＿１  ｂｅｔｗｅｅｎ  １  ａｎｄ  １００００００」を検索条件３０１として受信したものとする。
この検索条件３０１には、外部データベース１５０のデータの検索と、検索されたデータを用いた演算である「＋」演算、「＊」演算及び「ｓｕｍ（）」演算が含まれている。
このため、検索条件３０１は拡張検索条件である。
【００４２】
ステップＳ２０２において、検索条件最適化部１０４が検索条件３０１を解析し、実行プラン１４５を生成する。
実行プラン１４５は、検索条件３０１で要求される処理を効率的な順序で実行するように最適化された処理計画である。
検索条件最適化部１０４は、検索条件３０１を解析した結果、検索条件３０１が拡張検索条件であると判断し、図１１に示す実行プラン１４５を生成する。
また、検索条件最適化部１０４は、実行プラン１４５の生成過程で、問合せ文生成部１０５に標準問合せ文の生成を指示する。
問合せ文生成部１０５では、標準問合せ文生成部１０５１が、外部表定義１２０（図６）に基づき、外部データベース１５０に「ｆｔａ＿１」の検索を実行させるための標準問合せ文を生成する。
より具体的には、標準問合せ文生成部１０５１は、図１１の標準問合せ文１１２１を生成し、生成した標準問合せ文１１２１を検索条件最適化部１０４に出力する。
検索条件最適化部１０４は、標準問合せ文１１２１が含まれる、図１１の実行プラン１４５を生成する。
【００４３】
ここで、実行プラン１４５の詳細を説明する。
実行プラン１４５は、図１１に示すように、木構造のデータである。
実行プラン１４５には、ノードと選択条件が含まれる。
図１１において、符号１１０１と１１０２の要素がノードであり、符号１１０３、１１０４、１１３１〜１１３５の要素が選択条件である。
選択条件も木構造をしており、最下位階層の選択条件１１０４、１１３３、１１３４、１１３５には、検索条件３０１に含まれる定数、外部表定義１２０の列名１２２に含まれる列が記述されている。
最下位階層以外の選択条件１１０３、１１３１、１１３２には、検索条件３０１に含まれる演算子が記述されている。
実行プラン１４５は、検索条件３０１に対応する処理の実行順序を制御するためのデータである。
実行プラン１４５では、選択条件１１０３、１１３１、１１３２に記述されている演算子を用いた演算を行うという処理手順が定義されている。
実行プラン１４５では、演算の順序が先の選択条件が下位の階層に配置されている。
このため、後述するように、拡張問合せ文生成部１０５２は、実行プラン１４５に対して深さ優先探索による探索を行う。
また、実行プラン１４５では、下位のノード１１０２の処理が実行され、下位のノード１１０２の処理の実行結果が上位のノード１１０１に用いられて、上位のノード１１０１の処理が行われるという処理手順が定義されている。
選択条件の木構造は、１つの選択条件で構成されていても複数の選択条件で構成されていてもよい。
また、選択条件の木構造における選択条件の最大数は、外部表定義１２０の列数に制約されない。
また、実行プラン１４５では、外部表定義１２０がノード１１０２に対応付けられている。
外部表定義１２０には、標準問合せ文１１２１に対する外部データベース１５０からの応答（外部表）に含まれる列名、データ型が示されている。
【００４４】
検索条件３０１が拡張検索条件であるため、検索条件最適化部１０４は、ステップＳ２０３において、実行プラン１４５を問合せ文生成部１０５に出力し、問合せ文生成部１０５に拡張問合せ文の生成を指示する。
なお、検索条件３０１が標準検索条件である場合は、ステップＳ２０３〜Ｓ２０７の処理は不要である。
【００４５】
検索条件最適化部１０４から拡張問合せ文の生成が指示された問合せ文生成部１０５では、拡張問合せ文生成部１０５２がステップＳ２０４〜Ｓ２０７の処理を行う。
【００４６】
ステップＳ２０４では、拡張問合せ文生成部１０５２が、実行プラン１４５に含まれる選択条件のうち、データ型が確定していない選択条件が存在するか否かを深さ優先探索にて判断する。
データ型が確定していない選択条件が存在する場合は、拡張問合せ文生成部１０５２はステップＳ２０５を行う。
全ての選択条件のデータ型が確定している場合は、拡張問合せ文生成部１０５２は、ステップＳ２０７を行う。
【００４７】
ステップＳ２０５では、拡張問合せ文生成部１０５２は、実行プラン１４５から、データ型が未確定の選択条件を１つ取り出す。
【００４８】
ステップＳ２０６では、拡張問合せ文生成部１０５２は、外部表演算ルール１３０（図９）を参照して、ステップＳ２０５で取り出した選択条件のデータ型を確定し、確定したデータ型から、外部データベース１５０が検索条件３０１で要求されている演算を実行可能かどうかを判断する（問合せ文生成処理）。
つまり、拡張問合せ文生成部１０５２は、外部データベース１５０が検索条件３０１内の「ｓｕｍ（（ｆｔａ＿１＋１００）  ＊  ０．１５）」の演算を実行可能かどうかを判断する。
【００４９】
ステップＳ２０７では、拡張問合せ文生成部１０５２は、標準問合せ文生成部１０５１が生成した標準問合せ文を書き換えて拡張問合せ文を生成する（問合せ文生成処理）。
また、拡張問合せ文生成部１０５２は、拡張外部表定義を生成する。
拡張外部表定義は、拡張問合せ文に対する外部データベース１５０からの応答の形式が定義される情報である。
拡張問合せ文生成部１０５２は、外部データベース１５０が検索条件３０１内の「ｓｕｍ（（ｆｔａ＿１＋１００）  ＊  ０．１５）」の演算を実行可能な場合は、図１２の拡張問合せ文１２２１と拡張外部表定義１２１０を生成する。
拡張問合せ文１２２１は、列「ｆｔａ＿１」の検索と演算「ｓｕｍ（（ｆｔａ＿１＋１００）  ＊  ０．１５）」とを外部データベース１５０に実行させる問合せ文である。
拡張外部表定義１２１０において、外部表ＩＤ１２１１では、新たな外部表ＩＤである「ｔ＿ｆｔ００１」が定義され、列名１２１２では、「ｓｕｍ」のみが定義され、データ型１２１３では、「ｓｕｍ」のデータ型である「ｄｅｃｉｍａｌ」が定義されている。
「ｓｕｍ」のデータ型である「ｄｅｃｉｍａｌ」は、外部表演算ルール１３０（図９）のルールＩＤ：０００１から得られる。
図１２に示すように、拡張外部表定義１２１０には、拡張問合せ文１２２１：「ｓｅｌｅｃｔ  ｓｕｍ（（ｆｔａ＿１＋１００）  ＊  ０．１５）  ｆｒｏｍ  ｆｔ  ｗｈｅｒｅ  ｆｔａ＿１  ｂｅｔｗｅｅｎ  １  ａｎｄ  １００００００」を実行した場合の最終的な結果（ｓｕｍとデータ型：ｄｅｃｉｍａｌ）のみが定義される。
拡張問合せ文生成部１０５２は、生成した拡張問合せ文１２２１と拡張外部表定義１２１０を用いて図１２の実行プラン１４６を生成する。
つまり、拡張問合せ文生成部１０５２は、図１１の外部データベース検索１１０２にｐｕｓｈ−ｄｏｗｎされた集約１１０１を実行プラン１４５から削除し、また、標準問合せ文１１２１及び標準外部表定義１２０に代えて拡張問合せ文１２２１と拡張外部表定義１２１０を外部データベース検索１１０２に対応付けた実行プラン１４６を生成する。
そして、拡張問合せ文生成部１０５２は、実行プラン１４６を検索条件最適化部１０４に出力する。
検索条件最適化部１０４は、実行プラン１４６を検索制御部１０３に出力する。
検索制御部１０３では、問合せ実行部１０３２が、実行プラン１４６の拡張問合せ文１２２１を外部データベース１５０に送信する（問合せ実行処理）。
【００５０】
ステップＳ２０８において、検索制御部１０３の応答受信部１０３３が、外部データベース１５０からの応答を拡張外部表定義１２１０を用いて受信する。
【００５１】
最後に、ステップＳ２０９において、検索制御部１０３の応答送信部１０３４が、外部データベース１５０からの応答をデータ検索アプリケーション３００に送信する。
【００５２】
図１１の実行プラン１４５を例にして、データ型確定処理（Ｓ２０４〜Ｓ２０６）を説明する。
【００５３】
拡張問合せ文生成部１０５２は、まず、符号１１３４の「ｆｔａ＿１」を取り出す（ステップＳ２０５）。
「ｆｔａ＿１」は、外部表定義１２０においてデータ型が「ｉｎｔｅｇｅｒ」と定義されているので、拡張問合せ文生成部１０５２は、外部表演算ルール１３０（図９）のルールＩＤ：０００４から演算結果「ｉｎｔｅｇｅｒ」を抽出し、符号１１３４の「ｆｔａ＿１」のデータ型を「ｉｎｔｅｇｅｒ」と確定する（ステップＳ２０６）。
次に、拡張問合せ文生成部１０５２は、符号１１３５の「１００：：ｉｎｔｅｇｅｒ」を取り出す（ステップＳ２０５）。
拡張問合せ文生成部１０５２は、外部表演算ルール１３０（図９）のルールＩＤ：０００６から演算結果「ｉｎｔｅｇｅｒ」を抽出し、符号１１３５の「１００：：ｉｎｔｅｇｅｒ」のデータ型を「ｉｎｔｅｇｅｒ」と確定する（ステップＳ２０６）。
次に、拡張問合せ文生成部１０５２は、符号１１３３の「０．１５：：ｆｌｏａｔ」を取り出す（ステップＳ２０５）。
拡張問合せ文生成部１０５２は、外部表演算ルール１３０（図９）のルールＩＤ：０００７から演算結果「ｆｌｏａｔ」を抽出し、符号１１３３の「０．１５：：ｆｌｏａｔ」のデータ型を「ｆｌｏａｔ」と確定する（ステップＳ２０６）。
次に、拡張問合せ文生成部１０５２は、符号１１３２の「＋」を取り出す（ステップＳ２０５）。
符号１１３２の「＋」の演算対象である「ｆｔａ＿１」と「１００：：ｉｎｔｅｇｅｒ」は、ともにデータ型が「ｉｎｔｅｇｅｒ」である。
このため、外部表演算ルール１３０（図９）のルールＩＤ：０００２に合致し、拡張問合せ文生成部１０５２は、ルールＩＤ：０００２から演算結果「ｉｎｔｅｇｅｒ」を抽出し、符号１１３２の「＋」のデータ型を「ｉｎｔｅｇｅｒ」と確定する（ステップＳ２０６）。
次に、拡張問合せ文生成部１０５２は、符号１１３１の「＊」を取り出す（ステップＳ２０５）。
符号１１３１の「＊」の演算対象である「＋」のデータ型は「ｉｎｔｅｇｅｒ」であり、「０．１５：：ｆｌｏａｔ」のデータ型は「ｆｌｏａｔ」である。
このため、外部表演算ルール１３０（図９）のルールＩＤ：０００３に合致し、拡張問合せ文生成部１０５２は、ルールＩＤ：０００３から演算結果「ｄｅｃｉｍａｌ」を抽出し、符号１１３１の「＊」のデータ型を「ｄｅｃｉｍａｌ」と確定する（ステップＳ２０６）。
次に、拡張問合せ文生成部１０５２は、符号１１０４の「ｆｔａ＿１’」を取り出す（ステップＳ２０５）。
この符号１１０４の「ｆｔａ＿１’」は、符号１１３１〜１１３５の選択条件の演算結果を意味する。
このため、符号１１０４の「ｆｔａ＿１’」のデータ型は、符号１１３１の「＊」のデータ型「ｄｅｃｉｍａｌ」である。
次に、拡張問合せ文生成部１０５２は、符号１１０３の「ｓｕｍ（）」を取り出す（ステップＳ２０５）。
符号１１０３の「ｓｕｍ（）」の演算対象である「ｆｔａ＿１’」のデータ型は「ｄｅｃｉｍａｌ」である。
このため、拡張問合せ文生成部１０５２は、外部表演算ルール１３０（図９）のルールＩＤ：０００１から演算結果「ｄｅｃｉｍａｌ」を抽出し、符号１１０３の「ｓｕｍ（）」のデータ型を「ｄｅｃｉｍａｌ」と確定する（ステップＳ２０６）。
【００５４】
このようにして、実行プラン１４５の全ての選択条件のデータ型が確定した場合は、拡張問合せ文生成部１０５２は、検索条件３０１の全ての演算を外部データベース１５０に実行させることができると判断する。
このため、前述したように、拡張問合せ文生成部１０５２は、標準問合せ文１１２１（図１１）を書き換えて、検索条件３０１の全ての演算を外部データベース１５０に実行させるための拡張問合せ文１２２１（図１２）を生成する。
拡張問合せ文生成部１０５２は、問合せ文生成ルール１４７（図８）に従って、標準問合せ文１１２１から拡張問合せ文１２２１への書き換えを行う。
また、拡張問合せ文生成部１０５２は、符号１１０３の「ｓｕｍ（）」のデータ型「ｄｅｃｉｍａｌ」を用いて、拡張外部表定義１２１０（図１２）を生成する。
【００５５】
＊＊＊効果の説明＊＊＊
このように、本実施の形態では、選択条件から外部データベース問合せの結果のデータ型を推定し、外部表演算ルールに存在するルールのみで構成された選択条件の場合、標準問合せ文を書き換えて拡張問合せ文を生成する。
従来の外部表を用いた外部データベース検索では、検索結果が標準外部表定義に制約されている。
このため、従来のデータ管理装置は、標準外部表定義に沿った検索結果を外部データベースから取得し、取得した検索結果を加工することで検索条件に合致する検索結果を得るようにしている。
つまり、従来のデータ管理装置は、前述した検索条件「ｓｅｌｅｃｔ  ｓｕｍ（（ｆｔａ＿１＋１００）  ＊  ０．１５）  ｆｒｏｍ  ｆｔ  ｗｈｅｒｅ  ｆｔａ＿１  ｂｅｔｗｅｅｎ  １  ａｎｄ  １００００００」を受信した場合には、図１１の標準問合せ文１１２１を外部データベースに送信し、標準外部表定義１２０に示すように、外部データベースから「ｆｔａ＿１」、「ｆｔａ＿２」、「ｆｔａ＿３」の検索結果を取得する。
そして、従来のデータ管理装置は、外部データベースからの「ｆｔａ＿１」に対して「ｓｕｍ（（ｆｔａ＿１＋１００）  ＊  ０．１５）」を実行して、「ｓｅｌｅｃｔ  ｓｕｍ（（ｆｔａ＿１＋１００）  ＊  ０．１５）  ｆｒｏｍ  ｆｔ  ｗｈｅｒｅ  ｆｔａ＿１  ｂｅｔｗｅｅｎ  １  ａｎｄ  １００００００」に適合する演算結果を得る。
これに対して、本実施の形態に係るデータ管理装置１０１は、外部データベース１５０において検索条件３０１の演算が実行可能な場合は、図１２の拡張問合せ文１２２１を外部データベース１５０に送信する。
そして、データ管理装置１０１は、外部データベース１５０から「ｓｅｌｅｃｔ  ｓｕｍ（（ｆｔａ＿１＋１００）  ＊  ０．１５）  ｆｒｏｍ  ｆｔ  ｗｈｅｒｅ  ｆｔａ＿１  ｂｅｔｗｅｅｎ  １  ａｎｄ  １００００００」に適合する演算結果を得る。
このように、本実施の形態に係るデータ管理装置１０１は、「ｓｕｍ（（ｆｔａ＿１＋１００）  ＊  ０．１５）」の演算が実行された後の応答を外部データベース１５０から取得することができるので、「ｓｕｍ（（ｆｔａ＿１＋１００）  ＊  ０．１５）」の演算を実行する必要がなく、検索時の処理効率を向上させることができ、検索速度の高速化が図れる。
【００５６】
なお、以上では、検索条件３０１に含まれる演算の全てが外部データベース１５０で実行可能な例を説明した。
検索条件３０１に含まれる演算の一部が外部データベース１５０で実行できない場合は、拡張問合せ文生成部１０５２は、当該一部以外の演算を外部データベース１５０で実行させる拡張問合せ文を生成する。
例えば、図１１の実行プラン１４５の「ｓｕｍ（）」以外は外部データベース１５０で演算可能であるが、「ｓｕｍ（）」は外部データベース１５０では実行できない場合は、拡張問合せ文生成部１０５２は、検索条件３０１に含まれる複数の演算のうち「ｓｕｍ（）」以外の演算を外部データベース１５０で実行させる拡張問合せ文を生成する。
そして、当該拡張問合せ文に対する応答を外部データベース１５０から受信した場合に、検索条件最適化部１０４が、外部データベース１５０からの応答に対して「ｓｕｍ（）」演算を行って、検索条件３０１に対応する演算結果を得るようにする。
【００５７】
実施の形態２．
実施の形態１では、標準問合せ文生成部１０５１が標準問合せ文を生成した後に、拡張問合せ文生成部１０５２が選択条件のデータ型を確定処理により確定することで検索条件３０１の演算を外部データベース１５０が実行可能などうかを判定し、外部データベース１５０が演算を実行可能な場合に、標準問合せ文を書き換えて拡張問合せ文を生成している。
本実施の形態では、標準問合せ文を生成せずに、選択条件のデータ型の確定処理と拡張問合せ文の生成処理とを並行して行う例を説明する。
【００５８】
＊＊＊構成の説明＊＊＊
図１３は、実施の形態２に係るデータ管理装置１０１の機能モジュール構成例を示す。
図１３のデータ管理装置１０１では、図１のデータ管理装置１０１と違って、問合せ文生成部１０５は標準問合せ文生成部１０５１と拡張問合せ文生成部１０５２に分けられていない。
また、図１３のデータ管理装置１０１では、データ記憶部１１１に問合せ文生成ルール１４７が格納されていない。
図１３の他の要素は、図１と同じである。
以下では、主に実施の形態１との違いを説明する。
以下で説明していない事項は、実施の形態１と同じである。
【００５９】
本実施の形態では、問合せ文生成部１０５は、検索条件３０１が拡張検索条件である場合に、検索条件３０１で要求されている複数の演算のうち実行順序が先の演算から順に、演算ごとに、外部表演算ルール１３０に基づき、外部データベース１５０で演算が実行可能であるか否かを判断する判断処理と、判断処理により外部データベース１５０で実行可能であると判定された演算を外部データベース１５０に実行させるための記述を拡張問合せ記述として生成する記述生成処理とを繰り返し、演算ごとの拡張問合せ記述の組み合わせにより拡張問合せ文を生成する。
実施の形態１で示した図１１の実行プラン１４５が生成された場合に、問合せ文生成部１０５は、実施の形態１と同様に、深さ優先探索にて選択条件ごとにデータ型を確定する（判断処理）。
そして、データ型が確定した選択条件に示される演算を外部データベース１５０に実行させるための拡張問合せ記述を生成する。
拡張問合せ記述は、拡張問合せ文の部分的な記述である。
例えば、図１１の符号１１３２「＋」のデータ型が確定した場合には、問合せ文生成部１０５は「＋」演算を外部データベース１５０に実行させるための拡張問合せ記述を生成する。
また、図１１の符号１１３１「＊」のデータ型が確定した場合には、問合せ文生成部１０５は「＊」演算を外部データベース１５０に実行させるための拡張問合せ記述を生成する。
また、図１１の符号１１０３「ｓｕｍ（）」のデータ型が確定した場合には、問合せ文生成部１０５は「ｓｕｍ（）」演算を外部データベース１５０に実行させるための拡張問合せ記述を生成する。
そして、問合せ文生成部１０５は、「＋」演算の拡張問合せ記述と「＊」演算の拡張問合せ記述と「ｓｕｍ（）」演算の拡張問合せ記述とを組み合わせて、図１２の拡張問合せ文１２２１を生成する。
なお、本実施の形態では、標準問合せ文１１２１は生成されないので、本実施の形態に係る実行プラン１４５は、図１１から標準問合せ文１１２１を除外したものに相当する。
データ管理装置１０１の他の動作は、実施の形態１に示した通りである。
以下、フローチャートを参照して、本実施の形態に係るデータ管理装置１０１の動作例を詳述する。
【００６０】
＊＊＊動作の説明＊＊＊
以下、図１４及び図１５のフローチャートに基づいて、本実施の形態に係るデータ管理装置１０１のデータ検索処理を説明する。
図１５は、図１４のステップＳ１４０３の詳細フローを示す。
図１４及び図１５に示す手順は、本願のデータ管理方法及びデータ管理プログラムの例に相当する。
以降の説明では、図１４の開始前に、図６の外部表定義１２０と図８の外部表演算ルール１３０とがデータ記憶部１１１に格納されているものとする。
【００６１】
ステップＳ１４０１において、検索制御部１０３の検索条件受信部１０３１がデータ検索アプリケーション３００から検索条件３０１を受信する（検索条件受信処理）。
ここでは、検索条件受信部１０３１は、ＳＱＬ問合せ文である「ｓｅｌｅｃｔ  ｓｕｍ（（ｆｔａ＿１＋１００）  ＊  ０．１５）  ｆｒｏｍ  ｆｔ  ｗｈｅｒｅ  ｆｔａ＿１  ｂｅｔｗｅｅｎ  １  ａｎｄ  １００００００」を検索条件３０１として受信したものとする。
【００６２】
ステップＳ１４０２において、検索条件最適化部１０４が検索条件３０１を解析し、実行プラン１４５を生成する。
実施の形態１では、問合せ文生成部１０５が標準問合せ文を生成したが、本実施の形態では、問合せ文生成部１０５は標準問合せ文１１２１を生成しない。
このため、本実施の形態に係る実行プラン１４５は、図１１から標準問合せ文１１２１を除外したものに相当する。
【００６３】
検索条件３０１が拡張検索条件であるため、検索条件最適化部１０４は、実行プラン１４５を問合せ文生成部１０５に出力し、問合せ文生成部１０５に拡張問合せ文の生成を指示する。
問合せ文生成部１０５は、ステップＳ１４０３において、図１５に示す手順にて拡張問合せ文を生成する（問合せ文生成処理）。
【００６４】
後述するように、図１５の手順では、選択条件のデータ型の確定処理と拡張問合せ文の生成処理と拡張外部表定義の生成処理が行われているので、ステップＳ１４０４において、問合せ文生成部１０５は、図１５で生成された拡張問合せ文と拡張外部表定義とを用いて、図１２の実行プラン１４６を生成する。
実行プラン１４６の生成手順は実施の形態１で説明したものと同じである。
問合せ文生成部１０５は、実行プラン１４６を検索条件最適化部１０４に出力する。
検索条件最適化部１０４は、実行プラン１４６を検索制御部１０３に出力する。
検索制御部１０３では、問合せ実行部１０３２が、実行プラン１４６の拡張問合せ文１２２１を外部データベース１５０に送信する（問合せ実行処理）。
【００６５】
ステップＳ１４０５において、検索制御部１０３の応答受信部１０３３が、外部データベース１５０からの応答を拡張外部表定義１２１０を用いて受信する。
【００６６】
最後に、ステップＳ１４０６において、検索制御部１０３の応答送信部１０３４が、外部データベース１５０からの応答をデータ検索アプリケーション３００に送信する。
【００６７】
次に、図１５のフローチャートを参照して、問合せ文生成部１０５の拡張問合せ文生成処理（図１４のＳ１４０３）を説明する。
【００６８】
ステップＳ１５０１において、問合せ文生成部１０５が実行プラン１４５から外部データベース検索のノードを取得する。
ここでは、問合せ文生成部１０５は、図１１の外部データベース検索１１０２のノードを取得する。
【００６９】
ステップＳ１５０２において、問合せ文生成部１０５は、外部データベース検索１１０２の選択条件のうちデータ型が確定していない選択条件が存在するかどうか判別する。
データ型が存在していない選択条件が存在する場合は、問合せ文生成部１０５は、ステップＳ１５０３の処理を行う。
全ての選択条件のデータ型が確定している場合は、問合せ文生成部１０５は、ステップＳ１５０５の処理を行う。
【００７０】
ステップＳ１５０３において、問合せ文生成部１０５は、データ型が確定していない選択条件を１つ取り出す。
【００７１】
ステップＳ１５０４において、問合せ文生成部１０５は、ステップＳ１５０３で取り出した選択条件のデータ型を確定する。
データ型の確定手順は、実施の形態１で説明したものと同様である。
【００７２】
ステップＳ１５０５において、問合せ文生成部１０５は、ステップＳ１５０４で確定したデータ型に基づき、拡張外部表定義を生成し、また、拡張問合せ記述を生成する。
ステップＳ１５０１において、問合せ文生成部１０５が図１１の外部データベース検索１１０２を取得した場合は、問合せ文生成部１０５は、この段階で、外部データベース検索１１０２に従属する選択条件１１３１〜１１３５で導出される演算の演算結果に対応する拡張外部表定義と拡張問合せ記述を生成する。
【００７３】
ステップＳ１５０６において、問合せ文生成部１０５は、外部データベース検索１１０２のノードの上位のノードが存在するかどうか判別する。
上位のノードが存在する場合、問合せ文生成部１０５は、ステップＳ１５０７の処理を行い、上位のノードが存在しない場合は、問合せ文生成部１０５は図１５の処理を終了する。
【００７４】
ステップＳ１５０７において、問合せ文生成部１０５は、実行プラン１４５から上位のノード取り出す。
【００７５】
ステップＳ１５０８において、問合せ文生成部１０５は、ステップＳ１５０７で取り出したノードの選択条件のうちデータ型が確定していない選択条件が存在するかどうか判別する。
データ型が確定していない選択条件が存在する場合は、問合せ文生成部１０５は、ステップＳ１５０８の処理を行う。
全ての選択条件のデータ型が確定している場合は、問合せ文生成部１０５は、ステップＳ１５１１の処理を行う。
【００７６】
ステップＳ１５０９において、問合せ文生成部１０５は、データ型が確定していない選択条件を１つ取り出す。
【００７７】
ステップＳ１５１０において、問合せ文生成部１０５は、ステップＳ１５０９で取り出した選択条件のデータ型を確定する。
データ型の確定手順は、実施の形態１で説明したものと同様である。
【００７８】
ステップＳ１５１１において、問合せ文生成部１０５は、ステップＳ１５１０で確定したデータ型に基づき、拡張外部表定義を更新し、また、拡張問合せ記述を生成する。
ステップＳ１５０７において、問合せ文生成部１０５が、図１１の集約１１０１のノードを取得した場合は、問合せ文生成部１０５は、この段階で、集約１１０１に従属する選択条件１１０３、１１０４で導出される演算の演算結果に対応する拡張問合せ記述を生成する。
また、問合せ文生成部１０５は、ステップＳ１５０５で生成した拡張問合せ記述とステップＳ１５１１で生成した拡張問合せ記述とを組み合わせて、最終的な拡張問合せ文を生成する。
更に、問合せ文生成部１０５は、集約１１０１に従属する選択条件１１０３、１１０４で導出される演算の演算結果に対応する拡張外部表定義を生成し、ステップＳ１５０５で生成した拡張外部表定義を、ステップＳ１５１１で生成した拡張外部表定義で更新する。
この段階で、図１２の拡張問合せ文１２２１と拡張外部表定義１２１０が得られる。
【００７９】
＊＊＊効果の説明＊＊＊
このように、本実施の形態では、選択条件のデータ型を確定して、外部データベース１５０において演算が実行可能かどうかを確認するとともに、拡張問合せ記述の生成を行う。
実施の形態１の方法では、標準問合せ文を生成し、選択条件のデータ型を判定し、選択条件のデータ型の判定結果に基づき、標準問合せ文を書き換えて拡張問合せ文を生成する。
このため、実行プランを複数回探索する必要があったが、本実施の形態によれば、実行プランを一度だけ探索することで拡張問合せ文の生成と拡張問合せ文に応じた拡張外部表定義の生成が可能となり、検索速度を向上させることができる。
【００８０】
なお、本実施の形態でも、検索条件３０１に含まれる演算の全てが外部データベース１５０で実行可能な例を説明した。
検索条件３０１に含まれる演算の一部が外部データベース１５０で実行できない場合は、問合せ文生成部１０５は、当該一部以外の演算を外部データベース１５０で実行させる拡張問合せ文を生成する。
例えば、図１１の実行プラン１４５の「ｓｕｍ（）」以外は外部データベース１５０で演算可能であるが、「ｓｕｍ（）」は外部データベース１５０では実行できない場合は、問合せ文生成部１０５は、検索条件３０１に含まれる複数の演算のうち「ｓｕｍ（）」以外の演算を外部データベース１５０で実行させる拡張問合せ文を生成する。
そして、当該拡張問合せ文に対する応答を外部データベース１５０から受信した場合に、検索条件最適化部１０４が、外部データベース１５０からの応答に対して「ｓｕｍ（）」演算を行って、検索条件３０１に対応する演算結果を得るようにする。
【００８１】
＊＊＊注釈＊＊＊
以上、本発明の実施の形態について説明したが、これら２つの実施の形態のうちの１つを部分的に実施しても構わない。
あるいは、各実施の形態の特定の部分を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【００８２】
＊＊＊ハードウェア構成の説明＊＊＊
最後に、図３を参照して、データ管理装置１０１のハードウェア構成例を説明する。
データ管理装置１０１はコンピュータである。
データ管理装置１０１は、プロセッサ９０１、補助記憶装置９０２、メモリ９０３、通信装置９０４、入力インタフェース９０５、ディスプレイインタフェース９０６といったハードウェアを備える。
プロセッサ９０１は、信号線９１０を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
入力インタフェース９０５は、入力装置９０７に接続されている。
ディスプレイインタフェース９０６は、ディスプレイ９０８に接続されている。
【００８３】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ９０１は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。
メモリ９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置９０４は、データを受信するレシーバー９０４１及びデータを送信するトランスミッター９０４２を含む。
通信装置９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入力インタフェース９０５は、入力装置９０７のケーブル９１１が接続されるポートである。
入力インタフェース９０５は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。
ディスプレイインタフェース９０６は、ディスプレイ９０８のケーブル９１２が接続されるポートである。
ディスプレイインタフェース９０６は、例えば、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。
入力装置９０７は、例えば、マウス、キーボード又はタッチパネルである。
ディスプレイ９０８は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００８４】
補助記憶装置９０２には、図１及び図１３に示す外部表定義部１０２、検索制御部１０３、検索条件最適化部１０４、問合せ文生成部１０５（以下、外部表定義部１０２、検索制御部１０３、検索条件最適化部１０４、問合せ文生成部１０５をまとめて「部」と表記する）の機能を実現するプログラムが記憶されている。
このプログラムは、メモリ９０３にロードされ、プロセッサ９０１に読み込まれ、プロセッサ９０１によって実行される。
更に、補助記憶装置９０２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がメモリ９０３にロードされ、プロセッサ９０１はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
図３では、１つのプロセッサ９０１が図示されているが、データ管理装置１０１が複数のプロセッサ９０１を備えていてもよい。
そして、複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。
また、「部」の処理の結果を示す情報やデータや信号値や変数値が、メモリ９０３、補助記憶装置９０２、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリに記憶される。
【００８５】
「部」を「サーキットリー」で提供してもよい。
また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
「回路」及び「サーキットリー」は、プロセッサ９０１だけでなく、ロジックＩＣ又はＧＡ（Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）又はＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった他の種類の処理回路をも包含する概念である。
【符号の説明】
【００８６】
１０１  データ管理装置、１０２  外部表定義部、１０３  検索制御部、１０４  検索条件最適化部、１０５  問合せ文生成部、１１１  データ記憶部、１２０  外部表定義、１３０  外部表演算ルール、１４０  外部データベース定義、１４５  実行プラン、１４６  実行プラン、１４７  問合せ文生成ルール、１５０  外部データベース、１５１  検索実行部、１５２  データ格納領域、２００  外部表定義アプリケーション、２０１  外部表定義、３００  データ検索アプリケーション、３０１  検索条件、３０２  検索結果、１０３１  検索条件受信部、１０３２  問合せ実行部、１０３３  応答受信部、１０３４  応答送信部、１０５１  標準問合せ文生成部、１０５２  拡張問合せ文生成部。
【図１】
2016132433.tif 000003
【図２】
2016132433.tif 000004
【図３】
2016132433.tif 000005
【図４】
2016132433.tif 000006
【図５】
2016132433.tif 000007
【図６】
2016132433.tif 000008
【図７】
2016132433.tif 000009
【図８】
2016132433.tif 000010
【図９】
2016132433.tif 000011
【図１０】
2016132433.tif 000012
【図１１】
2016132433.tif 000013
【図１２】
2016132433.tif 000014
【図１３】
2016132433.tif 000015
【図１４】
2016132433.tif 000016
【図１５】
2016132433.tif 000017
【手続補正書】
【提出日】平成29年2月23日(2017.2.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
外部データベースで実行可能な演算が定義されている外部表演算ルールと前記外部データベースからの応答の標準形式が定義される標準外部表定義を記憶するデータ記憶部と、
検索条件を受信する検索条件受信部と、
前記検索条件受信部により受信された前記検索条件で前記外部データベースに格納されているデータの検索と検索されたデータを用いた演算とが要求されている場合に、前記標準外部表定義で定義されている前記標準形式に基づき、前記検索条件で要求されている検索を前記外部データベースに実行させる問合せ文である標準問合せ文を生成し、前記外部表演算ルールに基づき、前記検索条件で要求されている演算が前記外部データベースで実行可能であるか否かを判断し、前記検索条件で要求されている演算が前記外部データベースで実行可能である場合に、前記検索条件で要求されている検索と演算とを前記外部データベースに実行させる問合せ文である拡張問合せ文を前記標準問合せ文を書き換えて生成する問合せ文生成部と、
前記問合せ文生成部により生成された前記拡張問合せ文を前記外部データベースに送信する問合せ実行部とを有するデータ管理装置。
【請求項２】
前記データ記憶部は、
前記外部データベースで実行可能な演算の演算子と被演算子のデータ型と演算結果のデータ型とが定義される外部表演算ルールを記憶しており、
前記問合せ文生成部は、
前記検索条件で要求されている演算の演算子と被演算子のデータ型と演算結果のデータ型とを解析し、前記検索条件で要求されている演算の演算子と被演算子のデータ型と演算結果のデータ型とが前記外部表演算ルールに定義されている場合に、前記検索条件で要求されている演算が前記外部データベースで実行可能であると判断する請求項１に記載のデータ管理装置。
【請求項３】
前記データ記憶部は、
前記外部データベースが実行可能な複数の演算が定義される外部表演算ルールを記憶しており、
前記問合せ文生成部は、
前記検索条件受信部により受信された前記検索条件で複数の演算が要求され、前記複数の演算の実行順序が指定されている場合に、
実行順序が先の演算から順に、演算ごとに、前記外部表演算ルールに基づき、前記外部データベースで演算が実行可能であるか否かを判断し、前記検索条件で要求されている検索と、前記検索条件で要求されている前記複数の演算のうち前記外部データベースで実行可能な演算とを前記外部データベースに実行させる拡張問合せ文を生成する請求項１に記載のデータ管理装置。
【請求項４】
前記データ記憶部は、
前記外部データベースが実行可能な複数の演算が定義される外部表演算ルールを記憶しており、
前記問合せ文生成部は、
前記検索条件受信部により受信された前記検索条件で複数の演算が要求され、前記複数の演算の実行順序が指定されている場合に、
実行順序が先の演算から順に、演算ごとに、前記外部表演算ルールに基づき、前記外部データベースで演算が実行可能であるか否かを判断し、前記検索条件で要求されている検索と、前記検索条件で要求されている前記複数の演算のうち前記外部データベースで実行可能であると判断された演算とを前記外部データベースに実行させる拡張問合せ文を、前記標準問合せ文を書き換えて生成する請求項１に記載のデータ管理装置。
【請求項５】
前記データ記憶部は、
前記外部データベースが実行可能な複数の演算が定義される外部表演算ルールを記憶しており、
前記問合せ文生成部は、
前記検索条件受信部により受信された前記検索条件で複数の演算が要求され、前記複数の演算の実行順序が指定されている場合に、
実行順序が先の演算から順に、演算ごとに、前記外部表演算ルールに基づき、前記外部データベースで演算が実行可能であるか否かを判断する判断処理と、前記判断処理により前記外部データベースで実行可能であると判断された演算を前記外部データベースに実行させるための記述を拡張問合せ記述として生成する記述生成処理とを繰り返し、演算ごとの拡張問合せ記述の組み合わせにより前記拡張問合せ文を生成する請求項１に記載のデータ管理装置。
【請求項６】
前記問合せ文生成部は、
前記拡張問合せ文に対する前記外部データベースからの応答の形式が定義される拡張外部表定義を生成する請求項１に記載のデータ管理装置。
【請求項７】
前記データ管理装置は、更に、
前記問合せ文生成部により生成された前記拡張外部表定義を参照して、前記外部データベースからの応答を受信する応答受信部を有する請求項６に記載のデータ管理装置。
【請求項８】
外部データベースで実行可能な演算が定義されている外部表演算ルールと前記外部データベースからの応答の標準形式が定義される標準外部表定義を記憶するコンピュータが、
検索条件を受信し、
受信した前記検索条件で前記外部データベースに格納されているデータの検索と検索されたデータを用いた演算とが要求されている場合に、前記標準外部表定義で定義されている前記標準形式に基づき、前記検索条件で要求されている検索を前記外部データベースに実行させる問合せ文である標準問合せ文を生成し、前記外部表演算ルールに基づき、前記検索条件で要求されている演算が前記外部データベースで実行可能であるか否かを判断し、前記検索条件で要求されている演算が前記外部データベースで実行可能である場合に、前記検索条件で要求されている検索と演算とを前記外部データベースに実行させる問合せ文である拡張問合せ文を前記標準問合せ文を書き換えて生成し、
生成した前記拡張問合せ文を前記外部データベースに送信するデータ管理方法。
【請求項９】
外部データベースで実行可能な演算が定義されている外部表演算ルールと前記外部データベースからの応答の標準形式が定義される標準外部表定義を記憶するコンピュータに、
検索条件を受信する検索条件受信処理と、
前記検索条件受信処理により受信された前記検索条件で前記外部データベースに格納されているデータの検索と検索されたデータを用いた演算とが要求されている場合に、前記標準外部表定義で定義されている前記標準形式に基づき、前記検索条件で要求されている検索を前記外部データベースに実行させる問合せ文である標準問合せ文を生成し、前記外部表演算ルールに基づき、前記検索条件で要求されている演算が前記外部データベースで実行可能であるか否かを判断し、前記検索条件で要求されている演算が前記外部データベースで実行可能である場合に、前記検索条件で要求されている検索と演算とを前記外部データベースに実行させる問合せ文である拡張問合せ文を前記標準問合せ文を書き換えて生成する問合せ文生成処理と、
前記問合せ文生成処理により生成された前記拡張問合せ文を前記外部データベースに送信する問合せ実行処理とを実行させるデータ管理プログラム。
【国際調査報告】
2016132433.tif 000018
2016132433.tif 000019