(57)【要約】【課題】利用できる資源が場合によって異なる状況下で、できるだけ高速に検索を行う。【解決手段】他の処理を実行しつつ、Ｎ個（Ｎは２以上の整数）の単位データとそれら単位データにそれぞれ対応づけられたデータとを含むデータ集合の中から１個の対象データを検索して、その対象データに対応づけられたデータを取得する際に、次の処理を行う。（ａ）実行中の他の処理であって検索に使用できるハードウェア資源の一部を使用する処理に基づいて、ハードウェア資源のうち検索のために利用可能なものの量を決定する。（ｂ）その条件下で検索に要する予想時間を、利用可能なハードウェア資源の量に基づいて、複数の検索法について決定する。（ｃ）予想時間に基づいて複数の検索法の中から一つの検索法を決定する。（ｄ）決定された検索法を使用して、データ集合の中から対象データを検索して、対象データに対応づけられたデータを取得する。【選択図】図２
2008165293.tif 000002
【特許請求の範囲】
【請求項１】
他の処理を実行しつつ、Ｎ個（Ｎは２以上の整数）の単位データと前記単位データにそれぞれ対応づけられたデータとを含むデータ集合の中から１個の対象データを検索して、前記対象データに対応づけられたデータを取得するデータ検索装置であって、
実行中の前記他の処理であって前記検索に使用できるハードウェア資源の一部を使用する処理に基づいて、前記ハードウェア資源のうち前記検索のために利用可能な前記ハードウェア資源の量を決定する資源量決定部と、
前記利用可能な量の前記ハードウェア資源を利用する場合に前記検索に要すると予想される予想時間を、前記利用可能な前記ハードウェア資源の量に基づいて、複数の検索法について決定する予想時間決定部と、
前記予想時間に基づいて前記複数の検索法の中から一つの検索法を決定する検索法決定部と、
前記対象データに対応づけられたデータを取得するために、前記決定された検索法を使用して、前記データ集合の中から前記対象データを検索する検索部と、を含むデータ検索装置。
【請求項２】
請求項１記載のデータ検索装置であって、
前記ハードウェア資源は、前記検索および前記他の処理に使用することができるメモリである、データ検索装置。
【請求項３】
請求項２記載のデータ検索装置であって、
前記複数の検索法は、線形検索法を含み、
前記予想時間決定部は、前記線形検索法についての予想時間ＴＬを、
ＴＬ＝（Ｎ／２）×ｕＬ
で計算し、
ｕＬは、前記単位データが前記対象データであるか否かを決定するのに要すると予想される時間である、データ検索装置。
【請求項４】
請求項３記載の方法であって、
前記データ集合は、一定の方法で前記各単位データからそれぞれ得られる値の大きさの順で前記複数の単位データおよび前記対応づけられたデータの組合せを保持しており、
前記複数の検索法は、
前記利用可能な前記ハードウェア資源を利用して、前記値の大きさに基づいて二分検索法を実行して、前記データ集合に含まれる前記Ｎ個の単位データの中から、前記対象データを特定するための線形検索法を開始する位置を決定し、前記決定された位置に基づいて前記線形検索法を実行する合成検索法を含み、
前記予想時間決定部は、前記合成検索法についての予想時間ＴＢを、
【数１】
2008165293.tif 000008
で計算し、
Ｒは、二分検索において前記対象データとの間で前記値の比較を行う比較対象の単位データの数であって、前記利用可能な量の前記ハードウェア資源を利用して位置情報を保持することができる比較対象の単位データの数であり、
ｕＢは、前記比較対象の単位データと前記対象データとの間で前記値の大小関係を決定するのに要すると予想される時間であり、
ｕＬは、前記単位データが前記対象データであるか否かを決定するのに要すると予想される時間である、データ検索装置。
【請求項５】
請求項３記載のデータ検索装置であって、
前記データ集合は、一定の方法で前記各単位データからそれぞれ得られる値の大きさの順で前記複数の単位データおよび前記対応づけられたデータの組合せを保持しており、
前記複数の検索法は、
前記単位データに所定のハッシュ関数を適用して得られるハッシュ値に対応する場所に、前記データ集合における前記各単位データの格納位置を表すデータを格納することにより、ハッシュテーブルを作成し、
前記ハッシュテーブル中の場所であって、前記対象データに前記ハッシュ関数を適用して得られるハッシュ値に対応する場所に格納されている前記格納位置を表すデータを取得する、ハッシュ検索法を含み、
前記予想時間決定部は、
前記ハッシュテーブルの作成を行い、
前記ハッシュ検索法についての予想時間ＴＨを、
ＴＨ＝Ｈｃ＋｛（Ｎ／２）×ｕＬ×（ｋ／Ｎ）｝
で計算し、
前記検索部は、前記ハッシュ値に対応する場所に格納されている前記格納位置を表すデータの取得を実行し、
Ｈｃは、前記対象データに前記ハッシュ関数を適用して前記ハッシュ値を得るのに要すると予想される時間であり、
ｋは、前記ハッシュテーブルの生成において生じた衝突の回数であり、
ｕＬは、前記単位データが前記対象データであるか否かを決定するのに要すると予想される時間である、データ検索装置。
【請求項６】
請求項１ないし４のいずれかに記載のデータ検索装置を備えるデバイス管理装置であって、前記デバイス管理装置に接続されたデバイスの状態を表す状態データを取得して、ネットワークを介してクライアントコンピュータに送信するデバイス管理装置であり、
前記デバイスと前記デバイス管理装置との少なくとも一方は、参照データベースを有しており、
前記参照データベースは、
前記デバイスの状態を表す複数の状態データと、他のデータベースにおいて前記状態データが格納されている場所を表すアクセス経路データと、の少なくとも一方を、それぞれ項目データと対応づけて格納しているデータベースであって、
一定の方法で前記各項目データから得られる値の大きさの順で、前記項目データならびに前記対応づけられた前記状態データおよび前記アクセス経路データの組合せを格納しているデータベースであり、
前記予想時間決定部は、前記クライアントコンピュータからの前記状態データの要求に応じて、前記参照データベースからの１個の項目データの検索について、前記予想時間を計算し、
前記検索部は、前記１個の項目データに対応づけられた前記状態データと前記アクセス経路データの少なくとも一方を取得するために、前記決定された検索法を使用して、前記参照データベースの中から前記対象データとしての１個の項目データを検索し、
前記デバイス管理装置は、さらに、
前記検索部が前記アクセス経路データを取得した場合に、前記取得した前記アクセス経路データに基づいて前記他のデータベースから前記状態データを取得する状態データ取得部と、
前記検索部と前記状態データ取得部との少なくとも一方が取得した前記状態データを前記クライアントコンピュータに送信する状態データ送信部と、を備えるデバイス管理装置。
【請求項７】
請求項６記載のデバイス管理装置であって、
前記参照データベースは、所定の条件が満たされた場合に更新され、
前記検索部は、前記決定された検索法による前記データ集合の検索によって、前記クライアントコンピュータからの要求に対応する前記状態データおよび前記状態データの前記アクセス経路データがいずれも得られなかった場合には、前記値の大きさの順に、前記参照データベースの先頭の項目データから線形検索法を実行する、デバイス管理装置。
【請求項８】
他の処理を実行しつつ、Ｎ個（Ｎは２以上の整数）の単位データと前記単位データにそれぞれ対応づけられたデータとを含むデータ集合の中から１個の対象データを検索して、前記対象データに対応づけられたデータを取得する方法であって、
（ａ）実行中の前記他の処理であって前記検索に使用できるハードウェア資源の一部を使用する処理に基づいて、前記ハードウェア資源のうち前記検索のために利用可能な前記ハードウェア資源の量を決定する工程と、
（ｂ）前記利用可能な量の前記ハードウェア資源を利用する場合に前記検索に要すると予想される予想時間を、前記利用可能な前記ハードウェア資源の量に基づいて、複数の検索法について決定する工程と、
（ｃ）前記予想時間に基づいて前記複数の検索法の中から一つの検索法を決定する工程と、
（ｄ）前記対象データに対応づけられたデータを取得するために、前記決定された検索法を使用して、前記データ集合の中から前記対象データを検索する工程と、を含む方法。
【請求項９】
他の処理を実行しつつ、Ｎ個（Ｎは２以上の整数）の単位データと前記単位データにそれぞれ対応づけられたデータとを含むデータ集合の中から１個の対象データを検索して、前記対象データに対応づけられたデータを取得する処理をコンピュータに実行させるコンピュータプログラムであって、
実行中の前記他の処理であって前記検索に使用できるハードウェア資源の一部を使用する処理に基づいて、前記ハードウェア資源のうち前記検索のために利用可能な前記ハードウェア資源の量を決定する機能と、
前記利用可能な量の前記ハードウェア資源を利用する場合に前記検索に要すると予想される予想時間を、前記利用可能な前記ハードウェア資源の量に基づいて、複数の検索法について決定する機能と、
前記予想時間に基づいて前記複数の検索法の中から一つの検索法を決定する機能と、
前記対象データに対応づけられたデータを取得するために、前記決定された検索法を使用して、前記データ集合の中から前記対象データを検索する機能と、を
前記コンピュータに実行させるコンピュータプログラム。
【請求項１０】
請求項９記載のコンピュータプログラムであって、
前記データ集合は、一定の方法で前記各単位データからそれぞれ得られる値の大きさの順で前記複数の単位データおよび前記対応づけられたデータの組合せを保持しており、
前記複数の検索法は、
前記利用可能な前記ハードウェア資源を利用して、前記値の大きさに基づいて二分検索法を実行して、前記データ集合に含まれるＮ個の単位データの中から、前記対象データを特定するための線形検索法を開始する位置を決定し、
前記決定された位置に基づいて前記線形検索法を実行する合成検索法を含み、
前記予想時間を決定する機能は、前記合成検索法についての予想時間ＴＢを、
【数２】
2008165293.tif 000009
で計算する機能を含み、
Ｒは、二分検索において前記対象データとの間で前記値の比較を行う比較対象の単位データの数であって、前記利用可能な量の前記ハードウェア資源を利用して位置情報を保持することができる比較対象の単位データの数であり、
ｕＢは、前記比較対象の単位データと前記対象データとの間で前記値の大小関係を決定するのに要すると予想される時間であり、
ｕＬは、前記単位データが前記対象データであるか否かを決定するのに要すると予想される時間である、コンピュータプログラム。
【請求項１１】
請求項９記載のコンピュータプログラムであって、
前記データ集合は、一定の方法で前記各単位データからそれぞれ得られる値の大きさの順で前記複数の単位データおよび前記対応づけられたデータの組合せを保持しており、
前記複数の検索法は、
前記単位データに所定のハッシュ関数を適用して得られるハッシュ値に対応する場所に、前記データ集合における前記各単位データの格納位置を表すデータを格納することにより、ハッシュテーブルを作成し、
前記ハッシュテーブル中の場所であって、前記対象データに前記ハッシュ関数を適用して得られるハッシュ値に対応する場所に格納されている前記格納位置を表すデータを取得するハッシュ検索法を含み、
前記予想時間を決定する機能は、
前記ハッシュテーブルを作成する機能と、
前記ハッシュ検索法についての予想時間ＴＨを、
ＴＨ＝Ｈｃ＋｛（Ｎ／２）×ｕＬ×（ｋ／Ｎ）｝
で計算する機能と、を含み、
前記対象データに対応づけられた前記データを取得する機能は、前記ハッシュ値に対応する場所に格納されている前記ｇ格納位置を表すデータを、取得する機能を含み、
Ｈｃは、前記対象データに前記ハッシュ関数を適用して前記ハッシュ値を得るのに要すると予想される時間であり、
ｋは、前記ハッシュテーブルの生成において生じた衝突の回数であり、
ｕＬは、前記単位データが前記対象データであるか否かを決定するのに要すると予想される時間である、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、利用できる資源が場合によって異なる状況下で行う検索に関する。
【背景技術】
【０００２】
従来より、ネットワークに接続されたプリンタサーバに対して、同じくネットワークに接続されたクライアントコンピュータから印刷要求を行って、印刷を行う技術が存在する。
【０００３】
【特許文献１】特開２００１−２８２６５７号公報
【０００４】
また、そのような環境下において、定期的に、または所定の条件が満たされた場合に、クライアントコンピュータが、プリンタサーバからプリンタのステータス情報を取得することがある。たとえば、クライアントコンピュータが、あるプリンタが保持している「処理すべき印刷ジョブ」の情報を取得する場合などである。そのような場合には、プリンタサーバは、プリンタのステータス情報に関するテーブルを検索して、必要な情報を取得し、クライアントコンピュータにその値を送信する。
【０００５】
クライアントコンピュータによるステータス情報の要求から、プリンタサーバによるステータス情報の返信までの時間は、できるだけ短いことが好ましい。そのためには、ステータス情報に関するテーブルの検索は、できるだけ高速に行うことが好ましい。
【０００６】
一方、プリンタサーバは、あるクライアントコンピュータからステータス情報の送信を要求されていると同時に、他のクライアントコンピュータから印刷処理を要求されている場合がある。印刷処理にはメモリが大量に使用される。このため、並行して印刷処理を行っている場合には、ステータス情報に関するテーブルの検索は、できるだけ少ない量のメモリを使用して行うことが好ましい。
【０００７】
しかし、従来の技術においては、上記の問題は考慮されておらず、検索方法は一つに固定されていた。このような問題は、プリンタサーバに限らず、メモリなどの利用できる資源の量が場合によって異なる状況下で検索を行う場合に、同様に存在する。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、利用できる資源が場合によって異なる状況下で、できるだけ高速に検索を行うことを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を少なくとも一部を達成するために、本発明は、他の処理を実行しつつ、Ｎ個（Ｎは２以上の整数）の単位データとそれら単位データにそれぞれ対応づけられたデータとを含むデータ集合の中から１個の対象データを検索して、その対象データに対応づけられたデータを取得する際に、以下の処理を行う。すなわち、（ａ）実行中の他の処理であって検索に使用できるハードウェア資源の一部を使用する処理に基づいて、ハードウェア資源のうち検索のために利用可能なハードウェア資源の量を決定する。（ｂ）利用可能な量のハードウェア資源を利用する場合に検索に要すると予想される予想時間を、利用可能なハードウェア資源の量に基づいて、複数の検索法について決定する。そして、（ｃ）予想時間に基づいて複数の検索法の中から一つの検索法を決定する。その後、（ｄ）対象データに対応づけられたデータを取得するために、決定された検索法を使用して、データ集合の中から対象データを検索する。
【００１０】
このような態様とすれば、利用可能な量のハードウェア資源に応じて、他の検索法に比べて短時間で検索を行うことができる可能性が高い検索法を選択して、検索を行うことができる。その結果、利用できる資源が場合によって異なる状況下で、高速に検索を行うことができる。
【００１１】
なお、ハードウェア資源は、検索および他の処理に使用することができるメモリとすることができる。
【００１２】
また、一態様において、複数の検索法は、線形検索法を含む。線形検索法についての予想時間ＴＬは、以下の式に基づいて計算することが好ましい。
【００１３】
ＴＬ＝（Ｎ／２）×ｕＬ
【００１４】
ここで、ｕＬは、単位データが対象データであるか否かを決定するのに要すると予想される時間である。このような態様とすれば、線形検索法の予想時間を正確に計算することができる。
【００１５】
また、データ集合が、一定の方法で各単位データからそれぞれ得られる値の大きさの順で複数の単位データおよびそれらに対応づけられたデータの組合せを保持している場合には、複数の検索法は、二分検索法と線形検索法とを行う合成検索法を含むことが好ましい。この合成検索法においては、まず、（ｅ）利用可能なハードウェア資源を利用して、上記の一定の方法で各単位データから得られる値の大きさに基づいて二分検索法を実行して、データ集合に含まれるＮ個の単位データの中から、対象データを特定するための線形検索法を開始する位置を決定する。そして、（ｆ）決定された位置について、線形検索法を実行する。
【００１６】
このような合成検索法についての予想時間ＴＢは、以下の式に従って計算することが好ましい。
【００１７】
【数３】
2008165293.tif 000003
【００１８】
なお、Ｒは、二分検索において対象データとの間で値の比較を行う比較対象の単位データの数であって、利用可能な量のハードウェア資源を利用して位置情報を保持することができる比較対象の単位データの数である。ｕＢは、比較対象の単位データと対象データとの間で値の大小関係を決定するのに要すると予想される時間である。ｕＬは、単位データが対象データであるか否かを決定するのに要すると予想される時間である。このような態様とすれば、上記の合成検索法の予想時間を正確に計算することができる。
【００１９】
複数の検索法は、ハッシュ検索法を含むことが好ましい。ハッシュ検索法においては、まず、（ｇ）単位データに所定のハッシュ関数を適用して得られるハッシュ値に対応する場所に、データ集合における各単位データの格納場所を表すデータを格納することにより、ハッシュテーブルを作成する。なお、ハッシュテーブルは、メモリ内に格納することができる。そして、（ｈ）ハッシュテーブル中のある場所であって、対象データにハッシュ関数を適用して得られるハッシュ値に対応する場所に格納されている上記の格納位置を表すデータを、取得する。
【００２０】
そして、予想時間を決定する際には、ハッシュテーブルの生成と、以下の式によるハッシュ検索法についての予想時間ＴＨの計算と、を行うことが好ましい。また、対象データに対応づけられたデータを取得する際には、ハッシュ値に対応する場所に格納されている上記の格納位置を表すデータを取得することが好ましい。
【００２１】
ＴＨ＝Ｈｃ＋｛（Ｎ／２）×ｕＬ×（ｋ／Ｎ）｝
【００２２】
なお、Ｈｃは、対象データにハッシュ関数を適用してハッシュ値を得るのに要すると予想される時間である。ｋは、ハッシュテーブルの生成の際に生じた衝突の回数である。ｕＬは、単位データが対象データであるか否かを決定するのに要すると予想される時間である。このような態様とすれば、ハッシュ検索法の予想時間を正確に計算することができる。
【００２３】
また、本発明の一態様として、所定のネットワーク環境下で、デバイスの状態を表す状態データを取得して、ネットワークを介してクライアントコンピュータに送信する際に、以下のような処理を行うデバイス管理装置も好ましい。この環境においては、デバイスが接続されているデバイス管理装置と、そのデバイスを使用するクライアントコンピュータとが、ネットワークで接続されている。
【００２４】
デバイスとデバイス管理装置との少なくとも一方は、参照データベースを有している。この参照データベースは、デバイスの状態を表す複数の状態データと、他のデータベースにおいて状態データが格納されている場所を表すアクセス経路データと、の少なくとも一方を、それぞれ項目データと対応づけて格納しているデータベースである。そして、参照データベースは、一定の方法で各項目データから得られる値の大きさの順で、項目データならびに対応づけられた状態データおよびアクセス経路データの組合せを格納しているデータベースである。
【００２５】
予想時間決定部は、クライアントコンピュータからの状態データの要求に応じて、参照データベースからの１個の項目データの検索について、予想時間を計算する。検索部は、その１個の項目データに対応づけられた状態データとアクセス経路データの少なくとも一方を取得するために、上記の決定された検索法を使用して、参照データベースの中から対象データとしての１個の項目データを検索する。
【００２６】
デバイス管理装置は、さらに、（１）検索部がアクセス経路データを取得した場合に、取得したアクセス経路データに基づいて他のデータベースから状態データを取得する状態データ取得部と、（２）検索部と状態データ取得部との少なくとも一方が取得した状態データをクライアントコンピュータに送信する状態データ送信部と、を備える。このような態様とすれば、短時間で参照データベースを検索して状態データを取得し、クライアントコンピュータに送信することができる。
【００２７】
参照データベースが、所定の条件が満たされた場合に更新される場合には、以下のような処理を行うことが好ましい。なお、所定の条件とは、たとえば、デバイスの状態が変化した場合、あらかじめ定められた時刻が到来した場合、前回の更新からあらかじめ定められた時間が経過した場合、それらの条件の２個以上が満たされた場合、などである。
【００２８】
上記の態様においては、検索部は、決定された検索法によるデータ集合の検索によって、クライアントコンピュータからの要求に対応する状態データおよび状態データのアクセス経路データがいずれも得られなかった場合には、値の大きさの順に、参照データベースの先頭の項目データから線形検索法を実行する。このような態様とすれば、参照データベースが更新され、目的とする状態データやアクセス経路情報の格納位置が変化した場合にも、参照データベースから目的とする状態データやアクセス経路情報を取得することができる。
【００２９】
なお、本発明は、種々の形態で実現することが可能であり、例えば、データ検索方法およびデータ検索装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
【発明を実施するための最良の形態】
【００３０】
Ａ．実施例：
Ａ１．システムの概略構成
図１は、ネットワークシステムの概略構成を示す図である。ネットワークＮＴには、クライアントコンピュータ１００ａ，１００ｂ，１００ｃと、プリンタサーバ２００とが接続されている。そして、プリンタサーバ２００には、プリンタ３００が接続されている。なお、図１では、３台のクライアントコンピュータと１台のプリンタサーバを示したが、ネットワークＮＴには、任意の数のクライアントコンピュータおよびプリンタサーバを接続することができる。クライアントコンピュータ１００ａ，１００ｂ，１００ｃを区別せずにクライアントコンピュータに言及する場合には、クライアントコンピュータ１００と表記する。
【００３１】
プリンタ３００は、クライアントコンピュータ１００からの指示に基づいて、印刷用紙に印刷を行うことができる。また、プリンタ３００は、電話回線ＰＬを通じて外部にＦＡＸを送信することができる。さらに、プリンタ３００は、電話回線ＰＬを通じて外部からＦＡＸを受信して、受信した信号に基づいて画像データを生成し、クライアントコンピュータ１００に送信することができる。プリンタ３００は、印刷機能以外にも上記の各機能を奏するが、本明細書では、「プリンタ」と呼ぶ。
【００３２】
プリンタサーバ２００は、プリンタ３００を管理するサーバである。具体的には、プリンタサーバ２００は、クライアントコンピュータ１００ａ，１００ｂ，１００ｃからの要求に従って、プリンタ３００を制御して印刷やＦＡＸの送信などの特定の機能を発揮させる。また、プリンタサーバ２００は、クライアントコンピュータ１００ａ，１００ｂ，１００ｃからの要求に従って、プリンタ３００のステータス情報をクライアントコンピュータ１００ａ，１００ｂ，１００ｃに送信する。
【００３３】
Ａ２．データベース：
プリンタ３００は、複数のデバイス情報データベースＤＩＤと、参照データベースＲＤと、それらを管理するデータベース管理部３１０と、を有している。図１においては、デバイス情報データベースを「デバイス情報ＤＢ」と表記し、参照データベースを「参照ＤＢ」と表記する。そして、データベース管理部を「ＤＢ管理部」と表記する。
【００３４】
複数のデバイス情報データベースＤＩＤは、（ａ）印刷用紙の残量やプリンタ３００において発生しているトラブルに関する情報である「プリンタ情報」、（ｂ）どのクライアントコンピュータがいつ、プリンタ３００のどの機能を使用したかを表す「ログ情報」、（ｃ）プリンタ３００を使用する権利があるのはどのクライアントコンピュータであるかを表す「ユーザ情報」、（ｄ）プリンタ３００の各機能に関してどのような設定がなされているかを表す「設定情報」等を格納している。図１では、それらの各情報を表す具体的な「項目」として「ＡＣＣ」、「ＡＴＣ」、「ＣＵＳ」等を例示している。また、各情報の内容は数値や文字列で表される。
【００３５】
複数のデバイス情報データベースＤＩＤには、ＭＩＢ（Management Information Base）と呼ばれる統一規格に沿ったものと、プリンタメーカが独自に設定した方式によるものとがある。
【００３６】
参照データベースＲＤは、複数のデバイス情報データベースＤＩＤが有する各項目、およびそれらの項目の値を格納している。なお、参照データベースＲＤは、項目の値に代えて、デバイス情報データベースＤＩＤ中でその項目の値が格納されている場所を示す「アクセス経路情報」を格納していることもある。
【００３７】
本実施例では、複数種類の形式のデータベースを含む複数のデバイス情報データベースＤＩＤが有する項目の中の、クライアントコンピュータ１００から値の送信を要求される可能性のある項目のデータを、一つの参照データベースＲＤにまとめて格納している。このため、プリンタサーバ２００およびプリンタ３００は、クライアントコンピュータ１００からのステータス情報の要求に対して、簡易な仕組みを使用して迅速に応答することができる。
【００３８】
参照データベースＲＤが保持する各項目はアルファベットで表される。図１では、各情報の「項目」として「ＡＣＣ」、「ＡＴＣ」、「ＣＵＳ」等を例示している。しかし、実際には、各項目はより多くの文字データで表される。また、項目名のデータと、項目名に対応づけられた値またはアクセス経路情報のデータは、一連の情報として格納される。たとえば、項目名のデータと、項目名に対応づけられた値またはアクセス経路情報のデータは、「ACCESS_CTRL_CURRENT_IP_ALLOW id="access=DB1;subject=ACCESS_CTRL_CURRENT;item=ACCESS_CTRL_IP_ALLOW;index=0;type=BOOL" /」のように表される。このうち、前半の「ACCESS_CTRL_CURRENT_IP_ALLOW」が項目名であり、それに続く「id="access=DB1;subject=ACCESS_CTRL_CURRENT;item=ACCESS_CTRL_IP_ALLOW;index=0;」がアクセス経路情報である。
【００３９】
各項目および各項目に対応づけられた値（またはアクセス経路情報）は、項目のアルファベットの順に参照データベースＲＤ内に保持されている。すなわち、参照データベースＲＤに格納された各項目の値は、参照データベースＲＤ内のデータの先頭からのオフセット値によって、その格納場所を特定することができる。そのオフセット値は、項目名のアルファベット順の順位が遅いほど大きくなる。たとえば、項目ＡＣＣのデータ（項目名と値）の格納位置を表すオフセット値は、００（１６進数）である。項目ＡＴＣのデータの格納位置を表すオフセット値は、０Ｆである。項目ＣＵＳのデータの格納位置を表すオフセット値は、１０である。
【００４０】
データベース管理部３１０は、デバイス情報データベースＤＩＤおよび参照データベースＲＤが格納している各項目の値を更新する。また、プリンタサーバ２００またはクライアントコンピュータ１００からの要求に応じて、デバイス情報データベースＤＩＤおよび参照データベースＲＤが格納している項目の値を、プリンタサーバ２００またはクライアントコンピュータ１００に送信する。
【００４１】
デバイス情報データベースＤＩＤ内の項目の値を更新し、それに応じて、参照データベースＲＤが格納している各項目の値を更新する場合には、データベース管理部３１０は、以下のような処理を行う。すなわち、デバイス情報データベースＤＩＤ内の項目Ａの値を更新した場合、データベース管理部３１０は、参照データベースＲＤ内において対応する項目Ａのデータが格納されていた部分は、無意味な値、たとえば、スペースなどで上書きする。そして、参照データベースＲＤの末尾に、新たに項目名Ａとその値のデータを付加する。このような処理を行うことで、参照データベースＲＤにおいては、更新後の新たな値は、順に参照データベースＲＤの末尾に付加される。言い換えれば、各項目の値が変化した場合には、その項目は、参照データベースＲＤ内のそれまでの格納位置よりも後ろの位置に新たな値とともに格納される。
【００４２】
また、デバイス情報データベースＤＩＤ内の項目の値を削除した場合には、データベース管理部３１０は、参照データベースＲＤ内の対応する項目のデータ（項目およびその値またはアクセス経路）を削除する。デバイス情報データベースＤＩＤが、たとえば、「プリンタ３００が処理すべき印刷ジョブ」の項目を有していた場合、ある印刷ジョブが終了すると、その印刷ジョブの項目は、デバイス情報データベースＤＩＤから削除される。そして、それに応じて参照データベースＲＤ内の「プリンタ３００が処理すべき印刷ジョブ」の項目のデータも削除される。そして、削除された項目よりも後ろの位置に格納されていた各項目のデータは、参照データベースＲＤ内においてソートされ、それまでの格納位置より前の位置に格納される。
【００４３】
プリンタサーバ２００は、内部保持テーブルＩＴを保持しているメモリ２２０と、内部保持テーブルＩＴを管理するテーブル管理部２１０とを有している。なお、メモリ２２０には、内部保持テーブルＩＴが格納されるほか、プリンタ３００の印刷の処理やＦＡＸの送信処理、さらには、後述する内部保持テーブルＩＴ、参照データベースＲＤ等の内部に含まれるデータの検索の処理にも使用される。
【００４４】
内部保持テーブルＩＴは、参照データベースＲＤが保持している項目のうちの一部の項目と、その項目の値の参照データベースＲＤ内におけるオフセット値を格納している。オフセット値は、参照データベースＲＤ内において、それらの項目に対応づけられている値（またはアクセス経路情報）が格納されている場所を表すオフセット値である（図１の右下参照）。たとえば、項目「ＡＣＣ」のオフセット値は、００である。項目「ＣＵＳ」のオフセット値は、１０である（図１左側中段参照）。内部保持テーブルＩＴは、後に説明する検索法の決定において、二分検索法と線形検索法を用いる合成検索法が選択された場合に、生成される。
【００４５】
内部保持テーブルＩＴが格納している項目は、クライアントコンピュータ１００がプリンタの状態を確認するのに必要な情報に関する項目である。各項目および各項目に対応づけられたオフセット値は、項目のアルファベットの順で内部保持テーブルＩＴ内に保持されている。項目のアルファベットの順とは、具体的には、アルファベットのコードの大きさの順である。
【００４６】
Ａ３．参照データベースＲＤにおける項目の検索：
図２は、プリンタサーバ２００が、クライアントコンピュータ１００からの要求を受けて、プリンタ３００のステータス情報に関する特定の項目の値（ステータス情報）を送信する手順を示すフローチャートである。ステップＳ１０では、プリンタサーバ２００は、クライアントコンピュータ１００ａ〜１００ｃのうち、たとえば、クライアントコンピュータ１００ａから、プリンタ３００のステータス情報に関する特定の項目の送信の要求を受ける。
【００４７】
ステップＳ２０では、プリンタサーバ２００のテーブル管理部２１０は、ステータス情報を獲得する際に参照データベースＲＤ内の検索に利用できるハードウェア資源の量を計算する。具体的には、参照データベースＲＤ内の検索に利用できるメモリ２２０の量を計算する。プリンタサーバ２００は、たとえば、クライアントコンピュータ１００ｂから印刷要求を受けている場合には、その印刷の処理のためにメモリ２２０の一部を使用する。よって、そのような場合には、印刷の処理に必要なメモリの量を考慮して、検索に利用できるメモリの量が計算される。このステップＳ２０の処理は、テーブル管理部２１０の機能部としての資源量決定部２１１が行う（図１参照）。
【００４８】
ステップＳ３０では、テーブル管理部２１０は、参照データベースＲＤ内の検索の際に使用できる複数の検索法について、検索に要すると考えられる時間（以下「予想検索時間」という）を計算する。予想検索時間は、ステップＳ２０で決定したメモリ量と、参照データベースＲＤが保持している項目の数と、に基づいて計算される。参照データベースＲＤ内おける検索の際に使用できる検索法としては、（ａ）線形検索法、（ｂ）二分検索法と線形検索法を用いる合成検索法、（ｃ）ハッシュ検索法、がある。各検索法と、各検索法の予想検索時間の計算については、後に説明する。このステップＳ３０の処理は、テーブル管理部２１０の機能部としての予想時間決定部２１２が行う（図１参照）。
【００４９】
ステップＳ４０では、テーブル管理部２１０は、予想検索時間が最も短い検索法を、使用する検索法として決定する。このステップＳ４０の処理は、テーブル管理部２１０の機能部としての検索法決定部２１３が行う（図１参照）。
【００５０】
ステップＳ５０では、決定された検索法を用いて参照データベースＲＤを検索する際に、参照データベースＲＤ内において検索を開始する位置（以下、「検索開始位置」という）を決定する。検索開始位置の決定方法については、後に説明する。このステップＳ５０の処理は、テーブル管理部２１０の機能部としての検索部２１４が行う。
【００５１】
ステップＳ６０では、テーブル管理部２１０は、参照データベースＲＤ内のその検索開始位置から順に、参照データベースＲＤ内の項目について、クライアントコンピュータ１００からの要求を受けた項目と一致するか否かを検討する。そして、クライアントコンピュータ１００からの要求を受けた項目と一致する項目を特定し、その項目の値、またはアクセス経路を得る（図１参照）。なお、ステップＳ６０の処理の詳細については、後にさらに説明する。このステップＳ６０の処理は、テーブル管理部２１０の機能部としての検索部２１４が行う。
【００５２】
ステップＳ７０では、ステップＳ６０で参照データベースＲＤから項目の値が得られたか、アクセス経路が得られたかが判定される。項目の値が得られた場合には、プリンタサーバ２００は、ステップＳ９０において、その値をクライアントコンピュータ１００ａに送信する。このステップＳ９０の処理は、テーブル管理部２１０の機能部としての状態データ送信部２１７が行う（図１参照）。
【００５３】
ステップＳ６０で参照データベースＲＤからアクセス経路が得られた場合には、処理はステップＳ８０に進む。ステップＳ８０では、プリンタサーバ２００は、そのアクセス経路の情報に基づいてデバイス情報データベースＤＩＤからその項目の値を得る。このステップＳ８０の処理は、テーブル管理部２１０の機能部としての状態データ取得部２１６が行う（図１参照）。その後、ステップＳ９０で、得られた値をクライアントコンピュータ１００ａに送信する。
【００５４】
図３は、図２のステップＳ６０において、参照データベースＲＤから値またはアクセス経路を得る際の処理を示すフローチャートである。ステップＳ３１０では、図２のステップＳ５０で得られた検索開始位置から順に、参照データベースＲＤ内の項目について、クライアントコンピュータ１００からの要求を受けた項目と一致するか否かを検討する。具体的には、クライアントコンピュータ１００ａから受け取った要求に格納されていた項目名と、それぞれの場所に格納されている項目名とを照合する。クライアントコンピュータ１００ａから要求された項目名と一致する項目があった場合、または、参照データベースＲＤ内の末尾の項目までの検討が終了した場合には、処理はステップＳ３２０に進む。
【００５５】
参照データベースＲＤにおける各項目の格納場所は、ステータスの変化とともに変動することがある。すなわち、参照データベースＲＤに値が格納されている項目に対応する項目の値が、デバイス情報データベースＤＩＤにおいて変化した場合には、上述のように、新たな値は、その項目名とともに参照データベースＲＤの末尾に付加される。すなわち、参照データベースＲＤにおける各項目およびその値は、当初の格納場所よりも後ろに位置に格納されている場合がある。
【００５６】
本実施例においては、ステップＳ３１０のような処理を行うことで、目的とする項目の値が更新され、参照データベースＲＤにおける項目のデータの格納場所がより後ろの位置に変化した場合にも、目的とする項目の値またはアクセス経路を得ることができる。
【００５７】
ステップＳ３２０では、テーブル管理部２１０は、目的とする項目名と一致する項目があったか否かを判定する。目的とする項目名と一致する項目があった場合には、処理はステップＳ３６０に進む。目的とする項目名と一致する項目がなかった場合には、処理はステップＳ３３０に進む。
【００５８】
ステップＳ３３０では、参照データベースＲＤの先頭から末尾に向かって、順に各項目について、参照データベースＲＤ内の各項目名がクライアントコンピュータ１００ａから受け取った要求に格納されていた項目名と一致するか否かを検討する。クライアントコンピュータ１００ａから要求された項目名と一致する項目があった場合、または、参照データベースＲＤ内の末尾の項目までの検討が終了した場合には、処理はステップＳ３４０に進む。
【００５９】
参照データベースＲＤにおける各項目の格納場所は、ステータスの変化とともに前に変動することもある。たとえば、「プリンタ３００が処理すべき印刷ジョブ」などの、デバイス情報データベースＤＩＤ内の項目の値が削除された場合には、参照データベースＲＤ内の対応する項目のデータも削除される。そして、削除された項目よりも後ろの位置に格納されていた各項目のデータは、参照データベースＲＤ内においてソートされ、それまでの格納位置より前の位置に格納される。
【００６０】
本実施例においては、ステップＳ３３０のような処理を行うことで、参照データベースＲＤにおける項目のデータの格納場所がより前の位置に変化した場合にも、目的とする項目の値またはアクセス経路を得ることができる。
【００６１】
ステップＳ３４０では、クライアントコンピュータ１００ａから受け取った要求に格納されていた項目名と一致する項目名があったか否かが検討される。クライアントコンピュータ１００ａから受け取った要求に格納されていた項目名と一致する項目名があった場合には、処理はステップＳ３６０に進む。クライアントコンピュータ１００ａから受け取った要求に格納されていた項目名と一致する項目名がなかった場合には、処理はステップＳ３５０に進む。
【００６２】
ステップＳ３５０では、テーブル管理部２１０は、クライアントコンピュータ１００ａに「エラー」を返信する。そして、図２および図３の処理を終了する。なお、このステップＳ３５０の処理は、テーブル管理部２１０の機能部としての状態データ送信部２１７が行う（図１参照）。
【００６３】
ステップＳ３６０では、テーブル管理部２１０の機能部としての状態データ取得部２１６は、目的とする項目の値またはアクセス経路を取得する。その値またはアクセス経路は、ステップＳ３１０またはステップＳ３３０でクライアントコンピュータ１００ａから要求された項目名と一致すると判断された項目の場所に格納されている。そして、参照データベースＲＤを参照するステップＳ６０の処理を終える（図２参照）。
【００６４】
Ａ４．予想検索時間の計算：
以下では、図２のステップＳ５０で使用できる各検索法、およびステップＳ３０における各検索法の予想検索時間の計算について説明する。
【００６５】
（１）線形検索法：
「線形検索法」とは、先頭データから順番に目的のデータであるか否かを検討する方法である。線形検索法による検索においては、参照データベースＲＤ内の各項目について、先頭順に、クライアントコンピュータ１００から値の送信を要求された項目名と一致するか検討される。すなわち、図２のステップＳ４０において線形検索法が選択された場合には、ステップＳ５０においては、参照データベースＲＤの先頭の項目の位置が「検索開始位置」とされる。
【００６６】
線形検索法における予想検索時間ＴＬは、以下の計算式で得られる。なお、以下の式は、平均的には、参照データベースＲＤが保持する全項目のうちの中央の順位の位置で、クライアントコンピュータ１００から値の送信を要求された項目名と一致する項目が発見されると考えることができる、という推定に基づいている。
【００６７】
ＴＬ＝（Ｎ／２）×ｕＬ  ・・・  （１）
【００６８】
ここで、Ｎは、参照データベースＲＤが有する項目の数である。ｕＬは、ある項目がクライアントコンピュータ１００から値の送信を要求された項目名と一致するか否かを検討するのに要する時間である。
【００６９】
（２）二分検索法と線形検索法による合成検索法：
二分検索法と線形検索法による合成検索法においては、まず、参照データベースＲＤおよび内部保持テーブルＩＴの検索に利用できる量のメモリ（図２のステップＳ２０参照）を使って、内部保持テーブルＩＴを対象として二分検索を行う。その結果、参照データベースＲＤに含まれるＮ個の項目の中から、目的とする項目を特定するための線形検索を行うべき対象が限定される。そして、まず、限定された項目について、参照データベースＲＤを対象として前述の線形検索を行う。すなわち、図２のステップＳ４０において合成検索法が選択された場合には、ステップＳ５０においては、参照データベースＲＤ内の限定された項目の中の先頭の項目の位置が「検索開始位置」とされる。以下でより具体的に説明する。
【００７０】
図４は、合成検索法の例を示す図である。図の左端には、内部保持テーブルＩＴの例を示している。内部保持テーブルＩＴは、項目のアルファベット順に各項目と、参照データベースＲＤ内における格納位置を表すオフセット値と、を有している。図４では、参考のために、各項目の先頭からの順番を左端に示す。
【００７１】
二分検索において、１回目の検討では、内部保持テーブルＩＴの項目のうち、中央の順位にある項目のデータを参照する。ここでは、内部保持テーブルＩＴは１６個の項目を有しているため、１回目の検索では、８番目の項目が参照される。なお、図４中、「１回目参照先」という表示の下に丸を表示して、８番目の項目を明示する。
【００７２】
そして、クライアントコンピュータ１００から値の送信を要求された項目と、その中央の順位の項目との大小関係を検討する。具体的には、両項目名のアルファベットのコードを、項目名の先頭から順に比較する。そして、そのコードの大小関係に基づいて、項目名の大小関係を決定する。クライアントコンピュータ１００から送信を要求された項目名が、参照先の項目名以下であれば、検討対象を参照先の項目以前の範囲Ｒ２１に限定する。クライアントコンピュータ１００から送信を要求された項目名が、参照先の項目名よりも大きければ、検討対象を参照先の項目よりも後ろの範囲Ｒ２２に限定する。ここでは、クライアントコンピュータ１００から送信を要求された項目名が、参照先の項目名以下であったものとする。その結果、実線で示す範囲Ｒ２１に含まれる項目が検討対象とされる。そして、破線で示す範囲Ｒ２２に含まれる項目は検討対象からはずされる。
【００７３】
２回目の検討では、範囲Ｒ２１の中央の順位にある項目を参照する。ここでは、内部保持テーブルＩＴの項目中で４番目の項目が参照される。図４中、「２回目参照先」という表示の下に丸を表示して、４番目の項目を明示する。なお、１回目の検討で範囲Ｒ２２が選ばれた場合には、範囲Ｒ２２の中央の順位にある項目が参照される。その場合の参照先である１２番目の項目も、同様に「２回目参照先」という表示の下において丸を表示して明示する。
【００７４】
２回目の検討でも、その参照先の項目とクライアントコンピュータ１００から送信を要求された項目名の大小が検討される。２回目の検討の結果では、クライアントコンピュータ１００から送信を要求された項目名が、参照先の項目名よりも大きかったものとする。その結果、検討対象は、参照先の項目よりも後ろの範囲Ｒ３２（図４中で実線で示す）に限定される。３回目以降の検討も同様に行われる。
【００７５】
すなわち、「二分検索」とは、あらかじめ昇順（または降順）で整列しておいたデータに対して、検索範囲の中央値Ｖｃと探索したい値Ｖｔの大小関係を比較して、Ｖｔ＜Ｖｃなら前半（データが降順に整列されている場合は後半）のデータを新たな検索範囲とし、Ｖｔ＞Ｖｃなら後半（データが降順に整列されている場合は前半）のデータを新たな検索範囲として、検索範囲を設定し直し、再度、中央値との比較を行う、という処理を繰り返すことによって、目的のデータを探し出す検索法である。
【００７６】
二分検索では、あらかじめ潜在的な参照先のデータのアドレスを記憶しておく必要がある。潜在的な参照先は、１回目の検討では、内部保持テーブルＩＴの全項目のうちの中央の順位にある項目である。２回目の検討では、潜在的な参照先は、内部保持テーブルＩＴの全項目のうちの１／４と３／４の順位にある２個の項目である。３回目の検討では、潜在的な参照先は、内部保持テーブルＩＴの全項目のうちの１／８，３／８，５／８，７／８の順位にある４個の項目である。以下、同様にしてあらかじめ記憶しておくべき潜在的な参照先の個数は増大する。
【００７７】
よって、項目の大小の検討を１回行う場合には、あらかじめ記憶しておくべき潜在的な参照先の合計数は１個である。検討を２回行う場合には、あらかじめ記憶しておくべき潜在的な参照先の合計数は３個である。検討を３回行う場合には、あらかじめ記憶しておくべき潜在的な参照先の合計数は７個である。以下、同様にしてあらかじめ記憶しておくべき潜在的な参照先の合計数Ｒは増大する。Ｒは以下の式で表される。なお、ｉは、二分検索において検討を行う回数である。
【００７８】
Ｒ＝２i−１  ・・・  （２）
【００７９】
あらかじめ記憶しておくことができる潜在的な参照先の個数Ｒの上限は、図２のステップＳ２０で決定された検索のために利用可能なメモリの容量によって制限される。
【００８０】
たとえば、一つの参照先の項目のアドレスを記憶するのにｕＭだけの量のメモリが必要である場合、あらかじめ記憶しておくことができる潜在的な参照先の個数Ｒは、以下の条件を満たす必要がある。ここで、ＳＭは、検索に使用することができるメモリの量である（図２のステップＳ２０参照）。
【００８１】
Ｒ≦ＳＭ／ｕＭ    ・・・  （３）
【００８２】
たとえば、図４の例では、あらかじめ記憶しておくことができる潜在的な参照先の個数Ｒは、７個であったとする。その結果、二分検索における検討は３回目までしか行うことはできない。しかし、３回の検討によって、検討対象の項目は、内部保持テーブルＩＴの全項目のうちの１／８の範囲Ｒ４３の項目に限定される。具体的には、検討対象の項目は、５番目と６番目の項目にまで限定される。
【００８３】
その結果、限定された検討対象である内部保持テーブルＩＴの５番目と６番目の項目のうちの先頭の項目に対応する参照データベースＲＤの項目が、図２のステップＳ５０において、検索開始位置とされる。そして、ステップＳ６０において、その内部保持テーブルＩＴの５番目の項目に対応する参照データベースＲＤの項目から、参照データベースＲＤを対象に線形検索が実行される。すなわち、内部保持テーブルＩＴの５番目の項目に対応する参照データベースＲＤの項目から順に、参照データベースＲＤが有する各項目について、クライアントコンピュータ１００から送信を要求された項目名と一致するか否かが検討される。
【００８４】
なお、二分検索を行っている間に参照データベースＲＤの内容に変更がなければ、内部保持テーブルＩＴの５番目の項目に対応する参照データベースＲＤの項目から、内部保持テーブルＩＴの６番目の項目に対応する参照データベースＲＤの項目までの間に、クライアントコンピュータ１００から送信を要求された項目名と一致する項目が存在するはずである。
【００８５】
図３のステップＳ３１０においては、限定された検討対象（ここではＲ４３の範囲に含まれる５番目と６番目の項目）の範囲中にクライアントコンピュータ１００から送信を要求された項目名と一致する項目がなかった場合には、テーブル管理部２１０は、参照データベースＲＤの先頭の項目から順に線形検索を行う。このような処理を行うことで、参照データベースＲＤ内に格納された項目のデータの格納位置が前にずれた場合にも、目的とする項目のデータを得ることができる。
【００８６】
上記式（２）より、図２のステップＳ２０で決定された、制限されたメモリのもとで実行可能な検討の回数ｉは、以下の式で表される。
【００８７】
【数４】
2008165293.tif 000004
【００８８】
よって、ｉ回目までの検討に要する時間ｔ２は、以下の式で表される。なお、ｕＢは、二分検索において１回の検討に要する時間である。
【００８９】
【数５】
2008165293.tif 000005
【００９０】
一方、二分検索によって限定される参照データベースＲＤの検討対象の項目数ｗは、式（２）を考慮すると、以下の式で表されると期待できる。ここで、Ｎは、参照データベースＲＤが保持する全項目の数である。なお、内部保持テーブルＩＴが保持する項目は、参照データベースＲＤが保持する全項目のうちの一部の項目である。以下の式は、内部保持テーブルＩＴが保持している項目は、参照データベースＲＤが保持する全項目の中からほぼ均等な間隔をあけて取り出された項目である、という推定に基づいている。
【００９１】
ｗ＝Ｎ／２i 
＝Ｎ／（Ｒ＋１）・・・  （６）
【００９２】
よって、二分検索によって限定された検討対象を線形検索で検索するのに要する時間ｔＬは、以下の式で表される。なお、以下の式は、平均的には、項目の範囲ｗのうちの中央の順位の位置で、クライアントコンピュータ１００から値の送信を要求された項目名と一致する項目が発見されると考えることができる、いう想定に基づいている。
【００９３】
ｔＬ＝ｕＬ×ｗ／２
＝ｕＬ×Ｎ／２（Ｒ＋１）・・・  （７）
【００９４】
式（５）および式（７）より、合成検索に要する時間ＴＢは、以下の式で表される。
【００９５】
【数６】
2008165293.tif 000006
【００９６】
なお、Ｒが１００以上の値（たとえば１２７）である場合や、２００以上の値（たとえば２５５）である場合であるなど、Ｒが１に対して十分大きい場合には、上記の式（８）は、以下の式で置き換えることができる。
【００９７】
【数７】
2008165293.tif 000007
【００９８】
（３）ハッシュ検索法：
「ハッシュ検索法」は、（ａ）あらかじめ項目データに対してハッシュ関数を適用して得られたハッシュ値の番地に、項目データに対応づけられたデータを格納することによってハッシュテーブルを生成しておき、（ｂ）検索の際には、目的とする項目データに同じハッシュ関数を適用して得られたハッシュ値の番地を参照して、目的の項目データに対応づけられたデータを得る方法である。
【００９９】
本実施例においては、あらかじめ項目名にハッシュ関数を適用して得た数値（ハッシュ値）に対応する格納位置にその項目のデータ（値またはアクセス経路）を格納しているハッシュテーブルＨＴを作成する。そして、検索の際には、ハッシュテーブルＨＴ中の、検索目標である項目名にハッシュ関数を適用して得られたハッシュ値に対応する格納位置を、ステップＳ５０において、検索開始位置とする。以下でより具体的に説明する。
【０１００】
図５は、参照データベースＲＤが有する各項目およびそのオフセット値の例と、参照データベースＲＤから生成されたハッシュテーブルＨＴの例とを示す図である。ここでは、ＡからＺまでの項目を有する参照データベースＲＤを例として示している。図２のステップＳ３０で、ハッシュ検索法の予想検索時間を決定する際には、参照データベースＲＤからハッシュテーブルＨＴが生成される。なお、参照データベースＲＤが有する各項目のデータのオフセット値は、参照データベースＲＤが有する各項目に基づいてハッシュテーブルを作成する際に、得ることができる。
【０１０１】
具体的には、参照データベースＲＤの各項目名にハッシュ関数ｈ（ｘ）を適用して、得られたハッシュ値（「キー」ともいう）の番地に各項目のデータの先頭からのオフセット値（図１参照）を格納する。ハッシュ関数ｈ（ｘ）は、たとえば、「項目名のアルファベットのコードを足し合わせ、下からｍ桁（ｍは２以上の整数）を取得する関数」ｐｈ（ｘ）に基づいて生成することができる。たとえば、ｐｈ（ｘ）によって得られた値を、内部保持テーブルＩＴが保持している項目の数Ｎで割って得られた余りをハッシュ値（キー）とすることができる。なお、ハッシュ関数ｈ（ｘ）は、できるだけ各項目名について異なる値を出力するものであることが好ましい。そして、ハッシュ値の分布範囲はできるだけ０〜（Ｎ−１）に近いことが好ましい。
【０１０２】
たとえば、項目名「Ｂ」（図５の左側に示す参照データベースＲＤのオフセット値の表参照）にハッシュ関数ｈ（ｘ）を適用するとハッシュ値「１」が得られるとする。すると、ハッシュテーブルＨＴの番地「１」に項目「Ｂ」のオフセット値「０Ｆ」が格納される（図５のハッシュテーブルＨＴ参照）。
【０１０３】
また、項目名「Ｃ」と「Ｄ」（図５の内部保持テーブルＩＴ参照）にハッシュ関数ｈ（ｘ）を適用するといずれもハッシュ値「２」が得られるとする。このように、異なる対象にハッシュ関数を適用して同じハッシュ値（キー）が得られる現象を「衝突」という。
【０１０４】
本実施例では、衝突が発生した場合には、衝突が生じた項目のオフセット値のうち最小のものをハッシュ値の番地に格納する。たとえば、項目「Ｃ」のオフセット値は「１０」であり、項目「Ｄ」のオフセット値は「１Ｆ」である（図５の内部保持テーブルＩＴ参照）。このため、ハッシュテーブルＨＴの番地「２」には、小さい方の「１０」が格納される。同様に、項目「Ｆ」と「Ｇ」についても衝突が生じ、同じ発出「０」が得られるため、ハッシュテーブルＨＴの番地「０」には、小さい方のオフセット値「２Ｆ」が格納される。
【０１０５】
図２のステップＳ４０でハッシュ検索法が選択された場合には、以下のような処理が行われる。すなわち、図２のステップＳ５０では、テーブル管理部２１０の機能部としての検索部２１４は、まず、クライアントコンピュータ１００から値の送信を要求された項目にハッシュ関数ｈ（ｘ）を適用してハッシュ値を得る。そして、ハッシュテーブルＨＴのその値の番地を参照して、対応づけられたオフセット値を得る。参照データベースＲＤ中において、そのオフセット値に対応する項目が、ステップＳ５０における検索開始値とされる。
【０１０６】
ここで、たとえば、クライアントコンピュータ１００から項目「Ｄ」の値の送信を要求された場合には、ハッシュテーブルＨＴから得られるオフセット値は項目「Ｄ」のオフセット値ではなく、項目「Ｃ」のオフセット値である（図５参照）。しかし、図３のステップＳ３１０においては、参照データベースＲＤ内のそのオフセット値で表される位置に項目「Ｄ」のデータがない場合には、そこから順に参照データベースＲＤ内を線形検索する。ハッシュテーブルＨＴを生成する際に衝突が生じたときには、衝突が生じた番地には、最も小さいオフセット値が格納される。このため、図３のステップＳ３１０のような処理が行われることで、参照データベースＲＤを参照する際、最終的には、目的とする項目「Ｄ」の値またはアクセス経路を得られる可能性が高い。
【０１０７】
ハッシュテーブルＨＴにおいて衝突が生じる確率Ｐは、以下の式で得られる。ここで、ｋは、ハッシュテーブルＨＴを生成する際に生じた衝突の回数である。Ｎは、参照データベースＲＤが有する項目の数である。なお、ｋは、ハッシュテーブルを生成する際に、テーブル管理部２１０の予想時間決定部２１２がカウントする。
【０１０８】
Ｐ＝ｋ／Ｎ    ・・・  （１０）
【０１０９】
一方、衝突が生じた場合等に行われる線形検索（図３のステップＳ３１０およびＳ３３０参照）に要する時間は、｛（Ｎ／２）×ｕＬ｝と推定できる。なお、ｕＬは、ある項目がクライアントコンピュータ１００から値の送信を要求された項目名と一致するか否かを検討するのに要する時間である。
【０１１０】
よって、クライアントコンピュータ１００から値の送信を要求された項目にハッシュ関数ｈ（ｘ）を適用してハッシュ値を得るのに要すると予想される時間をＨｃとすると、ハッシュ検索法の予想検索時間ＴＨは、以下の式で得ることができる。
【０１１１】
ＴＨ＝Ｈｃ＋｛（Ｎ／２）×ｕＬ×Ｐ｝
＝Ｈｃ＋｛（Ｎ／２）×ｕＬ×（ｋ／Ｎ）｝  ・・・  （１１）
【０１１２】
（４）まとめ：
以上で説明したように、線形検索法については、式（１）によって、予想検索時間ＴＬが得られる。合成検索法については、式（８）または式（９）によって、予想検索時間ＴＢが得られる。そして、ハッシュ検索法については、式（１１）によって、予想検索時間ＴＬが得られる。図２のステップＳ３０では、これらの式に基づいて各検索法の予想検索時間を得る。このような方法で各検索法の予想検索時間を得ることで、限られたメモリ内でもっとも早く検索を行うことができる検索法を選択して、検索を行うことができる（図２のステップＳ４０およびＳ５０参照）。
【０１１３】
なお、図２のステップＳ３０では、最終的にステップＳ５０でハッシュ検索法を使用するか否かによらず、ハッシュテーブルＨＴ（図５参照）を生成する。予想検索時間ＴＬを計算する際に正確な衝突確率Ｐを得るためには、あらかじめ衝突回数ｋが得られていることが好ましいためである。
【０１１４】
Ａ５．本実施例の効果：
以上で説明したネットワークシステムにおいては、クライアントコンピュータ１００ａからステータス情報を要求された場合に、あらかじめ検索に使用できるメモリと、検索対象の項目数と、に基づいて検索に要する時間を計算し、最も検索に要する時間が短い検索方法を決定して、検索を行っている。このため、システムの状況に応じて動的に検索方法を決定できる。その結果、システムの状況に最も適した検索方法を使用して、短時間でクライアントコンピュータ１００ａから要求されたステータス情報を返信することができる。
【０１１５】
Ｂ．変形例：
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【０１１６】
Ｂ１．変形例１：
上記実施例では、参照データベースＲＤは、プリンタ３００が保持していた。しかし、参照データベースＲＤは、プリンタサーバ２００が保持することもできる。また、ネットワークに接続された他のデバイスが参照データベースＲＤを保持し、プリンタサーバ２００がネットワークＮＴを介して参照する態様とすることもできる。
【０１１７】
Ｂ２．変形例２：
上記実施例においては、プリンタサーバ２００の内部保持テーブルＩＴは、プリンタ３００が保持している参照データベースＲＤの項目のうち、一部の項目とその項目に対応する値（またはアクセス経路）を有していた。しかし、内部保持テーブルＩＴは、参照データベースＲＤの項目のすべての項目とその項目に対応する値（またはアクセス経路）を有していてもよい。
【０１１８】
なお、内部保持テーブルＩＴは、あらかじめ、たとえば、プリンタサーバ２００の電源がＯＮとなったときに生成することができる。また、プリンタサーバ２００の電源がＯＮとなった後、最初にクライアントコンピュータ１００から状態データの要求があったときに生成することもできる。
【０１１９】
Ｂ３．変形例３：
上記実施例では、検索法は、線形検索法と、二分検索法および線形検索法による合成検索法と、ハッシュ検索法であった。しかし、検索法には他の検索法を含んでもよい。
【０１２０】
Ｂ４．変形例４：
線形検索法は、ほとんどすべての条件下で他の検索法よりも必要とするメモリの量が小さい。このため、図２のステップＳ２０において計算された使用できるメモリの量が所定値以下である場合には、自動的に線形検索を行うような態様とすることも好ましい。
【０１２１】
Ｂ５．変形例５：
上記実施例では、検索に使用できるメモリの容量に基づいて予想検索時間を決定している。しかし、検索などの処理を行うのに要する時間を決定する際には、他のハードウェア資源の量を考慮する態様とすることもできる。たとえば、複数のＣＰＵを並列に使用して処理を行う場合には、その処理に要する時間は、その処理に使用することができるＣＰＵの数に基づいて決定することができる。なお、複数の仮想ＣＰＵを使用する場合も同様である。
【０１２２】
Ｂ６．変形例６：
上記実施例では、ネットワークに接続されたプリンタサーバ２００と、そのプリンタサーバ２００に接続されたプリンタ３００について説明した。しかし、本発明は、他の技術に適用することもできる。本発明は、たとえば、音楽データ、動画データ、静止画データ、文書データ等のデータを蓄積しているデータベースであって、複数のクライアントが利用できるデータベースにおいて、クライアントが目的とするデータを検索する技術に適用することもできる。すなわち、本発明は、使用可能な資源の量が動的に変化する環境下で検索を行う、任意の検索システムについて適用することができる。
【０１２３】
Ｂ７．変形例７：
上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。例えば、テーブル管理部２１０、データベース管理部３１０（図１参照）の機能の一部を他のホストコンピュータが実行するようにすることもできる。
【０１２４】
このような機能を実現するコンピュータプログラムは、フロッピディスクやＣＤ−ＲＯＭ等の、コンピュータ読み取り可能な記録媒体に記録された形態で提供される。ホストコンピュータは、その記録媒体からコンピュータプログラムを読み取って内部記憶装置または外部記憶装置に転送する。あるいは、通信経路を介してプログラム供給装置からホストコンピュータにコンピュータプログラムを供給するようにしてもよい。コンピュータプログラムの機能を実現する時には、内部記憶装置に格納されたコンピュータプログラムがホストコンピュータのマイクロプロセッサによって実行される。また、記録媒体に記録されたコンピュータプログラムをホストコンピュータが直接実行するようにしてもよい。
【０１２５】
この明細書において、ホストコンピュータとは、ハードウェア装置とオペレーションシステムとを含む概念であり、オペレーションシステムの制御の下で動作するハードウェア装置を意味している。コンピュータプログラムは、このようなホストコンピュータに、上述の各部の機能を実現させる。なお、上述の機能の一部は、アプリケーションプログラムでなく、オペレーションシステムによって実現されていても良い。
【０１２６】
なお、この発明において、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスクやＣＤ−ＲＯＭのような携帯型の記録媒体に限らず、各種のＲＡＭやＲＯＭ等のコンピュータ内の内部記憶装置や、ハードディスク等のコンピュータに固定されている外部記憶装置も含んでいる。
【図面の簡単な説明】
【０１２７】
【図１】ネットワークシステムの概略構成を示す図。
【図２】プリンタサーバ２００が、クライアントコンピュータ１００からの要求を受けて、ステータス情報を送信する手順を示すフローチャート。
【図３】図２のステップＳ６０において、参照データベースＲＤから値またはアクセス経路を得る際の処理を示すフローチャート。
【図４】合成検索法の例を示す図。
【図５】参照データベースＲＤが有する各項目およびそのオフセット値の例と、参照データベースＲＤから生成されたハッシュテーブルＨＴの例とを示す図。
【符号の説明】
【０１２８】
１００ａ，１００ｂ，１００ｃ…クライアントコンピュータ
２００…プリンタサーバ
２１０…テーブル管理部
２１１…資源量決定部
２１２…予想時間決定部
２１３…検索法決定部
２１４…検索部
２１６…状態データ取得部
２１７…状態データ送信部
２２０…メモリ
３００…プリンタ
３１０…データベース管理部
ＤＩＤ…デバイス情報データベース
ＨＴ…ハッシュテーブル
ＩＴ…内部保持テーブル
ＮＴ…ネットワーク
ＰＬ…電話回線
ＲＤ…参照データベース
【図１】
2008165293.tif 000010
【図２】
2008165293.tif 000011
【図３】
2008165293.tif 000012
【図４】
2008165293.tif 000013
【図５】
2008165293.tif 000014