(57)【要約】【課題】サーバ・クライアント構成によりデータベースを検索するデータ検索装置において、データ検索装置のリソースの消費を抑えつつ、クライアント装置からの検索結果取得要求に、できるだけ速く応答する。【解決手段】検索実行要求受信部１１１が検索実行要求５１０を受信し、データベース管理部１３２がデータベースを検索する。データベース管理部１３２は、検索したレコードをすべて取得し、データ変換部１４１がデータ形式を変換して、先読み管理部１４２が先読みバッファ２１１に記憶する。検索結果取得要求受信部１２１が検索結果取得要求５２０を受信すると、検索結果送信部１２２は、先読みバッファ２１１を送信バッファとして使用して、検索結果６２０を送信する。【選択図】図５
2009151411.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置からの要求によりデータベースを検索するデータ検索装置において、
データを記憶する記憶装置と、データを処理する処理装置と、データを送信する送信装置と、データを受信する受信装置と、データベース記憶部と、検索実行要求受信部と、データベース管理部と、データ変換部と、先読み管理部と、検索結果取得要求受信部と、検索結果送信部とを有し、
上記データベース記憶部は、上記記憶装置を用いて、上記データベースを記憶し、
上記検索実行要求受信部は、上記受信装置を用いて、上記データベースを検索する検索条件を表わすデータを含む検索実行要求を上記クライアント装置から受信し、
上記データベース管理部は、上記処理装置を用いて、上記検索実行要求受信部が受信した検索実行要求に含まれるデータが表わす検索条件に基づいて、上記データベース記憶部が記憶したデータベースから上記検索条件に合致するデータを検索し、上記処理装置を用いて、検索したデータを、上記データベース記憶部が記憶したデータベースから取得し、
上記データ変換部は、上記処理装置を用いて、上記データベース管理部が取得したデータを上記クライアント装置へ送信する形式に変換し、
上記先読み管理部は、上記記憶装置を用いて、上記データ変換部が変換したデータを記憶し、
上記検索結果取得要求受信部は、上記受信装置を用いて、上記クライアント装置が取得を要求するデータの取得要求数を表わすデータを含む検索結果取得要求を、上記クライアント装置から受信し、
上記検索結果送信部は、上記送信装置を用いて、上記検索結果取得要求受信部が受信した検索結果取得要求に含まれるデータが表わす取得要求数に基づいて、上記先読み管理部が記憶したデータから、上記取得要求数のデータを上記クライアント装置へ送信する
ことを特徴とするデータ検索装置。
【請求項２】
上記データ検索装置は、更に、管理テーブル管理部を有し、
上記先読み管理部は、上記記憶装置を用いて、順序づけられた複数の記憶領域を確保し、上記記憶装置を用いて、上記データ変換部が変換したデータを、確保した記憶領域に記憶し、
上記管理テーブル管理部は、上記記憶装置を用いて、上記先読み管理部がデータを記憶した記憶領域を表わすデータを記憶し、
上記検索結果送信部は、上記送信装置を用いて、上記管理テーブル管理部が記憶したデータが表わす記憶領域に記憶されたデータを上記クライアント装置へ送信する
ことを特徴とする請求項１に記載のデータ検索装置。
【請求項３】
上記先読み管理部は、上記記憶装置を用いて、確保した記憶領域の最初から所定の大きさの記憶領域をヘッダ記憶領域とし、上記データ変換部が変換したデータを、上記ヘッダ記憶領域の次の記憶領域から順に記憶し、
上記検索結果送信部は、上記処理装置を用いて、上記クライアント装置へ送信するデータに付加するヘッダデータを生成し、上記記憶装置を用いて、上記管理テーブル管理部が記憶したデータが表わす記憶領域の前の所定の大きさの記憶領域に、生成したヘッダデータを記憶し、上記送信装置を用いて、記憶したヘッダデータと、上記ヘッダデータを記憶した記憶領域に続く記憶領域に記憶されたデータとを上記クライアント装置へ送信する
ことを特徴とする請求項２に記載のデータ検索装置。
【請求項４】
上記先読み管理部は、上記記憶装置を用いて、上記データ変換部が変換したデータ一つにつき一以上の連続した記憶領域を使って、上記データ変換部が変換したデータを記憶し、
上記管理テーブル管理部は、更に、上記記憶装置を用いて、上記先読み管理部がそれぞれのデータを記憶した記憶領域の大きさを表わすデータを記憶し、
上記検索結果送信部は、上記処理装置を用いて、上記管理テーブル管理部が記憶したデータが表わす大きさに基づいて、上記クライアント装置へ送信するデータ全体の長さを算出し、上記送信装置を用いて、算出した長さに基づいて、上記記憶領域に記憶されたデータを上記クライアント装置へ送信する
ことを特徴とする請求項３に記載のデータ検索装置。
【請求項５】
上記データ検索装置は、更に、明細取得要求受信部と、明細変換部と、明細管理部と、明細送信部とを有し、
上記明細取得要求受信部は、上記受信装置を用いて、上記データベースから取得するデータを指す指示情報を表わすデータを含む明細取得要求を上記クライアント装置から受信し、
上記データベース管理部は、更に、上記処理装置を用いて、上記明細取得要求受信部が受信した明細取得要求に含まれるデータが表わす指示情報に基づいて、上記データベース記憶部が記憶したデータベースから上記指示情報が指すデータを取得し、
上記明細変換部は、上記処理装置を用いて、上記データベース管理部が取得した上記指示情報が指すデータを上記クライアント装置へ送信する形式に変換し、
上記明細管理部は、上記記憶装置を用いて、上記明細変換部が変換したデータを記憶し、
上記明細送信部は、上記送信装置を用いて、上記明細管理部が記憶したデータを上記クライアント装置へ送信する
ことを特徴とする請求項１乃至請求項４のいずれかに記載のデータ検索装置。
【請求項６】
上記データ検索装置は、二以上の記憶装置を有し、
上記記憶装置のうち第二の記憶装置は、上記記憶装置のうち第一の記憶装置と比較して、データの書き込み及び読み出しにかかる時間が長く、
上記先読み管理部は、先読みバッファ管理部と、先読みファイル管理部とを有し、
上記先読みバッファ管理部は、上記第一の記憶装置を用いて、データを記憶する記憶領域を確保し、上記処理装置を用いて、確保した記憶領域に空きがあるか否かを判定し、確保した記憶領域に空きがあると判定した場合に、上記第一の記憶装置を用いて、上記データ変換部が変換したデータを空いている記憶領域に記憶し、確保した記憶領域に空きがないと判定した場合に、上記第二の記憶装置を用いて、上記データ変換部が変換したデータを記憶し、
上記先読みファイル管理部は、上記処理装置を用いて、上記先読みバッファ管理部が上記第二の記憶装置を用いて記憶したデータがあるか否かを判定し、上記先読みバッファ管理部が上記第二の記憶装置を用いて記憶したデータがあると判定した場合に、上記先読みバッファ管理部が確保した記憶領域に空きがあるか否かを判定し、上記先読みバッファ管理部が確保した記憶領域に空きがあると判定した場合に、上記第一の記憶装置を用いて、上記先読みバッファ管理部が上記第二の記憶装置を用いて記憶したデータを空いている記憶領域に記憶し、
上記検索結果送信部は、上記送信装置を用いて、上記先読み管理部が上記第一の記憶装置を用いて記憶したデータを上記クライアント装置へ送信する
ことを特徴とする請求項１乃至請求項５のいずれかに記載のデータ検索装置。
【請求項７】
クライアント装置と、請求項１乃至請求項６のいずれかに記載のデータ検索装置とを有し、
上記クライアント装置は、データを送信する送信装置と、データを受信する受信装置と、検索実行要求送信部と、検索結果取得要求送信部と、検索結果受信部とを有し、
上記検索実行要求送信部は、上記送信装置を用いて、上記検索実行要求を上記データ検索装置へ送信し、
上記検索結果取得要求送信部は、上記送信装置を用いて、上記検索結果取得要求を上記データ検索装置へ送信し、
上記検索結果受信部は、上記受信装置を用いて、上記検索結果送信部が送信したデータを受信する
ことを特徴とするシステム。
【請求項８】
請求項１乃至請求項６のいずれかに記載のデータ検索装置として、コンピュータを機能させることを特徴とするプログラム。
【請求項９】
データを記憶する記憶装置と、データを処理する処理装置と、データを送信する送信装置と、データを受信する受信装置とを有するデータ検索装置が、クライアント装置からの要求によりデータベースを検索するデータ検索方法において、
上記受信装置が、上記データベースを検索する検索条件を表わすデータを含む検索実行要求を上記クライアント装置から受信し、
上記処理装置が、受信した検索実行要求に含まれるデータが表わす検索条件に基づいて、上記データベースから上記検索条件に合致するデータを検索し、
上記処理装置が、検索したデータを、上記データベースから取得し、
上記処理装置が、取得したデータを上記クライアント装置へ送信する形式に変換し、
上記記憶装置が、変換したデータを記憶し、
上記受信装置が、上記クライアント装置が取得を要求するデータの取得要求数を表わすデータを含む検索結果取得要求を、上記クライアント装置から受信し、
上記送信装置が、受信した検索結果取得要求に含まれるデータが表わす取得要求数に基づいて、記憶したデータから、上記取得要求数のデータを上記クライアント装置へ送信する
ことを特徴とするデータ検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、サーバ・クライアント構成によりデータベースを検索するデータ検索装置に関する。
【背景技術】
【０００２】
ログ専用データベースやメールアーカイブ用データベースは、大容量のデータを格納でき、可変長でサイズが非常に大きいデータ型が存在する。このようなデータベースを検索する場合、データベースをオープンしてからクローズするまでの間、データ検索装置（サーバ）のリソースを大量に消費する。
また、クライアント装置から検索結果の取得を要求されてから、データベースからデータを１件ずつ取得するようにすれば、データ検索装置のリソース消費を抑えることができるが、クライアントからの取得要求に対する応答が遅くなる。
【特許文献１】特開２００４−１３７５８号公報
【特許文献２】特開２００６−２６００６７号公報
【特許文献３】特開２００７−１１５２３号公報
【特許文献４】特表２００７−５２０８１２号公報
【特許文献５】特開２００７−６５９７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
この発明は、例えば、上記のような課題を解決するためになされたものであり、データ検索装置のリソースの消費を抑えるとともに、クライアント装置からの取得要求に、できるだけ速く応答できることを目的とする。
【課題を解決するための手段】
【０００４】
この発明にかかるデータ検索装置は、
クライアント装置からの要求によりデータベースを検索するデータ検索装置において、
データを記憶する記憶装置と、データを処理する処理装置と、データを送信する送信装置と、データを受信する受信装置と、データベース記憶部と、検索実行要求受信部と、データベース管理部と、データ変換部と、先読み管理部と、検索結果取得要求受信部と、検索結果送信部とを有し、
上記データベース記憶部は、上記記憶装置を用いて、上記データベースを記憶し、
上記検索実行要求受信部は、上記受信装置を用いて、上記データベースを検索する検索条件を表わすデータを含む検索実行要求を上記クライアント装置から受信し、
上記データベース管理部は、上記処理装置を用いて、上記検索実行要求受信部が受信した検索実行要求に含まれるデータが表わす検索条件に基づいて、上記データベース記憶部が記憶したデータベースから上記検索条件に合致するデータを検索し、上記処理装置を用いて、検索したデータを、上記データベース記憶部が記憶したデータベースから取得し、
上記データ変換部は、上記処理装置を用いて、上記データベース管理部が取得したデータを上記クライアント装置へ送信する形式に変換し、
上記先読み管理部は、上記記憶装置を用いて、上記データ変換部が変換したデータを記憶し、
上記検索結果取得要求受信部は、上記受信装置を用いて、上記クライアント装置が取得を要求するデータの取得要求数を表わすデータを含む検索結果取得要求を、上記クライアント装置から受信し、
上記検索結果送信部は、上記送信装置を用いて、上記検索結果取得要求受信部が受信した検索結果取得要求に含まれるデータが表わす取得要求数に基づいて、上記先読み管理部が記憶したデータから、上記取得要求数のデータを上記クライアント装置へ送信することを特徴とする。
【発明の効果】
【０００５】
この発明にかかるデータ検索装置によれば、データベース管理部が検索したデータをすべて取得し、データ変換部が形式を変換して、先読み管理部が記憶するので、クライアント装置からの検索結果取得要求を待つことなく、データベースを閉じて、切り離すことができる。これにより、データ検索装置１００の資源を開放し、有効活用することができるという効果を奏する。
また、データ変換部が形式を変換したデータを先読み管理部が記憶するので、先読み管理部がデータを記憶した記憶領域を、検索結果送信部がそのまま送信バッファとして使用することができ、クライアント装置からの検索結果取得要求に対する応答が速くなるという効果を奏する。
【発明を実施するための最良の形態】
【０００６】
実施の形態１．
実施の形態１について、図１〜図８を用いて説明する。
【０００７】
図１は、この実施の形態におけるデータ検索システム８００の全体構成の一例を示すシステム構成図である。
【０００８】
データ検索システム８００は、クライアント装置３００、データ検索装置１００を有する。クライアント装置３００とデータ検索装置１００とは、インターネット９４０などのネットワークを介して接続している。
【０００９】
クライアント装置３００は、アプリケーション部３０１、インターフェース部３０２を有する。クライアント装置３００は、コンピュータである。
アプリケーション部３０１は、クライアント装置３００が記憶したアプリケーションプログラムを実行することにより、様々な機能を提供する。アプリケーション部３０１は、インターフェース部３０２を介して、データ検索装置１００が記憶しているデータベースにアクセスする。
インターフェース部３０２は、アプリケーション部３０１からデータ検索装置１００へのアクセスを中継する。インターフェース部３０２は、アプリケーション部３０１からの要求にしたがい、データ検索装置１００に対して、データベースの検索要求などを行う。
【００１０】
データ検索装置１００は、サーバ装置１０１、データベース管理装置１０２、データベース記憶装置１０３を有する。
サーバ装置１０１は、クライアント装置３００からの検索要求を受け付けたり、検索結果をクライアント装置３００に返したりする。
データベース記憶装置１０３は、クライアント装置３００からのアクセスを受けるデータベースを記憶する。
データベース管理装置１０２は、データベース記憶装置１０３が記憶したデータベースを管理する。データベース管理装置１０２は、サーバ装置１０１が受け付けた検索要求にしたがって、データベース記憶装置１０３が記憶したデータベースを検索したり、検索結果をサーバ装置１０１に返したりする。
なお、データ検索装置１００は、物理的に一つの装置であってもよいし、サーバ装置１０１、データベース管理装置１０２、データベース記憶装置１０３がそれぞれ独立した装置であってもよい。
また、サーバ装置１０１とクライアント装置３００とが物理的に一つの装置であってもよい。
【００１１】
図２は、この実施の形態におけるデータ検索システム８００におけるデータの流れの一例を示すシーケンス図である。
【００１２】
最初に、クライアント装置３００は、データ検索装置１００に対して、検索実行要求５１０を送信する。検索実行要求５１０は、検索処理の実行を要求するデータであり、検索条件を表わすデータを含む。
データ検索装置１００は、クライアント装置３００が送信した検索実行要求５１０を受信し、要求された検索を実行する。検索終了後、データ検索装置１００は、クライアント装置３００に対して、検索ステータス６１０を送信する。検索ステータス６１０は、検索結果のステータスを通知するデータである。検索結果のステータスには、例えば、検索に成功したか失敗したかを表わすデータ、検索に失敗した場合には、失敗の状況（検索条件の文法エラー、指定されたデータベースを開けないなど）を表わすデータなどが含まれる。データ検索装置１００は、クライアント装置３００からの検索結果取得要求に備えて、検索結果の送信準備をする。
クライアント装置３００は、データ検索装置１００が送信した検索ステータス６１０を受信し、検索に成功したか否かなどを判断する。
【００１３】
検索に成功した場合、クライアント装置３００は、データ検索装置１００に対して、検索結果取得要求５２０を送信する。検索結果取得要求５２０は、検索されたレコードの内容を取得することを要求するデータであり、取得したいレコード数（以下「取得要求数」と呼ぶ。）を表わすデータを含む。
データ検索装置１００は、クライアント装置３００が送信した検索結果取得要求５２０を受信し、要求された数のレコードを検索結果６２０として送信する。その後、データ検索装置１００は、送信後処理を行い、次の送信の準備をする。
クライアント装置３００は、データ検索装置１００が送信した検索結果６２０を受信し、検索されたレコードを取得する。
【００１４】
検索されたレコード数が、取得要求数より多い場合には、クライアント装置３００に送信していないレコードが残る。クライアント装置３００は、複数回、検索結果取得要求５２０を送信することにより、検索されたすべてのレコードを取得できる。
１つのレコードに含まれるデータが大きい場合や検索されたレコードの数が多い場合、一回の送信で検索されたすべてのレコードを取得することはできないし、クライアント装置３００の記憶容量が少ない場合には、一回で検索されたすべてのレコードを取得してしまうと、記憶しきれなくなってしまう。このため、クライアント装置３００は、取得するレコード数を指定して、適切な数のレコードを取得し、順次処理していく。取得したレコードの処理が終わったら、クライアント装置３００は、次の検索結果取得要求５２０を送信する。
【００１５】
検索されたすべてのレコードの取得が終わった場合や、取得の途中で検索を終了したい場合、クライアント装置３００は、データ検索装置１００に対して、検索終了要求５９０を送信する。
データ検索装置１００は、クライアント装置３００が送信した検索終了要求５９０を受信し、クライアント装置３００に対して、了解６９０を送信する。了解６９０は、検索終了要求５９０を受領したことを表わすデータである。データ検索装置１００は、必要なら検索終了処理をする。
【００１６】
図３は、この実施の形態におけるサーバ装置１０１、データベース管理装置１０２、データベース記憶装置１０３、クライアント装置３００の外観の一例を示す図である。
サーバ装置１０１、データベース管理装置１０２、データベース記憶装置１０３、クライアント装置３００は、システムユニット９１０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置９０１、キーボード９０２（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット９１０は、コンピュータであり、ファクシミリ機９３２、電話器９３１とケーブルで接続され、また、ローカルエリアネットワーク９４２（ＬＡＮ）、ゲートウェイ９４１を介してインターネット９４０に接続されている。
【００１７】
図４は、この実施の形態におけるサーバ装置１０１、データベース管理装置１０２、データベース記憶装置１０３、クライアント装置３００のハードウェア資源の一例を示す図である。
サーバ装置１０１、データベース管理装置１０２、データベース記憶装置１０３、クライアント装置３００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信装置９１５、表示装置９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ装置９０６、スキャナ装置９０７、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。通信装置９１５は、送信装置及び受信装置の一例である。通信装置９１５、キーボード９０２、スキャナ装置９０７、ＦＤＤ９０４などは、入力部、入力装置の一例である。
また、通信装置９１５、表示装置９０１、プリンタ装置９０６などは、出力部、出力装置の一例である。
【００１８】
通信装置９１５は、ファクシミリ機９３２、電話器９３１、ＬＡＮ９４２等に接続されている。通信装置９１５は、ＬＡＮ９４２に限らず、インターネット９４０、ＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。インターネット９４０或いはＩＳＤＮ等のＷＡＮに接続されている場合、ゲートウェイ９４１は不用となる。
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００１９】
上記プログラム群９２３には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００２０】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００２１】
図５は、この実施の形態におけるデータ検索システム８００を構成する各装置の機能ブロックの構成の一例を示すブロック構成図である。
【００２２】
クライアント装置３００は、検索実行要求送信部３１１、検索ステータス受信部３１２、検索結果取得要求送信部３２１、検索結果受信部３２２、検索終了要求送信部３９１、了解受信部３９２を有する。
検索実行要求送信部３１１は、通信装置９１５を用いて、データ検索装置１００に対して、検索実行要求５１０を送信する。
検索ステータス受信部３１２は、通信装置９１５を用いて、データ検索装置１００が送信した検索ステータス６１０を受信する。
検索結果取得要求送信部３２１は、通信装置９１５を用いて、データ検索装置１００に対して、検索結果取得要求５２０を送信する。
検索結果受信部３２２は、通信装置９１５を用いて、データ検索装置１００が送信した検索結果６２０を受信する。
検索終了要求送信部３９１は、通信装置９１５を用いて、データ検索装置１００に対して、検索終了要求５９０を送信する。
了解受信部３９２は、通信装置９１５を用いて、データ検索装置１００が送信した了解６９０を受信する。
【００２３】
サーバ装置１０１は、検索実行要求受信部１１１、検索ステータス送信部１１２、検索結果取得要求受信部１２１、検索結果送信部１２２、データ変換部１４１、先読み管理部１４２、管理テーブル管理部１４７、検索終了要求受信部１９１、了解送信部１９２、先読み破棄部１９３を有する。
データベース管理装置１０２は、データベース管理部１３２を有する。
データベース記憶装置１０３は、データベース記憶部１３１を有する。
【００２４】
データベース記憶部１３１は、あらかじめ、磁気ディスク装置９２０を用いて、一つ以上のデータベースを記憶している。
【００２５】
検索実行要求受信部１１１は、通信装置９１５を用いて、クライアント装置３００が送信した検索実行要求５１０を受信する。検索実行要求５１０には、データベース記憶部１３１が記憶したデータベースを検索する検索条件を表わすデータが含まれる。
検索実行要求受信部１１１は、ＣＰＵ９１１を用いて、受信した検索実行要求５１０に含まれるデータが表わす検索条件を出力する。
【００２６】
データベース管理部１３２は、ＣＰＵ９１１を用いて、検索実行要求受信部１１１が出力した検索条件を入力する。
データベース管理部１３２は、ＣＰＵ９１１を用いて、入力した検索条件に基づいて、データベース記憶部１３１が記憶したデータベースのうち、検索すべきデータベースを開く（オープンする）。
データベース管理部１３２は、ＣＰＵ９１１を用いて、入力した検索条件に基づいて、開いたデータベースから、検索条件に合致するレコードを検索する。
データベース管理部１３２は、ＣＰＵ９１１を用いて、検索結果（ステータス）を出力する。
【００２７】
検索ステータス送信部１１２は、ＣＰＵ９１１を用いて、データベース管理部１３２が出力した検索結果（ステータス）を入力する。
検索ステータス送信部１１２は、ＣＰＵ９１１を用いて、入力したステータスを表わすデータを含む検索ステータス６１０を生成する。
検索ステータス送信部１１２は、通信装置９１５を用いて、クライアント装置３００に対して、生成した検索ステータス６１０を送信する。
【００２８】
データベース管理部１３２は、ＣＰＵ９１１を用いて、入力したデータに基づいて、開いたデータベースから、検索されたレコードをすべて取得する。なお、検索条件で送信すべきフィールドが指定される場合には、データベース管理部１３２は、レコードを構成するフィールドのうち、検索条件で指定されたフィールドだけを抽出して、検索されたすべてのレコードについて取得してもよい。
データベース管理部１３２は、ＣＰＵ９１１を用いて、取得したレコードを出力する。
データベース管理部１３２は、ＣＰＵ９１１を用いて、開いたデータベースを閉じる（クローズする）。
【００２９】
データ変換部１４１は、ＣＰＵ９１１を用いて、データベース管理部１３２が出力したレコードを入力する。
データ変換部１４１は、ＣＰＵ９１１を用いて、入力したレコードを、クライアント装置３００に対して送信する送信形式に変換する。データ変換部１４１は、例えば、データをクライアント装置３００に対して送信する順序に並べ替えたり、クライアント装置３００に対して送信する文字コードに変換したり、クライアント装置３００に対して送信するバイトオーダーに変換したりする。
データ変換部１４１は、ＣＰＵ９１１を用いて、変換したレコード（以下「レコードデータ」と呼ぶ。）を出力する。
【００３０】
先読み管理部１４２は、ＣＰＵ９１１を用いて、データ変換部１４１が出力したレコードデータを入力する。
先読み管理部１４２は、ＲＡＭ９１４を用いて、入力したレコードデータを記憶する。
先読み管理部１４２は、あらかじめ、ＲＡＭ９１４を用いて、レコードデータを記憶するための記憶領域（以下「先読みバッファ２１１」と呼ぶ。）を確保しておく。先読み管理部１４２は、あらかじめ確保した先読みバッファ２１１に、入力したレコードデータを記憶する。
先読み管理部１４２が確保する先読みバッファ２１１の大きさは、サーバ装置１０１が有するＲＡＭ９１４の容量などによっても異なるが、この実施の形態では、データ変換部１４１が出力したレコードデータすべてを記憶するのに十分な大きさを確保できるものとする。
先読み管理部１４２は、ＣＰＵ９１１を用いて、先読みバッファ２１１内においてレコードデータを記憶した記憶領域の開始アドレスと、先読みバッファ２１１の先頭アドレスとの差（以下「オフセット」と呼ぶ。）、及び、先読みバッファ２１１内においてレコードデータを記憶した記憶領域の大きさ（以下「データ長」と呼ぶ。）を出力する。
【００３１】
管理テーブル管理部１４７は、ＣＰＵ９１１を用いて、先読み管理部１４２が出力したオフセット及びデータ長を入力する。
管理テーブル管理部１４７は、ＲＡＭ９１４を用いて、入力したオフセット及びデータ長を記憶する。
管理テーブル管理部１４７は、あらかじめ、ＣＰＵ９１１を用いて、オフセット及びデータ長を記憶するための記憶領域（以下「管理テーブル２１２」と呼ぶ。）を確保しておく。管理テーブル管理部１４７は、あらかじめ確保した管理テーブル２１２に、入力したオフセット及びデータ長を記憶する。
【００３２】
検索結果取得要求受信部１２１は、通信装置９１５を用いて、クライアント装置３００が送信した検索結果取得要求５２０を受信する。検索結果取得要求５２０には、取得要求数を表わすデータが含まれている。
検索結果取得要求受信部１２１は、ＣＰＵ９１１を用いて、受信した検索結果取得要求５２０に含まれるデータが表わす取得要求数を出力する。
【００３３】
検索結果送信部１２２は、ＣＰＵ９１１を用いて、検索結果取得要求受信部１２１が出力した取得要求数を入力する。
検索結果送信部１２２は、ＣＰＵ９１１を用いて、管理テーブル２１２に記憶されたオフセット及びデータ長を読み出す。
検索結果送信部１２２は、ＣＰＵ９１１を用いて、読み出したオフセットに基づいて、先読みバッファ２１１内において送信すべき最初のレコードデータが記憶された記憶領域の開始アドレスを算出する。
検索結果送信部１２２は、ＣＰＵ９１１を用いて、読み出したデータ長に基づいて、入力した取得要求数分のレコードデータ全体のデータ長を算出する。
検索結果送信部１２２は、通信装置９１５を用いて、算出した開始アドレス及びデータ長に基づいて、先読みバッファ２１１に記憶された取得要求数のレコードデータを検索結果６２０として、クライアント装置３００に対して送信する。
なお、クライアント装置３００に対してまだ送信していないレコードデータの数よりも多い取得要求数を指定された場合、検索結果送信部１２２は、通信装置９１５を用いて、まだ送信していないレコードデータを全部送信する。
また、１回に送信できるデータ長の最大値が決まっている場合、検索結果送信部１２２は、算出したデータ長が、１回に送信できるデータ長の最大値以下に収まるよう、送信するレコードデータの数を減らす。
したがって、検索結果送信部１２２が送信するレコードデータの数は、通常、取得要求数と等しいが、検索結果送信部１２２が取得要求数よりも少ない数のレコードデータを送信する場合もある。
【００３４】
検索終了要求受信部１９１は、通信装置９１５を用いて、クライアント装置３００が送信した検索終了要求５９０を受信する。
了解送信部１９２は、検索終了要求受信部１９１が検索終了要求５９０を受信した場合に、通信装置９１５を用いて、クライアント装置３００に対して了解６９０を送信する。
先読み破棄部１９３は、検索終了要求受信部１９１が検索終了要求５９０を受信した場合に、管理テーブル２１２に記憶されたオフセット及びデータ長を消去する。
【００３５】
図６は、この実施の形態におけるクライアント装置３００とデータ検索装置１００との間で送受信されるデータのデータ形式の一例を示す図である。
【００３６】
コード部５０１は、データの種類（そのデータが、検索実行要求５１０であるか、検索ステータス６１０であるかなどの区別）を表わす部分である。
データ部５０２は、そのデータの種類に応じて、必要な情報を表わすデータを含む部分である。データの種類によっては、データ部５０２がない場合もある。
【００３７】
検索実行要求５１０は、コード部５０１が検索実行要求コード５１１であり、データ部５０２が検索条件データ５１２である。検索実行要求コード５１１は、そのデータが検索実行要求５１０であることを表わす。検索条件データ５１２は、検索条件を表わす。
【００３８】
検索ステータス６１０は、コード部５０１が検索ステータスコード６１１であり、データ部５０２が検索ステータスデータ６１２である。検索ステータスコード６１１は、そのデータが検索ステータス６１０であることを表わす。検索ステータスデータ６１２は、検索結果のステータスを表わす。
【００３９】
検索結果取得要求５２０は、コード部５０１が検索結果取得要求コード５２１であり、データ部５０２が取得要求数データ５２２である。検索結果取得要求コード５２１は、そのデータが検索結果取得要求５２０であることを表わす。取得要求数データ５２２は、取得要求数を表わす。
【００４０】
検索結果６２０は、コード部５０１が検索結果コード６２１である。検索結果コード６２１は、そのデータが検索結果６２０であることを表わす。
検索結果６２０のデータ部５０２は、データヘッダ６２２及び１以上のレコードデータ６２６を含む。データヘッダ６２２は、データ部５０２に含まれるレコードデータ６２６の数やサイズを表わすデータなどを含む。なお、検索結果コード６２１とデータヘッダ６２２とを合わせて、ヘッダデータ６２３と呼ぶ。
レコードデータ６２６は、１つのフィールドヘッダ６２４と１つのフィールドデータ６２５との組の１以上の繰返しからなる。フィールドヘッダ６２４は、フィールドデータ６２５の長さ（サイズ）を表わすデータなどを含む。フィールドデータ６２５は、データベース記憶部１３１が記憶したデータベースに記憶されたデータのうち、検索されたレコードの該当するフィールドに記憶されたデータ（を送信形式に変換したもの）である。
１つのレコードデータに含まれるフィールドの数やそれぞれのフィールドの名称は、検索条件で指定されるので、検索結果６２０は、これらの情報を含んでいなくてもよい。あるいは、データヘッダ６２２やフィールドヘッダ６２４が、フィールドの数やフィールド名を表わすデータを含んでもよい。
【００４１】
検索終了要求５９０は、コード部５０１が検索終了要求コード５９１であり、データ部５０２はない。検索終了要求コード５９１は、そのデータが検索終了要求５９０であることを表わす。
【００４２】
了解６９０は、コード部５０１が了解コード６９１であり、データ部５０２はない。了解コード６９１は、そのデータが了解６９０であることを表わす。
【００４３】
図７は、この実施の形態におけるデータ検索装置１００がデータベースを検索する検索処理、及び、データ検索装置１００が検索結果を送信する結果送信処理の流れの一例を示すフローチャート図である。
【００４４】
検索処理は、検索実行要求受信部１１１が検索実行要求５１０を受信することにより開始する。
検索実行要求受信工程Ｓ４１１において、検索実行要求受信部１１１は、通信装置９１５を用いて、クライアント装置３００が送信した検索実行要求５１０を受信する。検索実行要求受信部１１１は、受信した検索実行要求５１０に含まれる検索条件データ５１２が表わす検索条件を出力する。
【００４５】
データベースオープン工程Ｓ４１２において、データベース管理部１３２は、ＣＰＵ９１１を用いて、検索実行要求受信工程Ｓ４１１で検索実行要求受信部１１１が出力した検索条件に基づいて、データベース記憶部１３１が記憶したデータベースのなかから、検索対象となるデータベースを開く。
データ検索工程Ｓ４１３において、データベース管理部１３２は、ＣＰＵ９１１を用いて、検索実行要求受信工程Ｓ４１１で検索実行要求受信部１１１が出力した検索条件に基づいて、データベースオープン工程Ｓ４１２で開いたデータベースから、検索条件に合致するレコードを検索する。
検索ステータス送信工程Ｓ４１４において、検索ステータス送信部１１２は、通信装置９１５を用いて、データ検索工程Ｓ４１３でデータベース管理部１３２がデータベースを検索した検索結果のステータスを表わす検索ステータスデータ６１２を含む検索ステータス６１０を、クライアント装置３００に対して送信する。
【００４６】
データ取得工程Ｓ４２２〜繰返し工程Ｓ４２７の処理は、データ検索工程Ｓ４１３でデータベース管理部１３２が検索したレコードそれぞれについて繰り返す。
【００４７】
データ取得工程Ｓ４２２において、データベース管理部１３２は、ＣＰＵ９１１を用いて、データベースオープン工程Ｓ４１２で開いたデータベースから、データ検索工程Ｓ４１３で検索したレコードを、１件ずつ取得する。検索されたすべてのレコードを取得して、それ以上できる取得できるレコードが存在しない場合は、データベースクローズ工程Ｓ４２８へ進む。レコードを取得した場合は、データ変換工程Ｓ４２３へ進む。
【００４８】
データ変換工程Ｓ４２３において、データ変換部１４１は、ＣＰＵ９１１を用いて、データ取得工程Ｓ４２２でデータベース管理部１３２が取得したレコードを変換して、レコードデータ６２６を生成する。
バッファ書込工程Ｓ４２５において、先読み管理部１４２は、ＲＡＭ９１４を用いて、データ変換工程Ｓ４２３でデータ変換部１４１が生成したレコードデータ６２６を、先読みバッファ２１１に書き込んで記憶する。
繰返し工程Ｓ４２７において、データ取得工程Ｓ４２２に戻る。
【００４９】
データベースクローズ工程Ｓ４２８において、データベース管理部１３２は、ＣＰＵ９１１を用いて、データベースオープン工程Ｓ４１２で開いたデータベースを閉じる。
以上で、検索処理を終了する。
【００５０】
結果送信処理は、検索結果取得要求受信部１２１が検索結果取得要求５２０を受信することにより開始する。
【００５１】
検索結果取得要求受信工程Ｓ４３１において、検索結果取得要求受信部１２１は、通信装置９１５を用いて、クライアント装置３００が送信した検索結果取得要求５２０を受信する。検索結果取得要求受信部１２１は、ＣＰＵ９１１を用いて、受信した検索結果取得要求５２０に含まれる取得要求数データ５２２が表わす取得要求数を出力する。
【００５２】
検索結果送信工程Ｓ４３２において、検索結果送信部１２２は、ＣＰＵ９１１を用いて、検索結果取得要求受信工程Ｓ４３１で検索結果取得要求受信部１２１が出力した取得要求数に基づいて、先読みバッファ２１１に記憶されたレコードデータ６２６から、検索結果６２０を生成する。検索結果送信部１２２は、通信装置９１５を用いて、生成した検索結果６２０を、クライアント装置３００に対して送信する。
以上で、検索結果送信処理を終了する。
【００５３】
図８は、この実施の形態におけるデータ変換部１４１、先読み管理部１４２、検索結果送信部１２２の動作を模式的に表わす図である。
【００５４】
データ変換部１４１は、ＣＰＵ９１１を用いて、レコードを変換し、検索結果６２０に含まれるレコードデータ６２６と同じ形式のレコードデータを生成する。すなわち、データ変換部１４１は、ＣＰＵ９１１を用いて、クライアント装置３００に対して送信すべきフィールドそれぞれについて、そのフィールドのデータの文字コードやバイトオーダーを変換してフィールドデータ６２５を生成し、生成したフィールドデータ６２５に基づいて、フィールドデータ６２５の長さなどを表わすデータを含むフィールドヘッダ６２４を生成する。データ変換部１４１は、ＣＰＵ９１１を用いて、生成したフィールドヘッダ６２４、フィールドデータ６２５を結合して、レコードデータ６２６を生成する。
【００５５】
先読み管理部１４２は、ＲＡＭ９１４を用いて、データ変換部１４１が生成したレコードデータ６２６を先読みバッファ２１１に記憶する。
先読みバッファ２１１は、先入れ先出し構造となっていて、先読み管理部１４２がレコードデータ６２６を先読みバッファ２１１に対して書き込みながら、検索結果送信部１２２がレコードデータ６２６を読み出して送信できる。
検索結果取得要求受信部１２１がクライアント装置３００から検索結果取得要求５２０を受信しなければ、検索結果送信部１２２はレコードデータ６２６を送信しないが、検索結果送信部１２２がレコードデータ６２６を送信したかしないかに関わらず、データ変換部１４１は、検索されたすべてのレコードについて、順にレコードデータ６２６を生成し、生成されたレコードデータ６２６を先読み管理部１４２が先読みバッファ２１１に書き込んでいく。すなわち、クライアント装置３００側からの要求を待つことなく、検索されたすべてのレコードについて、データ変換部１４１が送信形式に変換したデータを、先読み管理部１４２が先読みバッファ２１１に記憶する。
【００５６】
データベース管理装置１０２において、検索のため、データベース記憶部１３１が記憶したデータベースを開いておくには、データベース内のテーブル管理やトランザクション管理をするため、メモリなどの資源が必要となる。特に、データベースに、可変長でサイズが非常に大きいデータ型が存在する場合、データベース管理装置１０２の資源を大量に消費する。
【００５７】
この実施の形態において、データベース管理部１３２は、検索したすべてのレコードを取得したら、すぐにデータベースを閉じる。したがって、データベースを開くために消費されるデータベース管理装置１０２の資源をすぐに開放することができる。
【００５８】
この実施の形態におけるデータ検索装置１００は、クライアント装置３００からの要求によりデータベースを検索するデータ検索装置１００である。
データ検索装置１００は、データを記憶する記憶装置（ＲＡＭ９１４、磁気ディスク装置９２０）と、データを処理する処理装置（ＣＰＵ９１１）と、データを送信する送信装置（通信装置９１５）と、データを受信する受信装置（通信装置９１５）と、データベース記憶部１３１と、検索実行要求受信部１１１と、データベース管理部１３２と、データ変換部１４１と、先読み管理部１４２と、検索結果取得要求受信部１２１と、検索結果送信部１２２とを有することを特徴とする。
上記データベース記憶部１３１は、上記記憶装置（磁気ディスク装置９２０）を用いて、上記データベースを記憶することを特徴とする。
上記検索実行要求受信部１１１は、上記受信装置（通信装置９１５）を用いて、上記データベースを検索する検索条件を表わすデータ（検索条件データ５１２）を含む検索実行要求５１０を上記クライアント装置３００から受信することを特徴とする。
上記データベース管理部１３２は、上記処理装置（ＣＰＵ９１１）を用いて、上記検索実行要求受信部１１１が受信した検索実行要求５１０に含まれるデータ（検索条件データ５１２）が表わす検索条件に基づいて、上記データベース記憶部１３１が記憶したデータベースから上記検索条件に合致するデータ（レコード）を検索し、上記処理装置（ＣＰＵ９１１）を用いて、検索したデータ（レコード）を、上記データベース記憶部１３１が記憶したデータベースから取得することを特徴とする。
上記データ変換部１４１は、上記処理装置（ＣＰＵ９１１）を用いて、上記データベース管理部１３２が取得したデータ（レコード）を上記クライアント装置３００へ送信する形式に変換することを特徴とする。
上記先読み管理部１４２は、上記記憶装置（ＲＡＭ９１４）を用いて、上記データ変換部１４１が変換したデータ（レコードデータ６２６）を記憶することを特徴とする。
上記検索結果取得要求受信部１２１は、上記受信装置（通信装置９１５）を用いて、上記クライアント装置３００が取得を要求するデータ（レコードデータ６２６）の取得要求数を表わすデータ（取得要求数データ５２２）を含む検索結果取得要求５２０を、上記クライアント装置３００から受信することを特徴とする。
上記検索結果送信部１２２は、上記送信装置（通信装置９１５）を用いて、上記検索結果取得要求受信部１２１が受信した検索結果取得要求５２０に含まれるデータ（取得要求数データ５２２）が表わす取得要求数に基づいて、上記先読み管理部１４２が記憶したデータ（レコードデータ６２６）から、上記取得要求数のデータ（レコードデータ６２６）を上記クライアント装置３００へ送信することを特徴とする。
【００５９】
この実施の形態におけるデータ検索装置１００によれば、データベース管理部１３２が検索したデータをすべて取得し、データ変換部１４１が形式を変換して、先読み管理部１４２が記憶するので、クライアント装置３００からの検索結果取得要求５２０を待つことなく、データベースを閉じて、切り離すことができる。これにより、データベース管理装置１０２の資源を開放し、有効活用することができるという効果を奏する。
【００６０】
この実施の形態におけるデータ検索システム８００（システム）は、クライアント装置３００と、データ検索装置１００とを有することを特徴とする。
上記クライアント装置３００は、データを送信する送信装置（通信装置９１５）と、データを受信する受信装置（通信装置９１５）と、検索実行要求送信部３１１と、検索結果取得要求送信部３２１と、検索結果受信部３２２とを有することを特徴とする。
上記検索実行要求送信部３１１は、上記送信装置（通信装置９１５）を用いて、上記検索実行要求５１０を上記データ検索装置１００へ送信することを特徴とする。
上記検索結果取得要求送信部３２１は、上記送信装置（通信装置９１５）を用いて、上記検索結果取得要求５２０を上記データ検索装置１００へ送信することを特徴とする。
上記検索結果受信部３２２は、上記受信装置（通信装置９１５）を用いて、上記検索結果送信部１２２が送信したデータを受信することを特徴とする。
【００６１】
この実施の形態におけるデータ検索システム８００によれば、クライアント装置３００が検索結果をすべて受信するのではなく、取得を要求する数を指定して、データ検索装置１００に対して検索結果の取得を要求できるので、クライアント装置３００が検索結果を全件保持する必要がなく、少しずつ取得して少しずつ処理することができる。これにより、検索結果の数が多い場合や一つのデータが非常に大きな場合などでも、クライアント装置３００の資源を圧迫するのを防ぐことができるという効果を奏する。
【００６２】
この実施の形態におけるデータ検索装置１００は、コンピュータをデータ検索装置１００として機能されるプログラムを、コンピュータが実行することより実現可能である。
【００６３】
この実施の形態におけるデータ検索装置１００を実現するプログラムによれば、データベース管理部１３２が検索したデータをすべて取得し、データ変換部１４１が形式を変換して、先読み管理部１４２が記憶するので、クライアント装置３００からの検索結果取得要求５２０を待つことなく、データベースを閉じて、切り離すことができるデータ検索装置１００を実現することができる。これにより、データベース管理装置１０２として機能するコンピュータの資源を開放し、有効活用することができるという効果を奏する。
【００６４】
この実施の形態におけるデータ検索装置１００が、クライアント装置からの要求によりデータベースを検索するデータ検索方法は、データを記憶する記憶装置（ＲＡＭ９１４、磁気ディスク装置９２０）と、データを処理する処理装置（ＣＰＵ９１１）と、データを送信する送信装置（通信装置９１５）と、データを受信する受信装置（通信装置９１５）とを有するデータ検索装置１００が、以下の工程を実行することを特徴とする。
上記受信装置（通信装置９１５）が、上記データベースを検索する検索条件を表わすデータ（検索条件データ５１２）を含む検索実行要求５１０を上記クライアント装置３００から受信する。
上記処理装置（ＣＰＵ９１１）が、受信した検索実行要求５１０に含まれるデータ（検索条件データ５１２）が表わす検索条件に基づいて、上記データベースから上記検索条件に合致するデータ（レコード）を検索する。
上記処理装置（ＣＰＵ９１１）が、検索したデータ（レコード）を、上記データベースから取得する。
上記処理装置（ＣＰＵ９１１）が、取得したデータ（レコード）を上記クライアント装置３００へ送信する形式に変換する。
上記記憶装置（ＲＡＭ９１４）が、変換したデータ（レコードデータ６２６）を記憶する。
上記受信装置（通信装置９１５）が、上記クライアント装置３００が取得を要求するデータ（レコード）の取得要求数を表わすデータ（取得要求数データ５２２）を含む検索結果取得要求５２０を、上記クライアント装置３００から受信する。
上記送信装置（通信装置９１５）が、受信した検索結果取得要求５２０に含まれるデータ（取得要求数データ５２２）が表わす取得要求数に基づいて、記憶したデータ（レコードデータ６２６）から、上記取得要求数のデータ（レコードデータ６２６）を上記クライアント装置３００へ送信する。
【００６５】
この実施の形態におけるデータ検索方法によれば、検索したデータをすべて取得し、形式を変換して、記憶するので、クライアント装置３００からの検索結果取得要求５２０を待つことなく、データベースを閉じて、切り離すことができる。これにより、データベースを開いておくために必要な資源を開放し、有効活用することができるという効果を奏する。
【００６６】
以上説明したデータ検索方法は、データベースにアクセスするデータベースクライアント（クライアント装置３００）と、データベースクライアントからのアクセス要求（検索実行要求５１０など）を受けてデータを検索するデータベース管理部（データベース管理装置１０２）及びデータの格納領域を有するデータベースサーバ（サーバ装置１０１）とを有するデータ検索システム８００（データベースシステム）を使用する。
先読みバッファ２１１は、データベースクライアント（クライアント装置３００）からの検索実行要求５１０に対して、データベースサーバで全件先読みしたデータを、通信データとして使用可能にする配置で格納する。
管理テーブル２１２は、データベースサーバ（サーバ装置１０１）は、先読みバッファ２１１を通信データとして使用可能にする。
データベースサーバ（サーバ装置１０１）は、先読みしたデータを通信データ形式（送信形式）に変換して先読みバッファ２１１に格納すると共に、管理テーブル２１２を作成し、データベースクライアント（クライアント装置３００）からの検索結果取得要求５２０で管理テーブル２１２により通信バッファアドレスを決定する。
【００６７】
以上説明したデータ検索方法によれば、クライアント（クライアント装置３００）からの検索要求とは非同期にデータベースのデータを先読みし、データベースをクローズすることできる。これにより、クライアント（クライアント装置３００）からの検索で、検索結果を最後まで取得せずに途中で放ったらかしにされたり、複数のクライアント（クライアント装置３００）から検索要求が出されたりした場合であっても、データ検索装置１００のリソース（資源）が逼迫しない。この効果は、特に、ログ専用データベースやメールアーカイブ用データベースなど、可変長でサイズが非常に大きいデータ型が存在し、検索に伴いデータベースのオープンからクローズまでサーバのリソースを大量に消費してしまうデータベースを検索する場合に顕著である。これにより、企業内部の情報漏洩問題や、個人情報保護法への対応などセキュリティ対策強化のため、大容量のデータを格納でき、かつ、形式の異なる多種多様なデータへの対応が可能なデータベースを運用することができる。
【００６８】
以上説明したデータ検索システム８００（データベースシステム）は、データベースにアクセスするデータベースクライアント（クライアント装置３００）と、データベースクライアントからのアクセス要求（検索実行要求５１０など）を受けてデータを検索するデータベース管理部（データベース管理装置１０２）及びデータの格納領域を有するデータベースサーバ（サーバ装置１０１）とを有する。
データベースサーバ（サーバ装置１０１）は、データベースクライアント（クライアント装置３００）からの検索実行要求５１０に対して、データベースサーバで全件先読みしたデータを、通信データとして使用可能にする配置で格納する先読みバッファ２１１と、
先読みバッファ２１１を通信データとして使用可能にする管理テーブル２１２と、
先読みしたデータを通信データ形式（送信形式）に変換して先読みバッファ２１１に格納すると共に、管理テーブル２１２を作成し、データベースクライアント（クライアント装置３００）からの検索結果取得要求５２０で管理テーブル２１２により通信バッファアドレスを決定するバッファ管理部（検索結果送信部１２２）とを備える。
【００６９】
以上説明したデータ検索システム８００によれば、通信バッファに１回に送信する予定の件数分のデータだけをデータベースから先読みするのではなく、最終データまで全てを先読みしておくことができる。これにより、可変長でサイズが非常に大きいデータ型が存在し、検索に伴いデータベースのオープンからクローズまでサーバのリソースを大量に消費するデータベースシステムにおいて、クライアント（クライアント装置３００）からの検索要求（検索実行要求５１０）に対して全件先読み処理を可能となり、かつ、検索結果の転送性能を維持するために、先読みバッファ２１１を通信バッファとしても使用可能となる。
【００７０】
実施の形態２．
実施の形態２について、図９〜図１０を用いて説明する。
この実施の形態におけるデータ検索システム８００のシステム構成、機能ブロック構成は、実施の形態１で説明したものと同様なので、ここでは説明を省略する。
【００７１】
この実施の形態では、先読み管理部１４２が十分な大きさの先読みバッファ２１１を確保できない場合について説明する。
【００７２】
図９は、この実施の形態における先読み管理部１４２の詳細ブロックの構成及び先読みバッファ２１１などのデータ構造の一例を示す図である。
【００７３】
先読み管理部１４２は、先読みバッファ管理部１４３、先読みファイル管理部１４４を有する。
先読みバッファ管理部１４３は、先読みバッファ２１１に空きがあるか否かを判定し、先読みバッファ２１１に空きがあると判定した場合、ＲＡＭ９１４を用いて、データ変換部１４１が生成したレコードデータ６２６を、先読みバッファ２１１の空き領域に記憶する。先読みバッファ２１１に空きがないと判定した場合、先読みバッファ管理部１４３は、磁気ディスク装置９２０を用いて、データ変換部１４１が生成したレコードデータ６２６を、先読みファイル２２１に記憶する。
【００７４】
先読みバッファ２１１及び先読みファイル２２１は、どちらもレコードデータ６２６を記憶するための記憶領域である。先読みバッファ２１１と先読みファイル２２１との違いは、先読みバッファ２１１がＲＡＭ９１４（第一の記憶装置）を用いて、まだクライアント装置３００に対して送信していないレコードデータ６２６を記憶する記憶領域であるのに対して、先読みファイル２２１は、磁気ディスク装置９２０（第二の記憶装置）を用いて、まだ先読みバッファ２１１に書き込んでいないレコードデータ６２６を記憶する記憶領域である。広く知られているように、磁気ディスク装置９２０は、ＲＡＭ９１４と比較して、データの書き込み及び読み出しにかかる時間が長い。また、ＲＡＭ９１４は、磁気ディスク装置９２０と比較して、単位記憶容量当たりの単価が高い。このため、サーバ装置１０１に十分な容量のＲＡＭ９１４がなく、十分な大きさの先読みバッファ２１１を確保できない場合であっても、磁気ディスク装置９２０になら、十分な大きさの先読みファイル２２１を記憶することができる。
【００７５】
先読みファイル管理部１４４は、ＣＰＵ９１１を用いて、先読みファイル２２１にまだ先読みバッファ２１１に書き込んでいないレコードデータ６２６が記憶されているか否かを判定する。また、先読みファイル管理部１４４は、ＣＰＵ９１１を用いて、先読みバッファ２１１に空きがあるか否かを判定する。先読みファイル管理部１４４は、先読みファイル２２１にまだ先読みバッファ２１１に書き込んでいないレコードデータ６２６が記憶されていて、かつ、先読みバッファ２１１に空きがあると判定した場合に、先読みファイル２２１からレコードデータ６２６を読み出し、読み出したレコードデータ６２６を、ＲＡＭ９１４を用いて、先読みバッファ２１１の空いている記憶領域に記憶する。
【００７６】
管理テーブル管理部１４７は、ＲＡＭ９１４を用いて、先読みバッファ管理部１４３及び先読みファイル管理部１４４が先読みバッファ２１１に記憶したレコードデータ６２６のオフセット７１１及びデータ長７１２を、管理テーブル２１２に記憶する。
【００７７】
データ変換部１４１が生成したレコードデータ６２６を、先読みバッファ管理部１４３が先読みバッファ２１１に記憶することにより、先読みバッファ２１１が一杯になる。先読みバッファ管理部１４３は、残りのレコードデータ６２６を先読みファイル２２１に記憶する。その後、先読みバッファ２１１に記憶されたレコードデータ６２６を検索結果送信部１２２が送信すると、先読みバッファ２１１に空きができる。先読みファイル管理部１４４は、先読みファイル２２１からレコードデータ６２６を読み出して、先読みバッファ２１１の空き領域に記憶する。
【００７８】
あらかじめ、先読みバッファ管理部１４３は、ＣＰＵ９１１を用いて、ＲＡＭ９１４の連続したアドレスを持つ記憶領域を確保して、先読みバッファ２１１とする。
先読みバッファ管理部１４３は、ＣＰＵ９１１を用いて、先読みバッファ２１１を、環状に順序づけられた記憶領域の集合として管理する。すなわち、先読みバッファ管理部１４３は、先読みバッファ２１１内のある記憶領域を、その前のアドレスの記憶領域の次の記憶領域として管理し、先読みバッファ２１１の先頭の記憶領域を、先読みバッファ２１１の末尾の記憶領域の次の記憶領域として管理する。
【００７９】
先読みバッファ管理部１４３及び先読みファイル管理部１４４は、ＲＡＭ９１４を用いて、先読みバッファ２１１の連続した１以上の記憶領域を使用して、レコードデータ６２６を記憶する。先読みバッファ管理部１４３及び先読みファイル管理部１４４は、ＣＰＵ９１１を用いて、先読みバッファ２１１に記憶したレコードデータ６２６のオフセット７１１及びデータ長７１２を算出し、管理テーブル管理部１４７が、ＲＡＭ９１４を用いて、管理テーブル２１２に記憶する。
先読みバッファ管理部１４３及び先読みファイル管理部１４４は、ＣＰＵ９１１を用いて、管理テーブル２１２に記憶されたオフセット７１１及びデータ長７１２に基づいて、最後にレコードデータ６２６を記憶した記憶領域の最後のアドレス（またはオフセット）を算出する。また、先読みバッファ管理部１４３及び先読みファイル管理部１４４は、ＣＰＵ９１１を用いて、管理テーブル２１２に記憶されたオフセット７１１及びデータ長７１２に基づいて、まだ検索結果送信部１２２が送信していない最初のレコードデータ６２６の最初のアドレス（またはオフセット）を算出する。先読みバッファ管理部１４３及び先読みファイル管理部１４４は、ＣＰＵ９１１を用いて、算出した二つのアドレス（またはオフセット）に基づいて、先読みバッファ２１１の空き領域の大きさを算出する。先読みバッファ管理部１４３及び先読みファイル管理部１４４は、ＣＰＵ９１１を用いて、次のレコードデータ６２６のデータ長を算出する。先読みバッファ管理部１４３及び先読みファイル管理部１４４は、ＣＰＵ９１１を用いて、算出した空き領域の大きさと、算出したデータ長とを比較して、空き領域の大きさがデータ長よりも小さい場合に、先読みバッファ２１１に空きがないと判定する。
【００８０】
検索結果送信部１２２は、検索結果６２０を送信した場合、ＣＰＵ９１１を用いて、送信した検索結果６２０に含まれるレコードデータ６２６についてのオフセット７１１及びデータ長７１２を、管理テーブル２１２から削除する。これにより、先読みバッファ２１１のうち、既に送信したレコードデータ６２６を記憶している記憶領域を、先読みバッファ管理部１４３及び先読みファイル管理部１４４は空き領域として認識する。
【００８１】
図１０は、この実施の形態におけるデータ検索装置１００がデータベースを検索する検索処理、及び、データ検索装置１００が検索結果を送信する結果送信処理の流れの一例を示すフローチャート図である。
なお、実施の形態１で説明した検索処理及び結果送信処理と共通する部分については、同一の符号を付し、ここでは説明を省略する。
【００８２】
検索処理において、データ変換工程Ｓ４２３が終了後、空き判定工程Ｓ４２４へ進む。
空き判定工程Ｓ４２４において、先読みバッファ管理部１４３は、ＣＰＵ９１１を用いて、先読みバッファ２１１に空きがあるか否かを判定する。先読みバッファ２１１に空きがあると判定した場合、バッファ書込工程Ｓ４２５へ進む。先読みバッファ２１１に空きがないと判定した場合、ファイル書込工程Ｓ４２６へ進む。
【００８３】
バッファ書込工程Ｓ４２５において、先読みバッファ管理部１４３は、ＲＡＭ９１４を用いて、データ変換工程Ｓ４２３でデータ変換部１４１が生成したレコードデータ６２６を、先読みバッファ２１１に記憶する。その後、繰返し工程Ｓ４２７へ進む。
【００８４】
ファイル書込工程Ｓ４２６において、先読みバッファ管理部１４３は、磁気ディスク装置９２０を用いて、データ変換工程Ｓ４２３でデータ変換部１４１が生成したレコードデータ６２６を、先読みファイル２２１に記憶する。その後、繰返し工程Ｓ４２７へ進む。
【００８５】
結果送信処理において、検索結果送信工程Ｓ４３２が終了後、空き判定工程Ｓ４４１へ進む。
空き判定工程Ｓ４４１において、先読みファイル管理部１４４は、ＣＰＵ９１１を用いて、先読みバッファ２１１に空きがあるか否かを判定する。先読みバッファ２１１に空きがあると判定した場合、データ読込工程Ｓ４４２へ進む。先読みバッファ２１１に空きがないと判定した場合、結果送信処理を終了する。
データ読込工程Ｓ４４２において、先読みファイル管理部１４４は、ＣＰＵ９１１を用いて、先読みファイル２２１に記憶されたレコードデータ６２６を１つ読み込む。先読みファイル２２１に記憶されたレコードデータ６２６をすべて読み込み、読み込めるレコードデータ６２６が残っていない場合は、結果送信処理を終了する。レコードデータ６２６を読み込んだ場合は、データ書込工程Ｓ４４３へ進む。
データ書込工程Ｓ４４３において、先読みファイル管理部１４４は、ＲＡＭ９１４を用いて、データ読込工程Ｓ４４２で読み込んだレコードデータ６２６を、先読みバッファ２１１に記憶する。
繰返し工程Ｓ４４４において、空き判定工程Ｓ４４１に戻る。
【００８６】
この実施の形態におけるデータ検索装置１００は、二以上の記憶装置（ＲＡＭ９１４、磁気ディスク装置９２０）を有することを特徴とする。
上記記憶装置のうち第二の記憶装置（磁気ディスク装置９２０）は、上記記憶装置のうち第一の記憶装置（ＲＡＭ９１４）と比較して、データの書き込み及び読み出しにかかる時間が長いことを特徴とする。
上記先読み管理部１４２は、先読みバッファ管理部１４３と、先読みファイル管理部１４４とを有することを特徴とする。
上記先読みバッファ管理部１４３は、上記第一の記憶装置（ＲＡＭ９１４）を用いて、データを記憶する記憶領域（先読みバッファ２１１）を確保し、上記処理装置（ＣＰＵ９１１）を用いて、確保した記憶領域に空きがあるか否かを判定し、確保した記憶領域に空きがあると判定した場合に、上記第一の記憶装置（ＲＡＭ９１４）を用いて、上記データ変換部１４１が変換したデータ（レコードデータ６２６）を空いている記憶領域に記憶し、確保した記憶領域に空きがないと判定した場合に、上記第二の記憶装置（磁気ディスク装置９２０）を用いて、上記データ変換部１４１が変換したデータ（レコードデータ６２６）を（先読みファイル２２１に）記憶することを特徴とする。
上記先読みファイル管理部１４４は、上記処理装置（ＣＰＵ９１１）を用いて、上記先読みバッファ管理部１４３が上記第二の記憶装置（磁気ディスク装置９２０）を用いて記憶したデータ（レコードデータ６２６）があるか否かを判定し、上記先読みバッファ管理部１４３が上記第二の記憶装置（磁気ディスク装置９２０）を用いて記憶したデータ（レコードデータ６２６）があると判定した場合に、上記先読みバッファ管理部１４３が確保した記憶領域（先読みバッファ２１１）に空きがあるか否かを判定し、上記先読みバッファ管理部１４３が確保した記憶領域（先読みバッファ２１１）に空きがあると判定した場合に、上記第一の記憶装置（ＲＡＭ９１４）を用いて、上記先読みバッファ管理部１４３が上記第二の記憶装置（磁気ディスク装置９２０）を用いて記憶したデータ（レコードデータ６２６）を空いている記憶領域に記憶することを特徴とする。
上記検索結果送信部１２２は、上記送信装置（通信装置９１５）を用いて、上記先読み管理部１４２が上記第一の記憶装置（ＲＡＭ９１４）を用いて記憶したデータ（レコードデータ６２６）を上記クライアント装置３００へ送信することを特徴とする。
【００８７】
この実施の形態におけるデータ検索装置１００によれば、データ変換部１４１が生成したレコードデータ６２６すべてを記憶できる十分な大きさの先読みバッファ２１１を先読み管理部１４２が確保できない場合であっても、先読み管理部１４２が、第二の記憶装置を用いて、先読みファイル２２１にレコードデータ６２６を記憶するので、クライアント装置３００からの検索結果取得要求５２０を待つことなく、データベースを閉じて、切り離すことができる。これにより、データベース管理装置１０２の資源を開放し、有効活用することができるという効果を奏する。
【００８８】
なお、この実施の形態では、第一の記憶装置の一例としてＲＡＭ９１４、第二の記憶装置の一例として磁気ディスク装置９２０を用いる構成について説明したが、第一の記憶装置と第二の記憶装置との間に、第一の記憶装置のほうが読み書き時間が短く、第二の記憶装置のほうが大容量であるという関係であれば、他の組み合わせであってもよい。例えば、第一の記憶装置がキャッシュメモリで、第二の記憶装置がＲＡＭ９１４であってもよいし、第一の記憶装置がキャッシュメモリあるいはＲＡＭ９１４で、第二の記憶装置がＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ、磁気ディスク装置９２０、光ディスク装置などであってもよい。
【００８９】
この実施の形態におけるデータ検索装置１００は、更に、管理テーブル管理部１４７を有することを特徴とする。
上記先読み管理部１４２は、上記記憶装置（ＲＡＭ９１４）を用いて、順序づけられた複数の記憶領域（先読みバッファ２１１）を確保し、上記記憶装置（ＲＡＭ９１４）を用いて、上記データ変換部１４１が変換したデータ（レコードデータ６２６）を、確保した記憶領域（先読みバッファ２１１）に記憶することを特徴とする。
上記管理テーブル管理部１４７は、上記記憶装置（ＲＡＭ９１４）を用いて、上記先読み管理部１４２がデータ（レコードデータ６２６）を記憶した記憶領域を表わすデータ（オフセット７１１、データ長７１２）を記憶することを特徴とする。
上記検索結果送信部１２２は、上記送信装置（通信装置９１５）を用いて、上記管理テーブル管理部１４７が記憶したデータ（オフセット７１１、データ長７１２）が表わす記憶領域に記憶されたデータ（レコードデータ６２６）を上記クライアント装置３００へ送信することを特徴とする。
【００９０】
この実施の形態におけるデータ検索装置１００によれば、先読み管理部１４２がデータを記憶した記憶領域を表わすデータを管理テーブル管理部１４７が管理テーブル２１２に記憶するので、検索結果送信部１２２は、管理テーブル２１２に基づいて、送信すべきデータが先読みバッファ２１１のどこに記憶されているかを知ることができる。これにより、検索結果送信部１２２は、先読みバッファ２１１を送信バッファとして利用することができるという効果を奏する。
【００９１】
なお、管理テーブル管理部１４７は、管理テーブル２１２に記憶するデータは、オフセット７１１及びデータ長７１２でなくてもよい。例えば、管理テーブル管理部１４７は、ＲＡＭ９１４を用いて、空き領域の先頭アドレスを表わすデータ（書き込みポインタ）と、次に送信すべきデータの先頭アドレスを表わすデータ（読み出しポインタ）と、各レコードデータ６２６のデータ長７１２とを記憶し、オフセット７１１を記憶しなくてもよい。
【００９２】
以上説明したデータ検索方法は、メモリ（ＲＡＭ９１４）上の先読みバッファ２１１に格納できないデータ（レコードデータ６２６）を格納するための先読み用ファイル（先読みファイル２２１）を使用する。
【００９３】
以上説明したデータ検索装置１００は、メモリ（ＲＡＭ９１４）上の先読みバッファ２１１に格納できないデータ（レコードデータ６２６）を格納するための先読み用ファイル（先読みファイル２２１）を備える。
【００９４】
実施の形態３．
実施の形態３について、図１１〜図１２を用いて説明する。
この実施の形態におけるデータ検索システム８００のシステム構成、機能ブロック構成は、実施の形態１あるいは実施の形態２で説明したものと同様なので、ここでは説明を省略する。
【００９５】
この実施の形態では、検索結果送信部１２２が検索結果６２０を送信する動作の具体例について説明する。
【００９６】
先読み管理部１４２は、ＲＡＭ９１４を用いて、先読みバッファ２１１を確保する。
先読み管理部１４２は、ＣＰＵ９１１を用いて、確保した先読みバッファ２１１の最初から所定のバイト数（以下「ヘッダ長」と呼ぶ。）の記憶領域を空けて、ヘッダ記憶領域とする。先読み管理部１４２は、ＲＡＭ９１４を用いて、ヘッダ記憶領域の次から順に、データ変換部１４１が生成したレコードデータ６２６を記憶する。
【００９７】
検索結果送信部１２２は、ＣＰＵ９１１を用いて、クライアント装置３００へ送信するデータに付加するヘッダデータ６２３を生成する。検索結果送信部１２２が生成するヘッダデータ６２３は、実施の形態１で説明したように、検索結果コード６２１とデータヘッダ６２２とを含む。また、検索結果送信部１２２が生成するヘッダデータ６２３の長さは、一定であり、ヘッダ長に等しい。
検索結果送信部１２２は、ＣＰＵ９１１を用いて、管理テーブル管理部１４７が管理テーブル２１２に記憶したオフセット７１１及びデータ長７１２を読み込む。検索結果送信部１２２は、ＣＰＵ９１１を用いて、読み込んだオフセット７１１に基づいて、クライアント装置３００に対して送信する一番前のレコードデータ６２６の開始アドレスを算出する。
検索結果送信部１２２は、ＲＡＭ９１４を用いて、算出した開始アドレスの前、ヘッダ長の記憶領域（以下「ヘッダ記憶領域７２１」と呼ぶ。）に、生成したヘッダデータ６２３を記憶する。
検索結果送信部１２２は、ＣＰＵ９１１を用いて、読み込んだデータ長７１２に基づいて、クライアント装置３００に対して送信する検索結果６２０全体の長さを算出する。
検索結果送信部１２２は、通信装置９１５を用いて、先読みバッファ２１１に記憶したヘッダデータ６２３と、ヘッダデータ６２３に続く記憶領域に記憶された１以上のレコードデータ６２６とを、クライアント装置３００に対して送信する。
【００９８】
図１１は、この実施の形態における検索結果送信部１２２が検索結果６２０を送信する検索結果送信工程Ｓ４３２の流れの一例を示すフローチャート図である。
【００９９】
ヘッダデータ生成工程Ｓ４５１において、検索結果送信部１２２は、ＣＰＵ９１１を用いて、ヘッダデータ６２３を生成する。
送信位置算出工程Ｓ４５２において、検索結果送信部１２２は、ＣＰＵ９１１を用いて、管理テーブル管理部１４７が管理テーブル２１２に記憶したオフセット７１１及びデータ長７１２を読み込む。検索結果送信部１２２は、ＣＰＵ９１１を用いて、読み込んだオフセット７１１に基づいて、クライアント装置３００に対して送信する一番前のレコードデータ６２６の開始アドレスを算出する。検索結果送信部１２２は、ＣＰＵ９１１を用いて、算出した開始アドレスから、所定のヘッダ長を差し引いて、ヘッダ記憶領域７２１の開始アドレス（以下「送信位置７３１」と呼ぶ。）を算出する。
ヘッダデータ書込工程Ｓ４５３において、検索結果送信部１２２は、ＲＡＭ９１４を用いて、先読みバッファ２１１のうち、送信位置算出工程Ｓ４５２で算出した送信位置７３１から始まるヘッダ記憶領域７２１に、ヘッダデータ生成工程Ｓ４５１で生成したヘッダデータを記憶する。
送信長さ算出工程Ｓ４５４において、検索結果送信部１２２は、ＣＰＵ９１１を用いて、送信位置算出工程Ｓ４５２で読み込んだデータ長７１２に基づいて、クライアント装置３００に対して送信するレコードデータ６２６のデータ長を合計する。検索結果送信部１２２は、合計したデータ長に、ヘッダ長を加えて、クライアント装置３００に対して送信するレコードデータ６２６全体の長さ（以下「送信長さ７３２」と呼ぶ。）を算出する。
バッファ送信工程Ｓ４５５において、検索結果送信部１２２は、通信装置９１５を用いて、先読みバッファ２１１のうち、送信位置算出工程Ｓ４５２で算出した送信位置７３１から始まり、送信長さ算出工程Ｓ４５４で算出した送信長さ分の記憶領域を、そのまま送信バッファとして使用し、送信バッファに記憶されたデータを、検索結果６２０としてクライアント装置３００に対して送信する。
【０１００】
図１２は、この実施の形態における先読みバッファ２１１などのデータ構造の一例を示す図である。
【０１０１】
先読みバッファ２１１ａ〜２１１ｆは、先読みバッファ２１１のある時点での状態を表わす。
【０１０２】
先読み管理部１４２は、ＣＰＵ９１１を用いて、先読みバッファ２１１の先頭からヘッダ長の記憶領域を空けて、ヘッダ記憶領域７２１とする。先読み管理部１４２は、ＲＡＭ９１４を用いて、ヘッダ記憶領域７２１の次から始まる記憶領域に、一番最初のレコードデータ６２６ａを記憶する。
二番目以降のレコードデータ６２６ｂ，６２６ｃについては、間を空けず、先読み管理部１４２は、ＲＡＭ９１４を用いて、前のレコードデータ６２６ａ，６２６ｂの次から始まる記憶領域に、レコードデータ６２６ｂ，６２６ｃをそれぞれ記憶する。先読みバッファ２１１ａは、この時点における先読みバッファ２１１の状態である。
この例において、先読みバッファ２１１として確保した記憶領域が小さく、先読み管理部１４２は、次のレコードデータ６２６ｄを記憶しようとした際、ＣＰＵ９１１を用いて、先読みバッファ２１１の空き領域７２２がレコードデータ６２６ｄのデータ長よりも小さいと判定したものとする。先読み管理部１４２は、磁気ディスク装置９２０を用いて、残りのレコードデータ６２６を、先読みファイル２２１に記憶する。なお、ヘッダ記憶領域７２１は、空き領域７２２には算入しない。
また、管理テーブル管理部１４７は、先読み管理部１４２が先読みバッファ２１１に記憶した三つのレコードデータ６２６ａ〜６２６ｃそれぞれに対応して、三組のオフセット７１１ａ〜７１１ｃ、データ長７１２ａ〜７１２ｃを、ＲＡＭ９１４を用いて管理テーブル２１２に記憶する。
【０１０３】
検索結果取得要求受信部１２１が検索結果取得要求５２０を受信すると、検索結果送信部１２２は、ＣＰＵ９１１を用いて、ヘッダデータ６２３ａを生成する。ヘッダデータ６２３ａは、検索結果送信部１２２がクライアント装置３００へ送信するデータの先頭に付加するデータであり、実施の形態１で説明したように、検索結果コード６２１とデータヘッダ６２２とからなる。
検索結果送信部１２２は、ＣＰＵ９１１を用いて、管理テーブル２１２に記憶されたオフセット７１１のうち、一番前のレコードデータ６２６ａに対応するオフセット７１１ａを読み出す。検索結果送信部１２２は、ＣＰＵ９１１を用いて、読み出したオフセット７１１ａからヘッダ記憶領域７２１の長さを差し引いて、送信位置７３１を算出する。
検索結果送信部１２２は、ＲＡＭ９１４を用いて、算出した送信位置７３１から始まるヘッダ記憶領域７２１に、生成したヘッダデータ６２３ａを記憶する。先読みバッファ２１１ｂは、この時点での先読みバッファ２１１の状態である。
検索結果送信部１２２は、ＣＰＵ９１１を用いて、送信長さ７３２を算出する。この例において、検索結果取得要求受信部１２１が受信した検索結果取得要求５２０に含まれる取得要求数データ５２２が表わす取得要求数は、「２」であるとする。検索結果送信部１２２は、ＣＰＵ９１１を用いて、管理テーブル２１２に記憶されたデータ長７１２のうち、一番前のレコードデータ６２６ａ及び二番目のレコードデータ６２６ｂにそれぞれ対応するデータ長７１２ａ，７１２ｂを読み込む。検索結果送信部１２２は、ＣＰＵ９１１を用いて、読み込んだデータ長７１２ａ，７１２ｂを合計し、更に、ヘッダ記憶領域７２１の長さを加えて、送信長さ７３２を算出する。
【０１０４】
検索結果送信部１２２は、通信装置９１５を用いて、算出した送信位置７３１及び送信長さ７３２に基づいて、先読みバッファ２１１を送信バッファとして使用し、送信位置７３１から始まる送信長さ７３２のデータを、検索結果６２０としてクライアント装置３００に対して送信する。
【０１０５】
検索結果送信部１２２は、ＣＰＵ９１１を用いて、送信したレコードデータ６２６ａ，６２６ｂに対応するオフセット７１１ａ，７１１ｂ及びデータ長７１２ａ，７１２ｂを、管理テーブル２１２から削除する。
先読み管理部１４２は、ＣＰＵ９１１を用いて、この時点で先読みバッファ２１１に記憶された一番前のレコードデータ６２６ｃに対応するオフセット７１１ｃを、管理テーブル２１２から読み込む。先読み管理部１４２は、ＣＰＵ９１１を用いて、読み込んだオフセット７１１ｃの前で終わるヘッダ長の記憶領域をヘッダ記憶領域７２１とする。先読み管理部１４２は、ヘッダ記憶領域７２１の前の記憶領域を、空き領域７２３の最後であるとして、空き領域７２３の最後のアドレスを算出する。
また、先読み管理部１４２は、ＣＰＵ９１１を用いて、この時点で先読みバッファ２１１に記憶された一番後ろのレコードデータ６２６ｃに対応するオフセット７１１ｃ及びデータ長７１２ｃを、管理テーブル２１２から読み込む。先読み管理部１４２は、ＣＰＵ９１１を用いて、読み込んだオフセット７１１ｃから後、データ長７１２ｃの記憶領域の次の記憶領域を、空き領域７２２の最初であるとして、空き領域７２２の最初のアドレスを算出する。
先読み管理部１４２は、ＣＰＵ９１１を用いて、算出した空き領域７２２の最初のアドレスと、先読みバッファ２１１の最後のアドレスとから、空き領域７２２の大きさを算出し、先読みバッファ２１１の最初のアドレスと、空き領域７２３の最後のアドレスとから、空き領域７２３の大きさを算出する。
【０１０６】
先読み管理部１４２は、ＣＰＵ９１１を用いて、先読みファイル２２１に記憶された次のレコードデータ６２６ｄを読み込む。先読み管理部１４２は、ＣＰＵ９１１を用いて、読み込んだレコードデータ６２６ｄのデータ長と、算出した空き領域７２２の大きさとを比較して、空き領域７２２の大きさのほうが小さいので、空き領域７２２にはレコードデータ６２６ｄを記憶できないと判定する。次に、先読み管理部１４２は、ＣＰＵ９１１を用いて、読み込んだレコードデータ６２６ｄのデータ長と、算出した空き領域７２３の大きさとを比較して、空き領域７２３の大きさのほうが大きいので、先読みバッファ２１１に空きがあると判定する。先読み管理部１４２は、ＲＡＭ９１４を用いて、先読みバッファ２１１の空き領域７２３に、読み込んだレコードデータ６２６ｄを記憶する。先読み管理部１４２は、ＣＰＵ９１１を用いて、算出した空き領域７２３の大きさから、レコードデータ６２６ｄのデータ長を差し引いて、残っている空き領域の大きさを算出する。
【０１０７】
なお、先読み管理部１４２は、空き領域７２２の後に空き領域７２３が連続しているものとして、レコードデータ６２６ｄを２つに分割し、一部を空き領域７２２に記憶し、残りを空き領域７２３に記憶してもよい。
【０１０８】
先読み管理部１４２は、ＣＰＵ９１１を用いて、先読みファイル２２１に記憶された次のレコードデータ６２６ｅを読み込む。先読み管理部１４２は、ＣＰＵ９１１を用いて、読み込んだレコードデータ６２６ｅのデータ長と、残っている空き領域の大きさとを比較して、空き領域の大きさのほうが大きいので、先読みバッファ２１１に空きがあると判定し、ＲＡＭ９１４を用いて、先読みバッファ２１１の空き領域７２３のうち、前のレコードデータ６２６ｄの次から始まる記憶領域に、読み込んだレコードデータ６２６ｅを記憶する。先読み管理部１４２は、ＣＰＵ９１１を用いて、残っている空き領域の大きさを算出する。先読みバッファ２１１ｄは、この時点での先読みバッファ２１１の状態である。
以下、同様にして、先読みバッファ２１１に空きがないと先読み管理部１４２が判定するか、先読みファイル２２１に記憶されたレコードデータ６２６が尽きるまで、先読み管理部１４２は、先読みファイル２２１からレコードデータ６２６を読み込み、先読みバッファ２１１の空き領域に記憶していく。
【０１０９】
検索結果取得要求受信部１２１が検索結果取得要求５２０を受信すると、検索結果送信部１２２は、ＣＰＵ９１１を用いて、ヘッダデータ６２３ｂを生成する。検索結果送信部１２２は、ＣＰＵ９１１を用いて、管理テーブル管理部１４７が管理テーブル２１２に記憶したオフセット７１１のうち、この時点で一番前のレコードデータ６２６ｃに対応するオフセット７１１ｃを読み出し、ＣＰＵ９１１を用いて、読み出したオフセット７１１ｃに基づいて、送信位置７３１を算出する。検索結果送信部１２２は、ＲＡＭ９１４を用いて、算出した送信位置７３１から始まるヘッダ記憶領域７２１に、生成したヘッダデータ６２３ｂを記憶する。先読みバッファ２１１ｅは、この時点での先読みバッファ２１１の状態である。
検索結果送信部１２２は、ＣＰＵ９１１を用いて、管理テーブル管理部１４７が管理テーブル２１２に記憶したデータ長７１２のうち、この時点で一番前のレコードデータ６２６ｃに対応するデータ長７１２ｃから始めて、取得要求数分のデータ長７１２ｃ，７１２ｄを読み出し、ＣＰＵ９１１を用いて、読み出したデータ長７１２ｃ，７１２ｄに基づいて、送信長さ７３２を算出する。
【０１１０】
検索結果送信部１２２は、通信装置９１５を用いて、算出した送信位置７３１及び送信長さ７３２に基づいて、先読みバッファ２１１を送信バッファとして使用し、送信位置７３１から始まる送信長さ７３２のデータを、検索結果６２０としてクライアント装置３００に対して送信する。
検索結果送信部１２２は、ＣＰＵ９１１を用いて、送信したレコードデータ６２６ｃ，６２６ｄに対応するオフセット７１１ｃ，７１１ｄ及びデータ長７１２ｃ，７１２ｄを、管理テーブル２１２から削除する。
以下、同様にして、送信により先読みバッファ２１１に空き領域が出来ると、先読み管理部１４２が先読みファイル２２１からレコードデータ６２６を読み込み、検索結果取得要求受信部１２１が検索結果取得要求５２０を受信すると、検索結果送信部１２２が先読みバッファ２１１を送信バッファとして検索結果６２０を送信することを繰り返す。
【０１１１】
このように、先読みバッファ２１１にヘッダ記憶領域７２１を空けておき、送信時に、検索結果送信部１２２が、先読みバッファ２１１に空けておいたヘッダ記憶領域７２１に、ヘッダデータ６２３を書き込むことにより、先読みバッファ２１１をそのまま送信バッファとして使用して、送信をすることができる。
【０１１２】
この実施の形態における先読み管理部１４２は、上記記憶装置（ＲＡＭ９１４）を用いて、確保した記憶領域（先読みバッファ２１１）の最初から所定の大きさ（ヘッダ長）の記憶領域をヘッダ記憶領域７２１とし、上記データ変換部１４１が変換したデータ（レコードデータ６２６）を、上記ヘッダ記憶領域７２１の次の記憶領域から順に記憶することを特徴とする。
上記検索結果送信部１２２は、上記処理装置（ＣＰＵ９１１）を用いて、上記クライアント装置３００へ送信するデータに付加するヘッダデータ６２３を生成し、上記記憶装置（ＲＡＭ９１４）を用いて、上記管理テーブル管理部１４７が記憶したデータ（オフセット７１１）が表わす記憶領域の前の所定の大きさ（ヘッダ長）の記憶領域（ヘッダ記憶領域７２１）に、生成したヘッダデータ６２３を記憶し、上記送信装置（通信装置９１５）を用いて、記憶したヘッダデータ６２３と、上記ヘッダデータ６２３を記憶した記憶領域に続く記憶領域に記憶されたデータ（レコードデータ６２６）とを上記クライアント装置３００へ送信することを特徴とする。
【０１１３】
この実施の形態におけるデータ検索装置１００によれば、検索結果送信部１２２がヘッダデータ６２３を先読みバッファ２１１に書き込み、先読みバッファ２１１をそのまま送信バッファとして使用して、検索結果６２０をクライアント装置３００に対して送信するので、検索結果取得要求受信部１２１が検索結果取得要求５２０を受信してから、検索結果送信部１２２が検索結果６２０を送信するまでにかかる時間が短くて済み、検索結果６２０の転送速度を速くすることができるという効果を奏する。
【０１１４】
この実施の形態における先読み管理部１４２は、上記記憶装置（ＲＡＭ９１４）を用いて、上記データ変換部１４１が変換したデータ（レコードデータ６２６）一つにつき一以上の連続した記憶領域を使って、上記データ変換部１４１が変換したデータ（レコードデータ６２６）を記憶することを特徴とする。
上記管理テーブル管理部１４７は、更に、上記記憶装置（ＲＡＭ９１４）を用いて、上記先読み管理部１４２がそれぞれのデータ（レコードデータ６２６）を記憶した記憶領域の領域数（データ長７１２）を表わすデータを記憶することを特徴とする。
上記検索結果送信部１２２は、上記処理装置（ＣＰＵ９１１）を用いて、上記管理テーブル管理部１４７が記憶したデータが表わす領域数（データ長７１２）に基づいて、上記クライアント装置３００へ送信するデータ全体の長さ（送信長さ７３２）を算出し、上記送信装置（通信装置９１５）を用いて、算出した長さ（送信長さ７３２）に基づいて、上記記憶領域に記憶されたデータ（検索結果６２０）を上記クライアント装置３００へ送信することを特徴とする。
【０１１５】
この実施の形態におけるデータ検索装置１００によれば、管理テーブル管理部１４７が管理テーブル２１２に記憶したデータ長７１２に基づいて、検索結果送信部１２２が送信長さ７３２を算出するので、先読みバッファ２１１をそのまま送信バッファとして使用することができるという効果を奏する。
【０１１６】
以上説明したデータ検索装置１００は、前記先読みバッファ２１１において、バッファの先頭に通信データのヘッダ（ヘッダデータ６２３）のサイズ分空きを作成し、通信データのデータ部（ボディ、レコードデータ６２６）を詰めて格納する。
【０１１７】
以上説明したデータ検索装置１００は、前記管理テーブル２１２において、先読みした１レコードを先読みバッファ２１１に格納するごとに、オフセット７１１とデータ長７１２を格納する。
【０１１８】
以上説明したデータ検索システム８００（データベースシステム）は、データベースサーバ（データ検索装置１００）とデータベースクライアント（クライアント装置３００）とを有し、データベースサーバとデータベースクライアントとは、ネットワーク（インターネット９４０）を介して接続されている。データベースサーバ（データ検索装置１００）はデータベース（データベース記憶部１３１）を有し、データベース（データベース記憶部１３１）へはデータベース管理部（データベース管理装置１０２）を経てアクセスされる。データベースクライアント（クライアント装置３００）は、複数接続されていてもよい。また、データベースサーバとデータベースクライアントは、複数の装置からなるシステムであってもよいし、一つの装置であってもよいし、一つの装置の一部分であってもよい。
データベースクライアント（クライアント装置３００）は、アプリケーション（アプリケーション部３０１）がデータベース（データベース記憶部１３１）にアクセスする際のクライアント側の機能を提供するシステムであり、データベースサーバ（データ検索装置１００）との間でネットワーク（インターネット９４０）を介して検索要求（検索実行要求５１０）などを送信し、実行結果（検索ステータス６１０）や検索結果６２０を受信する。
データベースサーバ（データ検索装置１００）は、データベースクライアント（クライアント装置３００）からの要求を受信する受信部（通信装置９１５）、結果を送信する送信部（通信装置９１５）、受信や送信の制御を行う通信制御部（ＣＰＵ９１１）、通信制御部がデータベース管理部（データベース管理装置１０２）を経て取得した検索結果を通信データ変換部（データ変換部１４１）で通信データ形式（送信形式）に変換して格納する先読みバッファ２１１、先読みバッファ２１１の１件ごとのオフセット７１１とデータ長７１２を格納する管理テーブル２１２、メモリ（ＲＡＭ９１４）上の先読みバッファ２１１に格納できないデータ（レコードデータ６２６）を格納する先読み用ファイル（先読みファイル２２１）、先読みバッファ２１１と先読み用ファイル（先読みファイル２２１）、管理テーブル２１２を管理し、通信バッファを決定し、送信部に渡すバッファ管理部（データ変換部１４１、先読み管理部１４２、管理テーブル管理部１４７、検索結果送信部１２２）とを有する。
【０１１９】
アプリケーション（アプリケーション部３０１）は、データベースを検索し、検索結果を要求件数（取得要求数）分ずつ複数回に分けて最後まで取得する。データベースサーバ（データ検索装置１００）のデータベース管理部１３２は、データベース（データベース記憶部１３１）から検索結果を１件ずつ取得するが、送信部（検索結果送信部１２２）は、複数件の検索結果（レコードデータ６２６）を送信することができる。また、データベースクライアント（クライアント装置３００）からは、検索オープンを示す問い合わせ文（検索条件）を指定した検索実行要求５１０、指定した件数分検索結果を取得する検索結果取得要求５２０が複数回、検索クローズを示す検索終了要求５９０がデータベースサーバ（データ検索装置１００）に送信される。
【０１２０】
データベースクライアント（クライアント装置３００）から検索実行要求５１０が送信された場合、データベースサーバ（データ検索装置１００）は、以下のように動作する。
受信部（検索実行要求受信部１１１）が、データベースクライアント（クライアント装置３００）からの検索実行要求５１０を受信する。通信制御部（ＣＰＵ９１１）は、バッファ管理部（先読み管理部１４２、管理テーブル管理部１４７）を呼び出し、先読みバッファ２１１、管理テーブル２１２をクリアし、先読み用ファイル（先読みファイル２２１）があれば削除する初期化処理を実行する。次に、通信制御部（ＣＰＵ９１１）は、データベース管理部１３２に対して検索実行要求する。データベース管理部１３２から終了ステータスが返るので、送信部（検索結果送信部１２２）は、検索実行結果（検索ステータス６１０）としてデータベースクライアント（クライアント装置３００）へ送信する。データベースクライアント（検索ステータス受信部３１２）は、結果をアプリケーション（アプリケーション部３０１）へ返し、ここで、クライアント側の検索実行要求処理は終了する。
【０１２１】
データベースサーバ（データ検索装置１００）は、続けて、検索結果の全件先読み処理を実行する。まず、通信制御部（ＣＰＵ９１１）が、データベース管理部（データベース管理装置１０２）に対して検索結果取得要求する。データベース管理部１３２から返された検索結果（レコード）を、通信制御部（ＣＰＵ９１１）がバッファ管理部（データ変換部１４１）に渡し、通信データ変換部（データ変換部１４１）により通信データ形式（送信形式）に変換する。
【０１２２】
通信データ（検索結果６２０）は、固定長のヘッダ（ヘッダデータ６２３）及び可変長のボディ（レコードデータ６２６）から構成される。ヘッダには、ボディ長が含まれる。ボディ（レコードデータ６２６）は、更に固定長のボディヘッダ（フィールドヘッダ６２４）と可変長のデータ（フィールドデータ６２５）の繰り返しで構成される。ボディヘッダには、データ型やデータ長が含まれる。データ変換部１４１が、データベースから読み出した１件の検索結果（レコード）から、列数分のボディヘッダとデータを作成してボディ（レコードデータ６２６）を生成し、先読み管理部１４２が、先読みバッファ２１１へ格納する。検索結果の文字コード、バイトオーダーはオペレーティングシステムに依存するため、必要であれば、データ変換部１４１がボディ（レコードデータ６２６）を作成する際に変換する。検索結果から作成したボディ（レコードデータ６２６）は、先読み管理部１４２が先読みバッファ２１１に詰めて格納し、管理テーブル管理部１４７が１件ごとのオフセット７１１とデータ長７１２を管理テーブル２１２にセットする。実際に送信する際には、通信データのヘッダ部分（ヘッダデータ６２３）が必要になるため、１件目の検索結果は、ヘッダのサイズ分空けて配置する。なお、１件目以外は直前のデータをつぶしてヘッダ（ヘッダデータ６２３）を上書きできるため、間を空ける必要はない。また、検索結果の列（フィールド）のサイズが非常に大きい場合は、予め定めたり、アプリケーション（アプリケーション部３０１）から指定されたりした長さで列のデータを切ってボディのデータとしてセットしてもよい。
【０１２３】
先読み管理部１４２は、先読みバッファ２１１に空きがあれば、先読みバッファ２１１へ、空きがなければ、先読み用ファイル（先読みファイル２２１）へレコードデータ６２６を保存する。保存先へはボディを詰めて格納する。ただし、保存先の先頭レコードであれば、通信データのヘッダ部分（ヘッダデータ６２３）が必要になるため、先読み管理部１４２は、ヘッダのサイズ分を空けて、レコードデータ６２６を格納する。管理テーブル管理部１４７は、管理テーブル２１２へ保存先のオフセット７１１とデータ長７１２とを格納する。データベース管理部１３２から検索結果の最終レコードを取得したら、通信制御部（ＣＰＵ９１１）がデータベース管理部１３２に対して検索終了要求し、データベース管理部１３２が検索クローズを実行して、処理を終了する。最終レコードまで取得していない場合は、以上の処理を繰り返す。
【０１２４】
データベースクライアント（クライアント装置３００）から検索結果取得要求５２０が送信された場合、データベースサーバ（データ検索装置１００）は、以下のように動作する。
受信部（検索結果取得要求受信部１２１）が、データベースクライアント（クライアント装置３００）からの検索結果取得要求５２０を受信する。検索実行要求５１０に対する検索結果を全件送信済みであれば、送信部（検索結果送信部１２２）が全件送信済みであることをデータベースクライアント（クライアント装置３００）へ送信して、処理を終了する。全件の送信が完了していなければ、通信制御部（ＣＰＵ９１１）はバッファ管理部（検索結果送信部１２２）を呼び出し、検索結果送信部１２２が、管理テーブル２１２から通信バッファ（先読みバッファ２１１）のオフセットを決定する。決定したオフセットが、通信バッファアドレスとなる。続けて、検索結果送信部１２２は、管理テーブル２１２から、要求件数分のデータ長７１２を加算して通信データのボディ長を求め、通信バッファ（先読みバッファ２１１）にヘッダ（ヘッダデータ６２３）を上書きする。送信部（検索結果送信部１２２）が通信バッファ（先読みバッファ２１１）の内容をデータベースクライアント（クライアント装置３００）へ送信する。データベースクライアント（検索結果受信部３２２）は、取得結果（検索結果６２０）をアプリケーション（アプリケーション部３０１）へ渡し、ここで、クライアント側の１回の検索結果取得要求処理は終了する。
【０１２５】
データベースサーバ（データ検索装置１００）は、続けて、先読みした内容の管理処理を実行する。まず、バッファ管理部（先読み管理部１４２）は、管理テーブル２１２から先読みバッファ２１１の空きをチェックする。先読みバッファ２１１にまとまった空きがない場合は処理を終了する。空きがある場合、先読み管理部１４２は、先読み用ファイル（先読みファイル２２１）の内容を先読みバッファ２１１へ保存する。先読み用ファイル（先読みファイル２２１）の内容を全て先読みバッファ２１１へ保存できた場合、先読み管理部１４２は、先読み用ファイル（先読みバッファ２１１）を削除し、処理を終了する。
なお、先読みバッファ２１１のまとまった空きを制御しやすくするために、連続したメモリ上にバッファを複数確保してもよい。その場合、検索結果は最初のバッファから順に格納し、データベースクライアント（クライアント装置３００）へ送信し空になったバッファに先読み用ファイル（先読みファイル２２１）のデータを格納する。
【０１２６】
データベースクライアント（クライアント装置３００）から検索終了要求５９０が送信された場合、データベースサーバ（データ検索装置１００）は、以下のように動作する。
受信部（検索終了要求受信部１９１）が、データベースクライアント（クライアント装置３００）からの検索終了要求５９０を受信する。通信制御部（ＣＰＵ９１１）はバッファ管理部（先読み破棄部１９３）を呼び出し、先読みバッファ２１１、管理テーブル２１２を解放し、先読み用ファイル（先読みファイル２２１）があれば削除する。送信部（了解送信部１９２）は、終了ステータスを検索終了結果（了解６９０）としてデータベースクライアント（クライアント装置３００）へ送信する。データベースクライアント（了解受信部３９２）は、結果をアプリケーション（アプリケーション部３０１）へ返し、検索処理は全て終了する。
【０１２７】
以上のように、クライアント（クライアント装置３００）からの検索要求（検索実行要求５１０）に対する全件先読み処理を、通信バッファとしても使用可能なようにデータを配置した先読みバッファ２１１を使用して行うので、可変長でサイズが非常に大きいデータ型が存在し、検索に伴いデータベースのオープンからクローズまでサーバのリソースを大量に消費するデータベースシステムにおいて、データベースサーバの検索のためのリソースを早く解放でき、ハードウェア資源を有効に活用できる。また、検索結果の送信の都度、先読みバッファ２１１から通信データ形式に変換する必要がないため、検索結果の転送性能を維持することもできる。
【０１２８】
実施の形態４．
実施の形態４について、図１３〜図１５を用いて説明する。
【０１２９】
図１３は、この実施の形態におけるデータ検索システム８００を構成する各装置の機能ブロックの構成の一例を示すブロック構成図である。
なお、実施の形態１で説明したデータ検索システム８００と共通する部分については、同一の符号を付し、ここでは説明を省略する。
【０１３０】
クライアント装置３００は、更に、明細取得要求送信部３５１、明細受信部３５２を有する。
明細取得要求送信部３５１は、通信装置９１５を用いて、データ検索装置１００に対して明細取得要求５５０を送信する。明細取得要求５５０は、データベース記憶部１３１が記憶したデータベースから１件のレコードを取得することを要求するデータであり、取得するレコードを指す指示情報を表わすデータを含む。
明細受信部３５２は、通信装置９１５を用いて、データ検索装置１００が送信した明細６５０を受信する。明細６５０は、明細取得要求に含まれる指示情報により指されたレコードのデータを含む。
【０１３１】
サーバ装置１０１は、更に、明細取得要求受信部１５１、明細送信部１５２、明細変換部１６１、明細管理部１６２を有する。
【０１３２】
明細取得要求受信部１５１は、通信装置９１５を用いて、クライアント装置３００が送信した明細取得要求５５０を受信する。明細取得要求受信部１５１は、ＣＰＵ９１１を用いて、受信した明細取得要求５５０に含まれるデータが表わす指示情報を出力する。
【０１３３】
データベース管理部１３２は、ＣＰＵ９１１を用いて、明細取得要求受信部１５１が出力した指示情報を入力する。データベース管理部１３２は、ＣＰＵ９１１を用いて、入力した指示情報に基づいて、データベース記憶部１３１が記憶したデータベースのうち、指示情報により指されたレコードを含むデータベースを開く。データベース管理部１３２は、ＣＰＵ９１１を用いて、開いたデータベースから、指示情報により指された１件のレコードを取得する。データベース管理部１３２は、ＣＰＵ９１１を用いて、取得した１件のレコードを出力する。データベース管理部１３２は、ＣＰＵ９１１を用いて、開いたデータベースを閉じる。
【０１３４】
明細変換部１６１は、ＣＰＵ９１１を用いて、データベース管理部１３２が出力した１件のレコードを入力する。明細変換部１６１は、データ変換部１４１と同様、ＣＰＵ９１１を用いて、入力した１件のレコードを、クライアント装置３００に対して送信する形式に変換する。明細変換部１６１は、ＣＰＵ９１１を用いて、変換した送信形式のデータ（以下「明細データ」と呼ぶ。）を出力する。
【０１３５】
明細管理部１６２は、ＣＰＵ９１１を用いて、明細変換部１６１が出力した明細データを入力する。明細管理部１６２は、ＲＡＭ９１４を用いて、あらかじめ、明細データを記憶する記憶領域（以下「明細バッファ２１３」と呼ぶ。）を確保しておく。明細管理部１６２は、ＲＡＭ９１４を用いて、入力した明細データを、明細バッファ２１３に記憶する。
明細送信部１５２は、通信装置９１５を用いて、明細管理部１６２が明細バッファ２１３に記憶した明細データを、クライアント装置３００に対して明細６５０として送信する。
【０１３６】
データベースの１つのレコードに含まれるデータが大きい場合、データ検索時に、検索したレコードに含まれるデータをすべて取得しようとすると、データ検索装置１００からクライアント装置３００に対して送信するデータが膨大な量になってしまうので、検索結果としては、そのレコードを代表するデータのみを取得し、取得したデータに基づいて、更に詳しいデータを知りたいレコードを絞り込んで、絞り込んだレコードについて、詳細なデータを取得するという手順を踏む場合がある。
【０１３７】
図１４は、この実施の形態におけるデータ検索システム８００を利用したログ管理システムにおいて、クライアント装置３００が表示装置９０１を用いて表示する表示画面の一例を示す図である。
【０１３８】
検索条件入力画面８５０は、検索条件を入力するための画面であり、検索条件入力欄８５１、検索ボタン８５２を有する。
利用者が、検索条件入力欄８５１に検索条件を入力し、検索ボタン８５２を押すと、データ検索システム８００は、検索を実行する。クライアント装置３００は、検索結果画面８６０を生成して、表示装置９０１を用いて表示する。
【０１３９】
検索結果画面８６０は、検索結果を表示するための画面であり、検索結果表示欄８６１、全文表示ボタン８６２、次画面ボタン８６３、条件変更ボタン８６４を有する。
検索結果表示欄８６１は、検索されたレコードの要約を一行に表示し、一度に複数のレコードの要約を表示する領域である。
利用者が、検索結果表示欄８６１に表示されたレコードのいずれかを選択し、全文表示ボタン８６２を押すと、クライアント装置３００は、全文表示画面８７０を生成して、表示装置９０１を用いて表示する。
また、利用者が、次画面ボタン８６３を押すと、クライアント装置３００は、一度に表示しきれなかった次の複数のレコードの要約を表示する検索結果画面８６０を生成し、表示装置９０１を用いて表示する。
また、利用者が、条件変更ボタン８６４を押すと、クライアント装置３００は、検索条件入力画面８５０を生成し、表示装置９０１を用いて表示する。
【０１４０】
全文表示画面８７０は、詳細な検索結果を表示するための画面であり、日時表示欄８７１、ログ表示欄８７２、戻るボタン８７３を有する。
日時表示欄８７１は、ログが記録された日付及び時刻を表示する領域である。
ログ表示欄８７２は、ログの内容を表示する領域である。
利用者が、戻るボタン８７３を押すと、クライアント装置３００は、表示装置９０１を用いて、もとの検索結果画面８６０を表示する。
【０１４１】
図１５は、この実施の形態におけるクライアント装置３００が、上述したログ管理システムを実現するログ管理処理の流れの一例を示すフローチャート図である。
【０１４２】
検索条件入力画面表示工程Ｓ４６１において、クライアント装置３００（検索条件入力画面生成部）は、ＣＰＵ９１１を用いて、検索条件入力画面８５０を生成する。クライアント装置３００（検索条件入力画面表示部）は、表示装置９０１を用いて、生成した検索条件入力画面８５０を表示する。
検索ボタン判定工程Ｓ４６２において、クライアント装置３００（検索ボタン判定部）は、ＣＰＵ９１１を用いて、検索ボタン８５２が押されたか否かを判定する。検索ボタン８５２が押されたと判定した場合、検索実行要求送信工程Ｓ４７１へ進む。検索ボタン８５２が押されていないと判定した場合、検索ボタン判定工程Ｓ４６２を繰り返す。
【０１４３】
検索実行要求送信工程Ｓ４７１において、クライアント装置３００（検索実行要求生成部）は、ＣＰＵ９１１を用いて、検索条件入力画面表示工程Ｓ４６１で表示した検索条件入力画面８５０の検索条件入力欄８５１に入力された検索条件に基づいて、検索実行要求５１０を生成する。また、クライアント装置３００が生成する検索実行要求５１０には、検索されたレコードのうち、検索結果６２０として送信するデータを指定するデータが含まれる。この例において、クライアント装置３００は、送信するデータとして、レコード番号、日時、本文（ただし先頭から所定の文字数のみ）の三つのフィールドを指定するデータを含む検索実行要求５１０を生成する。検索実行要求送信部３１１は、通信装置９１５を用いて、生成した検索実行要求５１０をデータ検索装置１００に対して送信する。
【０１４４】
検索ステータス受信工程Ｓ４７２において、検索ステータス受信部３１２は、通信装置９１５を用いて、データ検索装置１００が送信した検索ステータス６１０を受信する。
検索成否判定工程Ｓ４７３において、クライアント装置３００（検索成否判定部）は、検索ステータス受信工程Ｓ４７２で検索ステータス受信部３１２が受信した検索ステータス６１０に基づいて、検索が成功したか失敗したかを判定する。検索が成功したと判定した場合、検索結果取得要求送信工程Ｓ４８１へ進む。検索が失敗したと判定した場合、検索条件入力画面表示工程Ｓ４６１に戻る。
【０１４５】
検索結果取得要求送信工程Ｓ４８１において、クライアント装置３００（検索結果取得要求生成部）は、ＣＰＵ９１１を用いて、検索結果取得要求５２０を生成する。この例において、クライアント装置３００は、検索結果表示欄８６１に表示できる行数を取得要求数として、検索結果取得要求５２０を生成する。検索結果取得要求送信部３２１は、通信装置９１５を用いて、生成した検索結果取得要求５２０をデータ検索装置１００に対して送信する。
【０１４６】
検索結果受信工程Ｓ４８２において、検索結果受信部３２２は、通信装置９１５を用いて、データ検索装置１００が送信した検索結果６２０を受信する。
検索結果画面表示工程Ｓ４８３において、クライアント装置３００（検索結果画面生成部）は、ＣＰＵ９１１を用いて、検索結果受信工程Ｓ４８２で検索結果受信部３２２が受信した検索結果６２０に基づいて、検索結果画面８６０を生成する。クライアント装置３００（検索結果画面表示部）は、表示装置９０１を用いて、生成した検索結果画面８６０を表示する。
ボタン判定工程Ｓ４８４において、クライアント装置３００（ボタン判定部）は、ＣＰＵ９１１を用いて、全文表示ボタン８６２、次画面ボタン８６３、条件変更ボタン８６４のうち、いずれかのボタンが押されたかを判定する。全文表示ボタン８６２が押されたと判定した場合、明細取得要求送信工程Ｓ４９１へ進む。次画面ボタン８６３が押されたと判定した場合、検索結果取得要求送信工程Ｓ４８１に戻る。条件変更ボタン８６４が押されたと判定した場合、検索条件入力画面表示工程Ｓ４６１に戻る。
【０１４７】
明細取得要求送信工程Ｓ４９１において、クライアント装置３００（明細取得要求生成部）は、ＣＰＵ９１１を用いて、明細取得要求５５０を生成する。この例において、クライアント装置３００は、検索結果画面表示工程Ｓ４８３で表示した検索結果画面８６０の検索結果表示欄８６１から選択されたレコードに基づいて、選択されたレコードのレコード番号を求め、求めたレコード番号を指示情報として、明細取得要求５５０を生成する。明細取得要求送信部３５１は、通信装置９１５を用いて、生成した明細取得要求５５０をデータ検索装置１００に対して送信する。
【０１４８】
明細受信工程Ｓ４９２において、明細受信部３５２は、通信装置９１５を用いて、データ検索装置１００が送信した明細６５０を受信する。
全文表示画面表示工程Ｓ４９３において、クライアント装置３００（全文表示画面生成部）は、ＣＰＵ９１１を用いて、明細受信工程Ｓ４９２で明細受信部３５２が受信した明細６５０に基づいて、全文表示画面８７０を生成する。クライアント装置３００（全文表示画面表示部）は、表示装置９０１を用いて、生成した全文表示画面８７０を表示する。
戻るボタン判定工程Ｓ４９４において、クライアント装置３００（戻るボタン判定部）は、ＣＰＵ９１１を用いて、戻るボタン８７３が押されたか否かを判定する。戻るボタン８７３が押されたと判定した場合、検索結果画面表示工程Ｓ４８３に戻る。戻るボタン８７３が押されていないと判定した場合、戻るボタン判定工程Ｓ４９４を繰り返す。
【０１４９】
以上のようなクライアント装置３００の動作を受けて、データ検索装置１００は、以下のように動作する。
【０１５０】
検索実行要求送信工程Ｓ４７１で検索実行要求送信部３１１が検索実行要求５１０を送信すると、データ検索装置１００では、検索実行要求受信部１１１が検索実行要求５１０を受信し、データベース管理部１３２がデータベースを検索する。データベース管理部１３２は、検索されたレコードをデータベースから取得し、先読み管理部１４２が先読みバッファ２１１（あるいは先読みファイル２２１）にレコードデータ６２６を記憶する。
その後、検索結果取得要求送信工程Ｓ４８１で検索結果取得要求送信部３２１が検索結果取得要求５２０を送信すると、データ検索装置１００では、検索結果取得要求受信部１２１が検索結果取得要求５２０を受信し、検索結果送信部１２２が先読みバッファ２１１を送信バッファとして使用して、検索結果６２０を送信する。
利用者が次画面ボタン８６３を押すたびに上記の動作を繰り返し、クライアント装置３００は、検索されたすべてのレコードについての検索結果６２０を取得できる。
【０１５１】
クライアント装置３００が、検索されたすべてのレコードについての検索結果６２０を取得しないうちに、利用者が条件変更ボタン８６４を押して、検索条件入力画面８５０に戻り、新たな検索条件を入力して、検索ボタン８５２を押したとする。クライアント装置３００は、新たな検索条件を表わす検索条件データ５１２を含む検索実行要求５１０を生成し、検索実行要求送信工程Ｓ４７１で検索実行要求送信部３１１が検索実行要求５１０を送信する。
データ検索装置１００では、検索実行要求受信部１１１が新たな検索実行要求５１０を受信し、データベース管理部１３２がデータベースを検索する。データベース管理部１３２は、検索されたレコードをデータベースから取得し、先読み管理部１４２が先読みバッファ２１１（あるいは先読みファイル２２１）にレコードデータ６２６を記憶する。このとき、先読みバッファ２１１（あるいは先読みファイル２２１）に記憶されていた古い検索結果は上書きされて破棄される。
したがって、最後まで取得されなかった検索結果は、クライアント装置３００が検索終了要求５９０を送信しなくても、サーバ装置１０１に残らず、サーバ装置１０１の資源を浪費することはない。
【０１５２】
クライアント装置３００が、検索されたすべてのレコードについての検索結果６２０を取得しないうちに、利用者が全文表示ボタン８６２を押したとする。クライアント装置３００は、明細取得要求送信工程Ｓ４９１で明細取得要求送信部３５１が明細取得要求５５０を送信する。
データ検索装置１００では、明細取得要求受信部１５１が明細取得要求５５０を受信し、データベース管理部１３２がデータベースを検索して、指示情報が指すレコードを取得する。明細管理部１６２が明細データを明細バッファ２１３に記憶し、明細送信部１５２が明細バッファ２１３を送信バッファとして使用して、明細６５０を送信する。
このとき、先読みバッファ２１１（あるいは先読みファイル２２１）の内容は、以前のまま保たれている。したがって、利用者が戻るボタン８７３を押して検索結果画面８６０に戻り、続きを見るために次画面ボタン８６３を押した場合、データ検索装置１００は、前回の続きの検索結果６２０を送信する。
【０１５３】
この例において、明細取得要求５５０に含まれるデータが表わす指示情報は、「レコード番号が何某番」のレコードを指す。別の見方をすれば、指示情報は、「レコード番号が何某番」のレコードを検索する検索条件であると見ることもできる。したがって、クライアント装置３００は、明細取得要求５５０をデータ検索装置１００に対して送信するのではなく、上記検索条件を表わす検索条件データ５１２を含む検索実行要求５１０をデータ検索装置１００に対して送信しても、指定したレコードのデータを取得できる。
しかし、クライアント装置３００が明細取得要求５５０ではなく検索実行要求５１０を送信すると、データ検索装置１００は古い検索結果を破棄するので、利用者が検索結果画面８６０に戻って続きを見ようとした場合、もう一度データベースを検索する必要が生じる。
これに対して、クライアント装置３００が明細取得要求５５０を送信した場合には、明細送信部１５２が明細バッファ２１３を送信バッファとして使用して、明細６５０を送信する。このため、先読みバッファ２１１には古い検索結果が保持され、利用者が検索結果画面８６０に戻って続きを見ようとした場合でも、もう一度データベースを検索する必要がない。
【０１５４】
この実施の形態におけるデータ検索装置１００は、更に、明細取得要求受信部１５１と、明細変換部１６１と、明細管理部１６２と、明細送信部１５２とを有することを特徴とする。
上記明細取得要求受信部１５１は、上記受信装置（通信装置９１５）を用いて、上記データベースから取得するデータ（レコード）を指す指示情報を表わすデータを含む明細取得要求５５０を上記クライアント装置３００から受信することを特徴とする。
上記データベース管理部１３２は、上記処理装置（ＣＰＵ９１１）を用いて、上記明細取得要求受信部１５１が受信した明細取得要求５５０に含まれるデータが表わす指示情報に基づいて、上記データベース記憶部１３１が記憶したデータベースから上記指示情報が指すデータ（レコード）を取得することを特徴とする。
上記明細変換部１６１は、上記処理装置（ＣＰＵ９１１）を用いて、上記データベース管理部１３２が取得したデータを上記クライアント装置３００へ送信する形式に変換することを特徴とする。
上記明細管理部１６２は、上記記憶装置（ＲＡＭ９１４）を用いて、上記明細変換部１６１が変換したデータ（明細データ）を（明細バッファ２１３に）記憶することを特徴とする。
上記明細送信部１５２は、上記送信装置（通信装置９１５）を用いて、上記明細管理部１６２が（明細バッファ２１３に）記憶したデータ（明細データ）を上記クライアント装置３００へ送信することを特徴とする。
【０１５５】
この実施の形態におけるデータ検索装置１００によれば、先読み管理部１４２が確保した記憶領域（先読みバッファ２１１）とは異なる記憶領域（明細バッファ２１３）に明細管理部１６２がデータ（明細データ）を記憶し、明細管理部１６２が記憶したデータを明細送信部１５２が送信するので、先読み管理部１４２が記憶したデータ（レコードデータ６２６）は、そのまま保持される。これにより、検索結果を保持したまま、ある検索の途中に別の検索を割り込ませることができるという効果を奏する。
【０１５６】
以上説明したデータ検索方法は、検索結果を複数件一括して送信するための先読みバッファ２１１とは別に、検索結果を１件だけ送信するための明細用バッファ（明細バッファ２１３）を使用する。
【０１５７】
以上説明したデータ検索装置１００は、検索結果を複数件一括して送信するための先読みバッファ２１１とは別に、検索結果を１件だけ送信するための明細用バッファ（明細バッファ２１３）を備える。明細用バッファ（明細バッファ２１３）は、バッファ管理部（先読み管理部１４２）に管理されない。
【０１５８】
アプリケーション（アプリケーション部３０１）は、データベースを検索し、検索結果を１件取得する。例えば、行ごとにシーケンシャル番号が振られているテーブルをその番号で検索する場合などである。データベースクライアント（クライアント装置３００）からは、指定したレコードのデータ全てを取得する明細レコード取得要求（明細取得要求５５０）がデータベースサーバ（データ検索装置１００）に送信される。
【０１５９】
データベースクライアント（クライアント装置３００）が明細レコード取得要求（明細取得要求５５０）を送信した場合、データベースサーバ（データ検索装置１００）は、以下のように動作する。
受信部（明細取得要求受信部１５１）が、データベースクライアント（クライアント装置３００）からの明細レコード取得要求（明細取得要求５５０）を受信する。通信制御部（ＣＰＵ９１１）は、データベース管理部１３２に対してデータベースクライアント（クライアント装置３００）から指定されたレコードを特定する問い合わせ文を作成し検索実行要求する。データベース管理部１３２から終了ステータスが返るので、通信制御部（ＣＰＵ９１１）は、続けてデータベース管理部１３２に対して検索結果取得要求する。データベース管理部１３２から返された検索結果を通信制御部（ＣＰＵ９１１）は、通信データ変換部（明細変換部１６１）に渡す。通信データ変換部（明細変換部１６１）は通信データ形式に変換後、明細管理部１６２が明細用バッファ（明細バッファ２１３）を確保し格納する。送信部（明細送信部１５２）は明細用バッファ（明細バッファ２１３）の内容をデータベースクライアント（クライアント装置３００）へ送信し、明細用バッファ（明細バッファ２１３）を解放後、処理を終了する。
なお、データベースクライアント（クライアント装置３００）から複数件の検索結果を自由な問い合わせ文で取得するため、検索実行要求５１０、検索結果取得要求５２０、検索終了要求５９０が送信された場合のデータベースサーバ（データ検索装置１００）の動作は、実施の形態１〜実施の形態３で説明したものと同様である。
【０１６０】
例えば、アプリケーション（アプリケーション部３０１）が検索実行要求する際に、１画面分を検索結果の取得件数（取得要求数）とし、検索結果には非常にサイズが大きいデータが含まれるため、取得する検索結果の列の長さを指定する。クライアント装置３００は、検索結果取得要求５２０で取得した結果をそのまま画面に一覧表示する。ユーザ（利用者）は、一覧で全体を見たい結果があった場合にその指示を行い、アプリケーションは、明細レコード取得要求を実行する。ユーザは、次の一覧画面を表示させたい場合にその指示を行い、アプリケーションは次の検索結果取得要求を実行する。
これにより、アプリケーションで検索結果を全件取得し、データ表示を制御する必要がなく、必要な分だけ取得することができる。したがって、サイズが非常に大きいデータ型が存在するデータベースでは、検索結果のサイズも非常に大きくなるが、クライアント（クライアント装置３００）上に全てを保持しないので、通信部分の負荷が減り、クライアントのリソースを圧迫することもない。
【０１６１】
このように、明細レコード１件分のバッファを先読みバッファ２１１とは別に持つようにして、データベースに対する検索処理の一般的な一連の流れである、検索実行要求５１０、検索結果取得要求５２０、検索終了要求５９０の間に、別の検索を割り込ませられるようにしているので、アプリケーションが不必要に、非常に大きなデータ量の検索結果を保持しなくてすむ。
【図面の簡単な説明】
【０１６２】
【図１】実施の形態１におけるデータ検索システム８００の全体構成の一例を示すシステム構成図。
【図２】実施の形態１におけるデータ検索システム８００におけるデータの流れの一例を示すシーケンス図。
【図３】実施の形態１におけるサーバ装置１０１、データベース管理装置１０２、データベース記憶装置１０３、クライアント装置３００の外観の一例を示す図。
【図４】実施の形態１におけるサーバ装置１０１、データベース管理装置１０２、データベース記憶装置１０３、クライアント装置３００のハードウェア資源の一例を示す図。
【図５】実施の形態１におけるデータ検索システム８００を構成する各装置の機能ブロックの構成の一例を示すブロック構成図。
【図６】実施の形態１におけるクライアント装置３００とデータ検索装置１００との間で送受信されるデータのデータ形式の一例を示す図。
【図７】実施の形態１におけるデータ検索装置１００がデータベースを検索する検索処理、及び、データ検索装置１００が検索結果を送信する結果送信処理の流れの一例を示すフローチャート図。
【図８】実施の形態１におけるデータ変換部１４１、先読み管理部１４２、検索結果送信部１２２の動作を模式的に表わす図。
【図９】実施の形態２における先読み管理部１４２の詳細ブロックの構成及び先読みバッファ２１１などのデータ構造の一例を示す図。
【図１０】実施の形態２におけるデータ検索装置１００がデータベースを検索する検索処理、及び、データ検索装置１００が検索結果を送信する結果送信処理の流れの一例を示すフローチャート図。
【図１１】実施の形態３における検索結果送信部１２２が検索結果６２０を送信する検索結果送信工程Ｓ４３２の流れの一例を示すフローチャート図。
【図１２】実施の形態３における先読みバッファ２１１などのデータ構造の一例を示す図。
【図１３】実施の形態４におけるデータ検索システム８００を構成する各装置の機能ブロックの構成の一例を示すブロック構成図。
【図１４】実施の形態４におけるデータ検索システム８００を利用したログ管理システムにおいて、クライアント装置３００が表示装置９０１を用いて表示する表示画面の一例を示す図。
【図１５】実施の形態４におけるクライアント装置３００が、上述したログ管理システムを実現するログ管理処理の流れの一例を示すフローチャート図。
【符号の説明】
【０１６３】
１００  データ検索装置、１０１  サーバ装置、１０２  データベース管理装置、１０３  データベース記憶装置、１１１  検索実行要求受信部、１１２  検索ステータス送信部、１２１  検索結果取得要求受信部、１２２  検索結果送信部、１３１  データベース記憶部、１３２  データベース管理部、１４１  データ変換部、１４２  先読み管理部、１４３  先読みバッファ管理部、１４４  先読みファイル管理部、１４７  管理テーブル管理部、１５１  明細取得要求受信部、１５２  明細送信部、１６１  明細変換部、１６２  明細管理部、２１３  明細バッファ、１９１  検索終了要求受信部、１９２  了解送信部、１９３  先読み破棄部、２１１  先読みバッファ、２１２  管理テーブル、２２１  先読みファイル、３００  クライアント装置、３０１  アプリケーション部、３０２  インターフェース部、３１１  検索実行要求送信部、３１２  検索ステータス受信部、３２１  検索結果取得要求送信部、３２２  検索結果受信部、３５１  明細取得要求送信部、３５２  明細受信部、３９１  検索終了要求送信部、３９２  了解受信部、５０１  コード部、５０２  データ部、５１０  検索実行要求、５１１  検索実行要求コード、５１２  検索条件データ、５２０  検索結果取得要求、５２１  検索結果取得要求コード、５２２  取得要求数データ、５５０  明細取得要求、５９０  検索終了要求、５９１  検索終了要求コード、６１０  検索ステータス、６１１  検索ステータスコード、６１２  検索ステータスデータ、６２０  検索結果、６２１  検索結果コード、６２２  データヘッダ、６２３  ヘッダデータ、６２４  フィールドヘッダ、６２５  フィールドデータ、６２６  レコードデータ、６５０  明細、６９０  了解、６９１  了解コード、７１１  オフセット、７１２  データ長、７２１  ヘッダ記憶領域、７２２〜７２４  空き領域、７３１  送信位置、７３２  送信長さ、８００  データ検索システム、８５０  検索条件入力画面、８５１  検索条件入力欄、８５２  検索ボタン、８６０  検索結果画面、８６１  検索結果表示欄、８６２  全文表示ボタン、８６３  次画面ボタン、８６４  条件変更ボタン、８７０  全文表示画面、８７１  日時表示欄、８７２  ログ表示欄、８７３  戻るボタン、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９１０  システムユニット、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信装置、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、９３１  電話器、９３２  ファクシミリ機、９４０  インターネット、９４１  ゲートウェイ、９４２  ＬＡＮ。
【図１】
2009151411.tif 000003
【図２】
2009151411.tif 000004
【図３】
2009151411.tif 000005
【図４】
2009151411.tif 000006
【図５】
2009151411.tif 000007
【図６】
2009151411.tif 000008
【図７】
2009151411.tif 000009
【図８】
2009151411.tif 000010
【図９】
2009151411.tif 000011
【図１０】
2009151411.tif 000012
【図１１】
2009151411.tif 000013
【図１２】
2009151411.tif 000014
【図１３】
2009151411.tif 000015
【図１４】
2009151411.tif 000016
【図１５】
2009151411.tif 000017