JP5449471B2 - 共有データに対する更新処理の同期処理方法、データ共有システムおよびデータ共有プログラム - Google Patents

共有データに対する更新処理の同期処理方法、データ共有システムおよびデータ共有プログラム Download PDF

Info

Publication number
JP5449471B2
JP5449471B2 JP2012160780A JP2012160780A JP5449471B2 JP 5449471 B2 JP5449471 B2 JP 5449471B2 JP 2012160780 A JP2012160780 A JP 2012160780A JP 2012160780 A JP2012160780 A JP 2012160780A JP 5449471 B2 JP5449471 B2 JP 5449471B2
Authority
JP
Japan
Prior art keywords
node
data
update
update process
request message
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
JP2012160780A
Other languages
English (en)
Other versions
JP2014021778A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2012160780A priority Critical patent/JP5449471B2/ja
Publication of JP2014021778A publication Critical patent/JP2014021778A/ja
Application granted granted Critical
Publication of JP5449471B2 publication Critical patent/JP5449471B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、共有データに対する更新処理の同期処理方法、データ共有システムおよびデータ共有プログラムに関する。
複数のノードによって共有データを扱う分散システムでは、各ノードが共有データのコピーを重複して個別に保持する。特許文献1には、このようなデータ共有装置の構成の例が記載されている。特許文献1の構成では、各ノードが非同期処理によって更新を反映する。
特開2010−122724号公報
しかしながら、従来の構成では、共有データの更新が発生した場合において、ノード間のデータを同期させる処理が遅延するという問題があった。
たとえば、特許文献1の構成は、処理順序に依存しない更新関数を使用するシステムにしか適用できず、更新の順序性が要求される場合には全ノードの排他制御が必要となり、処理遅延により性能が低下する。
また、更新が発生した時刻に基づいて同期処理を行うシステムでは、ある時刻以前の更新処理が反映されているか否かを簡単に確認する方法がない。また、反映されていない処理を発見した場合の対応に時間がかかる。
さらに、更新処理の順序を表す通し番号に基づいて同期処理を行うシステムでは、同期処理間の依存関係を簡単に確認する方法がなく、依存関係のない独立した更新処理に遅延が発生した場合でも後続の更新処理すべてに遅延が波及する。
この発明は、このような問題点を解決するためになされたものであり、共有データの更新が発生した場合において、整合性を維持しながらノード間のデータを高速に同期させられる同期処理方法、データ共有システムおよびデータ共有プログラムを提供することを目的とする。
上述の問題点を解決するため、この発明に係る共有データに対する更新処理の同期処理方法は、複数のノードによって共有される共有データに対する更新処理の同期処理方法であって、共有データに対して、互いに順序関係を有する複数の更新処理が実行され、複数の更新処理のうち少なくとも2つが、それぞれ異なるノードによって実行され、各ノードには、更新処理を要求したアプリケーションを識別するサービスIDのいずれかが関連付けられる更新処理の同期処理方法において、ノードの少なくとも1つが、更新処理の起点ノードとして、
‐更新されるデータを識別するデータキーと、
‐更新後のデータ内容を表すデータボディと、
‐更新処理よりも順序関係において先の更新処理を識別するプレイベントIDと、
‐先の更新処理を要求したアプリケーションを識別するプレサービスIDと、
‐先の更新処理によって更新されたデータを識別するプレデータキーと、
を取得するステップと、
起点ノードが、
‐当該更新処理を識別するイベントIDと、
‐データキーと、
‐データボディと、
‐プレイベントIDと、
‐プレサービスIDと、
‐プレデータキーと、
を含む反映要求メッセージを、他のノードに送信するステップと、
反映要求メッセージを受信したノードが、更新処理の反映ノードとして、プレイベントIDと、当該反映要求メッセージより前に受信されたイベントIDとに基づき、その反映ノードにおいて先の更新処理がすでに実行されたか否かを判定するステップと、
反映ノードにおいて先の更新処理が実行されていない場合に、その更新反映ノードが、
‐プレサービスIDと、
‐プレデータキーと、
を含む欠落データ要求メッセージを、他のノード(ただし起点ノードを含んでもよい)に送信するステップと、
欠落データ要求メッセージに含まれるプレサービスIDに対応するノードが、欠落データ要求メッセージに含まれるプレデータキーによって識別されるデータボディを含む欠落データ応答メッセージを、反映ノードに送信するステップと
を含む。
反映要求メッセージ、欠落データ要求メッセージおよび欠落データ応答メッセージは、いずれもブロードキャスト方式のメッセージであってもよい。
欠落データ要求メッセージは、イベントIDおよびプレイベントIDのいずれも含まないものであってもよい。
反映ノードにおいて、欠落データ要求メッセージを送信するステップは、反映要求メッセージを受信した後、所定時間が経過するまでは実行されないものであってもよい。
各ノードは、演算手段および記憶手段を備えるコンピュータによって構成されてもよい。
この発明に係るデータ共有システムは、複数のノードを備え、上述の方法を実行する。
この発明に係るデータ共有プログラムは、コンピュータを、上述の
‐起点ノード、
‐反映ノード、および
‐欠落データ応答メッセージを送信するノード
として機能させる。
この発明に係る共有データに対する更新処理の同期処理方法は、複数のノードによって共有される共有データに対する更新処理の同期処理方法であって、共有データに対して、互いに順序関係を有する複数の更新処理が実行され、複数の更新処理のうち少なくとも2つが、それぞれ異なるノードによって実行され、各ノードには、更新処理を要求したアプリケーションを識別するサービスIDのいずれかが関連付けられる更新処理の同期処理方法において、ノードの少なくとも1つが、更新処理の起点ノードとして、
‐更新されるデータを識別するデータキーと、
‐更新後のデータ内容を表すデータボディと、
‐更新処理よりも順序関係において先の更新処理を識別するプレイベントIDと、
‐先の更新処理を要求したアプリケーションを識別するプレサービスIDと、
‐先の更新処理によって更新されたデータを識別するプレデータキーと、
を取得するステップと、
起点ノードが、
‐当該更新処理を識別するイベントIDと、
‐データキーと、
‐データボディと、
‐プレイベントIDと、
‐プレサービスIDと、
‐プレデータキーと、
を含む反映要求メッセージを、他のノードに送信するステップと、
反映要求メッセージを受信したノードが、更新処理の反映ノードとして、プレイベントIDと、当該反映要求メッセージより前に受信されたイベントIDとに基づき、その反映ノードにおいて先の更新処理がすでに実行されたか否かを判定するステップと、
反映ノードにおいて先の更新処理が実行されていない場合に、その更新反映ノードが、
‐プレサービスIDと、
‐プレデータキーと、
を含む欠落データ要求メッセージを、他のノード(ただし起点ノードを含んでもよい)に送信するステップと、
欠落データ要求メッセージに含まれるプレサービスIDに対応するノードが、欠落データ要求メッセージに含まれるプレデータキーによって識別されるデータボディを含む欠落データ応答メッセージを、反映ノードに送信するステップと
を含むので、整合性を維持しながらノード間のデータを高速に同期させることができる。
また、この発明に係るデータ共有システムは、複数のノードを備え、上述の方法を実行するので、整合性を維持しながらノード間のデータを高速に同期させることができる。
また、この発明に係るデータ共有プログラムは、コンピュータを、上述の
‐起点ノード、
‐反映ノード、および
‐欠落データ応答メッセージを送信するノード
として機能させるので、整合性を維持しながらノード間のデータを高速に同期させることができる。
本発明の実施の形態1に係るデータ共有システムの構成の例を示す図である。 図1のノードの構成の例を示す図である。 図1の共有データ保存領域の構成の例を示す図である。 図1の更新履歴情報の構成の例を示す図である。 更新処理の順序関係の例を示す図である。 各ノードの共有データ処理部の動作の概要を示すフローチャートである。 更新依頼の構成を示す図である。 図6のステップS2の詳細を示すフローチャートである。 反映要求メッセージの構成の例を示す図である。 図6のステップS4の詳細を示すフローチャートである。 欠落データ要求メッセージの構成の例を示す図である。 欠落データ応答メッセージの構成の例を示す図である。 図6のステップS7の詳細を示すフローチャートである。 各ノードの処理の流れの例を説明する図である。
以下、この発明の実施の形態を添付図面に基づいて説明する。
実施の形態1.
図1に、本発明の実施の形態1に係るデータ共有システムの構成の例を示す。このデータ共有システムは、複数のノードによって共有される共有データに対する更新処理を扱うものであり、本発明の実施の形態1に係る同期処理方法を実行する。
データ共有システムは、データを共有する複数のノードA、A’、B、B’、C、C’を備える。各ノードには、ノードを一意に識別するノードID(図1には示さず)が関連付けられる。また、各ノードは、通信ネットワーク100を介して互いに通信可能に接続される。通信ネットワーク100はたとえばLANであり、少なくともブロードキャスト方式の通信を可能とする。
各ノードは、それぞれ異なるアプリケーションを実行する(ただし同一のアプリケーションを実行するノードを含んでもよい)。すなわち、複数の更新処理が、場合に応じて異なるノードによって実行される。また、各ノードは、それぞれが格納する共有データを互いに同期させるよう動作する。すなわち、図1のシステムは、アプリケーション分散型のデータ共有システムである。
ノードのうち少なくとも1つは、ノード障害に備えて冗長に構成される。すなわち、通常時にアプリケーションを実行するマスタノードと、マスタノードに障害が発生した際にマスタノードに代わってアプリケーションを実行するスレーブノード(1つまたは複数。待機ノードとも呼ばれる)との組が構成される。図1の例では、ノードA、B、Cがマスタノードであり、ノードA’、B’、C’がそれぞれ対応するスレーブノードである。
スレーブノードは、対応するマスタノードが正常に動作している間はアプリケーションを実行せず、データ同期処理のみを実行する。そして、対応するマスタノードにおいて障害が発生した場合には、スレーブノードがマスタノードと同一のアプリケーションを実行する。
マスタノードとスレーブノードとは、アプリケーションを一意に識別するサービスIDによって関連付けられる。
ただし、待機中のスレーブノードはサービスIDを持たない。すなわち、ノードA、BおよびCは互いに異なるサービスIDを有し、ノードA’、B’およびC’はサービスIDを持たない。そして、たとえばノードAにおいて障害が発生すると、ノードA’が、それまでのノードAと同じサービスIDを与えられてマスターノードへと切り替わる。
このサービスIDは、更新処理を要求したアプリケーションを一意に識別するものである。すなわち、アプリケーションプログラムが、コンピュータを、更新処理を要求するアプリケーションとして機能させ、これによって、コンピュータに更新処理を要求させる。なお、1つのノードで複数のアプリケーションが動作する場合には、1つのノードに複数のサービスIDが関連付けられてもよい。
図2に、ノードの構成を示す。ノードAを例にとって説明するが、他のノードも図2のノードAと同様の構成を有する。
ノードAは、周知のコンピュータとしての構成を有し、演算を行う演算手段10と、情報を格納する記憶手段20とを備える。演算手段10はCPU(中央処理装置)を含み、記憶手段20は半導体メモリおよびHDD(ハードディスクドライブ)等の記憶媒体を含む。
演算手段10は、記憶手段20に記憶されるデータ共有プログラム(図2には示さず)を実行することにより、本明細書において説明する各機能を実行することができる。たとえば、データ共有プログラムは、演算手段10をアプリケーション処理部11、共有データ処理部12およびネットワーク処理部13として機能させる。別の表現では、このデータ共有プログラムは、コンピュータを、後述の起点ノード、反映ノード、および応答ノードとして機能させる。
アプリケーション処理部11は、共有データ処理部12にアクセス依頼を送信することにより、共有データに対するアクセスを行う。このアクセス依頼の種別の例として、参照依頼および更新依頼がある。また、本実施形態では、アプリケーション処理部11は、同じノードの共有データ処理部12に対してのみアクセス依頼を送信するものであり、他のノードの共有データ処理部12に直接的にアクセス依頼を送信することはない。なお、上述のように、アプリケーション処理部11にはサービスIDが関連付けられる。
共有データ処理部12の機能については図6等を用いて後述するが、概要は次のようなものである。共有データ処理部12は、アプリケーション処理部11からのアクセス依頼に応じて共有データへのアクセスを行う。また、アクセス依頼が更新依頼である場合には、各ノードの共有データ処理部12が互いに連携して共有データの更新を同期させ、結果を各ノードのアプリケーション処理部11に通知する。
上述のように、マスタノードが正常に動作している間は、スレーブノードのアプリケーション処理部11は動作せず、共有データ処理部12のみが動作する。そして、対応するマスタノードにおいて障害が発生した場合には、アプリケーション処理部11が動作を開始し、マスタノードと同一のアプリケーションを実行する。
ネットワーク処理部13は、共有データ処理部12からの依頼に応じて他のノードのネットワーク処理部13と通信することにより、異なるノード間での共有データ処理部12どうしの通信を可能にする。
記憶手段20には、共有データ保存領域21および更新履歴情報22が格納される。
図3に共有データ保存領域21の構成の例を示す。共有データ保存領域21は共有データを保存するための領域であり、データ共有システムはこの共有データを各ノードについて同期させるよう動作する。共有データ保存領域21に保存される共有データは、データの値を表すデータボディと、データボディを一意に識別するデータキーとを含む。データキーおよびデータボディはたとえば可変長であり、データキーはたとえば最大250バイトであり、データボディはたとえば最大1メガバイトである。データキーおよびデータボディは、共有データ保存領域21を管理するためのデータ共有システム内部管理データを含んでもよい。
図4に更新履歴情報22の構成の例を示す。更新履歴情報22は、そのノード内での共有データ保存領域21の更新処理の履歴を含む。各更新処理は、アプリケーション処理部11が各更新処理を一意に識別するための更新処理IDによって表される。更新処理IDには、それぞれ、共有データ処理部12が各更新処理を一意に識別するためのイベントIDと、アプリケーションを一意に識別するサービスIDと、更新されるデータボディを一意に識別するデータキーとが関連付けられている。図4の例では、該当するノードにおいて、更新処理ID「001」(イベントID「A1」)によって表される更新処理や、更新処理ID「003」(イベントID「B1」)によって表される更新処理は完了していることがわかる。が、イベントIDを検索するとイベントID「B2」が存在しないので、イベントID「B2」によって表される更新処理はまだ完了していないことが示されている。更新履歴情報22は、図7を用いて後述する更新依頼M1の情報を全て記憶し、共有データ処理部12は、更新履歴情報22にイベントIDが存在する場合は該当のイベントIDは完了済み、イベントIDが存在しない場合は該当のイベントIDは未完了と判定する。
図5に、データ共有システムが実行する更新処理の順序関係の例を示す。更新処理は互いに順序関係を有する。本明細書において、「順序関係」とは、2つの更新処理の間で定義され、一方の更新処理を開始するためには他方の更新処理が完了していなければならないという関係を表す。たとえば、図5の例では、更新処理C1の実行を開始するためには、更新処理B1が完了していなければならない。すなわち、データ共有システムは、これら2つの更新処理を実行するに際し、まず更新処理B1を実行し、次に更新処理C1を実行しなければならない。このような順序関係について、本明細書では、後に実行されるべき更新処理(たとえば更新処理C1)を基準として、先に実行されるべき更新処理(たとえば更新処理B1)を「先の更新処理」と呼ぶ。同様に、更新処理B2を基準とすると、更新処理A1が先の更新処理となる。
順序関係は2つの更新処理の間で定義されるが、単一の更新処理が複数の順序関係に関連してもよい。たとえば、図5の例では、更新処理B1は、更新処理A1、C1およびC2との間でそれぞれ順序関係を有する。このようにして順序関係の連鎖が形成される。また、このような順序関係の連鎖は、図5のような有向グラフとして表現することができる。
以上のように構成されるデータ共有システムの動作を以下に説明する。
各マスタノードのアプリケーション処理部11に対して、複数の更新処理の順序関係(たとえば図5の有向グラフを表すデータ)があらかじめ指定されている。アプリケーション処理部11は、この順序関係に従って、共有データの更新処理を依頼する。図5の例では、まずノードAのアプリケーション処理部11が更新処理A1に係る更新依頼を共有データ処理部12に送信する。そして、各ノードの共有データ処理部12が各ノードにおいて更新後のデータを同期させ、各ノードのアプリケーション処理部11に更新完了を通知する。この通知を受けたノードBのアプリケーション処理部11は、更新処理B1およびB2に係る更新依頼を共有データ処理部12に送信する。同様にして更新後のデータが同期され、次にノードCにおいて更新処理C1〜C3の更新依頼が送信される。このようにしてすべての更新処理が完了する。
図6は、各ノードの共有データ処理部12の動作の概要を示すフローチャートである。 まず共有データ処理部12は、アプリケーション処理部11から更新依頼を受信したか否かを判定する(ステップS1)。更新依頼を受信していた場合、共有データ処理部12は、更新の起点として他のノードに更新の反映を要求するノード(以下「起点ノード」と呼ぶ)の共有データ処理部12として機能する(ステップS2)。
図7に、更新依頼M1の構成の例を示す。更新依頼M1は次の情報を含む。
‐その更新依頼を一意に識別する更新処理ID
‐更新されるデータを識別するデータキー
‐更新後のデータ内容を表すデータボディ
‐該当する更新処理よりも順序関係において先の更新処理を識別するプレイベントID
‐先の更新処理に係るアプリケーションを識別するプレサービスID
‐先の更新処理によって更新されたデータを識別するプレデータキー
ただし、先の更新処理が存在しない場合(すなわち、他の更新処理とは独立して実行可能な更新処理である場合)には、プレイベントID、プレサービスIDおよびプレデータキーは含まれない。
ステップS1は、共有データ処理部12を主体として見ると、外部の構成要素であるアプリケーション処理部11から送信されてきた更新依頼M1を受信し、これによって更新処理ID、データキー、データボディ、プレイベントID、プレサービスIDおよびプレデータキーを取得するステップであると解釈できる。一方、アプリケーション処理部11および共有データ処理部12を含むノード全体を主体として見ると、まず更新処理ID、データキー、データボディ、プレイベントID、プレサービスIDおよびプレデータキーを取得し、これに応じて更新依頼M1を内部で送受信するステップであると解釈できる。
ここで、更新依頼M1は先の更新処理を特定するための情報(プレイベントID)を含んでいるので、共有データ処理部12は、図5のような有向グラフをあらかじめ記憶していなくても、更新履歴情報22を参照して更新処理間の順序関係を認識することができる。
図8に、ステップS2の詳細を示す。ステップS2は、より詳細な処理として、ステップS21〜S26を含む。
ステップS2において、まず共有データ処理部12は、更新依頼M1に従って共有データを更新する(ステップS21)。すなわち、データキーによって特定されるデータの値を、データボディによって表される値に書き換える。次に、共有データ処理部12は、当該ノード内でこの更新処理を一意に識別するイベントIDを生成する(ステップS22)。
次に、共有データ処理部12は更新履歴情報22を更新する(ステップS23)。たとえば、更新依頼M1に指定された更新処理IDおよびデータキーと、自ノード(すなわち更新依頼M1を送信してきたアプリケーション処理部11のノード)のサービスIDと、ステップS22で生成したイベントIDとを関連付けて、更新履歴情報22に記憶する。そして、更新依頼M1に関連する更新処理が完了したことを、当該イベントIDとともにアプリケーション処理部11に通知する(ステップS24)。この処理は、更新依頼M1を送信したアプリケーション処理部11に対する更新のコミットに相当する。なお、当該更新処理から見て後続となる更新処理が存在する場合、アプリケーション処理部11は、この通知に含まれるイベントIDを、後続の更新依頼においてプレイベントIDとして指定することになる。
このように、共有データ処理部12は、アプリケーション処理部11に対する完了通知と、他のノードへの同期処理とを非同期に実行するので、データ共有システム全体の動作が比較的高速となる。
次に、共有データ処理部12は、反映要求メッセージM2を作成し(ステップS25)、ネットワーク処理部13を介して他の各ノードにブロードキャストする(ステップS26)。
図9に、反映要求メッセージM2の構成の例を示す。反映要求メッセージM2は次の情報を含む。
‐更新処理を識別するためのイベント識別情報
‐更新依頼M1において指定された更新処理ID
‐起点ノードのアプリケーション処理部11を一意に識別するサービスID
‐更新依頼M1において指定されたデータキー
‐更新依頼M1において指定されたデータボディ
‐更新依頼M1において指定された先の更新処理を識別するためのプレイベント識別情報
‐更新依頼M1において指定されたプレサービスID
‐更新依頼M1において指定されたプレデータキー
ここで、イベント識別情報は、イベントの種別(この例では、当該イベントが反映要求メッセージに関連するものであることを示す)と、起点ノードのノードIDと、ステップS22において生成されたイベントIDとを含む。また、プレイベント識別情報は、先の更新処理のイベント種別と、先の更新処理の起点ノードのノードIDと、更新履歴情報22において先の更新処理の更新処理IDに関連付けられたイベントID(プレイベントID)とを含む。共有データ処理部12は、プレイベント識別情報をどのようにして取得してもよいが、たとえば更新履歴情報22にイベントIDに関連付けて記憶しておき、プレイベントIDをキーとして検索することによって取得してもよい。
ここで、反映要求メッセージM2は先の更新処理を特定するための情報(プレイベントID)を含んでいるので、共有データ処理部12は、図5のような有向グラフをあらかじめ記憶していなくても、更新処理間の順序関係を認識することができる。
このようにしてステップS2(図6)が実行され、その後、共有データ処理部12の処理はステップS1に戻る。
図6のステップS1において、更新依頼M1を受信していない場合、共有データ処理部12は、他のノードからネットワーク処理部13を介して反映要求メッセージM2を受信したか否かを判定する(ステップS3)。反映要求メッセージM2を受信していた場合、共有データ処理部12は、他のノードで発生した更新を反映することによりデータを同期させるノード(以下「反映ノード」と呼ぶ)の共有データ処理部12として機能する(ステップS4)。
図10に、ステップS4の詳細を示す。ステップS4は、より詳細な処理として、ステップS41〜S49を含む。
ステップS4において、まず共有データ処理部12は、反映要求メッセージM2に先の更新処理が指定されているか否かを判定する(ステップS41)。この判定は、たとえば反映要求メッセージM2がプレイベント識別情報を含むか否かを判定することによって行われる。
先の更新処理が指定されていない場合、共有データ処理部12は反映要求メッセージM2に従って共有データを更新し(ステップS47)、更新履歴情報22を更新し(ステップS48)、反映要求メッセージM2に関連する更新処理が完了したことをアプリケーション処理部11に通知する(ステップS49)。これらの処理は、それぞれ図8のステップS21、S23およびS24と同様である。このようにして各ノードで更新が反映され、データ共有システム全体で共有データが同期される。
なお、反映ノードのアプリケーション処理部11は、ステップS49の通知によって特定の更新処理が完了したことを認識し、あらかじめ記憶している図5の順序関係に従って次の更新処理を依頼することができるが、このような処理については公知技術であるので詳細な説明を省略する。
ステップS41において、先の更新処理が指定されている場合、共有データ処理部12は先の更新処理がそのノードにおいて既に実行されているか否かを判定する(ステップS42)。この判定は、反映要求メッセージM2のプレイベントIDと、その反映要求メッセージM2より前に受信されたイベントIDとに基づいて行われる。たとえば、反映要求メッセージM2に指定されたプレイベントIDが、更新履歴情報22に記憶されたイベントIDのいずれかと一致するか否かを判定することによって行われる。
先の更新処理が既に実行されていた場合、処理は上述のステップS47以降に進む。
先の更新処理がまだ実行されていなかった場合、共有データ処理部12は先の更新処理が実行されるまで所定時間待機する(ステップS43)。すなわち、反映要求メッセージM2を受信した後、所定時間が経過する前に先の更新処理が実行され更新履歴情報22に記憶された場合にはステップS47に進むが、そうでない場合(すなわち、所定時間が経過するまで先の更新処理が実行されなかった場合)にはステップS44に進む。
所定時間が経過するまで先の更新処理が実行されなかった場合、共有データ処理部12は、欠落データ要求メッセージM3を作成し(ステップS44)、ネットワーク処理部13を介して他の各ノードにブロードキャストする(ステップS45)。なお、この例では欠落データ要求メッセージM3はブロードキャストされるので起点ノードにも送信されることになるが、起点ノードを送信対象から除外する構成としてもよい。
図11に、欠落データ要求メッセージM3の構成の例を示す。欠落データ要求メッセージM3は次の情報を含む。
‐反映要求メッセージM2において指定されたプレサービスID
‐反映要求メッセージM2において指定されたプレデータキー
このように、欠落データ要求メッセージM3は、反映要求メッセージM2自体の再送を要求するものではないが、実質的に最新のデータの再送信処理を要求するものであり、再送要求と解釈することもできる。なお、欠落データ要求メッセージM3はイベントの一種として扱われてもよく、図9の反映要求メッセージM2と同様に、イベントの種別、反映ノードのノードID、イベントID等の情報を含んでもよい。
ここで、プレサービスIDすなわち先の更新処理を依頼したアプリケーション処理部11を特定するサービスIDは、この欠落データ要求メッセージM3に応答すべきノード(応答すべきアプリケーション処理部11を含むノード。以下「応答ノード」と呼ぶ)を識別する情報として機能する。ノードIDでなくサービスIDを用いてノードを特定することにより、ノード障害への耐性が高まる。たとえば、先の更新処理を実行したノードBにおいて障害が発生し、ノードB’に切り替わっていた場合、ノードB’が応答ノードとなるべきであるが、これらのノードは異なるノードIDを有するので、ノードIDのみによって応答ノードを特定するのは困難である。本実施形態のようにサービスIDを用いて応答ノードを特定することにより、ノードBに代わってノードB’が応答ノードとなることができる。
とくに、メッセージ送信がすべてブロードキャスト方式で行われる非同期ネットワークでは、同じデータキーが指すデータ内容がノードごとに異なる可能性があるが、このようにサービスIDを用いて応答ノードを特定することにより、最新のデータを持つノードのみを応答ノードとして機能させることが可能である。
また、本実施形態では、欠落データ要求メッセージM3は、反映要求メッセージM2に指定されたイベントIDもプレイベントIDも含まない。しかしながら、プレサービスIDによって先の更新処理を実行したアプリケーション処理部11を特定することができ、プレデータキーによってそのアプリケーション処理部11が更新したデータを特定することができるので、先の更新処理が完了した時点の最新データを特定することが可能である。
次に、共有データ処理部12は、欠落データ応答メッセージM4を、ネットワーク処理部13を介して受信する(ステップS46)。すなわち、欠落データ応答メッセージM4を受信するまで後続の処理を遅延させる。この欠落データ応答メッセージM4は他のノードから送信されるものであり、送信側のノード(応答ノード)での処理については図13を用いて後述する。
図12に、欠落データ応答メッセージM4の構成の例を示す。欠落データ応答メッセージM4は次の情報を含む。
‐欠落データ要求メッセージM3において指定されたプレデータキー
‐当該プレデータキーによって特定されるデータの内容を表すデータボディ
その後、共有データ処理部12の処理は、上述のステップS47以降に進む。なお、この場合、ステップS47における更新処理は、反映要求メッセージM2ではなく欠落データ応答メッセージM4に従って行われる。なお、欠落データ応答メッセージM4はイベントの一種として扱われてもよく、図9の反映要求メッセージM2と同様に、イベントの種別、応答ノードのノードID、イベントID等の情報を含んでもよい。
このようにしてステップS4(図6)が実行され、その後、共有データ処理部12の処理はステップS1に戻る。
図6のステップS3において、反映要求メッセージM2を受信していない場合、共有データ処理部12は、他のノードからネットワーク処理部13を介して欠落データ要求メッセージM3を受信したか否かを判定する(ステップS5)。欠落データ要求メッセージM3を受信していない場合、処理はステップS1に戻る。一方、欠落データ要求メッセージM3を受信していた場合、そのメッセージの宛先が自ノードであるか否かを判定する(ステップS6)。この判定は、たとえば、欠落データ要求メッセージM3に含まれるプレサービスIDが、自身のサービスID(すなわち、自ノードに含まれるアプリケーション処理部11のサービスID)と一致するか否かを判定することによって行われる。宛先が自ノードでない場合、処理はステップS1に戻る。
宛先が自ノードである場合、共有データ処理部12は応答ノードの共有データ処理部12として機能する(ステップS7)。
図13に、ステップS7の詳細を示す。ステップS7は、より詳細な処理として、ステップS71およびS72を含む。
ステップS7において、まず共有データ処理部12は、欠落データ応答メッセージM4を作成し(ステップS71)、ネットワーク処理部13を介して他の各ノードにブロードキャストする(ステップS72)。欠落データ応答メッセージM4は、図12に示すように、欠落データ要求メッセージM3に含まれるプレデータキーと、このプレデータキーによって識別されるデータボディとに基づいて作成される。
なお、ステップS72においてブロードキャストされた欠落データ応答メッセージM4は、上述のように欠落データ要求メッセージM3を送信した反映ノードによって受信され、データの更新に用いられる。
図14は、以上のように動作するデータ共有システムにおける、ある更新処理に関する各ノードの処理の流れの例を説明する図である。
各ノードのアプリケーション処理部11は、図5に示す有向グラフに沿って更新処理を依頼する。ここで、ノードBが更新処理B2を行い、その反映がノードCにおいて完了したとする。ただし、何らかの原因によりノードAではこの反映がなされなかったものとする。
ノードCのアプリケーション処理部11は、図5の有向グラフを参照し、完了した更新処理B2の後続となる更新処理C3に係る更新依頼M1を発行する。これに応じ、ノードCは起点ノードとして機能し、反映要求メッセージM2をブロードキャストする。この時点における各ノードの更新履歴情報22の内容を図14に示す(なお理解を容易にするため図4とは異なり有向グラフの形式で表している)。
ノードAおよびノードBは、反映要求メッセージM2を受信して反映ノードとして機能し、プレイベントIDに基づいて更新処理B2が完了しているか否かを判定する。ノードBでは更新処理B2が完了しているので、そのまま更新処理C3を反映する。一方、ノードAは更新処理B2が未済であることを認識し、プレサービスIDおよびプレデータキーを指定して欠落データ要求メッセージM3をブロードキャストする。(なお、この欠落データ要求メッセージM3にはイベントIDやプレイベントIDの指定は不要である。)
ノードBおよびノードCが欠落データ要求メッセージM3を受信する。プレサービスIDはノードBのサービスIDと一致するので、ノードBが応答ノードとして機能し、プレデータキーに対応するデータ(すなわち更新処理B2が実行済みとなったもの)を欠落データ応答メッセージM4に含めて送信する。ノードAはこれを受信し、このデータに対して更新処理C3を実行する。
なお、マスタノードの切り替え処理(たとえば、マスタノードであるノードAに障害が発生した場合に、対応するスレーブノードであるノードA’が新たなマスタノードとしてアプリケーションの動作を開始する処理)が発生した場合であっても、それに伴う特別な同期処理は不要である。スレーブノードもマスタノードと同様にすべての反映要求メッセージM2を受信し、状況に応じて欠落データ要求メッセージM3を送信してデータを同期させるので、どのようなタイミングであっても、データが完全に同期した状態または仕掛り中の更新を正しく認識している状態からマスタノードとしての動作を開始することができる。
以上説明するように、本発明の実施の形態1に係る同期処理方法によれば、複数のノードによって共有される共有データに対する更新処理の同期処理方法であって、共有データに対して、互いに順序関係を有する複数の更新処理が実行され、複数の更新処理のうち少なくとも2つが、それぞれ異なるノードによって実行され、各ノードには、更新処理を要求したアプリケーションを識別するサービスIDのいずれかが関連付けられる更新処理の同期処理方法において、ノードの少なくとも1つが、更新処理の起点ノードとして、
‐更新されるデータを識別するデータキーと、
‐更新後のデータ内容を表すデータボディと、
‐更新処理よりも順序関係において先の更新処理を識別するプレイベントIDと、
‐先の更新処理を要求したアプリケーションを識別するプレサービスIDと、
‐先の更新処理によって更新されたデータを識別するプレデータキーと、
を取得するステップと、
起点ノードが、
‐当該更新処理を識別するイベントIDと、
‐データキーと、
‐データボディと、
‐プレイベントIDと、
‐プレサービスIDと、
‐プレデータキーと、
を含む反映要求メッセージを、他のノードに送信するステップと、
反映要求メッセージを受信したノードが、更新処理の反映ノードとして、プレイベントIDと、当該反映要求メッセージより前に受信されたイベントIDとに基づき、その反映ノードにおいて先の更新処理がすでに実行されたか否かを判定するステップと、
反映ノードにおいて先の更新処理が実行されていない場合に、その更新反映ノードが、
‐プレサービスIDと、
‐プレデータキーと、
を含む欠落データ要求メッセージを、他のノード(ただし起点ノードを含んでもよい)に送信するステップと、
欠落データ要求メッセージに含まれるプレサービスIDに対応するノードが、欠落データ要求メッセージに含まれるプレデータキーによって識別されるデータボディを含む欠落データ応答メッセージを、反映ノードに送信するステップと
を含む。
また、この発明に係るデータ共有システムは、複数のノードを備え、上述の方法を実行する。
また、この発明に係るデータ共有プログラムは、コンピュータを、上述の
‐起点ノード、
‐反映ノード、および
‐欠落データ応答メッセージを送信するノード
として機能させる。
したがって、起点ノードからの反映要求メッセージM2には更新処理間の順序関係が指定されるので、先の更新を待ってから後の更新を行うことができ、共有データ全体の整合性を維持することができる。また、先の更新を待つのは順序関係がある場合に限られるので、すべての更新処理を通し番号順に行うようなシステムと比較すると高速に動作する。また、データの更新に係る排他制御はすべてノード内で完結しているので、更新処理ごとにデータ共有システム全体で排他制御を行うようなシステムと比較すると高速に動作する。
よって、本発明の実施の形態1に係る同期処理方法、データ共有システムおよびデータ共有プログラムによれば、共有データの更新が発生した場合において、整合性を維持しながらノード間のデータを高速に同期させることができる。
上述の実施の形態1において、次のような変形を施すことができる。
実施の形態1では6つのノードが存在するが、ノードの数は少なくとも2であればよい。また、実施の形態1では3つのノードがそれぞれ異なる更新処理を実行するが、ノードの数や更新処理の数に関わらず、少なくとも2つの更新処理がそれぞれ異なるノードによって実行される構成であれば本発明を適用することができる。
実施の形態1では、マスタノードの切り替え処理が発生した場合であっても、それに伴う特別な同期処理は実行されないが、変形例として、切り替え処理に応じて所定の同期処理を実行してもよい。たとえば、新たにマスタノードとなるノードは、更新履歴情報22に記憶されたイベントIDに基づき、欠落しているデータを特定して送信を要求してもよい。たとえば、まず更新履歴情報22によって表される有向グラフの終端となるイベントをすべて抽出し、抽出されたイベントのプレイベントにあたる更新処理が未済である場合に、そのプレイベントに係るデータが欠落しているデータであるとして特定することができる。
実施の形態1ではノードA〜Cのそれぞれに対応して待機ノードが設けられているが、待機ノードは必ずしもすべてのノードについて設けられなくともよく、また待機ノードを一切備えない構成であってもよい。
実施の形態1の処理(図6のフローチャート)によれば、単一のノードは、同時に起点ノード、反映ノードおよび応答ノードとして機能することができないが、変形例として同時または並列的に複数の機能を実行できるものであってもよい。たとえば、あるノードが、反映ノードとして欠落データ応答メッセージM4の受信を待っている間に他のイベントIDに係る欠落データ要求メッセージM3を受信した場合には、同時に応答ノードとして機能してもよい。
実施の形態1では、反映要求メッセージM2、欠落データ要求メッセージM3および欠落データ応答メッセージM4はいずれもブロードキャスト方式のメッセージである。すなわち、送信先のノードを特定する情報を含まず、送信元ノードを除くすべてのノードに対して送信される。変形例として、送信先を特定するメッセージを用いてもよい。これらのメッセージは、ユニキャスト方式としてもよく、マルチキャスト方式としてもよい。
実施の形態1では各ノードが1つのコンピュータによって構成されるが、ノードとハードウェアとの対応はこれに限らない。たとえば複数のコンピュータが1つのノードを構成してもよく、あるいは1つのコンピュータ上で動作する複数のOSまたは複数の論理区画がそれぞれ異なるノードを構成してもよい。
実施の形態1では各メッセージはそれぞれ単一のステップにおいて一度に送信されるが、複数の単位に分割して送受信されてもよい。たとえば、反映要求メッセージは、イベントIDにデータキーおよびデータボディを関連付ける第1部分と、イベントIDにプレイベントID、プレサービスIDおよびプレデータキーを関連付ける第2部分とから構成されてもよく、各部分が独立して送受信されてもよい。また、各部分が異なるタイミングで送受信されてもよい。
10 演算手段、11 アプリケーション処理部(更新処理を要求したアプリケーション)、12 共有データ処理部、13 ネットワーク処理部、20 記憶手段、21 共有データ保存領域、22 更新履歴情報、100 通信ネットワーク、
A,B,C,A’,B’,C’ ノード(起点ノード、反映ノード、欠落データ応答メッセージを送信するノード)、A1,B1,B2,C1〜C3 更新処理、
M1 更新依頼、M2 反映要求メッセージ、M3 欠落データ要求メッセージ、M4 欠落データ応答メッセージ。

Claims (7)

  1. 複数のノードによって共有される共有データに対する更新処理の同期処理方法であって、
    前記共有データに対して、互いに順序関係を有する複数の更新処理が実行され、
    前記複数の更新処理のうち少なくとも2つが、それぞれ異なるノードによって実行され、
    各ノードには、前記更新処理を要求したアプリケーションを識別するサービスIDのいずれかが関連付けられる
    更新処理の同期処理方法において、
    前記ノードの少なくとも1つが、更新処理の起点ノードとして、
    ‐更新されるデータを識別するデータキーと、
    ‐更新後のデータ内容を表すデータボディと、
    ‐前記更新処理よりも順序関係において先の更新処理を識別するプレイベントIDと、
    ‐前記先の更新処理を要求したアプリケーションを識別するプレサービスIDと、
    ‐前記先の更新処理によって更新されたデータを識別するプレデータキーと、
    を取得するステップと、
    前記起点ノードが、
    ‐当該更新処理を識別するイベントIDと、
    ‐前記データキーと、
    ‐前記データボディと、
    ‐前記プレイベントIDと、
    ‐前記プレサービスIDと、
    ‐前記プレデータキーと、
    を含む反映要求メッセージを、他のノードに送信するステップと、
    前記反映要求メッセージを受信したノードが、更新処理の反映ノードとして、前記プレイベントIDと、当該反映要求メッセージより前に受信されたイベントIDとに基づき、その反映ノードにおいて前記先の更新処理がすでに実行されたか否かを判定するステップと、
    前記反映ノードにおいて前記先の更新処理が実行されていない場合に、その更新反映ノードが、
    ‐前記プレサービスIDと、
    ‐前記プレデータキーと、
    を含む欠落データ要求メッセージを、他のノード(ただし前記起点ノードを含んでもよい)に送信するステップと、
    前記欠落データ要求メッセージに含まれる前記プレサービスIDに対応するノードが、前記欠落データ要求メッセージに含まれる前記プレデータキーによって識別されるデータボディを含む欠落データ応答メッセージを、前記反映ノードに送信するステップと
    を含む、同期処理方法。
  2. 前記反映要求メッセージ、前記欠落データ要求メッセージおよび前記欠落データ応答メッセージは、いずれもブロードキャスト方式のメッセージである、請求項1に記載の方法。
  3. 前記欠落データ要求メッセージは、前記イベントIDおよび前記プレイベントIDのいずれも含まない、請求項1または2に記載の方法。
  4. 前記反映ノードにおいて、前記欠落データ要求メッセージを送信するステップは、前記反映要求メッセージを受信した後、所定時間が経過するまでは実行されない、請求項1〜3のいずれか一項に記載の方法。
  5. 各前記ノードは、演算手段および記憶手段を備えるコンピュータによって構成される、請求項1〜4のいずれか一項に記載の方法。
  6. 複数のノードを備え、請求項1〜5のいずれか一項に記載の方法を実行するデータ共有システム。
  7. コンピュータを、請求項1〜5のいずれか一項に記載の
    ‐起点ノード、
    ‐反映ノード、および
    ‐欠落データ応答メッセージを送信するノード
    として機能させるデータ共有プログラム。
