(57)【要約】【課題】クライアント・サーバ方式におけるデータ記憶装置のレコード先読み制御方法において、レコードの返却レスポンスを向上させる【解決手段】ＤＢサーバシステム６０１は、ＤＢクライアントシステム３０１からレコードの読み込み依頼を受けたとき、ＤＢ８０１から複数のレコードを先読みして一括して送信した後、最終のレコードの取り出しがまだならＤＢクライアントシステム３０１からの依頼を待たずに次に送信する予定の複数のレコードをＤＢ８０１から先読みして通信バッファ６０４に格納しておく。ＤＢクライアントシステム３０１は受信した複数のレコードを通信バッファ３０４に格納し、１レコードずつ読み出してユーザプログラム２０１に通知する。通信バッファ３０４が空であると、残りのレコードの読み込みをＤＢサーバシステム６０１に依頼し、ＤＢサーバシステム６０１は通信バッファ６０４に先読みしていたレコードを送信する。【選択図】　図１
2004013758.tif 000002
【特許請求の範囲】
【請求項１】
クライアント・サーバ方式におけるレコード先読み制御方法において、クライアントコンピュータからレコードの読み込み依頼を受けたサーバコンピュータが、データ記憶装置から複数のレコードを先読みしてサーバ側通信バッファに格納した後に前記クライアントコンピュータに一括して送信し、且つ、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに次に前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記サーバ側通信バッファに格納しておくことを特徴とするレコード先読み制御方法。
【請求項２】
クライアント・サーバ方式におけるレコード先読み制御方法において、クライアントコンピュータからレコードの読み込み依頼を受けたサーバコンピュータが、データ記憶装置から複数のレコードを先読みしてレコードバッファに格納し、該レコードバッファに格納された各レコード中のデータに対するデータ型変換を行った変換処理済みのレコードをサーバ側通信バッファに格納した後に前記クライアントコンピュータに一括して送信し、且つ、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに次に前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記レコードバッファに格納すると共にデータ型変換処理を行って前記サーバ側通信バッファに格納しておくことを特徴とするレコード先読み制御方法。
【請求項３】
前記クライアントコンピュータは、前記サーバコンピュータから受信した複数のレコードをクライアント側通信バッファに格納し、該クライアント側通信バッファからレコードを１つずつ読み出してユーザプログラムに返却し、ユーザプログラムに返却するレコードが前記クライアント側通信バッファに存在しない場合には次のレコードの読み込みを前記サーバコンピュータに依頼することを特徴とする請求項１または２記載のレコード先読み制御方法。
【請求項４】
相互に通信可能なクライアントコンピュータとサーバコンピュータとから構成され、前記サーバコンピュータは、前記クライアントコンピュータからレコードの読み込み依頼を受けたときにデータ記憶装置から複数のレコードを先読みしてサーバ側通信バッファに格納する処理と、前記サーバ側通信バッファに格納された全てのレコードを前記クライアントコンピュータに一括して送信する処理と、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記サーバ側通信バッファに格納する処理とを行うサーバシステムを備えることを特徴とするレコード先読み制御システム。
【請求項５】
相互に通信可能なクライアントコンピュータとサーバコンピュータとから構成され、前記サーバコンピュータは、前記クライアントコンピュータからレコードの読み込み依頼を受けたときにデータ記憶装置から複数のレコードを先読みしてレコードバッファに格納する処理と、該レコードバッファに格納された各レコード中のデータに対するデータ型の変換を行う処理と、該変換処理済みのレコードをサーバ側通信バッファに格納する処理と、前記サーバ側通信バッファに格納された全てのレコードを前記クライアントコンピュータに一括して送信する処理と、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記レコードバッファに格納すると共に前記変換処理を行って前記サーバ側通信バッファに格納する処理とを行うサーバシステムを備えることを特徴とするレコード先読み制御システム。
【請求項６】
前記クライアントコンピュータは、前記サーバコンピュータから受信した複数のレコードをクライアント側通信バッファに格納し、該クライアント側通信バッファからレコードを１つずつ読み出してユーザプログラムに返却し、ユーザプログラムに返却するレコードが前記クライアント側通信バッファに存在しない場合には残りのレコードの読み込みを前記サーバコンピュータに依頼することを特徴とする請求項４または５記載のレコード先読み制御システム。
【請求項７】
ネットワークを介してクライアントコンピュータに接続されたサーバコンピュータにおいて、前記クライアントコンピュータと通信するための送受信手段、サーバ側通信バッファおよび制御手段を備えるサーバシステムと、データを記憶するデータ記憶装置とを有し、前記サーバシステムは、前記クライアントコンピュータからレコードの読み込み依頼を受けたときに前記データ記憶装置から複数のレコードを先読みして前記サーバ側通信バッファに格納する処理と、前記サーバ側通信バッファに格納された全てのレコードを前記クライアントコンピュータに一括して送信する処理と、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記サーバ側通信バッファに格納する処理とを行うものであるサーバコンピュータ。
【請求項８】
ネットワークを介してクライアントコンピュータに接続されたサーバコンピュータにおいて、前記クライアントコンピュータと通信するための送受信手段、サーバ側通信バッファ、レコードバッファ、データ変換処理手段および制御手段を備えるサーバシステムと、データを記憶するデータ記憶装置とを有し、前記サーバシステムは、前記クライアントコンピュータからレコードの読み込み依頼を受けたときに前記データ記憶装置から複数のレコードを先読みして前記レコードバッファに格納する処理と、前記レコードバッファに格納された各レコード中のデータに対するデータ型の変換を行う処理と、該変換処理済みのレコードを前記サーバ側通信バッファに格納する処理と、前記サーバ側通信バッファに格納された全てのレコードを前記クライアントコンピュータに一括して送信する処理と、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記レコードバッファに格納すると共に前記変換処理を行って前記サーバ側通信バッファに格納する処理とを行うものであるサーバコンピュータ。
【請求項９】
ネットワークを介してクライアントコンピュータに接続され、前記クライアントコンピュータと通信するための送受信手段、サーバ側通信バッファ、データ記憶装置を備えたサーバコンピュータに、前記クライアントコンピュータからレコードの読み込み依頼を受けたときに前記データ記憶装置から複数のレコードを先読みして前記サーバ側通信バッファに格納する処理、前記サーバ側通信バッファに格納された全てのレコードを前記クライアントコンピュータに一括して送信する処理、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記サーバ側通信バッファに格納する処理、を実行させるサーバ用プログラム。
【請求項１０】
ネットワークを介してクライアントコンピュータに接続され、前記クライアントコンピュータと通信するための送受信手段、サーバ側通信バッファ、レコードバッファ、データ記憶装置を備えたサーバコンピュータに、前記クライアントコンピュータからレコードの読み込み依頼を受けたときに前記データ記憶装置から複数のレコードを先読みして前記レコードバッファに格納する処理、前記レコードバッファに格納された各レコード中のデータに対するデータ型の変換を行う処理、該変換処理済みのレコードを前記サーバ側通信バッファに格納する処理、前記サーバ側通信バッファに格納された全てのレコードを前記クライアントコンピュータに一括して送信する処理、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記レコードバッファに格納すると共に前記変換処理を行って前記サーバ側通信バッファに格納する処理、を実行させるサーバ用プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、サーバコンピュータに備わるデータベース等のデータ記憶装置をネットワーク経由でクライアントコンピュータからアクセスする場合などに好適なクライアント・サーバ方式におけるデータ記憶装置のレコード先読み制御方法に関する。
【０００２】
【従来の技術】
従来のこの種のレコード先読み制御方法として、特開平６−９６０３３号公報に記載される方法（以下、第１の従来技術と称す）、特開昭６１−１９５４３９号公報に記載される方法（以下、第２の従来技術と称す）、特開平４−１８４６５２号公報に記載される方法（以下、第３の従来技術と称す）が知られている。
【０００３】
第１の従来技術では、ユーザプログラムから１レコードの読み込み要求を受けたクライアントが、要求されたレコードとそれ以降のレコードとの複数のレコードの読み込み依頼をサーバに対して行い、サーバが該当する複数のレコードをファイルから読み出してクライアントへ送信する。クライアントは、受信した複数レコードをバッファに蓄積後、要求された１レコードをユーザプログラムに返却し、次にユーザプログラムから１レコードの読み込み要求を受けたときはバッファから次の１レコードを取り出してユーザプログラムに返却する。そして、バッファの内容を全て返却し終え、ユーザから要求されるレコードがバッファになくなると、クライアントは最初と同様に、要求されたレコードとそれ以降のレコードとの複数のレコードの読み込み依頼をサーバに対して行い、サーバは前回と同様に該当する複数のレコードをファイルから読み出してクライアントへ送信する。
【０００４】
第２の従来技術も基本的には第１の従来技術と同じであり、クライアント計算機上で実行されるプログラムが、サーバ計算機に保持されたファイルにアクセスするに際し、クライアント計算機は、クライアント計算機で発生する１アクセス要求のアクセスデータ長より大きなデータ長のバッファと、前記プログラムとバッファ間でアクセス要求データの転送を制御する手段とを備え、バッファとサーバ計算機との間では、前記アクセスデータ長よりも大きなデータ長を転送単位としてファイルデータを転送する。
【０００５】
第３の従来技術も基本的には第１の従来技術と同じであり、端末コンピュータから順読みを指示する命令が送られてくると、ホストコンピュータはファイルからレコードを複数件読み出して一括して端末コンピュータに転送し、端末コンピュータではそれを受信バッファに蓄積する。そして、ユーザプログラムが順読みを指示する命令を発行する毎に、端末コンピュータでは受信バッファから１つのレコードを取り出してユーザプログラムに返却する。そして、受信バッファが空になると、前回と同様に順読みを指示する命令をホストコンピュータに送り、ホストコンピュータは再びファイルから複数のレコードを読み出して端末コンピュータに転送する。
【０００６】
他方、クライアント・サーバ方式のレコード先読み方法ではないが、特開昭６２−２５９１３５号公報には、データベース中に１個以上のフィールドからなるレコード群を格納する機能と、データベースから指定した条件のレコードを検索する機能とを有するデータベース管理システムにおいて、ユーザプログラムからのレコードの検索要求時に、１回のコールで複数個のレコードの検索を行い、その検索結果のレコード群をまとめてユーザプログラム側へ転送する方法が記載されている。ここで、データベース管理システム側をサーバ、ユーザプログラム側をクライアントに置き換えると、クライアントからの１回のコールで複数個のレコードの検索結果がサーバから返される構成になり、上述した第１乃至第３の従来技術に類似した方法となる。
【０００７】
【発明が解決しようとする課題】
上述したようにクライアント・サーバ方式のレコード先読み制御は従来からも提案されていたが、上述した従来技術では、ユーザプログラムに渡すべきレコード数が多く、クライアント側のバッファに何度も先読みする必要がある場合、バッファが空になった時点でユーザプログラムに対するレスポンスが悪化するという課題があった。その理由は、バッファが空になってユーザプログラムに返却すべきレコードがバッファにないことを検出した時点で、クライアントからサーバに次のレコードの読み込み要求を出し、サーバがこの要求を受けてファイルやデータベースから次の複数のレコードを読み出してクライアントに送信しており、クライアント側のバッファに先読みされるまでに時間がかかるためである。
【０００８】
また、サーバがファイル等から取得したレコードをそのままクライアントに渡すのではなく、レコード中のデータのデータ型を変換してからクライアントに渡す場合、データ型変換処理を行う時間も必要になるため、一層レスポンスが悪化することになる。
【０００９】
本発明はこのような事情に鑑みて提案されたものであり、その目的は、ユーザプログラムに渡すべきレコード数が多く、クライアント側のバッファに何度も先読みする必要がある場合であっても、レスポンス良くレコードをユーザプログラムに返却することができるようにすることにある。
【００１０】
【課題を解決するための手段】
本発明の第１のレコード先読み制御方法は、クライアント・サーバ方式におけるレコード先読み制御方法において、クライアントコンピュータからレコードの読み込み依頼を受けたサーバコンピュータが、データ記憶装置から複数のレコードを先読みしてサーバ側通信バッファに格納した後に前記クライアントコンピュータに一括して送信し、且つ、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに次に前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記サーバ側通信バッファに格納しておくことを特徴とする。
【００１１】
本発明の第２のレコード先読み制御方法は、クライアント・サーバ方式におけるレコード先読み制御方法において、クライアントコンピュータからレコードの読み込み依頼を受けたサーバコンピュータが、データ記憶装置から複数のレコードを先読みしてレコードバッファに格納し、該レコードバッファに格納された各レコード中のデータに対するデータ型変換を行った変換処理済みのレコードをサーバ側通信バッファに格納した後に前記クライアントコンピュータに一括して送信し、且つ、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに次に前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記レコードバッファに格納すると共にデータ型変換処理を行って前記サーバ側通信バッファに格納しておくことを特徴とする。
【００１２】
本発明の第３のレコード先読み制御方法は、第１または第２のレコード先読み制御方法において、前記クライアントコンピュータは、前記サーバコンピュータから受信した複数のレコードをクライアント側通信バッファに格納し、該クライアント側通信バッファからレコードを１つずつ読み出してユーザプログラムに返却し、ユーザプログラムに返却するレコードが前記クライアント側通信バッファに存在しない場合には次のレコードの読み込みを前記サーバコンピュータに依頼することを特徴とする。
【００１３】
本発明の第１のレコード先読み制御システムは、相互に通信可能なクライアントコンピュータとサーバコンピュータとから構成され、前記サーバコンピュータは、前記クライアントコンピュータからレコードの読み込み依頼を受けたときにデータ記憶装置から複数のレコードを先読みしてサーバ側通信バッファに格納する処理と、前記サーバ側通信バッファに格納された全てのレコードを前記クライアントコンピュータに一括して送信する処理と、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記サーバ側通信バッファに格納する処理とを行うサーバシステムを備えることを特徴とする。
【００１４】
本発明の第２のレコード先読み制御システムは、相互に通信可能なクライアントコンピュータとサーバコンピュータとから構成され、前記サーバコンピュータは、前記クライアントコンピュータからレコードの読み込み依頼を受けたときにデータ記憶装置から複数のレコードを先読みしてレコードバッファに格納する処理と、該レコードバッファに格納された各レコード中のデータに対するデータ型の変換を行う処理と、該変換処理済みのレコードをサーバ側通信バッファに格納する処理と、前記サーバ側通信バッファに格納された全てのレコードを前記クライアントコンピュータに一括して送信する処理と、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記レコードバッファに格納すると共に前記変換処理を行って前記サーバ側通信バッファに格納する処理とを行うサーバシステムを備えることを特徴とする。
【００１５】
本発明の第３のレコード先読み制御システムは、第１または第２のレコード先読み制御システムにおいて、前記クライアントコンピュータは、前記サーバコンピュータから受信した複数のレコードをクライアント側通信バッファに格納し、該クライアント側通信バッファからレコードを１つずつ読み出してユーザプログラムに返却し、ユーザプログラムに返却するレコードが前記クライアント側通信バッファに存在しない場合には次のレコードの読み込みを前記サーバコンピュータに依頼することを特徴とする。
【００１６】
本発明の第１のサーバコンピュータは、ネットワークを介してクライアントコンピュータに接続されたサーバコンピュータにおいて、前記クライアントコンピュータと通信するための送受信手段、サーバ側通信バッファおよび制御手段を備えるサーバシステムと、データを記憶するデータ記憶装置とを有し、前記サーバシステムは、前記クライアントコンピュータからレコードの読み込み依頼を受けたときに前記データ記憶装置から複数のレコードを先読みして前記サーバ側通信バッファに格納する処理と、前記サーバ側通信バッファに格納された全てのレコードを前記クライアントコンピュータに一括して送信する処理と、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記サーバ側通信バッファに格納する処理とを行う。
【００１７】
本発明の第２のサーバコンピュータは、ネットワークを介してクライアントコンピュータに接続されたサーバコンピュータにおいて、前記クライアントコンピュータと通信するための送受信手段、サーバ側通信バッファ、レコードバッファ、データ変換処理手段および制御手段を備えるサーバシステムと、データを記憶するデータ記憶装置とを有し、前記サーバシステムは、前記クライアントコンピュータからレコードの読み込み依頼を受けたときに前記データ記憶装置から複数のレコードを先読みして前記レコードバッファに格納する処理と、前記レコードバッファに格納された各レコード中のデータに対するデータ型の変換を行う処理と、該変換処理済みのレコードを前記サーバ側通信バッファに格納する処理と、前記サーバ側通信バッファに格納された全てのレコードを前記クライアントコンピュータに一括して送信する処理と、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記レコードバッファに格納すると共に前記変換処理を行って前記サーバ側通信バッファに格納する処理とを行う。
【００１８】
本発明の第１のサーバ用プログラムは、ネットワークを介してクライアントコンピュータに接続され、前記クライアントコンピュータと通信するための送受信手段、サーバ側通信バッファ、データ記憶装置を備えたサーバコンピュータに、前記クライアントコンピュータからレコードの読み込み依頼を受けたときに前記データ記憶装置から複数のレコードを先読みして前記サーバ側通信バッファに格納する処理、前記サーバ側通信バッファに格納された全てのレコードを前記クライアントコンピュータに一括して送信する処理、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記サーバ側通信バッファに格納する処理、を実行させる。
【００１９】
本発明の第２のサーバ用プログラムは、ネットワークを介してクライアントコンピュータに接続され、前記クライアントコンピュータと通信するための送受信手段、サーバ側通信バッファ、レコードバッファ、データ記憶装置を備えたサーバコンピュータに、前記クライアントコンピュータからレコードの読み込み依頼を受けたときに前記データ記憶装置から複数のレコードを先読みして前記レコードバッファに格納する処理、前記レコードバッファに格納された各レコード中のデータに対するデータ型の変換を行う処理、該変換処理済みのレコードを前記サーバ側通信バッファに格納する処理、前記サーバ側通信バッファに格納された全てのレコードを前記クライアントコンピュータに一括して送信する処理、最終のレコードを前記データ記憶装置から未だ取り出していないときは前記クライアントコンピュータからの依頼を待たずに前記クライアントコンピュータに送信する予定の複数のレコードを前記データ記憶装置から先読みして前記レコードバッファに格納すると共に前記変換処理を行って前記サーバ側通信バッファに格納する処理、を実行させる。
【００２０】
【作用】
本発明にあっては、クライアントコンピュータからレコードの読み込み依頼を受けたときにサーバコンピュータが、データ記憶装置から複数のレコードを先読みしてクライアントコンピュータに一括して送信した後、最終のレコードをデータ記憶装置から未だ取り出していないときは、クライアントコンピュータからの依頼を待たずに、クライアントコンピュータに送信する予定の複数のレコードをデータ記憶装置から先読みして、送信によって空きになったサーバ側通信バッファに格納しておくため、クライアントコンピュータから実際に依頼があったときには直ちに次の複数のレコードを送信することができる。これによって、ユーザプログラムに渡すべきレコード数が多く、クライアント側の通信バッファに何度も先読みする必要がある場合でもレスポンス良くレコードをユーザプログラムに返却することができる。特に、サーバが先読みしたレコードをそのままクライアントに渡すのではなく、レコード中のデータのデータ型を変換してからクライアントに渡す場合、データ型の変換処理を行う時間も隠蔽され、レスポンスの悪化が防止される。
【００２１】
【発明の実施の形態】
次に本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００２２】
図１を参照すると、本発明の第１の実施の形態は、クライアントコンピュータ１０１とサーバコンピュータ５０１とがＬＡＮ、ＷＡＮ、電話回線、インターネット等のネットワーク４０１を通じて相互に通信可能に接続されており、クライアントコンピュータ１０１には、ユーザプログラム２０１およびＤＢクライアントシステム３０１が設けられ、サーバコンピュータ５０１には、ＤＢサーバシステム６０１、ＤＢＭＳ７０１およびＤＢ８０１が設けられている。なお、ＤＢはデータベースの略称、ＤＢＭＳはデータベース管理システムの略称である。
【００２３】
ＤＢクライアントシステム３０１は、ユーザプログラム２０１がＤＢ８０１をクライアント・サーバ方式でアクセスする際のクライアント側の機能を提供するシステムであり、ＤＢサーバシステム６０１との間でネットワーク４０１経由でレコード読み込み要求などの情報の送信および検索結果のレコードなどの情報の受信を行う送信手段３０２および受信手段３０３と、ＤＢサーバシステム６０１から受信したレコードを複数レコード分格納し得る容量を持つ通信バッファ３０４と、ＤＢクライアントシステム３０１の主たる制御を司ると共に、通信バッファ３０４に先読みされた複数のレコードを１レコード単位に分割してユーザプログラム２０１に返却するレコード先読み結果分割機能を有する制御手段３０５とを含んで構成される。
【００２４】
ＤＢサーバシステム６０１は、ユーザプログラム２０１がＤＢ８０１をクライアント・サーバ方式でアクセスする際のサーバ側の機能を提供するシステムであり、ＤＢクライアントシステム３０１との間でネットワーク４０１経由で検索結果のレコードなどの情報の送信およびレコード読み込み要求などの情報の受信を行う送信手段６０２および受信手段６０３と、ＤＢクライアントシステム３０１へ送信するレコードを複数レコード分格納し得る容量を持つ通信バッファ６０４と、ＤＢサーバシステム６０１の主たる制御を司ると共に、ＤＢＭＳ７０１を通じてＤＢ８０１からレコードを先読みするレコード先読み機能を有する制御手段６０５とを含んで構成される。
【００２５】
次に、図２を参照して本実施の形態の概略動作を説明する。
【００２６】
今、クライアントコンピュータ１０１のユーザプログラム２０１がＤＢ８０１から一連のレコードを１件ずつ読み込んで処理することを考える。この場合、ユーザプログラム２０１からＤＢ８０１に対する最初のレコードの読み込み要求Ｒ１１が発生すると、ＤＢクライアントシステム３０１がネットワーク４０１経由でサーバコンピュータ５０１のＤＢサーバシステム６０１に対して最初の読み込み要求Ｒ２１を送信する。
【００２７】
ＤＢサーバシステム６０１は、読み込み要求Ｒ２１を受信すると、検索要求Ｒ３１をＤＢＭＳ７０１に対して送出して複数のレコードをＤＢ８０１からＤＢＭＳ７０１を通じてまとめて受取り、通信バッファ６０４に一旦格納する。次いで、通信バッファ６０４に格納した全てのレコードを読み込み要求Ｒ２１に対する応答としてネットワーク４０１経由でクライアントコンピュータ１０１へ送信する。そして、この送信により通信バッファ６０４が空になるので、最後のレコードをＤＢ８０１から未だ取得していない場合には、検索要求Ｒ３２をＤＢＭＳ７０１に対して送出することにより更に複数のレコードをＤＢ８０１から先読みして通信バッファ６０４に格納しておく。
【００２８】
他方、クライアントコンピュータ１０１のＤＢクライアントシステム３０１は、ＤＢサーバシステム６０１から送られてきた複数のレコードを通信バッファ３０４に一旦格納し、その格納された複数のレコードから１つのレコードを取り出し、読み込み要求Ｒ１１に対する応答としてユーザプログラム２０１に返却する。また、ユーザプログラム２０１から次の１件のレコードの読み込み要求Ｒ１２が発生すると、通信バッファ３０４に残っているレコードから１つのレコードを取り出し、読み込み要求Ｒ１２に対する応答としてユーザプログラム２０１に返却する。このような動作は、通信バッファ３０４に格納されているレコードが無くなるまで繰り返される。そして、通信バッファ３０４中の全てのレコードの返却を終えると、その直後にユーザプログラム２０１から出された読み込み要求Ｒ１ｎのときに、ＤＢサーバシステム６０１に対して次の複数のレコードを要求する読み込み要求Ｒ２２をネットワーク４０１経由で送信する。
【００２９】
ＤＢサーバシステム６０１は、この読み込み要求Ｒ２２に対して、既に通信バッファ６０４に先読みしてある複数のレコードをネットワーク４０１経由でＤＢクライアントシステム３０１に送信する。この送信された複数のレコードはＤＢクライアントシステム３０１の通信バッファ３０４に一旦格納され、前述と同様に１レコード毎に分割されてユーザプログラム２０１に返却される。
【００３０】
次に図３を参照して、ＤＢサーバシステム６０１の処理内容を詳しく説明する。ＤＢサーバシステム６０１における制御手段６０５は、ＤＢクライアントシステム３０１から最初の読み込み要求（図２のＲ２１に相当する）を受けると、図３の処理を開始する（１１００）。先ず、内部で使用する変数ＢＵＦを０に、変数ＤＡＴを１にそれぞれ初期化する（１１０１）。ここで、変数ＢＵＦは通信バッファ６０４に送信予定のレコード群が格納済みか否かを管理するためのもので、０は送信予定のレコード群が通信バッファ６０４に存在しないことを示し、１は存在することを示す。変数ＤＡＴは最終レコードの取り出しを終えたか否かを管理するもので、０は最終レコードの取り出しを終えていることを示し、１は終えていないことを示す。
【００３１】
次に、制御手段６０５は、ＤＢクライアントシステム３０１からの読み込み要求の監視を行い（１１０２）、読み込み要求が出ていれば（１１０３でＹＥＳ）、ステップ１１０４へ分岐して読み込み要求の有無を管理するための変数ＲＥＱの値を１に設定し、読み込み要求が出ていなければ（１１０３でＮＯ）、ステップ１１０５へ分岐して変数ＲＥＱの値を０に設定する。
【００３２】
次に、制御手段６０５は、変数ＢＵＦの値を判定し（１１０５）、１に等しくなければ、つまり通信バッファ６０４に送信予定のレコード群がなければ、ステップ１１０７へ分岐し、１に等しければ、つまり通信バッファ６０４に送信予定のレコード群が格納されていれば、ステップ１１１２へ分岐する。
【００３３】
ステップ１１０７へ分岐した場合、制御手段６０５は、ＤＢクライアントシステム３０１から要求される検索条件等に従い、ＤＢＭＳ７０１から要求を満たすレコードを所定量まとめて要求する。ここで、所定量は予めシステムで定義される。本例では例えば８ＫＢ分のレコードとする。勿論、容量で規定するのではなく、レコード数で規定しても良い。次に、ＤＢＭＳ７０１から返却されたレコード群中に最終レコードが含まれているか否かを判定し（１１０８）、最終レコードが含まれていれば（１１０８でＹＥＳ）、変数ＤＡＴを０に設定してその旨を管理して（１１０９）ステップ１１１０へ進み、最終レコードが含まれていなければステップ１１０９をスキップしてステップ１１１０へ進む。ステップ１１１０では、ＤＢＭＳ７０１から返却されたレコード群を通信バッファ６０４へ保存する。そして、変数ＢＵＦに１を設定して（１１１１）、ステップ１１１２へと進む。
【００３４】
ステップ１１１２では、制御手段６０５は、変数ＲＥＱの値を判定し、１に等しければ、つまりＤＢクライアントシステム３０１から読み込み要求が出ていれば、ステップ１１１３へ分岐し、１に等しくなければ、つまりＤＢクライアントシステム３０１から読み込み要求が出ていなければ、ステップ１１０２へ分岐して前述した処理を繰り返す。
【００３５】
ステップ１１１３へ分岐した場合、制御手段６０５は、通信バッファ６０４の内容すべてを送信手段６０２を通じてネットワーク４０１経由でＤＢクライアントシステム３０１へ送信する。この送信により通信バッファ６０４が空になったので、変数ＢＵＦを０に設定する（１１１４）。そして、変数ＤＡＴの値を判定し（１１１５）、０に等しければ、つまり最終レコードの取り出しを終えており全てのレコードのクライアントへの送信を終えていれば、処理を終了し（１１１６）、０に等しくなければ、つまり最終レコードの取り出しが終っていなければステップ１１０２へ分岐して上述した処理を繰り返す。
【００３６】
次に、図４を参照してＤＢクライアントシステム３０１の処理内容を詳しく説明する。ＤＢクライアントシステム３０１における制御手段３０５は、ユーザプログラム２０１から最初の読み込み要求（図２のＲ１１に相当する）があったときに図４の処理を開始する（１２００）。先ず、内部変数である変数ＥＭＰＴＹを１に初期化する。ここで、変数ＥＭＰＴＹは、通信バッファ３０４にレコードが１件も存在しないかどうかを管理するためのもので、１は１件も存在しないことを示し、０は少なくとも１件は存在することを示す。
【００３７】
次に制御手段３０５は、ユーザプログラム２０１からの読み込み要求の監視を行い（１２０２）、読み込み要求が出ていれば（１２０３でＹＥＳ）、ステップ１２０４へ分岐し、読み込み要求が出ていなければ（１２０３でＮＯ）、ステップ１２０２へ分岐して読み込み要求の監視を続ける。
【００３８】
読み込み要求があったためにステップ１２０４へ分岐した場合、制御手段３０５は、変数ＥＭＰＴＹの値を判定し、１に等しければ、つまり通信バッファ３０４に１件もレコードが存在しなければ、ステップ１２０５へ分岐してＤＢサーバシステム６０１へ送信手段３０２を通じて読み込み要求を発行する。そして、ステップ１２０６へ進む。この読み込み要求の発行により、最大８ＫＢ分のレコードがＤＢサーバシステム６０１から返却されるので、受信手段３０３を通じてそのレコード群を通信バッファ３０４に格納する。他方、変数ＥＭＰＴＹの値が１に等しくなければ、つまり、通信バッファ３０４に少なくとも１件のレコードが存在すれば、ステップ１２０５をスキップして、ステップ１２０６へと進む。
【００３９】
ステップ１２０６では、制御手段３０５は、通信バッファ３０４からレコードを１件読み込み、次のステップ１２０７で、ユーザプログラム３０５へこのレコード１件を返却する。そして、今回返却したレコードが最終レコードか否かを判定し（１２０８）、最終レコードでなければ（１２０８でＮＯ）、ステップ１２０９へ分岐し、最終レコードであれば（１２０８でＹＥＳ）、処理を終了する（１２１２）。ステップ１２０９では、通信バッファ３０４が空か否かを判定し、通信バッファ３０４が空であれば（１２０９でＹＥＳ）、変数ＥＭＰＴＹに１を設定してその旨を管理し（１２１０）、通信バッファ３０４が空でなければ（１２０９でＮＯ）、変数ＥＭＰＴＹに０を設定してその旨を管理し、それぞれステップ１２０２に戻って上述した処理を繰り返す。
【００４０】
次に、本実施の形態の具体的な動作を説明する。例としては、ＤＢ８０１がリレーショナルデータベースであり、ユーザプログラム２０１においてＳＱＬ文によるカーソル定義で指定した検索条件を満足する複数のレコード群をＦＥＴＣＨ文でユーザプログラム２０１が１レコードずつ読み込む場合を採りあげる。
【００４１】
図５は、埋め込みＳＱＬ文を用いてＤＢクライアントシステム３０１及びＤＢサーバシステム６０１を介してＤＢＭＳ７０１をアクセスするユーザプログラム２０１の内容例１３００をソースイメージで示す。なお、埋め込みＳＱＬ文には通常、先頭に「ＥＸＥＣ　ＳＱＬ」が付けられるが図５では省略している。
【００４２】
図５において、１３０１は、ＤＢＭＳ７０１への問い合わせ条件を示すカーソル宣言文であり、検索条件（ＳＥＬＥＣＴ節以降）とカーソル名「ＣＳＲ１」とを対応付けている。ここでは、カラムＣ１の値が１００であるテーブルＴＢＬ１のカラムＣＯＬ１、ＣＯＬ２を検索するものとしている。このカーソル宣言文１３０１の実行時、ＤＢクライアントシステム３０１からＤＢサーバシステム６０１にカーソル宣言文の内容が送られ、ＤＢＭＳ７０１に登録される。１３０２は、カーソル宣言文１３０１で宣言したカーソルＣＳＲ１の利用の開始を示すＯＰＥＮ文である。このＯＰＥＮ文１３０２の実行時、ＤＢクライアントシステム３０１からＤＢサーバシステム６０１にカーソルＣＳＲ１のオープンが指示され、ＤＢＭＳ７０１により、カーソル定義文１３０１で定義された検索条件による検索結果のレコード群を格納した仮想的な表がＤＢ８０１に生成される。１３０３は、データの最後を示すＳＱＬＣＯＤＥ＝１００までの間繰り返し実行することを示すループ処理であり、ＣＯＢＯＬ、Ｃ等のホスト言語によって記述される。１３０４は、前記仮想的な表から１行（１レコード）を読み取るためのＦＥＴＣＨ文である。ここでは、ホスト変数としてＨ１、Ｈ２が指定されており、検索されたカラムＣＯＬ１、ＣＯＬ２の値がそれぞれＨ１、Ｈ２に設定されてユーザプログラム２０１に返される。なお、１レコードは、カラムＣＯＬ１、ＣＯＬ２の値のペアになる。１３０５は、カーソルＣＳＲ１の利用の終了を示すＣＬＯＳＥ文である。
【００４３】
カーソル宣言文１３０１、オープン文１３０２、クローズ文１３０５に関連する処理は従来と同じなので、以下では、ＷＨＩＬＥ文１３０３とＦＥＴＣＨ文１３０４の箇所に関連する動作を説明する。なお、説明の便宜上、カーソル宣言文１３０１で指定された検索条件を満たすレコードの総容量は２０ＫＢであったものとし、検索された１つのレコードの容量は１ＫＢとする。即ち、合計２０件（２０行）のレコードが検索されたものと仮定する。
【００４４】
先ず、ＤＢクライアントシステム３０１側の動作を説明する。
【００４５】
ユーザプログラム２０１において最初のＦＥＴＣＨ文１３０４が実行されると、ＤＢクライアントシステム３０１における制御手段３０５は図４の処理を開始する（１２００）。先ず制御手段３０５は、変数ＥＭＰＴＹに１を設定し（１２０１）、読み込み要求の監視を行う（１２０２）。この時点でユーザプログラム２０１から最初の読み込み要求が出ているので、ステップ１２０３における読み込み要求の判定はＹＥＳとなり、ステップ１２０４へ分岐する。
【００４６】
ステップ１２０４における変数ＥＭＰＴＹ＝＝１の判定はＹＥＳであるため、制御手段３０５はＤＢサーバシステム６０１に対して、カーソル名ＣＳＲ１を指定して、次のレコード群を渡す旨の読み込み要求を発行する（１２０５）。この読み込み要求に対してＤＢサーバシステム６０１から８ＫＢ分の検索結果、つまり８件分の検索レコードが返却されるので、それが受信手段３０３により通信バッファ３０４に格納される。制御手段３０５は、通信バッファ３０４から１件のレコードを読み込み（１２０６）、この１件のレコードをユーザプログラム２０１へ返却する（１２０７）。
【００４７】
ユーザプログラム２０１では、１回目のＦＥＴＣＨ文１３０４の処理が終了すると、ＷＨＩＬＥ文１３０３のループ処理によって再度、ＦＥＴＣＨ文１３０４の処理が繰り返される。
【００４８】
一方、ＤＢクライアントシステム３０１の制御手段３０５は、先に返却したレコードがＤＢＭＳ７０１での最終レコードでなく（１２０８でＮＯ）、また通信バッファ３０４が空でないので（１２０９でＮＯ）、変数ＥＭＰＴＹに０を設定し（１２１１）、ステップ１２０２へ分岐する。そして、このステップ１２０２でユーザプログラム２０１からの読み込み要求を監視し、ユーザプログラム２０１のＦＥＴＣＨ文１３０４で次の読み込み要求が実行されていれば、ステップ１２０３からステップ１２０４へ分岐し、変数ＥＭＰＴＹの値が０であるため、ステップ１２０６へ分岐し、通信バッファ３０４より検索結果として次の１件のレコード（２件目のレコード）を読み込む。このように、通信バッファ３０４が空でない間は、ＤＢサーバシステム６０１への読み込み要求を行わずに通信バッファ３０４から次の１件のレコードを読み込み、ユーザプログラム２０１へ返却する。そして、８件目のレコードをユーザプログラム２０１に返却し、通信バッファ３０４が空になった時点で、ステップ１２０９からステップ１２１０へ分岐して変数ＥＭＰＴＹに１を設定し、ステップ１２０２へ分岐する。
【００４９】
従って、ユーザプログラム２０１から次の読み込み要求が出た場合には、変数ＥＭＰＴＹが１なので、制御手段３０５はＤＢサーバシステム６０１へ２回目の読み込み要求を発行する（１２０５）。この読み込み要求に対してＤＢサーバシステム６０１から次の８ＫＢ分の検索結果、つまり８件分の検索レコードが返却されるので、それが受信手段３０３により通信バッファ３０４に格納され、その中から１件のレコードが取り出されてユーザプログラム２０１に返却される（１２０７）。以後、ユーザプログラム２０１から検索要求があると、通信バッファ３０４が空になるまで、通信バッファ３０４から１件ずつレコードを読み出して返却する。
【００５０】
そして再び通信バッファ３０４が空になると、未だ最終レコードの返却を終えていないので、制御手段３０５はＤＢサーバシステム６０１へ３回目の読み込み要求を発行する（１２０５）。この読み込み要求に対してＤＢサーバシステム６０１から最終レコードを含む４ＫＢ分の検索結果、つまり４件分のレコードが返却されるので、それがＤＢクライアントシステム３０１の通信バッファ３０４に格納され、その中から１件のレコードが取り出されてユーザプログラム２０１に返却される（１２０７）。以後、ユーザプログラム２０１から読み込み要求がある毎に、通信バッファ３０４から１件ずつレコードを取り出して返却する（１２０７）。そして、最終レコードの返却を終えると、制御手段３０５は処理を終える（１２１２）。
【００５１】
次にＤＢサーバシステム６０１側の動作を説明する。
【００５２】
ＤＢサーバシステム６０１では、ＤＢクライアントシステム３０１から最初の読み込み要求が発行されると、図３の処理が開始される（１１００）。まず、制御手段６０５は、変数ＢＵＦを０、変数ＤＡＴを１の値にそれぞれ初期設定し（１１０１）、ステップ１１０２、１１０３でＤＢクライアントシステム３０１からの最初の読み込み要求を認識し、変数ＲＥＱを１に設定する（１１０４）。そして、変数ＢＵＦの値が０であるため（１１０５でＮＯ）、制御手段６０５はＤＢＭＳ７０１へ要求を実行し、検索条件を満たす複数レコードを、最大８ＫＢ分まとめて受け取る。受け取った８件分のレコードに最終レコードが含まれていないので（１１０８でＮＯ）、制御手段６０５はステップ１１０９をスキップしてステップ１１１０に進み、受け取った８件分のレコードを通信バッファ６０４へ保存し、変数ＢＵＦを１に設定する（１１１１）。そして、ＲＥＱの値が１であるため（１１１２でＹＥＳ）、通信バッファ６０４の内容を送信手段６０２によりＤＢクライアントシステム３０１へ送信し（１１１３）、変数ＢＵＦを０に設定し（１１１４）、変数ＤＡＴが０でないので（１１１５でＮＯ）、ステップ１１０２に分岐する。
【００５３】
次に、制御手段６０５は、ＤＢクライアントシステム３０１からの２回目の読み込み要求を監視するが、送信直後は未だ２回目の読み込み要求がなされていないので変数ＲＥＱに０を設定し（１１０５）、ステップ１１０５へ進む。このステップ１１０５において、変数ＢＵＦの値が１か否かの判定を行うが、変数ＢＵＦの値が１であるためステップ１１０７へ分岐し、ＤＢクライアントシステム３０１からの次の２回目の読み込み要求を待たずに、ＤＢＭＳ７０１の検索を実施する（１１０７）。つまり、制御手段６０５はＤＢＭＳ７０１から検索条件を満たす残りの複数レコードを、最大８ＫＢ分まとめて受け取る。今度も、受け取った８件分のレコードに最終レコードが含まれていないので（１１０８でＮＯ）、ステップ１１０９をスキップしてステップ１１１０に進み、受け取った８件分のレコードを通信バッファ６０４へ保存し、変数ＢＵＦを１に設定する（１１１１）。そして、変数ＲＥＱの値が１か否かを判定するが、ＤＢクライアントシステム３０１から未だ２回目の読み込み要求が発行されておらず、変数ＲＥＱが１になっていないので、制御手段６０５はステップ１１０２に分岐する。ＤＢクライアントシステム３０１から２回目の読み込み要求が発行されない状態が続く間、変数ＲＥＱの値は１にならず、また変数ＢＵＦが１になっているため、制御手段６０５はステップ１１０２→１１０３→１１０５→１１０６→１１１２→１１０２のループを回っている。
【００５４】
そして、ＤＢクライアントシステム３０１から２回目の読み込み要求が発行されると、制御手段６０５はそれをステップ１１０２、１１０３で検出し、変数ＲＥＱを１に設定する（１１０４）。これにより上記のループを抜け出てステップ１１１３に進み、通信バッファ６０４に先読みしてあった８ＫＢ分の検索結果をＤＢクライアントシステム３０１に送信する。そして、変数ＢＵＦを０に設定し（１１１４）、変数ＤＡＴは未だ１のままなので、ステップ１１０２に分岐する。
【００５５】
制御手段６０５は、ＤＢクライアントシステム３０１からの次の読み込み要求を監視するが、送信直後は未だ３回目の読み込み要求がなされていないので変数ＲＥＱに０を設定し（１１０５）、ステップ１１０５へ進む。このステップ１１０５において、変数ＢＵＦの値が１か否かの判定を行うが、変数ＢＵＦの値が０であるためステップ１１０７へ分岐し、ＤＢクライアントシステム３０１からの次の３回目の読み込み要求を待たずにレコード先読み処理を行うべく、ＤＢＭＳ７０１から検索条件を満たす残りの４ＫＢ分のレコードをまとめて受け取る。今回は、受け取った検索結果中に最終レコードが含まれているので（１１０８でＹＥＳ）、ステップ１１０９で変数ＤＡＴを０に設定してステップ１１１０に進み、受け取った４件分の検索結果を通信バッファ６０４へ保存し、変数ＢＵＦを１に設定する（１１１１）。そして、変数ＲＥＱの値が１か否かを判定するが、ＤＢクライアントシステム３０１から未だ３回目の読み込み要求が発行されておらず、変数ＲＥＱが１になっていないので、制御手段６０５はステップ１１０２に分岐する。ＤＢクライアントシステム３０１から３回目の読み込み要求が発行されない状態が続く間、変数ＲＥＱの値は１にならず、また変数ＢＵＦが１になっているため、制御手段６０５はステップ１１０２→１１０３→１１０５→１１０６→１１１２→１１０２のループを回っている。
【００５６】
そして、ＤＢクライアントシステム３０１から３回目の読み込み要求が発行されると、制御手段６０５はそれをステップ１１０２、１１０３で検出し、変数ＲＥＱを１に設定する（１１０４）。これにより上記のループを抜け出てステップ１１１３に進み、通信バッファ６０４に先読みしてあった４ＫＢ分のレコードをＤＢクライアントシステム３０１に送信する。次に、変数ＢＵＦを０に設定し（１１１４）、変数ＤＡＴの値を判定する（１１１５）。今回は変数ＤＡＴは０に設定されているので、制御手段６０５は処理を終了する（１１１６）。
【００５７】
【発明の他の実施の形態】
次に本発明の第２の実施の形態について図面を参照して詳細に説明する。
【００５８】
図６を参照すると、本発明の第２の実施の形態は、ＤＢサーバシステム６０１における制御手段６０５と通信バッファ６０４との間にレコードバッファ６０６及びデータ変換処理手段６０７を備えている点で第１の実施の形態と相違する。
【００５９】
図７を参照すると、本実施の形態におけるＤＢサーバシステム６０１の処理は、図３に示した処理と比べて、ステップ１１１０の処理内容が検索結果を通信バッファ６０４でなくレコードバッファ６０６に格納するよう変更され、また、ステップ１１１０の直後にステップ１１１７、１１１８が追加されている点で相違する。
【００６０】
レコードバッファ６０６は、検索結果のレコードを複数レコード分格納し得る容量を持つ。第１の実施の形態では、制御手段６０５はＤＢＭＳ７０１を通じてＤＢ８０１から検索した複数レコードを通信バッファ６０４に格納したが、本実施の形態ではレコードバッファ６０６に格納する（１１１０）。
【００６１】
データ変換処理手段６０７は、レコードバッファ６０６に格納された個々の検索結果のデータ型をＤＢクライアントシステム３０１の要求するデータ型へ変換し、この変換処理後の個々の検索結果を通信バッファ６０４に格納する機能を有する。どのようなデータ型へ変換するかはユーザプログラム２０１で指定する。この指定は例えば図５におけるカーソル宣言文１３００において行うことができ、その場合、カーソル宣言文１３００の内容がＤＢサーバシステム６０１に通知される際に、変換するデータ型の情報がデータ変換処理手段６０７に設定される。なお、レコードに複数のフィールド（カラム）があるとき、フィールド単位で変換の有無、データ型の指定が可能である。
【００６２】
次に本実施の形態の動作を第１の実施の形態との相違点を中心に説明する。
【００６３】
ＤＢサーバシステム６０１の制御手段６０５は、ステップ１１０７でＤＢＭＳ７０１に対して出した検索要求に対してＤＢＭＳ７０１から複数のレコードを受け取ると、それをレコードバッファ６０６に格納する（１１１０）。次にデータ変換処理手段６０７は、レコードバッファ６０６からレコードを順次に読み出し、そのレコード中の要求されたフィールドのデータの型を要求されたデータ型に変換して通信バッファ６０４に格納する。こうして格納された変換処理後の複数のレコードは第１の実施の形態と同様にＤＢクライアントシステム３０１に一括して送信される。この変換処理は先読み処理の過程で実施されるため、変換処理時間の隠蔽化が可能になり、スループットが向上する。
【００６４】
以上の説明では、レコードを取り出すデータ記憶装置としてリレーショナルデータベースを例にしたが、他の種類のデータベースであっても良いし、前記特開平６−９６０３３号公報や前記特開平４−１８４６５２号公報と同様にファイルであって良い。
【００６５】
以上本発明の実施の形態について説明したが、本発明は以上の実施の形態にのみ限定されずその他各種の付加変更が可能である。例えば、前記の実施の形態ではサーバコンピュータ５０１は１つのクライアントコンピュータ１０１に接続されているが、一般には複数のクライアントコンピュータに接続され得る。その場合、サーバコンピュータ５０１には複数のＤＢサーバシステム６０１が設けられ、これらが並行して動作する。
【００６６】
また、本発明にかかるＤＢサーバシステム６０１およびＤＢクライアントシステム３０１は、ハードウェアで実現しても良いし、コンピュータ上で動作するプログラムで実現しても良い。後者の場合、サーバ用プログラムおよびクライアント用プログラムは、磁気ディスク、半導体メモリ等のコンピュータ可読記録媒体に記録されて提供されるか、ネットワークを通じて提供される。サーバ用プログラムは、サーバコンピュータに読み込まれ、そのコンピュータの動作を制御することにより、そのコンピュータ上に前述した各実施の形態におけるＤＢサーバシステム６０１を実現する。同様に、クライアント用プログラムは、クライアントコンピュータに読み込まれ、そのコンピュータの動作を制御することにより、そのコンピュータ上に前述した各実施の形態におけるＤＢクライアントシステム３０１を実現する。
【００６７】
【発明の効果】
以上説明したように本発明によれば、ユーザプログラムに渡すべきレコード数が多く、クライアント側のバッファに何度も先読みする必要がある場合でもレスポンス良くレコードをユーザプログラムに返却することができる。その理由は、クライアントコンピュータからレコードの読み込み依頼を受けたときにサーバコンピュータが、データ記憶装置から複数のレコードを先読みしてクライアントコンピュータに一括して送信した後、最終のレコードをデータ記憶装置から未だ取り出していないときは、クライアントコンピュータからの依頼を待たずに、クライアントコンピュータに送信する予定の複数のレコードをデータ記憶装置から先読みして、送信によって空きになったサーバ側通信バッファに格納しておくため、クライアントから実際に依頼があったときには直ちに次の複数のレコードをクライアントに送信することができるからである。
【００６８】
また本発明によれば、サーバが先読みしたレコードをそのままクライアントに渡すのではなく、レコード中のデータのデータ型を変換してからクライアントに渡す場合でも、レスポンス良くレコードをユーザプログラムに返却することができる。その理由は先読み処理の過程でデータ型の変換処理を行うため変換処理時間が隠蔽されるためである。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第１の実施の形態の概略動作の説明図である。
【図３】本発明の第１の実施の形態におけるＤＢサーバシステムの処理例を示す流れ図である。
【図４】本発明の第１の実施の形態におけるＤＢクライアントシステムの処理例を示す流れ図である。
【図５】本発明の第１の実施の形態におけるユーザプログラムの一例を示す図である。
【図６】本発明の第２の実施の形態の構成を示すブロック図である。
【図７】本発明の第２の実施の形態におけるＤＢサーバシステムの処理例を示す流れ図である。
【符号の説明】
１０１　クライアントコンピュータ
２０１　ユーザプログラム
３０１　ＤＢクライアントシステム
３０２　送信手段
３０３　受信手段
３０４　通信バッファ
３０５　制御手段
４０１　ネットワーク
５０１　サーバコンピュータ
６０１　ＤＢサーバシステム
６０２　送信手段
６０３　受信手段
６０４　通信バッファ
６０５　制御手段
６０６　レコードバッファ
６０７　データ変換処理手段
７０１　ＤＢＭＳ
８０１　ＤＢ
【図１】
2004013758.tif 000003
【図２】
2004013758.tif 000004
【図３】
2004013758.tif 000005
【図４】
2004013758.tif 000006
【図５】
2004013758.tif 000007
【図６】
2004013758.tif 000008
【図７】
2004013758.tif 000009