(57)【要約】【目的】高速且つ高パフォーマンスなリモートデータベースへのアクセスが可能となるトランザクション処理システムにおけるデータ操作永続化方法を、提供する。【構成】業務処理アプリケーション１２２は、データベース検索をリモートアクセスクライアント１２３に依頼する。リモートアクセスクライアント１２３は、データサーバ２２１に対して、検索要求メッセージを送信する。データサーバによる検索によってデータベースから抽出されたレコードの内容は、業務処理アプリケーション１２２によって操作される。このデータ操作の内容は、ログに記録されるが、同一のレコードに対して複数回のデータ操作があった場合には、最終的なレコード内容を表すログのみが残される。業務処理アプリケーション１２２がデータ操作を完了すると、リモートアクセスクライアント１２３は、ログのデータベースへの反映をデータサーバ２２１に依頼する。【選択図】　図１
2004086299.tif 000002
【特許請求の範囲】
【請求項１】
多数レコードからなるデータベースに対するデータ操作要求を発行する第１コンピュータシステム，及び、前記データ操作要求に応じて前記データベースにアクセスする第２コンピュータシステムから構成されたトランザクション処理システムにおけるデータ操作永続化方法であって、
前記第１コンピュータシステムが、検索条件を指定して、前記第２コンピュータシステムに対して前記データベースからの前記検索条件を満たすレコードの検索を依頼し、
前記第２コンピュータシステムが、前記第１コンピュータシステムによって指定された前記検索条件を満たす全レコードを、前記データベースから検索して、その内容を前記第１コンピュータシステムへ応答し、
前記第１コンピュータシステムが、メモリ上において、前記第２コンピュータシステムから応答された各レコードの内容である各データベースオブジェクトに対して、順次、予め設定されたデータ操作を実行するとともに、そのデータ操作の内容をレコード単位のログとしてメモリに記録し、
前記第１コンピュータシステムが、前記データベースオブジェクトに対して予め設定された全データ操作を完了した時には、データ操作後における各データオブジェクト及び各ログの内容を、一つのメッセージに格納して前記第２コンピュータシステムへ送信し、
前記第２コンピュータシステムが、前記第１コンピュータシステムから受信した前記メッセージ中の各ログの内容に従って前記データベースをアクセスして、前記データベースオブジェクトを前記データベースに反映させる
ことを特徴としたトランザクション処理システムにおけるデータ操作永続化方法。
【請求項２】
前記第１コンピュータシステムは、前記データ操作によって内容が更新されたデータベースオブジェクト及び追加されたデータベースオブジェクトのみを前記メッセージに格納して前記第２コンピュータシステムへ送信する
ことを特徴とする請求項１記載のトランザクション処理システムにおけるデータ操作永続化方法。
【請求項３】
前記第１コンピュータシステムは、複数のデータ操作が実行されたデータベースオブジェクトについては、最後のデータ操作実行後における内容を、前記メッセージに格納して前記第２コンピュータシステムへ送信する
ことを特徴とする請求項１又は２記載のトランザクション処理システムにおけるデータ操作永続化方法。
【請求項４】
前記第１コンピュータシステムは、個々のデータベースオブジェクトについて複数のデータ操作が実行された場合には、前記メッセージに格納された当該オブジェクトの前記データベースへの反映に要する一つのログの内容のみを、前記メッセージに挿入する
ことを特徴とする請求項３記載のトランザクション処理システムにおけるデータ操作永続化方法。
【請求項５】
データベースにアクセスするサーバコンピュータと通信して前記データベースに対するトランザクションを実行するコンピュータに対して、
検索条件を指定して、前記サーバコンピュータに対して、前記データベースからの前記検索条件を満たすレコードの検索を依頼する第１の手順と、
メモリ上において、前記サーバコンピュータによって前記データベースから検索されて応答された各レコードの内容である各データベースオブジェクトに対して、順次、予め設定されたデータ操作を実行するとともに、そのデータ操作の内容をレコード単位のログとしてメモリに記録する第２の手順と、
前記データベースオブジェクトに対して予め設定された全データ操作を完了した時には、データ操作後における各データオブジェクト及び各ログの内容を、一つのメッセージに格納して前記サーバコンピュータに送信することによって、その内容の前記データベースへの反映を依頼する第３の手順と
を順番に実行させるリモートデータベースに対するデータ操作プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データベースに対するトランザクション処理を実現するために、データ操作要求を発行するコンピュータシステム（アプリケーション側サイト）と、このようなデータ操作要求に応じてデータベースにアクセスするコンピュータシステム（データベース側サイト）とから構成されたトランザクション処理システムにおいて、データベースオブジェクトに対するデータ操作を永続化するための方法，及び、このようなデータ操作永続化方法をサーバコンピュータと通信するコンピュータに実行させるためのリモートデータベースに対するデータ操作プログラムに、関する。
【０００２】
【従来の技術】
このようなトランザクション処理システムにおいては、アプリケーション側サイトには、オペレータによる入力に従ってデータベースに対するデータ操作要求を発行するアプリケーションプログラムがインストールされ、データベース側サイトには、データベースの物理データベース（ディスク）が格納されているとともに、アプリケーション側サイトによって発行されたデータ操作要求に応じてデータベース（物理データベース）をアクセスしてデータ操作を行うデータサーバプログラムがインストールされている。
【０００３】
アプリケーション側サイト上で実行されているアプリケーション（プログラム）は、オペレータによって指示が入力されると、その指示に応じたデータベースの論理的な名称に基づいてデータサーバ（プログラム）の所在を解決し、当該データサーバとの接続を確立し、データベースに対するデータ操作を要求する。そして、データ操作を要求されたデータサーバが、データベースに対するデータ操作を完了すると、このデータ操作の処理結果（コミット又はアボート）をアプリケーションに応答する。
【０００４】
ところで、データベース処理においては、パフォーマンス向上が重要なファクタであり、パフォーマンスを向上するために、従来から様々な手法がとられてきた。例えば、アプリケーションがデータベースに対するデータ操作をデータサーバに要求する方式においても、個々の処理毎のＤＭＬ（Ｄａｔａｂａｓｅ　Ｍａｎｉｐｕｌａｔｉｏｎ　Ｌａｎｇｕａｇｅ：例えばリレーショナルデータベースにおけるＳＱＬ等）命令をアプリケーションからデータサーバへ逐一送付して都度実行させる代わりに、ＤＭＬ命令をグループ化したストアドプロシジャを予め作成してデータサーバに登録しておき、アプリケーションからデータサーバに対してストアドプロシジャを呼び出させて実行させる命令を通知するストアドプロシジャ方式が、一般に採用されている。
【０００５】
【発明が解決しようとする課題】
しかしながら、ストアドプロシジャ方式を採用する場合、呼び出すストアドプロシジャ数をできるだけ少なくする必要があるので、アプリケーションの業務処理ロジックとデータアクセスロジックを設計する際には、データベースアクセス処理をひとかたまりにまとめるようにロジックを組み立てる等の考慮が必要となる。その結果、予めストアドプロシジャとして用意されている手順のデータベースアクセス（レコードの検索，更新，挿入及び削除からなる基本操作の繰返し又は組合せ）を実施する場合は良いとしても、予めストアドプロシジャとして用意されていない手順のデータベースアクセスを実施しなければならない場合には、その手順通りに個別のＤＭＬ命令をアプリケーションからデータサーバへ逐一通知して実行させるか、その手順の一部を実施するためのストアドプロシジャをデータサーバに実行させた後に、その手順の残りを実施するためのストアドプロシジャをデータサーバに実行させなければならなくなる。
【０００６】
このように、ストアドプロシジャ方式を採用する場合にも、予めストアドプロシジャとして用意されていな手順のデータベースアクセスを実施しようとする限り、アプリケーションとデータサーバとの間におけるデータベースオブジェクト（データ操作されたレコードの内容）の永続化までに要する通信（要求メッセージ及び処理結果の授受）は複雑とならざるを得ないので、実際上、高速且つ高パフォーマンスなリモートデータベースへのアクセスの実現は困難であった。
【０００７】
本発明は、従来のストアドプロシジャ方式における問題点に鑑みてなされたものであり、その課題は、業務処理の設計やプログラミングの自由度を損なうことなく、業務処理の内容如何に依らずアプリケーションとデータサーバとの間におけるデータベースオブジェクトの永続化までに要する通信を最小限にすることにより、高速且つ高パフォーマンスなリモートデータベースへのアクセスが可能となるトランザクション処理システムにおけるデータ操作永続化方法，及び、リモートデータベースに対するデータ操作プログラムの提供である。
【０００８】
【課題を解決するための手段】
上記課題を解決するために案出された本発明のトランザクション処理システムにおけるデータ操作永続化方法によると、先ず最初に、前記第１コンピュータシステムが、検索条件を指定して、前記第２コンピュータシステムに対して前記データベースからの前記検索条件を満たすレコードの検索を依頼する。すると、前記第２コンピュータシステムが、前記第１コンピュータシステムによって指定された前記検索条件を満たす全レコードを、前記データベースから検索して、その内容を前記第１コンピュータシステムへ応答する。次に、前記第１コンピュータシステムが、メモリ上において、前記第２コンピュータシステムから応答された各レコードの内容である各データベースオブジェクトに対して、順次、予め設定されたデータ操作を実行するとともに、そのデータ操作の内容をレコード単位のログとしてメモリに記録する。このようにして、前記データベースオブジェクトに対して予め設定された全データ操作を完了すると、前記第１コンピュータシステムが、データ操作後における各データオブジェクト及び各ログの内容を、一つのメッセージに格納して前記第２コンピュータシステムへ送信する。すると、前記第２コンピュータシステムが、前記第１コンピュータシステムから受信した前記メッセージ中の各ログの内容に従って前記データベースをアクセスして、前記データベースオブジェクトを前記データベースに反映させる。
【０００９】
同様に、上記課題を解決するために案出された本発明のリモートデータベースに対するデータ操作プログラムによれば、データベースにアクセスするサーバコンピュータと通信して前記データベースに対するトランザクションを実行するコンピュータは、検索条件を指定して、前記サーバコンピュータに対して、前記データベースからの前記検索条件を満たすレコードの検索を依頼する第１の手順と、メモリ上において、前記サーバコンピュータによって前記データベースから検索されて応答された各レコードの内容である各データベースオブジェクトに対して、順次、予め設定されたデータ操作を実行するとともに、そのデータ操作の内容をレコード単位のログとしてメモリに記録する第２の手順と、前記データベースオブジェクトに対して予め設定された全データ操作を完了した時には、データ操作後における各データオブジェクト及び各ログの内容を、一つのメッセージに格納して前記サーバコンピュータに送信することによって、その内容の前記データベースへの反映を依頼する第３の手順とを、順番に実行する。
【００１０】
このように、本発明においては、第１コンピュータシステム（コンピュータ）が、リモートデータベースに対する各種データ操作を実行するために第２コンピュータシステム（サーバコンピュータ）に通信し、この第２コンピュータシステム（サーバコンピュータ）が実際にデータベースにアクセスするのは、検索依頼及びデータ操作の反映の時のみであって、検索によってデータベースから抽出されたレコードの内容（データベースオブジェクト）に対する各種データ操作は、第１コンピュータシステム（コンピュータ）内においてローカルに行われるので、第２コンピュータシステム（サーバコンピュータ）との通信，即ち、データベースに対する実際のアクセスが必要とはならない。従って、業務処理の内容如何に依らずアプリケーションとデータサーバとの間におけるデータベースオブジェクトの永続化までに要する通信を最小限にすることが可能となるので、業務処理の設計やプログラミングの自由度を損なうことなく、高速且つ高パフォーマンスなリモートデータベースへのアクセスを実現することができる。
【００１１】
本発明において、データ操作とは、レコードの挿入，更新，削除の全て又はその一部であり、レコードの移動や複写が含まれても良い。何れかのデータ操作が検索結果としてのレコードの内容（データベースオブジェクト）の全てに対して実行されても良いし、検索結果としてのデータベースオブジェクトのうちから更に選択されたものに対してのみ実行されても良い。後者の場合には、データ操作が行われなかったデータベースオブジェクトについては、ログが記録されないので、データベースへの反映のために第２コンピュータシステム（サーバコンピュータ）へ送信されるメッセージに格納されないことが望ましい。そのようにすれば、通信量を更に減少させることができる。
【００１２】
また、同一のデータベースオブジェクトに対して複数のデータ操作が実行された場合には、そのデータベースオブジェクトについては、最後のデータ操作実行後における内容のみが、データベースへの反映のために第２コンピュータシステム（サーバコンピュータ）へ送信されるメッセージに格納されることが望ましい。そのようにすれば、通信量を更に減少させることができるばかりか、第２コンピュータシステム（サーバコンピュータ）によって実行されるデータ操作反映のためのデータベースアクセスも一回で済むので、第２コンピュータシステム（サーバコンピュータ）の負荷を減らすこともできる。
【００１３】
同様の理由により、個々のデータベースオブジェクトについて複数のデータ操作が実行された場合には、前記メッセージに格納された当該オブジェクトの前記データベースへの反映に要する一つのログの内容のみが、データベースへの反映のために第２コンピュータシステム（サーバコンピュータ）へ送信されるメッセージに格納されることが望ましい。具体的には、個々のデータベースオブジェクトについて挿入が実行された後で更新が実行された場合には、そのデータベースオブジェクトについては、一つの挿入のログ，及び更新実行後における内容を前記メッセージに格納することが望ましく、個々のデータベースオブジェクトについて更新が実行された後で削除が実行された場合には、そのデータベースオブジェクトについては、一つの削除のログを前記メッセージに格納し、データオブジェクトの内容は前記メッセージには格納しないことが望ましく、個々のデータベースオブジェクトについて挿入が実行された後で削除が実行された場合には、そのデータベースオブジェクトについては、ログ及びデータオブジェクトの内容は前記メッセージに格納しないことが望ましい。
【００１４】
【発明の実施の形態】
以下、図面に基づいて、本発明の実施の形態を説明する。
（システム構成）
第１図は、本発明の一実施形態としてのトランザクション処理システムの構成例を示すシステム構成図である。図１に示すように、このトランザクション処理システムは、ネットワーク（ＬＡＮ：ローカルエリアネットワーク，ＷＡＮ：広域ネットワーク，等）Ｎ１を介して互いに接続された複数のコンピュータシステムであるアプリケーション側サイト１及びサーバ側サイト２とからなる分散システムであり、アプリケーション側サイト１はインターネットＮ２を介して端末３と通信可能に構成されている。なお、図１上においては、後述する各プログラム間におけるデータの動きが、便宜上、破線矢印によって示されている。
【００１５】
図１における端末３は、一般的なインターネットアクセス可能なパーソナルコンピュータであり、入力装置３１及びディスプレイ３２に接続されている。そして、図示せぬディスク装置に格納されたブラウザプログラム３３は、図示せぬＣＰＵによって読み出されて実行されることによって、入力装置３１を介して入力された情報を格納したＨＴＴＰリクエストメッセージをインターネットＮ２経由でアプリケーション側サイト１へ送信するとともに、このＨＴＴＰリクエストメッセージに対応したＨＴＴＰレスポンスメッセージに格納されたウェブデータ（ＨＴＭＬデータ等）に基づいて、ディスプレイ３２上に画面表示を行う。
【００１６】
また、アプリケーション側サイト１（第１コンピュータシステム，コンピュータ）は、業務支援を行うために構築された一台又は複数台（図１においては一台のみ図示）のアプリケーションサーバ装置である。このアプリケーション側サイト１は、バス（システムバス及びデータバス）Ｂを介して互いに接続された中央処理装置（ＣＰＵ）１０，ハードディスク装置（ＨＤＤ）１１，ランダムアクセスメモリ（ＲＡＭ）１２及び通信装置１３を、主要な構成要素として有している。これらのうち、ＣＰＵ１０は、アプリケーション側サイト１全体の制御を行う中央処理装置である。また、ＲＡＭ１２は、ＣＰＵ１０が各種処理を実行するに際しての作業領域が展開される主記憶装置である。また、通信装置１３は、ネットワークＮ１及びインターネットＮ２が構築されている回線（インターネットバックボーン）との物理インターフェースである。また、ハードディスク１１は、ＣＰＵ１０によって読み出されて実行される各種プログラム及び各種データを格納している一台又は複数台の外部記憶装置である。
【００１７】
ハードディスク１１に格納されているとともにＣＰＵ１０によってＲＡＭ１２上に読み出されて実行されるプログラムには、図示せぬオペレーティングシステムの他、ＷＷＷサーバ１２０，画面処理アプリケーション１２１，業務処理アプリケーション１２２，リモートアクセスクライアント１２３及び通信ライブラリ１２４が、含まれている。このうちＷＷＷ１２０は、ハードディスク１１中の一つのプログラムに基づいて、このアプリケーション側サイト１にアクセスしている端末３のブラウザ３３毎にＲＡＭ１２上に多重に読み出されて、互いに独立して実行される。また、画面処理アプリケーション１２１は、処理対象毎に用意された複数のプログラムであり、そのうちの何れかが個々のＷＷＷサーバ１２０によってＲＡＭ１２上に読み出され、互いに独立して実行される。また、業務処理アプリケーション１２２も、処理対象毎に用意された複数のプログラムであり、そのうちの何れかが個々の画面処理アプリケーション１２１によってＲＡＭ１２上に読み出され、互いに独立して実行される。また、リモートアクセスクライアント１２３は、ハードディスク１１中の一つのプログラムに基づいて、個々の業務処理アプリケーション１２２によってＲＡＭ１２上に多重に読み出されて、互いに独立して実行される。そして、図４に示すように、各リモートアクセスクライアント１２３は、夫々、リモート処理ルーチン１２３１，アクセスログ管理部１２３２，宛先管理部１２３３及び通信処理制御部１２３４から、構成されている。これらＷＷＷサーバ１２０，画面処理アプリケーション１２１，業務処理アプリケーション１２２，リモートアクセスクライアント１２３（リモート処理ルーチン１２３１，アクセスログ管理部１２３２，宛先管理部１２３３，通信処理制御部１２３４），通信ライブラリ１２４の機能については、サーバ側サイト２のものと一緒に、後で詳しく説明する。
【００１８】
サーバ側サイト２（第２コンピュータシステム，サーバコンピュータ）は、データベースを格納した一台の基幹サーバ装置（若しくは、図示せぬトランザクションマネージャによる二相コミットの実施によって整合性を保証された分散システムを構成する複数台のサーバ装置）である。このサーバ側サイト２は、バス（システムバス及びデータバス）Ｂを介して互いに接続された中央処理装置（ＣＰＵ）２０，ハードディスク装置（ＨＤＤ）２１，ランダムアクセスメモリ（ＲＡＭ）２２及び通信装置２３を、主要な構成要素として有している。これらのうち、ＣＰＵ２０は、サーバ側サイト２全体の制御を行う中央処理装置である。また、ＲＡＭ２２は、ＣＰＵ２０が各種処理を実行するに際しての作業領域が展開される主記憶装置である。また、通信装置２３は、ネットワークＮ１との物理インターフェースである。また、ハードディスク２１は、ＣＰＵ２０によって読み出されて実行される各種プログラム及び各種データを格納している一台又は複数台の外部記憶装置である。
【００１９】
このハードディスク２１が格納しているデータには、一又は複数のデータベース（図１においては、データベース論理名ＤＢ００１，ＤＢ００２が夫々付された二つのデータベース）の物理データベース２１０，及び、これら各データベースＤＢ００１，ＤＢ００２の構造（各レコードのレコード名，データ項目名，データ型）を定義した定義情報２２１が、含まれている。各データベースＤＢ００１，ＤＢ００２は、別々のデータベースであるので、夫々、その構造が定義情報２２１に定義されている。図２は、一つのデータベースの構造例を論理的（視覚的）に示す概略図であり、図３は、図２に示すデータベースについての定義情報２２１の内容である。これら図２及び図３に示すように、このデータベースは、レコード名「商品レコード」が付されたレコードと、レコード名「在庫レコード」が付されたレコードとからなる。そして、商品レコードは、項目名「商品コード」が付された値として整数が格納される項目，項目名「商品名」が付された値として文字列が格納される項目，及び、項目名「有効倉庫数」が付された値として整数が格納される項目から夫々構成される一又は複数（図２においては２つ）のレコードである。また、在庫レコードは、項目名「商品コード」が付された値として整数が格納される項目，項目名「倉庫番号」が付された値として整数が格納される項目，及び、項目名「在庫」が付された値として整数が格納される項目から夫々構成される一又は複数（図２においては５つ）のレコードである。なお、図１においては、各データベースＤＢ００１，ＤＢ００２の物理データベースは、夫々複数個存在している。これは、一つのデータベースが複数台のディスク装置に亘って格納されていることや、障害に備えたミラーディスク構造となっていることを示す。
【００２０】
また、ハードディスク２１に格納されているとともにＣＰＵ２０によってＲＡＭ２２上に読み出されて実行されるプログラムには、図示せぬオペレーティングシステムの他、ＴＰ（Ｔｒａｎｓａｃｔｉｏｎ　Ｐｒｏｃｅｓｓｉｎｇ）モニタ２２０及びデータサーバ２２１が、含まれている。このデータサーバ２２１は、ハードディスク２１中の一つのプログラムに基づいて、ＲＡＭ２２上に多重に読み出され、互いに独立して実行される。そして、図５に示すように、各データサーバ２２１は、夫々、通信処理制御部２２１０，アクセスログ解析部２２１１及びＤＭＬ処理部２２１２の各モジュールから構成されている。これらＴＰモニタ２２０，データサーバ２２１（通信処理制御部２２１０，アクセスログ解析部２２１１，ＤＭＬ処理部２２１２）の機能については、アプリケーション側サイト１のものと一緒に、以下において詳しく説明する。
【００２１】
ＷＷＷサーバ１２０は、各端末３のブラウザ３３から受信したＨＴＴＰリクエストメッセージに対応するウェブデータを応答し、ＨＴＴＰリクエストメッセージが何れかの業務に対応した処理要求であった場合には、その業務に対応する画面処理アプリケーション１２１を起動する。
【００２２】
画面処理アプリケーション１２１は、Ｊａｖａ（米国サンマイクロ社の商標）バーチャルマシン上で動作するサーブレットであり、ブラウザ３３とＨＴＴＰ（Ｈｙｐｅｒ　Ｔｅｘｔ　Ｔｒａｎｓｆｅｒ　Ｐｒｏｔｏｃｏｌ）に従って対話する（図６に示すような一又は複数の項目入力欄を夫々含む各種入力画面を表示させるためのＨＴＭＬデータを送付して、各項目入力欄に入力された情報を取得する）ことによって、業務処理（各データベースに対するデータ操作）に必要なパラメータを、ブラウザ３３から収集して業務処理アプリケーション１２２に渡し、この業務処理アプリケーション１２２から応答された処理結果を、ブラウザ３３に返す。
【００２３】
業務処理アプリケーション１２２は、Ｊａｖａバーチャルマシン上で動作するアプレットであり、画面処理アプリケーション１２１によってブラウザ３３から収集されたパラメータに基づいて、リモートアクセスクライアント１２３に対してサーバ側サイト２（データサーバ２２１）からのレコード検索を依頼するとともに、このレコード検索の結果としてリモートアクセスクライアント１２３から渡されたレコードの内容（データベースオブジェクト）に対するデータ操作（レコード内容の更新，削除，挿入，等）を実行し、その実行結果の検索元データベースへの反映をリモートアクセスクライアント１２３に依頼する。
【００２４】
各業務処理アプリケーション１２３は、図７に示すように、その業務処理の対象となるデータベースの構造に対応してサーバ側サイト２によって提供された各種データ操作ルーチンからなるアクセス用コードと、このアクセス用コードを利用してデータベースオブジェクトに対する具体的データ操作を実行するためにアプリケーション側サイト１にて独自にプログラムされたユーザ作成コードとから、構成される。このアクセス用コードを構成する各種データ操作ルーチンは、その業務対象となるデータベースについての定義情報に基づいて、予め、サーバ側サイト２において専用ツールによって自動作成されたプログラム（当該業務処理アプリケーション１２２，即ち、ユーザ作成コードと同じプログラム言語によって記述されたソースコード）である。従って、従来のストアドプロシージャにおいてＤＭＬ命令群としてプログラムされていた具体的データ操作の内容は、本実施例においては、業務処理アプリケーション（アクセス用コード，ユーザ作成コード）において汎用プログラム言語（Ｊａｖａ）によってプログラムされることになる。
【００２５】
図７に示す例は、図２に示す構造のデータベースについての定義情報に基づいて作成されたアクセス用コード（在庫レコードの在庫設定ルーチン，在庫レコード削除ルーチン，商品レコードの有効倉庫数設定ルーチン，等）と、このアクセス用コードを用いて在庫移動処理を行うためのユーザ作成コードとから構成された業務処理アプリケーション１２２である。
【００２６】
リモートアクセスクライアント１２３は、業務処理アプリケーション１２３から処理要求（接続要求，データベース検索要求，データ操作反映要求，切断要求）を受け付けて、データサーバ２２１に対して要求を代行する。
【００２７】
このリモートアクセスクライアント１２３を構成する通信処理制御部１２３４は、このリモートアクセスクライアント１２３と各データサーバ２２１との間において発生するデータ通信を制御するモジュールである。
【００２８】
アクセスログ管理部１２３２は、業務処理アプリケーション１２２によるデータベースオブジェクトに対する具体的データ操作の内容をログとして時系列的に記録・管理するために、ユーザコードの各データ操作ルーチンによって都度呼び出されて動作するモジュールである。
【００２９】
リモート処理ルーチン１２３１は、データベースへの接続及び切断，データベースの検索，データベースオブジェクトに対するデータ操作内容のデータベースへの反映，等、業務処理アプリケーション１２２からのデータベースに対するリモート処理依頼を受け付けて、リモート処理依頼メッセージをデータサーバへ送信するモジュールである。なお、業務処理アプリケーション１２２からのデータベースに対するリモート処理依頼の処理種別が「反映要求」であった場合には、リモート処理依頼メッセージには、アクセスログ管理部１２３２によって記録されたログがエンコードされて格納される。
【００３０】
宛先管理部１２３３は、リモート処理ルーチン１２１が業務処理アプリケーション１２２からデータベースへの接続処理依頼を受け付けた時に、通信処理制御部１２３４によって呼び出され、業務処理アプリケーション１２２が接続先として指定したデータベースの論理名に基づいて、そのデータベースに対応したデータサーバ２２１のアドレス（所在情報）を決定するモジュールである。この宛先管理部１２３３は、データサーバ２２１のアドレスを決定するに際して、図８に示す管理テーブルを参照する。この管理テーブルは、個々のデータベース論理名毎に、そのデータベース論理名が付されたデータベースにアクセスする資格を有する一又は複数のデータサーバ２２１のアドレス（所在情報）を列挙した表であり、システム管理者によってシステムの環境構築時に作成されたものである。
【００３１】
各データサーバ２２１は、リモートアクセスクライアント１２３経由で業務処理アプリケーションから受けた各種リモート処理依頼を、実行する。
【００３２】
このデータサーバ２２１を構成する通信処理制御部２２１０は、このデータサーバ２２１とリモートアクセスクライアント１２３との間において発生するデータ通信を制御するモジュールである。通信処理制御部２２１０は、リモート処理依頼メッセージに含まれる処理種別が「接続／切断依頼」又は「検索依頼」であった場合には、このリモート処理依頼メッセージをＤＭＬ処理部２２１２に直接渡し、処理種別が「反映依頼」であった場合には、このリモート処理依頼メッセージをアクセスログ解析部２２１１に渡す。
【００３３】
アクセスログ解析部２２１１は、通信処理制御部２２１０から渡された反映依頼のためのリモート処理依頼メッセージ内にエンコードされたログの内容に従ったデータベースアクセス（レコード更新，レコード挿入，レコード削除）をＤＭＬ処理部２２１２に依頼するモジュールである。
【００３４】
ＤＭＬ処理部２２１２は、通信処理制御部２２１０から直接受け取ったリモート処理依頼メッセージにおいて依頼されたデータベースアクセス（接続／切断，検索）及びアクセスログ解析部２２１１から依頼されたデータベースアクセス（レコード更新，レコード挿入，レコード削除）の内容に基づいて、依頼されたデータベースアクセスを実行するのに適切なＤＭＬ命令を整えて（ＤＭＬ命令の種類及びパラメータを適切に設定して）、このＤＭＬ命令を実行することによって、各データベースに対してアクセスする。
【００３５】
ＴＰモニタ２２０は、各アプリケーション側サイト１からのデータベース接続要求をキューイングして、個々の接続要求が対象とするデータベースに対応した何れかのデータサーバ２２１にディスパッチするキュー制御を含むＤＣＭＳ（Ｄａｔａ　Ｃｏｍｍｕｎｉｃａｔｉｏｎ　Ｍａｎａｇｅｍｅｎｔ　Ｓｙｓｔｅｍ）の機能や、何れかのデータサーバ２２１が現にアクセスしているデータベースのレコードをトランザクションがコミットするまでロックする排他制御を含むＤＢＭＳ（Ｄａｔａｂａｓｅ　Ｍａｎａｇｅｍｅｎｔ　Ｓｙｓｔｅｍ）の機能を、併せ持っている。
（動作例）
以下、上述した各プログラムの動作例を、サーバ側サイト２のハードディスク２１に格納されているデータベースが図２に示す構造を有し、画面処理アプリケーション１２１がブラウザ３３に表示させる各種入力画面が図６に示す通りであり、業務処理アプリケーション１２２が実行する処理内容が図７に示す通りであるとして、図９及び図１０に示すシーケンス図（図９は、ブラウザ３３，画面処理アプリケーション１２１及び業務処理アプリケーション１２２間の情報の流れを示すシーケンス図，図１０は、業務処理アプリケーション１２２，リモートアクセスクライアント１２３，データサーバ２２１及びデータベース間の情報の流れを示すシーケンス図），図７及び図１１乃至図１３に示すフローチャート（図１１は反映要求時におけるリモード処理ルーチン１２３１の処理を示すフローチャート，図１２は、反映要求時におけるアクセスログ管理部１２３２の処理を示すフローチャート，図１３は、アクセスログ解析部２２１１の処理を示すフローチャート）に基づいて説明する。
【００３６】
いま、ブラウザ３３がＷＷＷサーバ１２０に対して所定の業務処理：在庫管理に相当するＵＲＬを指定したＨＴＴＰリクエストメッセージを送信してきたとする。この場合、ＷＷＷサーバ１２０は、その業務処理：在庫管理に対応した画面処理アプリケーション１２１を起動して、要求元ブラウザ３３に接続する（ＳＱ０１）。すると、この画面処理アプリケーション１２１は、在庫管理システムの初期画面ＳＣ１をブラウザ３３に表示させる（ＳＱ０２）。この初期画面ＳＣ１に含まれる「開始」ボタンが入力装置３１を介してオペレータによってクリックされると、ブラウザ３３は、業務処理開始要求を画面処理アプリケーション１２１に通知する（ＳＱ０３）。この業務処理開始要求を受けた画面処理アプリケーション１２１は、その業務処理に対応した業務処理アプリケーション１２２を起動して、接続する（ＳＱ０４）。
【００３７】
起動した業務処理アプリケーション１２２（ユーザ作成コード）は、リモートアクセスクライアント１２３を起動した後に、自己の業務処理に対応したデータベースの論理名を指定して、そのリモート処理ルーチン１２３１に接続依頼を通知する（Ｓ００１，ＳＱ０５）。すると、リモート処理ルーチン１２３１は、指定されたデータベースの論理名を呼出しパラメタとして通信処理制御部１２３４に接続を依頼する（ＳＱ０６）。通信処理制御部１２３４は、このデータベースの論理名を入力として宛先管理部１２３３を呼び出し、そのデータベースに対応した何れかのデータサーバ２２１のアドレス（所在情報）を問い合わせる（ＳＱ０７）。宛先管理部１２３３は、第８図の管理テーブルを参照してその論理名に対応したデータサーバ２２１の所在情報を決定するが、その決定論理については、システムの業務要件に応じたさまざまな方式の中から、システム管理者によって任意に選択可能となっている。例えば、要求元の端末３単位にデータサーバ２２１を振り分ける，受け付けた接続要求ごとにラウンドロビンにデータサーバ２２１を振り分ける，データサーバ１２２の負荷状態を監視して空いているデータサーバ１２２を選択する，等の決定論理が、選択可能となっている。通信処理制御部１２３４は、宛先管理部１２３３から出力されたデータサーバ２２１のアドレス（所在情報）宛に、処理種別を「接続依頼」としてリモート処理依頼メッセージを送信する（ＳＱ０８）。リモート処理依頼メッセージを受信したデータサーバ２２１の通信処理制御部２２１０は、このリモート処理依頼メッセージをＤＭＬ処理部２２１２に渡す（ＳＱ０９）。このリモート処理依頼メッセージを受け取ったＤＭＬ処理部２２１２は、適切なＤＭＬ命令を発行してデータベースとの接続処理を行うことによって、データベース処理のトランザクションを開始する（ＳＱ１０）。
【００３８】
データベースとの接続が完了すると、業務対象アプリケーション１２２は、画面処理アプリケーション１２１に対して、接続完了を応答する（ＳＱ１１）。すると、画面処理アプリケーション１２１は、業務初画面ＳＣ２をブラウザ３３に表示させる（ＳＱ１２）。この業務初画面ＳＣ２に含まれる入力欄に何れかの業務に対応した番号が設定された状態で「開始」ボタンがクリックされると、ブラウザ３３は、入力欄に設定された番号を画面処理アプリケーション１２１に送信する。ここでは、オペレータは、商品コード１０１の商品（リンゴ）に関して倉庫番号１０２０の在庫を倉庫番号１０１０の倉庫に移動したので、業務「在庫整理」に対応した番号“３”を設定したものとする。この場合、画面処理アプリケーション１２１は、在庫整理画面ＳＣ５をブラウザ３３に表示させる（ＳＱ１４）。この在庫整理画面ＳＣ５に含まれる入力欄に何れかの商品コードが設定された状態で「実行」ボタンがクリックされると、ブラウザ３３は、入力欄に設定された商品コードを画面処理アプリケーション１２１に送信する（ＳＱ１５）。ここでは、上述した例に従って、商品コード１０１が設定されたものとする。すると、画面処理アプリケーション１２１は、ブラウザ３３から受信した商品コードを、業務処理アプリケーション１２２に通知する（ＳＱ１６）。この業務処理アプリケーション１２２が画面処理アプリケーション１２１に対して商品コードを正常受信した旨を応答すると（ＳＱ１７）、画面処理アプリケーション１２１は、倉庫指定画面ＳＣ９をブラウザ３３に表示させる（ＳＱ１８）。この倉庫指定画面ＳＣ９に含まれる各入力欄に移動元倉庫番号及び移動先倉庫番号が設定された状態で「実行」ボタンがクリックされると、ブラウザ３３は、各入力欄に設定された倉庫番号を画面処理アプリケーション１２１に送信する（ＳＱ１９）。ここでは、上述した例に従って、倉庫番号１０２０が移動元倉庫番号として、倉庫番号１０１０が移動先倉庫番号として、夫々設定されたものとする。すると、画面処理アプリケーション１２１は、ブラウザ３３から受信した移動元倉庫番号及び移動先倉庫番号を、業務処理アプリケーション１２２に通知する（ＳＱ２０）。
【００３９】
以上のようにして商品コード，移動元倉庫番号及び移動先倉庫番号を取得した業務処理アプリケーション１２２（ユーザ作成コード）は、これら情報を検索パラメータとして指定して、データベース検索依頼を、リモート処理ルーチン１２３１に通知する（Ｓ００２，ＳＱ２１）。すると、リモート処理ルーチン１２３１は、処理種別を「検索依頼」とするとともに各検索パラメータを含むリモート処理依頼メッセージを生成し、通信処理制御部１２３４にデータサーバ２２１への送信を依頼する（ＳＱ２２）。この場合のリモート処理依頼メッセージのフォーマットを、図１４に示す。この図１４に示されるように、本実施形態に用いられるリモート処理依頼メッセージのフォーマットは、その先頭に処理種別：検索依頼が設定されるとともに、検索すべき各レコード毎に、そのレコード種別と、そのレコードについて指定された各検索パラメータの項目種別及び値とを、繋げたものとなっている。なお、検索パラメータとして指定された項目種別を特定するための方法としては、予め全項目に対応したフラグを定義したうえで、指定された項目に対応するフラグをセット（ＴＲＵＥ：１）するとともに指定されていない項目に対応するフラグをリセット（ＦＡＬＳＥ：０）するものであっても良い。通信処理制御部１２３４は、リモート処理ルーチン１２３１から渡されたリモート処理依頼メッセージを、データサーバ２２１の通信処理制御部２２１０へ送信する（ＳＱ２３）。
【００４０】
データサーバ２２１の通信処理制御部２２１０は、受信したリモート処理依頼メッセージをＤＭＬ処理部２２１２に渡す（ＳＱ２４）。このリモート処理依頼メッセージを受け取ったＤＭＬ処理部２２１２は、適切なＤＭＬ命令を発行することによって、そのリモート処理依頼メッセージにおいて依頼されているデータベース検索を実行し（ＳＱ２５）、商品コード：１０１を有する商品レコード，商品コード：１０１及び倉庫番号：１０１０を有する在庫レコード，商品コード：１０１及び倉庫番号：１０２０を有する在庫レコードを、夫々抽出する（ＳＱ２６）。このようにしてデータベースから抽出された各レコードは、ＤＭＬ処理部２２１２から通信処理制御部２２１０へ渡される（ＳＱ２７）。すると、通信処理制御部２２１０は、受け取った各レコードを検索結果メッセージに格納して、リモートアクセスクライアント１２３へ応答する（ＳＱ２８）。この場合の検索結果メッセージのフォーマットを、図１５に示す。この図１５に示されるように、本実施形態に用いられる検索結果メッセージのフォーマットは、その先頭に処理種別：検索結果が設定されるとともに、抽出された各レコード毎に、そのレコード種別と、そのレコードのデータベースにおけるアドレスと、そのレコードの全項目の値とを、繋げたものとなっている。このように、本実施形態においては、各レコードに含まれる全項目の値を通知することとしているので、項目種別がメッセージに含まれていなくても、業務処理アプリケーション１２２のアクセス用コードを構成する各データ操作ルーチンは、各値の項目種別（属性）を認識することができる。
【００４１】
通信処理制御部１２３４は、受信した検索結果メッセージをリモート処理ルーチン１２３１に転送する（ＳＱ２９）。すると、リモート処理ルーチン１２３１は、アクセスログ管理部１２３２に対して、検索結果メッセージに含まれている各レコード（商品コード：１０１を有する商品レコード，商品コード：１０１及び移動元倉庫番号：１０２０を有する在庫レコード，商品コード：１０１及び移動先倉庫番号：１０１０を有する在庫レコード）のデコードを依頼する（ＳＱ３０）。依頼を受けたアクセスログ管理部１２３２は、これらのレコードに対応するデータベースオブジェクトを業務処理アプリケーション１２２のアドレス空間において生成する。なお、この時に生成されるデータベースオブジェクトには、検索結果メッセージに含まれていた当該レコードのデータベースにおけるアドレスも、格納される。このデータベースオブジェクトの生成によって、検索結果が業務処理アプリケーション１２２に通知される。
【００４２】
以上のようにしてデータベースオブジェクトを取得した業務処理アプリケーション１２２（ユーザ作成コード）は、アクセス用コードに含まれる在庫レコードの在庫設定ルーチンを呼び出して、移動先在庫レコード（商品コード：１０１及び移動先倉庫番号：１０１０を有する在庫レコード）に対応したデータベースオブジェクトについてのデータ操作：更新を実行させる（Ｓ００３，ＳＱ３１）。
【００４３】
呼び出された在庫レコードの在庫設定ルーチンは、先ず、アクセスログ管理部１２３２に対して、当該移動先在庫レコードについて業務処理アプリケーション１２２のメモリ空間に生成されたデータベースオブジェクトのアドレス及び操作種別：更新をパラメタとして渡すことによって、ログの登録を依頼する（Ｓ１０１，ＳＱ３２）。この依頼を受けたアクセスログ管理部１２３２は、図１６のマトリックスに示すテーブルに従って、当該データベースオブジェクトについての登録済みログの操作種別と今回依頼された操作種別とに応じた処理を実行する。ここでは、当該データベースオブジェクトについての登録済みログがなく、今回依頼された捜査種別が“更新”であるので、アクセスログ管理部１２３２は、操作種別が更新であるログを新規登録する。図１７は、操作種別が更新であるログのフォーマットである。この図１７に示すように、このログには、操作種別：更新と、データベースオブジェクトのアドレスとが、含まれている。
【００４４】
次に、在庫レコードの在庫設定ルーチンは、当該異動先在庫レコードについてのデータベースオブジェクトにおける項目「在庫」に、指定された数を設定する（Ｓ１０２）。ここでは、当該移動先在庫レコードにおける「在庫」の既存値：５００と移動元在庫レコードにおける「在庫」の値：５００とを合算した値：１０００を、当該異動先在庫レコードについてのデータベースオブジェクトにおける項目「在庫」に上書きする。
【００４５】
在庫レコードの在庫設定ルーチンによる処理が完了すると、業務処理アプリケーション１２２（ユーザ作成コード）は、アクセス用コードに含まれる在庫レコード削除ルーチンを呼び出して、移動元在庫レコード（商品コード：１０１及び移動元倉庫番号：１０２０を有する在庫レコード）に対応したデータベースオブジェクトについてのデータ操作：削除を実行させる（Ｓ００４，ＳＱ３３）。
【００４６】
呼び出された在庫レコード削除ルーチンは、先ず、アクセスログ管理部１２３２に対して、当該移動元在庫レコードのデータベース内における位置を特定するためのアドレス及び操作種別：削除をパラメタとして渡すことによって、ログの登録を依頼する（Ｓ２０１，ＳＱ３４）。この依頼を受けたアクセスログ管理部１２３２は、図１６のマトリックスに示すテーブルに従って、当該データベースオブジェクトについての登録済みログの操作種別と今回依頼された操作種別とに応じた処理を実行する。ここでは、当該データベースオブジェクトについての登録済みログがなく、今回依頼された捜査種別が“削除”であるので、アクセスログ管理部１２３２は、操作種別が削除であるログを新規登録する。図１８は、操作種別が削除であるログのフォーマットである。この図１８に示すように、このログには、操作種別：削除と、当該データベースオブジェクトから読み出した当該移動元在庫レコードのデータベース内でのアドレスとが、含まれている。
【００４７】
次に、在庫レコード削除ルーチンは、当該異動元在庫レコードについてのデータベースオブジェクトを削除する（Ｓ２０２）。
【００４８】
在庫レコード削除ルーチンによる処理が完了すると、業務処理アプリケーション１２２（ユーザ作成コード）は、アクセス用コードに含まれる商品レコードの有効倉庫数設定ルーチンを呼び出して、商品レコード（商品コード：１０１を有する商品レコード）に対応したデータベースオブジェクトについてのデータ操作：更新を実行させる（Ｓ００５，ＳＱ３５）。
【００４９】
呼び出された商品レコードの有効倉庫数設定ルーチンは、先ず、アクセスログ管理部１２３２に対して、当該商品レコードについて業務処理アプリケーション１２２のメモリ空間に生成されたデータベースオブジェクトのアドレス及び操作種別：更新をパラメタとして渡すことによって、ログの登録を依頼する（Ｓ３０１，ＳＱ３６）。この依頼を受けたアクセスログ管理部１２３２は、図１６のマトリックスに示すテーブルに従って、当該データベースオブジェクトについての登録済みログの操作種別と今回依頼された操作種別とに応じた処理を実行する。ここでは、当該データベースオブジェクトについての登録済みログがなく、今回依頼された操作種別が“更新”であるので、アクセスログ管理部１２３２は、操作種別が更新であるログを新規登録する。図１９は、操作種別が更新であるログのフォーマットである。この図１９に示すように、このログには、操作種別：更新と、データベースオブジェクトのアドレスとが、含まれている。
【００５０】
次に、商品レコードの有効倉庫数設定ルーチンは、当該商品レコードについてのデータベースオブジェクトにおける項目「有効在庫数」に、指定された数を設定する（Ｓ３０２）。ここでは、当該商品レコードにおける「有効在庫数」の既存値：３を一つデクリメントした値：２を、当該商品レコードについてのデータベースオブジェクトにおける項目「有効在庫数」に上書きする。
【００５１】
なお、図７に示す業務処理アプリケーション１２２のユーザ作成コードは、アクセス用コード中の上記３つのデータ操作ルーチンしか利用しないが、アクセス用コードには、データベースに追加すべき新規のレコードを生成するためのレコード挿入ルーチンも用意されている。例えば、図６に示す業務書画面ＳＣ２において「在庫追加」が選択され、在庫追加画面ＳＣ６の次に表示される倉庫番号一覧画面ＳＣ１０の「実行」ボタンがクリックされた場合に実行される業務処理アプリケーションによって、このレコード挿入ルーチンは利用される。このレコード挿入ルーチンが実行された場合（処理対象データベースオブジェクトについての登録済みログがない場合）に、アクセスログ管理部１２３２が登録するログのフォーマットを、図２０に示す。この図２０に示すように、このログには、操作種別：挿入と、データベースにおける当該新規レコードを挿入すべき位置と、当該新規レコードに対応したデータベースオブジェクトのアドレスとが、含まれている。
【００５２】
以上により、当該業務：在庫整理に関するデータベースオブジェクトのデータ操作を完了したので、業務処理アプリケーション１２２（ユーザ作成コード）は、リモートアクセスクライアント１２３のリモート処理ルーチン１２３１に対して、当該業務：在庫整理に関して実行されたデータベースオブジェクトに対するデータ操作の反映を、依頼する（Ｓ００６，ＳＱ３７）。
【００５３】
すると、リモート処理ルーチン１２３１は、アクセスログ管理部１２３２に対して、当該業務：在庫整理に関する一連のログ及びデータベースオブジェクトのリモート処理依頼メッセージへのエンコードを依頼する（Ｓ４０１，ＳＱ３８）。
【００５４】
依頼を受けたアクセスログ管理部１２３２は、最初のＳ１０１において、当該業務についてのログの取り出しを試みる。次のＳ１０２では、アクセスログ管理部１２３２は、Ｓ１０１の実行の結果としてログが取り出せたか否かをチェックする。そして、ログが取り出せた場合には、アクセスログ管理部１２３２は、そのログにおける操作種別を、反映依頼のためのリモート処理依頼メッセージに格納する。なお、このリモート処理依頼メッセージは、「反映依頼」のためのものであるので、図２１に示すように、その先頭には、処理種別として「反映依頼」が設定されている。
【００５５】
次に、アクセスログ管理部１２３２は、Ｓ５０３においてリモート処理依頼メッセージに格納した操作種別を識別し、「更新」であれば処理をＳ５０６へ進め、「挿入」であれば処理をＳ５０５へ進め、「削除」であれば処理をＳ５０７へ進める。Ｓ５０５では、アクセスログ管理部１２３２は、そのログに記録された挿入位置をリモート処理依頼メッセージに格納した後に、処理をＳ５０６へ進める。Ｓ５０６では、アクセスログ管理部１２３２は、そのログに記録されたデータベースオブジェクトのアドレスを元に、そのデータベースオブジェクトの内容（レコード中の全項目の値，及び、更新の場合にはデータベース内におけるレコードのアドレス）を読み出してリモート処理依頼メッセージに格納した後に、処理をＳ５０８へ進める。一方、Ｓ５０７では、アクセスログ管理部１２３２は、そのログに記載されたアドレスをリモート処理依頼メッセージに格納した後に、処理をＳ５０８へ進める。Ｓ５０８では、アクセスログ管理部１２３２は、次のログの取り出しを試みた後に、処理をＳ５０２へ戻す。
【００５６】
以上のＳ５０２乃至Ｓ５０８の処理ループを繰り返し実行した結果ログが取り出せなくなった場合，若しくは、最初からログが取り出せなかった場合には、アクセスログ管理部１２３２は、処理をＳ５０２からＳ５０９へ進める。このＳ５０９では、アクセスログ管理部１２３２は、取り出してＳ５０５乃至Ｓ５０７の何れかの処理を実行したログの数が０であるか否かをチェックする。そして、処理ログ数が０でなければ、Ｓ５１０において、戻り値を「正常」として、完成した反映依頼のためのリモート処理依頼メッセージとともにリモート処理ルーチン１２３１に返し、処理ログ数が０であれば、Ｓ５１１において、戻り値を「異常」としてリモート処理ルーチン１２３１に返す。なお、図２１は、図７に示す業務処理アプリケーション１２２の実行の結果として生成された一連のログに基づく反映依頼のためのリモート処理依頼メッセージを示す。
【００５７】
戻り値が返されたリモート処理ルーチン１２３１は、その戻り値が「正常」であるか否かをチェックする（Ｓ４０２）。そして、アクセスログ管理部１２３２からの戻り値が「異常」であれば、業務処理アプリケーション１２２に対する戻り値を「異常」とする（Ｓ４０６，ＳＱ５１）。これに対して、アクセスログ管理部１２３２からの戻り値が「正常」であれば、リモート処理ルーチン１２３１は、アクセスログ管理部１２３２から受け取った反映依頼のためのリモート処理依頼メッセージのデータサーバ２２１への送信を、通信処理制御部１２３４に依頼する（Ｓ４０３，ＳＱ３９）。
【００５８】
通信処理制御部１２３４は、送信依頼された反映依頼のためのリモート処理依頼メッセージを、データサーバ２２１の通信処理制御部２２１０へ送信する（ＳＱ４０）。この反映依頼のためのリモート処理依頼メッセージを受信した通信処理制御部２２１０は、このリモート処理依頼メッセージを、アクセスログ解析部２２１１に渡す。
【００５９】
反映依頼のためのリモート処理依頼メッセージを受信したアクセスログ解析部２２１１は、最初のＳ６０１において、そのリモート処理依頼メッセージにおける処理種別の直後に、解析済みポインタを設定する。次のＳ６０２では、アクセスログ解析部２２１１は、解析済みポインタがリモート処理依頼メッセージにおける終了位置にあるか否かをチェックする。そして、解析済みポインタがリモート処理依頼メッセージにおける終了位置になければ、未解析のログ単位エンコード情報（即ち、操作種別から次の操作種別の直前までの情報）が残っていることになるので、アクセスログ解析部２２１１は、Ｓ６０３において、解析済みポインタ直後のログ単位エンコード情報から、操作種別を取り出す。次のＳ６０４では、アクセスログ解析部２２１１は、Ｓ６０３にて取り出した操作種別を識別し、「更新」であれば処理をＳ６０５へ進め、「挿入」であれば処理をＳ６０６へ進め、「削除」であれば処理をＳ６０７へ進める。Ｓ６０５では、アクセスログ解析部２２１１は、Ｓ６０３にて取り出した操作種別に続くログ単位エンコード情報中のアドレスが示すデータベース内位置に、同ログ単位エンコード情報中のデータベースオブジェクトの内容を上書きすることによってデータベースのレコードを更新することを、ＤＭＬ処理部２２１２に依頼する（ＳＱ４２，ＳＱ４４）。この依頼を受けたＤＭＬ処理部２２１２は、適切なＤＭＬ命令を発行することによって、依頼されたレコード更新を実行する（ＳＱ４３，ＳＱ４５）。一方、Ｓ６０６では、アクセスログ解析部２２１１は、Ｓ６０３にて取り出した操作種別に続くログ単位エンコード情報中のアドレスが示すデータベース内位置に、同ログ単位エンコード情報中のデータベースオブジェクトの内容をレコードとして挿入することを、ＤＭＬ処理部２２１２に依頼する。この依頼を受けたＤＭＬ処理部２２１２は、適切なＤＭＬ命令を発行することによって、依頼されたレコード挿入を実行する。一方、Ｓ６０７では、アクセスログ解析部２２１１は、Ｓ６０３にて取り出した操作種別に続くログ単位エンコード情報中のアドレスが示すデータベース内位置にあるレコードを削除することを、ＤＭＬ処理部２２１２に依頼する（ＳＱ４６）。この依頼を受けたＤＭＬ処理部２２１２は、適切なＤＭＬ命令を発行することによって、依頼されたレコード削除を実行する（ＳＱ４７）。Ｓ６０５，Ｓ６０６若しくはＳ６０７を完了すると、アクセスログ解析部２２１１は、Ｓ６０８において、リモート処理依頼メッセージ内における解析済みポインタの位置を処理完了したログ単位エンコード情報の末尾へ進めた後に、処理をＳ６０２へ戻す。以上のＳ６０２乃至Ｓ６０８の処理ループを繰り返した結果、リモート依頼メッセージの終了位置に解析済みポインタが達した場合には、アクセスログ解析部２２１１は、Ｓ６０２から処理ループを抜けて、処理を終了する。なお、アクセスログ解析部２２１１は、受け取ったリモート処理依頼メッセージに基づいた処理を完了した場合には戻り値を正常として、失敗した場合には戻り値を異常として、通信処理制御部２２１０及び通信処理制御部１２３４を経由して、それら戻り値をリモート処理ルーチン１２３１に返す（ＳＱ４８，ＳＱ４９，ＳＱ５０）。
【００６０】
戻り値が返されたリモート処理ルーチン１２３１は、その戻り値が「正常」であるか否かをチェックする（Ｓ４０４）。そして、通信処理制御部１２３４からの戻り値が「正常」であれば、業務処理アプリケーション１２２に対する戻り値を「正常」とする（Ｓ４０５，ＳＱ５１）。これに対して、通信処理制御部１２３４からの戻り値が「異常」であれば、業務処理アプリケーション１２２に対する戻り値を「異常」とする（Ｓ４０６，ＳＱ５１）。
【００６１】
業務処理アプリケーション１２２は、データ走査の反映に関するリモート処理ルーチン１２３１からの戻り値が「正常」である場合、リモートアクセスクライアント１２３のリモート処理ルーチン１２３１に、データベースとの接続切断を通知する（Ｓ００７，ＳＱ５２）。すると、リモート処理ルーチン１２３１は、通信処理制御部１２３４に接続切断を依頼する（ＳＱ５３）。通信処理制御部１２３４は、処理種別を「接続切断依頼」としたリモート処理依頼メッセージを、データサーバ２２１へ送信する（ＳＱ５４）。このリモート処理依頼メッセージを受信したデータサーバ２２１の通信処理制御部２２１０は、このリモート処理依頼メッセージをＤＭＬ処理部２２１２に渡す（ＳＱ５５）。このリモート処理依頼メッセージを受け取ったＤＭＬ処理部２２１２は、適切なＤＭＬ命令を発行してデータベースを閉じて、データベース処理のトランザクションをコミットする（ＳＱ５６）。当該処理が全て正常に完了した場合、業務処理アプリケーション１２２による接続切断の通知の戻り値は「正常」となり、処理途中で異常が検出された場合は、トランザクションがキャンセルされてデータベースに対する処理が無効化された上で、業務処理アプリケーション１２２による接続切断の通知の戻り値は「異常」となる。
【００６２】
業務処理アプリケーション１２２は、最後に、リモート処理ルーチン１２３１から返された戻り値に基づいて、処理が正常に終了したか失敗したかを、画面処理アプリケーション１２１に連絡する（ＳＱ５７）。すると、画面処理アプリケーション１２１は、処理が正常に終了したか失敗したかを記述した処理結果表示画面ＳＣ１１をブラウザ３３に表示させる（ＳＱ５８）。
【００６３】
なお、以下に、アクセスログ管理部１２３２がログを登録する際に参照する図１６のテーブルについて、説明を補完する。
【００６４】
処理対象データベースオブジェクトに対するデータ操作ルーチン（アクセス用コード）による操作種別が更新であって、当該処理対象データベースオブジェクトについての登録済みログ（操作種別：更新）があった場合とは、例えば、商品コード：１０１，倉庫番号：１０１０，在庫：５００からなるレコードの在庫を４００に減らした後に、同レコードの倉庫番号を１０４０に変更するような場合である。この場合には、そのデータオブジェクトのアドレスは変更されないので、アクセス用コードがそのレコードのデータベースオブジェクトの更新を行いさえすれば、アクセスログ管理部１２３２が新たなログ登録を行う必要はない。
【００６５】
また、処理対象データベースオブジェクトに対するデータ操作ルーチン（アクセス用コード）による操作種別が更新であって、当該処理対象データベースオブジェクトについての登録済みログ（操作種別：挿入）があった場合とは、例えば、商品コード：１０２，倉庫番号：１０３０，在庫：１０００からなるレコードを追加した後に、同レコードの倉庫番号を１０２０に変更するような場合である。この場合も、そのデータオブジェクトのアドレスは変更されないので、アクセス用コードがそのレコードのデータベースオブジェクトの更新を行いさえすれば、アクセスログ管理部１２３２が新たなログ登録を行う必要はない。
【００６６】
また、処理対象データベースオブジェクトに対するデータ操作ルーチン（アクセス用コード）による操作種別が削除であって、当該処理対象データベースオブジェクトについての登録済みログ（操作種別：更新）があった場合とは、例えば、商品コード：１０１，倉庫番号：１０１０，在庫：５００からなるレコードの在庫を４００に減らした後に、同レコードを削除するような場合である。この場合には、アクセスログ管理部１２３２は、登録済みログ（操作種別：更新）を破棄した上で、操作種別が削除のログを新規登録する。
【００６７】
また、処理対象データベースオブジェクトに対するデータ操作ルーチン（アクセス用コード）による操作種別が削除であって、当該処理対象データベースオブジェクトについての登録済みログ（操作種別：挿入）があった場合とは、例えば、商品コード：１０２，倉庫番号：１０３０，在庫：１０００からなるレコードを追加した後に、同レコードを削除するような場合である。この場合には、アクセスログ管理部１２３２は、登録済みログ（操作種別：挿入）を破棄するが、そのレコードは元々データベース内に存在していないので、新たなログ登録は行わない。
【００６８】
これに対して、処理対象データベースオブジェクトに対するデータ操作ルーチン（アクセス用コード）による操作種別が挿入であるにも拘わらず、当該処理対象データベースオブジェクトについての登録済みログがあることはあり得ないので、そのような場合には、アクセスログ管理部１２３２は、処理シーケンス誤りであるとしてエラー処理を行う。
【００６９】
同様に、処理対象データベースオブジェクトについての登録済みログの操作種別が削除であることはあり得ないので、そのような場合には、アクセスログ管理部１２３２は、処理シーケンス誤りであるとしてエラー処理を行う。
【００７０】
以上のように、本実施形態によれば、業務処理アプリケーション１２２がどのように複雑なデータ操作を行おうとしても、同一のデータベースオブジェクトについてのログは、最大一つしか登録されず、場合によっては、最終的に一つも残らなくなる。従って、反映依頼のためのリモート処理依頼メッセージには、各データベースオブジェクトについては最大一つしかログ単位エンコード情報が格納されず、ＤＭＬ処理部２２１２は、データベースの各レコードについて最大１回づつデータ操作すれば良いので、高速なリモートデータベースアクセス実現可能となっている。
【００７１】
（付記１）
多数レコードからなるデータベースに対するデータ操作要求を発行する第１コンピュータシステム，及び、前記データ操作要求に応じて前記データベースにアクセスする第２コンピュータシステムから構成されたトランザクション処理システムにおけるデータ操作永続化方法であって、
前記第１コンピュータシステムが、検索条件を指定して、前記第２コンピュータシステムに対して前記データベースからの前記検索条件を満たすレコードの検索を依頼し、
前記第２コンピュータシステムが、前記第１コンピュータシステムによって指定された前記検索条件を満たす全レコードを、前記データベースから検索して、その内容を前記第１コンピュータシステムへ応答し、
前記第１コンピュータシステムが、メモリ上において、前記第２コンピュータシステムから応答された各レコードの内容である各データベースオブジェクトに対して、順次、予め設定されたデータ操作を実行するとともに、そのデータ操作の内容をレコード単位のログとしてメモリに記録し、
前記第１コンピュータシステムが、前記データベースオブジェクトに対して予め設定された全データ操作を完了した時には、データ操作後における各データオブジェクト及び各ログの内容を、一つのメッセージに格納して前記第２コンピュータシステムへ送信し、
前記第２コンピュータシステムが、前記第１コンピュータシステムから受信した前記メッセージ中の各ログの内容に従って前記データベースをアクセスして、前記データベースオブジェクトを前記データベースに反映させる
ことを特徴としたトランザクション処理システムにおけるデータ操作永続化方法。
【００７２】
（付記２）
前記第１コンピュータシステムは、前記データ操作によって内容が更新されたデータベースオブジェクト及び追加されたデータベースオブジェクトのみを前記メッセージに格納して前記第２コンピュータシステムへ送信する
ことを特徴とする付記１記載のトランザクション処理システムにおけるデータ操作永続化方法。
【００７３】
（付記３）
前記第１コンピュータシステムは、複数のデータ操作が実行されたデータベースオブジェクトについては、最後のデータ操作実行後における内容を、前記メッセージに格納して前記第２コンピュータシステムへ送信する
ことを特徴とする付記１又は２記載のトランザクション処理システムにおけるデータ操作永続化方法。
【００７４】
（付記４）
前記第１コンピュータシステムは、個々のデータベースオブジェクトについて複数のデータ操作が実行された場合には、前記メッセージに格納された当該オブジェクトの前記データベースへの反映に要する一つのログの内容のみを、前記メッセージに挿入する
ことを特徴とする付記３記載のトランザクション処理システムにおけるデータ操作永続化方法。
【００７５】
（付記５）
前記第１コンピュータシステムは、個々のデータベースオブジェクトについて複数の更新が実行された場合には、そのデータベースオブジェクトについては、一つの更新のログ，及び最後の更新実行後における内容を前記メッセージに格納する
ことを特徴とする付記４記載のトランザクション処理システムにおけるデータ操作永続化方法。
【００７６】
（付記６）
前記第１コンピュータシステムは、個々のデータベースオブジェクトについて挿入が実行された後で更新が実行された場合には、そのデータベースオブジェクトについては、一つの挿入のログ，及び更新実行後における内容を前記メッセージに格納する
ことを特徴とする付記４記載のトランザクション処理システムにおけるデータ操作永続化方法。
【００７７】
（付記７）
前記第１コンピュータシステムは、個々のデータベースオブジェクトについて更新が実行された後で削除が実行された場合には、そのデータベースオブジェクトについては、一つの削除のログを前記メッセージに格納し、データオブジェクトの内容は前記メッセージには格納しない
ことを特徴とする付記４記載のトランザクション処理システムにおけるデータ操作永続化方法。
【００７８】
（付記８）
前記第１コンピュータシステムは、個々のデータベースオブジェクトについて挿入が実行された後で削除が実行された場合には、そのデータベースオブジェクトについては、ログ及びデータオブジェクトの内容は前記メッセージに格納しない
ことを特徴とする付記４記載のトランザクション処理システムにおけるデータ操作永続化方法。
【００７９】
（付記９）
データベースにアクセスするサーバコンピュータと通信して前記データベースに対するトランザクションを実行するコンピュータに対して、
検索条件を指定して、前記サーバコンピュータに対して、前記データベースからの前記検索条件を満たすレコードの検索を依頼する第１の手順と、
メモリ上において、前記サーバコンピュータによって前記データベースから検索されて応答された各レコードの内容である各データベースオブジェクトに対して、順次、予め設定されたデータ操作を実行するとともに、そのデータ操作の内容をレコード単位のログとしてメモリに記録する第２の手順と、
前記データベースオブジェクトに対して予め設定された全データ操作を完了した時には、データ操作後における各データオブジェクト及び各ログの内容を、一つのメッセージに格納して前記サーバコンピュータに送信することによって、その内容の前記データベースへの反映を依頼する第３の手順と
を順番に実行させるリモートデータベースに対するデータ操作プログラム。
【００８０】
（付記１０）
前記第１の手順及び前記第２の手順を前記コンピュータに実行させるためのモジュールは業務の内容に対応して夫々プログラミングされ、
前記第３の手順を前記コンピュータに実行させるためのモジュールは各業務に共通するものとしてプログラミングされた
ことを特徴とする付記９記載のリモートデータベースに対するデータ操作プログラム。
【００８１】
【発明の効果】
以上のように構成された本発明によるトランザクション処理システムにおけるデータ操作永続化方法によると、業務処理の内容如何に依らず、アプリケーションとデータサーバとの間におけるデータベースオブジェクトの永続化までに要する通信（要求メッセージ及び処理結果の授受）回数及び通信量が最小限になるので、結果として、業務処理アプリケーションからリモートデータベースへの高速且つ高パフォーマンスなアクセスが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態としてのトランザクション処理システムのブロック図
【図２】データベース構成例を示す図
【図３】図２の構成を有すデータベースについての定義情報を示す図
【図４】リモートアクセスクライアントのプログラムモジュール構成図
【図５】データサーバのプログラムモジュール構成図
【図６】画面処理アプリケーションによってブラウザに表示させられる入力画面の遷移を示す図
【図７】業務処理アプリケーションの構成例を示すフローチャート
【図８】管理テーブルの構成を示す表
【図９】ブラウザ〜業務処理アプリケーション間の情報伝達を示すシーケンス図
【図１０】業務処理アプリケーション〜データベース間の情報伝達を示すシーケンス図
【図１１】反映依頼時におけるリモート処理ルーチンによる処理内容を示すフローチャート
【図１２】反映依頼時におけるアクセスログ管理部による処理内容を示すフローチャート
【図１３】アクセスログ解析部による処理内容を示すフローチャート
【図１４】検索依頼のためのリモート処理依頼メッセージのフォーマット図
【図１５】検索結果メッセージのフォーマット図
【図１６】アクセスログ管理部によるログ登録条件を示すテーブル
【図１７】操作種別が更新であるログのフォーマット図
【図１８】操作種別が削除であるログのフォーマット図
【図１９】操作種別が更新であるログのフォーマット図
【図２０】操作種別が挿入であるログのフォーマット図
【図２１】反映依頼のためのリモート処理依頼メッセージのフォーマット図
【符号の説明】
１　　　サイト
２　　　サイト
１０　　　ＣＰＵ
１１　　　ハードディスク
１２　　　ＲＡＭ
１３　　　通信装置
２０　　　ＣＰＵ
２１　　　ハードディスク
２２　　　ＲＡＭ
２３　　　通信装置
１２２　　　業務処理アプリケーション
１２３　　　リモートアクセスクライアント
２２１　　　データサーバ
１２３１　　　リモート処理ルーチン
１２３２　　　アクセスログ管理部
２２１１　　　アクセスログ解析部
２２１２　　　ＤＭＬ処理部
【図１】
2004086299.tif 000003
【図２】
2004086299.tif 000004
【図３】
2004086299.tif 000005
【図４】
2004086299.tif 000006
【図５】
2004086299.tif 000007
【図６】
2004086299.tif 000008
【図７】
2004086299.tif 000009
【図８】
2004086299.tif 000010
【図９】
2004086299.tif 000011
【図１０】
2004086299.tif 000012
【図１１】
2004086299.tif 000013
【図１２】
2004086299.tif 000014
【図１３】
2004086299.tif 000015
【図１４】
2004086299.tif 000016
【図１５】
2004086299.tif 000017
【図１６】
2004086299.tif 000018
【図１７】
2004086299.tif 000019
【図１８】
2004086299.tif 000020
【図１９】
2004086299.tif 000021
【図２０】
2004086299.tif 000022
【図２１】
2004086299.tif 000023