(57)【要約】  【課題】  ネットワークに接続されているコンピュータの数が過大であっても、実用的な更新時間で共有データの更新を行うことができ、障害の復旧を待つことなく共有データの一貫性を維持することができるコンピュータプログラムを提供する。  【解決手段】  複数の端末装置のうち、共有データ更新時のロック／アンロックを制御する複数の制御端末装置に関する情報を該制御端末装置毎に記憶してあり、一の端末装置は、コンピュータプログラムにより、他の端末装置から所定の共有データの更新を要求する更新要求情報を受け付ける更新要求受付手段、複数の制御端末装置の過半数に一の端末装置に関する情報が記憶してあるか否かを確認する確認手段、確認手段が複数の制御端末装置の過半数に一の端末装置に関する情報が記憶してあると確認した場合、複数の制御端末装置に対して共有データを更新する更新データを送信する更新手段として機能する。【選択図】      図４
2006059273.tif 000002
【特許請求の範囲】
【請求項１】
通信手段を介して接続してある複数の端末装置間で共有する共有データを更新する一の端末装置で実行することが可能なコンピュータプログラムにおいて、
前記一の端末装置を、
外部から所定の共有データの更新を要求する更新要求情報を受け付ける更新要求受付手段、
記憶してある他の端末装置の過半数に前記一の端末装置に関する情報が記憶してあるか否かを確認する確認手段、及び
該確認手段が記憶してある他の端末装置の過半数に前記一の端末装置に関する情報が記憶してあると確認した場合、共有データを更新する更新手段
として機能させることを特徴とするコンピュータプログラム。
【請求項２】
前記確認手段は、
前記一の端末装置に関する情報が記憶されているか否かの確認を要求する確認要求情報を、外部へ送信する手段と、
外部から確認情報を受信する手段と、
前記確認情報の受信数が、記憶してある他の端末装置の過半数であるか否かを判断する手段と、
該手段が過半数であると判断した場合、前記更新要求情報に対応する共有データをロックすることを要求するロック要求情報を、記憶してある他の端末装置へ送信する手段と
を含むことを特徴とする請求項１記載のコンピュータプログラム。
【請求項３】
前記一の端末装置を、さらに
外部から前記ロック要求情報を最先に受信した旨を示すロック確認情報を受信する手段、
前記ロック確認情報の受信数が、記憶してある複数の制御端末装置に関する情報の数の過半数であるか否かを判断する手段、
該手段が過半数であると判断した場合、外部に対して前記一の端末装置から更新データを受信する旨を通知するコミット情報を送信する手段、及び
外部に共有データを更新する更新データを送信する手段
として機能させることを特徴とする請求項１又は２記載のコンピュータプログラム。
【請求項４】
前記ロック確認情報の受信数が、記憶してある他の端末装置の過半数であるか否かを判断する手段が過半数でないと判断した場合、前記一の端末装置を、前記ロック確認情報を受信しなかった端末装置に関する情報を消去し、記憶していなかった端末装置に関する情報を、消去した端末装置の数だけ記憶する手段として機能させることを特徴とする請求項３記載のコンピュータプログラム。
【請求項５】
前記一の端末装置を、所定の時間間隔で、前記ロック確認情報を受信しなかった端末装置に関する情報を消去し、記憶していなかった端末装置に関する情報を、消去した端末装置の数だけ記憶する手段として機能させることを特徴とする請求項３記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信手段を介して接続されている複数の端末装置で共有する共有データを、一の端末装置からデータの一貫性を維持しつつ更新することができるコンピュータプログラムに関する。
【背景技術】
【０００２】
昨今の通信技術の急速な進展により、ピアツーピア（Ｐ２Ｐ）ネットワーク、グリッドコンピューティング環境等を容易に構築することができ、クライアント／サーバモデルに代表される管理機能を集約したサーバが存在しない環境下でネットワークに自律性を持たせた情報処理システムが構築されるようになっている。
【０００３】
例えばピアツーピア（Ｐ２Ｐ）ネットワークでは、サーバを設けることなく、ＬＡＮ／ＷＡＮネットワークに接続した計算機資源を共有する。ピアツーピア（Ｐ２Ｐ）ネットワークの一例として、特許文献1に開示されているフリーネットでは、ファイルの送信者、受信者の匿名性を維持することでプライバシーを保護しつつ、ファイルの受信経路にコピーファイルを配置することでデータを冗長化し、ファイル転送途上における障害発生に対するデータ耐性の向上を図っている。
【０００４】
また、グリッドコンピューティング環境では、物理的に分散配置されている複数のノードを1つの仮想ノードとすることにより、データ更新時にデータの一貫性を維持することを意図している。しかし、データ更新時にデータの一貫性を具現化する技術については、標準化するに至っていないのが現状である。
【０００５】
分散環境における共有データの更新時にデータの一貫性を維持する技術としては、多数決の原理を用いることが多い。例えば特許文献２では、複数のホストコンピュータにそれぞれ接続してある画像処理装置において、一の画像処理装置に動作環境の変更が生じた場合、接続してあるすべてのホストコンピュータに動作環境変更の問い合わせを行い、過半数のホストコンピュータから動作環境の変更を認める旨の信号を受信したとき、動作環境を一括して変更するシステムが開示されている。
【特許文献１】特開２００１−３０７０５５号公報
【特許文献２】特開平８−１８５２８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献２に開示したシステムでは、ホストコンピュータが特定のコンピュータに固定されていることが前提であり、ピアツーピア（Ｐ２Ｐ）ネットワークのようにホストコンピュータとして機能するコンピュータが常時変化する環境では、結局すべてのコンピュータに対して動作環境変更の問い合わせをする必要が生じる。したがって、ネットワーク負荷が過大となり、更新が完了するまでに相当の時間を要するという問題点があった。特にネットワークに接続されているコンピュータの数が多くなればなるほど、共有データの更新に要する時間は長くなり、実用に耐えない。
【０００７】
また、ネットワーク及び該ネットワーク環境に接続してあるコンピュータは、障害が発生することを前提としてシステムを構築する必要があるのに対し、ホストコンピュータのような固定した管理ノードが存在しないコンピューティング環境では、障害が発生している箇所の特定、及び効果的な復旧手段の特定が困難であり、障害の復旧に相当の時間を要する。したがって、実用面の観点から、障害の復旧を待たずに共有データの一貫性を維持する必要性が高い。
【０００８】
本発明は斯かる事情に鑑みてなされたものであり、ネットワークに接続されているコンピュータの数が過大であっても、実用的な更新時間で共有データの更新を行うことができ、障害の復旧を待つことなく共有データの一貫性を維持することができるコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために第１発明に係るコンピュータプログラムは、通信手段を介して接続してある複数の端末装置間で共有する共有データを更新する一の端末装置で実行することが可能なコンピュータプログラムにおいて、前記一の端末装置を、外部から所定の共有データの更新を要求する更新要求情報を受け付ける更新要求受付手段、記憶してある他の端末装置の過半数に前記一の端末装置に関する情報が記憶してあるか否かを確認する確認手段、及び該確認手段が記憶してある他の端末装置の過半数に前記一の端末装置に関する情報が記憶してあると確認した場合、共有データを更新する更新手段として機能させることを特徴とする。
【００１０】
また、第２発明に係るコンピュータプログラムは、第１発明において、前記確認手段は、前記一の端末装置に関する情報が記憶されているか否かの確認を要求する確認要求情報を、外部へ送信する手段と、外部から確認情報を受信する手段と、前記確認情報の受信数が、記憶してある他の端末装置の過半数であるか否かを判断する手段と、該手段が過半数であると判断した場合、前記更新要求情報に対応する共有データをロックすることを要求するロック要求情報を、記憶してある他の端末装置へ送信する手段とを含むことを特徴とする。
【００１１】
また、第３発明に係るコンピュータプログラムは、第１又は第２発明において、前記一の端末装置を、さらに外部から前記ロック要求情報を最先に受信した旨を示すロック確認情報を受信する手段、前記ロック確認情報の受信数が、記憶してある複数の制御端末装置に関する情報の数の過半数であるか否かを判断する手段、該手段が過半数であると判断した場合、外部に対して前記一の端末装置から更新データを受信する旨を通知するコミット情報を送信する手段、及び外部に共有データを更新する更新データを送信する手段として機能させることを特徴とする。
【００１２】
また、第４発明に係るコンピュータプログラムは、第３発明において、前記ロック確認情報の受信数が、記憶してある他の端末装置の過半数であるか否かを判断する手段が過半数でないと判断した場合、前記一の端末装置を、前記ロック確認情報を受信しなかった端末装置に関する情報を消去し、記憶していなかった端末装置に関する情報を、消去した端末装置の数だけ記憶する手段として機能させることを特徴とする。
【００１３】
また、第５発明に係るコンピュータプログラムは、第３発明において、前記一の端末装置を、所定の時間間隔で、前記ロック確認情報を受信しなかった端末装置に関する情報を消去し、記憶していなかった端末装置に関する情報を、消去した端末装置の数だけ記憶する手段として機能させることを特徴とする。
【００１４】
第１発明では、複数の端末装置が相互にデータ送受信可能に接続してある環境において、共有データのロック／アンロックを制御する複数の制御端末装置（以下、管理ノード）に関する情報を、各管理ノードに個別に記憶し、任意の端末装置からの共有データの更新要求情報を受信した一の管理ノード（以下、確認ノード）は、他の管理ノードに確認ノードが管理ノードである旨の情報が記憶されているか否かを確認する。確認ノードは、他の管理ノードの過半数に、該確認ノードが管理ノードである旨の情報が記憶されていることを確認した場合、共有データを更新する。これにより、共有データのロック／アンロックを制御する管理ノードが、通信手段を介して接続してある端末装置のいずれであるかを、共有データの更新要求がある都度確認することができ、確認ノードが管理ノードである旨を確認した後に共有データを更新することから、管理ノードが固定的でないネットワークにおいても確実に共有データを更新することができる。また、接続してある管理ノードのみに確認要求情報を送信すれば足りることからネットワーク負荷が過大とならず、通信手段又は接続してある端末装置のいずれかに障害が発生している場合であっても、記憶してある管理ノードの過半数から確認情報を受信した場合には共有データの更新処理を実行することが可能となる。
【００１５】
第２発明では、複数の端末装置が相互にデータ送受信可能に接続してある環境において、各管理ノードは、確認要求情報を送信した確認ノードが管理ノードとして記憶している場合のみ確認情報を送信し、確認ノードは受信した確認情報の数が記憶してある管理ノードの数の過半数である場合、管理ノードに対して更新対象となる共有データのロックを要求するロック要求情報を送信する。これにより、共有データのロック／アンロックを制御する管理ノードが、通信手段を介して接続してある端末装置のいずれであるかを、共有データの更新要求がある都度確認することができるとともに、確認ノードが管理ノードである旨を多数決の原理を用いて自律的に確認することができる。したがって、接続してある管理ノードのみに確認要求情報を送信すれば足りることからネットワーク負荷が過大とならず、通信手段又は接続してある端末装置のいずれかに障害が発生している場合であっても、記憶してある管理ノードの過半数から確認情報を受信した場合には共有データの更新処理を実行することが可能となる。
【００１６】
第３発明では、管理ノードが共有データに対するロック要求確認情報を最先に受信した確認ノードに対してロック確認情報を送信し、確認ノードは、ロック確認情報の受信数が、記憶してある管理ノードに関する情報の数の過半数である場合、管理ノードに対して該確認ノードから更新データを受信する旨を通知するコミット情報を送信し、共有データを更新する更新データを送信する。これにより、更新対象となる共有データについて、接続してある管理ノードの過半数に対して最先にロック要求確認情報を送信した確認ノードが受信した更新要求情報に従って共有データの更新処理を実行することができ、確認ノードが共有データを更新すべくロック制御する権限を有するノードである旨を多数決の原理を用いて自律的に特定することができる。したがって、接続してある管理ノードのみにロック要求確認情報を送信すれば足りることからネットワーク負荷が過大とならず、通信手段又は接続してある端末装置のいずれかに障害が発生している場合であっても、記憶してある管理ノードの過半数からロック確認情報を受信した場合には共有データの更新処理を実行することが可能となる。
【００１７】
第４発明では、ロック確認情報の受信数が、記憶してある他の端末装置の過半数でないと判断した場合、ロック確認情報を受信しなかった端末装置に関する情報を消去し、記憶していなかった端末装置に関する情報を、消去した端末装置の数だけ新たに記憶する。これにより、接続してある管理ノードの過半数が応答できない状態となった場合、管理ノードの消去及び追加を行う。したがって、例えば障害が発生している端末装置を管理ノードとして記憶しておく状態が生じるのを未然に防止することができ、より安全に共有データの更新処理を実行することが可能となる。
【００１８】
第５発明では、所定の時間間隔で、ロック確認情報を受信しなかった端末装置に関する情報を消去し、記憶していなかった端末装置に関する情報を、消去した端末装置の数だけ記憶する手段を備える。これにより、常時、接続してある管理ノードの過半数が応答できない状態とならないように、管理ノードの消去及び追加を行う。したがって、例えば障害が発生している端末装置を管理ノードとして記憶しておく状態が生じるのを未然に防止することができ、より安全に共有データの更新処理を実行することが可能となる。
【００１９】
なお、上述した説明において、稼動中の端末装置の障害発生率を考慮し、判断基準を単に過半数とするだけでなく、例えば過半数を上回り、過半数採決を補償するに足る数、すなわち安定稼動数を判断基準として用いても良い。
【発明の効果】
【００２０】
第１発明によれば、共有データのロック／アンロックを制御する管理ノードが、通信手段を介して接続してある端末装置のいずれであるかを、共有データの更新要求がある都度確認することができ、確認ノードが管理ノードである旨を確認した後に共有データを更新することから、管理ノードが固定的でないネットワークにおいても確実に共有データを更新することができる。また、接続してある管理ノードのみに確認要求情報を送信すれば足りることからネットワーク負荷が過大とならず、通信手段又は接続してある端末装置のいずれかに障害が発生している場合であっても、記憶してある管理ノードの過半数から確認情報を受信した場合には共有データの更新処理を実行することが可能となる。
【００２１】
第２発明によれば、共有データのロック／アンロックを制御する管理ノードが、通信手段を介して接続してある端末装置のいずれであるかを、共有データの更新要求がある都度確認することができるとともに、確認ノードが管理ノードである旨を多数決の原理を用いて自律的に確認することができる。したがって、接続してある管理ノードのみに確認要求情報を送信すれば足りることからネットワーク負荷が過大とならず、通信手段又は接続してある端末装置のいずれかに障害が発生している場合であっても、記憶してある管理ノードの過半数から確認情報を受信した場合には共有データの更新処理を実行することが可能となる。
【００２２】
第３発明によれば、更新対象となる共有データについて、接続してある管理ノードの過半数に対して最先にロック要求確認情報を送信した確認ノードが受信した更新要求情報に従って共有データの更新処理を実行することができ、確認ノードが共有データを更新すべくロック制御する権限を有するノードである旨を多数決の原理を用いて自律的に特定することができる。したがって、接続してある管理ノードのみにロック要求確認情報を送信すれば足りることからネットワーク負荷が過大とならず、通信手段又は接続してある端末装置のいずれかに障害が発生している場合であっても、記憶してある管理ノードの過半数からロック確認情報を受信した場合には共有データの更新処理を実行することが可能となる。
【００２３】
第４発明によれば、接続してある管理ノードの過半数が応答できない状態となった場合、管理ノードの消去及び追加を行う。したがって、例えば障害が発生している端末装置を管理ノードとして記憶しておく状態が生じるのを未然に防止することができ、より安全に共有データの更新処理を実行することが可能となる。
【００２４】
第５発明によれば、常時、接続してある管理ノードの過半数が応答できない状態とならないように、管理ノードの消去及び追加を行う。したがって、例えば障害が発生している端末装置を管理ノードとして記憶しておく状態が生じるのを未然に防止することができ、より安全に共有データの更新処理を実行することが可能となる。
【発明を実施するための最良の形態】
【００２５】
（実施の形態１）
以下、本発明の実施の形態１に係る共有データ更新システムについて図面に基づいて具体的に説明する。図１は、本発明の実施の形態１に係る共有データ更新システムの構成を示すブロック図である。本実施の形態１では、インターネット２、ＬＡＮ３、３、・・・、ＷＡＮ４、４、・・・等を介して、複数の端末装置１、１、・・・が、互いにデータを送受信することが可能に接続してある。すなわち、複数のサブネットワークを相互に接続し、データの送受信可能な端末装置１、１、・・・の総数が約１０００台以上接続することにより、巨大な１つのネットワークを形成している。
【００２６】
図２は、本発明の実施の形態１に係る共有データ更新システムの端末装置１の構成を示すブロック図である。端末装置１は、少なくとも、ＣＰＵ（中央演算装置）１１、記憶手段１２、ＲＡＭ１３、インターネット２、ＬＡＮ３、ＷＡＮ４等の外部の通信手段と接続する通信インタフェース１４、入力手段１５、出力手段１６及びＤＶＤ、ＣＤ等の可搬型記録媒体１８を用いる補助記憶手段１７で構成される。
【００２７】
ＣＰＵ１１は、内部バス１９を介して端末装置１の上述したようなハードウェア各部と接続されており、上述したハードウェア各部を制御するとともに、記憶手段１２に記憶されている処理プログラム、例えば後述する管理ノードとして機能する端末装置１、１、・・・に対して確認要求情報を送信するプログラム等に従って、種々のソフトウェア的機能を実行する。
【００２８】
記憶手段１２は、内蔵される固定型記憶装置（ハードディスク）、ＲＯＭ等で構成され、通信インタフェース１４を介した外部のコンピュータ、又はＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体１８から取得した、端末装置１として機能させるために必要な処理プログラムを記憶している。記憶手段１２は、処理プログラムだけではなく、後述する管理ノードとして機能する端末装置１、１、・・・を識別する情報を管理ノードテーブル１２１として記憶してある。
【００２９】
ＲＡＭ１３は、ＤＲＡＭ等で構成され、ソフトウェアの実行時に発生する一時的なデータを記憶する。通信インタフェース１４は内部バス１９に接続されており、インターネット３等と通信することができるよう接続することにより、処理に必要とされるデータを送受信する。
【００３０】
入力手段１５は、画面上に表示された単語を選択するマウス等のポインティングデバイス、又は画面上でテキストデータを打鍵により入力するキーボード等である。出力手段１６は、画像を表示出力する液晶表示装置（ＬＣＤ）、表示ディスプレイ（ＣＲＴ）等の表示装置である。
【００３１】
補助記憶手段１７は、ＣＤ、ＤＶＤ等の可搬型記録媒体１８を用い、記憶手段１２へ、ＣＰＵ１１が処理するプログラム、データ等をダウンロードする。また、ＣＰＵ１１が処理したデータをバックアップすべく書き込むことも可能である。
【００３２】
本実施の形態１に係る共有データ更新システムの確認ノード、管理ノードに該当する端末装置１のＣＰＵ１１は、可搬型記録媒体１８に記録されている確認要求情報送信プログラム、確認情報受信プログラム、確認情報受信数判断プログラムを補助記憶手段１７を解して記憶手段１２へダウンロードし、ＣＰＵ１１は、ダウンロードしたこれらのプログラムを読み込んで実行する。
【００３３】
巨大な１つのネットワークを構成する多数のサブネットワーク内には、それぞれのサブネットワーク内の複数の端末装置１、１、・・・に関する情報を記憶しておく管理ノードとして機能する端末装置１ａが一又は複数設けてある。サブネットワーク間のデータの送受信は、すべて各サブネットワーク内に属する一又は複数の端末装置１ａ、１ａ、・・・間で行う。したがって、管理ノードとして機能する各端末装置１ａは、管理ノードとして機能する複数の端末装置１ａ、１ａ、・・・を識別する情報、例えばＩＰアドレス、端末ＩＤ等を管理ノードテーブル１２１として記憶手段１２に記憶してある。
【００３４】
図３は、本発明の実施の形態１に係る共有データ更新システムの管理ノードテーブル１２１のデータ構成の例示図である。図３に示すように、管理ノードテーブルの更新回数を示す版数毎に、登録されているアドレスの種別、アドレス長、アドレス、及び該アドレスで識別する端末装置１の接続／非接続を記憶しておく。端末装置１の接続／非接続は、所定回数連続して非接続である場合、管理ノードテーブル１２１から削除するための情報である。
【００３５】
すなわち、管理ノードとして機能する複数の端末装置１ａ、１ａ、・・・は、常時固定的ではない。例えばサブネットワークの構成の変更、管理ノードとして機能する端末装置１ａの障害発生による代替機への管理ノード変更等、多種多様な要因により管理ノードテーブル１２１を記憶する端末装置１ａが変化する。したがって、管理ノードテーブル１２１に記憶する端端末装置１ａ、１ａ、・・・を識別する情報も、管理ノードとして機能する端末装置１ａ毎に常時変化させる必要があることから、管理ノードテーブル１２１を照会した場合に連続して非接続である管理ノードについては、何らかの障害が発生しているか、又はネットワーク構成が更新されたものと判断し、該管理ノードに関する情報を管理ノードテーブル１２１から削除し、版数を‘１’インクリメントした新たな管理ノードテーブル１２１を生成する。
【００３６】
共有データの更新を行う場合、更新を依頼する使用者は、該使用者が用いる端末装置１（以下、一般ノード）から更新要求情報を入力する。更新要求情報は、少なくとも更新対象となる共有データを識別する情報、及び一般ノードを識別する情報を含む。一般ノードから入力された更新要求情報は、該端末装置１が接続されているサブネットワーク内の最寄の管理ノードへ送信される。図４は、共有データの更新要求情報が任意の一般ノードから発信されてからの、各ノード間で送受信される情報の流れを示す図である。
【００３７】
一般ノードから共有データに対する更新要求情報を受信した管理ノードは、確認ノードとして機能する。確認ノードは、他の管理ノード（Ａ、Ｂ、Ｃ、Ｄ、・・・）が記憶する管理ノードテーブル１２１に、確認ノードを識別する情報、例えばＩＰアドレスが記憶されているか否かを確認する。そして、他の管理ノードが記憶する管理ノードテーブル１２１に、確認ノードを識別する情報が記憶してあることが確認できた場合、すなわち他の管理ノード（Ａ、Ｂ、Ｃ、Ｄ、・・・）の過半数から、管理ノードテーブル１２１に該確認ノードを識別する情報が記憶してある旨を示す確認情報を受信した場合、更新対象となる共有データを更新すべく、更新対象となる共有データのデータロックを要求するロック要求情報を送信する。
【００３８】
図４の例では、管理ノードＣ以外から確認情報を受信している。管理ノードＣについては、例えば電源が入っていない、管理ノードＣのハードウェアに障害が発生している、ネットワーク障害が発生している、ネットワークの構成が更新されている等、様々な要因が想定できる。しかし、多数決の原理を用いて確認ノードが管理ノードである旨を確認することにより、管理ノードＣを無視すれば足りることから、何等障害回復処理又は状況確認処理を実行することなく、早期に共有データを更新することが可能となる。
【００３９】
図５は、確認ノードにおけるＣＰＵ１１の確認ノードとして認識されているか否かを確認する処理手順を示すフローチャートである。なお、確認ノードは、図２に示す端末装置１において、記憶手段１２にダウンロードされている確認要求情報送信プログラム、確認情報受信プログラム、確認情報受信数判断プログラムをＣＰＵ１１が読み込んで実行する。
【００４０】
図５では、確認ノードのＣＰＵ１１は、一般ノードからの更新要求情報を受信し（ステップＳ５０１）、記憶手段１２に記憶してある複数の管理ノードに対して、自己のＩＰアドレスが記憶してあるか否かを確認することを要求する確認要求情報を送信する（ステップＳ５０２）。
【００４１】
確認ノードの管理ノードテーブル１２１に記憶してある管理ノードのＣＰＵ１１は、確認ノードから送信された確認要求情報を受信した場合、自己の管理ノードテーブル１２１に確認ノードのＩＰアドレスが記憶してあるか否かを照会する。管理ノードのＣＰＵ１１が、自己の管理ノードテーブル１２１に確認ノードのＩＰアドレスが記憶してあることを確認した場合、管理ノードのＣＰＵ１１は、確認ノードに対して該ＩＰアドレスが記憶してある旨を示す確認情報を送信する。確認ノードのＣＰＵ１１は、複数の管理ノードからの確認情報を受信する（ステップＳ５０３）。
【００４２】
確認ノードのＣＰＵ１１は、受信した確認情報の受信数をインクリメントし（ステップＳ５０４）、インクリメントした確認情報の受信数が、自己の管理ノードテーブル１２１に記憶してある管理ノード数の過半数であるか否かを判断する（ステップＳ５０５）。確認ノードのＣＰＵ１１が、確認情報の受信数が、自己の管理ノードテーブル１２１に記憶してある管理ノード数の過半数であると判断した場合（ステップＳ５０５：ＹＥＳ）、確認ノードはネットワーク内の管理ノードの１つであるとネットワークによって自律的に認識され、受信した更新要求情報が正当な更新要求であると認められる。したがって、確認ノードのＣＰＵ１１は、更新対象となっている共有データに対する更新処理へと移行する。
【００４３】
確認ノードのＣＰＵ１１が、確認情報の受信数が、自己の管理ノードテーブル１２１に記憶してある管理ノード数の過半数を超えていないと判断した場合（ステップＳ５０５：ＮＯ）、確認ノードのＣＰＵ１１は、一定時間経過したか否かを判断する（ステップＳ５０６）。確認ノードのＣＰＵ１１が、一定時間経過していないと判断した場合（ステップＳ５０６：ＮＯ）、ステップＳ５０３へ戻って確認情報の受信を待つ。確認ノードのＣＰＵ１１が、一定時間経過したと判断した場合（ステップＳ５０６：ＹＥＳ）、更新処理を行うことができないものと判断し、確認ノードのＣＰＵ１１は、更新要求情報を受信した一般ノードに対して更新失敗情報を送信する（ステップＳ５０７）。
【００４４】
これにより、共有データのロック／アンロックを制御する管理ノードが、通信手段を介して接続してある端末装置のいずれであるかを、共有データの更新要求がある都度確認することができるとともに、確認ノードが管理ノードである旨を多数決の原理を用いて自律的に確認することができる。したがって、接続してある管理ノードのみに確認要求情報を送信すれば足りることからネットワーク負荷が過大とならず、ネットワーク又は接続してある管理ノードのいずれかに障害が発生している場合であっても、記憶してある管理ノードの過半数から確認情報を受信した場合には共有データの更新処理を実行することが可能となる。
【００４５】
なお、上述した処理手順において、管理ノードのＣＰＵ１１は、自己の管理ノードテーブル１２１に確認ノードのＩＰアドレスが記憶してあることを確認した場合に、該ＩＰアドレスが記憶してある旨を示す肯定的な確認情報を確認ノードに送信しているが、これに限定されるものではなく、自己の管理ノードテーブル１２１に確認ノードのＩＰアドレスが記憶していないことを確認した場合に、該ＩＰアドレスが記憶されていない旨を示す否定的な確認情報を確認ノードに送信しても良いし、両者を併用しても良い。
【００４６】
図６は、確認ノードにおけるＣＰＵ１１の更新対象となる共有データを更新する処理手順を示すフローチャートである。確認ノードのＣＰＵ１１は、管理ノードテーブル１２１に記憶してある管理ノードのうち、確認情報を送信してきた管理ノードに対して、更新対象となっている共有データをロックすることを要求するロック要求情報を送信する（ステップＳ６０１）。確認情報を確認ノードへ送信してない管理ノードへロック要求情報を送信しない理由は、これらの管理ノードは、例えば電源が入っていない、使用可能時間外である、管理ノードのハードウェアに障害が発生している、ネットワーク障害が発生している、ネットワークの構成が更新されている等、ロック要求情報に対する応答の可能性が低いからである。
【００４７】
ロック要求情報を受信した管理ノードのＣＰＵ１１は、受信したロック要求情報が最先に受信したロック要求情報であるか否かを判断する。すなわち、更新対象となる共有データが、他の管理ノードによる更新処理のためにロックされている場合には、既に他の管理ノードからロック要求情報を受信しているのに対し、他の管理ノードによる更新処理のためにロックされていない場合には、最先に受信したものと判断することができる。
【００４８】
管理ノードのＣＰＵ１１は、受信したロック要求情報が最先に受信したロック要求情報であると判断した場合、受信したロック要求情報が最先に受信したロック要求情報である旨を示すロック確認情報を、確認ノードに対して送信する。なお、管理ノードのＣＰＵ１１は、ロック確認情報を確認ノードに対して送信するとともに、他の管理ノードからのロック要求情報を排除すべく、更新対象となる共有データをロックする。確認ノードのＣＰＵ１１は、複数の管理ノードからロック確認情報を受信する（ステップＳ６０２）。
【００４９】
確認ノードのＣＰＵ１１は、受け付けたロック確認情報の受信数をインクリメントし（ステップＳ６０３）、インクリメントしたロック確認情報の受信数が、自己の管理ノードテーブル１２１に記憶してある管理ノード数の過半数であるか否かを判断する（ステップＳ６０４）。確認ノードのＣＰＵ１１が、ロック確認情報の受信数が、自己の管理ノードテーブル１２１に記憶してある管理ノード数の過半数であると判断した場合（ステップＳ６０４：ＹＥＳ）、該確認ノードは、更新対象となる共有データを更新する権限を有するものと認識され、確認ノードのＣＰＵ１１は、該確認ノードから更新データを受信する旨を通知するコミット情報を、ロック確認情報の送信元である管理ノードに対して送信し、コミット確認情報を受信する（ステップＳ６０７）。
【００５０】
確認ノードのＣＰＵ１１が、ロック確認情報の受信数が、自己の管理ノードテーブル１２１に記憶してある管理ノード数の過半数を超えていないと判断した場合（ステップＳ６０４：ＮＯ）、確認ノードのＣＰＵ１１は、一定時間経過したか否かを判断する（ステップＳ６０５）。確認ノードのＣＰＵ１１が、一定時間経過していないと判断した場合（ステップＳ６０５：ＮＯ）、ステップＳ６０２へ戻ってロック確認情報の受信を待つ。確認ノードのＣＰＵ１１が、一定時間経過したと判断した場合（ステップＳ６０５：ＹＥＳ）、更新処理を行うことができないものと判断し、確認ノードのＣＰＵ１１は、更新要求情報を受信した一般ノードに対して更新失敗情報を送信する（ステップＳ６０６）。
【００５１】
そして、コミット情報を受信した管理ノードは、該コミット情報の送信元である確認ノードのみがデータ更新処理の主体であると認識し、コミット確認情報を該確認ノードに対して送信する。
【００５２】
コミット確認情報を受信した確認ノードのＣＰＵ１１は、更新対象となる共有データを更新すべく、更新データを一般ノードから受信し（ステップＳ６０８）、自己の管理ノードテーブル１２１に記憶してある管理ノードに対して送信する（ステップＳ６０９）。
【００５３】
なお、確認ノードがコミット情報を送信する管理ノードは、ロック確認情報の送信元である管理ノードに限定されるものではなく、相互に接続してある約１０００台以上の端末装置１、１、・・・で形成するネットワークにおいて、コミット確認情報を過半数の管理ノードから受信することができさえすれば、どの管理ノードであっても良い。
【００５４】
図７は、管理ノードテーブル１２１に記憶してある管理ノードに対して、更新対象となっている共有データをロックすることを要求するロック要求情報が確認ノードから発信されてからの、各ノード間で送受信される情報の流れを示す図である。
【００５５】
確認ノードからロック要求情報を受信した管理ノードは、ロック要求情報で指定された共有データが、他の確認ノード（管理ノード）によってロックされているか否かを判断し、ロックされていない場合は、ロック要求情報で指定される確認ノードにより他の確認ノードからのロック要求情報を排除、すなわちロックする。そして、管理ノードのＣＰＵ１１は、ロック確認情報を確認ノードに対して送信する。
【００５６】
図７の例では、管理ノードＡ、Ｂ、Ｄ、・・・に対してロック要求情報を送信し、管理ノードＣへは送信していない。これは、図４に示すように、管理ノードＣから確認情報が送信されていないからである。また、管理ノードＢからはロック確認情報が確認ノードに対して送信されていない。これは、管理ノードＢが、該確認ノードからのロック要求情報を受信する前に他の確認ノードからのロック要求情報を受信していたことを示す。
【００５７】
そして、該確認ノードが受信したロック確認情報の受信数が、該確認ノードの管理ノードテーブル１２１に記憶してある管理ノード数の過半数である場合、更新対象となる共有データに対する更新権限は、該確認ノードが有することになる。したがって、確認ノードは、ロック確認情報を受信した管理ノードに対してコミット情報を送信し、受信した管理ノードは、コミット確認情報を返信する。図７の例では、管理ノードＢからはロック確認情報が確認ノードに対して送信されていないことから、管理ノードＡ、Ｃに対してコミット情報を送信している。
【００５８】
そして、確認ノードは、コミット確認情報を受信した後、一般ノードから更新データを受信して、該更新データを該確認ノードの管理ノードテーブル１２１に記憶してある管理ノードすべてに対して送信する。
【００５９】
管理ノードすべてに対して送信する更新データには、管理ノードにおけるデータロックの強制解除情報及びデータロック情報を含んでおり、他の確認ノードによりロックされている管理ノードにおいても、まずデータロックが解除され、再度、該確認ノードが更新権限を有するノードであるとしてデータロックされ、更新データに置換される。更新データへの置換が完了した時点で、各管理ノードにおいてデータロックが解除される。
【００６０】
なお、上述した処理手順において、管理ノードのＣＰＵ１１は、受信したロック要求情報が最先に受信したロック要求情報であると判断した場合、受信したロック要求情報が最先に受信したロック要求情報である旨を示す肯定的なロック確認情報を、確認ノードに対して送信しているが、これに限定されるものではなく、管理ノードのＣＰＵ１１が、受信したロック要求情報が最先に受信したロック要求情報でない旨を示す否定的なロック確認情報を、確認ノードに対して送信しても良いし、両者を併用するものであっても良い。
【００６１】
以上のように本実施の形態１によれば、更新対象となる共有データについて、接続してある管理ノードの過半数に対して最先にロック要求確認情報を送信した確認ノードが受信した更新要求情報に従って共有データの更新処理を実行することができ、確認ノードが共有データを更新すべくロック制御する権限を有するノードである旨を多数決の原理を用いて自律的に特定することができる。したがって、接続してある管理ノードにロック要求確認情報を送信すれば足りることからネットワーク負荷が過大とならず、通信手段又は接続してある端末装置のいずれかに障害が発生している場合であっても、記憶してある管理ノードの過半数からロック確認情報を受信した場合には共有データの更新処理を実行することが可能となる。
【００６２】
なお、一般に各管理ノードの障害発生率が一定値ｐであると仮定した場合、Ｎ個の管理ノードの単位時間当たりの平均故障率はｐＮとなり、標準偏差σは（ｐＮ）-0.5となる。したがって、安全台数ＮＳは（数１）で求めることができる。
【００６３】
（数１）
ＮＳ＝Ｎ／２＋ａ（ｐＮ）-0.5
【００６４】
例えば、１台の管理ノードに、１日（８時間）に１０分間の割合で障害が発生すると仮定した場合、障害発生率は一定値ｐ＝１／５０であり、管理ノードの回復許容時間が１０分間であるとき、管理ノードがＮ＝１０００台で構成されるネットワークでは、安全台数ＮＳ＝５１３台となる。したがって、上述したような、確認ノードが管理ノードである旨を多数決の原理を用いて自律的に確認する方法、及び確認ノードが共有データを更新すべくロック制御する権限を有するノードである旨を多数決の原理を用いて自律的に特定する方法は、共有データの安全性確保の観点から妥当であると判断できる。
【００６５】
本実施の形態１において、共有データの安全性を確保するためには、ネットワーク内に存在する管理ノードのうち、障害の発生等で機能していない管理ノードを除いて、一定の割合以上の個数の管理ノードが機能していることが必要となる。したがって、例えば管理ノードに障害が多発した場合、障害が発生している管理ノードを管理ノードリストから削除し、新たな管理ノードを追加する必要が生じる。
【００６６】
具体例として、確認ノードのＣＰＵ１１が、ロック確認情報の受信数が、管理ノードテーブル１２１に記憶してある管理ノード数の過半数を割ったと判断した場合、確認ノードは、ロック確認情報を受信しなかった管理ノードを管理ノードテーブル１２１から削除し、削除した管理ノードと同一のサブネットワーク内に接続してある他の端末装置を管理ノードとして管理ノードテーブル１２１へ記憶する。すなわち、管理ノードを同一サブネットワーク内で移動したことになる。
【００６７】
したがって、管理ノードの過半数が応答できない状態となった場合に、管理ノードを移動することにより、例えば障害が発生している端末装置を管理ノードと管理ノードテーブル１２１に記憶しておく事態を未然に防止することができ、より安全に共有データの更新処理を実行することが可能となる。
【００６８】
管理ノードが応答できない状態とは、管理ノードにハードウェア障害、又はソフトウェア障害が発生した場合に限定されるものではなく、例えば稼働時間が９時から１７時に制限されている管理ノードに対する稼動時間外アクセス、祝祭日、週末等に停止する管理ノードに対する週末のアクセス等、特に障害が発生していなくても応答できない状態も含まれる。
【００６９】
また、管理ノードを同一サブネットワーク内で移動するタイミングは、確認ノードのＣＰＵ１１が、ロック確認情報の受信数が、管理ノードテーブル１２１に記憶してある管理ノード数の過半数を割ったと判断した場合に限定されるものではない。すなわち、所定の時間間隔、例えば１時間毎に、直近のデータ更新処理時に、ロック確認情報を受信しなかった管理ノードを管理ノードテーブル１２１から削除し、削除した管理ノードと同一のサブネットワーク内に接続してある他の端末装置を管理ノードとして管理ノードテーブル１２１へ記憶しても良い。
【００７０】
この場合、１時間毎に、管理ノードの過半数がデータ更新処理をできない状態とならないように、管理ノードを管理ノードテーブル１２１から削除、及び管理ノードを管理ノードテーブル１２１へ追加することにより、例えば障害が発生している管理ノードを管理ノードテーブル１２１に記憶しておく事態を未然に防止することができ、より安全に共有データの更新処理を実行することが可能となる。
【００７１】
（実施の形態２）
以下、本発明の実施の形態２に係る共有データ更新システムについて図面に基づいて具体的に説明する。本実施の形態２に係る共有データ更新システムの構成は、実施の形態１と同様であり、同一の符号を付することで詳細な説明を省略する。本実施の形態２は、確認ノードに何らかの障害が発生した場合のリカバリ処理について説明する。
【００７２】
管理ノードテーブル１２１は、確認ノードだけでなく、各管理ノードも記憶手段１２に記憶してある。したがって、確認ノードに障害が発生したか否かを各管理ノードが検知した場合、管理ノード相互間で共有データ更新処理の状態を確認しあうことにより、確認ノード復旧後のリカバリ処理を適切に行うことが可能となる。図８は、本発明の実施の形態２に係る共有データ更新システムの管理ノードのＣＰＵ１１のデータ更新リカバリ処理手順を示すフローチャートである。
【００７３】
管理ノードのＣＰＵ１１は、確認ノードからのコミット情報を受信したか否かを判断する（ステップＳ８０１）。管理ノードのＣＰＵ１１が、コミット情報を受信したと判断した場合（ステップＳ８０１：ＹＥＳ）、管理ノードのＣＰＵ１１は、コミット確認情報を確認ノードへ送信し（ステップＳ８０２）、確認ノードから更新データを受信したか否かを判断する（ステップＳ８０３）。
【００７４】
管理ノードのＣＰＵ１１が、更新データを受信していないと判断した場合（ステップＳ８０３：ＮＯ）、管理ノードのＣＰＵ１１は、所定の待ち時間が経過したか否かを判断し（ステップＳ８０４）、管理ノードのＣＰＵ１１が、所定の待ち時間が経過したと判断した場合（ステップＳ８０４：ＹＥＳ）。管理ノードのＣＰＵ１１は確認ノードに障害が発生したと判断し、管理ノードテーブル１２１に記憶してある他の管理ノードと通信を行い、他の管理ノードがコミット情報を受信しているか否かを確認する（ステップＳ８０５）。
【００７５】
管理ノードのＣＰＵ１１が、他の管理ノードのうち少なくとも一の管理ノードがコミット情報を受信していると確認した場合（ステップＳ８０６：ＹＥＳ）、管理ノードのＣＰＵ１１は、確認ノードに対して、更新データを取得できるまで、すなわち該確認ノードが復旧するまで更新データを要求し（ステップＳ８０７、Ｓ８０８）、該確認ノードが復旧した場合、管理ノードのＣＰＵ１１は更新データを受信し（ステップＳ８０８：ＹＥＳ、ステップＳ８０３：ＹＥＳ）、共有データを更新する（ステップＳ８０９）。
【００７６】
一方、管理ノードのＣＰＵ１１が、他の管理ノードのいずれもコミット情報を受信していないと確認した場合（ステップＳ８０６：ＮＯ）、管理ノードのＣＰＵ１１は、中途である更新処理を中止すべく、コミット情報を受信した他の管理ノードをアンロックする指示を示すアンロック情報を送信する（ステップＳ８１０）。アンロック情報を受信した他の管理ノードのＣＰＵ１１は、他の管理ノードをアンロックして、ロック要求情報の待ち状態とする。
【００７７】
以上のように本実施の形態２によれば、共有データの更新処理の途上で確認ノードに障害が発生した場合であっても、確実にリカバリ処理を実行することができ、共有データの一貫性、整合性等を維持することが可能となる。
【００７８】
なお、上述した実施の形態１及び２では、ネットワークに接続してある端末装置の総数を１０００台程度と想定して説明しているが、接続してある端末装置の数が多ければ多いほど、障害発生に対する耐性が高まり、より安全な共有データ更新システムを構成することが期待できる。
【００７９】
以上の実施の形態１及び２に関し、さらに以下の付記を開示する。
【００８０】
（付記１）
通信手段を介して接続してある複数の端末装置間で共有する共有データを更新する一の端末装置で実行することが可能なコンピュータプログラムにおいて、
前記一の端末装置を、
外部から所定の共有データの更新を要求する更新要求情報を受け付ける更新要求受付手段、
記憶してある他の端末装置の過半数に前記一の端末装置に関する情報が記憶してあるか否かを確認する確認手段、及び
該確認手段が記憶してある他の端末装置の過半数に前記一の端末装置に関する情報が記憶してあると確認した場合、共有データを更新する更新手段
として機能させることを特徴とするコンピュータプログラム。
【００８１】
（付記２）
前記確認手段は、
前記一の端末装置に関する情報が記憶されているか否かの確認を要求する確認要求情報を、外部へ送信する手段と、
外部から確認情報を受信する手段と、
前記確認情報の受信数が、記憶してある他の端末装置の過半数であるか否かを判断する手段と、
該手段が過半数であると判断した場合、前記更新要求情報に対応する共有データをロックすることを要求するロック要求情報を、記憶してある他の端末装置へ送信する手段と
を含むことを特徴とする付記１記載のコンピュータプログラム。
【００８２】
（付記３）
前記一の端末装置を、さらに
外部から前記ロック要求情報を最先に受信した旨を示すロック確認情報を受信する手段、
前記ロック確認情報の受信数が、記憶してある複数の制御端末装置に関する情報の数の過半数であるか否かを判断する手段、
該手段が過半数であると判断した場合、外部に対して前記一の端末装置から更新データを受信する旨を通知するコミット情報を送信する手段、及び
外部に共有データを更新する更新データを送信する手段
として機能させることを特徴とする付記１又は２記載のコンピュータプログラム。
【００８３】
（付記４）
前記ロック確認情報の受信数が、記憶してある他の端末装置の過半数であるか否かを判断する手段が過半数でないと判断した場合、前記一の端末装置を、前記ロック確認情報を受信しなかった端末装置に関する情報を消去し、記憶していなかった端末装置に関する情報を、消去した端末装置の数だけ記憶する手段として機能させることを特徴とする付記３記載のコンピュータプログラム。
【００８４】
（付記５）
前記一の端末装置を、所定の時間間隔で、前記ロック確認情報を受信しなかった端末装置に関する情報を消去し、記憶していなかった端末装置に関する情報を、消去した端末装置の数だけ記憶する手段として機能させることを特徴とする付記３記載のコンピュータプログラム。
【００８５】
（付記６）
通信手段を介して互いにデータを送受信することが可能に接続してある複数の端末装置間で共有する共有データを、一の端末装置にて更新する共有データ更新システムにおいて、
前記複数の端末装置のうち、共有データ更新時のロック／アンロックを制御する複数の制御端末装置に関する情報を該制御端末装置毎に記憶してあり、
前記一の端末装置は、
他の端末装置から所定の共有データの更新を要求する更新要求情報を受け付ける更新要求受付手段と、
前記複数の制御端末装置の過半数に前記一の端末装置に関する情報が記憶してあるか否かを確認する確認手段と、
該確認手段が前記複数の制御端末装置の過半数に前記一の端末装置に関する情報が記憶してあると確認した場合、共有データを更新する更新手段と
を備えることを特徴とする共有データ更新システム。
【００８６】
（付記７）
通信手段を介して互いにデータを送受信することが可能に接続してある複数の端末装置間で共有する共有データを、一の端末装置にて更新する共有データ更新方法において、
前記複数の端末装置のうち、共有データ更新時のロック／アンロックを制御する複数の制御端末装置に関する情報を該制御端末装置毎に記憶し、
前記一の端末装置は、
他の端末装置から所定の共有データの更新を要求する更新要求情報を受け付け、
前記複数の制御端末装置の過半数に前記一の端末装置に関する情報が記憶してあるか否かを確認し、
前記複数の制御端末装置の過半数に前記一の端末装置に関する情報が記憶してあると確認した場合、共有データを更新することを特徴とする共有データ更新方法。
【図面の簡単な説明】
【００８７】
【図１】本発明の実施の形態１に係る共有データ更新システムの構成を示すブロック図である。
【図２】本発明の実施の形態１に係る共有データ更新システムの端末装置の構成を示すブロック図である。
【図３】本発明の実施の形態１に係る共有データ更新システムの管理ノードテーブルのデータ構成の例示図である。
【図４】共有データの更新要求情報が一般ノードから発信されてからの、各ノード間で送受信される情報の流れを示す図である。
【図５】確認ノードにおけるＣＰＵの確認ノードとして認識されているか否かを確認する処理手順を示すフローチャートである。
【図６】確認ノードにおけるＣＰＵの更新対象となる共有データを更新する処理手順を示すフローチャートである。
【図７】管理ノードテーブルに記憶してある管理ノードに対して、更新対象となっている共有データをロックすることを要求するロック要求情報が確認ノードから発信されてからの、各ノード間で送受信される情報の流れを示す図である。
【図８】本発明の実施の形態２に係る共有データ更新システムの管理ノードのＣＰＵのデータ更新リカバリ処理手順を示すフローチャートである。
【符号の説明】
【００８８】
１  端末装置
２  インターネット
３  ＬＡＮ
４  ＷＡＮ
１１  ＣＰＵ
１２  記憶手段
１３  ＲＡＭ
１４  通信インタフェース
１５  入力手段
１６  出力手段
１７  補助記憶手段
１２１  管理ノードテーブル
【図１】
2006059273.tif 000003
【図２】
2006059273.tif 000004
【図３】
2006059273.tif 000005
【図４】
2006059273.tif 000006
【図５】
2006059273.tif 000007
【図６】
2006059273.tif 000008
【図７】
2006059273.tif 000009
【図８】
2006059273.tif 000010