(57)【要約】【課題】データの一貫性を保持しつつスケーラビリティを向上させる。【解決手段】本発明のデータ分散更新システムでは、レプリカを保持するサーバ間でトークンを巡回させる。トークンを保持していない場合は、クライアントからデータ更新要求を保持しつつ、その要求を反映させるために必要なロック情報をあらかじめ保持しておく。トークンを受信したら、トークンに格納されている他のサーバのロック情報と保持しておいたロック情報を比較して、ロックが競合しないものをトークンに格納して次のサーバに送信してから更新要求を反映させる。【選択図】図１
2010262590.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバ間で共有されるデータを保持するサーバであって、
前記複数のサーバ間で巡回され、前記複数のサーバで共有されるアクセス制限対象のデータを示すロック情報を含むトークンを送受信するトークン送受信部と、
少なくとも前記トークンが受信されるまでクライアントから受信した更新要求を保持する更新要求保持部と、
前記トークンを受信した場合に、前記更新要求保持部に保持された前記更新要求をコミット処理するのに必要な新たなロック情報と前記トークンに含まれるロック情報とを比較し、前記トークンに含まれるロック情報と競合しない前記新たなロック情報を前記トークンに追加するロック処理部と、
前記ロック処理部によって前記新たなロック情報が追加されたトークンを、前記トークン送受信部が他のサーバに送信した後に、前記更新要求保持部に保持された前記更新要求のうち、前記トークンに含まれるロック情報と競合しない前記新たなロック情報に対応するデータの更新を行うコミット処理部と、
を備えたことを特徴とするサーバ。
【請求項２】
前記複数のサーバ間で共有されるデータは複数のグループに分類され、
前記トークンは、前記グループ毎に存在すると共に、前記グループの識別情報が格納され、
当該サーバは、
前記データの識別情報と当該データが分類されたグループとが対応付けられたグループ情報を保持するグループ情報保持部を更に備え、
前記ロック処理部は、
前記グループ情報保持部に保持された前記グループ情報を参照することにより、前記更新要求保持部に保持された前記更新要求をコミット処理するのに必要な前記新たなロック情報を前記グループ毎に保持するロック保持部と、
前記ロック保持部に保持された前記新たなロック情報のうち、前記トークンに含まれる前記グループの識別情報と一致するグループの新たなロック情報と、前記トークンに含まれるロック情報とを比較し、前記ロック保持部に保持された前記新たなロック情報のうち前記トークンに含まれるロック情報と競合しない前記新たなロック情報を前記トークンに追加するロック比較部と、を有する
請求項１に記載のサーバ。
【請求項３】
前記コミット処理部は、前記更新要求保持部に保持された前記更新要求のうち、前記トークンに含まれるロック情報と競合する前記新たなロック情報に対応するデータについては更新しない
請求項１又は２に記載のサーバ。
【請求項４】
前記ロック処理部は、前記トークンの前回の巡回において自己が追加した前記ロック情報が前記トークンに含まれる場合には、当該ロック情報を削除する
請求項１乃至３のうちいずれか１項に記載のサーバ。
【請求項５】
共有データを保持する複数のサーバを備え、
当該サーバは、
前記複数のサーバ間で巡回され、前記複数のサーバで共有されるアクセス制限対象のデータを示すロック情報を含むトークンを送受信するトークン送受信部と、
少なくとも前記トークンが受信されるまでクライアントから受信した更新要求を保持する更新要求保持部と、
前記トークンを受信した場合に、前記更新要求保持部に保持された前記更新要求をコミット処理するのに必要な新たなロック情報と前記トークンに含まれるロック情報とを比較し、前記トークンに含まれるロック情報と競合しない前記新たなロック情報を前記トークンに追加するロック処理部と、
前記ロック処理部によって前記新たなロック情報が追加されたトークンを、前記トークン送受信部が他のサーバに送信した後に、前記更新要求保持部に保持された前記更新要求のうち、前記トークンに含まれるロック情報と競合しない前記新たなロック情報に対応するデータの更新を行うコミット処理部と、
を備えることを特徴とするデータ分散格納システム。
【請求項６】
前記複数のサーバ間で共有されるデータは複数のグループに分類され、
前記トークンは、前記グループ毎に存在すると共に、前記グループの識別情報が格納され、
前記サーバは、
前記データの識別情報と当該データが分類されたグループとが対応付けられたグループ情報を保持するグループ情報保持部を更に備え、
前記ロック処理部は、
前記グループ情報保持部に保持された前記グループ情報を参照することにより、前記更新要求保持部に保持された前記更新要求をコミット処理するのに必要な前記新たなロック情報を前記グループ毎に保持するロック保持部と、
前記ロック保持部に保持された前記新たなロック情報のうち、前記トークンに含まれる前記グループの識別情報と一致するグループの前記新たなロック情報と、前記トークンに含まれるロック情報とを比較し、前記新たなロック情報のうち前記トークンに含まれるロック情報と競合しない前記新たなロック情報を前記トークンに追加するロック比較部と、を有する
請求項５に記載のデータ分散格納システム。
【請求項７】
複数のサーバ間で共有されるデータを保持するサーバの制御方法であって、
クライアントから受信した更新要求を保持し、
前記複数のサーバ間で巡回され、前記複数のサーバで共有されるアクセス制限対象のデータを示すロック情報を含むトークンを受信し、
前記トークンを受信した場合に、前記更新要求保持部に保持された前記更新要求をコミット処理するのに必要な新たなロック情報と前記トークンに含まれるロック情報とを比較し、
前記トークンに含まれるロック情報と競合しない前記新たなロック情報を前記トークンに追加し、
前記新たなロック情報が追加されたトークンを、他のサーバに送信し、
前記更新要求のうち、前記トークンに含まれるロック情報と競合しない前記新たなロック情報に対応するデータの更新を行う
ことを特徴とするサーバの制御方法。
【請求項８】
前記複数のサーバ間で共有されるデータは複数のグループに分類され、
前記トークンは、前記グループ毎に存在すると共に、前記グループの識別情報が格納され、
前記更新要求をコミット処理するのに必要な前記新たなロック情報を前記グループ毎に保持し、
前記新たなロック情報のうち、前記トークンに含まれる前記グループの識別情報と一致するグループの新たなロック情報と、前記トークンに含まれるロック情報とを比較し、
前記新たなロック情報のうち前記トークンに含まれるロック情報と競合しない前記新たなロック情報を前記トークンに追加する
請求項７に記載のサーバの制御方法。
【請求項９】
複数のサーバ間で共有されるデータを保持するサーバの制御方法をコンピュータに実行させるためのプログラムであって、
クライアントから受信した更新要求を保持し、
前記複数のサーバ間で巡回され、前記複数のサーバで共有されるアクセス制限対象のデータを示すロック情報を含むトークンを受信し、
前記トークンを受信した場合に、前記更新要求保持部に保持された前記更新要求をコミット処理するのに必要な新たなロック情報と前記トークンに含まれるロック情報とを比較し、
前記トークンに含まれるロック情報と競合しない前記新たなロック情報を前記トークンに追加し、
前記新たなロック情報が追加されたトークンを、他のサーバに送信し、
前記更新要求のうち、前記トークンに含まれるロック情報と競合しない前記新たなロック情報に対応するデータの更新を行う
処理をコンピュータに実行させるためのプログラム。
【請求項１０】
前記複数のサーバ間で共有されるデータは複数のグループに分類され、
前記トークンは、前記グループ毎に存在すると共に、前記グループの識別情報が格納され、
前記更新要求をコミット処理するのに必要な前記新たなロック情報を前記グループ毎に保持し、
前記新たなロック情報のうち、前記トークンに含まれる前記グループの識別情報と一致するグループの新たなロック情報と、前記トークンに含まれるロック情報とを比較し、
前記新たなロック情報のうち前記トークンに含まれるロック情報と競合しない前記新たなロック情報を前記トークンに追加する
処理をコンピュータに実行させるための請求項９に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ冗長分散格納システムにおけるサーバ、サーバの制御方法、データ分散更新システム、及びデータ分散更新プログラムに関し、特に、信頼性のために複数サーバでデータを保持するシステムで、データの一貫性を保証しつつ、処理高効率化、負荷の分散およびアクセス柔軟性を実現するためのサーバの制御方法、データ分散更新システム、及びデータ分散更新プログラムに関する。
【背景技術】
【０００２】
分散ファイルシステムのデータの信頼性を向上させる手法として、複数の別のサーバに同じデータ（以下、レプリカ）を保持する手法がある。このとき複数のクライアントでデータの更新を行う場合、データの一貫性を保証しつつ更新しなければならない。複数クライアントが別のレプリカに対して別の更新を実行した場合、名前が同じで内容が異なるデータが生成されてしまい、一貫性が崩れる。更新処理のパスを一箇所に集中させるシリアライズによるデータ更新は厳密な一貫性を保持する手法であり、従来手法としては非特許文献１、特許文献１、非特許文献２、特許文献２乃至４が提案されている。
【０００３】
非特許文献１の動作を示すブロック図を図８に示す。レプリカを持つ複数サーバ７３、７４、７５のうち、マスタサーバ７４が１つ決定される。各クライアント７１、７２は更新要求をマスタサーバ７４へ送信し、マスタサーバ７４がレプリカの更新の責任を持つ。このようにすることで更新要求処理をシリアライズすることでレプリカ間の一貫性を保持する。
【０００４】
しかしこの手法では、マスタサーバ７４へ更新要求が集中し、負荷が集中してしまう。また、単位時間あたりの更新要求処理数はマスタサーバ１台分に限定されてしまう。
【０００５】
特許文献１の動作を示すブロック図を図９に示す。データのロックをロックマネージャ８６が管理しており、各クライアント８１、８２から各サーバ８３、８４、８５に更新要求があると、各サーバ８３、８４、８５はデータを更新する前にロックマネージャ８６に問い合わせる。このようにロックマネージャ８６でロックを管理することで、更新要求処理負荷を分散させる。
【０００６】
しかしこの手法では、ロックマネージャ８６がボトルネックになり、スケーラビリティがない。 
【０００７】
非特許文献２では、更新要求処理を各サーバで分担させる。更新要求を何らかの方法でグルーピングし、各サーバで更新要求処理をするグループを割り振る方法である。レプリカ間の一貫性保持方法は非特許文献１の手法と同じである。
【０００８】
しかしこの手法では、クライアントがあらかじめ更新要求のグループとその処理をするサーバのマッピング情報を保持する必要がある上、クライアントのサーバ選択の幅が狭い。各サーバが地理的に分散されているときに、近傍にサーバがあるにも関わらず、遠方のサーバに問い合わせなければならなくなり、レスポンスが低下することが考えられる。また、たまたまあるグループの更新要求が増加した場合、特定のサーバに負荷が集中してしまう。各クライアントが更新要求のグループとその処理をするサーバのマッピング情報を保持しているため、動的に負荷を分散させることは困難である。
【０００９】
また、特許文献２には、競合演算操作の対象となるデータを指定するデータ指定情報を有するトークンを、サーバ間で巡回させ、データ指定情報に応じたデータベース管理処理を行うことが開示されている。
【００１０】
また、特許文献３及び特許文献４にも、データベースの管理方法に関する技術が開示されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００４−２８８０７９号公報
【特許文献２】特開２００３−０５８４０４号公報
【特許文献３】特表２００８−５２３４７７号公報
【特許文献４】特表２００８−５４４３７１号公報
【非特許文献】
【００１２】
【非特許文献１】Mike Burrows, "The Chubby lock service for loosely-coupled distributed systems", In proceedings of 7th OSDI, 2006.
【非特許文献２】G DeCandia, et al., "Dynamo: amazon's highly available key-value store", In proceedings of 21st ACM SOSP, 2007.
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、特許文献２に開示されたサーバでは、自サーバにおいて更新要求に対するデータ更新を実行した後に、トークンを次のサーバに送信する。そのため、特許文献２に開示されたサーバでは、トークンを保持している状態でしかデータ更新ができず、データ更新要求が大量に発生した場合には、各サーバにおける更新処理に時間を要し、トークンの巡回速度が低下する。
【００１４】
本発明は、このような問題点に対してなされたものであり、トークンの巡回速度を高速化し、共有データを保有するサーバ全体の更新処理に要する時間を短縮することができるサーバを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明に係るサーバは、複数のサーバ間で共有されるデータを保持するサーバであって、前記複数のサーバ間で巡回され、前記複数のサーバで共有されるアクセス制限対象のデータを示すロック情報を含むトークンを送受信するトークン送受信部と、少なくとも前記トークンが受信されるまでクライアントから受信した更新要求を保持する更新要求保持部と、前記トークンを受信した場合に、前記更新要求保持部に保持された前記更新要求をコミット処理するのに必要な新たなロック情報と前記トークンに含まれるロック情報とを比較し、前記トークンに含まれるロック情報と競合しない前記新たなロック情報を前記トークンに追加するロック処理部と、前記ロック処理部によって前記新たなロック情報が追加されたトークンを、前記トークン送受信部が他のサーバに送信した後に、前記更新要求保持部に保持された前記更新要求のうち、前記トークンに含まれるロック情報と競合しない前記新たなロック情報に対応するデータの更新を行うコミット処理部と、を有すること特徴とする。
【００１６】
本発明に係るデータ分散格納システムは、共有データを保持する複数のサーバを備え、当該サーバは、前記複数のサーバ間で巡回され、前記複数のサーバで共有されるアクセス制限対象のデータを示すロック情報を含むトークンを送受信するトークン送受信部と、少なくとも前記トークンが受信されるまでクライアントから受信した更新要求を保持する更新要求保持部と、前記トークンを受信した場合に、前記更新要求保持部に保持された前記更新要求をコミット処理するのに必要な新たなロック情報と前記トークンに含まれるロック情報とを比較し、前記トークンに含まれるロック情報と競合しない前記新たなロック情報を前記トークンに追加するロック処理部と、前記ロック処理部によって前記新たなロック情報が追加されたトークンを、前記トークン送受信部が他のサーバに送信した後に、前記更新要求保持部に保持された前記更新要求のうち、前記トークンに含まれるロック情報と競合しない前記新たなロック情報に対応するデータの更新を行うコミット処理部と、を備えたことを特徴とする。
【発明の効果】
【００１７】
本発明に係るサーバによれば、各サーバにおける更新処理を高速化することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態１に係る発明を実施するための最良の形態のサーバを含むシステムの構成を示すブロック図である。
【図２】本発明の実施の形態１に係る発明でクライアントからデータ更新要求を受信した際の最良の形態の動作を示す流れ図である。
【図３】本発明の実施の形態１に係る発明でトークンを受信した際の最良の形態の動作を示す流れ図である。
【図４】本発明の実施の形態１に係る発明で巡回させるトークンの属性フィールドを示す図である。
【図５】本発明の実施の形態２に係る発明を実施するための最良の形態の構成を示すブロック図である。
【図６】本発明の実施の形態２に係る発明で巡回させるトークンの属性フィールドを示す図である。
【図７】本発明の実施例の構成を示すブロック図である。
【図８】非特許文献１における従来手法の構成を示すブロック図である。
【図９】特許文献１における従来手法の構成を示すブロック図である。
【発明を実施するための形態】
【００１９】
実施の形態１．
図１を参照し、本発明の第１の実施の形態に係るサーバを含むシステムについて説明する。このシステムは、データ更新要求を出すクライアント１００と、データを保持しているサーバ１０１ａおよび１０１ｂと、クライアントとサーバおよびサーバ間を繋ぐ伝送路１０２から構成されている。なお、図１ではクライアント１台、サーバ２台であるが、それぞれ台数の制限は無い。
【００２０】
クライアント１００は、データ更新要求部１０を含む。
サーバ１０１ａ及び１０１ｂは、データ更新要求保持部２０ａ及び２０ｂ、ロック処理部２１ａ及び２１ｂ、トークン送受信部２２ａ及び２２ｂ、コミット処理部２４ａ及び２４ｂ、データ保持部２５ａ及び２５ｂ、を含む。なお、データ保持部２５ａ及び２５ｂは、サーバ１０１ａ及び１０１ｂによってデータ更新を行うことができれば、サーバ１０１ａ及び１０１ｂの内部に設けられていても外部に設けられていてもよい。
【００２１】
コミット処理部２４ａ及び２４ｂは、ロック一時保持部３０ａ及び３０ｂ、ロック比較部３１ａ及び３１ｂ、を含む。コミット処理部２４ａ、２４ｂは、自サーバ及び同じデータを保持する他サーバにおけるコミット処理を実施する。また、コミット処理部２４ａ、２４ｂは、自サーバ及び他サーバにおいてコミット処理が完了したか否かを示すコミット情報を保持している。なお、コミット処理部２４ａ、２４ｂが実施するコミット方法については、既存の種々の方法を利用することができる。
【００２２】
これらの手段はそれぞれ概略つぎのように動作する。
データ更新要求部１０は、クライアント１００で動作し、データ更新要求を、データを保持しているサーバに送信する。
【００２３】
データ更新要求保持部２０ａ及び２０ｂは、クライアント１００から受信したデータ更新要求を保持する。ロック処理部内のロック一時保持部３０ａ及び３０ｂは、データ更新をコミット処理しようとした場合に必要となる新たなロック情報を一時的に保持する。ここで、ロック情報とは、いずれかのサーバ１０１によってデータの更新が禁止されたデータを示す。ロック情報には、ロック対象となるデータの識別情報と当該データがロック／アンロック状態が含まれていればよい。換言すれば、ロック情報には、ロック状態又はアンロック状態のデータとして、対象となるデータの識別情報が含まれていればよい。
【００２４】
また、ロック比較部３１ａ及び３１ｂは、トークンに格納されたロックとロック一時保持部の新たなロックを比較する。
【００２５】
トークン送受信部２２ａ及び２２ｂは、各サーバのロック情報を格納したトークンを送受信する。サーバリスト２３ａ及び２３ｂは、各サーバの位置情報を管理している。コミット処理部２４ａおよび２４ｂは、データ更新要求を処理し、その更新を反映させる。データ保持部２５ａ及び２５ｂはデータを保持する。なお、データ保持部としてはブロック単位アクセス装置やファイル単位アクセス装置などの各種装置が適応可能である。 
【００２６】
次に、フローチャートや図を参照して本実施の形態の全体の動作について詳細に説明する。本発明では、トークンをサーバ間で巡回させることで、更新要求のコミット順序の整合性を維持する。トークンを受信したサーバは、コミット処理を実行することができる。ここでコミット処理とは、更新要求の内容を同じデータを持つ全てのサーバのデータ保持部２５ａ及び２５ｂに反映させる処理と定義する。各クライアントは、コミット処理後に更新内容を参照することができる。なお、各サーバへのコミット処理方法としては特に制限はなく、２相コミットや、単純に各サーバに同じコミット命令を出す手法などの従来手法を用いることが可能である。 
【００２７】
（データ更新要求を受信した場合）
図２はサーバ１０１ａおよび１０１ｂがクライアント１００からデータ更新要求を受信したときの処理を表すフローチャートである。まず、データ更新要求を受信する（ステップＳ２００）。次に、データ更新要求をデータ更新要求保持部２０ａ及び２０ｂに格納する（ステップＳ２０１）。この時点では更新をデータ保持部には反映させない。
【００２８】
次に、データ更新要求をコミット処理するために必要となるロック情報をロック一時保持部３０ａ及び３０ｂに保持する（ステップＳ２０２）。また、フローチャートには記述していないが、トークンを受信するまでにコミット処理をする直前（対象データのコピーを作成してそれに更新をする、等）まで処理しておくことも可能である。また、ここで述べているロックとはデータへのアクセスを制限するための情報であり、本発明ではファイル単位や、データの一部など、特にロック対象の大きさや領域に制限はない。 
【００２９】
（トークンを受信した場合）
図３は、サーバ１０１ａ及び１０１ｂがトークンを受信したときの処理を表すフローチャートである。以降、トークンを受信したサーバを自サーバ、その他のサーバを他サーバと記述する。まず、トークンを受信する（ステップＳ１０１）。そしてトークンに格納されている他サーバのデータのロック情報を取り出す（ステップＳ１０２)。なお、トークンには、図４に示すように、データの種別がトークンであることを示すトークン識別情報、トークン送信元サーバ識別情報、トークン送信先サーバ識別情報、各サーバ識別情報とロック情報が格納されている。
【００３０】
なお、トークン送信元サーバ識別情報及びトークン送信先サーバ識別情報は、トークンがサーバを巡回していく度に、各サーバによって付け替えられる。具体的には、トークンが第１サーバ、第２サーバ、第３サーバと順に巡回していく場合には、第１サーバから送出されるトークンでは、トークン送信元サーバ識別情報が第１サーバであり、トークン送信先サーバ識別情報が第２サーバとなる。また、第２サーバから送出されるトークンでは、トークン送信元サーバ識別情報は第２サーバであり、トークン送信先サーバ識別情報は第３サーバとなる。このトークン送信元サーバ識別情報及びトークン送信先サーバ識別情報の付け替えは、各サーバに設けられたサーバリスト（図示せず）に保持された各サーバのアドレス情報を参照することにより行う。
【００３１】
次に、トークンに自サーバのロック情報がある場合（ステップＳ１０３のＹＥＳ）、コロック処理部２１ａ、２１ｂは、コミット処理部２４ａ、２４ｂに保持されたコミット情報を参照し、当該ロック情報に対応するデータのコミット処理がすべてのサーバにおいて実行されたか否かを判定する。そして、当該ロック情報に対応するコミット処理が全てのサーバで完了したと判断した場合には、コミット処理部２４ａ、２４ｂに保持された他サーバのコミット情報、及び当該自サーバの更新要求に関するロック情報を削除する。一方、コミット処理部２４ａ、２４ｂに保持されたコミット情報において、コミット処理が完了していないサーバがある場合には、そのサーバで更新がコミットされると競合が発生するため、トークンのロック情報は残したままにする。
【００３２】
次に、ロック処理部２１ａ、２１ｂは、ロック一時保持部のロックとトークンのロックをロック比較部３１ａ及び３１ｂで比較し、競合するものがないかを確認する（ステップＳ１０５）。ここで、ロックが競合するとは、ロック一時保持部３０ａ、３０ｂに含まれる、自サーバがこれからコミット処理しようとするデータに対応するロックが、巡回してきたトークンに含まれるロックと一致することをいう。
【００３３】
コミット処理をするためのロックと、トークンに格納されているロックとが競合しない場合（ステップＳ１０６のＮＯ）、自サーバのコミット処理をするためのロックの情報をトークンに追加する（ステップＳ１０７）。そしてトークンを次のサーバに送信する（ステップＳ１０８）。トークン送信後にデータ更新要求保持部２０ａ及び２０ｂに保持されていた更新要求のコミット処理を行う（ステップＳ１０９）。
【００３４】
コミット処理が完了した更新要求から、その要求を送信したクライアントに処理結果を通知する（ステップＳ１１４）。コミット処理をするためのロックと、トークンに格納されているロックとが競合する場合（ステップＳ１０６のＹＥＳ）、コミット処理をするためのロックのうち、競合しないロックをトークンに追加する（ステップＳ１１０）。
【００３５】
そしてトークンを次のサーバに送信する（ステップＳ１１１）。トークン送信後に競合していないロックに関するデータ更新要求のコミット処理を行う（ステップＳ１１２）。具体的には、ロック情報が競合した更新要求の処理方法としては、クライアントにエラーを通知する、ロックが競合しなくなるまで保持しておく等の処理を行うことができる。次に、競合したロックに関するデータ更新要求の処理を行う（ステップＳ１１３）。更新要求に対する処理が完了したものから、その要求を送信したクライアントに処理結果を通知する（ステップＳ１１４）。
【００３６】
次に、本実施の形態の効果について説明する。
本実施の形態では、システム全体の単位時間あたりの更新要求処理数が向上する。理由は、各サーバのデータロック情報をトークンに格納してコミット処理前に送信させ、複数サーバで並行してコミット処理できるためである。
【００３７】
また、本実施の形態では、更新要求のコミット処理の負荷を分散させることができる。理由は、複数のサーバで並列に更新要求のコミット処理を実行できるためである。 
【００３８】
また、本実施の形態では、クライアントの更新要求処理をするサーバの選択に柔軟性を持たすことができる。理由は、どのサーバに更新要求を送信しても、トークンに格納されている他サーバのロック情報を参照して、一貫性を保持したまま更新処理ができるためである。 
【００３９】
実施の形態２．
次に、本発明の実施の形態２に係る発明を実施するための最良の形態について図面を参照して詳細に説明する。実施の形態２では、トークンを複数巡回させる。図５を参照すると、本発明の実施の形態２に係る発明を実施するための最良の形態は、実施の形態１に係る発明の形態に、データグループ情報保持部２６ａ及び２６ｂを保持している点が異なる。
【００４０】
複数のサーバ間で共有されるデータは、予め複数のグループに分類されている。例えば、共有されるデータがデータＡ、Ｂ、Ｃとある場合には、データＡがグループ１、データＢ、Ｃがグループ２に分類されている。実施の形態２に係る発明では、サーバ間で巡回されるトークンは、このグループ毎に存在している。
【００４１】
データグループ情報保持部２６ａ及び２６ｂは、更新要求をグルーピングするための手段である。データグループ情報保持部２６ａ及び２６ｂには、データの識別情報と当該データが分類されたグループとが対応付けられている。巡回させるトークンには実施の形態１に係る発明の形態のトークンの情報に加えて、トークングループ識別情報が格納される(図６)。
【００４２】
全体の動作については、フローチャート図４のＳ２０２と、図５のＳ１０５が第１の発明の形態の動作と異なる。Ｓ２０２の処理では、ロック処理部２１ａ、２１ｂは、データグループ情報保持部２６ａ及び２６ｂを参照し、クライアント１００から受信されたデータ更新要求に必要な新たなロック情報を、グループ単位でロック一時保持部３０ａ及び３０ｂに保持する。具体的には、受信された更新要求について、データの更新対象となるデータがデータＡである場合には、データグループ情報保持部２６ａ及び２６ｂを参照し、データＡのロック情報を、データＡが分類されたグループ１の格納場所に保存する。
【００４３】
また、Ｓ１０５の処理では、ロック比較部３１ａ、３１ｂは、トークンに格納されているトークングループ識別情報を参照し、ロック一時保持部３０ａ及び３０ｂのうち、トークンのグループ識別情報と一致するグループに格納されたロックと、トークンに格納されているロックとを比較する。具体的には、トークンに含まれるトークングループ識別情報がグループ１である場合には、ロック比較部３１ａ、３１ｂは、グループ１に格納されたロックと、トークンに含まれるロックとを比較する。
【００４４】
本実施の形態２によれば、複数のサーバで共有されるデータをグループ化することで、ロック比較部３１ａ、３１ｂは、トークンに含まれるグループ識別情報と一致するグループのロックのみを参照すればよいため、各サーバにおけるロック処理に要する時間を短縮することができ、更新要求処理数を増加させることができる。
【００４５】
（実施例） 
次に、具体的な実施例を用いて本発明を実施するための最良の形態の動作を説明する。
本実施例では、３台のサーバ９４、９５、９６がそれぞれデータＡ、Ｂを保持しているとし、３つのクライアント９１、９２、９３がデータを同時に更新すると想定する。第１クライアント９４はデータＡを、第２クライアント９２及び第３クライアント９３は、データＢを更新しようとする。各クライアント９１、９２、９３は、各サーバ９４、９５、９６に更新要求を出すとする。３台のサーバで巡回するトークンするはここでは１つとし、第１サーバ９１，第２サーバ９２，第３サーバ９３の順で巡回させるとする(図７)。また、ロックはデータ単位で取得するとする。
【００４６】
各クライアントが同時に更新要求を各サーバに送信した場合、各更新要求はデータ更新要求保持部に保持され、その更新要求をコミットするために必要なロックがロック一時保持部で保持される。その後、第１サーバ９４がトークンを受信したとする。トークンを受信した第１サーバ９４は、ロック一時保持部のロック情報とトークンに格納されているロック情報とを比較する。ここではトークンにはロック情報が格納されていないので競合は発生しない。第１サーバ９４は、データＡを更新するのに必要なロック情報をトークンに格納して、次の第２サーバ９２にトークンを送信する。その後、第１サーバ９４は、データＡのコミット処理をおこなう。
【００４７】
第２サーバ９５がトークンを受信したら、ロック一時保持部のロック情報とトークンに格納されているロック情報とを比較する。データＢとデータＡに関するものであるので競合は発生しない。従って第２サーバ９５は、トークンにデータＢのロック情報を追加し、第３サーバ９３にトークンを送信してから、データＢのコミット処理を実施する。
【００４８】
第３サーバ９３がトークンを受信したら、ロック一時保持部のロック情報とトークンに格納されているロック情報とを比較する。ここではデータＢのロックが競合するため、第３クライアント９３からの更新要求のコミット処理はしない。
【００４９】
なお、前述した通り、クライアント数およびサーバ数の制限は無い。また、巡回させるトークン数も実施の形態２をとることで制限をなくすことができる。さらに、コミット処理方法はとくに限定しておらず、単純に各サーバに同じコミット命令を出す手法などの従来手法を用いることが可能である。さらに、ロック情報が競合した更新要求の処理方法も特に限定しておらず、クライアントにエラーを通知する、ロックが競合しなくなるまで保持しておく等の処理が考えられる。
【００５０】
なお、上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、ＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）にコンピュータプログラムを実行させることにより任意の処理を実行させるよう構成することも可能である。この場合、コンピュータプログラムは、記録媒体に記録して提供することも可能であり、また、インターネットその他の通信媒体を介して伝送することにより提供することも可能である。また、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ、ＲＯＭカートリッジ、バッテリバックアップ付きＲＡＭメモリカートリッジ、フラッシュメモリカートリッジ、不揮発性ＲＡＭカートリッジ等が含まれる。また、通信媒体には、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体等が含まれる。
【００５１】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００５２】
１００、９１〜９３  クライアント
１０１ａ、１０１ｂ、９４〜９６  サーバ
１０２  伝送路
１０  データ更新要求部
２０ａ、２０ｂ  データ更新要求保持部
２１ａ、２１ｂ  ロック処理部
２２ａ、２２ｂ  トークン送受信部  
２４ａ、２４ｂ  コミット処理部
２５ａ、２５ｂ  データ保持部
２６ａ、２６ｂ  データグループ情報保持部
３０ａ、３０ｂ  ロック一時保持部
３１ａ、３１ｂ  ロック比較部
【図１】
2010262590.tif 000003
【図２】
2010262590.tif 000004
【図３】
2010262590.tif 000005
【図４】
2010262590.tif 000006
【図５】
2010262590.tif 000007
【図６】
2010262590.tif 000008
【図７】
2010262590.tif 000009
【図８】
2010262590.tif 000010
【図９】
2010262590.tif 000011