JP5416490B2 - 分散データ管理システム、データ管理装置、データ管理方法、およびプログラム - Google Patents

分散データ管理システム、データ管理装置、データ管理方法、およびプログラム Download PDF

Info

Publication number
JP5416490B2
JP5416490B2 JP2009144727A JP2009144727A JP5416490B2 JP 5416490 B2 JP5416490 B2 JP 5416490B2 JP 2009144727 A JP2009144727 A JP 2009144727A JP 2009144727 A JP2009144727 A JP 2009144727A JP 5416490 B2 JP5416490 B2 JP 5416490B2
Authority
JP
Japan
Prior art keywords
agenda
master
data management
content
storage unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009144727A
Other languages
English (en)
Other versions
JP2011002970A (ja
Inventor
大子郎 横関
正圭 韓
美樹 境
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2009144727A priority Critical patent/JP5416490B2/ja
Publication of JP2011002970A publication Critical patent/JP2011002970A/ja
Application granted granted Critical
Publication of JP5416490B2 publication Critical patent/JP5416490B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、複数のデータ管理装置によって構成され、1台がマスタ、残りのデータ管理装置がマスタと同じデータの状態を保持するレプリカとして動作する分散データ管理システムにおいて、マルチマスタ(複数のマスタが存在する)状態になったときに、新しく選定されたマスタからの情報に基づいて、すべてのデータ管理装置のデータを同じ状態に保持させる技術に関する。
複数のデータ管理装置の中からマスタを1台選定する手法、または、データ管理装置の保持するデータの状態を同じに揃える手法として、分散調停プロトコルがある。分散調停プロトコルとして、例えば、データベースやファイルシステムに用いられるPAXOSのアルゴリズムが知られている(非特許文献1参照)。PAXOSのアルゴリズムを実用に供する場合、ユーザからデータの更新や参照のためにアクセスされるデータ管理装置を1台決定しておき、それをマスタと呼び、マスタ以外のデータ管理装置をレプリカとすることが、一般的に行われている。なお、マスタは、ユーザの処理要求(データの更新または参照に係る要求)を受け付けるとともに、その処理要求に対して応答する。そして、マスタは、マスタにおいて実行されたデータの更新時に用いた更新差分情報をレプリカに送信して、マスタのデータとレプリカのデータとを同じ状態にする。
L. Lamport,"The part-time parliament",ACM Transactions on Computer System(TOCS),Vol.16,Issue 2,1998年5月,p.133-169
前記したように、PAXOSのアルゴリズムを用いることによって、マスタまたはネットワークに障害が発生したときに、レプリカの中から新しいマスタを選定することができる。例えば、レプリカが新しいマスタの設定を開始するトリガは、マスタから一定周期で出力される自身の生存を示すリースパケットを、レプリカがリースタイム時間以内に受信できなくなったときである。しかし、マスタが正常に動作していても、例えば、ネットワークに障害が発生した場合には、レプリカがリースパケットを受信できないことがある。そして、新しいマスタが選定された後にネットワークが正常に戻った場合、マスタが2つ存在すること(マルチマスタ状態)になってしまう可能性がある。そして、2つのマスタからレプリカに対してデータの更新が実行された場合、2つのマスタから送信された更新差分情報のうち、どちらが先に取得されるかによって、データの状態の整合性が損なわれるという問題が発生する。
そこで、本発明の課題は、前記した問題を解決するために、複数のデータ管理装置によって構成され、1台がマスタ、残りのデータ管理装置がマスタと同じデータの状態を保持するレプリカとして動作する分散データ管理システムにおいて、データ管理装置間を接続するネットワークに障害が発生してマルチマスタ状態になったときに、新しく選定されたマスタからの情報に基づいて、すべてのデータ管理装置のデータを同じ状態に維持させる技術を提供することを目的とする。
前記課題を解決するために、本発明は、複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムであって、各前記データ管理装置が、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部を備えており、前記レプリカが、新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理部と、前記議題内容を作成する議題内容作成部と、前記議題内容作成部によって新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理部と、前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理部と、を備え、前記新しいマスタに選定されたレプリカ以外のデータ管理装置が、前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理部と、受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号より小さい場合、受信した前記情報に対する否定の応答を前記新しいマスタに選定されたレプリカに返信する、または、受信した前記情報を破棄する否定処理部と、を備えることを特徴とする。
また、本発明は、複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムであって、各前記データ管理装置が、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部を備えており、前記レプリカが、新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理部と、前記議題内容を作成する議題内容作成部と、前記議題内容作成部によって新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理部と、前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理部と、を備え、前記新しいマスタに選定されたレプリカ以外のデータ管理装置が、前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理部と、受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号に等しい場合、受信した前記情報に含まれる議題番号と前記記憶部に記憶される議題番号とを比較し、受信した前記情報に含まれる議題番号が前記記憶部に記憶される議題番号以下のとき、受信した前記情報に含まれる議題番号と議題内容とを記憶する更新処理部、および受信した前記情報に含まれる議題番号が前記記憶部に記憶される議題番号より大きいとき、前記記憶部において前記受信した前記情報に含まれる議題番号より小さい範囲の議題番号の中で欠番の議題番号に関連付けられた議題内容の再送を前記新しいマスタに選定されたレプリカに要求する再送要求処理部と、を備えることを特徴とする。
また、本発明は、複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムであって、各前記データ管理装置が、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部を備えており、前記レプリカが、新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理部と、前記議題内容を作成する議題内容作成部と、前記議題内容作成部によって新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理部と、前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理部と、を備え、前記新しいマスタに選定されたレプリカ以外のデータ管理装置が、前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理部と、受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号より大きい場合、受信した前記情報に含まれる前記選定時議題番号より大きい議題番号の議題内容の取得要求である問い合わせ通知を、自身以外のデータ管理装置に送信し、前記自身以外のデータ管理装置から前記問い合わせ通知に対する応答として、前記選定時議題番号より大きい議題番号の議題内容およびその議題内容の議題番号を受信し、当該受信した応答に含まれる議題内容とその議題内容に付けられた議題番号とを前記記憶部に記憶し、前記記憶部に記憶しているマスタ世代番号を受信した前記情報に含まれるマスタ世代番号に更新する補正処理部と、を備えることを特徴とする。
また、本発明は、複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムにおいて用いられるデータ管理装置であって、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部と、自身がレプリカから新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理部と、前記議題内容を作成する議題内容作成部と、前記議題内容作成部によって新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理部と、前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理部と、前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理部と、受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号より小さい場合、受信した前記情報に対する否定の応答を前記新しいマスタに選定されたレプリカに返信する、または、受信した前記情報を破棄する否定処理部と、を備えることを特徴とする。
また、本発明は、複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムにおいて用いられるデータ管理装置であって、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部と、自身がレプリカから新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理部と、前記議題内容を作成する議題内容作成部と、前記議題内容作成部によって新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理部と、前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理部と、前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理部と、受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号に等しい場合、受信した前記情報に含まれる議題番号と前記記憶部に記憶される議題番号とを比較し、受信した前記情報に含まれる議題番号が前記記憶部に記憶される議題番号以下のとき、受信した前記情報に含まれる議題番号と議題内容とを記憶する更新処理部、および受信した前記情報に含まれる議題番号が前記記憶部に記憶される議題番号より大きいとき、前記記憶部において前記受信した前記情報に含まれる議題番号より小さい範囲の議題番号の中で欠番の議題番号に関連付けられた議題内容の再送を前記新しいマスタに選定されたレプリカに要求する再送要求処理部と、を備えることを特徴とする。
また、本発明は、複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムにおいて用いられるデータ管理装置であって、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部と、自身がレプリカから新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理部と、前記議題内容を作成する議題内容作成部と、前記議題内容作成部によって新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理部と、前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理部と、前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理部と、受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号より大きい場合、受信した前記情報に含まれる前記選定時議題番号より大きい議題番号の議題内容の取得要求である問い合わせ通知を、自身以外のデータ管理装置に送信し、前記自身以外のデータ管理装置から前記問い合わせ通知に対する応答として、前記選定時議題番号より大きい議題番号の議題内容およびその議題内容の議題番号を受信し、当該受信した応答に含まれる議題内容とその議題内容に付けられた議題番号とを前記記憶部に記憶し、前記記憶部に記憶しているマスタ世代番号を受信した前記情報に含まれるマスタ世代番号に更新する補正処理部と、を備えることを特徴とする。
複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムにおいて用いられるデータ管理方法であって、各前記データ管理装置が、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部を備えており、前記レプリカが、新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理、前記議題内容を作成する議題内容作成処理、前記議題内容作成処理において新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理、および、前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理、を実行し、前記新しいマスタに選定されたレプリカ以外のデータ管理装置が、前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理、および、受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号より小さい場合、受信した前記情報に対する否定の応答を前記新しいマスタに選定されたレプリカに返信する、または、受信した前記情報を破棄する否定処理、を実行することを特徴とする。
複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムにおいて用いられるデータ管理方法であって、各前記データ管理装置が、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部を備えており、前記レプリカが、新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理、前記議題内容を作成する議題内容作成処理、前記議題内容作成処理において新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理、および、前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理、を実行し、前記新しいマスタに選定されたレプリカ以外のデータ管理装置が、前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理、および、受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号に等しい場合、受信した前記情報に含まれる議題番号と前記記憶部に記憶される議題番号とを比較し、受信した前記情報に含まれる議題番号が前記記憶部に記憶される議題番号以下のとき、受信した前記情報に含まれる議題番号と議題内容とを記憶する更新処理および受信した前記情報に含まれる議題番号が前記記憶部に記憶される議題番号より大きいとき、前記記憶部において前記受信した前記情報に含まれる議題番号より小さい範囲の議題番号の中で欠番の議題番号に関連付けられた議題内容の再送を前記新しいマスタに選定されたレプリカに要求する再送要求処理、を実行することを特徴とする。
複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムにおいて用いられるデータ管理方法であって、各前記データ管理装置が、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部を備えており、前記レプリカが、新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理、前記議題内容を作成する議題内容作成処理、前記議題内容作成処理において新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理、および、前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理、を実行し、前記新しいマスタに選定されたレプリカ以外のデータ管理装置が、前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理、および、受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号より大きい場合、受信した前記情報に含まれる前記選定時議題番号より大きい議題番号の議題内容の取得要求である問い合わせ通知を、自身以外のデータ管理装置に送信し、前記自身以外のデータ管理装置から前記問い合わせ通知に対する応答として、前記選定時議題番号より大きい議題番号の議題内容およびその議題内容の議題番号を受信し、当該受信した応答に含まれる議題内容とその議題内容に付けられた議題番号とを前記記憶部に記憶し、前記記憶部に記憶しているマスタ世代番号を受信した前記情報に含まれるマスタ世代番号に更新する補正処理、を実行することを特徴とする。
このような構成によれば、新しいマスタとその新しいマスタと競合状態にある旧マスタとが双方ともマスタとして動作するマルチマスタ状態では、新しいマスタがレプリカの中から選定された場合には、新しいマスタは、新しいマスタに選定されたときに、記憶部に記憶されたマスタ世代番号を増加するように更新する。そして、新しいマスタが送信する情報に更新されたマスタ世代番号を含めることによって、レプリカは、マスタ世代番号に基づいて、新しいマスタの情報を識別することが可能となる。そのため、レプリカは、新しいマスタのデータ(特許請求の範囲に記載の議題内容)と同じ状態に、自身のデータを揃えることが可能となる。なお、補正処理部は、旧マスタを選定したときの議題番号から新しいマスタを選定したときの議題番号までの議題内容をすべて揃えるために、旧マスタを選定したときの議題内容に付けた議題番号より大きい議題番号の議題内容を取得する取得要求である問い合わせ通知を、自身以外のデータ管理装置に送信する。そして、補正処理部は、自身以外のデータ管理装置から、問い合わせ通知に対する応答として、旧マスタを選定したときの議題内容に付けた議題番号より大きい議題番号の議題内容およびその議題内容の議題番号を受信し、受信した議題番号と議題内容とを記憶部に記憶することによって、少なくとも、新しいマスタが選定される前までの議題番号と議題内容をすべて揃えることができる。
また、本発明は、分散データ管理システムにおいて、前記新しいマスタに選定されたレプリカ以外のデータ管理装置の補正処理部が、前記問い合わせ通知に対する応答に含まれる議題内容とその議題内容に付けられた前記選定時議題番号より大きい議題番号とを前記記憶部に記憶する場合、前記応答に含まれる議題内容と、その議題内容に付けられた前記選定時議題番号より大きい議題番号と同一の議題番号に付けられた、既に前記記憶部に記憶している議題内容とが異なる場合、当該記憶している議題内容を、前記応答に含まれる議題内容で上書きすることを特徴とする。
また、本発明は、データ管理方法において、前記新しいマスタに選定されたレプリカ以外のデータ管理装置が、前記補正処理において、 前記問い合わせ通知に対する応答に含まれる議題内容とその議題内容に付けられた前記選定時議題番号より大きい議題番号とを前記記憶部に記憶する場合、前記応答に含まれる議題内容と、その議題内容に付けられた前記選定時議題番号より大きい議題番号と同一の議題番号に付けられた、既に前記記憶部に記憶している議題内容とが異なる場合、当該記憶している議題内容を、前記応答に含まれる議題内容で上書きすることを特徴とする。
このような構成によれば、補正処理において、同一の議題番号について、記憶部に記憶している議題内容と応答に含まれる議題内容とが異なる場合に、記憶している議題内容を、応答に含まれる議題内容で上書きすることによって、すべてのデータ管理装置のデータを揃えることが可能となる。
本発明は、前記データ管理方法を、コンピュータとしてのデータ管理装置に実行させるためのプログラムとした。
このようなプログラムをインストールされたコンピュータは、このプログラムに基づいた機能を実現することができる。
本発明によれば、複数のデータ管理装置によって構成され、1台がマスタ、残りのデータ管理装置がマスタと同じデータの状態を保持するレプリカとして動作する分散データ管理システムにおいて、マルチマスタ状態になったときに、新しく選定されたマスタからの情報に基づいて、すべてのデータ管理装置のデータを同じ状態に維持させる技術を提供することができる。
分散データベースシステムの構成を示す図である。 本実施形態の概要を示す図である。 本実施形態におけるデータベース装置の構成および機能を示す図である。 レプリカにおけるマスタ選定処理の流れを示す図である。 レプリカにおける処理の流れを示す図である。 補正処理の流れを示す図である。
次に、本発明を実施するための形態(以降「本実施形態」と称す)について、適宜図面を参照しながら詳細に説明する。なお、本実施形態は、データベースシステムやファイルシステムに同様に適用することができる。以下、本実施形態では、データベースシステムの場合について説明する。
(分散データベースシステム)
本実施形態における分散データベースシステム1は、図1に示すように、例えば、5台のデータベース装置10(10A,10B,10C,10D,10E)とクライアント端末20とが、ネットワーク30を介して、通信可能に接続されている。なお、図1では、データベース装置10は5台記載しているが、3台以上であれば5台以外でも構わない。また、クライアント端末20は、図1では1台しか記載されていないが、2台以上であっても構わない。なお、データベース装置10は、特許請求の範囲に記載したデータ管理装置である。
データベース装置10は、クライアント端末20からデータベースの更新や参照のための処理要求を受け付けて、その処理要求に応答する1台を決定しておき、以降では、それをマスタと呼び、マスタ以外のデータベース装置10をレプリカと呼ぶ。図1では、マスタは、データベース装置10Aであり、クライアント端末20との間で処理要求およびその処理要求に対する応答を送受信する。そして、データベース装置10B,10C,10D,10Eは、レプリカとして、レプリカのデータベースをマスタのデータベースと同じ状態に維持するために、データベース同期のための情報をマスタ(データベース装置10A)との間で送受信する。レプリカの各データベース装置10B,10C,10D,10Eは、マスタに障害が発生したと判定したとき、新しいマスタに選定されるための調停(複数のレプリカの中から1つをマスタに選ぶこと)を開始する。なお、マスタとレプリカとの関係を構成するデータベース装置10の集合をセルと呼び、このセルを単位として調停が実行される。また、データベース装置10は、電源投入時には、レプリカとして起動され、調停結果に基づいて、マスタまたはレプリカに決定される。
データベース装置10は、例えば、計算機やPC(Personal Computer)であって、汎用のOS(Operating System)と、データベースやファイルシステム等のデータ管理のためのプログラムおよび送受した情報を記憶する記憶部とを備えている。クライアント端末20は、例えば、PCであって、ユーザからの指示をマスタに送信し、その指示に対する応答を、図示しない出力装置等に出力する。また、ネットワーク30は、インターネットまたはローカルエリアネットワークである。なお、ファイルシステムの場合には、データベース装置10が記憶装置に相当し、ネットワーク30が各記憶装置を接続するバスに相当する。
≪概要≫
始めに、本実施形態の概要について、図2を用いて説明する。図2において、縦方向の下に向かって時間が経過するものとする。そして、5台のデータベース装置10A,10B,10C,10D,10Eの中、データベース装置10Aがマスタとして動作し、残りの4台のデータベース装置10B,10C,10D,10Eがレプリカとして動作しているものとする。ここで、データベース装置10A,10Bとデータベース10C,10D,10Eとの間で、ネットワーク30が分断したものとする。なお、以降の説明では、データベース装置10Aをマスタ、データベース装置10B,10C,10D,10EをそれぞれレプリカR1,R2,R3,R4と称することもある。
マスタは、リースタイムと呼ぶ期間以内に定期的に、自身の生存を示すリースパケットを全レプリカに送信している。レプリカは、リースタイム時間以内に、マスタの送信するリースパケットを受信できなかった場合、分散調停プロトコルを用いて、新たなマスタを選定するためのマスタ調停を開始する。なお、図2では、レプリカR4がマスタ調停を開始して、他のデータベース装置10に対して、データの複製を実行する一例について説明する。
本実施形態における分散調停プロトコルでは、マスタ調停のための調停項目やデータの複製のための調停項目を議題と呼んでいる。そして、議題(議題内容)は、議題番号と共に送信される。なお、議題番号は、セル内でユニークであり、大小比較が可能であり、各データベース装置10が次の議題を送信するときに、増加して用いられる。また、マスタおよびレプリカは、「新たにマスタが選定され、かつ、その新たに選定されたマスタが旧マスタと異なる場合」に増加する番号(以降、マスタ世代番号と称す)を保持しており、図2では、当初、マスタ世代番号が「200」であるものとする。
図2に示すように、レプリカR4は、ネットワーク分断によって、リースタイム時間以内に、マスタの送信するリースパケットを受信できなかった場合、分散調停プロトコルを用いて、新しいマスタを選定するためのマスタ調停を開始する。マスタ調停では、議題を提案できる提案者を選定するPrepareフェーズ(第1のフェーズ)、提案者が議題を提案するProposeフェーズ(第2のフェーズ)、および決定結果を通知するCommitフェーズ(第3のフェーズ)が実行される。なお、各フェーズで用いられるPrepareメッセージ、Proposeメッセージ、Commitメッセージは、一例としてPAXOSでは、Prepare(i,n,v)、Propose(i,n,v)、Commit(i,n,v)として表記される。なお、iは議題番号、nは優先度、vは議題内容を表しており、PAXOS等のアルゴリズムに準拠して決定されるものとする。優先度nは、各データベース装置に予め定めらた優先度であって、セル内でユニークであり、大小比較が可能で、常に、どのデータベース装置が優先されるかの判定に用いられる。本実施形態では、課題を解決するために、変数として、マスタ世代番号gおよびマスタが選定されたときの議題番号(マスタを選定したときの議題内容に付けられた議題番号)fを新たに追加し、Prepare(g,i,f,n,v)、Propose(g,i,f,n,v)、Commit(g,i,f,n,v)のようにして用いる。マスタが選定されたときの議題番号fは、後記するように第2のフェーズで新しいマスタが決定された後、第3のフェーズでその決定結果を通知するCommitメッセージの議題番号である。そして、マスタが選定されたときの議題番号fは、後記するように、新しいマスタが選定されたときに、レプリカが既に旧マスタからメッセージを受信してそのメッセージに対応する処理を実行してしまっている場合に、旧マスタを選定したときの議題番号に対応する処理の状態に戻す(アンドゥする)ために用いられる。なお、以降の説明では、説明に必要な変数(g,i,f,n,vのいずれか)のみを表記し、説明に不要な変数を省略することとする。
第1のフェーズ(Prepareフェーズ)では、PAXOS等のアルゴリズムに準拠するように、レプリカR4は、Prepare(n)(準備通知)をレプリカR4以外の他のデータベース装置10(以降、単に「他のデータベース装置10」と称する)に送信する。他のデータベース装置10は、Prepare(n)を受信したとき、その受信時以前にPrepare(n)を受信していない場合、または、nが過去に受信したPrepare(n’)の優先度n’以上の場合、PrepareACK(n)(確認通知)を返信する。また、他のデータベース装置10は、Prepare(n)を受信したとき、優先度nが優先度n’より小さい場合、Prepare(n)を棄却(無視)する、または否定応答PrepareNACKを返信する。なお、他のデータベース装置10は、既に第2のフェーズのProposeACKを返信済みの過程まで進んでいた場合、「議題内容vは既に決定しているので、この議題内容で提案せよ」というPrepareNACK(n,v)を返信する。さらに、他のデータベース装置10は、既に第3のフェーズのCommitACKを返信済みの過程まで進んでいた場合、決定済みの議題内容vを含むCommitACK(n,v)を返信する。そして、レプリカR4は、自身を含む過半数のデータベース装置からPrepareACKを受信できたとき、提案者として選定されたことになり、第2のフェーズの処理を開始する。図2では、レプリカR4は、自身を含む過半数のデータベース装置10(10C,10D、10E)からPrepareACKを受信している。
第2のフェーズ(Proposeフェーズ)では、PAXOS等のアルゴリズムに準拠するように、レプリカR4は、議題内容vを提案するPropose(n,v)(提案通知)を他のデータベース装置10に送信する。他のデータベース装置10は、Propose(n,v)を受信したとき、その受信時以前にPropose(n,v)を受信していない場合、または、優先度nが過去に受信したPropose(n’)の優先度n’以上の場合、ProposeACK(確認通知)を返信する。また、他のデータベース装置10は、優先度nが優先度n’より小さい場合、Proposeを棄却(無視)する、またはProposeNACK(否定応答)を返信する。レプリカR4は、自身を含め過半数のデータベース装置10からProposeACKを受信できたとき、議題内容vは確定したことになり第3のフェーズの処理を開始する。なお、この時点で、レプリカR4は、新しいマスタとして選定されたことが保証(決定)される。そして、レプリカR4は、「新たにマスタが選定され、かつ、その新たに選定されたマスタが旧マスタと異なる場合」に該当するため、マスタ世代番号を、それまでのマスタ世代番号「200」に「1」を増加して、「201」とする。仮に、新たにマスタに設定されたデータベース装置10が、旧マスタと同じであれば、マスタ世代番号は変更しないものとする。
第3のフェーズ(Commitフェーズ)では、レプリカR4は、Proposeによって提案された議題内容vの決定結果を通知するCommit(n,v)(結果通知)を他のデータベース装置10に送信する。なお、マスタ調停におけるCommitには、マスタ世代番号(図2では、「201」)が重畳される。他のデータベース装置10は、Commit(n,v)を受信し、マスタ世代番号を更新し、CommitACK(n,v)を返信する。図2では、レプリカR4は、自身を含め過半数のデータベース装置10からCommitACKを受信できたため、マスタとして設定され、クライアント端末20から処理要求の受付を開始する。このようにして、分散調停プロトコルは、第1〜第3のフェーズを実行する。
そして、この時点で、ネットワークの分断が解消したものとする。この時点とは、例えば、旧マスタはレプリカからリースパケットに対する応答が戻ってこないことによってネットワークの分断を検知することが可能であるが、そのリースパケットに対する応答を受け取る前までの期間内のことである。そして、旧マスタ(データベース装置10A)からのProposeを用いた議題番号「100」の提案通知(複製要求)については、(マスタ世代番号g,議題番号i)=(200,100)が送信情報に格納されて、全レプリカに向けて送信される。また、新しいマスタ(レプリカR4)からのProposeを用いた議題番号「100」の提案通知(複製要求)については、送信情報に(マスタ世代番号g,議題番号i)=(201,100)が格納されて、他のデータベース装置10に送信される。すなわち、旧マスタと新しいマスタとが、双方ともマスタとして動作するマルチマスタ状態となる。
そして、レプリカR3は、新しいマスタからの送信情報を、旧マスタからの送信情報より先に受信している。そこで、後に受信した送信情報のマスタ世代番号gが、先に受信したマスタ世代番号g’より小さい場合には、後に受信した旧マスタからの送信情報を破棄する。また、レプリカR2は、新しいマスタからの送信情報を、旧マスタからの送信情報より後に受信している。そこで、後に受信した送信情報のマスタ世代番号gが、先に受信したマスタ世代番号g’より大きい場合には、先に受信した旧マスタからの送信情報に基づいて記憶した情報を、その情報を記憶する直前の状態に戻し(アンドゥし)、後に受信した新しいマスタからの送信情報を上書きする。以上、説明したように、自分を含む過半数のデータベース装置10からProposeACKを受信した時点で、マスタ世代番号gを、「新たにマスタが選定され、かつ、その新たに選定されたマスタが旧マスタと異なる場合」に増加することによって、マルチマスタ状態になったときに、新しく選定されたマスタからの情報に基づいて、すべてのデータベース装置10のデータベースを同じ状態に維持させることができる。
(本実施形態のデータベース装置)
次に、データベース装置10(10A,10B,10C,10D,10E)の構成および機能について、図3を用いて説明する。図3に示すように、各データベース装置10は、処理部11および記憶部14を備える。処理部11は、コンピュータのCPU(Central Processing Unit)とメインメモリとで構成され、記憶部14に格納されているアプリケーションプログラムをメインメモリに展開して、各機能を具現化する。そして、処理部11は、図示しない通信部を介して、クライアント端末20(図1参照)からの処理要求を受け付け、その処理要求に対する応答を返信する。記憶部14は、キャッシュメモリや二次記憶部等で構成され、各種プログラムや処理部11の演算結果やデータベース装置10間で送受信したメッセージを記憶する。
処理部11は、図3に示すように、分散調停プロトコルの処理を実行する分散調停プロトコル処理部12とマスタ世代番号に係る処理を実行するマスタ世代番号処理部13とを備える。分散調停プロトコル処理部12は、運転状態管理部121、基本処理部122、ブロック管理部123、ログ管理部124、および議題管理部125を備える。
運転状態管理部121は、データベース装置10の運転状態を管理するモジュールである。運転状態としては、「マスタ動作」、「レプリカ動作」、「それ以外(例えば、調停前、調停中)」等がある。基本処理部122は、データベースを管理するために、処理部11の各部121〜125間の連携制御を司る。
ブロック管理部123は、データベースで管理するテーブルやテーブル内のレコードの内容を固定長のデータ断片(ブロック)として複数管理するモジュールである。ブロックの数は可変である。ブロック管理部123は、ブロックの更新完了時に、そのブロックを非同期に記憶部14の二次記憶部に永続化する。さらに、ブロック管理部123は、データベースの検索処理や更新処理の高速化のために、キャッシュメモリにもブロックを記憶する。
ログ管理部124は、マスタで発生した事象のログを、記憶部14に同期的に永続化するモジュールである。ログ管理部124は、本実施形態では、特に、分散調停プロトコルの各議題の結果を記憶部14に記憶する。また、ログ管理部124は、議題番号i、マスタ世代番号g、ログ種別、更新差分個数、および更新差分エントリに係るログを記憶部14に記憶し、また記憶部14からそれらのログを読み出す。なお、ログとは、議題内容を含むメッセージのことである。例えば、ログ管理部124は、コミットログを永続化先(記憶部14または他のデータベース装置10)に追記し、また議題番号をキーとして、その議題番号に対応するコミットログを取得する。ここで、議題番号iは、新規議題を開始するときに発行される識別子であり、同値判定、大小比較が可能である。マスタ世代番号gは、「新たにマスタが選定され、かつ、その新たに選定されたマスタが旧マスタと異なる場合」に増加される。そして、分散調停プロトコルでは、マスタ世代番号gと議題番号iとが組み合わされて、一意な識別子として用いられる。ログ種別は、ログの種類を識別する情報である。更新差分個数は、あるトランザクション内で更新されたブロックの更新回数である。
更新差分エントリは、更新ブロック識別子、ブロック内オフセット値、更新前イメージ、および更新後イメージを格納している。更新ブロック識別子は、どのブロックが更新されたかを示すブロック識別子である。ブロック内オフセット値は、ブロック内のどの位置が更新されたかを示すブロック内の位置である。更新前イメージは、ブロックを更新前の情報に戻すための情報である。また、更新後イメージは、ブロックを更新後の状態に変更するための情報である。なお、更新前イメージおよび更新後イメージは、ブロックのバイナリイメージのような物理形式で表現したり、関数や操作のような論理形式で表現されたりする。そして、更新前イメージをブロックに適用すると、ブロックが更新前の状態に戻り(ロールバック)、更新後イメージをブロックに適用すると、ブロックが更新後の状態に変更される(コミット)。したがって、ブロックのコミットログ(更新差分情報)を他のデータベース装置10に適用すれば、他のデータベース装置10に、テーブルの複製を作成することができる。
議題管理部125は、議題調停部126を管理し、複数の議題を管理するモジュールである。議題管理部125は、最新のマスタ世代番号と、議題番号を保持する。議題調停部126は、分散調停プロトコルのプロトコルスタックである。例えば、議題の議題内容vをマスタのIPアドレスとした場合、マスタの選定に用いることができ、議題内容vをコミットログとした場合、唯一のコミットログの確定に用いることができる。議題調停に用いるメッセージとしては、議題を提案できる提案者を選定する第1のフェーズで用いるPrepare(g,i,f,n,v)、提案者が議題を提案する第2のフェーズで用いるPropose(g,i,f,n,v)、決定結果を通知する第3のフェーズで用いるCommit(g,i,f,n,v)、および調停済みの結果を取得するために用いるLearn(g,i,f)がある。ただし、gはマスタ世代番号、iは議題番号、fは新しいマスタが選定されたときの議題番号、nは優先度、vは議題内容を表す。なお、Learn(i)は、議題番号iを指定して、その議題番号iに対応する調停済みの結果Commit(n,v)を取得するメッセージである。
マスタ世代番号処理部13は、マスタ世代番号更新処理部131、送信処理部132、比較処理部133、否定処理部134、更新処理部135、再送要求処理部136、および補正処理部137を備える。
マスタ世代番号更新処理部131は、レプリカが新しいマスタに選定されたときに、記憶部14に記憶されたマスタ世代番号を増加するように更新する。送信処理部132は、Prepareメッセージ、Proposeメッセージ、Commitメッセージを送信する。
比較処理部133は、新しいマスタから受信したメッセージに含まれるマスタ世代番号と、記憶部14に記憶されるマスタ世代番号とを比較する。否定処理部134は、受信したメッセージに対する否定の応答を新しいマスタに返信する、または、受信したメッセージを破棄する。更新処理部135は、受信したメッセージに含まれる議題番号と記憶部14に記憶される議題番号とを比較した結果に基づいて、受信したメッセージに含まれる議題番号が記憶部14に記憶される議題番号以下のとき、受信したメッセージに含まれる議題番号と議題内容とを記憶する。再送要求処理部136は、受信したメッセージに含まれる議題番号と記憶部14に記憶される議題番号とを比較した結果に基づいて、受信したメッセージに含まれる議題番号が記憶部14に記憶される議題番号より大きいとき、記憶部14において受信したメッセージに含まれる議題番号より小さい範囲の議題番号の中で欠番の議題番号に関連付けられた議題内容の再送を新しいマスタに要求する。
補正処理部137は、受信したメッセージに含まれるマスタを選定したときの議題内容に付けた議題番号より、大きい議題番号の議題内容の取得要求である問い合わせ通知を、自身以外のデータ管理装置に送信する。また、補正処理部137は、自身以外のデータ管理装置から、問い合わせ通知に対する応答として、マスタを選定したときの議題内容に付けた議題番号より大きい議題番号の議題内容およびその議題内容の議題番号を受信し、当該受信した応答に含まれる議題内容とその議題内容に付けられた議題番号とを記憶部14に記憶し、記憶部14に記憶しているマスタ世代番号を受信したメッセージに含まれるマスタ世代番号に更新する。
(レプリカにおけるマスタ選定処理)
次に、本実施形態のレプリカにおけるマスタ選定処理の流れについて、図4を用いて説明する(適宜図3参照)。なお、本実施形態では、マスタ調停は、分散調停プロトコルの第1〜第3のフェーズ(Prepare/Propose/Commit)を用いて実行する。
レプリカは、マスタが送信するリースパケットを所定時間(リースタイム時間)以内に受信できなくなったとき、自らマスタ調停を開始する。ステップS401では、レプリカは、タイマを設定し、タイマ識別子を取得する。具体的には、受信したリースパケットの時刻からリースタイム時間のタイムアウトとなるマスタリースタイムアウト時刻を取得し、タイマにマスタリースタイムアウト時刻後にタイムアウト通知を送信するよう設定し、そのタイマ値を識別するタイマ識別子を取得する。
ステップS402では、レプリカは、イベント(次のリースパケットまたはタイムアウト通知)を受信するまで待機するイベント待機の状態になる。すなわち、レプリカは、イベントを受信するまで待機し、イベントを受信した場合に、次のステップS403へ処理を進める。ステップS403では、レプリカは、リースパケットを受信したか否かを判定する。リースパケットを受信した場合(ステップS403でYes)、ステップS404では、レプリカは、タイマ識別子で示されるタイマ値を新たなマスタリースタイムアウト時刻に延長する。そして、処理はステップS402へ戻って、レプリカは、再びイベント待機の状態になる。
ステップS403においてリースパケットを受信しなかった場合(ステップS403でNo)、すなわち、タイムアウト通知を受信した場合、ステップS405では、レプリカは、マスタ調停を開始する、すなわち前記した分散調停プロトコルの第1のフェーズを実行する。具体的には、議題管理部125が新規議題を発行する。そして、議題管理部125は、議題種別を「マスタ選定」に設定し、議題調停部126を介して、Prepare(g,i,v)を他のレプリカに送信する。なお、議題内容vは自身のアドレスである。
ステップS406で、レプリカは、自身を含む過半数のPrepareACKを受信したか否かを判定する。過半数のPrepareACKを受信した場合(ステップS406でYes)、ステップS407では、レプリカは、第2のフェーズをPAXOS等のアルゴリズムに準拠して実行する。ステップS408では、レプリカは、自身を含む過半数のProposeACKを受信したか否かを判定する。過半数のProposeACKを受信した場合(ステップS408でYes)、ステップS409では、レプリカのマスタ世代番号更新処理部131(図3参照)は、新しいマスタに選定されるので、記憶部14に記憶されたマスタ世代番号を増加するように、マスタ世代番号を設定(更新)し、第3のフェーズを実行する。具体的には、レプリカは、受信した過半数のProposeACKに含まれる議題内容vが自身のアドレスであった場合、マスタに選定されたことを保証される。そして、レプリカは、記憶部14に記憶されているマスタ世代番号gを、「新たにマスタが選定され、かつ、その新たに選定されたマスタが旧マスタと異なる場合」に増加する。次に、レプリカは、Commitメッセージにマスタ世代番号gと自身のアドレスとを含めて、他のデータベース装置10に送信する。なお、運転状態管理部121は、受信した議題内容vが自身のアドレスであるかないかに関わらず、新しいマスタのアドレス(ProposeACKに含まれる議題内容v)を、マスタアドレスに設定する。
ステップS410では、レプリカは、自身を含む過半数のCommitACKを受信したか否かを判定する。過半数のCommitACKを受信した場合(ステップS410でYes)、ステップS411では、レプリカは、マスタとしての動作を開始する。具体的には、議題調停部126がCommitACKを自身を含め過半数のデータベース装置10から受信したことによって、レプリカは、自身をマスタとして設定する。すなわち、運転状態管理部121は、運転状態を「マスタ」に設定する。なお、このステップS410の時点において、運転状態管理部121は、受信した議題内容vが自身のアドレスであるかないかに関わらず、新しいマスタのアドレス(ProposeACKに含まれる議題内容v)をマスタアドレスに設定する処理を、前記ステップS409における同様の処理の代わりに実行しても良い。そして、マスタ選定処理は終了する。なお、ステップS406でNoの場合、ステップS408でNoの場合、またはステップS410でNoの場合、処理はステップS401へ戻る。
(マスタによるデータの複製処理)
次に、マスタによるデータの複製処理について、マスタが自身の二次記憶部にデータを複製する場合およびマスタがレプリカにデータを複製する場合について説明する(適宜図1,3参照)。
まず、マスタが自身の二次記憶部にデータを複製する場合について説明する。マスタは、クライアント端末20からトランザクションの開始要求、参照要求、更新要求、トランザクションの終了要求を受け付ける。そして、マスタは、その要求の内容の構文解析を行い、指定されたテーブルを参照して、指定されたレコードをインデクス検索によって抽出し、最終的に要求に対応するブロックの位置を特定する。更新要求の場合、マスタは、トランザクション内では仮更新を行って、トランザクションの完了時(コミット時)に、ログ管理部124を介して二次記憶装置への複製を実行する。そして、マスタは、その複製が成功した場合に、ブロックの実更新を行い、ロックの解放を行う。なお、トランザクション完了時には、更新ブロック一覧と各更新ブロックの更新前イメージ、更新後イメージが生成される。
次に、マスタがレプリカにデータを複製する場合について説明する。議題管理部125は、新規の複製を実行するために、新規の議題を発行する。次に、ログ管理部124は、ログイメージを作成する。そして、議題調停部126は、複製の調停を開始する。なお、本実施形態では、第2のフェーズ(Proposeフェーズ)のみを用いて実行される。したがって、議題調停部126は、Propose(g,i,v)をレプリカに送信する。ここで、gはマスタ世代番号、iは議題番号、vはログイメージである。
議題調停部126は、自身を含め過半数のProposeACKを受信した場合、議題が決定したことをログ管理部124に通知する。ログ管理部124は、議題調停部126からの通知を受信すると、トランザクションコミット成功(ログ書込み成功)と判定して、その判定結果を基本処理部122に通知する。そして、基本処理部122は、通知を受信すると、トランザクションコミット成功をクライアント端末20に送信し、トランザクション処理が完結する。
なお、マスタが、所定時間内に、自身を含め過半数のデータベース装置10からProposeACKを受信できなかった場合、議題調停部126は、ログ管理部124に、議題を決定できなかったことを通知する。そして、マスタは、ダウンする、または、トランザクションの状態が不安定であることをクライアント端末20に返信する。
(レプリカにおける処理)
レプリカにおける処理の流れについて、図5を用いて説明する(適宜図3参照)。なお、レプリカは、受信したマスタ世代番号および受信した議題番号を記憶部14に記憶しているが、以降の説明では、記憶部14に記憶している中で最大のマスタ世代番号gを「記憶部で最大のマスタ世代番号gm」、および記憶部14に記憶している中で最大の議題番号iを「記憶部で最大の議題番号im」と称す。
図5に示す処理の流れは、レプリカがPrepareメッセージ、Proposeメッセージ、Commitメッセージを受信(ログ受信)した場合を表している。ここでは、レプリカが、マスタからPropose(g,i,f,n,v)を受信した場合について説明する。なお、gはマスタ世代番号、iは議題番号、fは新しいマスタが選定されたときの議題番号、nは優先度、vは議題内容である。ステップS501では、レプリカの比較処理部133は、受信したマスタ世代番号gと記憶部で最大のマスタ世代番号gmとの大小を比較する。受信したマスタ世代番号gと記憶部で最大のマスタ世代番号gmとが等しい(g=gm)場合、ステップS502では、レプリカは、メッセージがProposeか否かを判定する。
メッセージがProposeである場合(ステップS502でYes)、ステップS503では、レプリカの更新処理部135は、受信した議題番号iと記憶部で最大の議題番号imとを比較する。受信した議題番号iが記憶部で最大の議題番号im以下(i≦im)の場合、ステップS504では、レプリカの更新処理部135は、ログ出力を実行する、すなわち、コミットログを二次記憶部に書き込む。そして、ステップS505では、レプリカの更新処理部135は、ブロック更新を実行して、Proposeの結果が永続化される。ステップS506では、レプリカは、マスタに対して分散調停プログラムを用いた応答を実行する。具体的には、前記したように、レプリカは、PAXOS等のアルゴリズムに準拠して、過去にPropose(n,v)を受信していない場合、または、優先度nが過去に受信したPropose(n’)の優先度n’以上の場合、ProposeACK(確認通知)を返信し、優先度nが優先度n’より小さい場合、受信したProposeを棄却(無視)する、またはProposeNACK(否定応答)を返信する。そして、処理はステップS501へ戻り、次のログを受信するまで待機する。
ステップS501で、受信したマスタ世代番号gが記憶部で最大のマスタ世代番号gmより大きい(g>gm)場合、ステップS507では、レプリカは、補正処理を実行する。なお、この補正処理の詳細については後記する。また、ステップS501において、受信したマスタ世代番号gが記憶部で最大のマスタ世代番号gmより小さい(g<gm)場合、ステップS508では、レプリカの否定処理部134は、否定応答を実行する。具体的には、レプリカの否定処理部134は、ProposeNACKを返信する、または、Proposeを棄却(無視)しても良い。そして、ステップS508の後、処理はステップS501へ戻る。
また、ステップS502において、メッセージがProposeでない場合(ステップS502でNo)、ステップS509では、レプリカは、分散調停プログラムを用いた応答を実行する。具体的には、レプリカは、受信したPrepareに対しては、前記した第1のフェーズにおける応答を実行する。また、受信したCommitに対しては、前記した第3のフェーズにおける応答を実行する。そして、ステップS509の後、処理はステップS501へ戻り、次のログを受信するまで待機する。
また、ステップS503において、受信した議題番号iが記憶部で最大の議題番号imより大きい場合(ステップS503でi>im)、ステップS510では、レプリカの再送要求処理部136は、再送要求を実行する。なお、受信した議題番号iが記憶部で最大の議題番号imより大きくなる場合とは、ネットワーク30内の輻輳等によって、到着するメッセージの順番(すなわち、議題番号)が入れ替わる場合のことである。また、再送要求は、具体的には、議題番号iの飛び番号を発見したときに、抜けている議題番号iの議題内容の再送を、PrepareメッセージまたはLearnメッセージを用いて要求するものである。そして、ステップS510の後、処理はステップS501へ戻り、次のログを受信するまで待機する。
次に、補正処理部137(図3参照)が実行する補正処理の詳細について、図6を用いて説明する(適宜図3参照)。ステップS601では、レプリカは、新しいマスタが選定される前の旧マスタから議題内容を補充するために、受信したメッセージに含まれる、マスタ(旧マスタ)が選定された時の議題番号fを開始番号として、j=開始番号+1を演算し、その結果jを議題番号とする。ステップS602では、レプリカは、Learn(j)を自身以外のデータベース装置10に送信する。Learn(j)は、議題番号jを指定して、その議題番号jに対応する調停済みの結果(例えば、Commit(n,v))を取得するメッセージである。なお、本実施形態では、複製処理の場合には、Proposeメッセージしか用いられないが、自身を含め過半数のProposeACKを受信した場合、議題内容iが決定したことになるので、実質的に、調停済みの結果がレプリカに記憶されていることになる。つまり、Learn()によって、その調停済みの結果が取得される。ステップS603では、レプリカは、値v(議題番号jの議題内容)を取得できたか否かを判定する。
値を取得できた場合(ステップS603でYes)、ステップS604では、レプリカは、議題番号jの議題内容が自分のログにあるか否かを判定する。議題番号jの議題内容が自分のログにある場合(ステップS604でYes)、レプリカは、議題番号jの議題内容と自分のログの議題内容が同一か否かを判定する。議題番号jの議題内容と自分のログの議題内容が同一である場合(ステップS605でYes)、レプリカは、議題番号jを1増加して(j=j+1)、ステップS602の処理に戻る。
ステップS604において、議題番号jの議題内容が自分のログにない場合(ステップS604でNo)、レプリカは、取得した値を用いて、ログ出力を行い、ブロック更新し(ステップS607,S608)、処理をステップS609へ進める。また、ステップS605において、議題番号jの議題内容と自分のログの議題内容が同一でない場合(ステップS605でNo)、レプリカは、アンドゥを実行し(ステップS606)、処理をステップS607へ進める。なお、「アンドゥ」は、該当する議題番号jの議題内容を更新前イメージを用いて書き戻すことを意味する。また、ステップS603において、値を取得できなかった場合(ステップS603でNo)、ステップS610では、レプリカは、マスタ世代番号を受信したマスタ世代番号に更新する。
(実施例)
図2を具体例として、レプリカR2,R3,R4(データベース装置10C,10D,10E)における本実施形態の処理の流れを説明する(適宜図4,図5、図6参照)。レプリカR2,R3,R4は、議題番号「98」まで調停済みであり、マスタ(データベース装置10A)のマスタ世代番号が「200」であるものとする。図4に示すように、レプリカR4は、ネットワーク30の分断にともなって、マスタからのリースパケットをリースタイム時間以内に受信できなかったため、マスタ調停を開始する。第1のフェーズ(Prepareフェーズ)では、レプリカR4は、新規議題番号「99」を発行し、Prepare(g,i,n,v)をすべてのデータベース装置10に送信する。レプリカR2,R3は、図5に示すステップS501では、受信したマスタ世代番号gと記憶部で最大のマスタ世代番号gmとが等しいので、ステップS502で分散調停プロトコルを用いた応答PrepareACKを、レプリカR4へ返信する。
次に、第2のフェーズ(Proposeフェーズ)では、レプリカR4は、自分を含め過半数のPrepareACKを受信した場合、Propose(g,i,n,v)をすべてのデータベース装置10に送信する。レプリカR2,R3は、Propose受信時には、図5に示すように、受信したマスタ世代番号g「200」が自身の記憶部で最大のマスタ世代番号gm「200」と等しいので、処理はステップS502へ進んで、受信した議題番号iと記憶部で最大の議題番号imとを比較する。受信した議題番号i「99」は、記憶部で最大の議題番号im「99」に等しいので、処理はS504へ進んで、ログ出力を実行し、ブロック更新を実行する。このブロック更新によって、Proposeの結果が永続化される。そして、この処理の後、レプリカR2,R3は、ProposeACKをレプリカR4に返信する。なお、レプリカR4は、この自分を含め過半数のProposeACKを受信した時点で、新しいマスタとして選定されたことが保証される。レプリカR4は、新しいマスタとして、「新たにマスタが選定され、かつ、その新たに選定されたマスタが旧マスタと異なる場合」に該当するため、それまでのマスタ世代番号g「200」に「1」を増加して、マスタ世代番号gを「201」に設定する。
次に、第3のフェーズ(Commitフェーズ)では、レプリカR4(以降、新しいマスタと称することもある)は、マスタ世代番号g「201」と、議題番号i「99」とをCommitメッセージに含めて、すべてのデータベース装置10に送信する。レプリカR2,R3は、図5に示すように、受信したマスタ世代番号g「201」が自身の記憶部で最大のマスタ世代番号gm「200」より大きいので、処理はステップS507へ進み、補正処理を実行する。補正処理では、開始番号が、記憶部14に記憶部で最大の議題番号im「99」であるので、図6に示すように、議題番号として変数j=99+1=100を設定し(ステップS601)、すべてのデータベース装置10にLearn(j)を送信する(ステップS602)。この時点では、議題番号100は存在しないため、ステップS603でNoとなり、自身のマスタ世代番号gを更新する。そして、レプリカR2,R3は、補正処理の後、ステップS509において、分散調停プロトコルを用いた応答、すなわち、CommitACKをレプリカR4に返信する。
レプリカR4は、自身を含め過半数のデータベース装置10からCommitACKを受信できたため、旧マスタの複製要求の失敗が保証されたことを認識し、クライアント端末20から処理要求の受け付けを開始する。
そして、この時点で、ネットワークの分断が解消されたものとする。レプリカR2は、旧マスタから議題番号「100」のProposeを受信し、次に新しいマスタから議題番号「100」のProposeを受信する。これらの議題番号は同じであっても、データベースとしては、通常は異なるテーブルの異なるレコードの更新であるため、旧マスタからの更新を取り消して、新しいマスタからの更新を受け付ける必要がある。この場合、図5のステップS501において、受信したマスタ世代番号g「201」は、自身の記憶部で最大のマスタ世代番号gm「200」より大きいので、レプリカR2は、補正処理(ステップS507)を実行する。すなわち、レプリカR2は、図6のステップS601において、開始番号が、記憶部で最大の議題番号imが「99」であるので、議題番号として変数j=99+1=100を設定して、Learn(100)をすべてのデータベース装置10に送信する。そして、レプリカR2は、ステップS603でYes、ステップS604でNoと処理を進めて、先に受信した旧マスタからの議題番号「100」に関して「アンドゥ(ステップS606)」を実行する。そして、レプリカR2は、ステップS607,S608を実行して、ステップS602において取得した新しいマスタからの議題内容について、ログ出力し、ブロック更新する。
また、レプリカR3は、新しいマスタの議題番号「100」のProposeを受信し、次に旧マスタの議題番号「100」のProposeを受信する。レプリカR3は、新しいマスタの議題番号「100」のProposeを受信した時点で、記憶部で最大のマスタ世代番号gmが「201」となっている。そのため、レプリカR3は、後から受信した旧マスタの議題番号「100」のProposeのマスタ世代番号g「200」に対して、ステップS501において、受信したマスタ世代番号gが記憶部で最大のマスタ世代番号gmより小さいので、処理をステップS508へ進め、否定応答を実行する。このようにして、議題番号「100」の調停に関して、データの整合性を保つことができる。
以上、本実施形態の分散データベースシステム1は、複数のデータ管理装置によって構成され、1台がマスタ、残りのデータ管理装置がマスタと同じデータの状態を維持するレプリカとして動作する。この分散データベースシステム1において、データ管理装置間を接続するネットワークに障害が発生してマルチマスタ状態になったときに、マスタ調停が行われて、新しいマスタが選定された場合、新しく選定されたマスタは、「新たにマスタが選定され、かつ、その新たに選定されたマスタが旧マスタと異なる場合」であれば、マスタ世代番号を更新する。そして、レプリカが、旧マスタおよび新しいマスタから同じ議題番号を含む複製に係るProposeを受信した時に、マスタ世代番号の大きい方(新しい方)に基づいて、ログ更新およびブロック更新を行う。このことによって、新しく選定されたマスタからの情報に基づいて、すべてのデータ管理装置のデータを同じ状態に保持させることができる。なお、本実施形態では、リースパケットがリースタイム時間以内に受信できなくなる例として、ネットワークの分断を用いて説明したが、これ以外にも、ネットワーク内でのパケットの遅延や損失等がある。
なお、本実施形態では、マスタのデータをレプリカに複製する場合、Proposeメッセージのみを用いて実行する場合について示した。この処理では、レプリカがProposeを受信したときに、直ちにログ出力およびブロック更新を実行する(図5に示すステップS504およびS505参照)ので、データベース更新を早く終わらせることができる。本実施形態の別の処理として、ProposeメッセージとCommitメッセージとを用いても、本実施形態と同様の結果を実現できる。すなわち、レプリカは、Proposeメッセージを受信したときに、一時的にキャッシュメモリ等にログを記憶しておき、Commitメッセージを受信したときに、ログ出力およびブロック更新を実行する。別の処理の場合は、Commitメッセージを受信するまでデータベース更新が完了しないので、本実施形態の場合の方がデータベース更新を早く終わらせることができる。なお、本実施形態では、Proposeメッセージを受信した時点でデータベース更新を行ってしまうので、マルチマスタ状態の古いマスタのデータを先に記憶した後で新しいマスタのデータを受信した場合、ログを上書きするために、アンドゥの処理(図6のステップS606参照)が必要とされる。このアンドゥの処理は、更新処理を遅くする要因となりうる。しかし、新しいマスタが選定される頻度がそれほど多くない場合には、更新処理に掛かる時間はほとんど増加しない。
なお、本実施形態では、PrepareメッセージおよびProposeメッセージに対する応答としてPrepareACKおよびProposeACKを返信する場合を、受信したメッセージに含まれる優先度nが過去に受信した優先度n’以上の場合として記載した。しかし、必ずしも、「以上」に限られることは無く、「より大きい」としても良い。
また、本実施形態において用いる分散調停プロトコルが、PAXOS等のアルゴリズムに準拠したものである場合、セルを構成するデータ管理装置の台数は、3台以上の奇数台であることが望ましい。
また、本実施形態において、データベース装置10(図3参照)の各部11〜13の処理は、データベース装置10をコンピュータで実現したときに搭載されるプログラムによって実現されてもよい。このプログラムは、通信回線を介して提供することもできるし、CD−ROM等のコンピュータ読み取り可能な記録媒体に書き込んで配布することも可能である。
1 分散データベースシステム(分散データ管理システム)
10(10A,10B,10C、10D,10E) データベース装置(データ管理装置)
11 処理部
12 分散調停プロトコル処理部
13 マスタ世代番号処理部
14 記憶部
30 ネットワーク
121 運転状態管理部
122 基本処理部
123 ブロック管理部
124 ログ管理部
125 議題管理部
126 議題調停部
131 マスタ世代番号更新処理部
132 送信処理部
133 比較処理部
134 否定処理部
135 更新処理部
136 再送要求処理部
137 補正処理部

Claims (12)

  1. 複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムであって、
    各前記データ管理装置は、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部を備えており、
    前記レプリカは、
    新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理部と、
    前記議題内容を作成する議題内容作成部と、
    前記議題内容作成部によって新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理部と、
    前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理部と、
    を備え、
    前記新しいマスタに選定されたレプリカ以外のデータ管理装置は、
    前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理部と、
    受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号より小さい場合、受信した前記情報に対する否定の応答を前記新しいマスタに選定されたレプリカに返信する、または、受信した前記情報を破棄する否定処理部と、
    を備える
    ことを特徴とする分散データ管理システム。
  2. 複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムであって、
    各前記データ管理装置は、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部を備えており、
    前記レプリカは、
    新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理部と、
    前記議題内容を作成する議題内容作成部と、
    前記議題内容作成部によって新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理部と、
    前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理部と、
    を備え、
    前記新しいマスタに選定されたレプリカ以外のデータ管理装置は、
    前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理部と、
    受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号に等しい場合、受信した前記情報に含まれる議題番号と前記記憶部に記憶される議題番号とを比較し、受信した前記情報に含まれる議題番号が前記記憶部に記憶される議題番号以下のとき、受信した前記情報に含まれる議題番号と議題内容とを記憶する更新処理部、および受信した前記情報に含まれる議題番号が前記記憶部に記憶される議題番号より大きいとき、前記記憶部において前記受信した前記情報に含まれる議題番号より小さい範囲の議題番号の中で欠番の議題番号に関連付けられた議題内容の再送を前記新しいマスタに選定されたレプリカに要求する再送要求処理部と、
    を備える
    ことを特徴とする分散データ管理システム。
  3. 複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムであって、
    各前記データ管理装置は、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部を備えており、
    前記レプリカは、
    新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理部と、
    前記議題内容を作成する議題内容作成部と、
    前記議題内容作成部によって新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理部と、
    前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理部と、
    を備え、
    前記新しいマスタに選定されたレプリカ以外のデータ管理装置は、
    前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理部と、
    受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号より大きい場合、受信した前記情報に含まれる前記選定時議題番号より大きい議題番号の議題内容の取得要求である問い合わせ通知を、自身以外のデータ管理装置に送信し、前記自身以外のデータ管理装置から前記問い合わせ通知に対する応答として、前記選定時議題番号より大きい議題番号の議題内容およびその議題内容の議題番号を受信し、当該受信した応答に含まれる議題内容とその議題内容に付けられた議題番号とを前記記憶部に記憶し、前記記憶部に記憶しているマスタ世代番号を受信した前記情報に含まれるマスタ世代番号に更新する補正処理部と、
    を備える
    ことを特徴とする分散データ管理システム。
  4. 前記新しいマスタに選定されたレプリカ以外のデータ管理装置の補正処理部は、
    前記問い合わせ通知に対する応答に含まれる議題内容とその議題内容に付けられた前記選定時議題番号より大きい議題番号とを前記記憶部に記憶する場合、
    前記応答に含まれる議題内容と、その議題内容に付けられた前記選定時議題番号より大きい議題番号と同一の議題番号に付けられた、既に前記記憶部に記憶している議題内容とが異なる場合、当該記憶している議題内容を、前記応答に含まれる議題内容で上書きする
    ことを特徴とする請求項3に記載の分散データ管理システム。
  5. 複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムにおいて用いられるデータ管理装置であって、
    議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部と、
    自身がレプリカから新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理部と、
    前記議題内容を作成する議題内容作成部と、
    前記議題内容作成部によって新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理部と、
    前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理部と、
    前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理部と、
    受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号より小さい場合、受信した前記情報に対する否定の応答を前記新しいマスタに選定されたレプリカに返信する、または、受信した前記情報を破棄する否定処理部と、
    を備える
    ことを特徴とするデータ管理装置。
  6. 複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムにおいて用いられるデータ管理装置であって、
    議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部と、
    自身がレプリカから新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理部と、
    前記議題内容を作成する議題内容作成部と、
    前記議題内容作成部によって新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理部と、
    前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理部と、
    前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理部と、
    受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号に等しい場合、受信した前記情報に含まれる議題番号と前記記憶部に記憶される議題番号とを比較し、受信した前記情報に含まれる議題番号が前記記憶部に記憶される議題番号以下のとき、受信した前記情報に含まれる議題番号と議題内容とを記憶する更新処理部、および受信した前記情報に含まれる議題番号が前記記憶部に記憶される議題番号より大きいとき、前記記憶部において前記受信した前記情報に含まれる議題番号より小さい範囲の議題番号の中で欠番の議題番号に関連付けられた議題内容の再送を前記新しいマスタに選定されたレプリカに要求する再送要求処理部と、
    を備える
    ことを特徴とするデータ管理装置。
  7. 複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムにおいて用いられるデータ管理装置であって、
    議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部と、
    自身がレプリカから新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理部と、
    前記議題内容を作成する議題内容作成部と、
    前記議題内容作成部によって新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理部と、
    前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理部と、
    前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理部と、
    受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号より大きい場合、受信した前記情報に含まれる前記選定時議題番号より大きい議題番号の議題内容の取得要求である問い合わせ通知を、自身以外のデータ管理装置に送信し、前記自身以外のデータ管理装置から前記問い合わせ通知に対する応答として、前記選定時議題番号より大きい議題番号の議題内容およびその議題内容の議題番号を受信し、当該受信した応答に含まれる議題内容とその議題内容に付けられた議題番号とを前記記憶部に記憶し、前記記憶部に記憶しているマスタ世代番号を受信した前記情報に含まれるマスタ世代番号に更新する補正処理部と、
    を備える
    ことを特徴とするデータ管理装置。
  8. 複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムにおいて用いられるデータ管理方法であって、
    各前記データ管理装置は、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部を備えており、
    前記レプリカは、
    新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理、
    前記議題内容を作成する議題内容作成処理、
    前記議題内容作成処理において新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理、および、
    前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理、
    を実行し、
    前記新しいマスタに選定されたレプリカ以外のデータ管理装置は、
    前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理、および、
    受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号より小さい場合、受信した前記情報に対する否定の応答を前記新しいマスタに選定されたレプリカに返信する、または、受信した前記情報を破棄する否定処理、
    を実行する
    ことを特徴とするデータ管理方法。
  9. 複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムにおいて用いられるデータ管理方法であって、
    各前記データ管理装置は、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部を備えており、
    前記レプリカは、
    新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理、
    前記議題内容を作成する議題内容作成処理、
    前記議題内容作成処理において新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理、および、
    前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理、
    を実行し、
    前記新しいマスタに選定されたレプリカ以外のデータ管理装置は、
    前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理、および、
    受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号に等しい場合、受信した前記情報に含まれる議題番号と前記記憶部に記憶される議題番号とを比較し、受信した前記情報に含まれる議題番号が前記記憶部に記憶される議題番号以下のとき、受信した前記情報に含まれる議題番号と議題内容とを記憶する更新処理および受信した前記情報に含まれる議題番号が前記記憶部に記憶される議題番号より大きいとき、前記記憶部において前記受信した前記情報に含まれる議題番号より小さい範囲の議題番号の中で欠番の議題番号に関連付けられた議題内容の再送を前記新しいマスタに選定されたレプリカに要求する再送要求処理、
    を実行する
    ことを特徴とするデータ管理方法。
  10. 複数のデータ管理装置がネットワークを介して相互に通信可能に接続され、前記データ管理装置の中の1台をマスタとし、前記マスタ以外の他のデータ管理装置をマスタと同じデータを保持するレプリカとして動作させる分散データ管理システムにおいて用いられるデータ管理方法であって、
    各前記データ管理装置は、議題番号と前記議題番号に関連付けられた議題内容と前記マスタのマスタ世代番号と前記マスタを選定したときの議題内容に付けられた議題番号である選定時議題番号とを記憶する記憶部を備えており、
    前記レプリカは、
    新しいマスタに選定されたときに、前記記憶部に記憶されたマスタ世代番号を増加するように更新するマスタ世代番号更新処理、
    前記議題内容を作成する議題内容作成処理、
    前記議題内容作成処理において新たに作成された議題内容に対して、議題番号を増加するように更新する議題番号更新処理、および、
    前記更新された議題番号、当該議題番号に関連付けられた議題内容、前記更新されたマスタ世代番号、および前記選定時議題番号を含む情報を、新しいマスタに選定されたレプリカ以外のデータ管理装置に送信する送信処理、
    を実行し、
    前記新しいマスタに選定されたレプリカ以外のデータ管理装置は、
    前記新しいマスタに選定されたレプリカから受信した前記情報に含まれるマスタ世代番号と、前記記憶部に記憶されるマスタ世代番号とを比較する比較処理、および、
    受信した前記情報に含まれるマスタ世代番号が前記記憶部に記憶されるマスタ世代番号より大きい場合、受信した前記情報に含まれる前記選定時議題番号より大きい議題番号の議題内容の取得要求である問い合わせ通知を、自身以外のデータ管理装置に送信し、前記自身以外のデータ管理装置から前記問い合わせ通知に対する応答として、前記選定時議題番号より大きい議題番号の議題内容およびその議題内容の議題番号を受信し、当該受信した応答に含まれる議題内容とその議題内容に付けられた議題番号とを前記記憶部に記憶し、前記記憶部に記憶しているマスタ世代番号を受信した前記情報に含まれるマスタ世代番号に更新する補正処理、
    を実行する
    ことを特徴とするデータ管理方法。
  11. 前記新しいマスタに選定されたレプリカ以外のデータ管理装置は、前記補正処理において、
    前記問い合わせ通知に対する応答に含まれる議題内容とその議題内容に付けられた前記選定時議題番号より大きい議題番号とを前記記憶部に記憶する場合、
    前記応答に含まれる議題内容と、その議題内容に付けられた前記選定時議題番号より大きい議題番号と同一の議題番号に付けられた、既に前記記憶部に記憶している議題内容とが異なる場合、当該記憶している議題内容を、前記応答に含まれる議題内容で上書きする
    ことを特徴とする請求項10に記載のデータ管理方法
  12. 請求項8ないし請求項11のいずれか一項に記載のデータ管理方法を、コンピュータとしてのデータ管理装置に実行させるためのプログラム。
JP2009144727A 2009-06-17 2009-06-17 分散データ管理システム、データ管理装置、データ管理方法、およびプログラム Expired - Fee Related JP5416490B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009144727A JP5416490B2 (ja) 2009-06-17 2009-06-17 分散データ管理システム、データ管理装置、データ管理方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009144727A JP5416490B2 (ja) 2009-06-17 2009-06-17 分散データ管理システム、データ管理装置、データ管理方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2011002970A JP2011002970A (ja) 2011-01-06
JP5416490B2 true JP5416490B2 (ja) 2014-02-12

Family

ID=43560883

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009144727A Expired - Fee Related JP5416490B2 (ja) 2009-06-17 2009-06-17 分散データ管理システム、データ管理装置、データ管理方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP5416490B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5900094B2 (ja) * 2012-03-28 2016-04-06 日本電気株式会社 データ整合システム、データ整合方法およびデータ整合プログラム
JP5967198B2 (ja) * 2012-07-04 2016-08-10 富士通株式会社 システム、情報処理装置、取得方法および取得プログラム
JP6187598B2 (ja) * 2013-11-05 2017-08-30 日本電気株式会社 送信装置、情報処理システム、マスタサーバ、データベースシステムおよび方法
JP6904412B2 (ja) * 2019-12-20 2021-07-14 日本電気株式会社 複製データ制御装置、複製データ制御システム、複製データ制御方法および複製データ制御プログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4224289B2 (ja) * 2002-11-20 2009-02-12 日本電信電話株式会社 データの複製管理方法
US7334154B2 (en) * 2004-06-18 2008-02-19 Microsoft Corporation Efficient changing of replica sets in distributed fault-tolerant computing system
TWI416901B (zh) * 2005-11-30 2013-11-21 Ibm 故障容忍之異動處理系統

Also Published As

Publication number Publication date
JP2011002970A (ja) 2011-01-06

Similar Documents

Publication Publication Date Title
US11899684B2 (en) System and method for maintaining a master replica for reads and writes in a data store
US11894972B2 (en) System and method for data replication using a single master failover protocol
US10929240B2 (en) System and method for adjusting membership of a data replication group
US9411873B2 (en) System and method for splitting a replicated data partition
US10248704B2 (en) System and method for log conflict detection and resolution in a data store
US7653668B1 (en) Fault tolerant multi-stage data replication with relaxed coherency guarantees
US9489434B1 (en) System and method for replication log branching avoidance using post-failover rejoin
US8862644B2 (en) Data distribution system
US20170132265A1 (en) Distributed system for application processing
CN109547512B (zh) 一种基于NoSQL的分布式Session管理的方法及装置
JP5548829B2 (ja) 計算機システム、データ管理方法及びデータ管理プログラム
CN102012944B (zh) 一种提供复制特性的分布式nosql数据库的实现方法
US8417679B1 (en) Fast storage writes
JP5416490B2 (ja) 分散データ管理システム、データ管理装置、データ管理方法、およびプログラム
JP2010277467A (ja) 分散データ管理システム、データ管理装置、データ管理方法、およびプログラム
CN117616411A (zh) 用于处理分布式在线事务处理(oltp)数据库中数据库事务的方法和系统
WO2018235348A1 (ja) データベースサーバ、データベース管理方法、および記憶媒体

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110819

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110920

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130903

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131021

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131115

R150 Certificate of patent or registration of utility model

Ref document number: 5416490

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees