(57)【要約】【課題】    再送専用サーバを必要とせず、信頼性を確保しながら、マスタサーバの負荷を軽減した、データ複製システムを提供する。【解決手段】    本発明のデータ複製システムは、データを送信し、全データがいずれかのスレーブサーバで受信されるまで未受信データを再送するマスタサーバと、データを受信し、未受信のデータを示す応答を送信し、他のスレーブサーバの応答を受信し、自装置で受信済みのデータで応答に含まれる未受信のデータを送信するスレーブサーバとを含む。【選択図】      図１
2012088955.tif 000002
【特許請求の範囲】
【請求項１】
データを送信する第１のデータ送信部と、
前記送信したデータの受信の状態を含む応答を受け、前記応答に基づき、前記データの未受信の部分があるか否かを判定する第１の応答処理部とを含み、
前記第１の応答処理部の判定の結果として未受信の部分がある場合、前記第１のデータ送信部が前記未受信の部分のデータを再送し、
前記第１の応答処理部の判定の結果として未受信の部分がない場合、データの送信を終了する
第１のサーバと、
前記データの少なくとも一部又は全てを受信する第１のデータ受信部と、
前記データの受信状態に関する情報を含む第１の応答を送信する第１の応答返却部と
を含む第２のサーバと、
前記データの少なくとも一部又は全てを受信する第２のデータ受信部と、
前記データの受信状態に関する情報を含む第２の応答を送信する第２の応答返却部と、
前記第２のサーバの前記第１の応答を受信し、自装置で受信済みのデータに、前記第１の応答に含まれる未受信のデータがあるか否かを判定する第２の応答処理部と、
前記受信済みのデータで前記第１の応答で未受信となっているデータを送信する第２のデータ送信部と
を含む第３のサーバと
を含むデータ複製システム。
【請求項２】
前記第１のデータ送信部が、前記データを複数の小部分に分割して送信し、
前記第１の応答返却部が、前記小部分の受信状態を含む第１の応答を送信し、
前記第２のデータ送信部が、前記未受信のデータの小部分を送信することを特徴とする請求項１に記載のデータ複製システム。
【請求項３】
前記第１のサーバが、
前記小部分の受信状態を示す応答表をさらに含み、
前記第１の応答処理部が、
前記第１及び第２の応答に基づき前記応答表の小部分の受信状態を更新し、
全ての小部分が受信済みとなった場合に受信部分がないと判定する
ことを特徴とする請求項２に記載のデータ複製システム。
【請求項４】
前記第２のサーバが、
前記第３のサーバの前記第２の応答を受信し、前記第２の応答に含まれる未受信のデータがあるか否かを判定する第３の応答処理部をさらに含み、
前記第１の応答返却部が、
前記第２の応答が未受信のデータを含まない場合、前記第１の応答を前記第３のサーバに送信することを特徴とする請求項１乃至請求項３に記載のデータ複製システム。
【請求項５】
データを受信するデータ受信部と、
前記データの未受信の部分に関する情報を含む第１の応答を送信する応答返却部と、
前記データの受信結果を含む第２の応答を受信し、受信済みのデータに、前記受信した第２の応答に含まれる未受信のデータの少なくとも一部が含まれる否かを判定する応答処理部と、
前記受信済みでデータで前記第２の応答に含まれる未受信のデータを送信するデータ送信部と
を含むデータ複製サーバ。
【請求項６】
前記第２の応答が未受信のデータを含まない場合、
前記応答返却部が、前記第２の応答を送信した装置に、前記第１の応答を送る
ことを特徴とする請求項５に記載のデータ複製サーバ。
【請求項７】
データを送信し、
前記送信したデータの受信の状態を含む応答を受け、前記応答に基づき、前記データの未受信の部分があるか否かを判定し、
前記判定の結果として未受信の部分がある場合、前記未受信の部分のデータを再送し、
前記判定の結果として未受信の部分がない場合、データの送信を終了する
データ送信と、
前記送信したデータの少なくとも一部又は全てを受信し、
前記データの受信状態に関する情報を含む第１の応答を送信する
データ受信と、
前記送信したデータの少なくとも一部又は全てを受信し、
前記データの受信状態に関する情報を含む第２の応答を送信し、
前記第１の応答を受信し、受信済みのデータで、前記第１の応答に含まれる未受信のデータがあるか否かを判定し、
前記受信済みのデータで前記第１の応答で未受信となっているデータを送信する
データ再送と
を含むデータ複製方法。
【請求項８】
データを受信し、
前記データの未受信の部分に関する情報を含む第１の応答を送信し、
前記データの受信結果を含む第２の応答を受信し、受信済みのデータに、前記第２の応答に含まれる未受信のデータの少なくとも一部があるか否かを判定し、
前記応答の未受信のデータに含まれる前記受信済みのデータを送信する
データ複製方法。
【請求項９】
データを送信する処理と、
前記送信したデータの受信の状態を含む応答を受け、前記応答に基づき、前記データの未受信の部分があるか否かを判定する処理と、
前記判定の結果として未受信の部分がある場合、前記未受信の部分のデータを再送する処理と、
前記判定の結果として未受信の部分がない場合、データの送信を終了する処理と
を含むデータ送信処理と、
前記送信したデータの少なくとも一部又は全てを受信する処理と、
前記データの受信状態に関する情報を含む第１の応答を送信する処理と
を含むデータ受信処理と、
前記送信したデータの少なくとも一部又は全てを受信する処理と、
前記データの受信状態に関する情報を含む第２の応答を送信する処理と、
前記第１の応答を受信し、受信済みのデータで、前記第１の応答に含まれる未受信のデータがあるか否かを判定する処理と、
前記受信済みのデータで前記第１の応答で未受信となっているデータを送信する処理と
を含むデータ再送処理と
をコンピュータに実行させるデータ複製プログラム。
【請求項１０】
データを受信する処理と、
前記データの未受信の部分に関する情報を含む第１の応答を送信する処理と、
前記データの受信結果を含む第２の応答を受信し、受信済みのデータに、前記第２の応答に含まれる未受信のデータの少なくとも一部があるか否かを判定する処理と、
前記応答の未受信のデータに含まれる前記受信済みのデータを送信する処理と
をコンピュータに実行させるデータ複製プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの複製（レプリケーション：replication）に関し、特に、複数の相手に複製データを送信するデータ複製システムに関する。
【背景技術】
【０００２】
コンピュータシステムは、ネットワークを介して多くの情報処理装置（コンピュータ、サーバ）が接続し、情報（データ）をやり取りする。
【０００３】
ネットワーク介した装置間のデータ通信は、装置内部のデータのやり取りに比べ、多くの時間を必要とし、情報処理装置における処理のボトルネック（bottleneck）となっている。特に、ネットワークが大きく又は深くなっていくと、ネットワークを介した情報のやり取りのための通信時間が、増大する。特にメモリを主体としたメモリベースのデータベースシステムとって、このようなネットワークの通信時間は、かなり大きなものとなる。
【０００４】
また、データの信頼性を確保するためにも、データに冗長性を持たせることが必要となっている。
【０００５】
そこで、ネットワークに分散して接続する各装置に複製（レプリケーション：replication）データを配布し、各装置は受け取った複製データを用いて処理するデータ複製システムが、用いられる。このようなデータ複製システムに基づき、各装置は、データを予め受信しておき、データ処理の際にネットワークを介して取得しなくても処理できる。
【０００６】
しかし、ネットワークが大きくなると、ネットワークに接続している装置の数も、増加する。その結果、データ複製システムは、複製データの送信先の増加に伴うデータ通信時間の増加が問題となる。
【０００７】
一般的なネットワークを介したデータ送信は、ＴＣＰ（Transmission Control Protocol）のようにデータ送信の結果を確認する送信と、ＵＤＰ（User Datagram Protocol）のようにデータ送信の結果を確認しない送信とがある。
【０００８】
データ送信の結果を確認する送信は、確実なデータの送信を確保できるが、確認のための時間を必要とするため、送信時間が長くなる。一方、データ送信の結果を確認しない送信は、データ到達確認を必要としないため、送信時間が短くなり、さらに、同時に複数の相手に送信することができる。そのため、データ複製システムは、複製データの送信時間を短くするため、ＵＤＰのような確認しないデータ送信を用いる。
【０００９】
さらに、データ複製システムは、複製データをいくつかの部分に分け、複数のネットワークのコネクションを使用してデータ送信の時間を削減する（例えば、特許文献１を参照）。
【００１０】
図１５は、データ複製システムのデータ送信の一例を示す。図１５に示すマスタサーバ６０は、送信データ６１０をいくつかの小部分（ピース：piece、小片）に分割し、ネットワーク５０に設けた複数のコネクション５１０に分けてスレーブサーバ６５に送信する。スレーブサーバ６５は、受け取ったピースを組み立てて受信データ６５１を構築する。このように、複数のコネクション５１０を使用して送信する図１５に示すデータ複製システムは、コネクション５１０の数を多くするほど通信の時間を短くできる。
【００１１】
図１６は、複数の装置に複製データを送信するデータ複製システムの一例である。マスタサーバ６０は、図１５と同様に、ネットワーク５０に各スレーブサーバ６５用のコネクション５１０を設定して、送信データ６１０をピースに分割して送信する。各スレーブサーバ６５は、個別にピースを受け取り、受信データ６５１を構築する。しかし、図１６に示すマスタサーバ６０において、スレーブサーバ６５の数だけ送信動作が、必要となる問題点があった。
【００１２】
そこで、マスタサーバの処理を少なくするため、マルチキャスト（multicast）を用いたデータ複製システムがある。図１７は、マルチキャストを用いたデータ複製システムの一例を示す。図１７に示すマスタサーバ６０は、ネットワーク５０にデータをマルチキャストする。マルチキャストとは、ネットワーク５０に接続した決められた複数の装置（図１７では、複数のスレーブサーバ６５）に、同時にデータを送信する手法である。つまり、図１７に示すマスタサーバ６０は、１つのデータ送信動作で、複数の装置にデータを送信できる。このように図１７に示すデータ複製システムは、データのピース化及びマルチキャストを用い、データの送信時間を削減できる。
【００１３】
また、複製データは、ネットワークに接続した装置の間で同期していることが必要である。そこで、データ複製システムは、データを同期する仕組みを備えている（例えば、特許文献２、特許文献３を参照）。
【００１４】
また、データ信頼性を確保するためにも、複製データの受信確認が、必要である。しかし、図１５乃至図１７に示すデータ複製システムは、複製として送信した複製データの受信を確認していない。
【００１５】
そこで、送信したデータの受信を確認する仕組みを備えたデータ複製システムがある（例えば、特許文献４又は特許文献５を参照）。
【００１６】
あるいは、データ複製システムは、ＲＭＴＰ（Reliable Multicast Transport Protocol ）のような信頼性を高めたマルチキャストを用いて複製データを送信する。
【００１７】
しかし、特許文献４又は特許文献５に記載に方法、及び、ＲＭＴＰを用いたデータ複製システムにおいて、マスタサーバは、全てのスレーブサーバの受信が完了するまで、確認及び再送が必要なため、マスタサーバの負荷が大きくなるという問題点があった。
【００１８】
そこで、マスタサーバ及びスレーブサーバとは別に、複製データを再送する再送専用サーバを備えるデータ複製システムが、ある（例えば、特許文献５を参照）。
【００１９】
図１８は、再送専用サーバ６８を備えたデータ複製システムの一例を示す図である。
【００２０】
図１８に示すマスタサーバ６０は、マルチキャストの送信先として、スレーブサーバ６５に加え再送専用サーバ６８も含む。再送専用サーバ６８は、受信データ６５１を受け取る。そして、受信データ６５１を受け取った再送専用サーバ６８は、スレーブサーバ６５の受信状態を確認し、データを受け取れなかったスレーブサーバ６５に複製データを再送する。このように特許文献５に記載の再送専用サーバ６８を備えるデータ複製システムは、マスタサーバの負荷を削減できる。
【先行技術文献】
【特許文献】
【００２１】
【特許文献１】特開２００４−１９４２３４（特許３９３０８０２）
【特許文献２】再表２００８／１０５０９８
【特許文献３】特開２００２−２９７４３２（特許４１３１７８１）
【特許文献４】特開２００９−２１２７９６
【特許文献５】特開２００７−３２３４３３
【発明の概要】
【発明が解決しようとする課題】
【００２２】
しかし、図１８に示した又は特許文献５に記載のデータ複製システムにおいて、データ複製システムは、新たに再送専用サーバを備えること必要となる問題点があった。さらに、図１８又は特許文献５に記載のデータ複製システムは、マスタサーバから再送専用サーバに複製データが送信できなかった場合、再送ができず、複製データの信頼性が損なわれる問題点があった。
【００２３】
本発明の目的は、上記問題点を解決し、再送専用サーバを必要とせず、信頼性を確保しながら、マスタサーバの負荷を軽減した、データ複製システムを提供することにある。
【課題を解決するための手段】
【００２４】
本発明のデータ複製システムは、データを送信する第１のデータ送信部と、前記送信したデータの受信の状態を含む応答を受け、前記応答に基づき、前記データの未受信の部分があるか否かを判定する第１の応答処理部とを含み、前記第１の応答処理部の判定の結果として未受信の部分がある場合、前記第１のデータ送信部が前記未受信の部分のデータを再送し、前記第１の応答処理部の判定の結果として未受信の部分がない場合、データの送信を終了する第１のサーバと、前記データの少なくとも一部又は全てを受信する第１のデータ受信部と、前記データの受信状態に関する情報を含む第１の応答を送信する第１の応答返却部とを含む第２のサーバと、前記データの少なくとも一部又は全てを受信する第２のデータ受信部と、前記データの受信状態に関する情報を含む第２の応答を送信する第２の応答返却部と、前記第２のサーバの前記第１の応答を受信し、自装置で受信済みのデータに、前記第１の応答に含まれる未受信のデータがあるか否かを判定する第２の応答処理部と、前記受信済みのデータで前記第１の応答で未受信となっているデータを送信する第２のデータ送信部とを含む第３のサーバと、前記第１のサーバと前記第２のサーバと前記第３のサーバとを接続するネットワークとを含む。
【００２５】
本発明のデータ複製サーバは、データを受信するデータ受信部と、前記データの未受信の部分に関する情報を含む第１の応答を送信する応答返却部と、前記データの受信結果を含む第２の応答を受信し、受信済みのデータに、前記受信した第２の応答に含まれる未受信のデータの少なくとも一部が含まれる否かを判定する応答処理部と、前記第２の応答に含まれる未受信のデータに含まれる前記受信済みでデータを送信するデータ送信部とを含む。
【００２６】
本発明のデータ複製方法は、データを送信し、前記送信したデータの受信の状態を含む応答を受け、前記応答に基づき、前記データの未受信の部分があるか否かを判定し、前記判定の結果として未受信の部分がある場合、前記未受信の部分のデータを再送し、前記判定の結果として未受信の部分がない場合、データの送信を終了するデータ送信と、前記送信したデータの少なくとも一部又は全てを受信し、前記データの受信状態に関する情報を含む第１の応答を送信するデータ受信と、前記送信したデータの少なくとも一部又は全てを受信し、前記データの受信状態に関する情報を含む第２の応答を送信し、前記第１の応答を受信し、受信済みのデータで、前記第１の応答に含まれる未受信のデータがあるか否かを判定し、前記受信済みのデータで前記第１の応答で未受信となっているデータを送信するデータ再送とを含む。
【００２７】
また、本発明のデータ複製方法は、データを受信し、前記データの未受信の部分に関する情報を含む第１の応答を送信し、前記データの受信結果を含む第２の応答を受信し、受信済みのデータに、前記第２の応答に含まれる未受信のデータの少なくとも一部があるか否かを判定し、前記応答の未受信のデータに含まれる前記受信済みのデータを送信する。
【００２８】
本発明のデータ複製プログラムは、データを送信する処理と、前記送信したデータの受信の状態を含む応答を受け、前記応答に基づき、前記データの未受信の部分があるか否かを判定する処理と、前記判定の結果として未受信の部分がある場合、前記未受信の部分のデータを再送する処理と、前記判定の結果として未受信の部分がない場合、データの送信を終了する処理とを含むデータ送信処理と、前記送信したデータの少なくとも一部又は全てを受信する処理と、前記データの受信状態に関する情報を含む第１の応答を送信する処理とを含むデータ受信処理と、前記送信したデータの少なくとも一部又は全てを受信する処理と、前記データの受信状態に関する情報を含む第２の応答を送信する処理と、前記第１の応答を受信し、受信済みのデータで、前記第１の応答に含まれる未受信のデータがあるか否かを判定する処理と、前記受信済みのデータで前記第１の応答で未受信となっているデータを送信する処理とを含むデータ再送処理とをコンピュータに実行させる。
【００２９】
また、本発明のデータ複製プログラムは、データを受信する処理と、前記データの未受信の部分に関する情報を含む第１の応答を送信する処理と、前記データの受信結果を含む第２の応答を受信し、受信済みのデータに、前記第２の応答に含まれる未受信のデータの少なくとも一部があるか否かを判定する処理と、前記応答の未受信のデータに含まれる前記受信済みのデータを送信する処理とをコンピュータに実行させる。
【発明の効果】
【００３０】
本発明によれば、マスタサーバの負荷を低減し、信頼性を確保してスレーブサーバに複製データの送ることができる。
【図面の簡単な説明】
【００３１】
【図１】本発明における第１の実施の形態に係るデータ複製システムの一例を示す図である。
【図２】第１の実施の形態に係るマスタサーバの構成の一例を示すブロック図である。
【図３】第１の実施の形態に係るスレーブサーバの構成の一例を示すブロック図である。
【図４】第１の実施の形態に係るマスタサーバの動作の一例を示すフローチャート図である。
【図５】第１の実施の形態に係るデータピースのマルチキャストの一例を示す図である。
【図６】第１の実施の形態に係る応答の一例を示す図である。
【図７】第１の実施の形態に係るデータピースの再送のマルチキャストの一例を示す図である。
【図８】第１の実施の形態に係るスレーブサーバの受信動作の一例を示すフローチャート図である。
【図９】第１の実施の形態に係るスレーブサーバの応答を受けたときの動作の一例を示すフローチャート図である。
【図１０】第１の実施の形態に係るスレーブサーバにおけるデータ同期の一例を示す図である。
【図１１】第１の実施の形態に係るデータ複製システムの別の一例を示す図である。
【図１２】第２の実施の形態に係るスレーブサーバの構成の一例を示すブロック図である。
【図１３】第２の実施の形態に係るスレーブサーバの応答を受けたときの動作の一例を示すフローチャート図である。
【図１４】第２の実施の形態に係るスレーブサーバの受信動作の一例を示すフローチャート図である。
【図１５】一般的なデータ複製システムのデータの送信を示す図である。
【図１６】一般的なデータ複製システムのデータの送信を示す図である。
【図１７】一般的なデータ複製システムのマルチキャストを用いたデータ送信を示す図である。
【図１８】一般的な再送専用サーバを用いたデータ複製システムを示す図である。
【発明を実施するための最良の形態】
【００３２】
次に、本発明における第１の実施の形態について図面を参照して詳細に説明する。
【００３３】
（第１の実施の形態）
図１は、本実施の形態に係るデータ複製システム１の構成の一例を示すブロック図である。
【００３４】
データ複製システム１は、マスタサーバ１０と、スレーブサーバ２０乃至スレーブサーバ２２と、ネットワーク３０とを含む。なお、図１に示すデータ複製システム１の構成は、説明のための例示である。データ複製システム１は、複数台のマスタサーバ１０を含んでも良く、２台以下又は４台以上のスレーブサーバ２０を含んでよい。さらに、データ複製システム１は、１つのネットワーク３０を含んでよく、３つ以上のネットワーク３０を含んでも良い。
【００３５】
なお、データ複製システム１が複製（レプリケーション：replication）する複製データは、マスタサーバ１０にとっては送信するデータであり、スレーブサーバ２０乃至スレーブサーバ２２にとっては受信するデータであり、各サーバにとって処理が異なるデータである。そのため、以下において、適宜、各サーバが送信する複製データを送信データ、受信する複製データを受信データと言うこともある。例えば、複製としてマスタサーバ１０は、送信データ１１１を送信し、スレーブサーバ２０は、そのデータを受信データ２１１として受信する。
【００３６】
マスタサーバ１０は、複製するデータである送信データ１１１を小部分（ピース：piece、小片）に分け、スレーブサーバ２０乃至スレーブサーバ２２にマルチキャスト（multicast）する。
【００３７】
なお、本実施の形態に係るマスタサーバ１０は、必ずしも送信データ１１１をピースに分けて送信する必要はないが、本実施の形態に係るマスタサーバ１０は、送信データ１１１をピースに分けて送信するとして説明する。図１に示す送信データ１１１の各矩形枠が、各ピースに対応している。さらに、マスタサーバ１０は、送信データ１１１のピースのスレーブサーバ２０乃至スレーブサーバ２２における受信状態を保存する応答表１１５も含む。送信データ１１１のピースに対応するため、応答表１１５は、送信データ１１１と同じ数だけ受信状態を保存する欄を備える。なお、送信データ１１１をピースに分けない場合、マスタサーバ１０は、受信状態を格納する欄を１つ備えればよい。
【００３８】
また、マスタサーバ１０は、スレーブサーバ２０乃至スレーブサーバ２２それぞれに送信データ１１１を送信しても良いが、本実施の形態では、マルチキャストを使用するとして説明する。
【００３９】
スレーブサーバ２０乃至スレーブサーバ２２は、マスタサーバ１０からピースに分割されたデータを受け取り、合成して受信データ２１１として格納し、受信状態を応答として送信する。さらに、スレーブサーバ２０乃至スレーブサーバ２２は、後ほど説明するように受信データ２１１を再送データ（複製データ、同期データ）として再送する。
【００４０】
なお、スレーブサーバ２０乃至スレーブサーバ２２は、以降で説明するように動作すれば、必ずしも同じ構成である必要はない。ただし、本実施の形態のスレーブサーバ２０乃至スレーブサーバ２２は、同じ構成として説明する。そのため、スレーブサーバ２０乃至スレーブサーバ２２に共通する説明は、スレーブサーバ２０を用いて説明する。
【００４１】
なお、スレーブサーバ２０乃至スレーブサーバ２２に異なる番号を付した理由は、後ほどの詳細の便宜のためである。スレーブサーバ２０乃至スレーブサーバ２２は、受信できたピースが異なる。後ほどの説明において、スレーブサーバ２０及びスレーブサーバ２２は、受信できないピースがあり、スレーブサーバ２１は、全てのピースを受信できたとする。そのため、スレーブサーバ２１が、データを再送する。
【００４２】
ネットワーク３０は、マスタサーバ１０とスレーブサーバ２０乃至スレーブサーバ２２とを接続する通信路である。ネットワーク３０は、マスタサーバ１０とスレーブサーバ２０乃至スレーブサーバ２２とが接続できればよい。そのため、ネットワーク３０は、例えば、一般的なＬＡＮ（Local Area Network）で使用されているＩＥＥＥ（The Institute of Electrical and Electronics Engineers, Inc.）８０２．３でもよく、無線ＬＡＮ（ＩＥＥＥ８０２．１１）でもよい。さらに、ネットワーク３０は、一般的なネットワークに限られず、コンピュータ内のバスでもよい。このように、ネットワーク３０は、一般的な通信路で良いため詳細な説明は省略する。
【００４３】
なお、本実施に形態に係るデータ複製システム１が含むネットワーク３０の数は、既に説明したとおり、図１に示す２つに限られず、１つでもよく、３つ以上でも良い。ここでのネットワーク３０の数は、論理ネットワークの数である。そのため、データ複製システム１の各サーバは、ネットワーク３０に関するデータを、ネットワーク３０の数に対応して備えている。
【００４４】
以下では、説明の便宜のため、ネットワーク３０の数を２つとして説明する。
【００４５】
また、データ複製システム１が含む物理ネットワークの数も、特に制限は無い。データ複製システム１は、１つの物理ネットワークに１つ又は複数の論理ネットワークを構築しても良く、各物理ネットワークに個別に論理ネットワークを構築しても良い。さらに、データ複製システム１は、複数の物理ネットワークを結合（aggregate）して論理ネットワークを構築してもよい。
【００４６】
次に、本実施の形態に係るマスタサーバ１０の構成について図面を参照して説明する。
【００４７】
図２は、マスタサーバ１０の構成の一例を示すブロック図である。
【００４８】
マスタサーバ１０は、データ格納部１１０と、データ送信部１２０と、応答処理部１３０とを含む。
【００４９】
データ格納部１１０は、送信する送信データ１１１と、応答表１１５とを含んでいる。
【００５０】
データ送信部１２０は、データ分割部１２１と、ピース送信部１２２と、マルチキャストアドレス格納部１２３とを含む。
【００５１】
データ分割部１２１は、データ格納部１１０から送信データ１１１をピースに分割して取り出し、ピース送信部１２２に送る。なお、データ分割部１２１における送信データ１１１のピースへの分割は、特に制限はなく、どのように分割しても良い。例えば、データ分割部１２１は、送信データ１１１を、ネットワーク３０のパケット（packet）のサイズに合わせるようにピースに分割しても良く、データ格納部１１０の格納単位に合わせてピースに分割しても良い。
【００５２】
ピース送信部１２２は、データ分割部１２１からピースを受け取り、マルチキャストアドレス格納部１２３に格納されているアドレスを基に、ネットワーク３０を介して、ピースをマルチキャストする。全てのピースを送信後、ピース送信部１２２は、送信終了を示すデータ、例えば、ＦＩＮパケット（Finish packet）をマルチキャストして、送信の終了を通知する。また、ピース送信部１２２は、送信に使用するネットワーク３０の数に基づき、ピースをネットワーク３０に分配する。例えば、ネットワーク３０が２つの場合、ピース送信部１２２は、奇数番のピースを１つのネットワーク３０でマルチキャストし、偶数番のピースをもう１つのネットワーク３０にマルチキャストする。このように、ピース送信部１２２は、ピースをネットワーク３０に分散してマルチキャストする。
【００５３】
マルチキャストアドレス格納部１２３は、ピース送信部１２２がマルチキャスト（Multicast）する場合のネットワーク３０ごとの送信先アドレスを格納している。なお、マルチキャストアドレス格納部１２３が格納するアドレスは、一般的なマルチキャストのためのアドレスであり、予めマスタサーバ１０の管理者又は図示しないネットワークの管理サーバが設定するものとし、詳細な説明は省略する。
【００５４】
応答処理部１３０は、応答受信部１３１と、応答解析部１３２とを含む。
【００５５】
応答受信部１３１は、ネットワーク３０を介して、送信した送信データ１１１に対する「応答」を受信し、応答解析部１３２に送る。
【００５６】
応答解析部１３２は、受け取った「応答」を判定（解析）し、受信済みのピースに対応する応答表１１５のデータを操作する。この操作については、後ほど説明する。また、応答解析部１３２は、応答に対する未受信のピースの送信を、データ分割部１２１に依頼する。
【００５７】
続いて、本実施の形態に係るスレーブサーバ２０の構成について図面を参照して説明する。なお、スレーブサーバ２１及びスレーブサーバ２２も同じ構成である。
【００５８】
図３は、本実施の形態に係るスレーブサーバ２０の構成の一例を示すブロック図である。
【００５９】
スレーブサーバ２０は、データ格納部２１０と、データ受信部２２０と、応答返却部２３０と、応答処理部２４０と、データ送信部２５０とを含む。
【００６０】
データ格納部２１０は、複製データである受信データ２１１を格納する。
【００６１】
データ受信部２２０は、ピース受信部２２１と、データ再構築部２２２とを含む。
【００６２】
ピース受信部２２１は、ネットワーク３０を介し、受信データ２１１のピースを受信する。本実施の形態に係るピース受信部２２１は、後ほど詳細に説明するように、このピースを、マスタサーバ１０又はスレーブサーバ２１から受け取る。ピース受信部２２１は、受け取ったピースをデータ再構築部２２２に送る。
【００６３】
データ再構築部２２２は、受け取ったピースを受信データ２１１に再構築して、データ格納部２１０に格納する。
【００６４】
応答返却部２３０は、応答作成部２３１と、応答送信部２３２と、マルチキャストアドレス格納部２３３とを含む。
【００６５】
応答作成部２３１は、マスタサーバ１０から送信終了の受信後、受信データ２１１のピースの受信状態を表す「応答」を作成し、応答送信部２３２に送る。この「応答」は、受信できなかったピースの情報（例えば、ピースの番号）を含む。
【００６６】
応答送信部２３２は、マルチキャストアドレス格納部２３３が格納するアドレスを基に、応答作成部２３１から受け取った「応答」を、ネットワーク３０を介してマルチキャストする。
【００６７】
マルチキャストアドレス格納部２３３は、応答送信部２３２が使用するマルチキャスト用のアドレスを格納している。なお、ネットワーク３０が複数の場合、マルチキャストアドレス格納部２３３は、各ネットワーク３０に対応した複数のマルチキャスト用のアドレスを格納する。なお、マルチキャストアドレス格納部２３３が格納するアドレスも、一般的なマルチキャストのためのアドレスであり、予めスレーブサーバ２０の管理者又は図示しないネットワークの管理サーバが設定するものとし、詳細な説明は省略する。
【００６８】
応答処理部２４０は、応答受信部２４１と、応答解析部２４２とを含む。
【００６９】
応答受信部２４１は、ネットワーク３０を介して、「応答」を受信し、応答解析部２４２に送る。
【００７０】
応答解析部２４２は、受け取った応答を判定（解析）し、応答に含まれる受信できなかったピースの番号を確認し、自装置が受信済みのピースの番号と比較する。もし、自装置が受信済みのピースに、応答に含まれる未受信のピースがあった場合、応答解析部２４２は、データ分割部２５１にそのピースの番号を通知する。
【００７１】
データ送信部２５０は、データ分割部２５１と、ピース送信部２５２と、マルチキャストアドレス格納部２５３とを含む。
【００７２】
データ分割部２５１は、応答解析部２４２からの通知に基づき、データ格納部２１０から対応するピースを取り出し、ピース送信部２５２に送る。
【００７３】
ピース送信部２５２は、マルチキャストアドレス格納部２５３が格納するアドレスを基に、受け取ったピースを再送としてマルチキャストする。なお、ピース送信部２５２は、マスタサーバ１０のピース送信部１２２と同様に、ピースをネットワーク３０に振り分ける。
【００７４】
マルチキャストアドレス格納部２５３は、ピース送信部２５２が使用するマルチキャスト用のアドレスを格納する。なお、ネットワーク３０が複数の場合、マルチキャストアドレス格納部２５３は、ネットワーク３０に対応した複数のマルチキャスト用のアドレスを格納する。ただし、マルチキャストアドレス格納部２５３の格納しているアドレスは、再送に使用するアドレスのため、マスタサーバ１０のアドレスは含まなくてもよい。また、マルチキャストアドレス格納部２５３が格納するアドレスも、一般的なマルチキャストのためのアドレスであり、予めスレーブサーバ２０の管理者又は図示しないネットワークの管理サーバが設定するものとし、詳細な説明は省略する。
【００７５】
次に、本実施の形態に係るデータ複製システム１の各サーバの動作について、図面を参照して説明する。
【００７６】
まず、マスタサーバ１０の動作について図面を参照して説明する。
【００７７】
図４は、本実施の形態に係るマスタサーバ１０の動作の一例を示すフローチャート図である。
【００７８】
データの更新など、送信データ１１１を送信する必要が発生すると、マスタサーバ１０のデータ分割部１２１は、送信する送信データ１１１をピースに分割する（ステップ１００１）。
【００７９】
データ分割部１２１は、分割したピースに対応する応答表１１５をすべて初期（未受信）状態にする（ステップ１００２）。データ分割部１２１は、分割したピースをピース送信部１２２に送る。
【００８０】
ピースを受けたピース送信部１２２は、マルチキャストアドレス格納部１２３が格納しているアドレスに基づき、ネットワーク３０を介して、ピースをマルチキャストする（ステップ１００３）。
【００８１】
図５は、データ複製システム１の送信データ１１１のピースのマルチキャストの一例を示す図である。図５は、送信データ１１１を６個のピースに分割し、２つのネットワーク３０に分けて送信した場合を示している。奇数番ピース群４１は、第１ピースと第３ピースと第５ピースとを含むピース群である。偶数番ピース群４２は、第２ピースと第４ピースと第６ピースを含むピース群である。
【００８２】
なお、図示していないが、各ピース群は、ネットワーク３０を介して送信するための情報、例えば送信先を示すヘッダ部を含んでいる。また、各ピース群は、最後に送信終了を示すＦＩＮパケット４５が続いている。
【００８３】
マスタサーバ１０のピース送信部１２２は、ネットワーク３０を介して、奇数番ピース群４１と偶数番ピース群４２とＦＩＮパケット４５とを、マルチキャストする。
【００８４】
また、応答表１１５は、第１ピースから第６ピースまでを初期化（未受信と）する。図５では、未受信を黒塗りで示している。
【００８５】
図４のマスタサーバ１０の動作の説明に戻る。
【００８６】
データをマルチキャスト後、マスタサーバ１０の応答受信部１３１は、応答を待つ（ステップ１００４）。
【００８７】
応答を受けた応答受信部１３１は、応答を応答解析部１３２に送る。応答解析部１３２は、受け取った応答を解析し、応答に含まれないピース番号、つまりスレーブサーバ２０乃至スレーブサーバ２２が受信したピースに対応する応答表１１５を受信済みにする（ステップ１００５）。
【００８８】
図６は、マスタサーバ１０がスレーブサーバ２０から応答を受け取る一例を示している。図６は、スレーブサーバ２０が、第２ピースと第５ピースとが未受信である応答をマルチキャストしている。なお、応答も、図示しない送信のためのヘッダ部を含んでいる。また、スレーブサーバ２０が応答をマルチキャストしているため、スレーブサーバ２１及びスレーブサーバ２２も、応答を受信する。
【００８９】
この応答を受けたマスタサーバ１０の応答解析部１３２は、応答表１１５の第２ピースと第５ピースの除き、他のピースを受信済みとする。なお、図５は、応答表１１５の第２ピースと第５ピースを未受信として黒塗りを残し、他のピースを受信済みとして白塗りに変更した例を示している。
【００９０】
図４のマスタサーバ１０の動作の説明に戻る。
【００９１】
続いて、応答解析部１３２は、応答に含まれるピース、つまり応答に含まれる未受信のピースで、応答表１１５で未受信となっているピースが有るか否かを確認する（ステップ１００６）。
【００９２】
未受信のピースが有る場合（ステップ１００５でyes）、応答解析部１３２は、データ分割部１２１に、未受信のピースの再送を依頼する。依頼を受けたデータ分割部１２１は、依頼されたピースをデータ格納部１１０から取り出し、ピース送信部１２２に送る。ピース送信部１２２は、マルチキャストアドレス格納部１２３が格納しているアドレスに基づき、受け取った未受信のピースをマルチキャストする（ステップ１００８）。
【００９３】
図７は、マスタサーバ１０が、未受信のピース（第２ピース４４と第５ピース４３）を再送としてマルチキャストする一例を示す図である。第５ピース４３及び第２ピース４４は、ＦＩＮパケット４５を伴ってマルチキャストされている。
【００９４】
図４のマスタサーバ１０の動作の説明に戻る。
【００９５】
未受信ピースを送信後、マスタサーバ１０は、ステップ１００４に戻り、応答を待つ。
【００９６】
ステップ１００６で未受信のピースがない場合（ステップ１００６でno）、応答解析部１３２は、全てのピースがスレーブサーバ２０乃至スレーブサーバ２２に受け取られたか否かを確認する（ステップ１００７）。この確認として、応答解析部１３２は、応答表１１５に未受信のピースが有るか否かを確認する。つまり、応答表１１５の全てのピースが受信済みとなっている場合、応答解析部１３２は、全てのピースが受信済みと判定する。
【００９７】
受信済みとなっていないピースがある場合（ステップ１００７でno）、マスタサーバ１０は、ステップ１００４に戻り、応答を待つ。
【００９８】
全てのピースが受け取られた場合（ステップ１００７でyes）、マスタサーバ１０は、複製データの送信を終了する。
【００９９】
このように、全てのピースがスレーブサーバ２０乃至スレーブサーバ２２で受信済みとなるまで、マスタサーバ１０は、再送としてピースをマルチキャストする。そのため、図４に示す動作が終了した場合、全てのピースが、スレーブサーバ２０乃至スレーブサーバ２２のいずれかで受信されている。
【０１００】
なお、ここでのいずれかで受信とは、スレーブサーバ２０乃至スレーブサーバ２２のいずれかの１台が、全てのピースを受信することに限られない。スレーブサーバ２０乃至スレーブサーバ２２のいずれもが全ピースを受信していなくても、スレーブサーバ２０乃至スレーブサーバ２２のいずれかがピースを受信していればよい。例えば、スレーブサーバ２０が第１ピースを受信し、スレーブサーバ２１が第４ピース乃至第６ピースを受信し、スレーブサーバ２２が第２ピース及び第３ピースを受信した状態は、全ピース（第１ピース乃至第６ピース)をスレーブサーバ２０乃至スレーブサーバ２２のいずれかが受信したこととなる。
【０１０１】
このような動作に基づき、マスタサーバ１０は、複製データと未受信ピースをマルチキャストし、全てのピースがいずれかのスレーブサーバ２０乃至スレーブサーバ２２で受信すると、送信データ１１１の送信を終了する。
【０１０２】
次の本実施の形態に係るスレーブサーバ２０乃至スレーブサーバ２２の動作について図面を参照して説明する。
【０１０３】
まず、スレーブサーバ２０が受信データ２１１のピースを受け取る受信データ２１１の受信動作について説明する。
【０１０４】
図８は、本実施の形態に係るスレーブサーバ２０の受信動作の一例を示すフローチャート図である。
【０１０５】
スレーブサーバ２０のピース受信部２２１は、マスタサーバ１０からネットワーク３０を介して受信データ２１１のピースを受け取る（ステップ１１０１）と、受け取ったピースをデータ再構築部２２２に送る。
【０１０６】
データ再構築部２２２は、受け取ったピースを用いて受信データ２１１を再構築し、データ格納部２１０に格納する（ステップ１１０２）。さらに、データ再構築部２２２は、再構築したピースの情報を応答作成部２３１に送り、応答作成を依頼する。
【０１０７】
データ再構築部２２２の動作をさらに詳細に説明する。
【０１０８】
データ再構築部２２２は、ピースを受け取ったときにピースを判定し、データ格納部２１０の対応する位置にピースを格納する。データ再構築部２２２は、この動作をマスタサーバ１０から送信終了（ＦＩＮパケット４５）を受け取るまで続ける。全てのネットワーク３０から送信終了（ＦＩＮパケット４５）を受け取ると、データ再構築部２２２は、再構築したピースの状態、つまり受け取っていないピースの情報（ピース番号）を応答作成部２３１に送り、応答作成を依頼する。
【０１０９】
ただし、データ再構築部２２２の動作は、これに限られない。例えば、データ再構築部２２２は、受信完了までピースを受け取り保持し、送信終了（ＦＩＮパケット４５）を受けると、格納している受信データ２１１を再構築し、再構築した受信データ２１１をデータ格納部２１０に格納しても良い。このような動作の場合も、応答作成部２３１への依頼は、同じである。
【０１１０】
応答作成部２３１は、データ再構築部２２２からの未受信のピースの情報を基に、全てのピースを受信できたか、つまり受信データ２１１の状態を確認（判定）する（ステップ１１０３）。
【０１１１】
全てのピースを受信した場合（ステップ１１０３でyes）、応答作成部２３１は、ピース情報（番号）を含まない応答を作成する（ステップ１１０４）。
【０１１２】
未受信のピースが有る場合（ステップ１１０３でno）、応答作成部２３１は、未受信のピース番号を含む応答を作成する（ステップ１１０５）。
【０１１３】
なお、本実施の形態に係るデータ複製システム１の応答は、ここでの例示に限らず、マスタサーバ１０とスレーブサーバ２０との間で取り決めた形式でよい。例えば、応答は、受信できないピース番号を含む応答ではなく、受信できたピース番号を含む応答でもよい。また、応答は、他の情報、例えば応答であることを示す情報、スレーブサーバ２０を示す情報を含んでも良い。
【０１１４】
応答作成部２３１は、作成した応答を応答送信部２３２に送る。
【０１１５】
応答を受け取った応答送信部２３２は、マルチキャストアドレス格納部２３３のアドレスを用いて応答をマルチキャストする（ステップ１１０６）。なお、スレーブサーバ２０が応答のマルチキャストに使用するネットワーク３０は、データの受信に使用したネットワーク３０のいずれかを使用してもよく、全てのネットワーク３０にマルチキャストしても良い。
【０１１６】
このような動作に基づき、スレーブサーバ２０は、受信データ２１１を受信し、応答を送信する。
【０１１７】
次に、いずれかのスレーブサーバ２０の応答を受けた場合における、スレーブサーバ２１の再送動作について説明する。
【０１１８】
図９は、スレーブサーバ２１が応答を受けたときの動作の一例を示すフローチャート図である。
【０１１９】
既に説明したとおり、本実施の形態に係るスレーブサーバ２０は、応答をマルチキャストする。そのため、スレーブサーバ２１の応答受信部２４１は、ネットワーク３０を介して、スレーブサーバ２０から応答を受け取る（ステップ１２０１）。応答を受けた応答受信部２４１は、応答を応答解析部２４２に送る。
【０１２０】
応答を受け取った応答解析部２４２は、応答を判定（解析）し、応答に未受信のピースを示す情報が有るか否かを確認する（ステップ１２０２）。
【０１２１】
未受信のピースに関する情報がない場合（ステップ１２０２でno）、スレーブサーバ２１は、動作を終了する。つまり、スレーブサーバ２１は、何も動作しない。
【０１２２】
未受信のピースに関する情報が有った場合（ステップ１２０２でyes）、応答解析部２４２は、応答に含まれる未受信のピースで、自装置で受信済みのピースが有るか否かを確認する（ステップ１２０３）。
【０１２３】
自装置で受信済みのピースがない場合（ステップ１２０３でno）、スレーブサーバ２１は、動作を終了する。つまり、スレーブサーバ２１は、何も動作しない。
【０１２４】
自装置で受信済みのピースが有る場合（ステップ１２０３でyes）、応答解析部２４２は、データ分割部２５１に、受け取った応答に未受信として含まれ、自装置で受信済みのピースを、マルチキャストするように依頼する。
【０１２５】
依頼を受けデータ分割部２５１は、受信データ２１１から依頼されたピースを取り出し、ピース送信部２５２に送る。
【０１２６】
ピースを受け取ったピース送信部２５２は、マルチキャストアドレス格納部２５３のアドレスを用いてピースをマルチキャストする（ステップ１２０４）。このマルチキャストは、再送ピースのマルチキャストとなる。なお、スレーブサーバ２１は、再送ピースをマスタサーバ１０にマルチキャストする必要が無いため、マルチキャストアドレス格納部２５３のアドレスは、マスタサーバ１０のアドレスを含む必要はない。
【０１２７】
ピースをマルチキャストすると、スレーブサーバ２１は、動作を終了する。
【０１２８】
図１０は、スレーブサーバ２１の再送動作を示す図である。なお、スレーブサーバ２１の再送動作は、データの同期動作でもある。
【０１２９】
図１０は、スレーブサーバ２１が、スレーブサーバ２０の応答に含まれる未受信のピースを送信した場合の一例を示している。送信しているピースの番号は、図７と同様に第５ピース４３と第２ピース４４である。送信されたピースは、スレーブサーバ２０及びスレーブサーバ２２に送られる。
【０１３０】
なお、図１０において、スレーブサーバ２１で全ピースを受信済みのため、マスタサーバ１０の応答表１１５は、すべて受信済み（白塗り）となっている。
【０１３１】
本実施の形態に係るスレーブサーバ２１は、このように動作し、スレーブサーバ２０が未受信のピースを再送する。
【０１３２】
このように、本実施の形態に係るデータ複製システム１のスレーブサーバ２１は、未受信のスレーブサーバ２０の応答を基に、マスタサーバ１０に負荷を掛けずに、スレーブサーバ２０が未受信のピースを、再送（データの同期が）できる。
【０１３３】
なお、本実施の形態に係るデータ複製システム１に含まれるマスタサーバ１０又はスレーブサーバ２０乃至スレーブサーバ２２の構成は、これらに限られるわけではない。
【０１３４】
各サーバの構成は、複数の構成を含む構成、例えば、応答解析部１３２とデータ分割部１２１を１つの構成として実現しても良い。また、各サーバの構成は、１つの装置に限られず、別の装置、例えば、データ格納部１１０を、マスタサーバ１０の外部の記憶装置として実現しても良い。
【０１３５】
図１１は、本実施の形態に係る別の構成のデータ複製システム２の構成の一例を示す図である。
【０１３６】
まず、データ複製システム２の構成について説明する。
【０１３７】
データ複製システム２は、マスタサーバ１４と、スレーブサーバ２６と、スレーブサーバ２７と、ネットワーク３０とを含む。
【０１３８】
ネットワーク３０は、図１のネットワーク３０と同等である。
【０１３９】
また、各サーバは、データ及びアドレスをサーバとバスなどで接続した図示しない別の記憶装置に格納する。そのため、図１１では、各格納部の表示を省略した。
【０１４０】
マスタサーバ１４は、マスタサーバ１０と同様に、データを送信及び再送する。そのため、マスタサーバ１４は、データ送信部１２０と、応答処理部１３０とを含む。
【０１４１】
スレーブサーバ２６は、スレーブサーバ２０における、データの受信と応答の送信を行う。そのため、スレーブサーバ２６は、データ受信部２２０と、応答返却部２３０とを含む。
【０１４２】
スレーブサーバ２７は、スレーブサーバ２０と同等の動作を行う。そのため、スレーブサーバ２７は、データ受信部２２０と、応答返却部２３０と、応答処理部２４０と、データ送信部２５０とを含む。
【０１４３】
なお、スレーブサーバ２６は、スレーブサーバ２７と同様の構成を備えても良いが、説明の便宜のため、図１１では省略した。
【０１４４】
次にデータ複製システム２の動作について説明する。
【０１４５】
ここでは、スレーブサーバ２７が全ピースを受信し、スレーブサーバ２６が未受信のピースがある場合について説明する。
【０１４６】
まず、マスタサーバ１４のデータ送信部１２０は、データのピースをマルチキャストする。
【０１４７】
スレーブサーバ２７のデータ受信部２２０は、全ピースを受信し、応答返却部２３０がピースの情報を含まない応答をマルチキャストする。
【０１４８】
同様にスレーブサーバ２６のデータ受信部２２０は、ピースを受信するが、一部ピースを受信できない。そのため、スレーブサーバ２６の応答返却部２３０は、ピースの情報を含む応答をマルチキャストする。
【０１４９】
マスタサーバ１４は、スレーブサーバ２７からの応答がピース情報を含まないため、送信処理を終了する。これ以降、マスタサーバ１０は、別の動作に移行する。
【０１５０】
スレーブサーバ２７の応答処理部２４０は、スレーブサーバ２６の応答を受信し、判定（解析）する。その結果、応答処理部２４０は、スレーブサーバ２６の未受信のピースが有ることが分かる。そして、応答処理部２４０は、データ送信部２５０にスレーブサーバ２６が未受信のピースの送信を依頼する。依頼を受けたデータ送信部２５０は、スレーブサーバ２６が未受信のピースをマルチキャストする。
【０１５１】
ただし、スレーブサーバ２７は、マスタサーバ１０にマルチキャストする必要はない。また、図１１に示すネットワーク３０に接続している装置は、マスタサーバ１４を除くと２台となる。そのため、マスタサーバ１４に送信しない場合、スレーブサーバ２７のマルチキャストは、実施的にスレーブサーバ２６へのユニキャストとなる。
【０１５２】
スレーブサーバ２６は、スレーブサーバ２７からの未受信のピースの再送を受ける。
【０１５３】
このようにデータ複製システム２は、データ複製システム１と同様に、スレーブサーバ２７に基づき、マスタサーバ１４の負荷を削減し、スレーブサーバ２６にデータを再送できる。
【０１５４】
なお、データ複製システム２は、本実施の形態の最小構成である。
【０１５５】
さらに、本発明の実施の形態の各サーバの構成は、すべてＣＰＵ（Central Process Unit）で実行されるプログラムの制御に基づいて処理を実行しても良い。その場合、各サーバは、ＣＰＵと、プログラムを記録した記録媒体と、プログラムを実行するための作業領域とデータの格納場所としてのデータ記憶部とを含んでも良い。
【０１５６】
以上説明したとおり、本実施の形態に係るデータ複製システム１は、複製データの信頼性を確保しながら、マスタサーバ１０の負荷を減らした複製データを作成できる効果を得ることができる。
【０１５７】
その理由は、次のとおりである。
【０１５８】
本実施の形態に係るマスタサーバ１０は、全てのピースが、いずれかのスレーブサーバ２０乃至スレーブサーバ２２で受信されるまで、ピースを再送する。つまり、本実施の形態に係るデータ複製システム１は、全ピースをスレーブ２０乃至スレーブ２２のいずれから保持するため、データの信頼性を確保できる。
【０１５９】
さらに、本実施の形態に係るスレーブサーバ２０乃至スレーブサーバ２２は、受信したピースを再送する。このため、データ複製システム１は、全ピースがいずれかのスレーブサーバ２０乃至スレーブサーバ２２で受信されると、それ以降、マスタサーバ１０の動作を必要とせずに、データの複製（再送）できる。そのため、データ複製システム１は、マスタサーバ１０の負荷を削減できる。
【０１６０】
（第２の実施の形態）
第１の実施の形態に係るデータ複製システム１で説明したマスタサーバ１０及びスレーブサーバ２１は、スレーブサーバ２０の応答に含まれる未受信のピースを再送する。
【０１６１】
このようにスレーブサーバ２０の応答、特に未受信のピースを含む応答は、未受信のピースの再送を依頼する応答である。そのため、スレーブサーバ２０は、ピースを再送できないスレーブサーバ２２に未受信のピースを含む応答を送らなくてもよい。不必要な応答の送信を減らすことは、ネットワーク３０の通信資源の節約につながる。
【０１６２】
また、全ピースがいずれかのスレーブサーバ２０乃至スレーブサーバ２２で受信された場合、マスタサーバ１０は、ピースの再送を終了する。そのため、全ピースがいずれかのスレーブサーバ２０乃至スレーブサーバ２２で受信された場合、スレーブサーバ２０は、マスタサーバ１０に応答を送信する必要がない。
【０１６３】
さらに、全ピースを受信済みのスレーブサーバ２１が有る場合、スレーブサーバ２０は、全ピースを受信済みのスレーブサーバ２１に応答を送信して、再送を依頼すればよい。
【０１６４】
そこで、第２の実施の形態に係るスレーブサーバ２３は、全ピースを受信したスレーブサーバ２４がある場合、そのスレーブサーバ２４に応答を送信する。
【０１６５】
ただし、マスタサーバ１０が再送を終了するのは、全ピースがいずれかのスレーブサーバに受信された場合である。つまり、マスタサーバ１０は、各ピースが分散受信された状態でも送信を終了する。しかし、ピースが分散受信の状態で再送の依頼先を指定するためには、スレーブサーバ２３は、複数のスレーブサーバのピースの受信状態を管理することが必要となる。
【０１６６】
そこで、本実施の形態に係るスレーブサーバ２３は、各ピースが分散されている場合、第１の実施の形態と同様に応答をマルチキャストする。そして全てのピースを受信したスレーブサーバ２４を検出すると、スレーブサーバ２３は、全てのピースを受信したスレーブサーバ２４に、未受信のピースを含む応答を送信する。
【０１６７】
第２の実施の形態に係るスレーブサーバ２３について図面を参照して説明する。なお、説明の便宜のため、全てのピースを受信したスレーブサーバ２４も、スレーブサーバ２３と同じ構成とする。
【０１６８】
図１２は、第２の実施の形態に係るスレーブサーバ２３の構成の一例を示すブロック図である。図１２において、図３と同じ構成には同じ番号を付し、詳細な説明は省略する。
【０１６９】
図１２に示す本実施の形態に係るスレーブサーバ２３は、第１の実施の形態に係るスレーブサーバ２０の構成に加え、応答返却部２６０と、応答送信先格納部２７０と、応答処理部２８０とを含む。
【０１７０】
応答返却部２６０は、応答作成部２６１と、応答送信部２６２と、マルチキャストアドレス格納部２３３とを含む。
【０１７１】
応答処理部２８０は、応答解析部２８２と、応答受信部２４１とを含む。
【０１７２】
応答作成部２６１は、第１の実施の形態に係る応答作成部２３１と同様に応答を作成する。ただし、応答作成部２６１は、応答に自装置つまり応答の送信元を識別する装置識別情報（例えば、装置名、装置アドレス、ＩＤ(identification)）を含む。この応答を受け取ったスレーブサーバ２３は、応答の送信元のスレーブサーバ２４を識別できる。そのため、スレーブサーバ２３は、識別の結果に基づいて、特定のスレーブサーバ２４に応答を送信できる。
【０１７３】
応答解析部２８２は、第１の実施の形態に係る応答解析部２４２と同等の判定（解析）動作に加え、ピースを含まない応答の場合は、その応答に含まれる送信元のスレーブサーバ２４の装置識別情報を取り出し、応答送信先格納部２７０に送る。
【０１７４】
応答送信先格納部２７０は、応答解析部２８２から受け取った装置識別情報を、応答送信部２６２が使用する送信先として格納し、必要に応じて応答送信部２６２に送る。
【０１７５】
応答送信部２６２は、第１の実施の形態に係る応答送信部２３２と同等の動作に加え、応答送信先格納部２７０に送信先を示す装置識別情報が格納されている場合、応答を装置識別情報が示す装置に送信する。この場合、応答送信部２６２は、応答を、マルチキャストではなく、ユニキャストする。
【０１７６】
ここでユニキャストを使用する理由は、次のとおりである。
【０１７７】
この装置識別情報が示す送信先は、ピース番号を含まない応答を送信したスレーブサーバ２４である。つまり、このスレーブサーバ２４は、全てのピースを受信済みであり、全てのピースを再送できる。
【０１７８】
したがって、未受信のピースがあるスレーブサーバ２３は、このスレーブサーバ２４に再送を依頼し、ピースの再送を受けることができる。そして、依頼先が分かっているため、スレーブサーバ２３は、応答をユニキャストできる。また、ユニキャストは、マルチキャストに比べ、通信資源を節約する。そこで、スレーブサーバ２３は、ユニキャストを使用する。
【０１７９】
次に、第２の実施の形態に係るスレーブサーバ２３及びスレーブサーバ２４の動作について図面を参照して説明する。
【０１８０】
なお、ピースを再送する動作は、第１の実施の形態と同じため、詳細な説明は省略し、第２の実施の形態に特有の動作について説明する。そのため、スレーブサーバ２３を用いて説明する。
【０１８１】
まず、応答を受けた場合のスレーブサーバ２３の動作について説明する。
【０１８２】
図１３は、本実施の形態に係るスレーブサーバ２３が応答を受けたときの動作の一例を示すフローチャート図である。図１３において、図９と同等の動作には同じ番号を付し、詳細な説明は省略する。
【０１８３】
スレーブサーバ２３は、応答を受け（ステップ１２０１）、応答に含まれるピースを確認する（ステップ１２０２）。
【０１８４】
ピースが含まれない応答の場合（ステップ１２０２でno）、第１の実施の形態に係るスレーブサーバ２３は、処理を終了したが、第２の実施の形態に係る応答解析部２８２は、応答に含まれる送信元を示す装置識別情報を抽出し、応答送信先格納部２７０に格納し（ステップ１３０５）、処理を終了する。
【０１８５】
その他の処理は、第１の実施の形態（図９のステップ１２０３と１２０４）と同様のため、詳細な説明は、省略する。
【０１８６】
次に、本実施の形態に係るスレーブサーバ２３がピースを受信した場合の動作について説明する。
【０１８７】
図１４は、第２の実施の形態に係るスレーブサーバ２３の受信動作の一例を示すフローチャート図である。
【０１８８】
図１４において、図８と同じ動作には同じ番号を付し、詳細な説明は省略する。
【０１８９】
第２の実施の形態に係るスレーブサーバ２３は、受信できなかったピースの情報を含む応答の作成（ステップ１１０５）に続く動作が、第１の実施の形態に係るスレーブサーバ２０と異なる。そこで、ステップ１１０５以降の動作について詳細に説明する。
【０１９０】
応答作成部２６１から応答を受け取った応答送信部２６２は、応答にピースの情報を含む場合、応答送信先格納部２７０に応答の送信先となる装置識別情報が格納されているか否かを確認する（ステップ１４０７）。
【０１９１】
装置識別情報が格納されていない場合（ステップ１４０７でno）、応答送信部２６２は、第１の実施の形態と同様に、応答をマルチキャストする（ステップ１１０６）。なお、ピースの情報を含まない応答の場合（ステップ１１０４）も、本実施の形態に係る応答送信部２６２は、応答をマルチキャストする（ステップ１１０６）。
【０１９２】
応答の送信先の装置識別情報が格納されている場合（ステップ１４０７でyes）、応答送信部２６２は、格納されている装置識別情報で示される送信先に、応答をユニキャストする（ステップ１４０８）。なお、複数の装置識別情報が格納されている場合、応答送信部２６２は、所定の手法（例えば、ラウンドロビン(round robin)）を用いていずれかの送信先を選択して、応答をユニキャストする。
【０１９３】
このような動作に基づき、第２の実施の形態に係るスレーブサーバ２３は、第１の実施の形態に係る効果に加え、ネットワーク３０の資源を節約し、マスタサーバ１０の負荷を減らす効果を得ることができる。
【０１９４】
その理由は、スレーブサーバ２３が、応答をマルチキャストではなく、ユニキャストで送信するためである。
【０１９５】
また、スレーブサーバ２３が、応答をユニキャストするため、マスタサーバ１０は、送信終了後の応答を受けなくなるためである。
【０１９６】
上記の実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１９７】
（付記）
（付記１）
データを送信する第１のデータ送信部と、
前記送信したデータの受信の状態を含む応答を受け、前記応答に基づき、前記データの未受信の部分があるか否かを判定する第１の応答処理部とを含み、
前記第１の応答処理部の判定の結果として未受信の部分がある場合、前記第１のデータ送信部が前記未受信の部分のデータを再送し、
前記第１の応答処理部の判定の結果として未受信の部分がない場合、データの送信を終了する
第１のサーバと、
前記データの少なくとも一部又は全てを受信する第１のデータ受信部と、
前記データの受信状態に関する情報を含む第１の応答を送信する第１の応答返却部と
を含む第２のサーバと、
前記データの少なくとも一部又は全てを受信する第２のデータ受信部と、
前記データの受信状態に関する情報を含む第２の応答を送信する第２の応答返却部と、
前記第２のサーバの前記第１の応答を受信し、自装置で受信済みのデータに、前記第１の応答に含まれる未受信のデータがあるか否かを判定する第２の応答処理部と、
前記受信済みのデータで前記第１の応答で未受信となっているデータを送信する第２のデータ送信部と
を含む第３のサーバと
を含むデータ複製システム。
（付記２）
前記第１のデータ送信部が、前記データを複数の小部分に分割して送信し、
前記第１の応答返却部が、前記小部分の受信状態を含む第１の応答を送信し、
前記第２のデータ送信部が、前記未受信のデータの小部分を送信することを特徴とする付記１に記載のデータ複製システム。
（付記３）
前記第１のサーバが、
前記小部分の受信状態を示す応答表をさらに含み、
前記第１の応答処理部が、
前記第１及び第２の応答に基づき前記応答表の小部分の受信状態を更新し、
全ての小部分が受信済みとなった場合に受信部分がないと判定する
ことを特徴とする付記２に記載のデータ複製システム。
（付記４）
前記第２のサーバが、
前記第３のサーバの前記第２の応答を受信し、前記第２の応答に含まれる未受信のデータがあるか否かを判定する第３の応答処理部をさらに含み、
前記第１の応答返却部が、
前記第２の応答が未受信のデータを含まない場合、前記第１の応答を前記第３のサーバに送信することを特徴とする付記１乃至付記３に記載のデータ複製システム。
（付記５）
データを受信するデータ受信部と、
前記データの未受信の部分に関する情報を含む第１の応答を送信する応答返却部と、
前記データの受信結果を含む第２の応答を受信し、受信済みのデータに、前記受信した第２の応答に含まれる未受信のデータの少なくとも一部が含まれる否かを判定する応答処理部と、
前記受信済みでデータで前記第２の応答に含まれる未受信のデータを送信するデータ送信部と
を含むデータ複製サーバ。
（付記６）
前記第２の応答が未受信のデータを含まない場合、
前記応答返却部が、前記第２の応答を送信した装置に、前記第１の応答を送る
ことを特徴とする付記５に記載のデータ複製サーバ。
（付記７）
データを送信し、
前記送信したデータの受信の状態を含む応答を受け、前記応答に基づき、前記データの未受信の部分があるか否かを判定し、
前記判定の結果として未受信の部分がある場合、前記未受信の部分のデータを再送し、
前記判定の結果として未受信の部分がない場合、データの送信を終了する
データ送信と、
前記送信したデータの少なくとも一部又は全てを受信し、
前記データの受信状態に関する情報を含む第１の応答を送信する
データ受信と、
前記送信したデータの少なくとも一部又は全てを受信し、
前記データの受信状態に関する情報を含む第２の応答を送信し、
前記第１の応答を受信し、受信済みのデータで、前記第１の応答に含まれる未受信のデータがあるか否かを判定し、
前記受信済みのデータで前記第１の応答で未受信となっているデータを送信する
データ再送と
を含むデータ複製方法。
（付記８）
前記データを複数の小部分に分割して送信する前記データ送信と、
前記小部分の受信状態を含む第１の応答を送信する前記データ受信と、
前記第１の応答に含まれる未受信の小部分を送信する前記データ再送と
を特徴とする付記７に記載のデータ複製方法。
（付記９）
前記第１及び第２の応答に基づき前記データの小部分の受信状態を示す応答表を更新し、
全ての小部分が受信済みとなった場合に受信部分がないと判定する
ことを特徴とする付記９に記載のデータ複製方法。
（付記１０）
前記第２の応答を受信し、前記第２の応答に含まれる未受信のデータがあるか否かを判定し、
前記第２の応答が未受信のデータを含まない場合、前記第１の応答を前記第２の応答を送信した送信元に送信する前記データの受信
を特徴とする付記７乃至付記９に記載のデータ複製方法。
（付記１１）
データを受信し、
前記データの未受信の部分に関する情報を含む第１の応答を送信し、
前記データの受信結果を含む第２の応答を受信し、受信済みのデータに、前記第２の応答に含まれる未受信のデータの少なくとも一部があるか否かを判定し、
前記応答の未受信のデータに含まれる前記受信済みのデータを送信する
データ複製方法。
（付記１２）
前記第２の応答が未受信のデータを含まない場合、
前記第１の応答を前記第２の応答を送信した送信元に送る
ことを特徴とする付記１１に記載のデータ複製方法。
（付記１３）
データを送信する処理と、
前記送信したデータの受信の状態を含む応答を受け、前記応答に基づき、前記データの未受信の部分があるか否かを判定する処理と、
前記判定の結果として未受信の部分がある場合、前記未受信の部分のデータを再送する処理と、
前記判定の結果として未受信の部分がない場合、データの送信を終了する処理と
を含むデータ送信処理と、
前記送信したデータの少なくとも一部又は全てを受信する処理と、
前記データの受信状態に関する情報を含む第１の応答を送信する処理と
を含むデータ受信処理と、
前記送信したデータの少なくとも一部又は全てを受信する処理と、
前記データの受信状態に関する情報を含む第２の応答を送信する処理と、
前記第１の応答を受信し、受信済みのデータで、前記第１の応答に含まれる未受信のデータがあるか否かを判定する処理と、
前記受信済みのデータで前記第１の応答で未受信となっているデータを送信する処理と
を含むデータ再送処理と
をコンピュータに実行させるデータ複製プログラム。
（付記１４）
前記データを複数の小部分に分割して送信する処理をさらに含むデータ送信処理と、
前記小部分の受信状態を含む第１の応答を送信する処理をさらに含むデータ受信処理と、
前記第１の応答に含まれる未受信の小部分を送信する処理をさらに含むデータ再送処理と
を特徴とする付記１３に記載のデータ複製プログラム。
（付記１５）
前記第１及び第２の応答に基づき前記データの小部分の受信状態を示す応答表を更新する処理と、
全ての小部分が受信済みとなった場合に受信部分がないと判定する処理と
を含むことを特徴とする付記１４に記載のデータ複製プログラム。
（付記１６）
前記第２の応答を受信し、前記第２の応答に含まれる未受信のデータがあるか否かを判定する処理と、
前記第２の応答が未受信のデータを含まない場合、前記第１の応答を前記第２の応答を送信した送信元に送信する処理と
を特徴とする付記１３乃至付記１５に記載のデータ複製プログラム。
（付記１７）
データを受信する処理と、
前記データの未受信の部分に関する情報を含む第１の応答を送信する処理と、
前記データの受信結果を含む第２の応答を受信し、受信済みのデータに、前記第２の応答に含まれる未受信のデータの少なくとも一部があるか否かを判定する処理と、
前記応答の未受信のデータに含まれる前記受信済みのデータを送信する処理と
をコンピュータに実行させるデータ複製プログラム。
（付記１８）
前記第２の応答が未受信のデータを含まない場合、
前記第１の応答を前記第２の応答を送信した送信元に送る処理
を特徴とする付記１７に記載のデータ複製プログラム。
【符号の説明】
【０１９８】
１    データ複製システム
２    データ複製システム
１０    マスタサーバ
１４    マスタサーバ
２０    スレーブサーバ
２１    スレーブサーバ
２２    スレーブサーバ
２３    スレーブサーバ
２４    スレーブサーバ
２６    スレーブサーバ
２７    スレーブサーバ
３０    ネットワーク
４１    奇数番ピース群
４２    偶数番ピース群
４３    第５ピース
４４    第２ピース
４５    ＦＩＮパケット
５０    ネットワーク
６０    マスタサーバ
６５    スレーブサーバ
６８    再送専用サーバ
１１０    データ格納部
１１１    送信データ
１１５    応答表
１２０    データ送信部
１２１    データ分割部
１２２    ピース送信部
１２３    マルチキャストアドレス格納部
１３０    応答処理部
１３１    応答受信部
１３２    応答解析部
２１０    データ格納部
２１１    受信データ
２２０    データ受信部
２２１    ピース受信部
２２２    データ再構築部
２３０    応答返却部
２３１    応答作成部
２３２    応答送信部
２３３    マルチキャストアドレス格納部
２４０    応答処理部
２４１    応答受信部
２４２    応答解析部
２５０    データ送信部
２５１    データ分割部
２５２    ピース送信部
２５３    マルチキャストアドレス格納部
２６０    応答返却部
２６１    応答作成部
２６２    応答送信部
２７０    応答送信先格納部
２８０    応答処理部
２８２    応答解析部
５１０    コネクション
６１０    送信データ
６５１    受信データ
【図１】
2012088955.tif 000003
【図２】
2012088955.tif 000004
【図３】
2012088955.tif 000005
【図４】
2012088955.tif 000006
【図５】
2012088955.tif 000007
【図６】
2012088955.tif 000008
【図７】
2012088955.tif 000009
【図８】
2012088955.tif 000010
【図９】
2012088955.tif 000011
【図１０】
2012088955.tif 000012
【図１１】
2012088955.tif 000013
【図１２】
2012088955.tif 000014
【図１３】
2012088955.tif 000015
【図１４】
2012088955.tif 000016
【図１５】
2012088955.tif 000017
【図１６】
2012088955.tif 000018
【図１７】
2012088955.tif 000019
【図１８】
2012088955.tif 000020