(57)【要約】【課題】データサーバのレプリカを含んだシステムにおいて、クライアントがデータサーバのレプリカを知らなくても、レプリカによる冗長性が提供できるようにする。【解決手段】レプリカのデータサーバＣ１０ａは、他のデータサーバＡ１０から問い合わせられた要求対象データをデータ管理部１２から検索し、該当するデータが検索できた場合に、当該データサーバＣ１０ａに対応するマスタのデータサーバＢ１０が起動しているか否かを判定し、マスタのデータサーバＢ１０が起動していると判定された場合には、マスタのデータサーバＢ１０が保持する要求対象データを指し示すリダイレクト情報を前記他のデータサーバＡ１０に対して提供し、マスタのデータサーバＢ１０が起動していないと判定された場合は、当該データサーバ自身の保持する要求対象データを指し示すリダイレクト情報を前記他のデータサーバＡ１０に対して提供する。【選択図】図９
2007072524.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された他のデータサーバと連携してデータ管理システムを構成するデータサーバとして、コンピュータシステムを動作させるためのプログラムであって、該コンピュータシステムを、
データ群を保持するデータ管理部、
他のデータサーバから問い合わせられた要求対象データをデータ管理部から検索し、該当するデータが検索できた場合に、当該データサーバに対応するマスタのデータサーバが起動しているか否かを判定するマスタ起動状態判定部、
マスタのデータサーバが起動していると判定された場合には、マスタのデータサーバが保持する要求対象データを指し示すリダイレクト情報を前記他のデータサーバに対して提供し、マスタのデータサーバが起動していないと判定された場合は、当該データサーバ自身の保持する要求対象データを指し示すリダイレクト情報を前記他のデータサーバに対して提供する応答部、
として機能させるためのプログラム。
【請求項２】
ネットワークを介して接続された他のデータサーバと連携してデータ管理システムを構成するデータサーバとして、コンピュータシステムを動作させるためのプログラムであって、該コンピュータシステムを、
データ群を保持するデータ管理部、
他のデータサーバから受けたデータ問合せに示される要求対象データをデータ管理部から検索し、該当するデータが検索できた場合に、当該データサーバに対応するマスタのデータサーバの識別情報を前記他のデータサーバに対して提供する応答部、
として機能させるためのプログラム。
【請求項３】
ネットワークを介して接続された他のデータサーバと連携してデータ管理システムを構成するデータサーバとして、コンピュータシステムを動作させるためのプログラムであって、該コンピュータシステムを、
データ群を保持するデータ管理部、
クライアントから受け取ったデータ要求の要求対象データをデータ管理部から検索し、該当するデータが検索できた場合はそのデータをクライアントに提供し、検索できなかった場合は、該要求対象データのデータ識別情報を含むデータ問合せを検出部が検出した他のデータサーバに送ることにより、前記要求対象データを持つデータサーバを探索する要求処理部、
前記要求処理部によるデータ問合せに対し、前記他のデータサーバに対応するマスタのデータサーバの識別情報の回答を該他のデータサーバから受けた場合、該マスタのデータサーバの識別情報を用いて該マスタのデータサーバが起動しているか否かを調べ、起動している場合はマスタのデータサーバが保持する要求対象データを指し示すリダイレクト情報を前記クライアントに提供し、起動していない場合は前記他のデータサーバが保持する要求対象データを指し示すリダイレクト情報を前記クライアントに提供するリダイレクト制御部、
として機能させるためのプログラム。
【請求項４】
請求項１又は３に記載のプログラムであって、
前記データ管理部は、各データを、データ管理システム内で一意的に割り当てられたデータ識別情報と対応づけて保持し、
前記応答部は、データサーバを識別するためのサーバ識別情報と、データ識別情報とを組み合わせたリダイレクト情報を生成する、
ことを特徴とするプログラム。
【請求項５】
請求項４記載のプログラムであって、前記データ識別情報は、グローバルに一意なものであることを特徴とするプログラム。
【請求項６】
ネットワークを介して接続された他のデータサーバと連携してデータ管理システムを構成するデータサーバであって、
データ群を保持するデータ管理部、
他のデータサーバから問い合わせられた要求対象データをデータ管理部から検索し、該当するデータが検索できた場合に、当該データサーバに対応するマスタのデータサーバが起動しているか否かを判定するマスタ起動状態判定部、
マスタのデータサーバが起動していると判定された場合には、マスタのデータサーバが保持する要求対象データを指し示すリダイレクト情報を前記他のデータサーバに対して提供し、マスタのデータサーバが起動していないと判定された場合は、当該データサーバ自身の保持する要求対象データを指し示すリダイレクト情報を前記他のデータサーバに対して提供する応答部、
を備えるデータサーバ。
【請求項７】
ネットワークを介して接続された他のデータサーバと連携してデータ管理システムを構成するデータサーバであって、
データ群を保持するデータ管理部、
他のデータサーバから受けたデータ問合せに示される要求対象データをデータ管理部から検索し、該当するデータが検索できた場合に、当該データサーバに対応するマスタのデータサーバの識別情報を前記他のデータサーバに対して提供する応答部、
を備えるデータサーバ。
【請求項８】
ネットワークを介して接続された他のデータサーバと連携してデータ管理システムを構成するデータサーバであって、
データ群を保持するデータ管理部、
クライアントから受け取ったデータ要求の要求対象データをデータ管理部から検索し、該当するデータが検索できた場合はそのデータをクライアントに提供し、検索できなかった場合は、該要求対象データのデータ識別情報を含むデータ問合せを検出部が検出した他のデータサーバに送ることにより、前記要求対象データを持つデータサーバを探索する要求処理部、
前記要求処理部によるデータ問合せに対し、前記他のデータサーバに対応するマスタのデータサーバの識別情報の回答を該他のデータサーバから受けた場合、該マスタのデータサーバの識別情報を用いて該マスタのデータサーバが起動しているか否かを調べ、起動している場合はマスタのデータサーバが保持する要求対象データを指し示すリダイレクト情報を前記クライアントに提供し、起動していない場合は前記他のデータサーバが保持する要求対象データを指し示すリダイレクト情報を前記クライアントに提供するリダイレクト制御部、
を備えるデータサーバ。
【請求項９】
ネットワークを介して接続された他のデータサーバと連携してデータ管理システムを構成するデータサーバが実行するデータ管理方法であって、
他のデータサーバから問い合わせられた要求対象データをデータ管理部から検索し、該当するデータが検索できた場合に、当該データサーバに対応するマスタのデータサーバが起動しているか否かを判定し、
マスタのデータサーバが起動していると判定された場合には、マスタのデータサーバが保持する要求対象データを指し示すリダイレクト情報を前記他のデータサーバに対して提供し、
マスタのデータサーバが起動していないと判定された場合は、当該データサーバ自身の保持する要求対象データを指し示すリダイレクト情報を前記他のデータサーバに対して提供する、
データ管理方法。
【請求項１０】
ネットワークを介して接続された他のデータサーバと連携してデータ管理システムを構成するデータサーバが実行するデータ管理方法であって、
他のデータサーバから受けたデータ問合せに示される要求対象データをデータ管理部から検索し、
該当するデータが検索できた場合に、当該データサーバに対応するマスタのデータサーバの識別情報を前記他のデータサーバに対して提供する、
データ管理方法。
【請求項１１】
ネットワークを介して接続された他のデータサーバと連携してデータ管理システムを構成するデータサーバが実行するデータ管理方法であって、
クライアントから受け取ったデータ要求の要求対象データをデータ管理部から検索し、
該当するデータが検索できた場合はそのデータをクライアントに提供し、
検索できなかった場合は、該要求対象データのデータ識別情報を含むデータ問合せを検出部が検出した他のデータサーバに送ることにより、前記要求対象データを持つデータサーバを探索し、
前記データ問合せに対し、前記他のデータサーバに対応するマスタのデータサーバの識別情報の回答を該他のデータサーバから受けた場合、該マスタのデータサーバの識別情報を用いて該マスタのデータサーバが起動しているか否かを調べ、
前記マスタのデータサーバが起動している場合はマスタのデータサーバが保持する要求対象データを指し示すリダイレクト情報を前記クライアントに提供し、
前記マスタのデータサーバが起動していない場合は前記他のデータサーバが保持する要求対象データを指し示すリダイレクト情報を前記クライアントに提供する、
データ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データがサーバから別のサーバへと移転した場合に、ユーザが元のサーバへそのデータを要求してもそのデータが取得できるようにするための技術に関し、特にデータサーバの冗長性向上のための技術に関する。
【背景技術】
【０００２】
この分野の従来技術として、特許文献１に示される技術がある。この技術では、データ管理システムが、各ファイルに対してハンドルと呼ぶ一意な識別子を付与して管理している。そして、そのファイルのＵＲＬとして、従来一般的なファイルの所在場所（所在サーバとそのサーバ内でのファイルのパス名の組合せ）を示したＵＲＬではなく、当該システムのサーバ名とファイルのハンドルとを指定した仮想ＵＲＬをユーザに提供する。ユーザがその仮想ＵＲＬを用いて当該システムにアクセスすると、システムはそのハンドルからファイルの所在場所を特定し、ユーザに提供する。このような仕組みにより、ファイルがデータ管理システム上のどの場所（ディレクトリ）に移動しても、ユーザからの要求に応じてそのファイルを見つけることができる。
【０００３】
この従来技術は、１つのデータ管理システム内で管理されているファイル・コンテンツの所在場所解決に限定されており、例えばファイル・コンテンツの所在場所がネットワーク上の複数のデータ管理システムの中で移動してしまうようなケースには対応できない。
【０００４】
例えばウェブサーバでは、サーバに障害が起こった場合でもサービスが続けられるように、ウェブサーバの複製（レプリカあるいはミラーサーバと呼ばれる）をネットワーク上に設ける場合が少なくない。データを提供するサーバについても、冗長性を高めるためには同様にサーバの複製を設けることが有益であると考えられる。
【０００５】
この観点での従来技術として、特許文献２には、専用のクライアントを用い、マスタサーバが停止していた場合は、専用クライアントが、そのマスタサーバに対応するものとしてあらかじめ登録されたスレーブサーバ（複製）にアクセスを試みる技術が示される。しかし、この方式は、あらかじめサーバを記憶している専用のクライアントを用いる必要があった。したがって、例えば新たにマスタサーバやスレーブサーバを追加した場合には、専用クライアントにその情報を知らせる必要があり、繁雑な作業が必要であった。
【０００６】
【特許文献１】特開平１１−３２６５号公報
【特許文献２】特開２００２−３２８８８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、クライアントがデータサーバに対応するレプリカのサーバの情報を知らなくても、複製サーバによる冗長性が提供できるようにする。
【課題を解決するための手段】
【０００８】
本発明の１つの側面では、ネットワークを介して接続された他のデータサーバと連携してデータ管理システムを構成するデータサーバとして、コンピュータシステムを動作させるためのプログラムであって、該コンピュータシステムを、データ群を保持するデータ管理部、他のデータサーバから問い合わせられた要求対象データをデータ管理部から検索し、該当するデータが検索できた場合に、当該データサーバに対応するマスタのデータサーバが起動しているか否かを判定するマスタ起動状態判定部、マスタのデータサーバが起動していると判定された場合には、マスタのデータサーバが保持する要求対象データを指し示すリダイレクト情報を前記他のデータサーバに対して提供し、マスタのデータサーバが起動していないと判定された場合は、当該データサーバ自身の保持する要求対象データを指し示すリダイレクト情報を前記他のデータサーバに対して提供する応答部、として機能させるためのプログラムを提供する。
【０００９】
本発明の別の側面では、ネットワークを介して接続された他のデータサーバと連携してデータ管理システムを構成するデータサーバとして、コンピュータシステムを動作させるためのプログラムであって、該コンピュータシステムを、データ群を保持するデータ管理部、他のデータサーバから受けたデータ問合せに示される要求対象データをデータ管理部から検索し、該当するデータが検索できた場合に、当該データサーバに対応するマスタのデータサーバの識別情報を前記他のデータサーバに対して提供する応答部、として機能させるためのプログラムを提供する。
【００１０】
本発明の更に別の側面では、ネットワークを介して接続された他のデータサーバと連携してデータ管理システムを構成するデータサーバとして、コンピュータシステムを動作させるためのプログラムであって、該コンピュータシステムを、データ群を保持するデータ管理部、クライアントから受け取ったデータ要求の要求対象データをデータ管理部から検索し、該当するデータが検索できた場合はそのデータをクライアントに提供し、検索できなかった場合は、該要求対象データのデータ識別情報を含むデータ問合せを検出部が検出した他のデータサーバに送ることにより、前記要求対象データを持つデータサーバを探索する要求処理部、前記要求処理部によるデータ問合せに対し、前記他のデータサーバに対応するマスタのデータサーバの識別情報の回答を該他のデータサーバから受けた場合、該マスタのデータサーバの識別情報を用いて該マスタのデータサーバが起動しているか否かを調べ、起動している場合はマスタのデータサーバが保持する要求対象データを指し示すリダイレクト情報を前記クライアントに提供し、起動していない場合は前記他のデータサーバが保持する要求対象データを指し示すリダイレクト情報を前記クライアントに提供するリダイレクト制御部、として機能させるためのプログラムを提供する。
【発明を実施するための最良の形態】
【００１１】
まず図１を参照して、本発明に係るデータサーバの冗長構成が適用されるデータ管理システムの一例につき、その概略構成を説明する。図１に示すように、本システムは、ＬＡＮ（ローカル・エリア・ネットワーク）やインターネットなどのネットワーク２０に接続された複数のデータサーバ１０−１，１０−２，．．．（以下では、区別の必要のない場合は「データサーバ１０」と総称する。データサーバ１０内のモジュールについても同様）から構成される。本システムは、ネットワーク２０上のクライアント３０からのデータ要求に応じ、要求対象のデータを提供する。
【００１２】
各データサーバ１０は、データ管理部１２、検出部１４及び問合せ部１６を備えている。データ管理部１２には、クライアント３０に提供することができる１以上のデータが登録される。ここでデータ管理部１２は、登録された各データを、グローバルに一意なデータＩＤ（識別情報）と対応づけて管理する。グローバルに一意なデータＩＤとしては、例えばＵＵＩＤ（Universally Unique IDentifier）又はＧＵＩＤ（Globally Unique IDentifier）と呼ばれる１２８ビットの識別情報を用いることができる。ちなみに、ＵＵＩＤは、グローバルな一意性を保証するために、そのＵＵＩＤを作成した時刻や作成に使用したマシンに装着されたネットワークカードのＭＡＣ（Media Access Control）アドレス等を含んでいる。ＵＲＬ(Uniform Resource Locator)は、データを有するデータサーバ１０のホスト名とそのサーバ１０において当該データが実際に記憶されている場所を示すパス名とによって当該データを一意に指すのに対し、このシステムのデータＩＤは、そのようなデータの所在場所の情報とは独立した識別情報である。
【００１３】
図２にデータ管理部１２が管理する各データの管理情報のデータ構造を示す。この図に示すように、データ管理部１２は、登録された各データにつき、そのデータのデータＩＤ１０２と、データサーバ１０内でそのデータを指し示すリンク情報１０４とを対応づけて管理している。この例ではデータＩＤはＵＵＩＤで表現され、リンク情報１０４はそのデータのパス名で表現されている。
【００１４】
データ管理部１２は、新規のデータを登録する場合、グローバルに一意なデータＩＤを生成し、これをそのデータの記憶場所を示すリンク情報と対応づけて管理する。また、データ管理部１２は、管理していたデータがデータサーバ１０から削除された場合には、そのデータの管理情報も削除する。
【００１５】
なお、既にデータＩＤが付与済みのデータがデータ管理部１２に登録される場合（例えばあるデータサーバが管理しているデータを別のデータサーバに移動する場合）には、データ管理部１２は、そのデータに対して新たにデータＩＤを付与することをせず、その既付与のデータＩＤに対し、そのデータのリンク情報に対応づけて管理する。
【００１６】
検出部１４は、ネットワーク２０上に存在する他のデータサーバ１０を検出する手段である。
【００１７】
問合せ部１６は、クライアント３０から要求されたデータを有しているか否かを、他のデータサーバ１０に対して問い合わせる手段である。また問合せ部１６は、他のデータサーバ１０の問合せ部１６からの問合せに対して回答する機能も備える。
【００１８】
このシステムでは、クライアント３０は、本システムに対してデータを要求する場合、図３に示すように、データを管理するデータサーバ１０のホスト名１１２と、そのデータのデータＩＤ１１４とを含む仮想ＵＲＬ１１０を用いてデータを指定する。当然ＵＲＬであるため、プロトコル、ポート等の情報も含まれるが、ここでは特に説明しない。グローバルに一意的なデータＩＤは図３に例示したデータＩＤ１１４の桁数よりも遥かに長くなるため、図３ではその一部を省略して示した。この仮想ＵＲＬは、「foo.fx.co.jp」という名前のデータサーバが管理している「12345......67890」というデータＩＤをもつデータを指している。なお、図３の仮想ＵＲＬのうちホスト名１１２とデータＩＤ１１４に挟まれた「get」は、データサーバ１０が提供するメソッドの名前である。データサーバ１０が管理するデータに対して複数種類の操作をクライアント３０に認める場合、仮想ＵＲＬにはその操作を示すメソッドを含めるようにする。逆に言えば、データサーバ１０が単に要求されたデータをクライアント３０に提供するだけであれば、このようなメソッドの記述は不要である。
【００１９】
クライアント３０（例えばウェブブラウザ）が、この仮想ＵＲＬ１１０を用いてデータ要求を行った場合、ホスト名１１２が示すサーバに対し、データＩＤ１１４を含んだデータ要求情報が送信されることになる。
【００２０】
次に図４を参照して、データサーバ１０がクライアント３０からデータ要求情報を受け取ったときの処理手順を説明する。以下では、便宜上、データサーバ１０−１の処理として説明するが、他のデータサーバもこれと同様の処理を行う。
【００２１】
この手順では、まずデータサーバ１０−１は、クライアント３０からのデータ要求情報からデータＩＤを抽出し（Ｓ１００）、データ管理部１２−１からそのデータＩＤに対応する実データのリンク情報を検索する（Ｓ１０２）。そのデータＩＤに対応するリンク情報が検索できた場合（Ｓ１０４の判定結果が肯定（Ｙ））、データサーバ１０−１は、そのリンク情報が指し示すデータの実体をデータサーバ１０−１内の記憶装置から取得し、クライアント３０に提供する（Ｓ１１４）。
【００２２】
一方、データＩＤに対応するリンク情報がなかった場合（Ｓ１０４の判定結果が否定（Ｎ））、データサーバ１０−１は検出部１４−１に、本システムを構成する他のデータサーバ１０−２他の検出を指示し、検出部１４−１はこの指示に応じて他のデータサーバの検出を行う（Ｓ１０６）。検出部１４−１による他のデータサーバ１０−２他の検出は、例えば、他サーバ検出用の所定のメッセージを検出部１４−１からネットワーク２０へブロードキャストすることで行うことができる。各データサーバ１０の検出部１４は、他サーバ検出用のメッセージを認識し、それに対して応答するためのプロトコルを有している。すなわち、他サーバ検出用メッセージを受け取った他のデータサーバ１０−２の検出部１４−２は、このプロトコルに従い、当該他のデータサーバ１０−２のサーバＩＤ（識別情報）を含んだ応答を返す。サーバＩＤとしては、例えばＩＰアドレスや、ホスト名を用いることができる。他サーバ検出用のメッセージを発信した検出部１４−１は、他のデータサーバ１０−２からの応答を受け取り、その応答に含まれるサーバＩＤを取得する。これにより、本システムを構成する他のデータサーバ１０−２を見つけることができる。
【００２３】
他のデータサーバ１０−２が見つかると、データサーバ１０−１は、問合せ部１６−１に、見つけた他のデータサーバ１０−２に対する問合せを指示する。この指示に応じ、問合せ部１６−１は、クライアント３０からのデータ要求に含まれるデータ識別情報を含んだデータ問合せをデータサーバ１０−２に送り、そのデータ識別情報に対応するデータを持っているか否かを問い合わせる（Ｓ１０８）。この問合せを受けたデータサーバ１０−２の問合せ部１６−２の動作については、後で詳しく説明する。
【００２４】
この問合せの結果、問合せ先の他のデータサーバ１０−２が当該データを持っていないことが判明した場合は（Ｓ１１０の判定結果が否定（Ｎ））、他のデータサーバの検出（Ｓ１０６）及びそれに対する問合せ（Ｓ１０８）を繰り返す。当該データを持つデータサーバ１０が見つかるまで、ステップＳ１０６及びＳ１０８が繰り返される。
【００２５】
なお、図４では、他のデータサーバをステップＳ１０６で１つ検出してはステップＳ１０８でそれに対して問合せを行うという手順を示したが、これに限らず、例えばステップＳ１０６でブロードキャストにより検出可能なデータサーバ１０を全て検出して記憶し、それら記憶した各データサーバ１０に対しステップＳ１０８で順に問合せを行うようにしてももちろんよい。
【００２６】
問合せ先の他のデータサーバ１０−２が当該データを持っていることが判明した場合は（Ｓ１１０の判定結果が肯定（Ｙ））、データサーバ１０−１はデータサーバ１０−２のサーバＩＤを含んだリダイレクト情報をクライアント３０に返す（Ｓ１１２）。このリダイレクト情報の返送は、例えば、一般的なＨＴＴＰ(HyperText Transfer Protocol)リダイレクトの方式に従って行うことができる。すなわち、データサーバ１０−１は、302(Found)等のリダイレクトを示すステータスコードと、リダイレクト先のＵＲＬを含んだLocationフィールドと、を含むリダイレクト情報をクライアント３０に返す。なお、リダイレクト情報に含まれるリダイレクト先のＵＲＬは、リダイレクト先のデータサーバ１０−２のサーバＩＤと要求対象データのデータ識別情報とを含んだ上述の仮想ＵＲＬである。リダイレクト先のサーバＩＤは問合せの際には既知であり、要求対象データのデータ識別情報も既知なので、データサーバ１０−１はそのような仮想ＵＲＬを生成できる。
【００２７】
このリダイレクト情報を受けたクライアント３０は、ＨＴＴＰに従って、リダイレクト情報中のサーバＩＤが示すデータサーバ１０−２に対し、同じくリダイレクト情報中のデータ識別情報を含んだデータ要求を送る。
【００２８】
次に、他のデータサーバから問合せを受けたときのデータサーバの処理手順を、図５を参照して説明する。以下では、便宜上、データサーバ１０−２の処理として説明するが、他のデータサーバもこれと同様の処理を行う。
【００２９】
データサーバ１０−２の問合せ部１６は、他のデータサーバ１０−１の問合せ部１６からデータ問合せを受けた場合、そのデータ問合せの情報の中から対象データのデータＩＤを取り出し（Ｓ２００）、そのデータＩＤに対応するリンク情報をデータ管理部１２−２から検索する（Ｓ２０２）。この検索の結果、データ管理部１２−２からそのデータＩＤに対応するリンク情報が検索できた場合（Ｓ２０４の判定結果が肯定（Ｙ））、問合せ部１６−２は、問合せ対象のデータが存在する旨を示すメッセージを問合せ元のデータサーバ１０−１に返す（Ｓ２０６）。一方、検索できなかった場合（Ｓ２０４の判定結果が否定（Ｎ））、問合せ部１６−２は、問合せ対象のデータが存在しない旨を示すメッセージを問合せ元のデータサーバ１０−１に返す（Ｓ２０８）。
【００３０】
なお、ステップＳ２０６では、問合せ対象のデータが存在する旨を示すメッセージを問合せ元に返す代わりに、問合せ対象のデータの仮想ＵＲＬ（すなわちそのデータを持つデータサーバ１０−２のサーバＩＤと、そのデータのデータ識別情報を含んだ仮想ＵＲＬ）を返してもよい。この場合、問合せ元のデータサーバ１０−１は、ステップＳ１１２において、データサーバ１０−２から返された仮想ＵＲＬをクライアント３０に返せばよい。
【００３１】
以上説明したようなデータ管理システムの動作を、図６〜図８を参照して説明する。
【００３２】
図６に示すように、クライアント３０からデータサーバ１０−１に送ったデータ要求（１）の対象データがデータサーバ１０−１に存在する場合は、その対象データがデータサーバ１０−１からクライアント３０に提供される（２）。
【００３３】
一方、図７に示すように、クライアント３０からデータサーバ１０−１に送ったデータ要求（１）の対象データがデータサーバ１０−１に存在しない場合は、検出部１４−１が他のデータサーバ１０−２を検出し（２）、このデータサーバ１０−２に対してデータ問合せを行う（３）。この問合せにより、データサーバ１０−２に要求対象データが存在することが判明すると、データサーバ１０−１はクライアント３０からのデータ要求をデータサーバ１０−２にリダイレクトする（４）。このデータサーバ１０−２は、リダイレクトされたデータ要求に対して、要求対象データをクライアント３０に提供する（５）。
【００３４】
また、図８は、クライアント３０の要求するデータがデータサーバ１０−１にも１０−２にも存在せず、データサーバ１０−３に存在する場合を示している。この場合、（２）検出部１４−１が検出した他のデータサーバ１０−２，１０−３のうち、まず問合せ部１６−１はサーバ１０−２に対し問合せを行い、データは存在しないとの回答を得る（３）。そこで、問合せ部１６−１は次のデータサーバ１０−３に問合せを行い、データが存在するとの回答を得る（４）。すると、データサーバ１０−１は、クライアント３０からのデータ要求をデータサーバ１０−３にリダイレクトする（５）。データサーバ１０−３は、リダイレクトされたデータ要求に対し、要求対象データをクライアント３０に提供する（６）。
【００３５】
以上説明したように、このシステムでは、各データサーバ１０が、クライアント３０から要求されたデータを持つデータサーバ１０を探し、見つけたデータサーバ１０に対してその要求をリダイレクトする。したがって、特許文献３のような中央管理サーバが無くても要求されたデータを見つけることができたため、サーバ停止によりデータが解決不能になる問題も従来技術に比べて大幅に抑制することができる。
【００３６】
また、このシステムでは、データサーバ１０間でデータが移動されデータの所在場所が変わったとしても、クライアント３０は既存の仮想ＵＲＬを用いてデータにアクセスすれば、元々そのデータを管理していたデータサーバ１０、すなわち仮想ＵＲＬ中のサーバＩＤに対応するデータサーバ１０がそのアクセス要求を受け取り、現在そのデータを有しているデータサーバ１０を探索する。したがって、クライアント３０は、既に有している仮想ＵＲＬをそのまま利用しても、データを取得することができる。
【００３７】
例えば、既存のデータサーバの中には、新たにデータが登録されるなどサーバ上のデータに変更が生じると変更を確認可能なＵＲＬをメールでユーザに配布する機能を持つものがある。しかし、このサーバ上のデータが他のサーバへ移動されると、既に配布したＵＲＬは利用できなくなってしまう。これに対し、このシステムの仕組みを適用すれば、そのようなケースでも、クライアントはデータ移動前に配布された仮想ＵＲＬを利用してそのデータを取得することができる。また、管理対象のデータの増大などによりデータサーバ１０を分割する必要が出てくることがよくあるが、このような場合でも、このシステムでは、分割前にユーザに配布した仮想ＵＲＬを分割後にも使用することができる。
【００３８】
次に、以上に例示したデータ管理システムに対し、本発明に係るレプリカ（複製）サーバを適用する場合の実施形態を説明する。
【００３９】
図９に、本実施形態のシステム構成を示す。図９において、図１と同様の構成要素には同一符号を付して説明を省略する。また、図９では、ネットワーク２０は省略している。
【００４０】
図９のシステム構成において、データサーバＡ１０及びデータサーバＢ１０は、図１のデータサーバ１０と同様のものである。また、データサーバＣ１０ａはデータサーバＢ１０のレプリカである。すなわち、データサーバＢ１０とデータサーバＣ１０ａとは、所定のタイミングでレプリケーション（ミラーリング或いは複製処理）を行っており、各々のデータ管理部１２の中には同じデータの集合が保持されている。レプリカであるデータサーバＣ１０ａは、マスタであるデータサーバＢ１０が障害等でクライアント３０に対しサービスを提供できない場合に、そのマスタに代わってサービスを提供するよう動作する。このように、本実施形態ではレプリカはあくまで緊急時にマスタの代役を果たすという位置づけである。したがって、データはマスタとレプリカの両方に存在するものの、ユーザには、基本的に、マスタが保持するデータを指し示すアクセス情報（仮想ＵＲＬ）が提供される。したがって、クライアント３０からレプリカに対して直接データ要求が送られることは基本的にない。
【００４１】
レプリカのデータサーバＣ１０ａは、マスタのデータサーバＡ１０やＢ１０と同様の構成要素すなわちデータ管理部１２，検出部１４及び問合せ部１６に加え、マスタ情報保持部１７及び到達先決定部１８を備えている。
【００４２】
マスタ情報保持部１７は、当該データサーバＣ１０ａのマスタであるデータサーバの情報を保持する機能モジュールである。図１０に、マスタ情報保持部１７が保持する情報の一例を示す。この例では、マスタ情報保持部１７は、マスタであるデータサーバのネットワーク２０におけるアドレス２０２（例えばＩＰアドレス）と、マスタのＵＲＬ２０４とを保持している。マスタのＵＲＬ２０４は、そのマスタにおけるデータ管理部１２のＵＲＬであり、そのＵＲＬに対してＵＵＩＤのデータ識別情報を付けることで、マスタ内のデータを指し示すことができるものである（図３参照）。
【００４３】
到達先決定部１８は、他のデータサーバ（例えばデータサーバＡ１０）から問合せが来た場合に、その問合せに対応するデータ要求のリダイレクト先を自分自身（レプリカ）にするのか、自分に対応するマスタにするのかを判定する機能モジュールである。
【００４４】
次に、このシステムの動作を説明する。マスタであるデータサーバＡ１０及びＢ１０の動作は、図１〜図８を用いて説明した本実施形態の前提のシステムでのデータサーバ１０の動作と同様でよい。したがって、以下では、レプリカのデータサーバＣ１０ａの動作のみを、図１１を参照して説明する。
【００４５】
図１１の手順は、他のデータサーバから要求対象データの有無の問合せを受けた場合の処理手順を示すものであり、既述の図５の処理手順と同様の処理内容のステップには、同一符号を付してその説明を省略する。なお、レプリカに対してクライアント３０から直接データ要求が来ることは基本的にないので、クライアント３０からのデータ要求を処理する手順は基本的に不要である。
【００４６】
図１１の手順では、データサーバＣ１０ａは、他のデータサーバＡ１０から問い合わせられた要求対象データが自身のデータ管理部１２にあると判明した場合、マスタ情報保持部１７が持つマスタのアドレス２０２を用いてマスタのデータサーバＢ１０にアクセスし、そのマスタが起動しているかどうかを確認する（Ｓ２１０）。この確認には、例えばpingコマンドなど、既存のプロトコルを用いることができる。そして、この確認処理の結果、マスタが起動しているか否かを判定し（Ｓ２１２）、起動していれば、到達先決定部１８がマスタをリダイレクト先と決定し、マスタにある要求対象データを指した仮想ＵＲＬを作成し、この仮想ＵＲＬを問合せ元のデータサーバＡ１０に返す（Ｓ２１４）。ここで作成される仮想ＵＲＬは、マスタのデータサーバＢ１０のサーバＩＤ（例えばＩＰアドレス乃至ＵＲＬ）と、その要求対象データのデータ識別情報を含んだものでよい。
【００４７】
また、ステップＳ２１２で、マスタが起動していないと判定した場合、データサーバＣ１０ａの到達先決定部１８は、自サーバＣ１０ａのデータ管理部１２にある要求対象データを指し示す仮想ＵＲＬを作成し、この仮想ＵＲＬを問合せ元とのデータサーバＡ１０に返す（Ｓ２１６）。
【００４８】
以上に説明したレプリカのデータサーバＣ１０ａを備えたデータ管理システムの動作を、図９及び図１２を参照して説明する。
【００４９】
図９及び図１２は、共に、クライアント３０からデータ要求を受けたデータサーバＡ１０が、マスタのデータサーバＢ１０よりもレプリカのデータサーバＣ１０ａに対して先に要求対象データの有無を問い合わせた場合に行われる処理の流れを示している。図９はマスタが起動している場合を示し、図１２はマスタが起動していない場合を示す。
【００５０】
まず図９に示す処理の流れを説明すると、クライアント３０からデータサーバＡ１０に送ったデータ要求（１）の対象データがデータサーバＡ１０に存在しない場合、データサーバＡ１０の検出部１４が他のデータサーバＣ１０ａを検出し（２）、データサーバＣ１０ａに対してデータ問合せを行う（３）。この問合せを受けたデータサーバＣ１０ａは、自分のデータ管理部１２にその要求対象データがあるかどうかを調べ、要求対象データがある場合は、自分に対応するマスタのデータサーバＢ１０が起動しているかどうかを確認する（４）。この例では、マスタは起動しているので、データサーバＣ１０ａは、マスタのデータサーバＢ１０内の要求データを指し示す仮想ＵＲＬを作成し、これをデータサーバＡ１０に返す（５）。この仮想ＵＲＬの作成の際、マスタ情報保持部１７にあるマスタのＵＲＬの情報を用いる。これを受け取ったデータサーバＡ１０は、302(Moved Temporarily)等のリダイレクトを示すステータスコードと、その仮想ＵＲＬを示したLocationフィールドと、を含むリダイレクト情報をクライアント３０に返すことで、データ要求をマスタのデータサーバＢ１０へとリダイレクトする（６）。クライアント３０では、ウェブブラウザがそのリダイレクト情報を処理することで、データサーバＢ１０にアクセスする。データサーバＢ１０には、リダイレクトされたデータ要求の対象データが存在するので、その要求対象データをクライアント３０に提供する（７）。
【００５１】
一方、図１２に示すマスタのデータサーバＢ１０が起動していない場合の流れは、マスタの起動確認（４）までの流れは図９の場合と同様である。図１２の流れでは、このマスタの起動確認によりマスタが起動していないので、レプリカであるデータサーバＣ１０ａが自分の持っている要求対象データをクライアント３０に提供することになる。したがって、データサーバＣ１０ａは、自分のデータ管理部１２にある要求対象データを指し示す仮想ＵＲＬを作成し、これをリダイレクト先としてデータサーバＡ１０に通知する（５）。データサーバＡ１０は、この仮想ＵＲＬを示したリダイレクト情報をクライアント３０に提供することで、データ要求をデータサーバＣ１０ａにリダイレクトする（６）。この結果、データサーバＣ１０ａからクライアント３０に要求対象データが提供される（７）。
【００５２】
なお、データサーバＡ１０が、データサーバＣ１０ａよりもデータサーバＢ１０に先に問合せを行った場合は、システムは図１〜図８で説明したシステムと同様の振る舞いをする。
【００５３】
以上説明したように、本実施形態に係るレプリカのデータサーバＣ１０ａを用いれば、仮にクライアント３０からデータ要求を受けたデータサーバＡ１０からレプリカのデータサーバＣ１０ａが先に問合せを受けた場合でも、マスタのデータサーバＢ１０が起動していれば、マスタに対してデータ要求がリダイレクトされるので、レプリカは緊急用として取り扱い、データ要求は基本的にマスタに誘導するというシステムのポリシーを実現することができる。このデータ管理システムでは、クライアント３０は、マスタとレプリカの対応関係を知らなくても、マスタが起動していればマスタから、マスタが起動していなければレプリカから、要求対象データを取得することができる。
【００５４】
次に、変形例のシステムを説明する。図９〜図１２を用いて説明したシステムでは、レプリカのデータサーバＣ１０ａがマスタへのデータ要求の誘導のための処理を全て実行した。これに対し、この変形例では、レプリカのデータサーバＣ１０ａと問合せ元のデータサーバＡ１０とが協働してその誘導のための処理を実現する。この変形例のシステム構成を図１３に示す。図９に示した構成要素と同様の構成要素には同一符号を付して説明を省略する。
【００５５】
図１３の構成では、マスタであるデータサーバＡ１０に、到達先決定部１９が設けられる。到達先決定部１９は、要求対象データの有無を問い合わせた際のレプリカからの回答に応じて、データ要求のリダイレクト先をマスタにするのかレプリカにするのかを決定する。図示は省略したが、同じくマスタであるデータサーバＢ１０にも、到達先決定部１９が設けられる。
【００５６】
この変形例でのレプリカのデータサーバＣ１０ａの処理手順を図１４に示す。図１４の手順では、データサーバＡ１０から問い合わせられた要求対象データがデータサーバＣ１０ａ内にある場合、データサーバＣ１０ａは、自分がレプリカであることを示す情報と、マスタ情報保持部１７中に保持されるマスタ情報（アドレス及びＵＲＬ）と、自分のデータ管理部１２内にある要求対象データを指し示す仮想ＵＲＬと、をデータサーバＡ１０に回答する（Ｓ２２０）。これ以外の処理は、図５に示した手順と同様なので、図５の手順と同様の処理内容のステップに同一符号を付すことで説明を省略する。
【００５７】
次に、この変形例でのデータサーバＡ１０の処理手順を、図１５及び図１６を参照して説明する。
【００５８】
データサーバＡ１０は、クライアント３０からデータ要求を受けた場合、図１５に示す手順を開始する。図１５において、図４の手順のステップと同様の処理内容のステップには同一符号を付して説明を省略する。
【００５９】
図１５の手順では、データサーバＡ１０は、要求対象データが自分のデータ管理部１２内になかった場合において、問い合わせたデータサーバに要求対象データがあると分かった場合、問い合わせたデータサーバがレプリカかどうかを判定する（Ｓ１２０）。レプリカかどうかは問合せ先からの応答から分かる。レプリカでなければ、図４の手順と同様、その問合せ先のデータサーバにデータ要求をリダイレクトする（Ｓ１１２）。問合せ先がレプリカ（データサーバＣ１０ａ）であれば、処理は図１６の手順に進む。
【００６０】
図１６の手順では、データサーバＡ１０の検出部１４は、問合せ先のデータサーバＣ１０ａからの回答に含まれるマスタ情報（例えばマスタのアドレス）を利用して、マスタのデータサーバＢ１０の検出を試みる（Ｓ１３０）。これによりマスタのデータサーバＢ１０が検出できた場合、そのマスタは起動していると判断できる。この場合、到達先決定部１９が、マスタであるデータサーバＢ１０内の要求対象データを指し示す仮想ＵＲＬを作成し、この仮想ＵＲＬを含むリダイレクト情報をクライアント３０に返すことで、データ要求をマスタへとリダイレクトする（Ｓ１３４）。この仮想ＵＲＬは、データサーバＣ１０ａからの回答に含まれるマスタのＵＲＬと、要求対象データのデータ識別情報（ＵＵＩＤ）とから作成することができる。また、ステップＳ１３２でマスタが検出できなった場合、到達先決定部１９は、問合せ先のデータサーバＣ１０ａ（レプリカ）からの回答に含まれる仮想ＵＲＬを含んだリダイレクト情報をクライアント３０に返すことで、データ要求をレプリカへとリダイレクトする（Ｓ１３６）。
【００６１】
以上の変形例の説明では、レプリカが、自分がレプリカである旨を示す情報、マスタ情報、及び自分の持つ要求対象データを示す仮想ＵＲＬを問合せ元のデータサーバＡ１０に回答するとしたが、これは必須ではない。レプリカは、自分の持つマスタ情報さえ回答すれば、データサーバＡ１０はそのことを以て問合せ先がレプリカであると認識でき、またレプリカの持つ要求対象データの仮想ＵＲＬは、レプリカのＵＲＬと要求対象データのデータ識別情報とを用いてデータサーバＡ１０が生成することができる。
【００６２】
以上に説明した変形例のデータ管理システムの動作を、図１３及び図１７を参照して説明する。
【００６３】
図１３及び図１７は、共に、クライアント３０からデータ要求を受けたデータサーバＡ１０が、マスタのデータサーバＢ１０よりもレプリカのデータサーバＣ１０ａに対して先に要求対象データの有無を問い合わせた場合に行われる処理の流れを示している。図１３はマスタが起動している場合を示し、図１７はマスタが起動していない場合を示す。
【００６４】
まず図１３に示す処理の流れを説明すると、クライアント３０からデータサーバＡ１０に送ったデータ要求（１）の対象データがデータサーバＡ１０に存在しない場合、データサーバＡ１０の検出部１４が他のデータサーバＣ１０ａを検出し（２）、データサーバＣ１０ａに対してデータ問合せを行う（３）。この問合せを受けたデータサーバＣ１０ａは、自分のデータ管理部１２にその要求対象データがあるかどうかを調べ、要求対象データがある場合は、マスタ情報保持部１７が持つマスタ情報をデータサーバＡ１０に返す（４）。要求対象データがない場合は、データサーバＣ１０ａはその旨のみをデータサーバＡ１０に回答する。この例では、データサーバＣ１０ａが要求対象データを持っているものとする。
【００６５】
この場合、データサーバＣ１０ａからマスタ情報を受け取ったデータサーバＡ１０は、そのマスタ情報の示すマスタのデータサーバＢ１０を検出する（５）。そして、検出したデータサーバＢ１０内の要求対象データを指す仮想ＵＲＬを作成し、この仮想ＵＲＬを含むリダイレクト情報をクライアント３０に返すことで、データ要求をマスタのデータサーバＢ１０へとリダイレクトする（６）。これにより、クライアント３０に対し、マスタのデータサーバＢ１０から要求対象データが提供される（７）。
【００６６】
一方、図１７に示すマスタのデータサーバＢ１０が起動していない場合の流れは、マスタのデータサーバＢ１０の検出（５）までの流れは図１３の場合と同様である。図１７の流れでは、このマスタが起動していないため、データサーバＡ１０はマスタを検出できない。そこで、データサーバＡ１０は、レプリカのデータサーバＣ１０ａの持つ要求対象データを指す仮想ＵＲＬを作成し、この仮想ＵＲＬを含んだリダイレクト情報をクライアント３０に返す（６）。これにより、データサーバＣ１０ａからクライアント３０に要求対象データが提供される（７）。
【００６７】
この変形例でも、上記実施形態と同様の効果を得ることができる。
【００６８】
以上に説明した実施形態及び変形例では、レプリカに対してクライアント３０から直接データ要求が到来することはないとして説明したが、仮にそのようなことがあった場合、レプリカは次のような処理を行えばよい。すなわち、レプリカにクライアント３０から直接データ要求が来て、その要求の対象データが自分のデータ管理部１２にある場合は、ステップＳ２１０〜Ｓ２１４に示すように、マスタが起動しているかどうかを確認し、起動していればデータ要求をマスタにリダイレクトすればよい。また、マスタが起動していなければ、自分のデータ管理部１２から要求対象データを取り出してクライアント３０に提供すればよい。
【００６９】
以上に説明した実施形態の複製のデータサーバ１０Ａは、典型的には、以上に説明した各構成要素の機能を記述したプログラムをコンピュータに実行させることにより実現される。このプログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ、フレキシブルディスク、ハードディスクなどのコンピュータ読み取り可能な記録媒体に記録した状態でユーザに提供することができる。また、このプログラムは、データ通信ネットワークを介してサーバからユーザのコンピュータにダウンロードすることもできる。
【００７０】
以上に説明した実施形態及び変形例はあくまで一例に過ぎず、本発明の技術的思想の範囲内で様々な変形が可能である。例えば、以上の例では、各データサーバ１０，１０ａの持つデータのデータ識別情報として、グローバルに一意的なＵＵＩＤを用いたが、これは一例に過ぎない。データ識別情報は、データ管理システム内で一意性が保証されたものであれば足りる。
【図面の簡単な説明】
【００７１】
【図１】実施形態の方式の適用対象の例となるデータ管理システムを示す図である。
【図２】データ管理部におけるデータの管理情報の構造を示す図である。
【図３】仮想ＵＲＬの例を示す図である。
【図４】データサーバがクライアントからデータ要求情報を受け取ったときの処理手順を示すフローチャートである。
【図５】他のデータサーバから問合せを受けたときのデータサーバの処理手順を示すフローチャートである。
【図６】図１のシステムの動作を説明するための図である。
【図７】図１のシステムの動作を説明するための図である。
【図８】図１のシステムの動作を説明するための図である。
【図９】実施形態のシステム構成を説明するための図である。
【図１０】マスタ情報保持部が持つ情報内容の一例を示す図である。
【図１１】実施形態のレプリカのデータサーバが実行する処理手順を示すフローチャートである。
【図１２】実施形態のシステムにおいて、マスタが起動していない時の処理の流れを示す図である。
【図１３】変形例のシステム構成を説明するための図である。
【図１４】変形例におけるレプリカのデータサーバが実行する処理手順を示すフローチャートである。
【図１５】変形例におけるマスタのデータサーバが実行する処理手順の一部を示すフローチャートである。
【図１６】変形例におけるマスタのデータサーバが実行する処理手順の残りの部分を示すフローチャートである。
【図１７】変形例のシステムにおいて、マスタが起動していない時の処理の流れを示す図である。
【符号の説明】
【００７２】
１０，１０ａ  データサーバ、１２  データ管理部、１４  検出部、１６  問合せ部、１７  マスタ情報保持部、１８，１９  到達先決定部、２０  ネットワーク、３０  クライアント。
【図１】
2007072524.tif 000003
【図２】
2007072524.tif 000004
【図３】
2007072524.tif 000005
【図４】
2007072524.tif 000006
【図５】
2007072524.tif 000007
【図６】
2007072524.tif 000008
【図７】
2007072524.tif 000009
【図８】
2007072524.tif 000010
【図９】
2007072524.tif 000011
【図１０】
2007072524.tif 000012
【図１１】
2007072524.tif 000013
【図１２】
2007072524.tif 000014
【図１３】
2007072524.tif 000015
【図１４】
2007072524.tif 000016
【図１５】
2007072524.tif 000017
【図１６】
2007072524.tif 000018
【図１７】
2007072524.tif 000019