(57)【要約】      （修正有）【課題】分散データストアにおけるサーバ間のトラフィックを削減する。【解決手段】情報処理装置は、データの保存先を特定するための情報を格納する第１情報格納部と、第１情報格納部に格納された情報を用いて、端末から受信した第１のデータの保存先を特定し、第１のデータの保存先が自情報処理装置であるか判定し、第１のデータの保存先が自情報処理装置である場合、第１のデータを保存し、第１のデータの複製の保存先である第２の情報処理装置を所定の方法で決定し、第２の情報処理装置に複製を送信し、第１のデータの保存先が自情報処理装置とは異なる第３の情報処理装置である場合、第１のデータを第３の情報処理装置に送信し、第１のデータの複製を保存する保存処理部とを有する。【選択図】図２
2016099969.tif 000002
【特許請求の範囲】
【請求項１】
データの保存先を特定するための情報を格納する第１情報格納部と、
前記第１情報格納部に格納された情報を用いて、端末から受信した第１のデータの保存先を特定し、前記第１のデータの保存先が自情報処理装置であるか判定し、
前記第１のデータの保存先が前記自情報処理装置である場合、前記第１のデータを保存し、前記第１のデータの複製の保存先である第２の情報処理装置を所定の方法で決定し、当該第２の情報処理装置に前記複製を送信し、
前記第１のデータの保存先が前記自情報処理装置とは異なる第３の情報処理装置である場合、前記第１のデータを前記第３の情報処理装置に送信し、前記第１のデータの複製を保存する保存処理部と、
を有する情報処理装置。
【請求項２】
前記第１のデータの保存先が前記自情報処理装置であり、
前記保存処理部は、
前記第１のデータの識別子と前記第２の情報処理装置の識別子とを対応付けて、第２情報格納部に格納する
請求項１記載の情報処理装置。
【請求項３】
前記第１のデータの保存先が前記第３の情報処理装置であり、
前記保存処理部は、
前記第１のデータに前記自情報処理装置の識別子を付加し、前記第３の情報処理装置に送信する
請求項１記載の情報処理装置。
【請求項４】
前記第１のデータを更新することを要求する第１の更新要求を前記端末から受信した場合、前記第１のデータを更新し、前記第１の更新要求を前記第２の情報処理装置に転送し、
前記第２の情報処理装置とは異なる第４の情報処理装置から前記第１の更新要求を受信した場合、前記第２情報格納部における前記第１のデータの識別子に対応付けられた前記第２の情報処理装置の識別子を、前記第４の情報処理装置の識別子に変更し、前記第２の情報処理装置に、前記第１のデータを削除することを要求する第１の削除要求を送信する更新部
をさらに有する請求項２記載の情報処理装置。
【請求項５】
前記更新部は、
前記自情報処理装置が保存していない第２のデータを更新することを要求する第２の更新要求を前記端末から受信した場合、前記第２のデータの複製を保存し、前記第２のデータの保存先である第５の情報処理装置を前記第１情報格納部を用いて特定し、前記第２のデータと前記自情報処理装置の識別子とを前記第５の情報処理装置に送信し、
前記第２の更新要求を前記第５の情報処理装置から受信した場合、保存された前記第２のデータの複製を更新する
請求項４記載の情報処理装置。
【請求項６】
前記第２の情報処理装置とは異なる第６の情報処理装置又は前記端末から前記第１の削除要求を受信した場合、前記第１のデータを削除すると共に、前記第１の削除要求を前記第２の情報処理装置に転送する削除部
をさらに有する請求項５記載の情報処理装置。
【請求項７】
前記削除部は、
前記第２のデータを削除することを要求する前記第２の削除要求を前記端末から受信した場合、前記第２のデータの複製を削除すると共に、前記第２の削除要求を前記第５の情報処理装置に転送する
請求項６記載の情報処理装置。
【請求項８】
前記第１のデータを参照することを要求する第１の参照要求を受信した場合、前記第１のデータを読み出し、前記第１の参照要求に対する応答を前記第１の参照要求の送信元に送信し、
前記第２のデータを参照することを要求する第２の参照要求を受信した場合、前記第１の参照要求を前記第５の情報処理装置に転送する参照部
をさらに有する請求項７記載の情報処理装置。
【請求項９】
複数の情報処理装置
を有し、
前記複数の情報処理装置のうち第１の情報処理装置が、
データの保存先を特定するための情報を格納する第１情報格納部と、
前記第１情報格納部に格納された情報を用いて、端末から受信した第１のデータの保存先を特定し、前記第１のデータの保存先が前記第１の情報処理装置であるか判定し、
前記第１のデータの保存先が前記第１の情報処理装置である場合、前記第１のデータを保存し、前記複数の情報処理装置のうち前記第１のデータの複製の保存先である第２の情報処理装置を所定の方法で決定し、当該第２の情報処理装置に前記複製を送信し、
前記第１のデータの保存先が前記自情報処理装置とは異なる第３の情報処理装置である場合、前記第１のデータを、前記複数の情報処理装置のうち前記第３の情報処理装置に送信し、前記第１のデータの複製を保存する第１保存処理部と、
を有し、
前記第２の情報処理装置が、
前記第２の情報処理装置から受信した前記第１のデータの複製を保存する第２保存処理部
を有し、
前記第３の情報処理装置が、
前記第３の情報処理装置から受信した前記第１のデータを保存する第３保存処理部
を有するデータ保存システム。
【請求項１０】
前記コンピュータが、
データの保存先を特定するための情報を格納する第１情報格納部に格納された前記情報を用いて、端末から受信した第１のデータの保存先を特定し、前記第１のデータの保存先が前記コンピュータであるか判定し、
前記第１のデータの保存先が前記コンピュータである場合、前記第１のデータを保存し、前記第１のデータの複製の保存先である第２のコンピュータを所定の方法で決定し、当該第２のコンピュータに前記複製を送信し、
前記第１のデータの保存先が前記コンピュータとは異なる第３のコンピュータである場合、前記第１のデータを前記第３のコンピュータに送信し、前記第１のデータの複製を保存する、
処理を実行するデータ保存方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散データストアに関する。
【背景技術】
【０００２】
複数のサーバによって実現される分散データストアにおいては、システムの可用性を高め、クライアント端末から受け付けたデータ（以下、オブジェクトと呼ぶ）のレプリカが生成される。例えば或る文献は、マスタ計算機とレプリカ計算機とを有するシステムを開示する。マスタ計算機は、オリジナルのデータを取り扱い、レプリカ計算機は、オリジナルのデータの複製を取り扱う。また、或る文献は、マスタサイトとレプリカサイトとを備え、マスタサイト及びレプリカサイトにデータを分散して保存するシステムを開示する。
【０００３】
なお、分散データストア内においては、オブジェクトを保存する時、オブジェクトを更新する時、及び、オブジェクトが参照される時などにオブジェクトがサーバ間で転送される。従って、サーバ間で転送されるオブジェクトの数を減らすことができれば、サーバの処理が高速化するので、分散データストアの性能を高めることができる。但し、上記の文献においては、分散データストアにおけるサーバ間のトラフィックには着目していない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２８４９９８号公報
【特許文献２】特開２００５−３３９４１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従って、本発明の目的は、１つの側面では、分散データストアにおけるサーバ間のトラフィックを削減するための技術を提供することである。
【課題を解決するための手段】
【０００６】
本発明に係る情報処理装置は、データの保存先を特定するための情報を格納する第１情報格納部と、第１情報格納部に格納された情報を用いて、端末から受信した第１のデータの保存先を特定し、第１のデータの保存先が自情報処理装置であるか判定し、第１のデータの保存先が自情報処理装置である場合、第１のデータを保存し、第１のデータの複製の保存先である第２の情報処理装置を所定の方法で決定し、当該第２の情報処理装置に複製を送信し、第１のデータの保存先が自情報処理装置とは異なる第３の情報処理装置である場合、第１のデータを第３の情報処理装置に送信し、第１のデータの複製を保存する保存処理部とを有する。
【発明の効果】
【０００７】
１つの側面では、分散データストアにおけるサーバ間のトラフィックを削減できるようになる。
【図面の簡単な説明】
【０００８】
【図１】図１は、ハッシュ技術を利用した分散データストアの一例を示す図である。
【図２】図２は、本実施の形態の概要を説明するための図である。
【図３】図３は、本実施の形態のシステム概要を示す図である。
【図４】図４は、サーバの機能ブロック図である。
【図５】図５は、マスタテーブル格納部に格納されるマスタテーブルの一例を示す図である。
【図６】図６は、レプリカテーブル格納部に格納されるレプリカテーブルの一例を示す図である。
【図７】図７は、メインの処理フローを示す図である。
【図８】図８は、メッセージの一例を示す図である。
【図９】図９は、保存処理の処理フローを示す図である。
【図１０】図１０は、メッセージの一例を示す図である。
【図１１】図１１は、保存処理の処理フローを示す図である。
【図１２】図１２は、参照処理の処理フローを示す図である。
【図１３】図１３は、更新処理の処理フローを示す図である。
【図１４】図１４は、更新処理の処理フローを示す図である。
【図１５】図１５は、削除処理の処理フローを示す図である。
【図１６】図１６は、削除処理の処理フローを示す図である。
【図１７】図１７は、保存要求に対する処理の一例を示すシーケンス図である。
【図１８】図１８は、参照要求に対する処理の一例を示すシーケンス図である。
【図１９】図１９は、更新要求に対する処理の一例を示すシーケンス図である。
【図２０】図２０は、削除要求に対する処理の一例を示すシーケンス図である。
【図２１】図２１は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【０００９】
まず、本実施の形態の概要を説明する。本実施の形態においては、オブジェクトの保存先を決定する方法としてハッシュ技術を利用する。ハッシュ技術としては、例えばコンシステントハッシュ法（Consistent Hashing）等がよく知られている。ハッシュ技術によれば、オブジェクトの数が増えたとしてもオブジェクトと保存先との対応関係を表すデータのサイズが大きくなることを抑制でき、また、オブジェクトと保存先との対応関係を頻繁に変更しなくて済むようになる。
【００１０】
図１を用いて、ハッシュ技術を利用した分散データストアについて説明する。図１においては、分散データストアがサーバＡ乃至Ｃにより実現されており、各サーバは、オブジェクトのマスタを保存するサーバ（以下、マスタサーバと呼ぶ）を特定するためのテーブル１１と、オブジェクトのレプリカを保存するサーバ（以下、レプリカサーバと呼ぶ）を特定するためのテーブル１２とを管理する。サーバＣは、クライアント端末からオブジェクトの保存要求を受け付けると、受け付けたオブジェクトのＩＤ（IDentifier）から算出されたハッシュ値と、マスタ用のテーブル１１及びレプリカ用のテーブル１２とを用いて、マスタサーバ及びレプリカサーバを特定する。算出されたハッシュ値が４００であるとすると、マスタはサーバＢに転送され、レプリカはサーバＡに転送される。
【００１１】
この場合、オブジェクトの転送回数は２回になる。マスタの保存先又はレプリカの保存先のいずれかがサーバＣであればオブジェクトの転送回数は１回であるが、ハッシュ技術の特性から、保存先のサーバを任意に設定することはできない。従って、図１に示した分散データストアにおいては、オブジェクトの転送回数が増え、その結果サーバ間のトラフィックが増えることになる。
【００１２】
そこで本実施の形態においては、図２に示すようにオブジェクトを保存する。図２においては、分散データストアがサーバＡ乃至Ｃにより実現されており、各サーバは、マスタサーバを特定するためのテーブル２１と、レプリカサーバ（ここでは、そのサーバが保存するオブジェクトのレプリカを保存するサーバ）を特定するためのテーブル２２とを管理する。テーブル２２の内容はサーバ毎に異なる。
【００１３】
サーバＣは、クライアント端末からオブジェクトの保存要求を受け付けると、受け付けたオブジェクトのＩＤ（IDentifier）から算出されたハッシュ値と、マスタ用のテーブル２１を用いて、マスタを保存するサーバを特定する。
【００１４】
算出されたハッシュ値が３００であるとすると、マスタはサーバＡに転送される。ここで、サーバＣは、オブジェクトのレプリカをサーバＣの記憶装置に保存する。すなわち、サーバＣがレプリカサーバになる。
【００１５】
また、算出されたハッシュ値が８００であるとすると、マスタはサーバＣに保存される。ここで、サーバＣは、レプリカサーバを所定の方法で（例えば、サーバＣ以外のサーバの中からランダムに）特定し、レプリカサーバにオブジェクトのレプリカを送信する。そして、サーバＣは、レプリカサーバに送信したオブジェクトのＩＤに対応付けてレプリカサーバのＩＤをテーブル２２に保存する。
【００１６】
このように、オブジェクトの保存要求を受け付けたサーバがマスタサーバである場合にはレプリカサーバだけにオブジェクトを送信し、オブジェクトの保存要求を受け付けたサーバがマスタサーバではない場合にはマスタサーバだけにオブジェクトを送信することになる。よって、図１の例と比較すると、オブジェクトの転送回数を減らすことができるようになる。
【００１７】
以下では、本実施の形態をより詳細に説明する。図３に、本実施の形態におけるシステム概要を示す。本実施の形態における分散データストア１は、サーバＡ乃至Ｃによって実現される。クライアント端末３はネットワークを介してサーバＡ乃至Ｃに接続されており、クライアント端末３とサーバＡ乃至Ｃとの間において通信が行われる。また、サーバＡ乃至Ｃの各々は他のサーバとの間で通信を行う。ネットワークは、インターネット等のＷＡＮ（Wide Area Network）を含む場合もある。図３において、サーバの数は３であるが、数に限定は無い。
【００１８】
図４に、サーバの機能ブロック図を示す。サーバは、保存処理部１０１と、参照部１０３と、更新部１０５と、削除部１０７と、マスタテーブル格納部１０９と、レプリカテーブル格納部１１１と、オブジェクト格納部１１３とを含む。
【００１９】
保存処理部１０１は、マスタテーブル格納部１０９に格納されたデータに基づき処理を実行し、処理結果に基づきレプリカテーブル格納部１１１に格納されたデータを更新する。また、保存処理部１０１は、オブジェクト格納部１１３にオブジェクトを保存する。参照部１０３は、マスタテーブル格納部１０９に格納されたデータに基づき処理を実行し、処理結果に基づき、オブジェクト格納部１１３に格納されたオブジェクトを読み出し送信する。更新部１０５は、マスタテーブル格納部１０９に格納されたデータに基づき処理を実行し、処理結果に基づきレプリカテーブル格納部１１１に格納されたデータを更新する。また、更新部１０５は、オブジェクト格納部１１３に格納されたオブジェクトを更新する。削除部１０７は、マスタテーブル格納部１０９に格納されたデータに基づき処理を実行する。また、削除部１０７は、オブジェクト格納部１１３に格納されたオブジェクトを削除する。
【００２０】
図５に、マスタテーブル格納部１０９に格納されるマスタテーブルの一例を示す。図５の例では、マスタサーバのＩＤと、そのマスタサーバが保存するオブジェクトのＩＤから算出されるハッシュ値の範囲とが格納される。サーバＡ乃至Ｃが管理するマスタテーブルの内容は同じであり、マスタテーブルの内容は管理者等によって予め設定される。例えばサーバが追加された場合、サーバが削除された場合、或いはサーバが故障した場合等においては、サーバＡ乃至Ｃのマスタテーブルの内容が変更される。
【００２１】
図６に、レプリカテーブル格納部１１１に格納されるレプリカテーブルの一例を示す。図６の例では、オブジェクトのＩＤと、そのオブジェクトについてのレプリカサーバのＩＤとが格納される。図６の例では、図６に示したレプリカテーブルをもつサーバは、ＩＤがＡＡＡであるオブジェクトのマスタ、ＢＢＢであるオブジェクトのマスタ、及びＣＣＣであるオブジェクトのマスタを保存する。そして、ＩＤがＡＡＡであるオブジェクトのレプリカをサーバＢが保存し、ＩＤがＢＢＢであるオブジェクトのレプリカをサーバＣが保存し、ＩＤがＣＣＣであるオブジェクトのレプリカをサーバＢが保存する。
【００２２】
次に、図７乃至図２０を用いて、本実施の形態におけるサーバの動作について説明する。まず、サーバ（ここでは、サーバＡ乃至Ｃのいずれであってもよい）はメッセージを受信する。
【００２３】
図８に、メッセージの一例を示す。メッセージは、通信ヘッダ部と、通信データ部とを含む。通信ヘッダ部は送信元アドレスと送信先アドレスとを含み、通信データ部はメッセージ種別とオブジェクトのＩＤとオブジェクトとを含む。通信データ部はオブジェクト操作メッセージと呼ばれる。オブジェクト操作メッセージは、ヘッダ部とデータ部とを含む。オブジェクト操作メッセージのヘッダ部はメッセージ種別とオブジェクトのＩＤとを含み、オブジェクト操作メッセージのデータ部はオブジェクトを含む。なお、メッセージが転送される際には、送信元アドレス及び送信先アドレスが付け替えられる。
【００２４】
サーバは、受信したメッセージに含まれる「メッセージ種別」を用いて、メッセージの種別を特定し（図７：ステップＳ１）、受信したメッセージの種別が保存要求であるか判断する（ステップＳ３）。保存要求は、オブジェクトを保存することを要求するメッセージである。
【００２５】
受信したメッセージの種別が保存要求である場合（ステップＳ３：Ｙｅｓルート）、サーバの保存処理部１０１は、保存処理を実行する（ステップＳ５）。保存処理については後で詳細に説明する。
【００２６】
受信したメッセージの種別が保存要求ではない場合（ステップＳ３：Ｎｏルート）、サーバは、受信したメッセージの種別が参照要求であるか判断する（ステップＳ７）。参照要求は、オブジェクトを参照することを要求するメッセージである。
【００２７】
受信したメッセージの種別が参照要求である場合（ステップＳ７：Ｙｅｓルート）、サーバの参照部１０３は、参照処理を実行する（ステップＳ９）。参照処理については後で詳細に説明する。
【００２８】
受信したメッセージの種別が参照要求ではない場合（ステップＳ７：Ｎｏルート）、サーバは、受信したメッセージの種別が更新要求であるか判断する（ステップＳ１１）。更新要求は、オブジェクトを更新することを要求するメッセージである。
【００２９】
受信したメッセージの種別が更新要求である場合（ステップＳ１１：Ｙｅｓルート）、サーバの更新部１０５は、更新処理を実行する（ステップＳ１３）。更新処理については後で詳細に説明する。
【００３０】
受信したメッセージの種別が更新要求ではない場合（ステップＳ１１：Ｎｏルート）、サーバは、受信したメッセージの種別が削除要求であるか判断する（ステップＳ１５）。削除要求は、オブジェクトを削除することを要求するメッセージである。
【００３１】
受信したメッセージの種別が削除要求である場合（ステップＳ１５：Ｙｅｓルート）、サーバの削除部１０７は、削除処理を実行する（ステップＳ１７）。削除処理については後で詳細に説明する。
【００３２】
受信したメッセージの種別が削除要求ではない場合（ステップＳ１５：Ｎｏルート）、サーバは、受信したメッセージに対してその他の処理を実行する（ステップＳ１９）。そして処理を終了する。ステップＳ１９において実行する処理は、本実施の形態においては説明しないメッセージに対する処理であるので、詳細な説明を省略する。
【００３３】
次に、保存処理、参照処理、更新処理、及び削除処理について説明する。まず、図９乃至図１１を用いて、保存処理について説明する。
【００３４】
サーバの保存処理部１０１は、受信した保存要求に含まれるオブジェクトのＩＤからハッシュ値を算出し、マスタテーブル格納部１０９から、算出されたハッシュ値に対応するマスタサーバを特定する（図９：ステップＳ２１）。
【００３５】
保存処理部１０１は、自サーバ（すなわち、本処理を実行するサーバ）はマスタサーバであるか判断する（ステップＳ２３）。ステップＳ２３においては、保存処理部１０１は、ステップＳ２１において特定されたマスタサーバのＩＤと、自サーバのＩＤとが同じであるか判断する。
【００３６】
自サーバはマスタサーバである場合（ステップＳ２３：Ｙｅｓルート）、保存処理部１０１は、受信した保存要求がレプリカサーバのＩＤを含むか判断する（ステップＳ２５）。
【００３７】
サーバがクライアント端末３から受信するメッセージ（例えば、図８に示したメッセージ）にはレプリカサーバのＩＤは含まれないが、サーバ間で交換されるメッセージには、図１０に示すように、レプリカサーバのＩＤが含まれる場合がある。図１０に示したメッセージは、通信ヘッダ部と、通信データ部とを含む。通信ヘッダ部は送信元アドレスと送信先アドレスとを含み、通信データ部はメッセージ種別とレプリカサーバのＩＤとオブジェクトのＩＤとオブジェクトとを含む。通信データ部はオブジェクト操作メッセージと呼ばれる。オブジェクト操作メッセージは、ヘッダ部とデータ部とを含む。オブジェクト操作メッセージのヘッダ部はメッセージ種別とレプリカサーバのＩＤとオブジェクトのＩＤとを含み、オブジェクト操作メッセージのデータ部はオブジェクトを含む。
【００３８】
保存要求がレプリカサーバのＩＤを含む場合（ステップＳ２５：Ｙｅｓルート）、保存要求の送信元はレプリカサーバである。従って、保存処理部１０１は、保存要求に含まれるレプリカサーバのＩＤで、レプリカテーブル格納部１１１に格納されたレプリカテーブルを更新する（ステップＳ２７）。ステップＳ２７においては、レプリカサーバのＩＤと、保存要求に含まれるオブジェクトのＩＤとを含むエントリがレプリカテーブルに追加される。このようにすることで、マスタサーバのレプリカテーブルには、そのマスタサーバが保存するオブジェクトのレプリカについてのエントリが登録されるようになる。
【００３９】
保存処理部１０１は、保存要求に含まれるオブジェクトのマスタをオブジェクト格納部１１３に保存する（ステップＳ２９）。そして、保存処理部１０１は、保存要求の送信元であるレプリカサーバに、保存要求に対する応答を送信する（ステップＳ３１）。
【００４０】
一方、保存要求がレプリカサーバのＩＤを含まない場合（ステップＳ２５：Ｎｏルート）、保存要求の送信元はクライアント端末３である。従って、保存処理部１０１は、保存要求に含まれるオブジェクトについてのレプリカサーバを所定の方法で決定し、レプリカテーブル格納部１１１に格納されたレプリカテーブルを更新する（ステップＳ３３）。ステップＳ３３において、保存処理部１０１は、決定されたレプリカサーバのＩＤと、保存要求に含まれるオブジェクトのＩＤとを含むエントリをレプリカテーブルに追加する。これにより、マスタサーバのレプリカテーブルには、そのマスタサーバが保存するオブジェクトのレプリカについてのエントリが登録されるようになる。
【００４１】
保存処理部１０１は、決定されたレプリカサーバのＩＤを保存要求に付加し、レプリカサーバに転送する（ステップＳ３５）。そして、保存処理部１０１は、保存要求に含まれるオブジェクトのマスタをオブジェクト格納部１１３に保存する（ステップＳ３７）。そして、保存処理部１０１は、レプリカサーバから保存要求に対する応答を受信した場合に、保存要求の送信元であるクライアント端末３に、保存要求に対する応答を送信する（ステップＳ３９）。そして呼び出し元の処理に戻る。
【００４２】
一方、自サーバはマスタサーバではない場合（ステップＳ２３：Ｎｏルート）、処理は端子Ａを介して図１１のステップＳ４１に移行する。
【００４３】
図１１の説明に移行し、保存処理部１０１は、保存要求の送信元はマスタサーバであるか判断する（ステップＳ４１）。ステップＳ４１においては、例えば、保存要求に含まれる送信元アドレスが、ステップＳ２１において特定されたマスタサーバの送信元アドレスであるか否かによって判断される。
【００４４】
保存要求の送信元はマスタサーバではない場合（ステップＳ４１：Ｎｏルート）、保存要求の送信元はクライアント端末３である。従って、保存処理部１０１は、自サーバのＩＤを保存要求に付加する（ステップＳ４３）。ステップＳ４３の処理によって、図８に示したメッセージから、図１０に示したメッセージが生成される。
【００４５】
保存処理部１０１は、ステップＳ２１において特定されたマスタサーバに、ステップＳ４３において自サーバのＩＤが付加された保存要求を転送する（ステップＳ４５）。これにより、マスタサーバは、どのサーバがレプリカサーバであるか把握できるようになる。
【００４６】
保存処理部１０１は、保存要求に含まれるオブジェクトのレプリカをオブジェクト格納部１１３に保存する（ステップＳ４７）。
【００４７】
保存処理部１０１は、保存要求に対する応答をマスタサーバから受信した場合に、クライアント端末３に、保存要求に対する応答を送信する（ステップＳ４９）。処理は端子Ｂを介して呼び出し元の処理に戻る。
【００４８】
一方、保存要求の送信元はマスタサーバである場合（ステップＳ４１：Ｙｅｓルート）、自サーバはレプリカサーバである。従って、保存処理部１０１は、保存要求に含まれるオブジェクトのレプリカをオブジェクト格納部１１３に保存する（ステップＳ５１）。
【００４９】
保存処理部１０１は、保存要求に対する応答をマスタサーバに送信する（ステップＳ５３）。処理は端子Ｂを介して呼び出し元の処理に戻る。
【００５０】
以上のような処理を実行すれば、クライアント端末３から保存要求を受信したサーバがマスタサーバである場合にはそのサーバにマスタが保存され、クライアント端末３から保存要求を受信したサーバがマスタサーバではない場合にはそのサーバにレプリカが保存される。このようにすれば、マスタ及びレプリカの両方について転送を行わなくてもよいので、分散データストア１におけるサーバ間のトラフィックを減らすことができるようになる。
【００５１】
従って、本実施の形態によれば、レプリカの数に関わらず転送回数を１回減らすことができる。従って、レプリカの数が少ないほどトラフィック削減の効果が高い。
【００５２】
次に、図１２を用いて、参照処理について説明する。
【００５３】
まず、サーバの参照部１０３は、受信した参照要求に含まれるオブジェクトのＩＤからハッシュ値を算出し、マスタテーブル格納部１０９から、算出されたハッシュ値に対応するマスタサーバを特定する（図１２：ステップＳ６１）。なお、参照要求におけるオブジェクトのフィールドには何も含まれていない。
【００５４】
参照部１０３は、自サーバ（すなわち、本処理を実行するサーバ）はマスタサーバであるか判断する（ステップＳ６３）。ステップＳ６３において、参照部１０３は、ステップＳ６１において特定されたマスタサーバのＩＤと、自サーバのＩＤとが同じであるか判断する。
【００５５】
自サーバはマスタサーバである場合（ステップＳ６３：Ｙｅｓルート）、参照部１０３は、参照要求に含まれるオブジェクトのＩＤにより特定されるオブジェクトをオブジェクト格納部１１３から読み出し、読み出したオブジェクトを含む応答を参照要求の送信元に送信する（ステップＳ６５）。そして呼び出し元の処理に戻る。なお、参照要求の送信元は、クライアント端末３又は他のサーバである。
【００５６】
一方、自サーバはマスタサーバではない場合（ステップＳ６３：Ｎｏルート）、参照部１０３は、ステップＳ６１において特定されたマスタサーバに参照要求を転送する（ステップＳ６７）。そして呼び出し元の処理に戻る。
【００５７】
以上のような処理を実行すれば、クライアント端末３から受信した参照要求を適切に処理できるようになる。なお、参照処理においてはマスタの内容が参照されるので、レプリカの内容は参照されない。従って、マスタが更新されており且つレプリカが更新されていない状態でレプリカサーバが参照要求を受信した場合において、更新前の内容を送信してしまうことを防げる。
【００５８】
次に、図１３乃至図１４を用いて、更新処理について説明する。
【００５９】
まず、サーバの更新部１０５は、受信した更新要求に含まれるオブジェクトのＩＤからハッシュ値を算出し、マスタテーブル格納部１０９から、算出されたハッシュ値に対応するマスタサーバを特定する（図１３：ステップＳ７１）。
【００６０】
更新部１０５は、自サーバ（すなわち、本処理を実行するサーバ）はマスタサーバであるか判断する（ステップＳ７３）。ステップＳ７３において、更新部１０５は、ステップＳ７１において特定されたマスタサーバのＩＤと、自サーバのＩＤとが同じであるか判断する。
【００６１】
自サーバはマスタサーバである場合（ステップＳ７３：Ｙｅｓルート）、更新部１０５は、受信した更新要求がレプリカサーバのＩＤを含むか判断する（ステップＳ７５）。レプリカサーバのＩＤを含むメッセージは、例えば図１０に示したメッセージである。
【００６２】
更新要求がレプリカサーバのＩＤを含む場合（ステップＳ７５：Ｙｅｓルート）、更新要求の送信元は、更新要求に含まれるオブジェクトのレプリカを新たに保存することになったレプリカサーバである。従って、更新部１０５は、更新要求に含まれるオブジェクトのＩＤに対応するレプリカサーバを特定する。ここで特定されるレプリカサーバは元のレプリカサーバ（すなわち、更新前においてレプリカを保存するサーバ）である。そして、更新部１０５は、元のレプリカサーバに、更新要求に含まれるオブジェクトのＩＤを含む削除要求を送信する（ステップＳ７７）。これに応じ、元のレプリカサーバは、削除要求に含まれるオブジェクトのＩＤに対応するオブジェクトをオブジェクト格納部１１３から削除する。これにより、更新前のオブジェクトが分散データストア１内に残ることはなくなる。
【００６３】
なお、元のレプリカサーバと、更新後のオブジェクトのレプリカを新たに保存することになったレプリカサーバとが同じである場合には、ステップＳ７７の処理は省略される。
【００６４】
更新部１０５は、更新要求に含まれるレプリカサーバのＩＤで、レプリカテーブル格納部１１１に格納されたレプリカテーブルを更新する（ステップＳ７９）。ステップＳ７９においては、レプリカテーブルに格納され且つ更新要求に含まれるオブジェクトのＩＤに対応するレプリカサーバのＩＤを、更新要求に含まれるレプリカサーバのＩＤに変更する。このようにすることで、マスタサーバのレプリカテーブルには、更新後のオブジェクトのレプリカを新たに保存することになったレプリカサーバについてのエントリが登録されるようになる。
【００６５】
更新部１０５は、更新要求に含まれるオブジェクトで、オブジェクト格納部１１３に格納されたオブジェクトのマスタを更新する（ステップＳ８１）。そして、更新部１０５は、更新要求の送信元であるレプリカサーバに、更新要求に対する応答を送信する（ステップＳ８３）。
【００６６】
一方、更新要求がレプリカサーバのＩＤを含まない場合（ステップＳ７５：Ｎｏルート）、更新要求の送信元はクライアント端末３である。従って、更新部１０５は、更新要求に含まれるオブジェクトのＩＤに対応するレプリカサーバをレプリカテーブル格納部１１１に格納されたレプリカテーブルから特定する（ステップＳ８５）。
【００６７】
更新部１０５は、ステップＳ８５において特定されたレプリカサーバに、更新要求を転送する（ステップＳ８７）。そして、更新部１０５は、更新要求に含まれるオブジェクトで、オブジェクト格納部１１３に格納されたマスタを更新する（ステップＳ８９）。
【００６８】
更新部１０５は、ステップＳ８５において特定されたレプリカサーバから更新要求の応答を受信した場合、更新要求の応答をクライアント端末３に送信する（ステップＳ９１）。そして呼び出し元の処理に戻る。
【００６９】
一方、自サーバはマスタサーバではない場合（ステップＳ７３：Ｎｏルート）、処理は端子Ｃを介して図１４のステップＳ９３に移行する。
【００７０】
図１４の説明に移行し、更新部１０５は、更新要求の送信元はマスタサーバであるか判断する（ステップＳ９３）。ステップＳ９３においては、例えば、更新要求に含まれる送信元アドレスが、ステップＳ７１において特定されたマスタサーバの送信元アドレスであるか否かによって判断される。
【００７１】
更新要求の送信元はマスタサーバではない場合（ステップＳ９３：Ｎｏルート）、更新要求の送信元はクライアント端末３である。従って、更新部１０５は、自サーバのＩＤを更新要求に付加する（ステップＳ９５）。ステップＳ９５の処理によって、図８に示したメッセージから、図１０に示したメッセージが生成される。
【００７２】
更新部１０５は、ステップＳ７１において特定されたマスタサーバに、ステップＳ９５において自サーバのＩＤが付加された更新要求を転送する（ステップＳ９７）。これにより、マスタサーバは、更新後のオブジェクトのレプリカを保存するレプリカサーバがどのサーバであるか把握できるようになる。
【００７３】
更新部１０５は、更新要求に含まれるオブジェクトのレプリカを、オブジェクト格納部１１３に保存する（ステップＳ９９）。なお、自サーバが元のレプリカサーバである場合にはオブジェクト格納部１１３に既にレプリカが格納されているので、更新部１０５は、そのレプリカを、更新要求に含まれるオブジェクトのレプリカで更新する。
【００７４】
更新部１０５は、更新要求に対する応答をマスタサーバから受信した場合に、クライアント端末３に、更新要求に対する応答を送信する（ステップＳ１０１）。処理は端子Ｄを介して呼び出し元の処理に戻る。
【００７５】
一方、更新要求の送信元はマスタサーバである場合（ステップＳ９３：Ｙｅｓルート）、自サーバはレプリカサーバである。従って、更新部１０５は、更新要求に含まれるオブジェクトで、オブジェクト格納部１１３に格納されたレプリカを更新する（ステップＳ１０３）。
【００７６】
更新部１０５は、更新要求に対する応答をマスタサーバに送信する（ステップＳ１０５）。処理は端子Ｄを介して呼び出し元の処理に戻る。
【００７７】
以上のような処理を実行すれば、クライアント端末３から更新要求を受信したサーバがマスタサーバである場合にはそのサーバに保存されたマスタが更新され、クライアント端末３から更新要求を受信したサーバがマスタサーバではない場合にはそのサーバに更新後のオブジェクトのレプリカが保存される。オブジェクトの更新の場合においても、マスタ及びレプリカの両方について転送を行わなくてもよいので、分散データストア１におけるサーバ間のトラフィックを減らすことができるようになる。
【００７８】
次に、図１５乃至図１６を用いて、削除処理について説明する。
【００７９】
まず、サーバの削除部１０７は、受信した削除要求に含まれるオブジェクトのＩＤからハッシュ値を算出し、マスタテーブル格納部１０９から、算出されたハッシュ値に対応するマスタサーバを特定する（図１５：ステップＳ１１１）。なお、削除要求におけるオブジェクトのフィールドには何も含まれていない。
【００８０】
削除部１０７は、自サーバ（すなわち、本処理を実行するサーバ）はマスタサーバであるか判断する（ステップＳ１１３）。ステップＳ１１３において、削除部１０７は、ステップＳ１１１において特定されたマスタサーバのＩＤと、自サーバのＩＤとが同じであるか判断する。
【００８１】
自サーバはマスタサーバである場合（ステップＳ１１３：Ｙｅｓルート）、削除部１０７は、受信した削除要求に含まれるオブジェクトのＩＤに対応するレプリカサーバを、レプリカテーブル格納部１１１に格納されたレプリカテーブルから特定する（ステップＳ１１５）。
【００８２】
削除部１０７は、削除要求の送信元がレプリカサーバであるか判定する（ステップＳ１１７）。ステップＳ１１７において、削除部１０７は、ステップＳ１１５において特定されたレプリカサーバのアドレスと、削除要求に含まれる送信元アドレスとが同じであるか否かによって判断する。
【００８３】
削除要求の送信元がレプリカサーバである場合（ステップＳ１１７：Ｙｅｓルート）、削除部１０７は、削除要求に含まれるオブジェクトのＩＤによって特定されるオブジェクトのマスタを、オブジェクト格納部１１３から削除する（ステップＳ１１９）。
【００８４】
削除部１０７は、削除要求に対する応答をレプリカサーバに送信する（ステップＳ１２１）。また、削除部１０７は、削除要求に含まれるオブジェクトのＩＤを含むエントリをレプリカテーブル格納部１１１におけるレプリカテーブルから削除する。そして呼び出し元の処理に戻る。
【００８５】
一方、削除要求の送信元がレプリカサーバではない場合（ステップＳ１１７：Ｎｏルート）、削除要求の送信元はレプリカサーバ以外のサーバ又はクライアント端末３である。削除部１０７は、削除要求に含まれるオブジェクトのＩＤによって特定されるオブジェクトのマスタを、オブジェクト格納部１１３から削除する（ステップＳ１２３）。
【００８６】
削除部１０７は、削除要求をレプリカサーバに転送する（ステップＳ１２５）。そして、削除部１０７は、削除要求に対する応答をレプリカサーバから受信した場合に、削除要求の応答を、削除要求の送信元に送信する（ステップＳ１２７）。また、削除部１０７は、削除要求に含まれるオブジェクトのＩＤを含むエントリをレプリカテーブル格納部１１１におけるレプリカテーブルから削除する。そして呼び出し元の処理に戻る。
【００８７】
一方、自サーバはマスタサーバではない場合（ステップＳ１１３：Ｎｏルート）、処理は端子Ｅを介して図１６のステップＳ１３１に移行する。
【００８８】
図１６の説明に移行し、削除部１０７は、削除要求の送信元はマスタサーバであるか判断する（ステップＳ１３１）。ステップＳ１３１においては、例えば、削除要求に含まれる送信元アドレスが、ステップＳ１１１において特定されたマスタサーバの送信元アドレスであるか否かによって判断される。
【００８９】
削除要求の送信元はマスタサーバではない場合（ステップＳ１３１：Ｎｏルート）、削除要求の送信元はクライアント端末３である。従って、削除部１０７は、削除要求に含まれるオブジェクトのＩＤによって特定されるオブジェクトのレプリカを自サーバが保存している場合には、そのオブジェクトを削除する（ステップＳ１３３）。なお、自サーバがレプリカサーバではない場合には、自サーバにはオブジェクトのレプリカは保存されていない。
【００９０】
削除部１０７は、ステップＳ１１１において特定されたマスタサーバに削除要求を転送する（ステップＳ１３５）。これにより、マスタサーバは、オブジェクトのマスタを削除できるようになる。
【００９１】
削除部１０７は、削除要求に対する応答をマスタサーバから受信した場合に、クライアント端末３に、削除要求に対する応答を送信する（ステップＳ１３７）。処理は端子Ｆを介して呼び出し元の処理に戻る。
【００９２】
一方、削除要求の送信元はマスタサーバである場合（ステップＳ１３１：Ｙｅｓルート）、自サーバはレプリカサーバである。従って、削除部１０７は、削除要求に含まれるオブジェクトのＩＤによって特定されるオブジェクトのレプリカを、オブジェクト格納部１１３から削除する（ステップＳ１３９）。
【００９３】
削除部１０７は、削除要求に対する応答をマスタサーバに送信する（ステップＳ１４１）。処理は端子Ｆを介して呼び出し元の処理に戻る。
【００９４】
以上のような処理を実行すれば、マスタ及びレプリカの両方が分散データストア１から削除される。
【００９５】
次に、図１７乃至図２０を用いて、上で説明した処理をより具体的に説明する。
【００９６】
図１７を用いて、保存要求に対する処理をより具体的に説明する。クライアント端末３は、例えばラウンドロビン等によって、保存要求の送信先のサーバを選択する（ステップＳ１７０１）。ここでは、送信先がサーバＡであるとする。クライアント端末３は、保存要求をサーバＡに送信する。
【００９７】
サーバＡは、クライアント端末３から保存要求を受信し、マスタテーブルを検索してマスタサーバを特定する（ステップＳ１７０２）。ここでは、サーバＢがマスタサーバであるとする。サーバＡは、サーバＡのＩＤを付加した保存要求をサーバＢに転送する。また、サーバＡは、保存要求に含まれるオブジェクトのレプリカを保存する（ステップＳ１７０３）。
【００９８】
マスタサーバであるサーバＢは、サーバＡから保存要求を受信し、保存要求に含まれるサーバＡのＩＤでレプリカテーブルを更新し（ステップＳ１７０４）、保存要求に含まれるオブジェクトのマスタを保存する（ステップＳ１７０５）。そして、サーバＢはサーバＡに応答を送信し、サーバＡはクライアント端末３に応答を送信する。
【００９９】
図１８を用いて、参照要求に対する処理をより具体的に説明する。クライアント端末３は、例えばラウンドロビン等によって、参照要求の送信先のサーバを選択する（ステップＳ１８０１）。ここでは、送信先がサーバＡであるとする。クライアント端末３は、参照要求をサーバＡに送信する。
【０１００】
サーバＡは、クライアント端末３から参照要求を受信し、マスタテーブルを検索してマスタサーバを特定する（ステップＳ１８０２）。ここでは、サーバＢがマスタサーバであるとする。サーバＡは、参照要求をサーバＢに転送する。
【０１０１】
マスタサーバであるサーバＢは、サーバＡから参照要求を受信し、オブジェクト格納部１１３からオブジェクトを読み出す（ステップＳ１８０３）。そして、サーバＢは、読み出されたオブジェクトを含む応答をサーバＡに送信し、サーバＡはクライアント端末３に応答を送信する。
【０１０２】
図１９を用いて、更新要求に対する処理をより具体的に説明する。クライアント端末３は、例えばラウンドロビン等によって、更新要求の送信先のサーバを選択する（ステップＳ１９０１）。ここでは、送信先がサーバＡであるとする。クライアント端末３は、更新要求をサーバＡに送信する。
【０１０３】
サーバＡは、クライアント端末３から更新要求を受信し、マスタテーブルを検索してマスタサーバを特定する（ステップＳ１９０２）。ここでは、サーバＢがマスタサーバであるとする。サーバＡは、サーバＡのＩＤを付加した更新要求をサーバＢに転送する。また、サーバＡは、更新要求に含まれるオブジェクトのレプリカを保存する（ステップＳ１９０３）。
【０１０４】
マスタサーバであるサーバＢは、サーバＡから更新要求を受信し、更新要求に含まれるサーバＡのＩＤでレプリカテーブルを更新し（ステップＳ１９０４）、更新要求に基づきマスタを更新する（ステップＳ１９０５）。そして、サーバＢは、元のレプリカサーバであるサーバＣに削除要求を送信する。
【０１０５】
元のレプリカサーバであるサーバＣは、サーバＢから削除要求を受信し、オブジェクト格納部１１３からオブジェクトを削除する（ステップＳ１９０６）。そして、サーバＣはサーバＢに応答を送信し、サーバＢはサーバＡに応答を送信し、サーバＡはクライアント端末３に応答を送信する。
【０１０６】
図２０を用いて、削除要求に対する処理をより具体的に説明する。クライアント端末３は、例えばラウンドロビン等によって、削除要求の送信先のサーバを選択する（ステップＳ２００１）。ここでは、送信先がサーバＡであるとする。クライアント端末３は、削除要求をサーバＡに送信する。
【０１０７】
サーバＡは、クライアント端末３から削除要求を受信し、マスタテーブルを検索してマスタサーバを特定する（ステップＳ２００２）。ここでは、サーバＢがマスタサーバであるとする。サーバＡは、削除要求をサーバＢに転送する。
【０１０８】
マスタサーバであるサーバＢは、サーバＡから削除要求を受信し、削除されるオブジェクトのＩＤを含むエントリをレプリカテーブルから削除し（ステップＳ２００３）、削除要求に基づきマスタを削除する（ステップＳ２００４）。そして、サーバＢは、レプリカサーバであるサーバＣに削除要求を転送する。
【０１０９】
レプリカサーバであるサーバＣは、サーバＢから削除要求を受信し、削除要求に基づきレプリカを削除する（ステップＳ２００５）。そして、サーバＣはサーバＢに応答を送信し、サーバＢはサーバＡに応答を送信し、サーバＡはクライアント端末３に応答を送信する。
【０１１０】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明したサーバＡ乃至Ｃの機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
【０１１１】
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０１１２】
なお、上ではレプリカの数が１つである例を示したが、レプリカの数は２以上である場合に対しても本実施の形態を適用することができる。
【０１１３】
なお、参照処理においてはレプリカサーバのレプリカを参照していないが、レプリカサーバのレプリカを参照してもよい。このようにすれば、参照要求を受信したサーバがレプリカサーバである場合にはマスタサーバに参照要求を転送しなくてもよいので、クライアント端末３に応答を送信するまでの時間が短縮される。
【０１１４】
なお、上で述べたサーバＡ乃至Ｃ及びクライアント端末３は、コンピュータ装置であって、図２１に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１１５】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１１６】
本実施の形態の第１の態様に係る情報処理装置は、（Ａ）データの保存先を特定するための情報を格納する第１情報格納部と、（Ｂ）第１情報格納部に格納された情報を用いて、端末から受信した第１のデータの保存先を特定し、第１のデータの保存先が自情報処理装置であるか判定し、第１のデータの保存先が自情報処理装置である場合、第１のデータを保存し、第１のデータの複製の保存先である第２の情報処理装置を所定の方法で決定し、当該第２の情報処理装置に複製を送信し、第１のデータの保存先が自情報処理装置とは異なる第３の情報処理装置である場合、第１のデータを第３の情報処理装置に送信し、第１のデータの複製を保存する保存処理部とを有する情報処理装置。
【０１１７】
このようにすれば、情報処理装置間におけるデータの転送回数は１回であるので、分散データストア内における通信データの量を減らせるようになる。
【０１１８】
また、上で述べた第１のデータの保存先が自情報処理装置であってもよい。そして、上で述べた保存処理部は、（ｂ１）第１のデータの識別子と第２の情報処理装置の識別子とを対応付けて、第２情報格納部に格納してもよい。このようにすれば、後でデータに対して処理（例えば更新）が行われた場合に、データの複製の保存先にデータに対して処理が行われたことを通知できるようになる。
【０１１９】
また、上で述べた第１のデータの保存先が第３の情報処理装置であってもよい。そして、上で述べた保存処理部は、（ｂ２）第１のデータに自情報処理装置の識別子を付加し、第３の情報処理装置に送信してもよい。このようにすれば、データの保存先の情報処理装置がデータの複製の保存先を後で特定できるので、データに対して処理（例えば更新）が行われた場合に、同じ処理を複製に対しても行えるようになる。
【０１２０】
また、本情報処理装置が、（Ｃ）第１のデータを更新することを要求する第１の更新要求を端末から受信した場合、第１のデータを更新し、第１の更新要求を第２の情報処理装置に転送し、第２の情報処理装置とは異なる第４の情報処理装置から第１の更新要求を受信した場合、第２情報格納部における第１のデータの識別子に対応付けられた第２の情報処理装置の識別子を、第４の情報処理装置の識別子に変更し、第２の情報処理装置に、第１のデータを削除することを要求する第１の削除要求を送信する更新部をさらに有してもよい。このようにすれば、更新要求を受信した情報処理装置がその更新要求において指定されたデータを保存している場合に、データ及びその複製を適切に更新できるようになる。
【０１２１】
また、上で述べた更新部は、（ｃ１）自情報処理装置が保存していない第２のデータを更新することを要求する第２の更新要求を端末から受信した場合、第２のデータの複製を保存し、第２のデータの保存先である第５の情報処理装置を第１情報格納部を用いて特定し、第２のデータと自情報処理装置の識別子とを第５の情報処理装置に送信し、（ｃ２）第２の更新要求を第５の情報処理装置から受信した場合、保存された第２のデータの複製を更新してもよい。このようにすれば、更新要求を受信した情報処理装置がその更新要求において指定されたデータを保存してない場合に、データ及びそのデータの複製を適切に更新できるようになる。
【０１２２】
また、本情報処理装置が、（Ｄ）第２の情報処理装置とは異なる第６の情報処理装置又は端末から第１の削除要求を受信した場合、第１のデータを削除すると共に、第１の削除要求を第２の情報処理装置に転送する削除部をさらに有してもよい。このようにすれば、削除要求を受信した情報処理装置がその削除要求において指定されたデータを保存している場合に、データ及びそのデータの複製を適切に削除できるようになる。
【０１２３】
また、上で述べた削除部は、（ｄ１）第２のデータを削除することを要求する第２の削除要求を端末から受信した場合、第２のデータの複製を削除すると共に、第２の削除要求を第５の情報処理装置に転送してもよい。このようにすれば、削除要求を受信した情報処理装置がその削除要求において指定されたデータを保存していない場合に、データ及びそのデータの複製を適切に削除できるようになる。
【０１２４】
また、本情報処理装置が、（Ｅ）第１のデータを参照することを要求する第１の参照要求を受信した場合、第１のデータを読み出し、第１の参照要求に対する応答を第１の参照要求の送信元に送信し、第２のデータを参照することを要求する第２の参照要求を受信した場合、第１の参照要求を第５の情報処理装置に転送する参照部をさらに有してもよい。このようにすれば、データ及びその複製を適切に削除できるようになる。
【０１２５】
また、上で述べたデータの保存先を特定するための情報は、ハッシュ値と、識別子から算出されたハッシュ値が当該ハッシュ値と同じであるデータの保存先の情報処理装置の識別子とを含んでもよい。このようにすれば、データを適切に分散できるようになる。
【０１２６】
本実施の形態の第２の態様に係るデータ保存方法は、（Ｆ）データの保存先を特定するための情報を格納する第１情報格納部に格納された情報を用いて、端末から受信した第１のデータの保存先を特定し、第１のデータの保存先がコンピュータであるか判定し、（Ｇ）第１のデータの保存先がコンピュータである場合、第１のデータを保存し、第１のデータの複製の保存先である第２のコンピュータを所定の方法で決定し、当該第２のコンピュータに複製を送信し、（Ｈ）第１のデータの保存先がコンピュータとは異なる第３のコンピュータである場合、第１のデータを第３のコンピュータに送信し、第１のデータの複製を保存する処理を含む。
【０１２７】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【０１２８】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１２９】
（付記１）
データの保存先を特定するための情報を格納する第１情報格納部と、
前記第１情報格納部に格納された情報を用いて、端末から受信した第１のデータの保存先を特定し、前記第１のデータの保存先が自情報処理装置であるか判定し、
前記第１のデータの保存先が前記自情報処理装置である場合、前記第１のデータを保存し、前記第１のデータの複製の保存先である第２の情報処理装置を所定の方法で決定し、当該第２の情報処理装置に前記複製を送信し、
前記第１のデータの保存先が前記自情報処理装置とは異なる第３の情報処理装置である場合、前記第１のデータを前記第３の情報処理装置に送信し、前記第１のデータの複製を保存する保存処理部と、
を有する情報処理装置。
【０１３０】
（付記２）
前記第１のデータの保存先が前記自情報処理装置であり、
前記保存処理部は、
前記第１のデータの識別子と前記第２の情報処理装置の識別子とを対応付けて、第２情報格納部に格納する
付記１記載の情報処理装置。
【０１３１】
（付記３）
前記第１のデータの保存先が前記第３の情報処理装置であり、
前記保存処理部は、
前記第１のデータに前記自情報処理装置の識別子を付加し、前記第３の情報処理装置に送信する
付記１記載の情報処理装置。
【０１３２】
（付記４）
前記第１のデータを更新することを要求する第１の更新要求を前記端末から受信した場合、前記第１のデータを更新し、前記第１の更新要求を前記第２の情報処理装置に転送し、
前記第２の情報処理装置とは異なる第４の情報処理装置から前記第１の更新要求を受信した場合、前記第２情報格納部における前記第１のデータの識別子に対応付けられた前記第２の情報処理装置の識別子を、前記第４の情報処理装置の識別子に変更し、前記第２の情報処理装置に、前記第１のデータを削除することを要求する第１の削除要求を送信する更新部
をさらに有する付記２記載の情報処理装置。
【０１３３】
（付記５）
前記更新部は、
前記自情報処理装置が保存していない第２のデータを更新することを要求する第２の更新要求を前記端末から受信した場合、前記第２のデータの複製を保存し、前記第２のデータの保存先である第５の情報処理装置を前記第１情報格納部を用いて特定し、前記第２のデータと前記自情報処理装置の識別子とを前記第５の情報処理装置に送信し、
前記第２の更新要求を前記第５の情報処理装置から受信した場合、保存された前記第２のデータの複製を更新する
付記４記載の情報処理装置。
【０１３４】
（付記６）
前記第２の情報処理装置とは異なる第６の情報処理装置又は前記端末から前記第１の削除要求を受信した場合、前記第１のデータを削除すると共に、前記第１の削除要求を前記第２の情報処理装置に転送する削除部
をさらに有する付記５記載の情報処理装置。
【０１３５】
（付記７）
前記削除部は、
前記第２のデータを削除することを要求する前記第２の削除要求を前記端末から受信した場合、前記第２のデータの複製を削除すると共に、前記第２の削除要求を前記第５の情報処理装置に転送する
付記６記載の情報処理装置。
【０１３６】
（付記８）
前記第１のデータを参照することを要求する第１の参照要求を受信した場合、前記第１のデータを読み出し、前記第１の参照要求に対する応答を前記第１の参照要求の送信元に送信し、
前記第２のデータを参照することを要求する第２の参照要求を受信した場合、前記第１の参照要求を前記第５の情報処理装置に転送する参照部
をさらに有する付記７記載の情報処理装置。
【０１３７】
（付記９）
前記データの保存先を特定するための情報は、ハッシュ値と、識別子から算出されたハッシュ値が当該ハッシュ値と同じであるデータの保存先の情報処理装置の識別子とを含む
付記１乃至８のいずれか１つ記載の情報処理装置。
【０１３８】
（付記１０）
複数の情報処理装置
を有し、
前記複数の情報処理装置のうち第１の情報処理装置が、
データの保存先を特定するための情報を格納する第１情報格納部と、
前記第１情報格納部に格納された情報を用いて、端末から受信した第１のデータの保存先を特定し、前記第１のデータの保存先が前記第１の情報処理装置であるか判定し、
前記第１のデータの保存先が前記第１の情報処理装置である場合、前記第１のデータを保存し、前記複数の情報処理装置のうち前記第１のデータの複製の保存先である第２の情報処理装置を所定の方法で決定し、当該第２の情報処理装置に前記複製を送信し、
前記第１のデータの保存先が前記自情報処理装置とは異なる第３の情報処理装置である場合、前記第１のデータを、前記複数の情報処理装置のうち前記第３の情報処理装置に送信し、前記第１のデータの複製を保存する第１保存処理部と、
を有し、
前記第２の情報処理装置が、
前記第２の情報処理装置から受信した前記第１のデータの複製を保存する第２保存処理部
を有し、
前記第３の情報処理装置が、
前記第３の情報処理装置から受信した前記第１のデータを保存する第３保存処理部
を有するデータ保存システム。
【０１３９】
（付記１１）
前記コンピュータが、
データの保存先を特定するための情報を格納する第１情報格納部に格納された前記情報を用いて、端末から受信した第１のデータの保存先を特定し、前記第１のデータの保存先が前記コンピュータであるか判定し、
前記第１のデータの保存先が前記コンピュータである場合、前記第１のデータを保存し、前記第１のデータの複製の保存先である第２のコンピュータを所定の方法で決定し、当該第２のコンピュータに前記複製を送信し、
前記第１のデータの保存先が前記コンピュータとは異なる第３のコンピュータである場合、前記第１のデータを前記第３のコンピュータに送信し、前記第１のデータの複製を保存する、
処理を実行するデータ保存方法。
【符号の説明】
【０１４０】
１  分散データストア    ３  クライアント端末
１０１  保存処理部    １０３  参照部
１０５  更新部    １０７  削除部
１０９  マスタテーブル格納部    １１１  レプリカテーブル格納部
１１３  オブジェクト格納部
【図１】
2016099969.tif 000003
【図２】
2016099969.tif 000004
【図３】
2016099969.tif 000005
【図４】
2016099969.tif 000006
【図５】
2016099969.tif 000007
【図６】
2016099969.tif 000008
【図７】
2016099969.tif 000009
【図８】
2016099969.tif 000010
【図９】
2016099969.tif 000011
【図１０】
2016099969.tif 000012
【図１１】
2016099969.tif 000013
【図１２】
2016099969.tif 000014
【図１３】
2016099969.tif 000015
【図１４】
2016099969.tif 000016
【図１５】
2016099969.tif 000017
【図１６】
2016099969.tif 000018
【図１７】
2016099969.tif 000019
【図１８】
2016099969.tif 000020
【図１９】
2016099969.tif 000021
【図２０】
2016099969.tif 000022
【図２１】
2016099969.tif 000023