JP2012160780A 2012-07-19 2012-07-19 共有データに対する更新処理の同期処理方法、データ共有システムおよびデータ共有プログラム Expired - Fee Related JP5449471B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012160780A JP5449471B2 (ja) 2012-07-19 2012-07-19 共有データに対する更新処理の同期処理方法、データ共有システムおよびデータ共有プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012160780A JP5449471B2 (ja) 2012-07-19 2012-07-19 共有データに対する更新処理の同期処理方法、データ共有システムおよびデータ共有プログラム

Publications (2)

Publication Number Publication Date
JP2014021778A JP2014021778A (ja) 2014-02-03
JP5449471B2 true JP5449471B2 (ja) 2014-03-19

Family

ID=50196572

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012160780A Expired - Fee Related JP5449471B2 (ja) 2012-07-19 2012-07-19 共有データに対する更新処理の同期処理方法、データ共有システムおよびデータ共有プログラム

Country Status (1)

Country Link
JP (1) JP5449471B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110599005B (zh) * 2019-08-23 2023-01-31 东软集团股份有限公司 流程解析方法、装置、计算机可读存储介质和电子设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008268587A (ja) * 2007-04-20 2008-11-06 Yamaichi Electronics Co Ltd 車載用光モジュール
JP2009230369A (ja) * 2008-03-21 2009-10-08 Konica Minolta Holdings Inc 共有データの同期方法、共有データを同期するためのプログラム、および共有データを同期して保持可能なネットワークシステム

