(57)【要約】【課題】各データのレプリカ数を動的に決定することともに、各サーバ装置におけるデータ処理を効率的に実行させる。【解決手段】サーバ装置１００では、データごとにいくつのサーバ装置１００に複製するかを表すレプリカ数を設定し、このレプリカ数に基づいて、いずれのサーバ装置１００にデータを配置するかを選択する。そして、各サーバ装置１００は、レプリカ数が動的に変化する度にデータを配置するサーバ装置１００を再度決定する。レプリカ数が増加し、あらたにデータの配置先として追加されたサーバ装置１００は、該当するデータを新規に配置する。一方、レプリカ数が減少し、データの配置先から除外されたサーバ装置１００は、該当するデータを削除する。【選択図】図１
2010146067.tif 000002
【特許請求の範囲】
【請求項１】
相互に通信可能なコンピュータ群を構成するコンピュータを、
任意のデータについての処理要求が入力されると、当該任意のデータに設定されている複製数を取得する取得手段、
前記コンピュータ群の中から、前記任意のデータの配置先となるコンピュータを、所定のアルゴリズムを用いて前記複製数分選択する選択手段、
前記取得手段によって取得された前記任意のデータの複製数を前記コンピュータ群すべてに送信する複製数送信手段、
前記選択手段によって選択された前記複製数分の各コンピュータに、前記処理要求を送信する処理要求送信手段、
自装置、または、他のコンピュータから送信された処理要求を受け付けた場合、当該処理要求に応じた処理を実行する実行手段、
任意のタイミングごとに、前記実行手段によって実行された前記任意のデータへの処理要求を参照して前記任意のデータの複製数を決定する決定手段、として機能させ、
前記複製数送信手段は、前記決定手段によって現在設定されている複製数とは異なる複製数が決定された場合に、当該決定された複製数を前記コンピュータ群すべてに送信し、
前記選択手段は、前記複製数送信手段によって前記決定された複製数が送信されてきた場合、あらたに、前記コンピュータ群の中から、前記任意のデータを配置するコンピュータを、所定のアルゴリズムに応じて前記決定された複製数分選択し、
前記実行手段は、自装置が、前記選択手段によって、あらたに前記任意のデータを配置するコンピュータに選択された場合に前記任意のデータを書き込み、前記選択手段によって、あらたに前記データを配置するコンピュータに選択されなくなった場合に前記データを削除することを特徴とするデータ処理プログラム。
【請求項２】
前記決定手段は、前記コンピュータ群の総数を前記任意のデータの複製数とした場合の前記任意のデータに対する処理時間の平均値が所定値以上の場合、前記コンピュータ群の総数を前記任意のデータの複製数に決定することを特徴とする請求項１に記載のデータ処理プログラム。
【請求項３】
前記決定手段は、前記任意のデータの複製数を１とした場合の前記任意のデータへの処理時間の平均値が所定値未満であった場合、前記任意のデータの複製数として設定可能な最小値を複製数に決定することを特徴とする請求項１または２に記載のデータ処理プログラム。
【請求項４】
相互に通信可能なサーバ装置群を構成するサーバ装置であって、
任意のデータについての処理要求が入力されると、当該任意のデータに設定されている複製数を取得する取得手段と、
前記サーバ装置群の中から、前記任意のデータの配置先となるサーバ装置を、所定のアルゴリズムを用いて前記複製数分選択する選択手段と、
前記取得手段によって取得された前記任意のデータの複製数を前記サーバ装置群すべてに送信する複製数送信手段と、
前記選択手段によって選択された前記複製数分の各サーバ装置に、前記処理要求を送信する処理要求送信手段と、
自装置、または、他のサーバ装置から送信された処理要求を受け付けた場合、当該処理要求に応じた処理を実行する実行手段と、
任意のタイミングごとに、前記実行手段によって実行された前記任意のデータへの処理要求を参照して前記任意のデータの複製数を決定する決定手段と、を備え、
前記複製数送信手段は、前記決定手段によって現在設定されている複製数とは異なる複製数が決定された場合に、当該決定された複製数を前記サーバ装置群すべてに送信し、
前記選択手段は、前記複製数送信手段によって前記決定された複製数が送信されてきた場合、あらたに、前記サーバ装置群の中から、前記任意のデータを配置するサーバ装置を、所定のアルゴリズムに応じて前記決定された複製数分選択し、
前記実行手段は、自装置が、前記選択手段によって、あらたに前記任意のデータを配置するサーバ装置に選択された場合に前記任意のデータを書き込み、前記選択手段によって、あらたに前記データを配置するサーバ装置に選択されなくなった場合に前記データを削除することを特徴とするサーバ装置。
【請求項５】
相互に通信可能なコンピュータ群を構成するコンピュータが、
任意のデータについての処理要求が入力されると、当該任意のデータに設定されている複製数を取得する取得工程と、
前記コンピュータ群の中から、前記任意のデータの配置先となるコンピュータを、所定のアルゴリズムを用いて前記複製数分選択する選択工程と、
前記取得工程によって取得された前記任意のデータの複製数を前記コンピュータ群すべてに送信する複製数送信工程と、
前記選択工程によって選択された前記複製数分の各コンピュータに、前記処理要求を送信する処理要求送信工程と、
自装置、または、他のコンピュータから送信された処理要求を受け付けた場合、当該処理要求に応じた処理を実行する実行工程と、
任意のタイミングごとに、前記実行工程によって実行された前記任意のデータへの処理要求を参照して前記任意のデータの複製数を決定する決定工程と、を実行し、
さらに、
前記複製数送信工程では、前記決定工程によって現在設定されている複製数とは異なる複製数が決定された場合に、当該決定された複製数を前記コンピュータ群すべてに送信し、
前記選択工程では、前記複製数送信工程によって前記決定された複製数が送信されてきた場合、あらたに、前記コンピュータ群の中から、前記任意のデータを配置するコンピュータを、所定のアルゴリズムに応じて前記決定された複製数分選択し、
前記実行工程では、自装置が、前記選択工程によって、あらたに前記任意のデータを配置するコンピュータに選択された場合に前記任意のデータを書き込み、前記選択工程によって、あらたに前記データを配置するコンピュータに選択されなくなった場合に前記データを削除することを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、相互に通信可能なコンピュータ群を構成する各コンピュータにおけるデータ処理プログラム、サーバ装置およびデータ処理方法に関する。
【背景技術】
【０００２】
近年、ネットワークシステムを介してアクセス可能なデータベースシステムでは、配置するデータ量の増加や、データへのアクセス増加に伴い、データを複数のサーバやその他ストレージなどの機器（以後、これらをまとめて「サーバ装置」とする）に分散して管理する構成が増加している。このようにデータを分散して配置する場合には、負荷分散や可用性向上のために１つのデータのレプリカ（複製）を生成し、複数のサーバそれぞれに配置するような冗長性を持たせることが多い。
【０００３】
このとき生成される元データを含めたレプリカの総数をレプリカ数とよぶ。通常レプリカ数は、データへのアクセスパターンなどに応じて決められる。たとえば、すべてのデータが、参照しかされない場合、データを配置するすべてのサーバ装置にすべてのデータがコピーされる。すなわち、レプリカ数＝サーバ装置の総数となる。このような分散には以下のような利点がある。
【０００４】
・すべてのサーバ装置にデータが配置されているため、クライアントからの参照要求をいずれかのサーバ装置に振り分けるような単純な構成のロードバランサーを用意することで、容易に参照要求による処理負荷を分散することができる。
・複数のクライアントから同じデータに対する参照要求があった場合であっても、参照要求をサーバの台数分だけ分散させることができる。
・すべてのサーバ装置がダウンしない限りデータが消滅することがないため、可用性が高い。
【０００５】
一方、データ参照のみならず、データの更新がおこなわれる場合には、上述のようにすべてのサーバ装置にデータをコピーしていると、更新が発生する度に、すべてのサーバ装置に対してデータの更新を反映させなければならない。結果として、各サーバ装置におけるコピー処理が頻繁に発生し処理効率が悪くなってしまう。また、更新がおこなわれる場合であっても各サーバ装置の処理効率を最大限にするためにレプリカ数を１（コピーなしの状態）にすると、同一のデータに対する参照要求が集中した場合に、負荷分散ができず参照要求への応答時間が長くなってしまうことがある。さらに、データが配置されたサーバ装置以外に同一のデータが配置された予備となるサーバ装置を用意しないため、サーバ装置がダウンした場合にデータが消滅する恐れがあり、可用性も著しく低下してしまう。
【０００６】
したがって、従来は、レプリカ数を２以上にし、なおかつ、サーバ装置の総数より少ない数に設定する場合が多い。実際には、データのアクセスパターン（参照・更新の割合、頻度）やデータベースの管理者や利用者によって要求された可用性を満たすように考慮してレプリカ数を決定する。これにより、参照・更新ともに効率のよいデータアクセスが可能となる。
【０００７】
【特許文献１】特開平２−２３１６７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述のように、データ分散型のデータベースシステムとして利用するサーバ装置に配置された各データへのアクセスパターンがデータによって大きく異なる場合には、全データに対して共通の最適なレプリカ数を決めることは困難であった。たとえば、レプリカ数（全データ共通）を高めに設定した場合、参照が多いデータへの参照効率は上がるが、更新が多いデータはレプリカ数分のデータを更新しなければならず、更新の際の処理効率が低下してしまう。
【０００９】
上述のようなケースへの対応策として、参照の多いデータと更新が多いデータとを分け、それぞれのデータに関してレプリカ数を設定して各サーバ装置へ配置するような技術も提供されている。ところが、データの所有者によってデータを分類する方式が適用されているなど、アクセスパターンの違いによってデータを分けられない場合は、レプリカ数として平均的な値しか設定できない。
【００１０】
また、仮にある時点におけるアクセスパターンに基づいてデータを分け、それぞれ異なるレプリカ数を設定できたとしても、アクセスパターンが頻繁に変わってしまうと、常に最適なレプリカ数を適用することが難しい。たとえば、ブログのようなサーバ装置管理者以外の一般の利用者によるデータベースへの更新処理が主体となるサービスの場合、利用者のブログ記事の更新頻度が本人の都合により変化したり、ある報道や、イベントの発生などによってある利用者のページへの参照頻度が急増したりする。したがって、レプリカ数が固定のままではデータアクセスの効率が悪く参照者による快適な参照が困難になってしまうという問題があった。
【００１１】
そこで、データ分散型のデータベースシステムにおいて、データの参照頻度をモニタし、あらかじめ設定された基準値との比較結果（たとえば、基準値を超える時、あるいは超えると予想される時）、データの一部または全部をコピーして他のサイトに送信する技術も提案されている（たとえば、上記特許文献１参照。）。この技術によれば、参照頻度が高いサイトにレプリカをコピーすることでその参照効率を高くすることができる。また、動的にコピーを作成するので、データベース処理の傾向の変化に効果的に対応することができる。
【００１２】
しかしながら、上述の技術はデータのコピーについてしか記述がないため、データアクセスの変化が激しい環境でこの技術を使い続けると、データのコピー先を制限しない限りいずれすべてのデータがすべてのサイトにコピーされてしまうことになる。したがって、あるデータの参照頻度が下がってかつ更新頻度が上がった場合、参照の負荷分散の効果は少なく、逆に更新はコピー数が多い分効率が悪くなってしまうという問題があった。
【００１３】
上述した従来技術による問題点を解消するため、各データのレプリカ数を動的に決定することともに、各サーバ装置におけるデータ処理を効率的に実行させることが可能なデータ処理プログラム、サーバ装置およびデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するため、相互に通信可能なコンピュータ群を構成するコンピュータにおいて、任意のデータについての処理要求が入力されると、当該任意のデータに設定されている複製数を取得する処理と、前記コンピュータ群の中から、前記任意のデータの配置先となるコンピュータを、所定のアルゴリズムを用いて前記複製数分選択する処理と、取得された前記任意のデータの複製数を前記コンピュータ群すべてに送信する処理と、選択された前記複製数分の各コンピュータに、前記処理要求を送信する処理と、自装置、または、他のコンピュータから送信された処理要求を受け付けた場合、当該処理要求に応じた処理を実行する処理と、任意のタイミングごとに、実行された前記任意のデータへの処理要求を参照して前記任意のデータの複製数を決定する処理と、現在設定されている複製数とは異なる複製数が決定された場合には、当該決定された複製数を前記コンピュータ群すべてに送信する処理と、前記決定された複製数が送信されてきた場合には、あらたに、前記コンピュータ群の中から、前記任意のデータを配置するコンピュータを、所定のアルゴリズムに応じて前記決定された複製数分選択する処理と、自装置が、あらたに前記任意のデータを配置するコンピュータに選択された場合に前記任意のデータを書き込む処理と、あらたに前記データを配置するコンピュータに選択されなくなった場合に前記データを削除する処理と、を含むことを要件とする。
【００１５】
このデータ処理プログラム、サーバ装置およびデータ処理方法によれば、データの参照頻度だけでなく更新頻度も同時にモニタすることによってデータごとにレプリカ数が動的に変化する場合であっても、データごとに設定されたレプリカ数に基づいて各データの配置先を選択する。したがって、データごとに個別に最適なレプリカ数を設定できるとともに、他のデータのレプリカ数に影響されずに、処理要求の頻度に応じて動的にデータの配置先となるコンピュータの台数を変更することができる。
【発明の効果】
【００１６】
このデータ処理プログラム、サーバ装置およびデータ処理方法によれば、各データのレプリカ数を動的に決定することともに、各サーバ装置におけるデータ処理を効率的に実行させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、このデータ処理プログラム、サーバ装置およびデータ処理方法の好適な実施の形態を詳細に説明する。このデータ処理プログラム、サーバ装置およびデータ処理方法では、データごとにいくつのサーバ装置に複製するかを表すレプリカ数を設定し、このレプリカ数に基づいて、いずれのサーバ装置にデータを配置するかを選択する。そして、各サーバ装置は、レプリカ数が動的に変化する度にデータを配置するサーバ装置を再度選択する。レプリカ数が増加し、あらたにデータの配置先として追加されたサーバ装置は、該当するデータを新規に配置する。一方、レプリカ数が減少し、データの配置先から除外されたサーバ装置は、該当するデータを削除する。
【００１８】
すなわち、レプリカ数の変化に応じてデータを配置するサーバ装置を動的に増減することが可能となる。したがって、従来起こっていたような、クライアントからの参照要求が集中して、応答時間が長くなってしまったり、更新頻度が多いにもかかわらず同じデータが配置されたサーバ装置数が多いため、各サーバ装置が更新処理に追われ処理効率が低下してしまったりといった問題を解消することができる。以下には、上述したデータ処理を実現するための最良の形態について具体的に説明する。
【００１９】
（データ処理の概要）
まず、本実施の形態にかかるデータ処理の概要について説明する。図１は、本実施の形態にかかるサーバ装置のシステム構成を示す説明図である。図１のように、本実施の形態では、同一の構成のサーバ装置１００群にデータを分散して配置するデータ分散システム２００を実現する。このデータ分散システム２００によって分散されるデータとは、ウェブログの記事や、共有データベースなど特に限定はない。したがって、複数のユーザからの参照処理や、更新処理が想定されるデータを扱うシステムであれば、多様な用途に適応させることができる。
【００２０】
そして、データ分散システム２００には、ユーザからの処理要求を表すリクエスト１２０を受け付けるロードバランサー１１０が接続されている。ロードバランサー１１０は、外部から受け付けたリクエスト１２０をデータ分散システム２００として用意されているサーバ装置１００−１〜サーバ装置１００−ｎのいずれかに割り振る。
【００２１】
サーバ装置１００は、ロードバランサー１１０からリクエスト１２０が割り振られると、アプリ実行部１０１において、アプリケーション（リクエスト１２０の内容に応じたアプリケーション）を実行させることによって、リクエスト１２０として要求されたデータ処理をおこなう。サーバ装置１００において実行されるデータ処理とは、具体的には、下記に示すように対象データへの更新処理と、参照処理との２種類からなる。
【００２２】
＜データ更新処理＞
リクエスト１２０によって指定された対象データの内容が変わる処理であり、新規書き込み処理と、既存のデータの更新処理と、既存のデータの削除処理との３種類に分類される。
＜データ参照処理＞
リクエスト１２０によって指定された対象データの内容が変わらない処理であり、既存のデータの読み取り処理がこれにあたる。
【００２３】
なお、本実施の形態にて説明しているリクエスト１２０は、上記のいずれのデータ処理の要求をするかを識別する情報と対象データに関する情報とによって構成されている。たとえば、データ更新時のリエスト１２０やデータ参照時のリクエスト１２０の構成を表すと下記のようになる。
【００２４】
・更新時のリクエスト
リクエスト例１：新規書き込み
アクセスの種類：更新（ファイルの新規作成）
データ情報：新しいデータ（新規作成するファイル名と書き込む内容）
リクエスト例２：既存のデータの更新
アクセスの種類：更新（ファイルの上書き）
データ情報：更新するデータ（上書きするファイル名と上書きする内容）
リクエスト例３：既存のデータの削除
アクセスの種類：更新（ファイルの削除）
データ情報：削除するデータ（削除するファイル名）
・参照時のリクエスト
リクエスト例４：既存のデータの読み取り
アクセスの種類：参照（ファイル内容の読み取り）
データ情報：読み取るデータ（読み取るファイル名）
【００２５】
そして、本実施の形態の場合、データ分散システム２００を構成する各サーバ装置１００は、連携処理部１０２を備えることによってさらに、下記のような機能を実現することができる。
【００２６】
１）クライアントなどの外部から対象データへのアクセス（参照・更新）のリクエスト１２０を受け付けたサーバ装置１００は、受け付けたリクエスト１２０を処理の対象となるデータが配置されているサーバ装置１００に送信する。このとき、自装置が対象となるデータの配置場所ならば、自装置に送信し、また、他のサーバ装置１００が対象となるデータの配置場所ならば、このサーバ装置１００にも送信する。なお、リクエスト１２０が更新処理の場合は、リクエスト中にあらたに書き込むデータの内容、あるいは更新データの内容を含む。
【００２７】
２）データ処理の対象となる各データが配置されているサーバ装置１００は、データのアクセスパターン（参照・更新の割合、頻度）をモニタし、定期的にデータごとのレプリカ数を決定する。
【００２８】
３）いずれかのデータが配置されているサーバ装置１００は、データのレプリカ数が変更された場合、その情報を他のサーバ装置に送信する。
【００２９】
４）いずれかのデータが配置されたサーバ装置１００は、あるデータのレプリカ数の変更に関する情報を受け取った場合、変更後のレプリカ数から当該データの配置先を特定する。レプリカ数が増えた場合、足りないレプリカを送信する送信元サーバをあらかじめ決めたルールを用いて決定し、自装置がその送信元サーバの場合は、データのレプリカをあらたな配置先にコピーする。レプリカ数が減った場合、自装置が配置先から外れれば配置されていたデータを削除する。
【００３０】
本実施の形態にかかるサーバ装置１００の機能として特に特徴となる点が、上記１）である。図１のように、データ分散システム２００に配置されているデータ（新規書き込みの場合は、あらたに配置したいデータ）に対しての処理のリクエスト１２０が、ロードバランサー１１０を介してデータ分散システム２００を構成するいずれかのサーバ装置１００に送信される。このとき、リクエスト１２０が割り振られたサーバ装置１００は、リクエスト１２０の対象データに設定されたレプリカ数に基づいて、対象データが配置されているサーバ装置１００を選択する。
【００３１】
図１のようにｎ台のサーバ装置１００によってデータ分散システム２００が構成されている場合、レプリカ数：３の対象データは、３台のサーバ装置１００（たとえば、サーバ装置１００−１，１００−２，１００−ｎ）に配置されている。したがって、いずれかのサーバ装置１００がリクエスト１２０として対象データへの更新要求を受け付けると、対象データが配置された３台のサーバ装置１００−１，１００−２，１００−ｎすべてに更新要求が送信される。
【００３２】
一方、いずれかのサーバ装置１００がリクエスト１２０として対象データへの参照要求を受け付けると、３台のサーバ装置１００−１，１００−２，１００−ｎのいずれかに参照要求が送信される。参照要求を受け付けたサーバ装置１００は、配置されている対象データを参照し、この参照結果を、リクエスト１２０を受け付けたサーバ装置１００へ返信する。このように、データ分散システム２００では、サーバ装置１００間でリクエストを処理するための双方向通信がおこなわれる。これら、双方向通信は、サーバ装置１００に含まれる連携処理部１０２（後述）を介して直接おこなわれる。
【００３３】
上述のように、本実施の形態では、対象となるデータごとにレプリカ数に基づいて複数台用意されたサーバ装置１００のいずれかに分散して配置される。このときの分散台数＝レプリカ数となる。また、クライアントからのデータアクセス状況をモニタしながら定期的にレプリカ数を計算する。そして、あらたに計算されたレプリカ数に基づいて、再度データの配置先を決定する。したがって、アクセスパターンが頻繁に変化する環境でも、その変化に合わせて常に最適なレプリカ数が適用され、データ分散システム２００としての性能や、対象データにリクエスト１２０を送るユーザや、データ分散システム２００の管理者にとっての利便性を一定に保つことができる。
【００３４】
従来の技術では、運用を始めてからの人手によるレプリカ数の変更を避けたい場合、各データへのアクセスパターンを事前に詳細に分析してレプリカ数を決定する必要があった。本実施の形態では、各サーバ装置１００は、レプリカ数に応じて動的にデータ配置内容を変更することができるため、各サーバ装置１００が運用中であっても、動的にレプリカ数を変更することができる。したがって、事前の詳細な分析なしでレプリカ数を決定しても、実データを分析しながらレプリカ数を変更していくので、最終的に最適なレプリカ数を適用することができる。
【００３５】
また、従来の技術のように事前の分析によってレプリカ数を決定する場合、実運用でのデータを用いることができず、予測値になってしまう場合があった。その予測値が実情とかけ離れてしまうことも多く、結果として詳細に分析したとしても分析結果がサーバ装置１００の効率を保つものとはならず、無意味なものになってしまうことがあった。本実施の形態にかかるサーバ装置１００では、デフォルトのレプリカ数が不適切であっても、最終的に最適なレプリカ数を適用できる。
【００３６】
（システム構成）
つぎに、上述したようなデータ処理を実現するサーバ装置のシステム構成について説明する。図１のように、データ分散システム２００へのアクセスは、ロードバランサー１１０を介しておこなわれる。ロードバランサー１１０は、クライアント端末を用いてユーザから入力されたリクエスト１２０を一括して受け付け、受け付けたデータや処理要求を、データ分散システム２００を構成するいずれかのサーバ装置１００へ送信する。
【００３７】
ロードバランサー１１０によるデータや処理要求の割り振り動作については特に限定はなく、たとえば、受け付けたものをサーバ装置１００の装置番号順に順次割り振ってもよいし、各サーバ装置１００の稼働状態を監視して、ビジー状態のサーバ装置１００以外にランダムに割り振ってもよい。
【００３８】
つぎに、データ分散システム２００を構成する各サーバ装置の構成について説明する。各サーバ装置１００は、いずれもアプリ実行部１０１と連携処理部１０２と、記憶部１０３とを備えた構成になっている。そして、各データへアクセスをおこなう際、アプリ実行部１０１によって実行されるアプリケーションは、該当するデータが配置されたすべてのサーバ装置１００上で動作するように設定されている。また、記憶部１０３は、実際にデータを配置する記録領域であり、各種メモリやディスクによって実現される。記憶部１０３への実際のデータの書き込み処理については公知の技術を利用するためここでは説明を省略する。
【００３９】
そして、本実施の形態にかかるサーバ装置１００の特徴となるのが、連携処理部１０２である。アプリ実行部１０１は、ロードバランサー１１０によってあらたにリクエスト１２０が割り振られると、入力されたリクエスト１２０から実際のデータへのアクセス処理（リクエスト）に変換し、自装置の連携処理部１０２に送信する。したがって、連携処理部１０２は、リクエスト１２０を受け取ると、そのリクエスト１２０に含まれる対象データに設定されたレプリカ数に応じてそのデータを配置するサーバ装置（以下、「配置サーバ」とよぶ）を選択し、選択されたサーバ装置１００の連携処理部１０２へリクエスト１２０を送信する。
【００４０】
また、連携処理部１０２は、あらたに入力されたデータに対してレプリカ数が設定された場合や、後述する機能によってあるデータのレプリカ数が更新された場合に、データを識別する情報（たとえば、データ内容を含むファイル名）と一緒に、そのデータに対応したレプリカ数を各サーバ装置１００に送信する。このように、連携処理部１０２によってデータごとに設定されているレプリカ数の情報を保持することによって、サーバ装置１００はどのデータに対するリクエスト１２０が割り振られても、対象データの配置サーバを特定して、適切な処理を実行することができる。
【００４１】
（サーバ装置のハードウェア構成）
つぎに、サーバ装置の具体的なハードウェア構成について説明する。図２は、本実施の形態にかかるサーバ装置のハードウェア構成を示すブロック図である。図２において、サーバ装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、磁気ディスクドライブ２０４と、磁気ディスク２０５と、通信Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２０６と、入力デバイス２０７と、出力デバイス２０８と、を備えている。また、各構成部はバス２１０によってそれぞれ接続されている。
【００４２】
ここで、ＣＰＵ２０１は、サーバ装置１００の全体の制御を司る。ＲＯＭ２０２は、ブートプログラムや、本実施の形態にかかるデータ処理を実現するためのデータ処理プログラムなどの各種プログラムを記憶している。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。磁気ディスクドライブ２０４は、ＣＰＵ２０１の制御にしたがって磁気ディスク２０５に対するデータの更新／参照を制御する。磁気ディスク２０５は、磁気ディスクドライブ２０４の制御で書き込まれたデータを記憶する。なお、図２のハードウェア構成では、記憶部１０３の役割を担う記録媒体として、磁気ディスク２０５を用いているが、光ディスクや、フラッシュメモリなど他の記録媒体を利用してもよい。
【００４３】
通信Ｉ／Ｆ２０６は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク（ＮＥＴ）２０９に接続され、このネットワーク２０９を介して他のサーバ装置１００やロードバランサー１１０に接続される。そして、通信Ｉ／Ｆ２０６は、ネットワーク２０９と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。通信Ｉ／Ｆ２０６の構成例としては、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００４４】
入力デバイス２０７は、サーバ装置１００に対しての外部からの入力を受け付ける。入力デバイス２０７としては、具体的には、キーボード、マウスなどが挙げられる。なお、図１に例示したようにサーバ装置１００は、ロードバランサー１１０によって割り振られたリクエスト１２０に応じてアプリを実行するため、入力デバイス２０７からリクエスト１２０が入力されるようなことはなく、サーバ装置１００の保守・管理を目的として用意されている。
【００４５】
キーボードの場合、たとえば、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウスの場合、たとえば、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。また、ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００４６】
出力デバイス２０８は、サーバ装置１００に配置されたデータや、アプリケーションの実行状況、さらには配置された各データのアクセスパターンやその解析結果などを出力する。出力デバイス２０８としては、具体的には、ディスプレイ、プリンタなどが挙げられる。
【００４７】
ディスプレイの場合、たとえば、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイとしてさらに、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。また、プリンタの場合、たとえば、画像データや文書データを印刷する。さらに、レーザプリンタやインクジェットプリンタを採用することができる。
【００４８】
なお、上述した入力デバイス２０７も出力デバイス２０８も、サーバ装置１００という装置の特性上必須の構成ではなく、管理者の利便性に応じて適宜構成を変化させてもよい。
【００４９】
（連携処理部の機能的構成）
つぎに、連携処理部１０２の詳細な処理について説明する。図１にて説明したように、各サーバ装置１００の連携処理部１０２同士は、双方向通信が可能であり、あるデータへのリクエスト１２０が割り振られた場合、後述する連携処理部１０２の制御によってリクエスト１２０（処理の種類とデータを識別する情報とデータ内容）の送受信がおこなわれる。また、あるデータについてのレプリカ数があらたに決定された、または、変更された場合には、新しいレプリカ数情報（データを識別する情報とデータ内容、新しいレプリカ数）との送受信がおこなわれる。
【００５０】
したがって、以下には、本実施の形態にかかるサーバ装置１００の連携処理部１０２が上述の制御を実現するための機能的構成について説明する。図３は、連携処理部の機能的構成を示すブロック図である。図３のように、連携処理部１０２は、取得部３０１と、選択部３０２と、送受信部３０３と、設定部３０４と、判断部３０５と、実行部３０６と、決定部３０７とを備えている。この制御部となる機能（取得部３０１〜決定部３０７）は、具体的には、たとえば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５などの記憶領域に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、通信Ｉ／Ｆ２０６により、その機能を実現する。
【００５１】
取得部３０１は、任意のデータについての処理要求としてリクエスト１２０が入力されると、このデータに設定されているレプリカ数を取得する。上述したように、すでにデータ分散システム２００を構成するいずれかのサーバ装置１００の記億部１０３に配置されているデータであれば、すべてのサーバ装置１００には、このデータのレプリカ数の情報が保持されている。したがって、取得部３０１は、入力されたリクエスト１２０の対象データに設定されているレプリカ数を取得する。取得部３０１によって取得されたレプリカ数とデータとの対応情報は、それぞれ記億部１０３（たとえば、磁気ディスク３０５）などの記憶領域に記憶される。
【００５２】
選択部３０２は、データ分散システム２００を構成するサーバ装置１００のうち、リクエスト１２０の対象となったデータが配置されているサーバ装置１００を、所定のアルゴリズムを用いてレプリカ数分選択する。なお、ここで選択の基準として利用されるアルゴリズムには、特に限定はない。たとえば、入力されたデータのハッシュ値を求め、サーバ台数で割った時の余りと装置番号が一致するサーバ装置１００を先頭にレプリカ数分のサーバ装置１００を配置サーバとして選択する。
【００５３】
他にも、サーバ装置１００の台数がＮ台であれば、入力されたデータの識別番号をＮ進数に変換して、変換後の識別番号と、装置番号とが一致するサーバ装置１００を先頭にレプリカ数分のサーバ装置を配置サーバに選択するような手法を用いてもよい。このように選択部３０２によって選択された配置サーバの情報は、記憶部１０３などの記憶領域に記憶される。
【００５４】
送受信部３０３は、他のサーバ装置１００の連携処理部１０２との双方向通信をおこなう。たとえば、送受信部３０３は、取得部３０１によって任意のデータのレプリカ数を取得した場合、データ分散システム２００を構成するサーバ装置１００すべてに送信する。また送受信部３０３は、選択部３０２によって配置サーバとして選択されたレプリカ数分の各サーバ装置１００にリクエスト１２０を送信する。また、送受信部３０３は、他のサーバ装置１００の連携処理部１０２から送信されたレプリカ数や、リクエスト１２０を受信する役割も担う。
【００５５】
設定部３０４は、任意のデータについてのリクエスト１２０として、新規書き込みの処理の要求が入力された場合にこのデータのレプリカ数としてあらかじめ与えられていた値を設定する。取得部３０１では、すでにいずれかのサーバ装置１００に配置されているデータであれば、レプリカ数を記憶部１０３から取得することができるが、新規書き込みの場合、レプリカ数が保持されていない。したがって、あらかじめ、データ分散システム２００の管理者によって設定された初期値をレプリカ数として設定することができる。なお、このとき、データへのアクセス内容に適さないレプリカ数が設定されたとしても、後述する決定部３０７によって動的にレプリカ数が変更されるため、処理効率に悪影響を及ぼすことはない。
【００５６】
なお、設定部３０４によって任意のデータのレプリカ数が設定された場合も、選択部３０２や送受信部３０３は、取得部３０１によってレプリカ数が設定された場合と同様に、配置サーバの選択と、レプリカ数およびリクエスト１２０の送信をおこなう。
【００５７】
判断部３０５は、新規書き込みのリクエスト１２０が入力され、設定部３０４によって任意のデータのレプリカ数が設定されると、このレプリカ数とサーバ装置１００群の総数とが等しいか否かを判断する。判断部３０５によって、レプリカ数とサーバ装置１００群の総数とが等しいと判断された場合、送受信部３０３は、サーバ装置１００群すべてに、任意のデータの新規書き込み処理の要求を表すリクエスト１２０を送信する。
【００５８】
そして、判断部３０５によってレプリカ数とサーバ装置１００群の総数とが等しくないと判断された場合、選択部３０２によって、上述したアルゴリズムを用いて、サーバ装置１００群の中からこのデータを配置すべきサーバ装置１００をレプリカ数分選択する。そして、送受信部３０３は、選択部３０２によって選択されたレプリカ数分の各サーバ装置１００へ、このデータに対する更新処理を表すリクエスト１２０を送信する。
【００５９】
また、判断部３０５は、あるデータについてのリクエスト１２０として、サーバ装置１００群のいずれかに配置されているこのデータに対する書き込み処理の要求が入力された場合、このデータのレプリカ数とサーバ装置１００群の総数とが等しいか否かを判断する。判断部３０５によって、レプリカ数とサーバ装置１００群の総数とが等しいと判断された場合、送受信部３０３は、サーバ装置１００群すべてに、上記データの更新処理の要求を表すリクエスト１２０を送信する。
【００６０】
そして、判断部３０５によって、レプリカ数とサーバ装置１００群の総数とが等しくないと判断された場合、選択部３０２は、上述したアルゴリズムを用いて、サーバ装置１００群の中からこのデータが配置されているサーバ装置１００をレプリカ数分選択する。このような処理がおこなわれた場合も、送受信部３０３は、選択されたレプリカ数分の各サーバ装置１００へ、このデータに対する書き込み処理を表すリクエスト１２０を送信する。
【００６１】
なお、送受信部３０３は、あるデータについてのリクエスト１２０として、参照処理の要求が入力された場合には、選択部３０２によって選択されたレプリカ数分の各サーバ装置１００のいずれか一つへ参照処理の要求を表すリクエスト１２０を送信すればよい。
【００６２】
また、実行部３０６は、送受信部３０３を介して、自装置や、他のサーバ装置から送信されたリクエスト１２０を受け付けた場合、リクエスト１２０に応じた処理を実行する。したがって、更新要求を受付ければ更新処理を、参照要求を受付ければ参照処理をおこなう。なお、実行部３０６は、リクエスト１２０として、更新要求を受付けた場合には、そのまま更新処理が終わると待機状態となる。一方、実行部３０６は、リクエスト１２０として参照要求を受け付けた場合には、対象データへの参照処理の結果を、送受信部３０３を介して、リクエスト１２０の送信元のサーバ装置１００へ返信する。
【００６３】
これは、リクエスト１２０が割り振られたサーバ装置１００からみると、リクエスト１２０の実行は、あくまでも自装置でおこなわれているものとして処理されているためである。したがって、処理要求の送信元のサーバ装置１００へ参照結果が戻らないと、リクエスト１２０が割り振られたサーバ装置１００では、いつまでも処理要求が実行されていないものと判断されてしまうため、参照結果を返信することによって、このような事態を防ぐことができる。
【００６４】
また、サーバ装置１００は、装置内部に自立的にレプリカ数を決定する機能を備えていてもよい。決定部３０７は、任意のタイミングごとに、実行部３０６によって実行された各データへのリクエスト１２０を参照して各データのレプリカ数を決定することができる。
【００６５】
したがって、送受信部３０３は、決定部３０７によって、現在設定されているレプリカ数とは異なるレプリカ数が決定された場合にも、あらたなレプリカ数をサーバ装置１００すべてに送信する。各サーバ装置１００の選択部３０２では、送信されてきたあらたなレプリカ数に基づいて、配置サーバを選択する。実行部３０６は、自装置が、選択部３０２によって、あらたに配置サーバに選択された場合に対象データを記憶部１０３へ書き込む。一方、選択部３０２によって、あらたに対象データの配置サーバに選択されなくなった場合、すなわち、配置サーバの選択から漏れた場合には、対象データを記憶部１０３から削除する。
【００６６】
また、決定部３０７では、実行部３０６によって実行された対象データに対する処理時間の平均値が所定値以上の場合、サーバ装置１００群の総数を対象データのレプリカ数に決定し、対象データへの処理時間の平均値が所定値未満であった場合、レプリカ数として設定可能な最小値をレプリカ数に決定することができる。
【００６７】
上述の対象データへの処理時間の平均値と所定値との比較内容について具体的に説明すると、たとえば、対象データのレプリカ数をサーバ装置１００群の総数とした場合の対象データに対する処理時間の平均値と、対象データのレプリカ数を１にした場合の対象データに対する処理時間の平均値を求め、両者を比較することによって、レプリカ数を決定する手法が挙げられる。この比較により前者が後者より小さい場合は、サーバ装置１００群の総数をレプリカ数に決定し、後者が前者より小さい場合は、レプリカ数として設定可能な最小値をレプリカ数に決定することができる。
【００６８】
以上説明したように、本実施の形態にかかるサーバ装置１００では、ロードバランサー１１０が受け付けたリクエスト１２０がデータ分散システム２００内のいずれのサーバ装置１００に割り振られたとしても、リクエスト１２０の対象データに設定されたレプリカ数に応じて対象データの配置先を判断することができる。したがって、どのような内容のリクエスト１２０を受け付けた場合であっても、レプリカ数に応じた配置サーバを選択して効率的にデータを分散することができる。以下に、上述した機能を持つサーバ装置１００の具体的な動作をデータ更新時、データ参照時に分けて順次説明する。
【００６９】
（データ更新処理）
まず、サーバ装置１００におけるデータ更新処理について説明する。図４は、サーバ装置におけるデータ更新処理を示す説明図である。図４を用いて、各サーバ装置１００の連携処理部１０２が、データごとに設定されたレプリカ数に応じて対象データへアクセスする手順を説明する。
【００７０】
まず、ロードバランサー１１０によっていずれかのサーバ装置１００（図４ではサーバ装置１００−１）にある対象データの更新（新規データへの書き込み、配置済みデータへの書き込み、配置済みデータの削除）処理が割り振られる。連携処理部１０２では、あらかじめ決められたアルゴリズムによりそのデータの配置サーバを決定する。
【００７１】
ここで、配置サーバの決定処理の手順について説明する。図５は、配置サーバ選択処理の手順を示すフローチャートである。図５のフローチャートにおいて、まず、あらたに決定、もしくは更新されたレプリカ数を取得する（ステップＳ５０１）。そして、取得したレプリカ数がサーバ装置１００の数（総数）と等しいか否かを判断する（ステップＳ５０２）。ここでレプリカ数と比較するサーバ装置１００の数とは、ロードバランサー１１０によってリクエスト１２０が割り振られるように設定されているサーバ装置１００の総数を意味する。したがって、図１や図４に示した例では、サーバ装置１００の数はｎとなる。
【００７２】
ステップＳ５０２において、レプリカ数とサーバ数とが等しいと判断されると（ステップＳ５０２：Ｙｅｓ）、すべてのサーバ装置１００に更新要求をおこなわなければならないため、全サーバ装置１００を配置サーバに決定して（ステップＳ５０３）、一連の配置サーバ選択処理を終了する。
【００７３】
一方、ステップＳ５０２において、レプリカ数とサーバ装置１００の数とが等しくないと判断された場合（ステップＳ５０２：Ｎｏ）、全サーバ装置１００の中からレプリカ数分のサーバ装置１００を配置サーバに決定するための処理に移行する。まず、対象データのハッシュ値を算出する（ステップＳ５０４）。そして、レプリカ数が１か否かを判断する（ステップＳ５０５）。
【００７４】
ステップＳ５０５において、レプリカ数が１と判断された場合（ステップＳ５０５：Ｙｅｓ）、算出されたハッシュ値をサーバ数（総数）での割ったときの余りを求め、この余りの値と装置番号が一致するサーバ装置１００を配置サーバに選択し（ステップＳ５０６）、一連の処理を終了する。一方、レプリカ数が１以外と判断された場合（ステップＳ５０５：Ｎｏ）、ステップＳ５０６と同様にハッシュ値をサーバ数で割ったときの余りを求め、この余りの値と一致する装置番号が与えられたサーバ装置１００を先頭に、レプリカ数分のサーバ装置１００を配置サーバとして選択して（ステップＳ５０７）、一連の処理を終了する。
【００７５】
ステップＳ５０６およびステップＳ５０７における処理を具体的に説明すると、たとえば、ハッシュ値をサーバ台数分で割った余り（ｏｄｄ）を求めている。そして、レプリカ数＝１であればステップＳ５０６のように、ｏｄｄが装置番号に設定されているサーバ装置１００を配置サーバに選択する。そして、レプリカ数＝ｍ（１＜ｍ＜ｎ）の場合、ステップＳ５０７のように、装置番号としてｏｄｄ，ｏｄｄ＋１，…，ｏｄｄ＋ｍ−１が設定されているｍ台のサーバ装置１００が配置サーバとなる。
【００７６】
つぎに、図４に戻り、更新処理パターン（１）および（２）について処理について説明する。連携処理部１０２では、配置サーバを決定すると、受け付けた更新要求を配置サーバへ送信しなければならない。このとき、連携処理部１０２では自装置が配置サーバだった場合に、更新要求に応じた書き込みをおこなう更新処理パターン（１）と、自装置以外の配置サーバへ更新要求に応じた書き込みをおこなう更新処理パターン（２）とが必要となる。
【００７７】
図６−１は、データ更新処理の手順（更新要求を自装置のアプリ実行部から受信したサーバ装置の場合）を示すフローチャートである。図６−１のフローチャートでは、まず、自装置のアプリ実行部１０１から更新要求を受信したか否かを判断する（ステップＳ６１１）。ここで、データ更新要求を受信するまで待機状態となり（ステップＳ６１１：Ｎｏのループ）、データ更新要求を受信すると（ステップＳ６１１：Ｙｅｓ）、配置サーバ選択処理をおこなう（ステップＳ６１２）。
【００７８】
つぎに、ステップＳ６１２の配置サーバ選択処理の結果を参照して自装置が配置サーバであるか否かを判断する（ステップＳ６１３）。ここで、自装置が配置サーバであると判断された場合（ステップＳ６１３：Ｙｅｓ）、データ更新要求に応じて対象データを更新し（ステップＳ６１４）、他の配置サーバへ更新要求を送信し（ステップＳ６１５）、一連の処理を終了する。なお、ステップＳ６１３において、自装置が配置サーバではないと判断された場合（ステップＳ６１３：Ｎｏ）、ステップＳ６１４の更新要求をおこなわずに、ステップＳ６１５に移行して、他の配置サーバに更新要求を送信して（ステップＳ６１５）、一連の処理を終了する。
【００７９】
そして、ステップＳ６１５のように、配置サーバに決定された他のサーバ装置１００へ更新要求を送信した場合には、送信先のサーバ装置１００（図４の場合はサーバ装置１００−ｎ）において更なる処理が必要となる。図６−２は、データ更新処理の手順（更新要求を他のサーバ装置の連携処理部から受信したサーバ装置の場合）を示すフローチャートである。図６−２のフローチャートにおいて、まず、他のサーバ装置１００から更新要求を受信したか否かを判断する（ステップＳ６２１）。ここで、更新要求を受信するまで待ち（ステップＳ６２１：Ｎｏのループ）、更新要求を受信したと判断されると（ステップＳ６２１：Ｙｅｓ）、更新要求にしたがって対象データを更新し（ステップＳ６２２）、一連の処理を終了する。
【００８０】
（データ参照処理）
つぎに、サーバ装置１００におけるデータ参照処理について説明する。図７は、サーバ装置におけるデータ参照処理を示す説明図である。図７の場合も、サーバ装置１００−１に、リクエスト１２０（参照要求）が割り振られているものとして説明する。連携処理部１０２では、更新処理の場合と同様に、あらかじめ決められたアルゴリズムによりそのデータの配置サーバを決定する（図５参照）。
【００８１】
連携処理部１０２では、配置サーバを決定すると、受け付けた参照要求を配置サーバへ送信する。このとき、連携処理部１０２では、自装置が配置サーバだった場合に、参照要求に応じた読み込みをおこなう処理パターン（１）と、自装置以外の配置サーバへ参照要求を送信し、その要求を受信したサーバ装置１００がその要求に応じた読み込みをおこなう処理パターン（２）とが必要となる。また、上記処理パターン（２）の場合、参照要求が送信されてきたサーバ装置１００−ｎは、この参照結果を送信元のサーバ装置１００−１に送信しなければならない。したがって、以下に処理パターン（１）、（２）のそれぞれの場合の処理について説明する。
【００８２】
図８−１は、データ参照処理の手順（参照要求を自装置のアプリ実行部から受信したサーバ装置の場合）を示すフローチャートである。図８−１のフローチャートでは、まず、自装置のアプリ実行部１０１からリクエスト１２０（参照要求）を受信したか否かを判断する（ステップＳ８１１）。ここで、データ参照要求を受信するまで待機状態となり（ステップＳ８１１：Ｎｏのループ）、データ参照要求を受信すると（ステップＳ８１１：Ｙｅｓ）、配置サーバ選択処理をおこなう（ステップＳ８１２）。
【００８３】
つぎに、対象となっているデータのレプリカ数が１か否かを判断する（ステップＳ８１３）。そして、レプリカ数が１に設定されている場合（ステップＳ８１３：Ｙｅｓ）、ステップＳ８１２の配置サーバ選択処理によって配置サーバに決定されたサーバ装置１００を参照要求に応じたデータ参照をおこなうための参照サーバに決定する（ステップＳ８１４）。すなわち、決定された配置サーバ以外に対象データが配置されているサーバ装置１００はないことを意味する。
【００８４】
一方、レプリカ数が１以外の値に設定されている場合（ステップＳ８１３：Ｎｏ）、ステップＳ８１２の配置サーバ選択処理によって配置サーバに決定されたサーバ装置１００のいずれか一つを参照要求に応じたデータ参照をおこなうための参照サーバに決定する（ステップＳ８１５）。
【００８５】
参照サーバが決定すると、つぎに、自装置はステップＳ８１２によって決定された配置サーバか否かを判断する（ステップＳ８１６）。ここで、自装置が配置サーバであると判断された場合（ステップＳ８１６：Ｙｅｓ）、自装置の記憶部１０３に配置されている対象データを参照して（ステップＳ８１７）、一連の処理を終了する。一方、自装置が配置サーバでないと判断された場合（ステップＳ８１６：Ｎｏ）、参照サーバに参照要求を送信して（ステップＳ８１８）、一連の処理を終了する。
【００８６】
そして、ステップＳ８１８のように、参照サーバに決定された他のサーバ装置１００へ参照処理を送信した場合には、送信先のサーバ装置１００（図７の場合はサーバ装置１００−ｎ）において更なる処理が必要となる。図８−２は、データ参照処理の手順（参照要求を他のサーバ装置の連携処理部から受信したサーバ装置の場合）を示すフローチャートである。
【００８７】
図８−２のフローチャートにおいて、まず、他のサーバ装置１００の連携処理部１０２から参照要求を受信したか否かを判断する（ステップＳ８２１）。ここで、参照要求を受信するまで待ち（ステップＳ８２１：Ｎｏのループ）、参照要求を受信したと判断されると（ステップＳ８２１：Ｙｅｓ）、参照要求にしたがって対象データを参照し（ステップＳ８２２）、参照要求の送信元のサーバ装置１００へ参照結果を送信して（ステップＳ８２３）、一連の処理を終了する。
【００８８】
（レプリカ数変更時のデータ再配置処理）
つぎに、レプリカ数が変更された場合のデータの再配置処理について説明する。本実施の形態にかかるサーバ装置１００では、レプリカ数の変更に応じて記憶部１０３にあらたに対象データを配置する、もしくは配置されていた対象データを削除する処理が必要となる。以下、それぞれの場合に分けて処理内容を説明する。
【００８９】
図９は、レプリカ数変更時のデータ再配置処理を示すフローチャートである。図９のフローチャートにおいて、まず、所定時間が経過したか否かを判断する（ステップＳ９０１）。ここで、所定時間が経過するまで待ち（ステップＳ９０１：Ｎｏのループ）、所定時間が経過すると（ステップＳ９０１：Ｙｅｓ）、レプリカ数決定処理をおこなう（ステップＳ９０２）。
【００９０】
なお、このステップＳ９０１は、レプリカ数の更新タイミングを時間基準で判断する処理である。すでに述べたが、更新タイミングの設定は任意であり、自由に設定することができる。したがって、たとえば、特定のデータに対して、または、自装置に対して所定回数の要求処理が割り振られたか否かによって判断するなど、処理回数基準で更新タイミングを設定してもよい。
【００９１】
また、ステップＳ９０２におけるレプリカ数決定処理は、各種アクセスパターン解析ツールを用いてもよいし、管理者からの設定を受け付けてもよい。また、後述するような手順によって自立的にレプリカ数を決定してもよい。
【００９２】
レプリカ数が決定されると、つぎに、ステップＳ９０２の決定によってレプリカ数が変更されたか否かを判断する（ステップＳ９０３）。ここで、レプリカ数が変更されていない場合（ステップＳ９０３：Ｎｏ）、配置サーバ数は変わらないため、そのまま一連の処理を終了する。
【００９３】
一方、ここで、レプリカ数が変更された場合（ステップＳ９０３：Ｙｅｓ）、変更されたレプリカ数の情報を他のサーバ装置１００に送信する（ステップＳ９０４）。そして、変更によってレプリカ数は増加したか否かを判断する（ステップＳ９０５）。レプリカ数が増加した場合は（ステップＳ９０５：Ｙｅｓ）、増加時のデータ再配置処理をおこない（ステップＳ９０６）、レプリカ数が増加していない場合（ステップＳ９０５：Ｎｏ）、すなわちレプリカ数が減少した場合には、減少時のデータ再配置処理をおこない（ステップＳ９０７）、一連の処理を終了する。
【００９４】
・レプリカ数増加時
まず、レプリカ数増加時の処理について説明する。図１０は、レプリカ数増加時のデータ再配置処理を示すフローチャートである。図１０のフローチャートにおいて、まず、変更された新レプリカ数を用いた配置サーバ選択処理をおこなう（ステップＳ１００１）。このステップＳ１００１にておこなわれる配置サーバ選択処理は、図５において説明した配置サーバ選択処理である。ステップＳ１００１で選択された配置サーバを新配置サーバとする。
【００９５】
つぎに、対象データについて設定されている旧レプリカ数＝１か否かを判断する（ステップＳ１００２）。ここで、旧レプリカ数＝１であると判断された場合（ステップＳ１００２：Ｙｅｓ）、旧レプリカ数に基づいて決定された旧配置サーバは、確実に新配置サーバに決定されているため、この配置サーバをデータ送信元に決定する（ステップＳ１００３）。このデータ送信元とは、あらたしく配置サーバに加わったサーバ装置１００に対象データを送信する、マスターデータが配置されているサーバ装置１００を意味する。
【００９６】
一方、旧レプリカ数＝１ではないと判断された場合（ステップＳ１００２：Ｎｏ）、旧レプリカ数によって決定された配置サーバである旧配置サーバのいずれか一つをデータ送信元に決定する（ステップＳ１００４）。ここでも、レプリカ数が増加した場合、旧レプリカ数によって決定された配置サーバは確実に新レプリカ数によって決定された配置サーバに含まれるため、旧配置サーバのいずれか一つをデータ送信元に決定すればよい。
【００９７】
その後、自装置がデータ送信元か否かを判断し（ステップＳ１００５）、自装置がデータ送信元に決定されていた場合（ステップＳ１００５：Ｙｅｓ）、新しく配置サーバになったサーバ装置１００に対象データを送信することによって（ステップＳ１００６）、一連の処理を終了する。一方、自装置がデータ送信元ではない場合（ステップＳ１００５：Ｎｏ）、そのまま一連の処理を終了する。この場合は、データ送信元に決定されたサーバ装置１００がデータ配置をおこなうため、自装置はなにもしなくてもよい。
【００９８】
・レプリカ数減少時
つぎに、レプリカ数減少時の処理について説明する。図１１は、レプリカ数減少時のデータ再配置処理を示すフローチャートである。図１１のフローチャートにおいて、まず、旧レプリカ数を用いた配置サーバ選択処理をおこなう（ステップＳ１１０１）。このステップＳ１１０１にておこなわれる配置サーバ選択処理は、図５において説明した配置サーバ選択処理である。
【００９９】
ステップＳ１１０１における配置サーバ選択処理を参照して、自装置が旧レプリカ数における配置サーバか否かを判断する（ステップＳ１１０２）。ここで、自装置が配置サーバではないと判断された場合（ステップＳ１１０２：Ｎｏ）、自装置には、今回レプリカ数が変更になった対象データは配置されていないため、そのまま一連の処理を終了する。
【０１００】
一方、ステップＳ１１０２において、自装置が配置サーバであると判断された場合（ステップＳ１１０２：Ｙｅｓ）、今度は、新レプリカ数を用いた配置サーバ選択処理をおこなう（ステップＳ１１０３）。そして、ステップＳ１１０３における配置サーバ選択処理を参照して、自装置が新レプリカ数における配置サーバか否かを判断する（ステップＳ１１０４）。
【０１０１】
ステップＳ１１０４の判断において、自装置が新レプリカ数における配置サーバであると判断された場合（ステップＳ１１０４：Ｙｅｓ）、自装置に配置された対象データは保持されるため、そのまま一連の処理を終了する。一方、自装置が新レプリカ数における配置サーバではないと判断された場合（ステップＳ１１０４：Ｎｏ）、自装置に配置されている対象データを削除し（ステップＳ１１０５）、そのまま一連の処理を終了する。
【０１０２】
このように、本実施の形態にかかるサーバ装置１００は、レプリカ数の動的な変更に対応して、対象データを効率的に配置することができる。
【０１０３】
（レプリカ数の決定処理）
つぎに、レプリカ数の決定処理について説明する。上述したように、本実施の形態にかかるサーバ装置１００におけるレプリカ数の設定手法は一様ではない。たとえば、データ分散システム２００の管理者によってアクセスパターンを解析し、この解析結果に基づいて各データのレプリカ数を設定してもよいし、アクセスパターンを解析するツールを用意し、このツールによる解析結果によってレプリカ数を設定してもよい。
【０１０４】
しかしながら、サーバ装置１００に自立的にレプリカ数を決定する機能を持たせることによって、管理者の負担を軽減させることができる。したがって、ここでは、各サーバ装置１００の連携処理部１０２によって自動的にレプリカ数を決定する際の具体例を説明する。
【０１０５】
サーバ装置１００の連携処理部１０２では、あるデータの参照・更新比率（そのデータへのアクセスの内訳）を考慮して、各データについてのデータアクセス処理の性能を算出する。この算出処理の際に用いられる情報が、レプリカ数、記憶部１０３への書き込み時間または記憶部１０３からの読み取り時間、サーバ装置１００間の通信時間である。参照・更新要求の比率が変わる環境では、定期的にその時点での参照・更新要求の割合を用いて性能を算出し、最も性能が高くなるレプリカ数を決定する必要がある。以下には、上述の情報を用いたレプリカ数の決定手順について説明する。
【０１０６】
説明の前に、以下に利用する変数を列挙する。
【０１０７】
更新割合：Ｗ［％］
参照割合：Ｒ［％］
サーバ台数：Ｎ［台］
レプリカ数：ｒ（ｒ＞０の整数）
サーバ装置間の通信時間：Ｔｔ［ｓｅｃ］
書き込み時間：Ｔｗ［ｓｅｃ］
読み取り時間：Ｔｒ［ｓｅｃ］
更新時の平均レイテンシー：Ｌｗ
参照時の平均レイテンシー：Ｌｒ
【０１０８】
まず、連携処理部１０２は、ある一定時間間隔における各データへの参照・更新要求をカウントし、データごとに参照割合Ｒ・更新割合Ｗを求める。具体的には、１時間の間に、１８０回の参照処理がおこなわれ、２０回の更新処理がおこなわれた場合、参照割合Ｒ＝９０［％］、更新割合Ｗ＝１０［％］となる。なお、ここでは、一例として一定時間間隔において発生したデータへの参照・更新要求回数からそれぞれの参照割合Ｒ・更新割合Ｗを求めているが、ある一定回数の要求のうち参照と更新がそれぞれ何回であったかに基づいて参照割合Ｒ・更新割合Ｗを求めてもよい。たとえば１００回の要求のうち９０回が参照で、１０回が更新であれば、Ｒ＝９０［％］、Ｗ＝１０［％］となる。
【０１０９】
つぎに、連携処理部１０２は、上述の参照割合Ｒ・更新割合Ｗを算出するのと同時に、レプリカ数ｒに応じたデータ参照・更新のそれぞれの平均レイテンシーを算出し、平均レイテンシーが最も低くなるようレプリカ数を決定する。以下に図１２，１３を用いて、レプリカ数決定の手順を詳細に説明する。
【０１１０】
なお、サーバ装置１００間の通信時間Ｔｔ、書き込み時間Ｔｗ、読み取り時間Ｔｒは、何回かの実測値を平均して求めてもよい。または、実際のサーバ装置１００間の通信時間Ｔｔ、書き込み時間Ｔｗ、読み取り時間Ｔｒについて、それぞれ個別に計測してもよいし、あらかじめ仕様として与えられている、もしくはテスト値が開示されているなど、あらかじめわかっている場合にはその値を利用してもよい。ここでは、これらの値を求める手段については特に限定せず、データ分散システム２００の管理者が適宜選択することができる。そして、１台のサーバ装置１００から他の複数のサーバ装置１００に更新要求を送信する際、送信と実際の更新要求は逐次におこなわれるものとする。
【０１１１】
・データ更新時の平均レイテンシー
まず、データ更新時の平均レイテンシーについて説明する。図１２は、データ更新時のレイテンシー算出手順を示す説明図である。図１２のように、データ更新時の平均レイテンシーは、自装置が配置サーバに決定された場合と、自装置が配置サーバではない場合とのそれぞれにおいて、レイテンシーを考慮して算出する必要がある。
【０１１２】
まず、更新要求を受けたサーバ装置１００が対象データの配置サーバである場合（自装置＝配置サーバ）、データ更新要求の送信先は自装置以外のリモートのサーバ装置１００計ｒ−１台であり、実際の更新処理は自装置も含めてｎ台のサーバ装置１００によっておこなわれる。したがって、このような場合のレイテンシーＬｗａは下記（１）式によって求められる。
【０１１３】
Ｌｗａ＝ｒ＊Ｔｗ＋（ｒ−１）＊Ｔｔ  …（１）
【０１１４】
一方、更新要求を受けたサーバ装置１００が、対象データの配置サーバでない場合（自装置≠配置サーバ）、データ更新要求の送信先は自装置以外のリモートのサーバ装置１００は、計ｒ台となり、実際の更新処理もｒ台のサーバでおこなわれる。したがって、このような場合のレイテンシーＬｗｂは下記（２）式によって求められる。
【０１１５】
Ｌｗｂ＝ｒ＊（Ｔｗ＋Ｔｔ）  …（２）
【０１１６】
そして、更新要求を受けたサーバ装置１００が、対象データの配置サーバとなる確率はｒ／Ｎ、配置サーバとならない確率は（Ｎ−ｒ）／Ｎとなるため、更新時の平均レイテンシーＬｗは下記（３）式によって求められる。
【０１１７】
Ｌｗ＝Ｌｗａ＊ｒ／Ｎ＋Ｌｗｂ＊（Ｎ−ｒ）／Ｎ
＝｛ｒ＊Ｔｗ＋（ｒ−１）＊Ｔｔ｝＊ｒ／Ｎ＋ｒ＊（Ｔｔ＋Ｔｗ）＊（Ｎ−ｒ）／Ｎ  …（３）
【０１１８】
・データ参照時の平均レイテンシー
つぎに、データ参照時の平均レイテンシーについて説明する。図１３は、データ参照時のレイテンシー算出手順を示す説明図である。図１３のように、データ参照時の平均レイテンシーも、自装置が配置サーバに決定された場合と、自装置が配置サーバではない場合とのそれぞれにおいて、レイテンシーを考慮して算出する必要がある。
【０１１９】
まず、参照要求を受けたサーバ装置が対象データの配置サーバである場合（自装置＝配置サーバ）、受信したデータ参照処理を他のサーバ装置１００に送信する必要はないためレイテンシーは自装置における参照処理時間だけとなる。したがって、このような場合のレイテンシーＬｒａは下記（４）式によって求められる。
【０１２０】
Ｌｒａ＝Ｔｒ  …（４）
【０１２１】
一方、参照要求を受けたサーバ装置が対象データの配置サーバでない場合（自装置≠配置サーバ）、データ参照処理を配置サーバの中の１台のサーバ装置１００に送信し、その１台のサーバ装置１００において参照処理をおこなう。したがって、このような場合のレイテンシーＬｒｂは下記（５）式によって求められる。
【０１２２】
Ｌｒｂ＝Ｔｒ＋Ｔｔ  …（５）
【０１２３】
参照処理の場合も、参照要求を受けたサーバ装置１００が、対象データの配置サーバとなる確率はｒ／Ｎ、配置サーバとならない確率は（Ｎ−ｒ）／Ｎなので、参照時の平均レイテンシーＬｒは下記（６）式によって求められる。
【０１２４】
Ｌｒ＝Ｌｗａ＊ｒ／Ｎ＋Ｌｗｂ＊（Ｎ−ｒ）／Ｎ
＝Ｔｒ＊ｒ／Ｎ＋（Ｔｔ＋Ｔｒ）＊（Ｎ−ｒ）／Ｎ  …（６）
【０１２５】
以上説明したように、データの参照・更新割合Ｒ，Ｗは上記のように一定時間モニタすることで求められているため、その割合を用いて、レプリカ数ｒの際の平均レイテンシーＬは下記（７）式によって求められる。
【０１２６】
Ｌ＝Ｌｗ＊Ｗ／１００＋Ｌｒ＊Ｒ／１００
＝｛｛ｒ＊Ｔｗ＋（ｒ−１）＊Ｔｔ｝＊ｒ／Ｎ＋ｒ＊（Ｔｔ＋Ｔｗ）＊（Ｎ−ｒ）／Ｎ｝＊Ｗ／１００＋｛Ｔｒ＊ｒ／Ｎ＋（Ｔｔ＋Ｔｒ）＊（Ｎ−ｒ）／Ｎ｝＊Ｒ／１００  …（７）
【０１２７】
上記の平均レイテンシーＬを求める式はレプリカ数ｒの一次式であるため、平均レイテンシーＬが最小となるのは、レプリカ数ｒ＝１の時と、レプリカ数ｒ＝サーバ台数Ｎの時とのいずれかである。したがって、ｒ＝１の時の平均レイテンシーＬ１とｒ＝Ｎの時の平均レイテンシーＬＮのみを算出し、それらの平均レイテンシーがより低くなるレプリカ数をあらたなレプリカ数とする。すなわち、１からＮまでの全てのｒについて平均レイテンシーを算出せず、下記のようにｒ＝１の時とｒ＝Ｎの時の平均レイテンシーのみを算出することで、一意的にレプリカ数を決定することができる。
【０１２８】
Ｌ１＜ＬＮの時、レプリカ数を１とする
Ｌ１＞ＬＮの時、レプリカ数をＮとする
【０１２９】
なお、実際のデータ分散システム２００の運用時にレプリカ数＝１として設定すると、可用性の観点から好ましくないこともある。したがって、「レプリカ数を１とする」決定がなされた場合には、あらかじめ、データ分散システム２００の管理者が設定した最小のレプリカ数を設定するような手法を用いてもよい。
【０１３０】
以上説明したように、本実施の形態によれば、データの参照頻度だけでなく更新頻度もモニタすることによって、レプリカ数が増えることで逆に処理効率が下がるケースも検出することができる。そのようなケースでは不要なレプリカを削除することで更新処理の効率が下がることを避けられる。また、他のデータのレプリカ数に影響されずに、データごとに個別に最適なレプリカ数を設定可能であり、効率的にデータを配置することができる。
【０１３１】
なお、本実施の形態で説明したデータ処理方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、インターネットなどのネットワークを介して配布することが可能な媒体であってもよい。
【０１３２】
また、本実施の形態で説明したサーバ装置１００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述したサーバ装置１００の連携処理部１０２の機能（取得部３０１〜決定部３０７）をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、サーバ装置１００を製造することができる。
【０１３３】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１３４】
（付記１）相互に通信可能なコンピュータ群を構成するコンピュータを、
任意のデータについての処理要求が入力されると、当該任意のデータに設定されている複製数を取得する取得手段、
前記コンピュータ群の中から、前記任意のデータの配置先となるコンピュータを、所定のアルゴリズムを用いて前記複製数分選択する選択手段、
前記取得手段によって取得された前記任意のデータの複製数を前記コンピュータ群すべてに送信する複製数送信手段、
前記選択手段によって選択された前記複製数分の各コンピュータに、前記処理要求を送信する処理要求送信手段、
として機能させることを特徴とするデータ処理プログラム。
【０１３５】
（付記２）前記コンピュータを、さらに、
前記任意のデータについての処理要求として、当該任意のデータの新規書き込みの処理の要求が入力された場合、当該任意のデータの複製数としてあらかじめ与えられていた値を設定する設定手段、として機能させ、
前記選択手段は、前記設定手段によって前記任意のデータの複製数が設定されると、前記コンピュータ群の中から、前記任意のデータの配置先となるコンピュータを、所定のアルゴリズムを用いて前記複製数分選択し、
前記複製数送信手段は、前記設定手段によって設定された前記任意のデータの複製数を前記コンピュータ群に送信し、
前記処理要求送信手段は、前記選択手段によって選択された前記複製数分の各コンピュータに、前記当該任意のデータの新規書き込み処理の要求を送信することを特徴とする付記１に記載のデータ処理プログラム。
【０１３６】
（付記３）前記コンピュータを、さらに、
前記設定手段によって前記任意のデータの複製数が設定されると、当該複製数と前記コンピュータ群の総数とが等しいか否かを判断する判断手段、として機能させ、
前記処理要求送信手段は、前記判断手段によって、前記複製数と前記コンピュータ群の総数とが等しいと判断された場合、前記コンピュータ群すべてに、前記当該任意のデータの新規書き込み処理の要求を送信することを特徴とする付記２に記載のデータ処理プログラム。
【０１３７】
（付記４）前記判断手段は、前記任意のデータについての処理要求として、前記コンピュータ群のいずれかに配置されている当該任意のデータに対する書き込み処理の要求が入力された場合、前記任意のデータの複製数と前記コンピュータ群の総数とが等しいか否かを判断し、
前記選択手段は、前記判断手段によって前記複製数と前記コンピュータ群の総数とが等しくないと判断された場合に、前記所定のアルゴリズムを用いて、前記コンピュータ群の中から前記任意のデータが配置されているコンピュータを前記複製数分選択し、
前記処理要求送信手段は、前記選択手段によって選択された前記複製数分の各コンピュータへ、前記任意のデータに対する書き込み処理の要求を送信することを特徴とする付記３に記載のデータ処理プログラム。
【０１３８】
（付記５）前記処理要求送信手段は、前記任意のデータについての処理要求として、前記コンピュータ群のいずれかに配置されている当該任意のデータに対する参照処理の要求が入力された場合、前記選択手段によって選択された前記複製数分の各コンピュータのいずれか一つへ、当該任意のデータに対する参照処理の要求を送信することを特徴とする付記１〜４のいずれか一つに記載のデータ処理プログラム。
【０１３９】
（付記６）前記コンピュータを、さらに、
自装置、または、他のコンピュータから送信された処理要求を受け付けた場合、当該処理要求に応じた処理を実行する実行手段として機能させることを特徴とする付記１〜５のいずれか一つに記載のデータ処理プログラム。
【０１４０】
（付記７）前記実行手段は、前記処理要求として、前記任意のデータに対する参照処理の要求の送信を受け付けた場合、当該処理要求に応じて実行した当該任意のデータへの参照処理の結果を、前記処理要求の送信元のコンピュータへ返信することを特徴とする付記６に記載のデータ処理プログラム。
【０１４１】
（付記８）前記コンピュータを、さらに、
任意のタイミングごとに、前記実行手段によって実行された前記任意のデータへの処理要求を参照して前記任意のデータの複製数を決定する決定手段、として機能させ、
前記複製数送信手段は、前記決定手段によって現在設定されている複製数とは異なる複製数が決定された場合に、当該決定された複製数を前記コンピュータ群すべてに送信し、
前記選択手段は、前記複製数送信手段によって前記決定された複製数が送信されてきた場合、あらたに、前記コンピュータ群の中から、前記任意のデータを配置するコンピュータを、所定のアルゴリズムに応じて前記決定された複製数分選択し、
前記実行手段は、自装置が、前記選択手段によって、あらたに前記任意のデータを配置するコンピュータに選択された場合に前記任意のデータを書き込み、前記選択手段によって、あらたに前記データを配置するコンピュータに選択されなくなった場合に前記データを削除することを特徴とする付記６または７に記載のデータ処理プログラム。
【０１４２】
（付記９）前記決定手段は、前記コンピュータ群の総数を前記任意のデータの複製数とした場合の前記任意のデータに対する処理時間の平均値が所定値以上の場合、前記コンピュータ群の総数を前記任意のデータの複製数に決定することを特徴とする付記８に記載のデータ処理プログラム。
【０１４３】
（付記１０）前記決定手段は、前記任意のデータの複製数を１とした場合の前記任意のデータへの処理時間の平均値が所定値未満であった場合、前記任意のデータの複製数として設定可能な最小値を複製数に決定することを特徴とする付記８または９に記載のデータ処理プログラム。
【０１４４】
（付記１１）相互に通信可能なサーバ装置群を構成するサーバ装置であって、
任意のデータについての処理要求が入力されると、当該任意のデータに設定されている複製数を取得する取得手段と、
前記サーバ装置群の中から、前記任意のデータの配置先となるサーバ装置を、所定のアルゴリズムを用いて前記複製数分選択する選択手段と、
前記取得手段によって取得された前記任意のデータの複製数を前記サーバ装置群すべてに送信する複製数送信手段と、
前記選択手段によって選択された前記複製数分の各サーバ装置に、前記処理要求を送信する処理要求送信手段と、
自装置、または、他のサーバ装置から送信された処理要求を受け付けた場合、当該処理要求に応じた処理を実行する実行手段と、
任意のタイミングごとに、前記実行手段によって実行された前記任意のデータへの処理要求を参照して前記任意のデータの複製数を決定する決定手段と、を備え、
前記複製数送信手段は、前記決定手段によって現在設定されている複製数とは異なる複製数が決定された場合に、当該決定された複製数を前記サーバ装置群すべてに送信し、
前記選択手段は、前記複製数送信手段によって前記決定された複製数が送信されてきた場合、あらたに、前記サーバ装置群の中から、前記任意のデータを配置するサーバ装置を、所定のアルゴリズムに応じて前記決定された複製数分選択し、
前記実行手段は、自装置が、前記選択手段によって、あらたに前記任意のデータを配置するサーバ装置に選択された場合に前記任意のデータを書き込み、前記選択手段によって、あらたに前記データを配置するサーバ装置に選択されなくなった場合に前記データを削除することを特徴とするサーバ装置。
【０１４５】
（付記１２）相互に通信可能なコンピュータ群を構成するコンピュータが、
任意のデータについての処理要求が入力されると、当該任意のデータに設定されている複製数を取得する取得工程と、
前記コンピュータ群の中から、前記任意のデータの配置先となるコンピュータを、所定のアルゴリズムを用いて前記複製数分選択する選択工程と、
前記取得工程によって取得された前記任意のデータの複製数を前記コンピュータ群すべてに送信する複製数送信工程と、
前記選択工程によって選択された前記複製数分の各コンピュータに、前記処理要求を送信する処理要求送信工程と、
自装置、または、他のコンピュータから送信された処理要求を受け付けた場合、当該処理要求に応じた処理を実行する実行工程と、
任意のタイミングごとに、前記実行工程によって実行された前記任意のデータへの処理要求を参照して前記任意のデータの複製数を決定する決定工程と、を実行し、
さらに、
前記複製数送信工程では、前記決定工程によって現在設定されている複製数とは異なる複製数が決定された場合に、当該決定された複製数を前記コンピュータ群すべてに送信し、
前記選択工程では、前記複製数送信工程によって前記決定された複製数が送信されてきた場合、あらたに、前記コンピュータ群の中から、前記任意のデータを配置するコンピュータを、所定のアルゴリズムに応じて前記決定された複製数分選択し、
前記実行工程では、自装置が、前記選択工程によって、あらたに前記任意のデータを配置するコンピュータに選択された場合に前記任意のデータを書き込み、前記選択工程によって、あらたに前記データを配置するコンピュータに選択されなくなった場合に前記データを削除することを特徴とするデータ処理方法。
【図面の簡単な説明】
【０１４６】
【図１】本実施の形態にかかるサーバ装置のシステム構成を示す説明図である。
【図２】本実施の形態にかかるサーバ装置のハードウェア構成を示すブロック図である。
【図３】連携処理部の機能的構成を示すブロック図である。
【図４】サーバ装置におけるデータ更新処理を示す説明図である。
【図５】配置サーバ選択処理の手順を示すフローチャートである。
【図６−１】データ更新処理の手順（更新要求を自装置のアプリ実行部から受信したサーバ装置の場合）を示すフローチャートである。
【図６−２】データ更新処理の手順（更新要求を他のサーバ装置の連携処理部から受信したサーバ装置の場合）を示すフローチャートである。
【図７】サーバ装置におけるデータ参照処理を示す説明図である。
【図８−１】データ参照処理の手順（参照要求を自装置のアプリ実行部から受信したサーバ装置の場合）を示すフローチャートである。
【図８−２】データ参照処理の手順（参照要求を他のサーバ装置の連携処理部から受信したサーバ装置の場合）を示すフローチャートである。
【図９】レプリカ数変更時のデータ再配置処理を示すフローチャートである。
【図１０】レプリカ数増加時のデータ再配置処理を示すフローチャートである。
【図１１】レプリカ数減少時のデータ再配置処理を示すフローチャートである。
【図１２】データ更新時のレイテンシー算出手順を示す説明図である。
【図１３】データ参照時のレイテンシー算出手順を示す説明図である。
【符号の説明】
【０１４７】
１００  サーバ装置
１０１  アプリ実行部
１０２  連携処理部
１０３  記憶部
１１０  ロードバランサー
１２０  リクエスト
３０１  取得部
３０２  選択部
３０３  送受信部
３０４  設定部
３０５  判断部
３０６  実行部
３０７  決定部
【図１】
2010146067.tif 000003
【図２】
2010146067.tif 000004
【図３】
2010146067.tif 000005
【図４】
2010146067.tif 000006
【図５】
2010146067.tif 000007
【図６−１】
2010146067.tif 000008
【図６−２】
2010146067.tif 000009
【図７】
2010146067.tif 000010
【図８−１】
2010146067.tif 000011
【図８−２】
2010146067.tif 000012
【図９】
2010146067.tif 000013
【図１０】
2010146067.tif 000014
【図１１】
2010146067.tif 000015
【図１２】
2010146067.tif 000016
【図１３】
2010146067.tif 000017