(57)【要約】【課題】本発明では、仮想データベースのリモートアクセス手法により設計時の負担を軽減しつつ、実行時の性能も確保するためのコンパイラを提供する。【解決手段】アプリケーションプログラムを有する第１の計算機１１とネットワークを介して接続される１つ以上のデータベースを有する第２の計算機１２とからなる、仮想データベースについてリモートアクセスに用いられるプログラムを生成する処理をコンピュータに実行させるコンパイラは、アプリケーションプログラムのソースコード７から仮想データベースに対するＤＭＬ実行処理に関する記述部分を、ＲＰＣ処理に関する記述に置換し（１ｃ）、そのＲＰＣ処理に基づいてネイティブデータベースに対するＤＭＬ実行処理を実行するプログラムを生成する（１ｅ）。【選択図】図１
2007249785.tif 000002
【特許請求の範囲】
【請求項１】
ユーザからの所定の入力パラメータが入力されるアプリケーションプログラムを有する第１の計算機と、該第１の計算機とネットワークを介して接続される１つ以上のデータベースを有する第２の計算機とからなる、前記アプリケーションプログラムに対して前記１以上のデータベースであるネイティブデータベースを１つのデータベースとして仮想化する仮想データベースについてリモートアクセスに用いられるプログラムを生成する処理をコンピュータに実行させるコンパイルプログラムであって、
前記アプリケーションプログラムのソースコードから前記仮想データベースに対するデータ操作言語（ＤＭＬ）実行処理に関する記述部分を、リモートプロシージャ呼び出し（ＲＰＣ）処理に関する記述に置換するＲＰＣ置換手順と、
前記ＲＰＣ処理に基づいて、前記ネイティブデータベースに対するＤＭＬ実行処理を実行するプログラムであるネイティブＤＭＬ実行プログラムを生成するネイティブＤＭＬ実行プログラム生成手順と、
を、コンピュータに実行させるコンパイルプログラム。
【請求項２】
前記コンパイルプログラムは、さらに、
前記アプリケーションプログラムのソースコードが入力されるソースコード入力手順と、
前記ソースコードから前記仮想データベースに対するＤＭＬ実行処理に関する入出力情報を抽出する入出力情報抽出手順と、
を、コンピュータに実行させる請求項１に記載のコンパイルプログラム。
【請求項３】
前記コンパイルプログラムは、さらに、
前記ＲＰＣを使用するために、前記第１の計算機に格納される第１のインターフェースと、前記第２の計算機に格納される第２のインターフェースと、を生成するインターフェース生成手順と、
を、コンピュータに実行させる請求項２に記載のコンパイルプログラム。
【請求項４】
ユーザからの所定の入力パラメータが入力されるアプリケーションプログラムを有する第１の計算機と、該第１の計算機とネットワークを介して接続される１つ以上のデータベースを有する第２の計算機とからなる、前記アプリケーションプログラムに対して前記１以上のデータベースであるネイティブデータベースを１つのデータベースとして仮想化する仮想データベースについてリモートアクセスに用いられるプログラムを生成する仮想データベースリモートアクセス用プログラムの製造方法であって、
前記アプリケーションプログラムのソースコードから前記仮想データベースに対するデータ操作言語（ＤＭＬ）実行処理に関する記述部分を、リモートプロシージャ呼び出し（ＲＰＣ）処理に関する記述に置換し、
前記ＲＰＣ処理に基づいて前記ネイティブデータベースに対するＤＭＬ実行処理を実行するプログラムであるネイティブＤＭＬ実行プログラムを生成する
ことを行う仮想データベースリモートアクセス用プログラムの製造方法。
【請求項５】
ユーザからの所定の入力パラメータが入力されるアプリケーションプログラムを有する第１の計算機と、該第１の計算機とネットワークを介して接続される１つ以上のデータベースを有する第２の計算機とからなる、前記アプリケーションプログラムに対して前記１以上のデータベースであるネイティブデータベースを１つのデータベースとして仮想化する仮想データベースのリモートアクセス方法であって、
前記第１の計算機には、前記アプリケーションプログラムと、リモートプロシージャ呼び出し（ＲＰＣ）を行うための第１のインターフェースとが格納され、
前記第２の計算機には、前記ネイティブデータベースに対するデータ操作言語（ＤＭＬ）実行処理を実行するネイティブＤＭＬ実行プログラムと、リモートプロシージャ呼び出し（ＲＰＣ）を行うための第２のインターフェースとが格納されており、
前記入力パラメータが入力された前記アプリケーションプログラムは前記第１のインターフェースを呼び出し、
前記第１のインターフェースは、ＲＰＣにより、前記第２のインターフェースへ前記入力パラメータを渡し、
前記第２のインターフェースにより前記入力パラメータを渡された前記ネイティブＤＭＬ実行プログラムは、前記各ネイティブデータベースに対して前記ＤＭＬ実行処理を実行して、各ネイティブデータベースから得られた実行結果を組み立てて１つの実行結果とし、
前記組み立てた１つの実行結果を前記仮想データベースの実行結果として提供する
ことを特徴とする仮想データベースのリモートアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータベースに対するリモートアクセス検索技術に関する。
【背景技術】
【０００２】
図２０は、仮想データベースに対するリモート検索の概念図を示す。アプリケーションサーバ１０１のアプリケーション１０３が、データサーバ１０２に実在するデータベース（ネイティブデータベース）であるデータベースＡ（１０４）及びデータベースＢ（１０５）にアクセスする。アプリケーション１０３には、アプリケーションサーバ３１に対して、複数のネイティブデータベースを１つのデータベースとして仮想化するための処理がプログラムされている。以下では、このようなデータベースを仮想データベースと称する。
【０００３】
図２１は、従来における仮想データベースリモートアクセスシステムを示す。従来は、アプリケーション１０３が動作するコンピュータ１０１と異なるコンピュータ１０２に存在する複数のデータベース（ネイティブデータベース）１０４，１０５をあたかも１つのデータベースであるかのように仮想化してアクセスする場合は、以下の手順で処理していた。
【０００４】
（１）仮想データベースに対する検索依頼のＤＭＬ（Ｄａｔａ  Ｍａｎｉｐｕｌａｔｉｏｎ  Ｌａｎｇｕａｇｅ）を、アプリケーションサーバ１０１の仮想データベース制御１００の仮想データベースＤＭＬパーザ１１１において解析する。
【０００５】
（２）その解析結果に基づき、アプリケーションサーバ１０１の仮想データベース制御１０６の検索リクエスト分解装置１１２において、検索依頼のＤＭＬを各データベース１０４，１０５に対するＤＭＬ（ネイティブＤＭＬ）の検索依頼に分解する。
【０００６】
（３）その分解したネイティブＤＭＬを、リモートアクセスＣｌｉｅｎｔ制御１１５とリモートアクセスＳｅｒｖｅｒ制御１１６を経由して、各ＤＢＭＳ（ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）１１７，１１８で実行し、実行結果を逆のルートで送受信する。
【０００７】
（４）アプリケーションサーバ１０１の仮想データベース制御１１０の検索リザルト組み立て装置１１３において、各ＤＢＭＳ１１７，１１８のネイティブＤＭＬの実行結果を組み立てる。その組み立てた実行結果を仮想データベースに対する検索結果としてアプリケーション１０３に返却する。
【０００８】
（５）なお、仮想データベース制御１１０における上記（１）解析、上記（２）分割、上記（４）組立の各処理を実行する際には、仮想データベースと各データベースの論理構造の関係定義がマッピングリポジトリ１１４で管理されているので、これを参照する。
【０００９】
このように、クライアント側のアプリケーションには、複数のデータベースをそのアプリケーションに対して１つのデータベースとして仮想化するための対応関係が定義されている（業務論理構築の容易化）。
【特許文献１】特開平１０−２１１２５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
このように、仮想データベースは、アプリケーションからは１つのデータベースに見えるが、実際には複数のデータベースに対応している。そのため、アクセス要求の内容によっては、並列的にアクセス要求を各データベースに対して依頼することができず、逐次的にアクセスしなければならないことがある。また、最終的な検索結果の集約時に、一部の検索結果が、不要なため破棄されることもある。
【００１１】
これは、仮想データベースに対するＤＭＬの分割実行時におけるネイティブＤＭＬのスケジュール論理の問題と、各ネイティブＤＭＬの処理結果の有効性が処理結果を組み立ててみないと分からないという検索結果の依存性の問題とに起因する。
【００１２】
以上の問題のため、従来の仮想データベースのリモートアクセスは、アプリケーションの構築を容易化するメリットの反面、オーバヘッドの大きな非効率的アクセスというデメリットを伴うため、実業務への適用は困難であった。
【００１３】
図２２は、従来における、データベースＢの検索結果を確認した後でないと、データベースＡの検索ができないという検索結果依存性の具体例である。データベースＡ（１０４）のレコードとデータベースＢ（１０５）のレコードは、それぞれに共通するデータ項目Ａ２／Ｂ２で関係付けられている。
【００１４】
アプリケーション１０３において、「Ｂ１が“ｂｂｂ”に等しいレコードを取り出す」旨のＤＭＬが定義されている。
この場合、まず、アプリケーションサーバ１０１は、データサーバ１０２に対して、Ｂ１が“ｂｂｂ”に等しいレコードをデータベースＢから取り出すように依頼をする（ステップ１０１。以下、ステップを「Ｓ」と称する。）。
【００１５】
すると、データベースＢからレコードＲＢ２とレコードＲＢ４が取り出されて、アプリケーションサーバ１０１に送られる（Ｓ１０２）。
アプリケーションサーバ１０１は、データベース１０２に対して、Ａ２がそのレコードＲＢ２とレコードＲＢ４のＢ２と等しいレコードをデータベースＡから取り出すように依頼をする（Ｓ１０３）
すると、データベースＡからレコードＲＡ１とレコードＲＡ２が取り出されて、アプリケーションサーバ１０１に送られる（Ｓ１０４）。
【００１６】
このように、検索条件がデータベースＢのレコードのデータ項目Ｂ１に関する条件（Ｂ１＝ｂｂｂ：Ｂ１がｂｂｂに等しいレコードを取り出す）のため、データベースＢを検索した後でないと、データ項目Ａ２／Ｂ２を特定できなかった。
【００１７】
このように、従来方式の課題は、アクセス実行時に、仮想データベースとネイティブデータベースの論理構造の関係定義を元に、仮想データベースＤＭＬ処理をネイティブデータベースＤＭＬ処理に変換（解析、分解、組立）するため、実行時オーバヘッドが大きくなる点にある。更には、データの依存性に起因して、実行時の通信オーバヘッド（通信回数や転送データ量）が膨らむという課題もあった。
【００１８】
図２３は、従来におけるアプリケーションサーバとデータサーバの双方のアプリケーションが連携する構成により業務システムを設計した場合の例である。このような構成はストアドプロシージャで利用されている。
【００１９】
このような構成は、性能重視のシステムであれば、最初から上記の構成で業務システムを設計する。しかしながら、この場合、双方のアプリケーションのインターフェースを調整した設計が必要となるため、開発者にとって設計時の負担が大きくなるという問題があった。
【００２０】
上記課題に鑑み、本発明では、仮想データベースのリモートアクセス手法により設計時の負担を軽減しつつ、実行時の性能も確保するためのコンパイラ及びそれにより生成されたプログラムを搭載した仮想データベースリモートアクセスシステムを提供する。
【課題を解決するための手段】
【００２１】
本発明にかかる、ユーザからの所定の入力パラメータが入力されるアプリケーションプログラムを有する第１の計算機と、該第１の計算機とネットワークを介して接続される１つ以上のデータベースを有する第２の計算機とからなる、前記アプリケーションプログラムに対して前記１以上のデータベースであるネイティブデータベースを１つのデータベースとして仮想化する仮想データベースについてリモートアクセスに用いられるプログラムを生成する処理をコンピュータに実行させるコンパイルプログラムは、前記アプリケーションプログラムのソースコードから前記仮想データベースに対するデータ操作言語（ＤＭＬ）実行処理に関する記述部分を、リモートプロシージャ呼び出し（ＲＰＣ）処理に関する記述に置換するＲＰＣ置換手順と、前記ＲＰＣ処理に基づいて、前記ネイティブデータベースに対するＤＭＬ実行処理を実行するプログラムであるネイティブＤＭＬ実行プログラムを生成するネイティブＤＭＬ実行プログラム生成手順と、を、コンピュータに実行させることを特徴とする。
【００２２】
このように構成することにより、ＲＰＣ環境による仮想データベースについてリモートアクセスに用いられるプログラムを生成することができる。
前記コンパイルプログラムは、さらに、前記アプリケーションプログラムのソースコードが入力されるソースコード入力手順と、前記ソースコードから前記仮想データベースに対するＤＭＬ実行処理に関する入出力情報を抽出する入出力情報抽出手順と、を、コンピュータに実行させることを特徴とする。
【００２３】
このように構成することにより、仮想データベースに対するＤＭＬ実行処理が記述されたアプリケーションプログラムから容易に、ＲＰＣ環境による仮想データベースについてリモートアクセスに用いられるプログラムを生成することができる。
【００２４】
前記コンパイルプログラムは、さらに、前記ＲＰＣを使用するために、前記第１の計算機に格納される第１のインターフェースと、前記第２の計算機に格納される第２のインターフェースと、を生成するインターフェース生成手順と、を、コンピュータに実行させることを特徴とする。
【００２５】
このように構成することにより、ＲＰＣクライアントＳＴＵＢとＲＰＣサーバＳＴＵＢも生成することができる。
本発明にかかる、ユーザからの所定の入力パラメータが入力されるアプリケーションプログラムを有する第１の計算機と、該第１の計算機とネットワークを介して接続される１つ以上のデータベースを有する第２の計算機とからなる、前記アプリケーションプログラムに対して前記１以上のデータベースであるネイティブデータベースを１つのデータベースとして仮想化する仮想データベースについてリモートアクセスに用いられるプログラムを生成する仮想データベースリモートアクセス用プログラムの製造方法は、前記アプリケーションプログラムのソースコードから前記仮想データベースに対するデータ操作言語（ＤＭＬ）実行処理に関する記述部分を、リモートプロシージャ呼び出し（ＲＰＣ）処理に関する記述に置換し、前記ＲＰＣ処理に基づいて前記ネイティブデータベースに対するＤＭＬ実行処理を実行するプログラムであるネイティブＤＭＬ実行プログラムを生成することを行うことを特徴とする。
【００２６】
このように構成することにより、ＲＰＣ環境による仮想データベースについてリモートアクセスに用いられるプログラムを生成することができる。
本発明にかかる、ユーザからの所定の入力パラメータが入力されるアプリケーションプログラムを有する第１の計算機と、該第１の計算機とネットワークを介して接続される１つ以上のデータベースを有する第２の計算機とからなる、前記アプリケーションプログラムに対して前記１以上のデータベースであるネイティブデータベースを１つのデータベースとして仮想化する仮想データベースのリモートアクセス方法は、前記第１の計算機には、前記アプリケーションプログラムと、リモートプロシージャ呼び出し（ＲＰＣ）を行うための第１のインターフェースとが格納され、前記第２の計算機には、前記ネイティブデータベースに対するデータ操作言語（ＤＭＬ）実行処理を実行するネイティブＤＭＬ実行プログラムと、リモートプロシージャ呼び出し（ＲＰＣ）を行うための第２のインターフェースとが格納されており、前記入力パラメータが入力された前記アプリケーションプログラムは前記第１のインターフェースを呼び出し、前記第１のインターフェースは、ＲＰＣにより、前記第２のインターフェースへ前記入力パラメータを渡し、前記第２のインターフェースにより前記入力パラメータを渡された前記ネイティブＤＭＬ実行プログラムは、前記各ネイティブデータベースに対して前記ＤＭＬ実行処理を実行して、各ネイティブデータベースから得られた実行結果を組み立てて１つの実行結果とし、前記組み立てた１つの実行結果を前記仮想データベースの実行結果として提供することを特徴とする。
【００２７】
このように構成することにより、ＲＰＣを用いるため、第１の計算機と第２の計算機間は１往復の通信で済むので、仮想データベース機能を適用しつつ、高性能なリモートデータベースアクセスが可能となる。
【発明の効果】
【００２８】
本発明を用いることにより、業務論理構築の容易化を狙いとした仮想データベース機能を適用しつつ、高性能なリモートデータベースアクセスが可能となる。
【発明を実施するための最良の形態】
【００２９】
図１は、本発明にかかる仮想データベースリモートアクセスシステム及びそれを実現するプログラムを生成するコンパイラの構成概念図を示す。
本発明にかかるコンパイラ（インテリジェントコンパイラ）１は、ユーザからの所定の入力パラメータが入力されるアプリケーションプログラム３を有する第１の計算機１１と、第１の計算機１１とネットワークを介して接続される１つ以上のネイティブデータベース１３を有する第２の計算機１２とからなる、アプリケーションプログラム３に対して１以上のネイティブデータベースを１つのデータベースとして仮想化する仮想データベースについてリモートアクセスに用いられるプログラムを生成する。
【００３０】
本発明にかかるコンパイラ１は、ソースコード入力手順１ａと、入出力情報抽出手順１ｂと、ＲＰＣ置換手順１ｃと、インターフェース生成手順１ｄと、ネイティブＤＭＬ実行プログラム生成手順１ｅと、コンパイル手順１ｆとを行う。
【００３１】
ソースコード入力手順１ａでは、アプリケーションプログラムのソースコード７が入力される。入出力情報抽出手順１ｂでは、そのソースコード７から仮想データベースに対するＤＭＬ実行処理に関する入出力情報を抽出する。
【００３２】
ＲＰＣ置換手順１ｃでは、そのソースコード７から前記仮想データベースに対するデータ操作言語（ＤＭＬ）実行処理に関する記述部分を、リモートプロシージャ呼び出し（ＲＰＣ）処理に関する記述に置換する。
【００３３】
インターフェース生成手順１ｄでは、ＲＰＣを使用するために、前記第１の計算機（クライアント）に格納される第１のインターフェースと、前記第２の計算機（サーバ）に格納される第２のインターフェースと、を生成する。
【００３４】
ネイティブＤＭＬ実行プログラム生成手順１ｅでは、前記ＲＰＣに基づいて前記ネイティブデータベースに対するＤＭＬ実行処理を実行するプログラム（ネイティブＤＭＬ実行プログラム）を生成する。
【００３５】
ネイティブＤＭＬ実行プログラム生成手順１ｅでは、まず、前記ネイティブデータベースと前記仮想データベースとのデータ構造との関係に関する情報が格納されているデータ構造関係情報（マッピングレポジトリ）２に基づいて、仮想データベースに対するＤＭＬ実行処理に含まれる命令及び変数と、その抽出された入出力情報と、ネイティブデータベースとの対応関係を示す対応関係情報（対応テーブル）を生成する。
【００３６】
さらに、ネイティブＤＭＬ実行プログラム生成手順１ｅは、その対応テーブルに基づいて、当該ネイティブＤＭＬ実行プログラム生成手順が実行する処理のスケジュール情報（スケジュールテーブル）を生成する。
【００３７】
コンパイル手順１ｆでは、ＤＭＬ実行処理に関する記述部分がＲＰＣ処理に関する記述に置換されたソースコードと、第１のインターフェースについてのソースコードと、第２のインターフェースについてのソースコードと、ネイティブＤＭＬ実行プログラムのソースコードと、をコンパイルして、それぞれのロードモジュール（アプリケーションプログラム３、第１のインターフェース４、第２のインターフェース５、ネイティブＤＭＬ実行プログラム６）を生成する。
【００３８】
次に、本発明にかかるコンパイラ１により生成された、アプリケーションプログラム３、第１のインターフェース４、第２のインターフェース５、ネイティブＤＭＬ実行プログラム６を使用した、本発明にかかる仮想データベースリモートアクセスシステム１０について説明する。
【００３９】
仮想データベースリモートアクセスシステム１０は、少なくとも第１の計算機１１と、第２の計算機１２を有する。第１の計算機１１には、アプリケーションプログラム３、第１のインターフェース４とが格納されている。第２の計算機１２には、第２のインターフェース５、ネイティブＤＭＬ実行プログラム６とが格納されている。
【００４０】
ユーザにより入力パラメータが入力されたアプリケーションプログラム３は第１のインターフェース４を呼び出す。第１のインターフェース４は、ＲＰＣにより、第２のインターフェース５へその入力パラメータを渡す。
【００４１】
第２のインターフェース５によりその入力パラメータを渡されたネイティブＤＭＬ実行プログラム６は、各ネイティブデータベース１３に対してＤＭＬ実行処理を実行する。そして、各ネイティブデータベースから得られた実行結果を組み立てて１つの実行結果とする。そして、その組み立てた１つの実行結果を前記仮想データベースの実行結果としてユーザに提供する。
【００４２】
このとき、ネイティブＤＭＬ実行プログラム６は、複数のネイティブデータベースのうちの１つのネイティブデータベースに対するＤＭＬ実行処理の実行結果に基づいて、他のネイティブデータベースに対してＤＭＬ実行処理を実行することができる。
【００４３】
それでは、以下に本発明の実施の形態の詳細について説明する。
図２は、本実施形態におけるインテリジェントコンパイラ及び仮想データベースリモートアクセスシステムを示す。従来方式と本発明の方式の際立った相違点は、従来方式がＲＤＡ（リモートデータベースアクセス）に基づいている点に対して、本発明がＲＰＣ（リモートプロシージャ呼出し）に基づいている点にある。
【００４４】
本発明では、以下の機能を有するインテリジェントコンパイラを提供する。（１）アプリケーションプログラムに記述された仮想データベースのＤＭＬ実行処理を、データサーバで動作するサーバＡＰＬ（ＡＰＬ：アプリケーション）に対するリモートプロシージャ呼出し（ＲＰＣ）処理に書き換える。（２）さらに、複数のネイティブデータベースにアクセスし、処理結果を組み立てる論理を備えたサーバＡＰＬのプログラムを生成する。（３）なお、本コンパイラはサーバＡＰＬと共に、ＲＰＣ用のスタブプログラムも生成する。
【００４５】
では、図２について説明する。同図において、仮想データベースリモートアクセスシステム３０は、アプリケーションサーバ３１（本実施形態では、クライアントに相当する）と、データサーバ３２（本実施形態では、サーバに相当する）から構成される。
【００４６】
アプリケーションサーバ３１には、アプリケーションプログラム（以下、「アプリケーション」という）２３と、ＲＰＣクライアント側ＳＴＵＢプログラム（以下、「ＲＰＣクライアントＳＴＵＢ」という）２４、ＲＰＣ／ＣＬ（リモートプロシージャ呼び出しクライアント側制御部）３３を備えている。
【００４７】
データサーバ３２には、ＲＰＣサーバ側ＳＴＵＢプログラム（以下、「ＲＰＣサーバＳＴＵＢ」という）２５、サーバアプリケーションプログラム（以下、「サーバＡＰＬ」という）２６、ＲＰＣ／ＳＶ（リモートプロシージャ呼び出しサーバ側制御部）３４、ＤＢＭＳ−Ａ（３５）、データベースＡ（３６）、ＤＢＭＳ−Ｂ（３７）、データベースＢ（３８）を備えている。なお、データベースＡ、データベースＢは、仮想データベースを構築する実体のデータベースであるので、ネイティブデータベースである。
【００４８】
ユーザは、仮想データベースリモートアクセスシステム３０に対して、検索条件（入力パラメータ）を入力する。すなわち、アプリケーションサーバ３１のアプリケーション２３に入力パラメータが入力される。
【００４９】
アプリケーション２３のＳＴＵＢ呼び出し処理２３は、ＳＴＵＢ２４を呼び出す。ＳＴＵＢ２４，２５を介してＲＰＣにより、サーバＡＰＬ２６にその入力パラメータを引き渡す。
【００５０】
サーバＡＰＬ２６では、その入力パラメータを検索条件として、各ＤＢＭＳ（Ａ，Ｂ）に検索を依頼する。ＤＢＭＳは、対応するそれぞれのデータベース（Ａ，Ｂ）に対して検索処理を実行し、検索処理結果をサーバＡＰＬ２６に渡す。
【００５１】
サーバＡＰＬ２６は、各ＤＢＭＳから得られた検索結果を組み立てて仮想データベースとしての検索結果とし、その仮想データベースとしての検索結果をＳＴＵＢ２５に渡す。ＲＰＣにより仮想データベースの検索結果がＳＴＵＢ２４に通知される。ＳＴＵＢ２４からアプリケーション２３にその仮想データベースの検索結果が渡され、ユーザに提供される。
【００５２】
さて、上記のような仮想データベースリモートアクセスシステムを実現するために、上述した４つのプログラム（アプリケーション２３、ＲＰＣクライアントＳＴＵＢ２４、ＲＰＣサーバＳＴＵＢ２５、サーバＡＰＬ２６）が必要となる。そこで、本実施形態では、インテリジェントコンパイラ２０を使用する。
【００５３】
インテリジェントコンパイラ２０を用いて、仮想データベースに対するＤＭＬ実行処理（以下、仮想データベースＤＭＬ実行処理という）が記述されたアプリケーションのソースコード２１のコンパイルを実行する。そうすると、インテリジェントコンパイラ２０は、テータベース定義がなされたマッピングリポジトリ２２を参照して、ソースコード２１の仮想データベースＤＭＬ実行処理部分がＳＴＵＢ２４を呼び出すＳＴＵＢ呼び出し処理に書き換えられたアプリケーション２３、ＲＰＣクライアントＳＴＵＢ２４、ＲＰＣサーバＳＴＵＢ２５、サーバＡＰＬ２６が生成される。
【００５４】
このような開発環境で作成したアプリケーション２３、ＲＰＣクライアントＳＴＵＢ２４、ＲＰＣサーバＳＴＵＢ２５、及びサーバＡＰＬ２６を実行環境（アプリケーションサーバ３１、データサーバ）に配備する。
【００５５】
このように、本実施形態は、アプリケーションのコンパイル時に、仮想データベースとネイティブデータベースの論理構造の関係定義を取り込みつつコンパイル処理を実行するインテリジェントコンパイラと、分散システム環境におけるアプリケーション間通信機能であるＲＰＣ（リモートプロシージャ呼出し機構）との組合せである。
【００５６】
図３は、本実施形態におけるインテリジェントコンパイラ２０の機能を示す。インテリジェントコンパイラ２０の名前の由来は、本発明のコンパイラが、単に「（ｉ）言語コンパイラ」および「（ｉｉ）ＲＰＣコンパイラ」の機能を包含しているだけでなく、（ｉ）＋（ｉｉ）＋αとしてプラスアルファの機能を備えているためである。
【００５７】
（ｉ）の機能：ソースプログラムを入力としてロードモジュールを生成する。
（ｉｉ）の機能：ＲＰＣの入出力情報を入力としてＳＴＵＢ（クライアント／サーバ）を生成する。
【００５８】
αの機能：ＤＭＬを入力として、これをＲＰＣに置換し、サーバＡＰＬを生成する。
α部分（マッピングリポジトリを参照してＳＴＵＢおよびサーバＡＰＬ生成する）の処理は、仮想データベース制御の「仮想データベースＤＭＬパーザ機能」を装備していないと実行できない処理である。この仮想データベースＤＭＬパーザ機能をインテリジェンスとみなし、インテリジェンスを装備したコンパイラだというのが命名の理由である。
【００５９】
図３において、仮想データベースＤＭＬ実行処理が含まれたアプリケーションのソースプログラム２１が入力されると、インテリジェントコンパイラ２０は、データベース定義マッピングレポジトリ２２を参照して、まず、４つのソースプログラム２３ａ，２４ａ，２５ａ，２６ａを生成する。
【００６０】
ソースプログラム２３ａは、ソースプログラム２１の「仮想データベースＤＭＬ実行処理」が「ＲＰＣ」を実行するためにＲＰＣクライアントＳＴＵＢ２４を呼び出す処理に置換されたソースコードである。
【００６１】
ソースプログラム２４ａ、２５ａはそれぞれ、インターフェース定義４０に基づいて、ＲＰＣをＲＰＣコンパイラによりコンパイルすると得られるクライアント側のＲＰＣのＳＴＵＢ、サーバ側のＲＰＣのＳＴＵＢである。
【００６２】
ソースプログラム２６ａは、マッピングリポジトリ２２に基づいて、各ネイティブデータベースに対して検索処理を行って検索結果を収集し、各データベースから得られた検索結果を組み立てて仮想データベースとしての検索結果とするためのプログラムである。
【００６３】
４つのソースプログラム２３ａ，２４ａ，２５ａ，２６ａは、言語コンパイラ４２によりコンパイルされて、それぞれロードモジュール２３ｂ，２４ｂ，２５ｂ，２６となる。
図４は、本実施形態におけるインテリジェントコンパイラ２０の使用例を示す。同図は、「ＤＭＬの実行」部分を「ＳＴＵＢの呼出し」に置き換えた処理論理を簡単に説明するためのものである。
【００６４】
開発者が、パーソナルコンピュータを用いて、所定のアプリケーションを作成する場合を例に説明する。なお、マッピングリポジトリ２２は予め作成されている。
アプリケーション２３のソースプログラム２１には、仮想データベースに対するＤＭＬ実行処理が記述されている。このままでは、従来のように、仮想データベース制御１１０（図２１参照）にＤＭＬを引き渡して、ＤＭＬ処理結果を返してもらうことになる。
【００６５】
インテリジェントコンパイラ２０によりそのソースプログラム２１をコンパイルすると、コンパイル前の「ＤＭＬの実行」処理に相当する部分が、コンパイル後には「ＳＴＵＢの呼び出し」処理に書き換えられたアプリケーション２３が得られる。
【００６６】
その「ＳＴＵＢの呼び出し」処理により呼び出されたＳＴＵＢに入力パラメータを引き渡すと、出力パラメータが得られる。
次に、インテリジェントコンパイラ２０により行われる処理の詳細を説明する。
【００６７】
図５は、本実施形態におけるインテリジェントコンパイラ２０の処理フローを示す。上述の通り、仮想データベースについてのＤＭＬ実行処理のソースプログラム２１が入力されると、インテリジェントコンパイラ２０は、データベース定義マッピングレポジトリ２２を参照して、４つのプログラムを生成するために、以下の処理を行う。
【００６８】
まず、「検索の入出力情報抽出処理」（Ｓ１）が実行される。ここでは、アプリケーションのソースコード２１の仮想データベースに対するＤＭＬから検索処理の入力情報と出力情報を抽出する。
【００６９】
次に、「ＳＴＵＢ（ＣＬ：クライアント）生成」処理が実行される（Ｓ２）。ここでは、ＡＰＬ名、ＲＰＣ種別などのコンパイルパラメータから生成した宛先解決用ソースコード（後述する）と、Ｓ１の抽出情報と、からＲＰＣクライアントＳＴＵＢ２４ａ（ソースコード）が生成される。
【００７０】
次に、「ＳＴＵＢ（ＳＶ：サーバ）生成」処理が実行される（Ｓ３）。ここでは、ＡＰＬ名、ＲＰＣ種別などのコンパイルパラメータと、Ｓ１の抽出情報と、からＲＰＣサーバＳＴＵＢ２５ａ（ソースコード）が生成される。
【００７１】
次に、「ＤＭＬ−ＲＰＣ置換」処理（Ｓ４）が実行される。ここでは、アプリケーションの仮想データベースＤＭＬ実行処理が、Ｓ１で抽出した入出力情報によるＲＰＣクライアントＳＴＵＢ呼出し処理に置き換えられたアプリケーションのソースコード２３ａが生成される。
【００７２】
次に、「対応テーブル作成」処理が実行される（Ｓ５）。ここでは、マッピングリポジトリ２２が参照されて、仮想データベースＤＭＬの変数（Ｓ１の入出力情報を含む）及び命令と、ネイティブデータベースとの対応テーブルが作成される。
【００７３】
次に、「スケジュールテーブル／サーバＡＰＬ生成」処理が実行される（Ｓ６）。ここでは、Ｓ５で作成された対応テーブルから、ネイティブデータベースについてのスケジュールテーブルが生成される。さらに、そのスケジュールテーブルは、そのＲＰＣサーバＡＰＬのソースコード２６ａとして展開される。
【００７４】
次に、「ロードモジュール変換」処理が実行される。ここでは、Ｓ２，Ｓ３，Ｓ４，Ｓ６で生成したソースコード２３ａ，２４ａ，２５ａ，２６ａがコンパイル及びリンクされて、それぞれロードモジュール２３ｂ，２４ｂ，２５ｂ，２６ｂに変換される。
【００７５】
図６は、ネイティブデータベース及び仮想データベースの論理構造の一例を示す。社会保険サービスシステムを例として、ネイティブデータベース及び仮想データベースの論理構造を説明する。
【００７６】
同図は、データベースＡ（ネイティブＤＢ）、データベースＢ（ネイティブＤＢ）、データベースＣ（仮想ＤＢ）の論理構造を示している。データベースＡ（ネイティブデータベース）は、保険に関するものである。データベースＢ（ネイティブデータベース）は、住民票に関するものである。データベースＣ（仮想データベース）が、検索サービスに用いられるものである。
【００７７】
データベースＡは、レコード要素として、「Ａ１（加入日）」、「Ａ２（識別番号）」（制約属性：主キー）、「Ａ３（種別）」がある。
データベースＢは、レコード要素として、「Ｂ１（住所）」、「Ｂ２（識別番号）」（制約属性：主キー）、「Ｂ３（氏名）」、「Ｂ４（生年月日）」がある。
【００７８】
データベースＣは、データベースＡの「Ａ２（識別番号）」（データ属性：Ｉｎｔｅｇｅｒ）とデータベースＢの「Ｂ２（識別番号）」（データ属性：Ｓｔｒｉｎｇ）とを関連付けることにより仮想的に構成されるものである。データベースＣは、レコード要素として、「Ｃ１（加入日）」、「Ｃ２（識別番号）」、「Ｃ３（種別）」、「Ｃ４（住所）」、「Ｃ５（氏名）」、「Ｃ６（生年月日）」がある。
【００７９】
この論理構造は、マッピングリポジトリ２２に予め定義しておく。このマッピングリポジトリ２２から、仮想ＤＢ（データベースＣ）とネイティブＤＢ（データベースＡ，Ｂ）のレコード要素の対応関係を参照することができる。
【００８０】
なお、後述するが、このマッピングリポジトリ２２のデータ属性が参照されることで、識別番号の処理時に、データベースＡとＢのデータ属性の相違を吸収するためのデータ型変換（Ｓｔｒｉｎｇ⇔Ｉｎｔｅｇｅｒ）を行うことができる。
【００８１】
以下では、図５及びその他の図面を参照しながら、図６のサンプルをパラメータとして、インテリジェントコンパイラ２０の処理、及びインテリジェントコンパイラ２０により生成されたプログラムの処理を説明する。
【００８２】
なお、インテリジェントコンパイラ２０が生成するソースコードのプログラミング記述は、利用者が選択したプログラミング言語種別（Ｊａｖａ（登録商標）、ＣＯＢＯＬ、Ｃ、Ｃ＋＋、Ｖｉｓｕａｌ  Ｂａｓｉｃ等）に応じて異なる。本実施形態の実装では、コンパイラへの実行指示パラメータとしてプログラミング言語種別を指定して、これを基にソースコードの生成およびロードモジュールへの変換を行っている。以降のソースコードの断片は、特定のプログラミング言語仕様に基づいた記述ではなく、ソースコードの処理論理が伝わる程度の擬似コードである。
【００８３】
なお、データベースの検索処理におけるデータ構造の扱いは、データベースの種類（リレーショナルデータベース、ネットワークデータベース、ＸＭＬデータベース等）とプログラミング言語種別に応じて異なる。例えば、検索結果の複数レコード（出力情報）は、リレーショナルデータベースをＪａｖａ（登録商標）で扱う場合は、「ＲｅｓｕｌｔＳｅｔ」というオブジェクトとして表現され、また、ネットワークデータベースをＣＯＢＯＬで扱う場合はＤＢＭＳ内のバッファとして表現されて、アプリケーションのレコード作業域へレコード単位に複写されて処理される。下記のソースコードのサンプルでは、アプリケーションは検索結果の複数レコードを「ＲｅｓｕｌｔＳｅｔ」で、ＲＰＣシステムはレコード要素の配列で表現した配列の先頭アドレスで情報を受け渡す扱いとしている。
【００８４】
図５において、インテリジェントコンパイラ２０によるコンパイル対象のアプリケーションソースプログラムに、例えば、仮想データベースＣに対する以下のＤＭＬが含まれているとする。Ｓ１（検索の入出力情報抽出）では、
ＤＭＬ（ＳＥＬＥＣＴ  ＊  ＷＨＥＲＥ  Ｂ１＝ｂｂｂ）
の内容から図７の入出力情報が抽出される。
【００８５】
図８は、Ｓ２の「ＳＴＵＢ（ＣＬ）生成」処理で生成されたＳＴＵＢ２４のフローを示す。まず、サーバＡＰＬ名をキーにして、サーバＡＰＬリファレンス情報が取得される（Ｓ１１）。
【００８６】
アプリケーションのソースコード２１には、ＤＭＬと共に記述されたデータベース名がある。サーバＡＰＬ名は、このデータベース名を基にしてインテリジェントコンパイラ２０により自動生成される。なお、自動生成した名前がＲＰＣシステムに既に存在するサーバＡＰＬ名と重複する場合は、インテリジェントコンパイラ２０の実行時に、利用者によりサーバＡＰＬ名を指定するようにしてもよい。
【００８７】
また、サーバＡＰＬリファレンス情報は、ＲＰＣネーミングサービスに格納されており、ＲＰＣ／ＣＬがＲＰＣ／ＳＶに接続する際に必要となる所在情報（アドレス）である。これについては、図９で説明する。
【００８８】
次に、サーバＡＰＬリファレンス情報と入力パラメータが指定されて、ＲＰＣにサーバＡＰＬ呼び出しを依頼する（Ｓ１２）。
次に、ＲＰＣから受け取った処理結果が正常か否かが判断される（Ｓ１３）。その処理結果が正常であれば、サーバＡＰＬから受信した処理結果の情報を出力パラメータに格納する（Ｓ１４）。その処理結果が異常であれば、サーバＡＰＬから受信したエラー情報を出力パラメータに格納する（Ｓ１５）。
【００８９】
ここで、宛先解決用ソースコードについて説明する。宛先解決用ソースコードとは、ＲＰＣにおいて、アプリケーションがＲＰＣクライアントＳＴＵＢ呼び出しの前処理として、サーバＡＰＬリファレンス情報を取得する処理論理のことを指している。
【００９０】
なお、通常のＲＰＣでは、宛先解決用ソースコード（ＲＰＣクライアントＳＴＵＢ呼び出しの前処理）はアプリケーション内に記載されるが、本実施形態ではＲＰＣクライアントＳＴＵＢ内の処理として埋め込まれている。この関係を図１０に示す。
【００９１】
図９は、本実施形態における宛先解決用ソースコードについて説明する図である。上段は通常のＲＰＣにおけるクライアントＡＰＬに宛先解決処理を実装した構成を示す。下段は本実施形態のＲＰＣにおけるクライアントＳＴＵＢに宛先解決処理を実装した構成を示す。符号５０はＲＰＣネーミングサービスを示し、符号５１はネットワークを示す。
【００９２】
通常のＲＰＣにおけるクライアントＡＰＬに宛先解決処理を実装した構成の場合、クライアントＡＰＬ内の「（１）宛先解決処理」からサーバＡＰＬ名がＲＰＣネーミングサービス５０に渡されて、ＲＰＣネーミングサービス５０からそのサーバＡＰＬ名に対応するサーバＡＰＬリファレンス情報が返却される。そして、「（２）ＳＴＵＢ呼び出し」を呼び出し、その入力情報として、サーバＡＰＬリファレンス情報と入力パラメータをＳＴＵＢ２４に渡す。ＲＰＣ／ＣＬ３３は、ＳＴＵＢ２４から渡されたサーバＡＰＬリファレンス情報を基にＲＰＣ／ＳＶ３４と接続する。
【００９３】
一方、本実施形態のＲＰＣにおけるクライアントＳＴＵＢに宛先解決処理を実装した構成、クライアントＡＰＩで「（２）ＳＴＵＢ呼び出し」によりＳＴＵＢ２４を呼び出す。すると、ＳＴＵＢ２４で「（１）宛先解決処理」が実行されて、サーバＡＰＬ名がＲＰＣネーミングサービス５０に渡されて、ＲＰＣネーミングサービス５０からそのサーバＡＰＬ名に対応するサーバＡＰＬリファレンス情報が返却される。ＲＰＣ／ＣＬ３３は、ＳＴＵＢ２４から渡されたサーバＡＰＬリファレンス情報を基にＲＰＣ／ＳＶ３４と接続する。
【００９４】
本実施形態で、上記のように通常のＲＰＣとは異なる構成とした理由は、ＣＯＲＢＡ／ＲＭＩなどＲＰＣの種類に依存する処理をＳＴＵＢに吸収して局所化し、アプリケーションにはできるだけ持ち込まないようにするためである。
【００９５】
なお、通常の構成通りに実装してもよい。通常通りの構成にする場合は、アプリケーション内のＤＭＬ呼出し処理を、「（１）宛先解決処理」と「（２）ＳＴＵＢ呼び出し処理」の２つの処理で置き換えるようにインテリジェントコンパイラ２０に修正を施す必要がある。
【００９６】
なお、本実施形態の場合、宛先解決処理は、アプリケーション開発者がコーディングするわけではなく、アプリケーション開発者がコーディングしたＤＭＬからコンパイラが自動生成するため、上記のように通常のＲＰＣ構成と異なっていても、アプリケーション開発者の負担とならない。
【００９７】
図１０は、図８のフローに対応する簡略化した擬似コード例である。同図の擬似コードが、インテリジェントコンパイラ２０のＳ２の処理により、ソースコード２４ａとして生成される。ＳＴＵＢ２４は、ＳＴＵＢ名：ＡｐｐｌｉｃａｔｉｏｎＳｅｒｖｅｒＳｔｕｂ、入力パラメータ：ｃ４、出力パラメータ：ｃ１［］，ｃ２［］，ｃ３［］，ｃ４［］，ｃ５［］，ｃ６［］、復帰コード：ｒｃ、エラーコード：ｅｒで定義されている。
【００９８】
Ｓ１１では、サーバＡＰＬ名「ＳｅｒｖｅｒＡｐｌＤｂ＿Ｃ」をキーにして、サーバＡＰＬリファレンス情報ｓｒが取得される。このサーバＡＰＬ名「ＳｅｒｖｅｒＡｐｌＤｂ＿Ｃ」は、ＤＢ名「仮想データベースＣ」に基づいてコンパイル時に自動生成された名称である。「ｒｐｃＸＸＸ＿ｎａｍｉｎｇ＿ｓｅｒｖｉｃｅ＿ｌｏｏｋｕｐ」は、指定ＲＰＣ種別に対応するネーミングサービスである。
【００９９】
Ｓ１２では、サーバＡＰＬリファレンス情報ｓｒ、入力パラメータｃ４、出力パラメータ＿ｒｃ，＿ｅｒ，＿ｃ１［］，＿ｃ２［］，＿ｃ３［］，＿ｃ４［］，＿ｃ５［］，＿ｃ６［］を「ｒｐｃＸＸＸ＿ｃａｌｌ」に指定して、サーバＡＰＬ呼出しを依頼する。
【０１００】
Ｓ１３でサーバＡＰＬの処理結果が正常（＿ｒｃ＝＝ＯＫ）の場合、Ｓ１４で、サーバＡＰＬから受信した処理結果の情報を出力パラメータｃ１，ｃ２，ｃ３，ｃ４，ｃ５，ｃ６に格納する。
【０１０１】
Ｓ１３でサーバＡＰＬの処理結果が異常の場合、Ｓ１５でサーバＡＰＬから受信したエラー情報を出力パラメータｅｒに格納する。
図１１は、Ｓ３の「ＳＴＵＢ（ＳＶ）生成」処理で生成されたＳＴＵＢ２５のフローを示す。まず、サーバＡＰＬリファレンス情報と入力パラメータが指定されて、サーバＡＰＬが呼び出される（Ｓ２１）。
【０１０２】
次に、呼び出したサーバＡＰＬによる処理結果が正常か否かが判断される（Ｓ２２）。その処理結果が正常であれば、正常処理結果をＲＰＣに返却する（Ｓ２３）。その処理結果が異常であれば、エラー情報をＲＰＣに返却する（Ｓ２４）。
【０１０３】
図１２は、図１１のフローに対応する簡略化した擬似コード例である。同図の擬似コードが、インテリジェントコンパイラ２０のＳ３の処理により、ソースコード２５ａとして生成される。
【０１０４】
ＳＴＵＢ２５は、ＳＴＵＢ名：ＤａｔａｂａｓｅＳｅｒｖｅｒＳｔｕｂ、入力パラメータ：ｓｒ（ＳｅｒｖｅｒＡｐｌＲｅｆｅｒｅｎｃｅ），ｃ４、出力パラメータ：ｒｃ，ｅｒ，ｃ１［］，ｃ２［］，ｃ３［］，ｃ４［］，ｃ５［］，ｃ６［］で定義されている。
【０１０５】
Ｓ２１では、サーバＡＰＬリファレンス情報ｓｒ、入力パラメータｃ４、出力パラメータ＿ｒｃ，＿ｅｒ，＿ｃ１［］，＿ｃ２［］，＿ｃ３［］，＿ｃ４［］，＿ｃ５［］，＿ｃ６［］を、「ＳｅｒｖｅｒＡｐｌＤｂ＿Ｃ」に指定してサーバＡＰＬ呼出しを依頼する。 このサーバＡＰＬ名「ＳｅｒｖｅｒＡｐｌＤｂ＿Ｃ」は、ＤＢ名「仮想データベースＣ」に基づいてコンパイル時に自動生成された名称である。
【０１０６】
Ｓ２２でサーバＡＰＬから受信した処理結果が正常（＿ｒｃ＝＝ＯＫ）の場合、Ｓ２３でサーバＡＰＬから受信した処理結果の情報を出力パラメータｃ１，ｃ２，ｃ３，ｃ４，ｃ５，ｃ６に格納する。
【０１０７】
Ｓ２２でサーバＡＰＬの処理結果が異常の場合、Ｓ２４でサーバＡＰＬから受信したエラー情報を出力パラメータｅｒに格納する。
次に、Ｓ４において、「ＤＭＬ−ＲＰＣ置換処理」により、アプリケーションのソースコード２１のＤＭＬ実行処理がＲＰＣに置換されたソースコード２３ａについて説明する。
【０１０８】
図１３は、「ＤＭＬ−ＲＰＣ置換処理（Ｓ４）」前後のアプリケーションのソースコードを示す。同図では、アプリケーションのソースコードに記述されている仮想データベースＤＭＬ実行処理が、Ｓ１で抽出された入出力情報によるＲＰＣクライアントＳＴＵＢ呼出し処理に置き換えられている。
【０１０９】
同図に示す通り、Ｓ４の処理により、アプリケーションのソースコード２１の一部が置換される。なお、コンパイラによる置換処理を高速化するために、記述形式の上で規約を設けても良いし、特に規約を設けず当該プログラミング言語の標準規約通りでも良い。同図の@の行は高速置換のための規約の例である。
【０１１０】
次に、Ｓ５の対応テーブル作成処理について説明する。
図１４は、Ｓ５で作成された対応テーブルを示す。対応テーブル６０は、マッピングリポジトリ（図６）を参照して作成される。対応テーブル６０は、仮想データベース（６１）のＤＭＬの変数（６４，６５，６６）及び命令（６３）と、ネイティブデータベース（６２）との対応関係を示すものである。
【０１１１】
上記したように、本実施形態の例における仮想データベースＤＭＬは、
ＤＭＬ（ＳＥＬＥＣＴ  ＊  ＷＨＥＲＥ  Ｂ１＝ｂｂｂ）
であるから、ＤＭＬ命令（６３）は「ＳＥＬＥＣＴ」が格納される。また、図７より、入力情報（６４）には、「Ｃ４」が格納される。また、図７より、Ｃ４の値は「ｂｂｂ」であるから、展開形（６５）には、「Ｃ４（ｂｂｂ）」が格納される。
【０１１２】
マッピングリポジトリ２２（図６）より、この入力情報に対応するネイティブデータベース（６６）はデータベース「Ｂ」であり、ＤＭＬの対象となるレコード要素（６７）は「Ｂ１」であり、その属性（６８）は「Ｓｔｒｉｎｇ」である。
【０１１３】
また、図７より、出力情報（６４）には「＊」（全要素）が格納され、その展開形（６５）には「Ｃ１」，「Ｃ２」，「Ｃ３」，「Ｃ４」，「Ｃ５」，「Ｃ６」が格納される。
マッピングリポジトリ２２（図６）より、出力情報「Ｃ１」に対応するネイティブデータベース（６６）はデータベース「Ａ」であり、ＤＭＬの対象となるレコード要素（６７）は「Ａ１」であり、その属性（６８）は「Ｄａｔｅ」である。出力情報「Ｃ２」に対応するネイティブデータベース（６６）はデータベース「Ａ」，「Ｂ」であり、ＤＭＬの対象となるレコード要素（６７）はそれぞれ「Ａ２」，「Ｂ２」であり、その属性（６８）はそれぞれ「Ｉｎｔｅｇｅｒ」，「Ｓｔｒｉｎｇ」である。出力情報「Ｃ３」に対応するネイティブデータベース（６６）はデータベース「Ａ」であり、ＤＭＬの対象となるレコード要素（６７）は「Ａ３」であり、その属性（６８）は「Ｃｈａｒａｃｔｅｒ」である。出力情報「Ｃ４」に対応するネイティブデータベース（６６）はデータベース「Ｂ」であり、ＤＭＬの対象となるレコード要素（６７）は「Ｂ１」であり、その属性（６８）は「Ｓｔｒｉｎｇ」である。出力情報「Ｃ５」に対応するネイティブデータベース（６６）はデータベース「Ｂ」であり、ＤＭＬの対象となるレコード要素（６７）は「Ｂ３」であり、その属性（６８）は「Ｓｔｒｉｎｇ」である。出力情報「Ｃ６」に対応するネイティブデータベース（６６）はデータベース「Ｂ」であり、ＤＭＬの対象となるレコード要素（６７）は「Ｂ４」であり、その属性（６８）は「Ｄａｔｅ」である。
【０１１４】
次に、Ｓ６のネイティブデータベースのスケジュールテーブルの作成について説明する。
図１５は、Ｓ６で作成されるスケジュールテーブル７０を示す。スケジュールテーブル７０には、サーバＡＰＬに、「どのような処理順」（処理順番）で、「どの処理種別」（処理種別）を、「どのネイティブデータベース」（データベース）に対して、「どのような内容の処理」（処理内容）を行うかをスケジューリング化した内容が格納される。このスケジュールテーブル７０は、図１４の対応テーブル６０に基づいて作成される。
【０１１５】
処理順番１（以下、「Ｐｒｏ１」と称する）には、処理種別「アクセス」、データベース「Ｂ」が格納され、処理内容としては「データベースＢのレコード要素Ｂ１がｂｂｂに等しいレコードを取り出す」。
【０１１６】
処理順番２（以下、「Ｐｒｏ２」と称する）には、処理種別「データ型変換」が格納され、処理内容としては「Ｐｒｏ１の処理結果レコードのレコード要素Ｂ２の値をＳｔｒｉｎｇ型（Ｂ２）からＩｎｔｅｇｅｒ型（Ａ２）に変換する」。このデータ型変換では、マッピングリポジトリ２２（図６）を参照して、Ｓｔｒｉｎｇ型（Ｂ２）からＩｎｔｅｇｅｒ型（Ａ２）へ変換している。
【０１１７】
処理順番３（以下、「Ｐｒｏ３」と称する）には、処理種別「アクセス」、データベース「Ａ」が格納され、処理内容としては「データベースＡのレコード要素Ａ２の値がＰｒｏ２で求めた値に等しいレコードを取り出す」。
【０１１８】
処理順番４（以下、「Ｐｒｏ４」と称する）には、処理種別「結果組み立て」、データベース「Ａ，Ｂ」が格納され、処理内容としては「Ｐｒｏ２とＰｒｏ３におけるデータベースＡ，Ｂの検索結果から仮想データベースの検索結果を組み立てる」。
【０１１９】
このようにして生成されたスケジュールテーブル７０に基づいて、以下に説明するＲＰＣサーバＡＰＬのソースコード２６ａが、インテリジェントコンパイラ２０により生成される。
【０１２０】
図１６は、Ｓ６のスケジュールテーブル７０に基づいて「サーバＡＰＬ生成」処理で生成されたサーバＡＰＬ２６のフローを示す。このフローは、インテリジェントコンパイラ２０が決定した検索スケジュール（スケジュールテーブル７０）に沿って複数のデータベースを検索するものである。
【０１２１】
なお、このサーバＡＰＬのフローは、開発者が設計したアプリケーションにおける仮想データベースのＤＭＬ記述、および仮想データベースとネイティブデータベースのマッピングに依存する。同図のフローチャートは、これらの因子には依存しない共通論理の範囲内で記載している。
【０１２２】
まず、依頼元パラメータ及び作業域内の検索結果データから検索の条件データを抽出する（Ｓ３１）。初回のみは依頼元パラメータから検索の条件データを抽出し、２回目以降は、作業域内の検索結果データから検索の条件データを抽出する。なお、作業域には、後述のＳ３４で検索結果データが格納される。
【０１２３】
次に、Ｓ３１で抽出した条件データをネイティブＤＭＬに指定し、そのネイティブＤＭＬを実行する（Ｓ３２）。ここで、ネイティブＤＭＬとは、ネイティブデータベースのＤＢＭＳに対してＤＭＬを実行することを示す。
【０１２４】
次に、そのネイティブＤＭＬの実行による検索結果が正常か否かを判断する（Ｓ３３）。具体的には、実行したネイティブＤＭＬの処理結果、即ちＤＢＭＳからの復帰コードが判断条件となる。その処理結果が異常であれば、異常結果をＳＴＵＢ２５に復帰する（Ｓ３８）。その検索結果が正常であれば、ネイディブＤＭＬの実行結果を作業域に格納する（Ｓ３４）。この作業域に格納した結果がＳ３１で次回以降の検索に用いられる。
【０１２５】
検索をまだ継続するか否かが判断され（Ｓ３５）、ネイティブデータベース数分、Ｓ３１〜Ｓ３５の処理が繰り返される。
検索対象の全ネイティブデータベースの検索が完了すると、作業域の情報（ネイティブデータベース検索結果）を組み立てて、仮想データベースの検索結果とする（Ｓ３６）。その正常な仮想データベースの検索結果をＳＴＵＢ２５に復帰する（Ｓ３８）。
【０１２６】
図１７Ａ及び図１７Ｂは、図１６のフローに対応する簡略化した擬似コード例である。同図の擬似ソースコード２６ａが、インテリジェントコンパイラ２０のＳ６の処理により、スケジュールテーブルに基づいて生成される。
【０１２７】
ＲＰＣサーバＡＰＬ２６は、サーバＡＰＬ名：ＳｅｒｖｅｒＡｐｌＤｂ＿Ｃ、入力パラメータ：ｓｒ，ｃ４、出力パラメータ：＿ｒｃ，＿ｅｒ，＿ｃ１［］，＿ｃ２［］，＿ｃ３［］，＿ｃ４［］，＿ｃ５［］，＿ｃ６［］で定義されている。
【０１２８】
ＲＰＣサーバＡＰＬ２６は、インテリジェント２０により決定された検索スケジュール（スケジュールテーブル７０）に沿って複数のネイティブデータベースを検索する。図１７Ａ及び図１７ＢのＰｒｏ１，Ｐｒｏ２，Ｐｒｏ３，Ｐｒｏ４は、図１５のＰｒｏ１，Ｐｒｏ２，Ｐｒｏ３，Ｐｒｏ４に対応する。
【０１２９】
まず、データベースＢのレコード要素Ｂ１がｂｂｂに等しいレコードを取り出す（Ｐｒｏ１）ために、以下のＳ３１〜Ｓ３４，Ｓ３８を行う。Ｓ３１では、依頼元パラメータｃ４から検索の条件データを抽出して、パラメータｂ１に格納する。
【０１３０】
Ｓ３２では、抽出した条件データを指定してネイティブＤＭＬ（“ＳＥＬＥＣＴ  Ｂ１，Ｂ２，Ｂ３，Ｂ４  ＷＨＥＲＥ  Ｂ１＝ｂ１”）をネイティブデータベースＢに対して実行する。
【０１３１】
Ｓ３３でネイティブＤＭＬの実行による検索結果が正常（ｒｃ＝＝ＯＫ）の場合、Ｓ３４でネイティブＤＭＬの実行結果を作業域ｂ１［ｉ］，ｂ２［ｉ］，ｂ３［ｉ］，ｂ４［ｉ］に格納する（検索結果に次レコードが存在する間反復する。）
Ｓ３３でネイティブＤＭＬの実行による検索結果が異常の場合、Ｓ３８で異常の処理結果をＳＴＵＢに復帰する。
【０１３２】
次に、Ｐｒｏ１の処理結果レコードのレコード要素Ｂ２の値をＳｔｒｉｎｇ型（Ｂ２）からＩｎｔｅｇｅｒ型（Ａ２）に変換する（Ｐｒｏ２）。その変換した値を作業域ａ［ｉ］に格納する。
【０１３３】
次に、データベースＡのレコード要素Ａ２の値がＰｒｏ２で求めた値に等しいレコードを取り出す（Ｐｒｏ３）ために、以下のＳ３１〜Ｓ３４，Ｓ３８を行う。Ｓ３１では、作業域内の検索結果データａ２［ｉ］から検索の条件データを抽出して、パラメータａ２に格納する。
【０１３４】
Ｓ３２では、抽出した条件データを指定してネイティブＤＭＬ（“ＳＥＬＥＣＴ  Ａ１，Ａ２，Ａ３  ＷＨＥＲＥ  Ａ２＝ａ２”）をデータベースＡに対して実行する。
Ｓ３３でネイティブＤＭＬの実行による検索結果が正常（ｒｃ＝＝ＯＫ）の場合、Ｓ３４でネイティブＤＭＬの実行結果を作業域ａ１［ｊ］，ａ２［ｊ］，ａ３［ｊ］に格納する（検索結果に次レコードが存在する間反復する。）
Ｓ３３でネイティブＤＭＬの実行による検索結果が異常の場合、Ｓ３８で異常の処理結果をＳＴＵＢに復帰する。
【０１３５】
次に、Ｐｒｏ２とＰｒｏ３におけるデータベースＡ，Ｂの検索結果から仮想データベースの検索結果を組み立てる（Ｐｒｏ４）ため、Ｓ３６〜Ｓ３７を行う。Ｓ３６では、各配列要素に対して以下の処理が実行される。作業域に格納されたデータベースＡ，Ｂの検索結果ａ１［ｊ］，ａ２［ｊ］，ａ３［ｊ］、ｂ１［ｉ］，ｂ３［ｉ］，ｂ４［ｉ］をそれぞれ、仮想データベースの検索結果としての出力パラメータ＿ｃ１［ｊ］，＿ｃ２［ｊ］，＿ｃ３［ｊ］，＿ｃ４［ｊ］，＿ｃ５［ｊ］，＿ｃ６［ｊ］に格納する。Ｓ３７では、その正常な仮想データベースの検索結果をＳＴＵＢ２５に復帰する
次に、Ｓ７において行われるロードモジュール変換について説明する。以下のソースコードを入力として当該ソースコードを記述したプログラミング言語仕様に基づいてコンパイルが行われる（通常の言語コンパイル処理であり詳細は省略）。
【０１３６】
・アプリケーション（ＤＭＬ−ＲＰＣ変換後のソースコード）：Ｓ４のアウトプット
・ＲＰＣクライアントＳＴＵＢ                            ：Ｓ２のアウトプット
・ＲＰＣサーバＳＴＵＢ                                  ：Ｓ３のアウトプット
・ＲＰＣサーバＡＰＬ                                    ：Ｓ６のアウトプット
このようにして、インテリジェントコンパイラ２０により、アプリケーション２３、ＲＰＣクライアントＳＴＵＢ２４、ＲＰＣサーバＳＴＵＢ２５、ＲＰＣサーバＡＰＬ２６が生成される。以下では、これらのロードモジュールを実行環境に配備した仮想データベースリモートアクセスシステムについて説明する。
【０１３７】
図１８は、本実施形態におけるインテリジェントコンパイラ２０により得られた４つのロードモジュールを実装した仮想データベースリモートアクセスシステムを示す。インテリジェントコンパイラ２０により生成されたアプリケーション２３とＲＰＣクライアントＳＴＵＢ２４は、アプリケーションサーバ３１に配備される。インテリジェントコンパイラ２０により得られたＲＰＣサーバＳＴＵＢ２５とＲＰＣサーバＡＰＬ２６は、データサーバ３２に配備される。
【０１３８】
上述の通り、アプリケーション２３において、仮想データベースに対するＤＭＬ実行処理はインテリジェントコンパイラ２０によりＳＴＵＢ呼び出し処理に変換されている。
それでは、仮想データベースリモートアクセスシステム３０の使用例について説明する。ユーザは、仮想データベースリモートアクセスシステム３０に対して、検索条件（入力パラメータ）を入力する。つまり、アプリケーションサーバ３１に入力パラメータを入力する。
【０１３９】
アプリケーション２３のＳＴＵＢ呼び出し処理では、検索条件のパラメータＢ１（ｂｂｂ）を指定して、ＳＴＵＢ２４が呼び出される（Ｓ４１）。そうすると、ＲＰＣによりパラメータＢ１（ｂｂｂ）がリモートのＳＴＵＢ２５経由でサーバＡＰＬ２６に通知される（Ｓ４２）。
【０１４０】
サーバＡＰＬ２６は、通知された検索条件を基にネイティブＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を実行する。そうすると、ＤＢＭＳ−Ａ（３５）及びＤＢＭＳ−Ｂ（３７）はそれぞれ、データベースＡ（３６），データベースＢ（３８）に対して検索処理を実行し、検索処理結果をサーバＡＰＬ２６に渡す。サーバＡＰＬ２６は、各ＤＢＭＳから得られた検索結果を組み立てて仮想データベースとしての検索結果とする（Ｓ４３）。
【０１４１】
サーバＡＰＬ２６は、その仮想データベースの検索結果をＳＴＵＢ２５に返却する（Ｓ４４）。ＲＰＣにより仮想データベースの検索結果がＳＴＵＢ２４に通知される（Ｓ４５）。ＳＴＵＢ２４からＳＴＵＢ呼び出しプログラム２３にその仮想データベースの検索結果がアプリケーション２３に返却される（Ｓ４６）。そして、アプリケーション２３は、仮想データベースの検索結果をユーザに提供する。
【０１４２】
なお、本実施形態では、入力パラメータは１つ、出力パラメータは６つの場合を例に挙げて説明したが、これに限定されず、用途に応じて入出力パラメータを静的に変更してもよい。
【０１４３】
図１９は、本実施形態におけるインテリジェントコンパイラ２０が実行されるハードウェア環境の構成ブロック図である。同図において、コンピュータ８０は、ＣＰＵ８２、リードオンリメモリ（ＲＯＭ）８３、ランダムアクセスメモリ（ＲＡＭ）８６、通信インターフェース（以下、インターフェースをＩ／Ｆという）８４、記憶装置８７、出力Ｉ／Ｆ８１、入力Ｉ／Ｆ８５、可搬型記憶媒体の読み取り装置８８、およびこれらの全てが接続されたバス８９、出力Ｉ／Ｆ８１に接続している出力装置９０、入力Ｉ／Ｆ８５に接続している入力装置９１によって構成されている。
【０１４４】
記憶装置８７としてはハードディスク、磁気ディスクなど様々な形式の記憶装置を使用することができる。記憶装置８７またはＲＯＭ８３には、上記の実施形態で用いたインテリジェントコンパイラプログラムが格納されている。また、記憶装置８７には、マッピングレポジトリ等が格納される。
【０１４５】
本実施形態にかかるプログラムは、プログラム提供者側からネットワーク８９、および通信Ｉ／Ｆ８４を介して、例えば記憶装置８７に格納してもよい。また、このプログラムは、市販され、流通している可搬型記憶媒体に格納され、読み取り装置８８にセットされて、ＣＰＵ８２によって実行してもよい。可搬型記憶媒体としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスク、ＩＣカードなど様々な形式の記憶媒体を使用することができ、このような記憶媒体に格納されたプログラムが読み取り装置８８によって読み取られる。
【０１４６】
また、入力装置９１には、キーボード、マウス、または電子カメラ、マイク、スキャナ、センサ、タブレットなどを用いることが可能である。また、出力装置９０には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク８９は、インターネット、ＬＡＮ、ＷＡＮ、専用線、有線、無線等の通信網であってよい。
【０１４７】
以上より、リモートプロシージャ呼出しにより、仮想データベースを検索するＤＭＬの記述内容に関係なく、通信回数が呼出しと復帰の往復１回のみとなる。通信データも検索条件のパラメタと検索結果データのみなので、通信オーバヘッドが従来比で軽減される。
【０１４８】
また、仮想ＤＭＬの解析、分解、組立処理のスケジュールについて、従来は動的にマッピングレポジトリを参照して実行していたが、本発明では、仮想ＤＭＬの解析、分解、組立処理を静的（コンパイル時）にサーバＡＰＬの論理として展開することができる。それにより、スケジュール処理のオーバヘッドも軽減され、高性能なアクセスが実現される。
【０１４９】
また、本発明によれば、アプリケーションサーバ側にのみアプリケーションを配置する構成により業務システムを設計した場合であっても、インテリジェントコンパイラによりその構成を自動生成することができる。よって、ストアドプロシージャのようなアプリケーションサーバとデータサーバの双方のアプリケーションが連携するシステム構成のような、双方のアプリケーションのインターフェースを調整した設計が不要となり、開発者にとって設計時の負担を軽減させることができる。
【０１５０】
本発明によれば、開発の容易化、及びアプリケーションサーバ側で単独に開発したアプリケーションにおけるアクセスの高速化が可能となる。なお、仮想データベースのＤＭＬは、ＳＱＬ（テーブルアクセス）やＸＱｕｅｒｙ（ＸＭＬアクセス）など任意のＤＭＬを、ネイティブデータベースはＲＤＢ、ＮＤＢ、ＶＳＡＭ、ＸＭＬ−ＤＢなど任意のデータベースを、ＲＰＣはＣＯＲＢＡ、Ｊａｖａ（登録商標）−ＲＭＩ、Ｍｉｃｒｏｓｏｆｔ−ＣＯＭなど任意のＲＰＣを利用可能である。
【０１５１】
また、マッピングリポジトリについては、ＯＤＭＧ(ｈｔｔｐ：／／ｗｗｗ．ｏｄｍｇ．ｏｒｇ)、Ｈｉｂｅｒｎａｔｅ（ｈｔｔｐ：／／ｗｗｗ．ｈｉｂｅｒｎａｔｅ．ｏｒｇ）、ＳＱＬ／ＸＭＬ（ｈｔｔｐ：／／ｗｗｗ．ｓｑｌｘ．ｏｒｇ）などの技術を前提としている。
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【０１５２】
（付記１）
ユーザからの所定の入力パラメータが入力されるアプリケーションプログラムを有する第１の計算機と、該第１の計算機とネットワークを介して接続される１つ以上のデータベースを有する第２の計算機とからなる、前記アプリケーションプログラムに対して前記１以上のデータベースであるネイティブデータベースを１つのデータベースとして仮想化する仮想データベースについてリモートアクセスに用いられるプログラムを生成する処理をコンピュータに実行させるコンパイルプログラムであって、
前記アプリケーションプログラムのソースコードから前記仮想データベースに対するデータ操作言語（ＤＭＬ）実行処理に関する記述部分を、リモートプロシージャ呼び出し（ＲＰＣ）処理に関する記述に置換するＲＰＣ置換手順と、
前記ＲＰＣ処理に基づいて、前記ネイティブデータベースに対するＤＭＬ実行処理を実行するプログラムであるネイティブＤＭＬ実行プログラムを生成するネイティブＤＭＬ実行プログラム生成手順と、
を、コンピュータに実行させるコンパイルプログラム。
【０１５３】
（付記２）
前記コンパイルプログラムは、さらに、
前記アプリケーションプログラムのソースコードが入力されるソースコード入力手順と、
前記ソースコードから前記仮想データベースに対するＤＭＬ実行処理に関する入出力情報を抽出する入出力情報抽出手順と、
を、コンピュータに実行させる付記１に記載のコンパイルプログラム。
【０１５４】
（付記３）
ネイティブＤＭＬ実行プログラム生成手順は、
前記ネイティブデータベースと前記仮想データベースとのデータ構造との関係に関する情報が格納されているデータ構造関係情報に基づいて、前記仮想データベースに対するＤＭＬ実行処理に含まれる命令及び変数と、前記抽出された前記入出力情報と、前記ネイティブデータベースとの対応関係を示す対応関係情報を生成する処理を行う
ことを特徴とする付記２に記載のコンパイルプログラム。
【０１５５】
（付記４）
ネイティブＤＭＬ実行プログラム生成手順は、さらに、
前記対応関係情報に基づいて、当該ネイティブＤＭＬ実行プログラム生成手順が実行する処理のスケジュール情報を生成する、
ことを特徴とする付記３に記載のコンパイルプログラム。
【０１５６】
（付記５）
前記スケジュール情報には、どのような処理順で、どの前記ネイディブデータベースに、どのような処理を実行するかという情報が含まれる
ことを特徴とする付記４に記載のコンパイルプログラム。
【０１５７】
（付記６）
前記スケジュール情報には、前記ネイティブデータベースに対するＤＭＬ実行処理の結果を組み立てて、１つの前記仮想データベースに対するＤＭＬ実行処理の結果とする処理を行うことが含まれる
ことを特徴とする付記４に記載のコンパイルプログラム。
【０１５８】
（付記７）
ネイティブＤＭＬ実行プログラム生成手順は、さらに、
前記スケジュール情報に基づいて、前記ネイティブデータベースに対するＤＭＬ実行処理をソースコード化する
ことを特徴とする付記６に記載のコンパイルプログラム。
【０１５９】
（付記８）
前記コンパイルプログラムは、さらに、
前記ＲＰＣを使用するために、前記第１の計算機に格納される第１のインターフェースと、前記第２の計算機に格納される第２のインターフェースと、を生成するインターフェース生成手順と、
を、コンピュータに実行させる付記２に記載のコンパイルプログラム。
【０１６０】
（付記９）
前記コンパイルプログラムは、さらに、
前記ＤＭＬ実行処理に関する記述部分がＲＰＣ処理に関する記述に置換された前記アプリケーションプログラムのソースコードと、前記第１のインターフェースについてのソースコードと、前記第２のインターフェースについてのソースコードと、前記ネイティブＤＭＬ実行プログラムのソースコードと、をコンパイルして、それぞれのロードモジュールを生成するコンパイル手順
を、コンピュータに実行させる付記８に記載のコンパイルプログラム。
【０１６１】
（付記１０）
ユーザからの所定の入力パラメータが入力されるアプリケーションプログラムを有する第１の計算機と、該第１の計算機とネットワークを介して接続される１つ以上のデータベースを有する第２の計算機とからなる、前記アプリケーションプログラムに対して前記１以上のデータベースであるネイティブデータベースを１つのデータベースとして仮想化する仮想データベースについてリモートアクセスに用いられるプログラムを生成する仮想データベースリモートアクセス用プログラムの製造方法であって、
前記アプリケーションプログラムのソースコードから前記仮想データベースに対するデータ操作言語（ＤＭＬ）実行処理に関する記述部分を、リモートプロシージャ呼び出し（ＲＰＣ）処理に関する記述に置換し、
前記ＲＰＣ処理に基づいて前記ネイティブデータベースに対するＤＭＬ実行処理を実行するプログラムであるネイティブＤＭＬ実行プログラムを生成する
ことを行う仮想データベースリモートアクセス用プログラムの製造方法。
【０１６２】
（付記１１）
前記仮想データベースリモートアクセス用プログラムの製造方法は、さらに、
前記アプリケーションプログラムのソースコードを入力し、
前記ソースコードから前記仮想データベースに対するＤＭＬ実行処理に関する入出力情報を抽出する、
ことを行う付記１０に記載の仮想データベースリモートアクセス用プログラムの製造方法。
【０１６３】
（付記１２）
前記ネイティブＤＭＬ実行プログラムを生成する場合、前記ネイティブデータベースと前記仮想データベースとのデータ構造との関係に関する情報が格納されているデータ構造関係情報に基づいて、前記仮想データベースに対するＤＭＬ実行処理に含まれる命令及び変数と、前記抽出された前記入出力情報と、前記ネイティブデータベースとの対応関係を示す対応関係情報を生成する
ことを特徴とする付記１１に記載の仮想データベースリモートアクセス用プログラムの製造方法。
【０１６４】
（付記１３）
前記ネイティブＤＭＬ実行プログラムを生成する場合、さらに、前記対応関係情報に基づいて、ネイティブＤＭＬ実行プログラムにより実行されるスケジュール情報を生成する、
ことを特徴とする付記１２に記載の仮想データベースリモートアクセス用プログラムの製造方法。
【０１６５】
（付記１４）
前記スケジュール情報には、どのような処理順で、どの前記ネイディブデータベースに、どのような処理を実行するかという情報が含まれる
ことを特徴とする付記１３に記載の仮想データベースリモートアクセス用プログラムの製造方法。
【０１６６】
（付記１５）
前記スケジュール情報には、前記ネイティブデータベースに対するＤＭＬ実行処理の結果を組み立てて、１つの前記仮想データベースに対するＤＭＬ実行処理の結果とする処理を行うことが含まれる
ことを特徴とする付記１３に記載の仮想データベースリモートアクセス用プログラムの製造方法。
【０１６７】
（付記１６）
前記ネイティブＤＭＬ実行プログラムを生成する場合、さらに、前記スケジュール情報に基づいて、前記ネイティブデータベースに対するＤＭＬ実行処理をソースコード化する
ことを特徴とする付記１５に記載の仮想データベースリモートアクセス用プログラムの製造方法。
【０１６８】
（付記１７）
前記仮想データベースリモートアクセス用プログラムの製造方法は、さらに、
前記ＲＰＣを使用するために、前記第１の計算機に格納される第１のインターフェースと、前記第２の計算機に格納される第２のインターフェースと、を生成し、
を行う付記１１に記載の仮想データベースリモートアクセス用プログラムの製造方法。
【０１６９】
（付記１８）
前記仮想データベースリモートアクセス用プログラムの製造方法は、さらに、
前記ＤＭＬ実行処理に関する記述部分がＲＰＣ処理に関する記述に置換された前記アプリケーションプログラムのソースコードと、前記第１のインターフェースについてのソースコードと、前記第２のインターフェースについてのソースコードと、前記ネイティブＤＭＬ実行プログラムのソースコードと、をコンパイルして、それぞれのロードモジュールを生成する
ことを特徴とする付記１７に記載の仮想データベースリモートアクセス用プログラムの製造方法。
【０１７０】
（付記１９）
ユーザからの所定の入力パラメータが入力されるアプリケーションプログラムを有する第１の計算機と、該第１の計算機とネットワークを介して接続される１つ以上のデータベースを有する第２の計算機とからなる、前記アプリケーションプログラムに対して前記１以上のデータベースであるネイティブデータベースを１つのデータベースとして仮想化する仮想データベースのリモートアクセス方法であって、
前記第１の計算機には、前記アプリケーションプログラムと、リモートプロシージャ呼び出し（ＲＰＣ）を行うための第１のインターフェースとが格納され、
前記第２の計算機には、前記ネイティブデータベースに対するデータ操作言語（ＤＭＬ）実行処理を実行するネイティブＤＭＬ実行プログラムと、リモートプロシージャ呼び出し（ＲＰＣ）を行うための第２のインターフェースとが格納されており、
前記入力パラメータが入力された前記アプリケーションプログラムは前記第１のインターフェースを呼び出し、
前記第１のインターフェースは、ＲＰＣにより、前記第２のインターフェースへ前記入力パラメータを渡し、
前記第２のインターフェースにより前記入力パラメータを渡された前記ネイティブＤＭＬ実行プログラムは、前記各ネイティブデータベースに対して前記ＤＭＬ実行処理を実行して、各ネイティブデータベースから得られた実行結果を組み立てて１つの実行結果とし、
前記組み立てた１つの実行結果を前記仮想データベースの実行結果として提供する
ことを特徴とする仮想データベースのリモートアクセス方法。
【０１７１】
（付記２０）
前記ネイティブＤＭＬ実行プログラムは、前記複数のネイティブデータベースのうちの１つのネイティブデータベースに対する前記ＤＭＬ実行処理の実行結果に基づいて、他の前記ネイティブデータベースに対して前記ＤＭＬ実行処理を実行する
ことを特徴とする付記１９に記載の仮想データベースのリモートアクセス方法。
【図面の簡単な説明】
【０１７２】
【図１】本発明にかかる仮想データベースリモートアクセスシステム及びそれを実現するプログラムを生成するコンパイラの構成概念図を示す。
【図２】本実施形態におけるインテリジェントコンパイラ及び仮想データベースリモートアクセスシステムを示す。
【図３】本実施形態におけるインテリジェントコンパイラ２０の機能を示す。
【図４】本実施形態におけるインテリジェントコンパイラ２０の使用例を示す。
【図５】本実施形態におけるインテリジェントコンパイラ２０の処理フローを示す。
【図６】ネイティブデータベース及び仮想データベースの論理構造の一例を示す。
【図７】Ｓ１の「検索の入出力情報抽出」処理で抽出された入出力情報の一例を示す。
【図８】Ｓ２の「ＳＴＵＢ（ＣＬ）生成」処理で生成されたＳＴＵＢ２４のフローを示す。
【図９】本実施形態における宛先解決用ソースコードについて説明する図である。
【図１０】図８のフローに対応する簡略化した擬似コード例である。
【図１１】Ｓ３の「ＳＴＵＢ（ＳＶ）生成」処理で生成されたＳＴＵＢ２５のフローを示す。
【図１２】図１１のフローに対応する簡略化した擬似コード例である。
【図１３】「ＤＭＬ−ＲＰＣ置換処理（Ｓ４）」前後のアプリケーションのソースコードを示す。
【図１４】Ｓ５で作成された対応テーブルを示す。
【図１５】Ｓ６で作成されるスケジュールテーブル７０を示す。
【図１６】Ｓ６のスケジュールテーブル７０に基づいて「サーバＡＰＬ生成」処理で生成されたサーバＡＰＬ２６のフローを示す。
【図１７Ａ】図１６のフローに対応する簡略化した擬似コード例（その１）である。
【図１７Ｂ】図１６のフローに対応する簡略化した擬似コード例（その２）である。
【図１８】本実施形態におけるインテリジェントコンパイラ２０により得られた４つのロードモジュールを実装した仮想データベースリモートアクセスシステムを示す。
【図１９】本実施形態におけるインテリジェントコンパイラ２０が実行されるハードウェア環境の構成ブロック図である。
【図２０】仮想データベースに対するリモート検索の概念図を示す。
【図２１】従来における仮想データベースリモートアクセスシステムを示す。
【図２２】従来における、データベースＢの検索結果を確認した後でないと、データベースＡの検索ができないという検索結果依存性の具体例である。
【図２３】従来におけるアプリケーションサーバとデータサーバの双方のアプリケーションが連携する構成により業務システムを設計した場合の例である。
【符号の説明】
【０１７３】
１      コンパイラ（インテリジェントコンパイラ）
１ａ      ソースコード入力手順
１ｂ      入出力情報抽出手順
１ｃ      ＲＰＣ置換手順
１ｄ      インターフェース生成手
１ｆ      ネイティブＤＭＬ実行プログラム生成手順
２      データ構造関係情報２
３      アプリケーションプログラム
４      第１のインターフェース
５      第２のインターフェース
６      ネイティブＤＭＬ実行プログラム
７      アプリケーションプログラムのソースコード
１０      仮想データベースリモートアクセスシステム
１１      第１の計算機
１２      第２の計算機
１３      ネイティブＤＢ
２０      インテリジェントコンパイラ
２１      アプリケーションのソースコード２１
２２      マッピングレポジトリ
２３      アプリケーション
２４      ＲＰＣクライアントＳＴＵＢ
２５      ＲＰＣサーバＳＴＵＢ
２６ａ      サーバＡＰＬ
２３ａ      アプリケーション（ソースコード）
２４ａ      ＲＰＣクライアントＳＴＵＢ（ソースコード）
２５ａ      ＲＰＣサーバＳＴＵＢ（ソースコード）
２６ａ      サーバＡＰＬ（ソースコード）
３０      仮想データベースリモートアクセスシステム
３１      アプリケーションサーバ
３２      データサーバ
３３      ＲＰＣ／ＣＬ
３４      ＲＰＣ／ＳＶ
３５      ＤＢＭＳ−Ａ
３６      データベースＡ
３７      ＤＢＭＳ−Ｂ
３８      データベースＢ
６０      対応テーブル
７０      スケジュールテーブル
【図１】
2007249785.tif 000003
【図５】
2007249785.tif 000004
【図７】
2007249785.tif 000005
【図８】
2007249785.tif 000006
【図９】
2007249785.tif 000007
【図１０】
2007249785.tif 000008
【図１１】
2007249785.tif 000009
【図１２】
2007249785.tif 000010
【図１３】
2007249785.tif 000011
【図１４】
2007249785.tif 000012
【図１５】
2007249785.tif 000013
【図１６】
2007249785.tif 000014
【図１７Ａ】
2007249785.tif 000015
【図１７Ｂ】
2007249785.tif 000016
【図１９】
2007249785.tif 000017
【図２】
2007249785.tif 000018
【図３】
2007249785.tif 000019
【図４】
2007249785.tif 000020
【図６】
2007249785.tif 000021
【図１８】
2007249785.tif 000022
【図２０】
2007249785.tif 000023
【図２１】
2007249785.tif 000024
【図２２】
2007249785.tif 000025
【図２３】
2007249785.tif 000026