(57)【要約】【課題】複数のデータベースが分散して配置され、いずれのデータベースからもデータを更新することができるマルチマスタ方式を適用したデータベースシステムにおいて、データベースの内容の一貫性を保つ仕組みを低コストで実現する技術を提供する。【解決手段】計算機は、データベースに保持されるレコードそれぞれについての更新状況を示す更新通番値を記憶する。計算機は、レコードを更新する場合、更新前のレコードに対応する更新通番値と、自計算機に固有の優先値とに基づいて、更新後のレコードの更新通番値を算出する。この更新後のレコードの更新値は、レコードの更新回数に応じた値であり、また、自計算機に固有の値である。自計算機でレコードを更新した場合は、更新後のレコードと、算出した更新値とを、データベースシステムを構成する他の計算機へ送信する。【選択図】図４
2014106785.tif 000002
【特許請求の範囲】
【請求項１】
マルチマスタ方式により複数の計算機間でレプリケーションを行うデータベースシステムを構成する計算機であって、
複数のレコードを保持するためのデータレコード保持部と、
前記レコードの更新状況を示す更新値を各レコードについて記憶するための記憶部と、
自計算機においてレコードを更新する場合、更新前の前記レコードの更新値と、自計算機に固有の優先値とに基づいて、更新されるレコードの更新回数に応じた自計算機に固有の更新値を算出する算出部と、
自計算機において更新したレコードおよび当該レコードについて前記算出された自計算機に固有の更新値を、前記データベースシステムを構成する他の計算機へ送信し、前記他の計算機から当該他の計算機において更新されたレコードおよび当該レコードの更新値を受信する送受信処理部と、
前記他の計算機からレコードおよび当該レコードの更新値を前記受信した場合、前記受信したレコードについて前記記憶部に記憶される更新値と、前記受信した更新値とを比較することにより、前記複数の計算機間でレプリケーションを行う制御部とを備える、
計算機。
【請求項２】
前記算出部による前記自計算機に固有の更新値を算出する処理は、
前記更新前の前記レコードの更新値に基づいて当該レコードの更新回数を取得し、取得した前記更新回数と、前記データベースシステムを構成する計算機の数との積に基づいて基準値を算出し、算出された前記基準値を前記優先値によって補正することにより行う、
請求項１記載の計算機。
【請求項３】
前記記憶部は、
前記ネットワーク接続によりデータベースシステムを構成する計算機群において自計算機に固有の優先値を記憶するように構成されている、
請求項２記載の計算機。
【請求項４】
前記優先値は、前記データベースシステムを構成する計算機それぞれに割り当てられた通し番号であり、
前記算出部は、前記算出された基準値に対し、前記優先値を加算または減算することにより前記自計算機に固有の更新値を算出する、
請求項３記載の計算機。
【請求項５】
前記計算機は、
前記優先値記憶部に記憶される優先値の再設定要求を受け付けて、前記データベースシステムを構成する他の計算機との通信により、計算機間で優先値を変更する優先値管理部をさらに備える、
請求項１から４のいずれか１項に記載の計算機。
【請求項６】
前記優先値管理部は、
前記データベースシステムを構成する計算機それぞれの装置固有情報に基づいて、自計算機に再設定される優先値を取得する、
請求項５記載の計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースシステムを構成する計算機に関し、特に、複数のデータベースの内容を一致化させるための技術に関する。
【背景技術】
【０００２】
例えば、電力系統の運用等のための監視制御システム等では、大量のデータが逐次記録され、データベースとして管理されている。このようなシステムでは、安定的な運用を行うため、計算機およびネットワークの多重化がなされている。例えば、複数のデータベースを分散して配置し、ある１つのデータベースの更新を他のデータベースへも反映させることで安定的な運用を可能とする。
【０００３】
このように、ある計算機上のデータベースで発生した更新内容を、他の複数の計算機上のデータベースにネットワークを介して転送し、更新内容を各データベースで一致化させる機能をレプリケーション機能という。例えば、マスタ・スレーブ方式によるレプリケーション機能を持つデータベース管理システムが知られている。マスタ・スレーブ方式によるレプリケーション機能とは、データの更新の要求を、特定の１台の計算機（マスタ）のデータベースで受け付けて、当該特定の１台の計算機（マスタ）から他の計算機（スレーブ）のデータベースに対して更新データを通知することをいう。このマスタ・スレーブ方式の場合、同一のレコードに対して複数の計算機上でデータの更新の要求が発生したとしても、マスタのデータベースにおいて順に要求が処理されるため、データベースの内容の一致化が容易である。
【０００４】
また、近年は、マルチマスタ方式と呼ばれるデータレプリケーション機能を持つデータベース管理システムが普及してきている。マルチマスタ方式とは、複数のデータベースを備えるシステムにおいて、各計算機上で動作するプログラムが直接当該計算機のデータベースを更新可能とし、更新結果をデータベース間で互いに反映する方式のことをいう。
【０００５】
マルチマスタ方式をマスタ・スレーブ方式と比較すると、マスタ・スレーブ方式は、データベースの内容を更新することができる計算機が特定の１台に限定され、この特定の１台の計算機（マスタ）を経由して各計算機のデータベースが更新されるのに対し、マルチマスタ方式は、各計算機がそれぞれデータベースを更新する。そのため、マルチマスタ方式は、更新処理の負荷を各計算機で分散することができ、マスタ・スレーブ方式と比較してデータの書き込みを早めることができる。また、更新処理の負荷が各計算機で分散されているため、特定のデータベースが動作できない状態であっても、他のデータベースの更新処理に影響せず、データベース管理システムを安定的に運用することが容易であるという利点がある。
【０００６】
しかし、マルチマスタ方式は、任意のタイミングで各計算機がデータベースを更新するため、同一のレコードに対して複数の計算機でデータの更新が発生し得る。したがって、各計算機のデータベースの内容を計算機間で一致化させるための処理を行う必要がある。
【０００７】
マルチマスタ方式によって複数のデータベースの内容の整合性を維持するための技術として、下記の特許文献等が知られている。例えば、特開平３−２５６１４６号公報（特許文献１）は、同一内容をもつべく構成された正データベースと副データベースについて、正データベースの更新通番と、副データベースの更新通番と、レコード更新時刻とをデータベースレコードに保有し、各データベースの更新通番を照合することでデータベースを統合する技術が記載している。特許文献１において、各データベースで並列に更新されたレコードは、レコード更新時刻を比較して再処理される。これにより、データベース更新の順序が維持される。特開平１１−７４０３号公報（特許文献２）は、レプリケーションの実行時刻と、レプリケーションを行おうとするレコードの更新時刻とを比較することでデータベースの不整合を回避する技術を記載している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平３−２５６１４６号公報
【特許文献２】特開平１１−７４０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１のように、複数のパラメータを使用してデータベースの内容の整合性を維持する場合、複数のパラメータを使用して複雑な判定処理を実装する必要がある。特に、レコードの数が大量にある大規模なデータベース管理システムであるほど、データベースの内容の一致化の処理負荷が大きくなる。また、特許文献２のように、レコードの更新時刻など時刻情報に基づいてデータベースの内容の一致化を行うには、各計算機が計時している時刻を厳密に一致させることが必要であり、高精度の時刻同期処理が必要となる。
【００１０】
そこで、本発明は、複数のデータベースが分散して配置され、いずれのデータベースからもデータを更新することができるマルチマスタ方式を適用したデータベースシステムにおいて、データベースの内容の一貫性を保つ仕組みを低コストで実現する技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
この発明に係る計算機では、マルチマスタ方式により複数の計算機間でレプリケーションを行うデータベースシステムの構成が提供される。この計算機は、データベースに保持されるレコードそれぞれについての更新状況を示す更新値を記憶する。計算機は、レコードを更新する場合、更新前のレコードに対応する更新値と、自計算機に固有の優先値とに基づいて、更新後のレコードの更新値を算出する。この更新後のレコードの更新値は、レコードの更新回数に応じた値であり、また、自計算機に固有の値である。自計算機でレコードを更新した場合は、更新後のレコードと、算出した更新値とを、データベースシステムを構成する他の計算機へ送信する。他の計算機でレコードが更新された場合、計算機は、更新されたレコードと更新値とを他の計算機から受信し、受信した更新値と、自計算機において記憶している更新値とを比較することにより、複数の計算機間でのレプリケーションを行う。
【発明の効果】
【００１２】
この発明によると、各計算機において、複数のデータベースの内容を一致化させる処理を容易に行うことができる。そのため、例えば大規模な分散データベースシステムを比較的低い性能の計算機で構成することができる。
【００１３】
この発明の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解されるこの発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１における制御システム１の構成を示す図である。
【図２】実施の形態１における第１計算機１００のハードウェアの構成を示す図である。
【図３】実施の形態１における第１計算機１００の機能を示すブロック図である。
【図４】実施の形態１におけるデータ更新管理部１５が更新値算出部１８によって更新通番値を算出し、データレコードを更新する処理を示すフローチャートである。
【図５】実施の形態１におけるデータベースを備える計算機間でレプリケーションを行い、更新通番値が他のデータベースに反映される処理を示す図である。
【図６】実施の形態１におけるレプリケーション処理によってデータレコードの内容が他の計算機のデータベースと同一化する例を示す図である。
【図７】実施の形態１における複数の計算機がデータレコードを更新した場合のレプリケーション処理を示す図である。
【図８】実施の形態２における各計算機が優先値を変更する処理を示すフローチャートである。
【図９】実施の形態２における計算機が優先値を変更する処理の具体例を示す図である。
【図１０】実施の形態２における各計算機が優先値を変更する処理を示す第２のフローチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００１６】
＜実施の形態１＞
本実施の形態の計算機はデータベースを備えており、計算機が複数設置されてデータベースシステムを構成する。データベースシステムは、各計算機のデータベースの内容を同一化するためのレプリケーションをマルチマスタ方式によって行う。データベースシステムは、例えば制御システム１において使用される。制御システム１は、このデータベースシステムのデータに基づいて各種制御を行う。
【００１７】
図１は、実施の形態１における制御システム１の構成を示す図である。図１を参照して、制御システム１は、複数の拠点（第１拠点５Ａ、第２拠点５Ｂ、第３拠点５Ｃ、第４拠点５Ｄ）と、複数の計算機（第１計算機１００、第２計算機２００、第３計算機３００）とにより構成され、これら複数の拠点と複数の計算機とが相互にネットワーク２によって接続されている。第１計算機１００等の計算機それぞれはデータベースを備えており、これら計算機によってデータベースシステムを構成する。第１拠点５Ａ等の拠点は、データベースシステムに蓄積されるデータ等を用いて監視対象のモニタリングや各機器への指令を行う。
【００１８】
制御システム１は、例えば、監視制御システムであり、多数設置されたモニタリング機器等がデータを逐次取得し、これら取得されたデータをデータベースシステム（第１計算機１００、第２計算機２００、第３計算機３００等の計算機）に蓄積し、運用拠点（第１拠点５Ａ等）がデータベースシステムのデータに基づいてモニタリングを行って各種の指令を行う。
【００１９】
監視制御システムは、例えば、発電所において発電された電力を工場等の需要家に安定して供給するための系統制御システムである。系統制御システムは、系統の状態を監視して、例えば、電圧や電流の最大値・最小値、位相の変化、遮断器（Circuit  Breaker）のＯＮ／ＯＦＦ状態などの監視値等を収集し、収集したデータによってデータベースシステムのデータレコードを更新する。系統制御システムは、安定した連続運転が求められるため、データベースシステムを構成する計算機および各計算機を接続するためのネットワークを多重化している。例えば、各計算機および運用拠点（中央給電指令所、系統給電指令所など）をそれぞれ地理的に分散して設置することで、災害等が発生して一部の計算機や運用拠点が機能を発揮できなくなった場合においても計算機や運用拠点を切り替えて運転の継続を可能とする。
【００２０】
＜構成＞
本実施の形態の計算機（第１計算機１００等）のハードウェア構成および機能的な構成について説明する。図２は、実施の形態１における第１計算機１００のハードウェアの構成を示す図である。図２を参照して、第１計算機１００は、プロセッサ６１と、メモリ６２と、ＨＤＤ６３と、通信インタフェース６４等を含む。
【００２１】
プロセッサ６１は、プログラムを読み出して、読み出したプログラムに従って第１計算機１００の動作を制御し、第１計算機１００をデータベース管理システムとして機能させる。メモリ６２は、第１計算機１００において処理されるデータを保持するための揮発性の記憶領域である。ＨＤＤ６３は、第１計算機１００がデータベース管理システムとして機能するための不揮発性の記憶領域であり、複数件のデータレコードを保持する。通信インタフェース６４は、第１計算機１００が外部の機器と通信するためのインタフェースとして機能する。
【００２２】
図３は、実施の形態１における第１計算機１００の機能を示すブロック図である。複数の計算機（第１計算機１００、第２計算機２００、第３計算機３００）がネットワーク２によって接続され、データベースシステムを構成している。各計算機の機能的な構成は同一であるため、第１計算機１００の構成を詳細に説明する。図３を参照して、第１計算機１００は、データベースファイル１１と、更新通番管理ファイル１２と、優先度管理ファイル１３と、優先度管理部１４と、データ更新管理部１５と、データ送受信部１６と、更新要求元プログラム１７とを含む。
【００２３】
データベースファイル１１は、データベースを構成する複数件のデータレコードを保存するための記憶領域である。
【００２４】
更新通番管理ファイル１２は、データベースファイル１１に保存されるデータレコードの更新状態を示す更新通番値を記憶するための記憶領域である。更新通番値は、データレコードの更新状態を通し番号によって示している。更新通番管理ファイル１２は、データベースファイル１１に保存されるデータレコードそれぞれについて、更新通番値を記憶する。
【００２５】
優先度管理ファイル１３は、第１計算機１００に割り当てられた優先度を示す優先値を記憶するための記憶領域である。優先値は、複数のデータベースにおいてデータの更新が競合した場合に、どのデータベースの内容を優先して各データベースにデータを反映するかを決定するために使用される。複数の計算機からなるデータベースシステムにおいて、各計算機のデータベースごと（または各データベースのうち、特定のグループごと）に優先値が関連付けられて設定されており、各データベースにそれぞれ異なる固有の優先値が割り当てられている。
【００２６】
優先値の取りうる値の範囲は、例えば、データベースシステムを構成するデータベースの総数を最大値とする整数値である。例えば、計算機が３台の場合、優先値の取りうる最大値は３となり、各計算機は、通し番号となる１から３の値のいずれかを割り当てられて優先値として記憶する。また、本実施形態では、計算機は、データベースの更新を許可しない無効状態によって動作することもできる。無効状態とは、例えば、計算機の初期の起動時や、後述する優先値を変更している途上の状態をいい、この無効状態の間、計算機は、優先値を０に設定して動作する。
【００２７】
優先度管理部１４は、各計算機のデータベースに割り当てられた優先値を、他の計算機との通信によって変更する。
【００２８】
更新要求元プログラム１７は、第１計算機１００におけるデータベースの更新処理をデータ更新管理部１５に指示するためのプログラムであり、データ更新管理部１５に対してデータベースの更新要求を発行する。
【００２９】
データ更新管理部１５は、更新値算出部１８と、レコード更新制御部１９とを含み、データベースファイル１１へのデータの書き込みと、データレコードに対応する更新通番値の算出および更新と、他の計算機のデータベースとのレプリケーションと、を制御する。
【００３０】
更新値算出部１８は、更新要求元プログラム１７からデータの書き込み要求を受け付けてデータベースファイル１１へデータを書き込む場合に、データベースファイル１１へのデータの書き込み後の更新通番値を算出し、算出した更新通番値を更新通番管理ファイル１２に記憶させる。更新値算出部１８は、データの書き込みに伴う更新通番値を、更新前のデータにかかるデータレコードの更新通番値と、優先度管理ファイル１３に記憶される優先値とに基づいて算出する。
【００３１】
レコード更新制御部１９は、更新要求元プログラム１７からデータの書き込み要求を受け付けてデータベースファイル１１へデータを書き込む処理を行う。また、レコード更新制御部１９は、他の計算機のデータベースとの内容を一致させるためのレプリケーション処理を制御する。レコード更新制御部１９は、データ送受信部１６によって他の計算機からデータレコードおよびデータレコードの更新通番値を受信した場合に、受信したデータレコードについて更新通番管理ファイル１２に記憶される更新通番値と、受信した更新通番値とを比較し、更新通番値の大きさに基づいて、受信したデータレコードおよび更新通番値を用いてデータベースファイル１１を更新するか否かを制御する。
【００３２】
第２計算機２００および第３計算機３００の各構成要素は、参照符号の他は第１計算機１００と同様の構成を備えている。第１計算機１００、第２計算機２００、第３計算機３００等の計算機は相互にネットワーク２によって接続され、データレコードおよび更新通番値を送受信することでデータベースの内容の同一化を行う。
【００３３】
＜動作＞
第１計算機１００の動作について、第１計算機１００の更新値算出部１８が更新通番値を算出する処理と、第１計算機１００が他の計算機とデータベースの内容のレプリケーションを行う処理とを具体的に説明する。
【００３４】
（データ更新時に更新通番値を算出する処理）
図４は、実施の形態１におけるデータ更新管理部１５が更新値算出部１８によって更新通番値を算出し、データレコードを更新する処理を示すフローチャートである。データ更新管理部１５は、更新要求元プログラム１７からのデータの書き込み要求を受け付けて、更新値算出部１８によって更新通番値を算出する処理、およびレコード更新制御部１９によってデータベースファイル１１のデータレコードを更新する処理を開始する。
【００３５】
ステップＳ２１において、更新値算出部１８は、更新要求元プログラム１７からのデータの書き込み要求に応じて、更新対象のデータを受信する。
【００３６】
ステップＳ２２において、更新値算出部１８は、第１計算機１００に設定された優先値を優先度管理ファイル１３から取り出す。
【００３７】
ステップＳ２３において、更新値算出部１８は、データレコードの更新が許可されているか無効状態であるかを判定するため、優先度管理ファイル１３から取り出した優先値の値が有効であるか（優先値が０ではないか）無効であるか（優先値が０であるか）を判断する。更新値算出部１８は、優先値の値が有効である場合はステップＳ２４の処理を行い、優先値の値が無効である場合は、ステップＳ２６へ進み、第１計算機１００は、更新要求元プログラム１７からの書き込み要求に対し、データ更新管理部１５によるデータレコードの更新を行わず処理を終了する。
【００３８】
ステップＳ２４において、更新値算出部１８は、更新前のデータレコードの更新通番値（現在の更新通番値）を更新通番管理ファイル１２から読み出して、読み出した更新通番値と、ステップＳ２２で読み出した優先値に基づいて、以下の式（１）に従って、データレコードの更新回数に応じて当該データレコードの更新後の更新通番値を算出する。
【００３９】
更新後の更新通番値  ＝  ｛ＩＮＴ（現在の更新通番値  ／  データベースシステムを構成するデータベースの総数）  ＋  １｝  ×  データベースシステムを構成するデータベースの総数  ＋  （優先値  −  １）    ・・・（１）
なお、式（１）において、”ＩＮＴ（Ｘ）”は、Ｘを超えない最大の整数値を示す。式（１）を参照して、実施の形態１では、各計算機の更新値算出部１８は、データレコードの更新回数と、データベースシステムを構成するデータベース（計算機）の数との積を基準値とし、基準値に対して各計算機に割り当てられた優先値に基づく値を補正することでデータレコードの更新後の更新通番値を算出する。
【００４０】
実施の形態１では、更新値算出部１８は、上記の基準値に対し、”優先値に１を減じた数”を加算することでデータレコードの更新後の更新通番値を算出する。更新値算出部１８は、式（１）において、ＩＮＴ（現在の更新通番値  ／  データベースシステムを構成するデータベースの総数）を演算することで、データレコードの更新前における更新回数を取得する。優先値は、各計算機で固有の値が割り当てられているため、各計算機が算出する更新通番値は、各計算機に固有の値となる。そのため、データレコードに対応づけられた更新通番値を参照すると、いずれの計算機によってデータレコードが更新されたかを判別することができる。
【００４１】
ステップＳ２５において、レコード更新制御部１９は、更新要求元プログラム１７からのデータの書き込み要求があったデータをもとにデータベースファイル１１のデータレコードを更新する。更新値算出部１８は、ステップＳ２４で算出した更新通番値を更新通番管理ファイル１２へ記憶させる。レコード更新制御部１９は、更新したデータレコード、および更新後の更新通番値を、データ送受信部１６によって他の計算機（第２計算機２００、第３計算機３００等）へ送信する。
【００４２】
ステップＳ２６において、データレコードの更新処理を終了する。
（他の計算機からデータを受信した場合のレプリケーション処理）
第１計算機１００は、データ送受信部１６によって他の計算機が更新したデータおよび当該データの更新通番値を受信すると、他の計算機とのデータベースの内容を同一化させるため、受信したデータを第１計算機１００のデータベースファイル１１に反映させるか否かをデータ更新管理部１５によって制御する。
【００４３】
データ更新管理部１５は、受信したデータをデータベースファイル１１に格納する位置のデータレコードについて更新通番管理ファイル１２に記憶される更新通番値を読み出して、読み出した更新通番値と、受信した更新通番値とを比較する。データ更新管理部１５は、受信した更新通番値の値が更新通番管理ファイル１２から読み出した更新通番値よりも大きい場合は、受信したデータによるデータベースファイル１１の更新と、更新通番管理ファイル１２に記憶される更新通番値の更新とを行う。
【００４４】
また、データ更新管理部１５は、他の計算機から受信したデータの更新通番値の値が更新通番管理ファイル１２から読み出した更新通番値よりも小さい場合は、自計算機においてデータベースファイル１１に保持するデータレコードの値を優先する。そのため、データ更新管理部１５は、受信したデータおよび更新通番値を廃棄し、データベースファイル１１に記憶されるデータレコードおよび当該データレコードに対応する更新通番値を他の計算機へネットワーク２を介して送信する。これにより、第１計算機１００は、データベースシステムを構成する他の計算機のデータベースとの間でレプリケーション処理を行う。
【００４５】
（レプリケーション処理の具体例）
上述のように複数の計算機間で行われるレプリケーション処理について、具体例を用いて説明する。
【００４６】
図５は、実施の形態１における本実施の形態において、データベースを備える計算機間でレプリケーションを行い、更新通番値が他のデータベースに反映される処理を示す図である。図５では、データベースを備える計算機の総数が３の場合を示し、各計算機の更新通番管理ファイル１２、更新通番管理ファイル２２、優先度管理ファイル３３の具体的な変化の例を示している。この例では、第１計算機１００は、優先値の値「１」を優先度管理ファイル１３において保持し、第２計算機２００は、優先値の値「２」を優先度管理ファイル２３において保持し、第３計算機３００は、優先値の値「３」を優先度管理ファイル３３において保持している。
【００４７】
ステップＳ３１において、同一のレコードについて更新通番管理ファイル１２、更新通番管理ファイル２２、更新通番管理ファイル３２で管理されている更新通番値がいずれも初期状態（更新通番値の値が０の状態）であるとする。ここで、第１計算機１００は、更新要求元プログラム１７によりデータの更新要求がなされたとする。
【００４８】
ステップＳ３２において、第１計算機１００は、データ更新管理部１５によってデータベースファイル１１のレコードを更新し、更新通番値を更新する処理（図４のステップＳ２４、ステップＳ２５）を行い、更新通番管理ファイル１２に更新通番値「３」を格納する。
【００４９】
ステップＳ３３において、第１計算機１００は、レコード更新制御部１９の処理によって他の計算機とデータベースの記憶内容の同一化（レプリケーション処理）を行う。このレプリケーション処理の結果、第１計算機１００が更新したレコードについて更新通番管理ファイル１２において保持されている更新通番値「３」は、第２計算機２００の更新通番管理ファイル２２と第３計算機３００の更新通番管理ファイル３２とに反映される。
【００５０】
ステップＳ３４において、第２計算機２００がレコードを更新したとする。第２計算機２００は、更新通番値を更新する処理（図４のステップＳ２４、ステップＳ２５）を行い、更新通番値「７」を算出して更新通番管理ファイル２２に更新通番値「７」を格納する。
【００５１】
ステップＳ３５において、第２計算機２００は、レコード更新制御部２９の処理によって他の計算機とレプリケーション処理を行い、第２計算機２００が更新したレコードについて更新通番管理ファイル２２において保持されている更新通番値「７」は、第１計算機１００の更新通番管理ファイル１２と第３計算機３００の更新通番管理ファイル３２とに反映される。
【００５２】
ステップＳ３６において、第３計算機３００がレコードを更新したとする。第３計算機３００は、更新通番値を更新する処理（図４のステップＳ２４、ステップＳ２５）を行い、更新通番値「１１」を算出して更新通番管理ファイル３２に更新通番値「１１」を格納する。
【００５３】
ステップＳ３７において、第３計算機３００は、レコード更新制御部３９の処理によって他の計算機とレプリケーション処理を行い、第３計算機３００が更新したレコードについて更新通番管理ファイル３２において保持されている更新通番値「１１」は、第１計算機１００の更新通番管理ファイル１２と第２計算機２００の更新通番管理ファイル２２とに反映される。
【００５４】
このように、第１計算機１００、第２計算機２００、第３計算機３００は、更新通番値の算出を、データレコードの更新回数と、各計算機に固有に割り当てられた優先値とに基づいて算出している。これにより、更新通番値は、データレコードの更新を行った計算機に固有の値が算出される。例えば、上記の図５の例では、各計算機に通し番号で優先値が割り当てられており、データレコードの更新回数に応じた定まる基準値を優先値で補正している。例えば、第１計算機１００がデータレコードを更新した場合、更新通番値は「３×ｎ」（ｎは任意の正の整数）となり、第２計算機２００がデータレコードを更新した場合、更新通番値は「３×ｎ＋１」となり、第３計算機３００がデータレコードを更新した場合、更新通番値は「３×ｎ＋２」となる。各計算機は、優先値を参照すると、いずれの計算機によってデータレコードが更新されたか判別することができる。
【００５５】
また、このようにデータレコードの更新回数と計算機の数との積に基づいて基準値を算出し、算出された基準値を各計算機の優先値によって補正して更新通番値を算出することで、簡易な処理により更新通番値を各計算機に固有の値とすることができる。
【００５６】
図６は、実施の形態１におけるレプリケーション処理によってデータレコードの内容が他の計算機のデータベースと同一化する例を示す図である。図６では、第１計算機１００と第２計算機２００のデータレコードの内容を、更新通番値に基づいて同一化する例を示している。レプリケーション処理は、各計算機がデータレコードを更新して他の計算機へ更新後のデータレコードおよび更新通番値を送信したときや、各計算機が他の計算機からデータレコードおよび更新通番値を受信したときや、ネットワーク２に異常が発生し他の計算機との通信が不可の状態となった後、通信状態が復旧したときに各計算機によって行われる。
【００５７】
ステップＳ４１において、第１計算機１００は、他の計算機（第２計算機２００）の更新通番管理ファイル（更新通番管理ファイル２２）と、自計算機の更新通番管理ファイル１２とを各データレコードについて比較する。比較の結果、更新通番値の値が異なる場合、第１計算機１００は、更新通番値の大きいデータレコードを優先する。例えば、図６の例では、レコード１およびレコード３の更新通番値が第１計算機１００と第２計算機２００とで異なっている。第１計算機１００は、各データレコードの更新通番値を参照し、レコード１についてはデータベースファイル１１を優先し、レコード３についてはデータベースファイル２１を優先すると判断する。
【００５８】
ステップＳ４２において、レプリケーション処理が行われ、第１計算機１００と第２計算機２００との間で、レコード１についてはデータベースファイル１１の記憶内容がデータベースファイル２１よりも優先され、レコード３についてはデータベースファイル２１の記憶内容がデータベースファイル１１よりも優先される。各計算機がデータレコードの更新および更新通番値の更新を行うことにより、各計算機のデータベースの内容が同一化される。
【００５９】
このように、本実施形態では、各計算機が更新通番管理ファイル（更新通番管理ファイル１２等）に保持している更新通番値を比較するという簡易な処理によりレプリケーション処理を行うことができ、特に大規模なデータベースにおいて動作を効率化することができる。
【００６０】
（各計算機でそれぞれデータレコードの更新が行われた場合）
各計算機がそれぞれデータレコードの更新を行った場合は、最も高い優先値が設定されている計算機のデータレコードが優先される。図７は、実施の形態１における複数の計算機がデータレコードを更新した場合のレプリケーション処理を示す図である。例えば、複数の計算機がほぼ同時にデータレコードを更新する場合や、計算機間の通信接続に障害が発生し、レプリケーション処理を行うことが困難な期間において各データベースがそれぞれデータレコードを更新した場合などがある。図７の例では、同一のデータレコードを第２計算機２００と第３計算機３００とがそれぞれ更新した場合の例を示している。
【００６１】
ステップＳ５１において、各計算機のデータベースの内容は同一化がなされており、更新通番値「１１」が各計算機の更新通番管理ファイルに保持されている。その後、第２計算機２００と第３計算機３００とが同一のデータレコードに対してそれぞれ更新を行ったとする。
【００６２】
ステップＳ５２において、第２計算機２００がデータベースファイル２１を更新し、第３計算機３００がデータベースファイル３１を更新した結果、第２計算機２００の更新通番管理ファイル２２には更新通番値「１３」が保持され、第３計算機３００の更新通番管理ファイル３２には更新通番値「１４」が保持されている。
【００６３】
ステップＳ５３において、レプリケーション処理が行われ、最も大きい更新通番値を持つ第３計算機３００のデータレコードの内容が他の計算機と一致化される。
【００６４】
上記説明したように、本実施形態によると、各計算機がほぼ同時にデータレコードを更新した場合であっても、更新通番値を比較するという簡易な処理によりレプリケーション処理を行うことができる。
【００６５】
＜実施の形態２＞
実施の形態１では、各計算機に割り当てられた優先値の値が固定であるものとして説明したが、優先値の値を各計算機が変更することとしてもよい。例えば、新たに計算機を追加する場合や、計算機の性能を向上させた場合などにおいて、各計算機の優先値を変更させることとしてもよい。優先値を変更する処理は、各計算機の優先度管理部（優先度管理部１４、優先度管理部２４、優先度管理部３４等）が行う。各計算機にはそれぞれ固有の優先値が割り当てられているため、各計算機は、複数の計算機が同一の優先値を持たないよう優先値の変更の処理を行う必要がある。具体的には、各計算機は、優先値を変更する際に、各計算機の優先度管理部が相互に優先値の値を交換し、各計算機が変更しようとする優先値の値が既に使用されている場合は、優先値の変更の要求を無視する動作をする。また、各計算機が同一の優先値を持たないよう、いずれかの計算機の優先値の値を無効状態（優先値の値を０に設定）にしてから優先値を変更する。
【００６６】
図８は、実施の形態２における各計算機が優先値を変更する処理を示すフローチャートである。以下に示す処理では、優先値の高い計算機から順に、自計算機が優先値を変更する対象であるか否かを判断し、変更対象の優先値の値を減少させつつ各計算機の優先値を再設定する。
【００６７】
ステップＳ１０１において、計算機は、優先度管理部（優先度管理部１４等）により他の計算機と通信し、各計算機が変更すべき優先値の再設定値を取得する。例えば、各計算機に優先順位を付け、優先順位の高い計算機の優先値の値が大きくなるよう優先値の値を再設定する。各計算機の優先順位は、例えば、各計算機のＭＡＣ（Media  Access  Control）アドレス、ＩＰ（Internet  Protocol）アドレス、各計算機のシリアル番号、各計算機の性能値、計算機毎の重要性等に基づいて定める。
【００６８】
ステップＳ１０３において、各計算機は、変更対象となる装置を示すフラグカウンタ（変更対象装置情報）に、優先値の最大値（計算機の総数）を設定する。
【００６９】
ステップＳ１０５において、各計算機は、自計算機の優先度管理部において管理している優先値の値と、変更対象装置情報とを比較し、優先値の値が変更対象装置情報と一致するか否かを判断する。ステップＳ１０５において肯定的な判断結果の場合（優先値の値と変更対象装置情報とが一致する場合）、計算機は、ステップＳ１０７の処理を実行する。ステップＳ１０５において否定的な判断結果の場合（優先値の値が変更対象装置情報と一致しない）、計算機は、ステップＳ１１３の処理を実行する。
【００７０】
ステップＳ１０７において、計算機は、ステップＳ１０１で取得した各計算機の優先値の再設定値に基づいて、自計算機の優先値の値を変更する必要があるか否かを判断する。自計算機の優先値の設定が変更されない場合、計算機は、ステップＳ１０９の処理を実行し、自計算機の優先値の設定を変更する場合、計算機は、ステップＳ１１１の処理を実行する。
【００７１】
ステップＳ１０９において、計算機は、優先値の値を変更せず、自計算機における優先値の変更処理が完了したことを他の計算機へ通知する。
【００７２】
ステップＳ１１１において、計算機は、自計算機の優先値の値を無効状態（優先値＝０）にし、優先値の値を無効状態にしたことを他の計算機へ通知する。
【００７３】
ステップＳ１１３において、計算機は、他の計算機から優先値に関する通知があるまで待機し、この通知を受信する。
【００７４】
ステップＳ１１５において、各計算機は、変更対象装置情報の値をデクリメントする。
ステップＳ１１７において、各計算機は、自計算機の優先度管理部において管理している優先値の値と、変更対象装置情報とを比較し、優先値の値が変更対象装置情報と一致するか否かを判断することで、自計算機が優先値を変更する対象の計算機であるか判断する。ステップＳ１１７において否定的な判断結果の場合（優先値の値が変更対象装置情報と一致しない場合）、計算機は、ステップＳ１１９の処理を実行する。ステップＳ１１７において肯定的な判断結果の場合（優先値の値が変更対象装置情報と一致する場合）、計算機は、ステップＳ１２１の処理を実行する。
【００７５】
ステップＳ１１９において、計算機は、他の計算機から優先値に関する通知があるまで待機し、この通知を受信する。
【００７６】
ステップＳ１２１において、計算機は、自計算機の優先値の値を、優先値の再設定値に従って変更し、優先値を変更したことを他の計算機へ通知する。
【００７７】
ステップＳ１２３において、各計算機は、変更対象装置情報の値をデクリメントする。
ステップＳ１２５において、各計算機は、優先値の値の再設定値と、各計算機において変更された優先値の値とを参照し、全ての計算機の優先値が変更されたか否かを判断する。全ての計算機の優先値が変更された場合（ステップＳ１２５においてＹＥＳ）、各計算機は優先値の変更の処理を終了する。全ての計算機の優先値の変更が完了していない場合（ステップＳ１２５においてＮＯ）、各計算機は、ステップＳ１１７の処理を行う。
【００７８】
図９は、実施の形態２における各計算機が優先値を変更する処理の具体例を示す図である。図９の例では、３つの計算機（第１計算機１００、第２計算機２００、第３計算機３００）が優先値を変更する場合の動作例を示している。
【００７９】
ステップＳ６１において、各計算機の優先度管理部には、第１計算機１００の優先度管理ファイル１３に優先値「１」が保持され、第２計算機２００の優先度管理ファイル２３に優先値「２」が保持され、第３計算機３００の優先度管理ファイル３３に優先値「３」が保持されている。優先値の値の再設定により、第１計算機１００に割り当てられる優先値を「２」とし、第２計算機２００に割り当てられる優先値を「３」とし、第３計算機３００に割り当てられる優先値を「１」に変更するものとする。
【００８０】
ステップＳ６２において、第３計算機３００の優先度管理部３４は、ステップＳ１０５、ステップＳ１０７の処理を行い、優先値を無効状態（優先値＝０）とする。
【００８１】
ステップＳ６３において、第３計算機３００の優先度管理部３４は、ステップＳ１１１の処理を行い、優先値を無効状態（優先値＝０）としたことを他の計算機に通知する。第１計算機１００および第２計算機２００は、ステップＳ１１３の処理を行い、第３計算機３００が優先値を無効状態にしたことの通知を受信する。
【００８２】
ステップＳ６４において、第２計算機２００は、ステップＳ６３における第３計算機３００からの通知の受信前に、第３計算機３００から受信したデータでデータレコードに更新を反映すべきデータがある場合は、データベースファイル２１に当該データを反映させる。
【００８３】
ステップＳ６５において、第２計算機２００は、ステップＳ１１７、ステップＳ１２１の処理を行って、優先度管理ファイル２３に優先値の値「３」を保持させる。
【００８４】
ステップＳ６６において、第２計算機２００は、ステップＳ１２１の処理を行って、第２計算機２００が優先値の値を変更したことを他の計算機へ通知する。第１計算機１００と第３計算機３００は、ステップＳ１１９の処理を行い、第２計算機２００が優先値を変更したことの通知を受信する。
【００８５】
ステップＳ６７において、第１計算機１００は、ステップＳ６６における第２計算機２００からの通知の受信前に、第２計算機２００から受信したデータでデータレコードに更新を反映すべきデータがある場合は、データベースファイル１１に当該データを反映させる。
【００８６】
ステップＳ６８において、第１計算機１００は、ステップＳ１１７、ステップＳ１２１の処理を行って、優先度管理ファイル１３に優先値の値「２」を保持させる。
【００８７】
ステップＳ６９において、第１計算機１００は、ステップＳ１２１の処理を行って、第１計算機１００が優先値の値を変更したことを他の計算機へ通知する。第２計算機２００と第３計算機３００は、ステップＳ１１９の処理を行い、第１計算機１００が優先値を変更したことの通知を受信する。
【００８８】
ステップＳ７０において、第３計算機３００は、ステップＳ６９における第１計算機１００からの通知の受信前に、第１計算機１００から受信したデータでデータレコードに更新を反映すべきデータがある場合は、データベースファイル３１に当該データを反映させる。
【００８９】
ステップＳ７１において、第３計算機３００は、ステップＳ１１７、ステップＳ１２１の処理を行って、優先度管理ファイル３３に優先値の値「１」を保持させる。
【００９０】
以上の処理により、各計算機が優先値を重複させることなく優先値を変更することができる。
【００９１】
図１０は、実施の形態２における各計算機が優先値を変更する処理を示す第２のフローチャートである。図８及び図９のような処理によらなくても、各計算機への新優先値の設定の前後で、各計算機が自己データの更新を禁止／許可をすることで、計算機間での更新通番値の重複を避ける手順を示している。ステップＳ２０１で新優先値を指示された各計算機はそれぞれ、図１０のフローを実行する。ステップＳ２０２において、計算機は、自己データの更新を禁止する。これによって、ステップＳ２０３でまだ反映されていない他計算機データの更新データを反映完了して以降、新たな更新データの反映を行わないので、各計算機の優先値が変更されることによる更新通番値の重複を避けることが出来る。ステップＳ２０４で自己の優先値を指定された値に変更する。次にステップＳ２０５で、自己の優先値変更完了を送信する。各計算機はステップＳ２０６で他の計算機が優先値の変更を完了したことを確認できるまで待機し、全計算機の優先値の変更が完了した後、ステップＳ２０７で自己データの更新許可をしてステップＳ２０９で終了する。
【００９２】
各実施形態で説明したように、分散配置されたいずれのデータベースからでも更新を行えるマルチマスタ方式を適用したデータベースシステムにおいて、時刻ずれの影響を受けやすい計算機の時刻情報や、複雑なパラメータの参照などを必要とせず、更新通番値の比較という処理を行うだけで、データレコードの更新時の競合を避けることができる。したがって、時刻同期ができない環境や、低い性能の計算機でデータベースシステムを構成する場合であっても、マルチマスタ方式による大規模な分散データベースシステムを構成することができる。
【００９３】
上記説明では、３つの計算機からなるデータベースシステムの例を中心に説明したが、データベースの数は３つに限られない。また、優先値によって管理する対象は、データベース全体に限らず、ある特定のデータレコードのグループであることとしてもよい。
【００９４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００９５】
１  制御システム、２  ネットワーク、５Ａ  第１拠点、５Ｂ  第２拠点、５Ｃ  第３拠点、５Ｄ  第４拠点、１１  データベースファイル、１２  更新通番管理ファイル、１３  優先度管理ファイル、１４  優先度管理部、１５  データ更新管理部、１６  データ送受信部、１７  更新要求元プログラム、１８  更新値算出部、１９  レコード更新制御部、２１  データベースファイル、２２  更新通番管理ファイル、２３  優先度管理ファイル、２４  優先度管理部、２５  データ更新管理部、２６  データ送受信部、２７  更新要求元プログラム、２８  更新値算出部、２９  レコード更新制御部、３１  データベースファイル、３２  更新通番管理ファイル、３３  優先度管理ファイル、３４  優先度管理部、３５  データ更新管理部、３６  データ送受信部、３７  更新要求元プログラム、３８  更新値算出部、３９  レコード更新制御部、６１  プロセッサ、６２  メモリ、６３  ＨＤＤ、６４  通信インタフェース、１００  第１計算機、２００  第２計算機、３００  第３計算機。
【図１】
2014106785.tif 000003
【図２】
2014106785.tif 000004
【図３】
2014106785.tif 000005
【図４】
2014106785.tif 000006
【図５】
2014106785.tif 000007
【図６】
2014106785.tif 000008
【図７】
2014106785.tif 000009
【図８】
2014106785.tif 000010
【図９】
2014106785.tif 000011
【図１０】
2014106785.tif 000012