Also Published As

Publication number Publication date
JP2014021778A (ja) 2014-02-03

Similar Documents

Publication Publication Date Title
JP6382454B2 (ja) 分散ストレージ及びレプリケーションシステム、並びに方法
JP5714571B2 (ja) キャッシュクラスタを構成可能モードで用いるキャッシュデータ処理
US9934242B2 (en) Replication of data between mirrored data sites
US8671151B2 (en) Maintaining item-to-node mapping information in a distributed system
US10114848B2 (en) Ensuring the same completion status for transactions after recovery in a synchronous replication environment
US10831612B2 (en) Primary node-standby node data transmission method, control node, and database system
KR102038527B1 (ko) 분산 클러스터 관리 시스템 및 그 방법
US20140059315A1 (en) Computer system, data management method and data management program
WO2017152860A1 (zh) 一种心跳信息发送方法、装置及心跳发送节点
US11640261B2 (en) Log processing method to avoid log collision, and related device and system
US9043283B2 (en) Opportunistic database duplex operations
CN112052230A (zh) 多机房数据同步方法、计算设备及存储介质
CN105373563B (zh) 数据库切换方法及装置
CN112015595B (zh) 主从数据库的切换方法、计算设备及存储介质
JP5449471B2 (ja) 共有データに対する更新処理の同期処理方法、データ共有システムおよびデータ共有プログラム
WO2016183735A1 (zh) 一种同步虚拟网络功能vnf状态的方法、装置和设备
US8089987B2 (en) Synchronizing in-memory caches while being updated by a high rate data stream
JP2014016953A (ja) 無共有型データベースシステム、同期装置、データベースサーバ、その同期方法および同期プログラム
US20120191645A1 (en) Information processing apparatus and database system
KR100492167B1 (ko) 비공유 구조의 데이터베이스 클러스터 서버 시스템과온라인 확장 방법
JP5480046B2 (ja) 分散トランザクション処理システム、装置、方法およびプログラム
JP5464449B2 (ja) 障害によるリブートを考慮した処理部間の不整合検出方法並びに共有装置及びクラスタシステム
JP2010134583A (ja) データベース処理方法、データベース処理プログラム、および、データベース指示装置
CN113037797A (zh) 数据处理方法及其装置
JP2015041146A (ja) サーバ装置、クライアント装置、システム、情報処理方法及びプログラム

Legal Events

Date Code Title Description
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: 20131126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131224

R150 Certificate of patent or registration of utility model

Ref document number: 5449471

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees