JP6028850B2 - データ多重化システム - Google Patents

データ多重化システム Download PDF

Info

Publication number
JP6028850B2
JP6028850B2 JP2015505087A JP2015505087A JP6028850B2 JP 6028850 B2 JP6028850 B2 JP 6028850B2 JP 2015505087 A JP2015505087 A JP 2015505087A JP 2015505087 A JP2015505087 A JP 2015505087A JP 6028850 B2 JP6028850 B2 JP 6028850B2
Authority
JP
Japan
Prior art keywords
node
storage device
data
log
update
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
JP2015505087A
Other languages
English (en)
Other versions
JPWO2014141343A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Application granted granted Critical
Publication of JP6028850B2 publication Critical patent/JP6028850B2/ja
Publication of JPWO2014141343A1 publication Critical patent/JPWO2014141343A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Description

本発明は、データ多重化システム、データ多重化方法、ノード装置、管理装置、およびプログラムに関する。
データベースに蓄積されたデータの消失に備えてデータを多重化するデータ多重化システムが提案ないし実用化されている。
例えば、アプリケーションサーバがデータ操作要求を多重化して同じデータ操作要求を複数のノードへ送信し、各々のノードが同じデータ操作要求を処理することにより、複数のノードに蓄積されるデータを同一にすることが本発明に関連する第1の関連技術として提案されている(例えば特許文献1参照)。また、KVS(キーバリューストア)を対象とし、同一のデータを複数のノードに多重化して記憶することが本発明に関連する第2の関連技術として提案されている(例えば特許文献2参照)。
一方、データ操作要求の処理に伴う永続記憶装置へのアクセス回数を削減する手法として、WAL(Write Ahead Logging)と呼ばれるログ先行書き込み方式がある。WALでは、データレコードの更新後ログの書き込み完了をもってデータ操作要求に係る処理の完了(コミット)とみなし、データレコードに対する実際の更新は上記更新後ログに基づいて後のチェックポイント時に行う。例えば、トランザクション処理にWALを採用し、更新後ログはトランザクションのコミット時に永続記憶装置に書き込み、実データはチェックポイント時にデータベースに書き込むことが本発明に関連する第3の関連技術として提案されている(例えば特許文献3参照)。
特許第5050358号公報 特表2010−501942号公報 特開2012−234509号公報
上記第1または第2の関連技術に見られるようなデータ多重化システムの処理効率を高めるために、上記第3の関連技術に見られるようなWAL方式をデータ多重化システムの各ノードに適用することが考えられる。しかし、上記第3の関連技術に見られるようにデータレコードの更新後ログを永続記憶装置に書き込むWAL方式では、更新後ログを永続記憶装置に書き込む処理がオーバーヘッドになる。このオーバーヘッドは、永続記憶装置に比べてアクセス速度の速い一時記憶装置に更新後ログを書き込むようにすれば軽減できる。しかし、更新後ログを一時記憶装置に書き込むようにすると、ノードで障害が発生した場合に一時記憶装置上の更新後ログが消失する。このため、障害の発生したノードでは更新後ログに基づく実際のデータの更新が行えない。他方、障害の発生していないノードでは更新後ログに基づいて実際のデータが更新される。従って、データ多重化システムを構成する複数のノード間で保持するデータに不一致が発生する。このようなデータの不整合を是正する一つの方法は、障害の発生したノードにおいて消失した更新後ログを障害の発生していない他のノードから取得し、この取得した更新後ログを用いて障害の発生したノードで障害回復処理を行うことである。しかしながら、障害の発生したノードにおいて消失した更新後ログを他のノードから速やかに特定することは困難である。
本発明の目的は、上述した課題、すなわち、障害の発生したノードにおいて消失した更新後ログを他のノードから速やかに特定することは困難である、という課題を解決するデータ多重化システムを提供することにある。
本発明の第1の観点に係るデータ多重化システムは、
複数のノードを有し、該複数の前記ノードは、データ操作要求を多重化して同じ前記データ操作要求を複数の前記ノードへ送信するデータ操作要求装置から前記データ操作要求を受信するデータ多重化システムであって、
複数の前記ノードからアクセス可能な共用記憶装置を有し、
各々の前記ノードは、
処理装置と、
永続記憶装置と、
一時記憶装置と
を有し、
前記永続記憶装置は、データレコードを記憶するデータレコード記憶部と前記データレコードの更新後ログを記憶する更新履歴記憶部とを有し、
前記処理装置は、
前記データ操作要求によって要求された操作を実行した前記データレコードの更新後ログを自ノードの前記一時記憶装置に書き込んだ時点で前記データ操作要求装置に対して応答を返すデータ操作手段と、
チェックポイント到来時、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログに基づいて自ノードの前記データレコード記憶部を更新し、また、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログを自ノードの前記更新履歴記憶部に書き込むと共に、前記更新履歴記憶部に書き込んだ最新の前記更新後ログを特定する情報を有するチェックポイント情報を前記共用記憶装置に書き込むチェックポイント処理手段と
を有する。
本発明の第2の観点にかかるデータ多重化方法は、
それぞれが処理装置と永続記憶装置と一時記憶装置とを有する複数のノードと、該複数の前記ノードからアクセス可能な共用記憶装置とを有し、複数の前記ノードは、データ操作要求を多重化して同じ前記データ操作要求を複数の前記ノードへ送信するデータ操作要求装置から前記データ操作要求を受信し、前記永続記憶装置は、データレコードを記憶するデータレコード記憶部と前記データレコードの更新後ログを記憶する更新履歴記憶部とを有するデータ多重化システムにおけるデータ多重化方法であって、
各々の前記ノードの前記処理装置が、前記データ操作要求によって要求された操作を実行した前記データレコードの更新後ログを自ノードの前記一時記憶装置に書き込んだ時点で前記データ操作要求装置に対して応答を返し、
各々の前記ノードの前記処理装置が、チェックポイント到来時、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログに基づいて自ノードの前記データレコード記憶部を更新し、また、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログを自ノードの前記更新履歴記憶部に書き込むと共に、前記更新履歴記憶部に書き込んだ最新の前記更新後ログを特定する情報を有するチェックポイント情報を前記共用記憶装置に書き込む。
本発明の第3の観点に係るノード装置は、
データ操作要求を多重化して送信するデータ操作要求装置と、他のノード装置と共用する共用記憶装置とに接続されるノード装置であって、
処理装置と、
永続記憶装置と、
一時記憶装置と
を有し、
前記永続記憶装置は、データレコードを記憶するデータレコード記憶部と前記データレコードの更新後ログを記憶する更新履歴記憶部とを有し、
前記処理装置は、
前記データ操作要求によって要求された操作を実行した前記データレコードの更新後ログを自ノードの前記一時記憶装置に書き込んだ時点で前記データ操作要求装置に対して応答を返すデータ操作手段と、
チェックポイント到来時、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログに基づいて自ノードの前記データレコード記憶部を更新し、また、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログを自ノードの前記更新履歴記憶部に書き込むと共に、前記更新履歴記憶部に書き込んだ最新の前記更新後ログを特定する情報を有するチェックポイント情報を前記共用記憶装置に書き込むチェックポイント処理手段と
を有する。
本発明の第4の観点に係る管理装置は、
複数のノードと、複数の前記ノードからアクセス可能な共用記憶装置とを有し、各々の前記ノードは、処理装置と永続記憶装置と一時記憶装置とを有し、データ操作要求を多重化して同じ前記データ操作要求を複数の前記ノードへ送信するデータ操作要求装置から前記データ操作要求を受信し、前記永続記憶装置は、データレコードを記憶するデータレコード記憶部と前記データレコードの更新後ログを記憶する更新履歴記憶部とを有し、前記処理装置は、前記データ操作要求によって要求された操作を実行した前記データレコードの更新後ログを自ノードの前記一時記憶装置に書き込んだ時点で前記データ操作要求装置に対して応答を返すデータ操作手段と、チェックポイント到来時、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログに基づいて自ノードの前記データレコード記憶部を更新し、また、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログを自ノードの前記更新履歴記憶部に書き込むと共に、前記更新履歴記憶部に書き込んだ最新の前記更新後ログを特定する情報を有するチェックポイント情報を前記共用記憶装置に書き込むチェックポイント処理手段とを有する、データ多重化システムにおける前記複数のノードと前記共用記憶装置とに接続された管理装置であって、
障害の発生した前記ノードが書き込んだ前記チェックポイント情報を前記共用記憶装置から読み出し、該読み出した前記チェックポイント情報に基づいて障害の発生した前記ノードの前記一時記憶装置から消失した可能性のある前記更新後ログを決定し、該決定した前記更新後ログと同じ前記更新後ログを障害の発生した前記ノード以外の前記ノードの前記更新履歴記憶部および前記一時記憶装置から読み出し、障害回復用更新後ログとして、障害の発生した前記ノードへ送信する他ノード障害回復手段
を有する。
本発明の第5の観点に係るプログラムは、
データ操作要求を多重化して送信するデータ操作要求装置と、他のノード装置と共用する共用記憶装置とに接続され、処理装置と、永続記憶装置と、一時記憶装置とを有し、上記永続記憶装置は、データレコードを記憶するデータレコード記憶部と上記データレコードの更新後ログを記憶する更新履歴記憶部とを有するノード装置の上記処理装置を構成するコンピュータを、
上記データ操作要求によって要求された操作を実行した上記データレコードの更新後ログを自ノードの上記一時記憶装置に書き込んだ時点で上記データ操作要求装置に対して応答を返すデータ操作手段と、
チェックポイント到来時、自ノードの上記一時記憶装置に記憶されている上記データレコードの更新後ログに基づいて自ノードの上記データレコード記憶部を更新し、また、自ノードの上記一時記憶装置に記憶されている上記データレコードの更新後ログを自ノードの上記更新履歴記憶部に書き込むと共に、上記更新履歴記憶部に書き込んだ最新の上記更新後ログを特定する情報を有するチェックポイント情報を上記共用記憶装置に書き込むチェックポイント処理手段と
して機能させる。
本発明の第6の観点に係るプログラムは、
複数のノードと、複数の上記ノードからアクセス可能な共用記憶装置とを有し、各々の上記ノードは、処理装置と永続記憶装置と一時記憶装置とを有し、データ操作要求を多重化して同じ上記データ操作要求を複数の上記ノードへ送信するデータ操作要求装置から上記データ操作要求を受信し、上記永続記憶装置は、データレコードを記憶するデータレコード記憶部と上記データレコードの更新後ログを記憶する更新履歴記憶部とを有し、上記処理装置は、上記データ操作要求によって要求された操作を実行した上記データレコードの更新後ログを自ノードの上記一時記憶装置に書き込んだ時点で上記データ操作要求装置に対して応答を返すデータ操作手段と、チェックポイント到来時、自ノードの上記一時記憶装置に記憶されている上記データレコードの更新後ログに基づいて自ノードの上記データレコード記憶部を更新し、また、自ノードの上記一時記憶装置に記憶されている上記データレコードの更新後ログを自ノードの上記更新履歴記憶部に書き込むと共に、上記更新履歴記憶部に書き込んだ最新の上記更新後ログを特定する情報を有するチェックポイント情報を上記共用記憶装置に書き込むチェックポイント処理手段とを有する、データ多重化システムにおける上記複数のノードと上記共用記憶装置とに接続された管理装置を構成するコンピュータを、
障害の発生した上記ノードが書き込んだ上記チェックポイント情報を上記共用記憶装置から読み出し、該読み出した上記チェックポイント情報に基づいて障害の発生した上記ノードの上記一時記憶装置から消失した可能性のある上記更新後ログを決定し、該決定した上記更新後ログと同じ上記更新後ログを障害の発生した上記ノード以外の上記ノードの上記更新履歴記憶部および上記一時記憶装置から読み出し、障害回復用更新後ログとして、障害の発生した上記ノードへ送信する他ノード障害回復手段
として機能させる。
本発明は上述した構成を有するため、障害の発生したノードにおいて消失した更新後ログを他ノードから速やかに特定することができる。
本発明の第1の実施形態に係るデータ多重化システムのブロック図である。 本発明の第1の実施形態に係るデータ多重化システムの各部の状態の一例を示す模式図である。 本発明の第1の実施形態に係るデータ多重化システムにおいてノードに障害が発生した状況の一例を示す模式図である。 本発明の第2の実施形態に係るデータ多重化システムのブロック図である。 本発明の第2の実施形態における他ノード障害回復部の処理例を示すフローチャートである。 本発明の第2の実施形態における障害回復部の処理例を示すフローチャートである。 本発明の第3の実施形態に係るデータ多重化システムのブロック図である。 本発明の第3の実施形態におけるデータ操作部の処理例を示すフローチャートである。 本発明の第4の実施形態に係るデータ多重化システムのブロック図である。 本発明の第4の実施形態におけるデータ操作部の処理例を示すフローチャートである。 本発明の第4の実施形態における他ノード障害回復部の処理例を示すフローチャートである。 本発明の第4の実施形態において障害の発生したノードで消失する可能性のある更新後ログに関する説明図である。 本発明の第5の実施形態に係るデータ多重化システムのブロック図である。
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図1を参照すると、本発明の第1の実施形態に係るデータ多重化システム100は、ノード110とノード120とデータ操作要求装置130と共用記憶装置140とがネットワーク150を通じて相互に接続されている。本実施形態では、KVSを対象とし、同一のKVデータを2台のノードに多重化して記憶する多重化システムについて説明する。但し、本発明はKVSに限定されず、リレーショナルデータベース等の他の種類のデータベースの多重化に対しても適用可能である。また、ノードは2台に限定されず、3台以上であってもよい。
データ操作要求装置130は、データ操作要求をノード110、120に対してネットワーク150を通じて送信し、またノード110、120から上記データ操作要求に対する応答を受信する機能を有する。データ操作要求装置130は、データ操作要求の送信では、データ操作要求を多重化し、同じデータ操作要求をノード110とノード120とに同時に送信する。
データ操作要求で要求する操作には、PUT操作、GET操作、DELETE操作の種別がある。PUT操作はキーとバリューを指定した書き込み操作、GET操作はキーに対応したデータの読み込み操作、DELETE操作はキーを指定したデータの削除操作である。本実施形態では、PUT操作とDELETE操作に係るデータ操作要求には、データ多重化システム100で一意に識別可能な識別子を付加する。本明細書では、この識別子を操作IDと定義する。操作IDとしては、操作対象とするデータのキー値とバージョン情報の組み合わせ、或いはデータ操作要求装置130で採番した順序番号を使用することができる。
ノード110は、データ操作要求装置130から受信したデータ操作要求に従って、自ノードの保有するデータを操作し、その操作結果をデータ操作要求装置130へ返却する機能を有する。ノード110は、処理装置111と永続記憶装置112と一時記憶装置113と通信装置114とを有する。
通信装置114は、専用のデータ通信回路からなり、ネットワーク150を介して接続されたデータ操作要求装置130、他のノード120、および共用記憶装置140などの各種装置との間でデータ通信を行う機能を有している。
永続記憶装置112は、ハードディスク装置などの不揮発性記憶装置で構成される。永続記憶装置112は、更新履歴記憶部1121とデータレコード記憶部1122とを有する。データレコード記憶部1122は、データレコード11221を記憶する。各々のデータレコードは、KVデータである。KVデータは、キーとバリューとから構成される。バリューは値とバージョン情報とを有する。このバージョン情報は、CAS(Compare−And−Swap)命令によるアトミックなデータ書き込みの制御に使用される。更新履歴記憶部1121は、データレコード11221に対する更新後ログ11211を記憶する。更新後ログ11211もまた、KVデータである。すなわち、永続記憶装置112はKVSである。
一時記憶装置113は、RAMなどの不揮発性記憶装置で構成される。一時記憶装置113には、WAL方式における更新後ログ1131が書き出される。更新後ログ1131には、当該更新後ログ1131に対応するデータ操作要求に付加されていた操作IDと同じ操作IDが付加される。これによって、更新後ログ1131とデータ操作要求との対応関係が明確になる。なお、更新後ログ1131の時間的な順序は、一時記憶装置113および永続記憶装置112上における更新後ログ1131の記憶順序によって特定される。また各々の更新後ログ1131は、1つのKVデータで構成される。
処理装置111は、データ操作部1111とチェックポイント処理部1112とを有する。
データ操作部1111は、データ操作要求装置130から受信したデータ操作要求を実行する機能を有する。データ操作部1111は、データ操作要求装置130から受信したデータ操作要求の種別がPUT操作およびDELETE操作の場合、WAL方式で実行する。すなわち、データ操作部1111は、PUT操作およびDELETE操作を実行したデータレコードの更新後ログ1131を一時記憶装置113に書き込んだ時点でPUT操作およびDELETE操作の完了(コミット)とみなし、データ操作要求装置130に対して応答を返す。実際のデータに対するPUT操作およびDELETE操作は、後述するチェックポイント処理にて実施される。
また、データ操作部1111は、受信したデータ操作要求の種別がGET操作の場合、GET操作で指定されたキーを持つKVデータを一時記憶装置113中のより新しい更新後ログ1131から順に検索し、要求元のデータ操作要求装置130へ返却する。若し、GET操作で指定されたキーを持つKVデータが一時記憶装置113の更新後ログ1131に存在しなければ、データレコード記憶部1122からGET操作で指定されたキーを持つKVデータを検索し、要求元のデータ操作要求装置130へ返却する。
チェックポイント処理部1112は、適切な契機もしくは間隔でチェックポイント処理を実行する機能を有する。チェックポイント処理部1112は、チェックポイント処理では、一時記憶装置113に記憶されている更新後ログ1131を更新時刻のより古いものから順番に取り出し、以下の処理を実行する。まず、チェックポイント処理部1112は、取り出した更新後ログ1131を永続記憶装置112の更新履歴記憶部1121に書き込むと共に、この書き込んだ更新後ログ1131に関する情報(以下、チェックポイント情報と呼ぶ)を通信装置114を通じて共用記憶装置140に書き込み、次に、当該更新後ログ1131に基づいて、永続記憶装置112のデータレコード記憶部1122を更新する。共用記憶装置140に書き込むチェックポイント情報は、更新履歴記憶部1121に書き込んだ更新後ログ1131を特定できる情報であれば任意でよい。本実施形態では、更新履歴記憶部1121に書き込んだ更新後ログ1131中の操作IDをチェックポイント情報とする。なお、チェックポイント処理時に一時記憶装置113に複数の更新後ログ1131が記憶されている場合、その更新時刻のより古いものから順番にチェックポイント情報を共用記憶装置140に上書きしていくと、上記複数の更新後ログ1131のうちの最新の更新後ログ1131の操作IDだけが共用記憶装置140に記録されることになる。勿論、上書きでなく追記していくことで、更新後ログ1131の操作IDの履歴を共用記憶装置140に記憶するようにしてもよい。
ノード120は、ノード110と同じ構成および機能を有する。すなわち、ノード120を構成する処理装置121と永続記憶装置122と一時記憶装置123と通信装置124は、ノード110を構成する処理装置111と永続記憶装置112と一時記憶装置113と通信装置114と同じ構成および機能を有する。また、処理装置121を構成するデータ操作部1211とチェックポイント処理部1212とは、処理装置111を構成するデータ操作部1111とチェックポイント処理部1112と同じ機能を有する。さらに、永続記憶装置122の更新履歴記憶部1221とデータレコード記憶部1222とは、永続記憶装置112の更新履歴記憶部1121とデータレコード記憶部1122と同じ機能を有する。このため、データ操作要求装置130から同じデータ操作要求が2台のノード110、120に送信された場合には、双方のノード110、120で同じ処理が行われるようになっている。
共用記憶装置140は、ハードディスク装置などの不揮発性記憶装置で構成される。共用記憶装置140は、ノード110に対応する記憶域141とノード120に対応する記憶域142とを有する。記憶域141は、ノード110のチェックポイント情報を記憶するために使用され、記憶域142は、ノード120のチェックポイント情報を記憶するために使用される。
次に本実施形態に係るデータ多重化システム100の動作を説明する。
データ操作要求装置130は、データ操作要求をノード110に対して送信する場合、同じデータ操作要求を他のノード120に対しても送信する。なお、データ操作要求の多重化は、全ての種別のデータ操作要求に対して行ってもよいし、PUT操作とDELETE操作で多重化を行い、GET操作は何れか一方のノードに対して送信するようにしてもよい。
データ操作要求装置130から送信されたデータ操作要求がノード110、120においてどのように処理されるかについて、PUT操作を例に挙げて説明する。より具体的には、先行するGET操作によってノード110(または120)から取得したデータAのバリューを更新してPUT操作でノード110、120に保存する場合を例に挙げて説明する。なお、データAのキーはkey1、GET時のバリューのバージョン情報は1、更新後のバージョン情報は2とする。
データ操作要求装置130は、更新後データのPUT操作にかかるデータ操作要求をネットワーク150を通じてノード110とノード120とに対して送信する。
ノード110では、上記データ操作要求は通信装置114で受信されて処理装置111のデータ操作部1111に伝達される。データ操作部1111は、データ操作要求に含まれる操作対象データのキーkey1を有する最新の更新後ログ1131を一時記憶装置113から検索する。そして、検索に成功すると、その更新後ログ1131中のバージョン情報がGET操作時と同じ「1」でなければ、他のデータ操作要求によって既に当該データが更新されているため、今回のデータ操作要求を失敗させる。この場合、データ操作部1111は、データ操作要求が失敗した旨の応答を通信装置114を通じてデータ操作要求装置130へ送信する。一方、更新後ログ1131に含まれる操作対象データのバージョン情報がGET操作時と同じ「1」であれば、バリュー中の値を更新後の値に変更すると共にバージョン情報を「1」から「2」に変更した更新後ログ1131を一時記憶装置113に書き込む。このとき、今回のデータ操作要求に付加されている操作IDを上記書き込む更新後ログ1131に付加する。そして、データ操作部1111は、この更新後ログ1131の書込み完了をもって操作完了と判断し、操作が正常に完了した旨の応答を通信装置114を通じてデータ操作要求装置130へ送信する。
また、データ操作部1111は、データ操作要求に含まれる操作対象データのキーkey1を有する最新の更新後ログ1131が一時記憶装置113に存在しなければ、当該キーkey1を有するKVデータをデータレコード記憶部1122から読み出し、そのバリューのバージョン情報がGET操作時と同じ「1」であるか否かを調べる。若し、GET操作時と同じ「1」でなければ、他のデータ操作要求によって既に当該データが更新されているため、今回のデータ操作要求を失敗させる。この場合、データ操作部1111は、データ操作要求が失敗した旨の応答を通信装置114を通じてデータ操作要求装置130へ送信する。一方、GET操作時と同じ「1」であれば、バリュー中の値を更新後の値に変更すると共にバージョン情報を「1」から「2」に変更した更新後ログ1131を一時記憶装置113に書き込む。このとき、今回のデータ操作要求に付加されている操作IDを上記書き込む更新後ログ1131に付加する。そして、データ操作部1111は、この更新後ログ1131の書込み完了をもって操作完了と判断し、操作が正常に完了した旨の応答を通信装置114を通じてデータ操作要求装置130へ送信する。
ノード120では、データ操作要求装置130から送信された上記データ操作要求は通信装置124で受信されて処理装置121のデータ操作部1211に伝達される。データ操作部1211は、ノード110のデータ操作部1111と同様の処理を実行し、操作結果をデータ操作要求装置130へ送信する。
次に、チェックポイント時の処理を説明する。
ノード110の処理装置111におけるチェックポイント処理部1112は、チェックポイントが到来すると、一時記憶装置113に記憶されている更新後ログ1131を更新時刻の古いものから順番に読み出して以下の処理を行う。
まず、チェックポイント処理部1112は、読み出した更新後ログ1131を永続記憶装置112の更新履歴記憶部1121に書き込み、この書き込んだ更新後ログ1131に関するチェックポイント情報を通信装置114を通じて共用記憶装置140の記憶域141に書き込む。次に、チェックポイント処理部1112は、上記読み出した更新後ログ1131に基づいて永続記憶装置112のデータレコード記憶部1122を更新する。例えば、更新後ログ1131が、キーkey1を有するKVデータに関するログであれば、データレコード記憶部1122中のキーkey1を有するデータレコード11221のバリューを更新後ログ1131中の更新後のバリューに更新する。
次に、何れかのノードに障害が発生した際に、当該障害の発生したノードで消失した更新後ログを正常な他のノードが特定する方法について説明する。
図2はデータ多重化システム100の各部の状態の一例を示す模式図であり、ノード110の一時記憶装置113と更新履歴記憶部1121の状態、ノード120の一時記憶装置123と更新履歴記憶部1221の状態、共用記憶装置140の記憶域141、142の状態を示している。この例では、ノード110の更新履歴記憶部1121には、操作IDがX1〜X3の更新後ログが書き込まれており、一時記憶装置113には操作IDがX4〜X6の更新後ログが書き込まれている。他方、ノード120の更新履歴記憶部1221には、操作IDがX1〜X5の更新後ログが書き込まれており、一時記憶装置123には操作IDがX6の更新後ログが書き込まれている。また、共用記憶装置140の記憶域141には、更新履歴記憶部1121に書き込まれた更新後ログのうち直前のチェックポイント処理で最後に書き込まれた更新後ログの操作IDであるX3が書き込まれ、記憶域142には、更新履歴記憶部1221に書き込まれた更新後ログのうち直前のチェックポイント処理で最後に書き込まれた更新後ログの操作IDであるX5が書き込まれている。
図3は、図2に示した状態においてノード110に障害が発生したときの状況を示す。ノード110では、一時記憶装置113が揮発性であるため更新後ログの全てが消失している。他方、不揮発性である更新履歴記憶部1121と共用記憶装置140、および、障害の発生していないノード120の一時記憶装置123、更新履歴記憶部1221は、記憶内容が維持されている。このため、例えばノード110側のオペレータ操作によって、ノード120からネットワーク150を通じて共用記憶装置140のノード110用の記憶域141を参照すると、ノード110が障害に遭遇する前に更新履歴記憶部1121に書き込んだ最後の更新後ログの操作IDとして、X3を取得することができる。このため、ノード110において障害によって消失した更新後ログは、操作IDがX3より後の操作IDを有する更新後ログ、即ち操作IDがX4〜X6の更新後ログであることが判明する。
このように本実施形態によれば、障害の発生したノードにおいて消失した更新後ログを他ノードから速やかに特定することができる。その理由は、各々のノードのチェックポイント処理部がチェックポイント到来時に、一時記憶装置に記憶されている更新後ログを自ノードの更新履歴記憶部に書き込むと共に、その書き込んだ更新後ログに関するチェックポイント情報を共用記憶装置に書き込むためである。
特に、データ操作要求に操作IDを付加すると共に、この操作IDを更新後ログに付加して一時記憶装置および更新履歴記憶部に書き込み、共用記憶装置に書き込むチェックポイント情報を更新履歴記憶部に書き込んだ最新の更新後ログの操作IDとすることにより、共用記憶装置に書き込むチェックポイント情報の情報量を最小限にすることができると共に、消失した更新後ログの特定を簡易に行うことができる。
[第2の実施形態]
図4を参照すると、本発明の第2の実施形態に係るデータ多重化システム200は、ノード210とノード220とデータ操作要求装置230と共用記憶装置240とがネットワーク250を通じて相互に接続されている。このうち、データ操作要求装置230と共用記憶装置240とネットワーク250とは、図1に示した第1の実施形態におけるデータ操作要求装置130と共用記憶装置140とネットワーク150と同じである。
ノード210は、処理装置211と永続記憶装置212と一時記憶装置213と通信装置214とを有する。このうち、永続記憶装置212と一時記憶装置213と通信装置214とは、図1に示した第1の実施形態における永続記憶装置112と一時記憶装置113と通信装置114と同じである。
処理装置211は、データ操作部2111とチェックポイント処理部2112と障害回復部2113と他ノード障害回復部2114とを有する。このうち、データ操作部2111とチェックポイント処理部2112とは、図1に示した第1の実施形態におけるデータ操作部1111とチェックポイント処理部1112と同じである。
障害回復部2113は、ネットワーク250を通じて他のノードから受信した更新後ログを用いて自ノードの障害回復処理を行う機能を有する。
他ノード障害回復部2114は、障害の発生した他ノードにおいて消失した更新後ログを特定する機能と、特定した更新後ログに対応する自ノードの更新後ログを他ノードへ送信する機能とを有する。
ノード220は、ノード210と同じ構成および機能を有する。すなわち、ノード220を構成する処理装置221と永続記憶装置222と一時記憶装置223と通信装置224は、ノード210を構成する処理装置211と永続記憶装置212と一時記憶装置213と通信装置214と同じ構成および機能を有する。また、処理装置221を構成するデータ操作部2211とチェックポイント処理部2212と障害回復部2213と他ノード障害回復部2214とは、処理装置211を構成するデータ操作部2111とチェックポイント処理部2112と障害回復部2113と他ノード障害回復部2114と同じ機能を有する。さらに、永続記憶装置222の更新履歴記憶部2221とデータレコード記憶部2222とは、永続記憶装置212の更新履歴記憶部2121とデータレコード記憶部2122と同じ機能を有する。
次に本実施形態に係るデータ多重化システム200の動作を説明する。本実施形態に係るデータ多重化システム200の動作のうち、障害回復部2113、2213と他ノード障害回復部2114、2214の動作以外は、図1に示した第1の実施形態に係るデータ多重化システム100と同じである。
次に、ノード210に障害が発生した場合を例に挙げて、障害回復部2113、2213と他ノード障害回復部2114、2214の動作を説明する。
図5は他ノード障害回復部の処理の一例を示すフローチャートである。以下、図5を参照して、ノード220の処理装置221における他ノード障害回復部2214の動作を説明する。他ノード障害回復部2214は、ノード210に障害が発生したことを、オペレータからの通知或いはノード210から定期的に受信しているハートビート信号の途絶等によって検出すると、図5に示す処理の実行を開始する。まず、他ノード障害回復部2214は、通信装置224を通じてネットワーク250経由で共用記憶装置240のノード210用の記憶域241をアクセスし、ノード210が障害に遭遇する前に更新履歴記憶部2121に書き込んだ最後の更新後ログの操作IDを読み出す(ステップS201)。
次に他ノード障害回復部2214は、自ノードの更新履歴記憶部2221および一時記憶装置223に記憶されている更新後ログのうち、上記ステップS201で読み出した操作IDより後の操作IDを有する更新後ログを、障害ノード201で消失した更新後ログに決定する(ステップS202)。
次に、他ノード障害回復部2214は、障害の発生したノード210が障害回復動作を実行できる状態になったことを、オペレータからの通知或いはノード210からのハートビート信号の受信等によって検出すると、上記決定した更新後ログに対応する自ノードの更新後ログを一時記憶装置223および更新履歴記憶部2221から読み出し、通信装置224を通じてネットワーク250経由でノード210へ送信する(S203)。
図6は障害回復部の処理の一例を示すフローチャートである。以下、図6を参照して、ノード210の処理装置211における障害回復部2113の動作を説明する。まず、ノード210の障害回復部2113は、ノード220から送信された障害回復に使用する更新後ログを通信装置214から受信する(S211)。次に障害回復部2113は、受信した更新後ログとデータレコード記憶部2122に記憶されているデータレコードとを用いて、ロールフォワード処理により、データレコード記憶部2122を更新する(ステップS212)。これによって、ノード210が障害発生前にコミットしていたが、データレコード記憶部2122に反映できていなかったPUT操作およびDELETE操作が全て反映される。これにより、ノード210の状態はノード220の状態と同期した状態になり、障害状態から回復する。
このように本実施形態によれば、第1の実施形態と同様の効果が得られると共に、障害の発生したノードで消失した更新後ログに対応する更新後ログを他のノードから障害の発生したノードに送信して、障害回復処理を自動的に行うことができる。
[第3の実施形態]
図7を参照すると、本発明の第3の実施形態に係るデータ多重化システム300は、ノード310とノード320とデータ操作要求装置330−1とデータ操作要求装置330−2と共用記憶装置340と順序番号採番装置360とがネットワーク350を通じて相互に接続されている。このうち、共用記憶装置340とネットワーク350とは、図4に示した第2の実施形態における共用記憶装置240とネットワーク250と同じである。
データ操作要求装置330−1は、データ操作要求をノード310、320に対してネットワーク350を通じて送信し、またノード310、320から上記データ操作要求に対する応答を受信する機能を有する。データ操作要求装置330−1は、データ操作要求の送信では、順序番号採番装置360に対して番号取得要求を送信してデータ多重化システム300において一意な順序番号を取得し、この順序番号を操作IDとして付加してデータ操作要求を多重化し、同じデータ操作要求をノード310とノード320とに同時に送信する。
データ操作要求装置330−2は、データ操作要求装置330−1と同様の機能を有する。
順序番号採番装置360は、データ操作要求装置330−1およびデータ操作要求装置330−2から順序番号の取得を要求される毎に、データ多重化システム300において一意な順序番号を新たに採番し、要求元のデータ操作要求装置へ提供する。例えば、順序番号採番装置360は、順序番号の取得が要求される毎に、直前に採番した順序番号に1を加えた順序番号を生成し、提供する。
ノード310は、処理装置311と永続記憶装置312と一時記憶装置313と通信装置314とを有する。このうち、永続記憶装置312と一時記憶装置313と通信装置314とは、図4に示した第2の実施形態における永続記憶装置212と一時記憶装置213と通信装置214と同じである。
処理装置311は、データ操作部3111とチェックポイント処理部3112と障害回復部3113と他ノード障害回復部3114とを有する。このうち、チェックポイント処理部3112と障害回復部3113と他ノード障害回復部3114とは、図4に示した第2の実施形態におけるチェックポイント処理部2112と障害回復部2113と他ノード障害回復部2114と同じである。
データ操作部3111は、データ操作要求装置330−1およびデータ操作要求装置330−2から受信したデータ操作要求を、データ操作要求に付加されている順序番号の順に実行する機能を有する。すなわち、データ操作部1111は、データ操作要求を到着順でなく、付加されている順序番号の順に処理する。また、データ操作部3111は、PUT操作およびDELETE操作に関してはWAL方式で実行する機能を有する。
ノード320は、ノード310と同じ構成および機能を有する。すなわち、ノード320を構成する処理装置321と永続記憶装置322と一時記憶装置323と通信装置324は、ノード310を構成する処理装置311と永続記憶装置312と一時記憶装置313と通信装置314と同じ構成および機能を有する。また、処理装置321を構成するデータ操作部3211とチェックポイント処理部3212と障害回復部3213と他ノード障害回復部3214とは、処理装置311を構成するデータ操作部3111とチェックポイント処理部3112と障害回復部3113と他ノード障害回復部3114と同じ機能を有する。さらに、永続記憶装置322の更新履歴記憶部3221とデータレコード記憶部3222とは、永続記憶装置312の更新履歴記憶部3121とデータレコード記憶部3122と同じ機能を有する。
次に本実施形態に係るデータ多重化システム300の動作を説明する。本実施形態に係るデータ多重化システム300の動作のうち、データ操作要求装置330−1、330−2、順序番号採番装置360、データ操作部3111、3211の動作以外は、図4に示した第2の実施形態に係るデータ多重化システム200と同じである。
次に、データ操作要求装置330−1、330−2と順序番号採番装置360の動作を説明する。
データ操作要求装置330−1、330−2は、データ操作要求を送信する場合、順序番号採番装置360に対して順序番号の取得を要求する。順序番号採番装置360は、上記要求に応じて順序番号を採番し、要求元のデータ操作要求装置330−1、330−2へ提供する。データ操作要求装置330−1、330−2は、取得した順序番号を操作IDとしてデータ操作要求に付加し、同じデータ操作要求をノード310とノード320とに同時に送信する。
図8は、データ操作部の処理の一例を示すフローチャートである。次に、図8を参照して、ノード310のデータ操作部3111の動作を説明する。
データ操作部3111は、通信装置314を通じてデータ操作要求装置330−1、330−2から新たなデータ操作要求を受信すると(ステップS301)、自身で記憶している実行済の最新の順序番号と受信したデータ操作要求に付加されている順序番号とを比較し、今回受信したデータ操作要求が順序通りに実行する次のデータ操作要求であるか否かを判別する(ステップS302)。
受信したデータ操作要求が順序通りに実行する次のデータ操作要求でなければ、データ操作部3111は、今回受信したデータ操作要求の処理の実行を保留にし、内部に記憶しておく(ステップS303)。そして、ステップS301の処理へ戻り、新たなデータ操作要求が受信されるのを待つ。
他方、今回受信したデータ操作要求が順序通りであれば、データ操作部3111は、そのデータ操作要求の処理を実行する(ステップS304)。このとき、データ操作要求がPUT操作およびDELETE操作であれば、WAL方式で実行する。次に、データ操作部3111は、自身が記憶する実行済の最新の順序番号を更新し(ステップS305)、保留中のデータ操作要求の中に順序通りに実行する次のデータ操作要求が存在するか否かを調査する(ステップS306)。存在すれば、その保留中のデータ操作要求を取り出して実行する(ステップS304)。そして再びステップS305、S306の処理を繰り返す。ステップS306の処理において、次に実行するデータ操作要求が保留中のデータ操作要求の中に存在しないことが判明すると、データ操作部3111は、ステップS301の処理へ戻って、新たなデータ操作要求が受信されるのを待つ。
このように本実施形態によれば、第2の実施形態と同様の効果が得られると共に、データ操作要求装置が複数台存在し、データ操作要求の到着順がノード毎に相違する場合でも、複数のノードにおけるデータの不整合の発生を防止でき、データの多重化を支障なく実施することができる。その理由は以下の通りである。
データ操作要求装置が1つの場合、ノード310とノード320とで処理されるデータ操作要求の順序は同じになる。しかし、データ操作要求装置が複数存在する場合、データ操作要求装置330−1から出されたデータ操作要求X1が、データ操作要求装置330−2から後の時刻に出されたデータ操作要求X2よりノード310、320の双方とも早く到着するとは限らず、ノード310では最初にデータ操作要求X1が到着し、次にデータ操作要求X2が到着し、他方、ノード320では最初にデータ操作要求X2が到着し、次にデータ操作要求X1が到着するケースが発生する。このため、各々のノード310、320においてデータ操作要求を到着順に処理すると、データ操作要求X1とX2とが同じキーのKVデータを操作対象とするPUT操作またはDELETE操作の場合、ノード310とノード320とでデータの不整合が発生する。しかし、本実施形態では、各々のノード310、320は到着順でなく、付与された順序番号の順にデータ操作要求X1、X2を処理するため、複数のノード間でデータの不整合は発生しない。データ操作要求装置から同じキーについて後に出されたGET操作が先に出されたPUT操作よりも早く処理されることがないので、古いデータをGETすることが防止される。
また本実施形態では、各々のノード310、320は、全てのデータ操作要求を順序番号通りに処理するため、ノード310とノード320とにおける更新後ログの時系列は互いに同じになる。この結果、第1の実施形態と同様に、共用記憶装置に書き込むチェックポイント情報の情報量を最小限にすることができ、また消失した更新後ログの特定を簡易に行うことができる。
[第4の実施形態]
図9を参照すると、本発明の第4の実施形態に係るデータ多重化システム400は、ノード410とノード420とデータ操作要求装置430−1とデータ操作要求装置430−2と共用記憶装置440と順序番号採番装置460とがネットワーク450を通じて相互に接続されている。
データ操作要求装置430−1は、データ操作要求をノード410、420に対してネットワーク450を通じて送信し、またノード410、420から上記データ操作要求に対する応答を受信する機能を有する。データ操作要求装置430−1は、データ操作要求の送信では、順序番号採番装置460に対して、操作対象とするデータのキーを指定した番号取得要求を送信してデータ多重化システム400においてキー毎に一意な順序番号を取得し、この順序番号を操作IDとして付加してデータ操作要求を多重化し、同じデータ操作要求をノード410とノード420とに同時に送信する。
データ操作要求装置430−2は、データ操作要求装置430−1と同様の機能を有する。
順序番号採番装置460は、データ操作要求装置430−1およびデータ操作要求装置430−2から順序番号の取得を要求されると、キー毎にデータ多重化システム400において一意な順序番号を新たに採番し、要求元のデータ操作要求装置へ提供する。例えば、順序番号採番装置460は、或るキーkey1を指定して順序番号の取得が要求されると、同じキーkey1を指定した直前の取得要求に対して提供した順序番号に1を加えた順序番号を生成し、提供する。
ノード410は、処理装置411と永続記憶装置412と一時記憶装置413と通信装置414とを有する。このうち、永続記憶装置412と一時記憶装置413と通信装置414とは、図7に示した第3の実施形態における永続記憶装置312と一時記憶装置313と通信装置314と同じである。
処理装置411は、データ操作部4111とチェックポイント処理部4112と障害回復部4113と他ノード障害回復部4114とを有する。
データ操作部4111は、データ操作要求装置430−1およびデータ操作要求装置430−2から受信したデータ操作要求を、データ操作要求に付加されている順序番号の順に実行する機能を有する。本実施形態では、データ操作要求には、操作対象となるデータのキー毎に順序番号が付与されている。このため、データ操作部4111は、同じキーのKVデータに関する操作については、データ操作要求を到着順でなく付加されている順序番号の順に処理する。これによって、ノード410とノード420との間で発生するデータの不整合を防止する。他方、異なるキーのKVデータに関する操作に関しては、データ操作部4111は、到着順にデータ操作要求を処理する。これによって、無駄な待ち合わせを防止する。
但し、異なるキーのKVデータに関する操作についてデータ操作部4111において到着順にデータ操作要求を処理するため、ノード410とノード420とに到着するデータ操作要求の順序が逆転すると、更新後ログ4131の時系列がノード410とノード420とで同じにならない。このため、何れか一方のノードの障害復旧時、他方のノードにおける更新後ログの時系列のうち、障害ノードが永続記憶装置に最後に書き出した更新後ログに対応する更新後ログ以降のログを正常ノードから抽出する方法では、障害ノードで消失した全ての更新後ログを抽出できないケースが発生し、復旧されないデータが発生する。そこで、本実施形態では、正常ノードから抽出する更新後ログは余裕を見て余分に抽出する。どのような情報を基に、どの程度余分に抽出するか等については後述する。
チェックポイント処理部4112は、適切な間隔でチェックポイント処理を実行する機能を有する。チェックポイント処理部4112が行うチェックポイント処理は、共用記憶装置440に書き込むチェックポイント情報を除き、第3の実施形態におけるチェックポイント処理部3112と同じである。チェックポイント処理部4112は、永続記憶装置412の更新履歴記憶部4121に書き込んだ更新後ログ4131に付加されている操作IDを更新順に列挙したリストと当該チェックポイントの時刻とを、チェックポイント情報として、共用記憶装置440の記憶域441に書き込む。
障害回復部4113は、ネットワーク450を通じて他のノードから受信した更新後ログを用いて自ノードの障害回復処理を行う機能を有する。
他ノード障害回復部4114は、障害の発生した他ノードにおいて消失した更新後ログを特定する機能と、特定した更新後ログに対応する自ノードの更新後ログを他ノードへ送信する機能とを有する。
ノード420は、ノード410と同じ構成および機能を有する。すなわち、ノード420を構成する処理装置421と永続記憶装置422と一時記憶装置423と通信装置424は、ノード410を構成する処理装置411と永続記憶装置412と一時記憶装置413と通信装置414と同じ構成および機能を有する。また、処理装置421を構成するデータ操作部4211とチェックポイント処理部4212と障害回復部4213と他ノード障害回復部4214とは、処理装置411を構成するデータ操作部4111とチェックポイント処理部4112と障害回復部4113と他ノード障害回復部4114と同じ機能を有する。さらに、永続記憶装置422の更新履歴記憶部4221とデータレコード記憶部4222とは、永続記憶装置412の更新履歴記憶部4121とデータレコード記憶部4122と同じ機能を有する。
次に本実施形態に係るデータ多重化システム400の動作を説明する。
まず、データ操作要求装置430−1、430−2と順序番号採番装置460の動作を説明する。
データ操作要求装置430−1、430−2は、データ操作要求を送信する場合、順序番号採番装置460に対して操作対象となるデータのキーを指定して順序番号の取得を要求する。順序番号採番装置460は、上記要求に応じてキー毎に順序番号を採番し、要求元のデータ操作要求装置430−1、430−2へ提供する。データ操作要求装置430−1、430−2は、取得した順序番号を操作IDとしてデータ操作要求に付加し、同じデータ操作要求をノード410とノード420とに同時に送信する。
図10は、データ操作部の処理の一例を示すフローチャートである。次に、図10を参照して、ノード410のデータ操作部4111の動作を説明する。なお、ノード420のデータ操作部4211の動作は、ノード410のデータ操作部4111と同じである。
データ操作部4111は、通信装置414を通じてデータ操作要求装置430−1、430−2から新たなデータ操作要求を受信すると(ステップS401)、自身で記憶している同じキーについての実行済の最新の順序番号と受信したデータ操作要求に付加されている順序番号とを比較し、今回受信したデータ操作要求が同一キーに関して順序通りに実行する次のデータ操作要求であるか否かを判別する(ステップS402)。
今回受信したデータ操作要求が同一キーに関して順序通りに実行する次のデータ操作要求でなければ、データ操作部4111は、今回受信したデータ操作要求の処理の実行を保留にし、内部にキー別に記憶しておく(ステップS403)。そして、ステップS401の処理へ戻り、新たなデータ操作要求が受信されるのを待つ。
他方、今回受信したデータ操作要求が順序通りであれば、データ操作部4111は、そのデータ操作要求の処理を実行する(ステップS404)。このとき、PUT操作およびDELETE操作に関してはWAL方式で実行する。次に、データ操作部4111は、自身が記憶する同一キーに関する実行済の最新の順序番号を更新し(ステップS405)、同一キーを有する保留中のデータ操作要求の中に順序通りに実行する次のデータ操作要求が存在するか否かを調査する(ステップS406)。存在すれば、その保留中のデータ操作要求を取り出して実行する(ステップS404)。そして再びステップS405、S406の処理を繰り返す。ステップS406の処理において、次に実行するデータ操作要求が保留中のデータ操作要求の中に存在しないことが判明すると、データ操作部4111は、ステップS401の処理へ戻って、新たなデータ操作要求が受信されるのを待つ。
次に、ノード410のチェックポイント処理部4112の動作を説明する。なお、ノード420のチェックポイント処理部4212の動作は、ノード410のチェックポイント処理部4212と同じである。
チェックポイント処理部4112は、チェックポイントが到来すると、一時記憶装置413に記憶されている更新後ログ4131をその更新時刻の古いものから順に読み出し、更新後ログ4131毎に以下の処理を行う。
まず、チェックポイント処理部4112は、読み出した更新後ログ4131を永続記憶装置412の更新履歴記憶部4121に書き込み、この書き込んだ更新後ログ4131に付加されている操作IDをリスト(初期状態はNULL)に記載する。次に、チェックポイント処理部4112は、上記読み出した更新後ログ4131に基づいて永続記憶装置412のデータレコード記憶部4122を更新する。このような処理を更新後ログ4131毎に繰り返し、最後の更新後ログを処理し終えると、上記リストに今回のチェックポイント時刻を付加したものをチェックポイント情報として通信装置414を通じて共用記憶装置440の記憶域441に書き込む。
図11は他ノード障害回復部の処理の一例を示すフローチャートである。以下、図11を参照して、ノード420の処理装置421における他ノード障害回復部4214の動作を説明する。なお、ノード410の他ノード障害回復部4114の動作は、ノード420の他ノード障害回復部4214と同じである。
他ノード障害回復部4214は、ノード410に障害が発生したことを、オペレータからの通知或いはノード410から定期的に受信しているハートビート信号の途絶等によって検出すると、図11に示す処理の実行を開始する。まず、他ノード障害回復部4214は、通信装置424を通じてネットワーク450経由で共用記憶装置440のノード410用の記憶域441をアクセスし、ノード410が障害に遭遇する直前に更新履歴記憶部4121に最後に書き込んだチェックポイント情報を読み出す(ステップS411)。
次に、他ノード障害回復部4214は、上記読み出したチェックポイント情報中のリストから最新の更新後ログの操作IDを読み出す(ステップS412)。次に、他ノード障害回復部4214は、ステップS412で読み出した操作IDと同じ操作IDをリスト中に有するチェックポイント情報を共用記憶装置440の自ノード420用の記憶域442から検索する(ステップS413)。次に、他ノード障害回復部4214は、ステップS413で検索したチェックポイント情報の次のチェックポイントで書き込まれたチェックポイント情報を共用記憶装置440の自ノード420用の記憶域442から読み出す(ステップS414)。次に、他ノード障害回復部4214は、ステップS414で読み出したチェックポイント情報中のチェックポイント時刻から所定時間前の時刻より古く且つ当該時刻に最も近いチェックポイント時刻を有するチェックポイント情報を共用記憶装置440の自ノード420用の記憶域442から検索する(ステップS415)。ここで、上記所定時間は後述するTの二倍の2Tである。次に、他ノード障害回復部4214は、ステップS415で検索したチェックポイント情報中のリストに記載された最新の更新後ログの操作IDと同じ操作IDを有する更新後ログ以降の自ノード420上の全ての更新後ログを、障害ノード410で消失した更新後ログに決定する(ステップS416)。
次に、他ノード障害回復部4214は、障害の発生したノード410が障害回復動作を実行できる状態になったことを、オペレータからの通知或いはノード410からのハートビート信号の受信等によって検出すると、ステップS416で決定した更新後ログを一時記憶装置423および更新履歴記憶部4221から読み出し、通信装置424を通じてネットワーク450経由でノード410へ送信する(S417)。
上記の他ノード障害回復部4214の動作について、より具体的に説明する。
今、データ操作要求装置430−1、430−2が同じデータ操作要求をノード410、420の何れか一方に送信してから他方に送信するまでの時間の最大値をTとする。例えば、データ操作要求装置430−1、430−2が、或るタイムアウト時間内にデータ操作要求を多重化して送信する場合、T=タイムアウト時間となる。このとき、最悪のケースでは、障害の発生したノードが永続記憶装置に最後に書き込んだ更新後ログと同じ更新後ログを正常ノードが受信した時刻より2T前の時刻で受信した更新後ログ以降の更新後ログが障害ノードから消失した可能性がある。この点について図12を参照して説明する。
図12は、データ操作要求装置430−1、430−2がノード410、420に対して同じデータ操作要求を送信している状況の一例を示すシーケンスチャートである。図12の例では、データ操作要求装置430−1は、最初にノード410に対してPUTX1()というデータ操作要求を送信した後、タイムアウトするまでに同じPUTX1()というデータ操作要求をノード420へ送信している。一方、データ操作要求装置430−2は、それとは反対に、最初にノード420に対してPUTX2()というデータ操作要求を送信した後、タイムアウトするまでに同じPUTX2()というデータ操作要求をノード410へ送信している。さらに、ノード410では、PUTX1()を受信した直後にチェックポイント処理を行い、その直後に障害が発生している。また、データ操作要求装置430−2からノード410へのPUTX2()の送信は障害発生直後に行われている。このような最悪の状況では、ノード420がPUTX1()を受信した時刻より2T前の時刻で受信したPUTX2()以降のデータ操作要求がノード410から消失する可能性がある。
但し、ノード420においてPUTX1()やPUTX2()等の個々のデータ操作要求を受信した時刻は記録されていない。他方、過去のチェックポイント時刻の履歴はチェックポイント情報に記録されている。チェックポイント時刻t1のチェックポイント情報に記録された更新後ログに対応するデータ操作要求の受信時刻は、一つ前のチェックポイント情報に記録されたチェックポイント時刻t0より過去の時刻になることはない。そこで、データ操作要求PUTX1()やPUTX2()の受信時刻を、その更新後ログをチェックポイント情報に書き込んだチェックポイントの1つ前のチェックポイントの時刻で近似する。この結果、障害ノードがチェックポイントで最後に書き込んだ更新後ログに対応する正常ノードの更新後ログの受信時刻から2T前の時刻に受信した更新後ログ以降の更新後ログは、図11に示すような手順に従って求めることができる。
次に、障害回復部4113、4213の動作を説明する。障害回復部4113、4213の動作は、第3の実施形態における障害回復部3113、3213と基本的に同じである。但し、他のノードから送られてくる障害回復用の更新後ログの中には、バージョン情報が古いデータが存在するケースがあるので、古いバージョン情報の更新後ログでデータを上書きしないようする。
このように本実施形態によれば、複数のノード410、420間で更新後ログの時系列に逆転が生じる状況下において、障害ノードで消失した更新後ログを適切な余裕を見て余分に特定するため、障害ノードで消失した全ての更新後ログを抽出できずに復旧されないデータが発生することを防止でき、且つ、障害回復用の更新後ログが無駄に増大することを防止することができる。
[第5の実施形態]
上述した第1乃至第4の実施形態では、障害の発生したノードで消失した更新後ログを決定する機能や、決定した更新後ログを正常なノードから取得して障害発生ノードへ送信する機能を各ノードに持たせたが、そのような機能をノードとは別に存在する管理装置に持たせることも可能である。図13はそのような実施形態に係るデータ多重化システム500のブロック図である。
図13に示すデータ多重化システム500は、管理装置470がネットワーク450に接続されている点で図9に示した第4の実施形態に係るデータ多重化システム400と相違する。管理装置470は、他ノード障害回復部471を有する。
他ノード障害回復部471は、例えば障害の発生したノードをノード410とすると、先ず、ノード410が書き込んだチェックポイント情報を共用記憶装置440から読み出す。次に、他ノード障害回復部471は、読み出したチェックポイント情報に基づいて障害の発生したノード410の一時記憶装置413から消失した可能性のある更新後ログを決定する。この決定は、第4の実施形態におけるノード420の他ノード障害回復部4214と同じ方法で行われる。そして、他ノード障害回復部471は、決定した更新後ログをノード420の更新履歴記憶部4221および一時記憶装置423から、例えばノード420のデータ操作部4211を通じて読み出し、障害回復用更新後ログとして、障害の発生したノード410へ送信する。
本実施形態では、第4の実施形態に管理装置470を追加したが、第2の実施形態や第3の実施形態に管理装置470と同様の管理装置を追加することも可能である。
[他の実施形態]
以上、幾つかの実施形態を挙げて本発明を説明したが、本発明は以上の実施形態にのみ限定されず、その他各種の付加変更が可能である。例えば、以下のような実施形態も本発明に含まれる。
複数のノード間で更新後ログの時系列に逆転が生じる状況として第4の実施形態を例示したが、本発明はそのような例に限定されない。例えば、複数のデータ操作要求装置がデータ操作要求に順序番号を一切付与せずに多重化して複数のノードへ送信し、各ノードでは、受信した順番にデータ操作要求を実行するデータ多重化システムに対しても本発明は適用可能である。そのようなデータ多重化システムでは、複数のノード間で更新後ログの時系列に逆転が生じると、ノード間でデータに矛盾が発生したり、実行されないデータ操作要求が発生するが、そのような事象を検出し正常に回復させることは可能である。従って、正常に回復したノードから障害発生ノードで消失した更新後ログを抽出する際に、本発明の第4の実施形態で説明した方法と同様の方法を使用することができる。
また第2乃至第4の実施形態では、ノードの台数が2台であるため、何れかのノードで障害が発生すると、障害の発生していないノードが1台になる。そのため、第2乃至第4の実施形態では、障害の発生していないノードの他ノード障害回復部は、自ノードから障害回復処理用の更新後ログを抽出している。しかしながら、ノードの台数が3台以上の場合、障害の発生していないノードの他ノード障害回復部は、自ノードからではなく、障害の発生していない他のノードから、障害回復処理用の更新後ログを抽出し、障害の発生したノードへ送信するようにしてもよい。
なお、本発明は、日本国にて2013年3月13日に特許出願された特願2013−050236の特許出願に基づく優先権主張の利益を享受するものであり、当該特許出願に記載された内容は、全て本明細書に含まれるものとする。
本発明は、KVデータを多重化する分散KVS等のデータ多重化システムに利用することができる。
100、200、300、400、500…データ多重化システム
110、210、310、410…ノード
111、211、311、411…処理装置
1111、2111、3111、4111…データ操作部
1112、2112、3112、4112…チェックポイント処理部
2113、3113、4113…障害回復部
2114、3114、4114…他ノード障害回復部
112、212、312、412…永続記憶装置
1121、2121、3121、4121…更新履歴記憶部
11211、21211、31211、41211…更新後ログ
1122、2122、3122、4122…データレコード部
11221、21221、31221、41221…データレコード
113、213、313、413…一時記憶装置
1131、2131、3131、4131…更新後ログ
114、214、314、414…通信装置

120、220、320、420…ノード
121、221、321、421…処理装置
1211、2211、3211、4211…データ操作部
1212、2212、3212、4212…チェックポイント処理部
2213、3213、4213…障害回復部
2214、3214、4214…他ノード障害回復部
122、222、322、422…永続記憶装置
1221、2221、3221、4221…更新履歴記憶部
12211、22211、32211、42211…更新後ログ
1222、2222、3222、4222…データレコード部
12221、22221、32221、42221…データレコード
123、223、323、423…一時記憶装置
1231、2231、3231、4231…更新後ログ
124、224、324、424…通信装置

130、230、330−1、330−2、430−1、430−2…データ操作要求装置

140、240、340、440…共用記憶装置
141、241、341、441…記憶域
1411、2411、3411、4411…チェックポイント情報
142、242、342、442…記憶域
1421、2421、3421、4421…チェックポイント情報

150、250、350、450…ネットワーク

360、460…順序番号採番装置

470…管理装置
471…他ノード障害回復部

Claims (21)

  1. 複数のノードを有し、該複数の前記ノードは、データ操作要求を多重化して同じ前記データ操作要求を複数の前記ノードへ送信するデータ操作要求装置から前記データ操作要求を受信するデータ多重化システムであって、
    複数の前記ノードからアクセス可能な共用記憶装置を有し、
    各々の前記ノードは、
    処理装置と、
    永続記憶装置と、
    一時記憶装置と
    を有し、
    前記永続記憶装置は、データレコードを記憶するデータレコード記憶部と前記データレコードの更新後ログを記憶する更新履歴記憶部とを有し、
    前記処理装置は、
    前記データ操作要求によって要求された操作を実行した前記データレコードの更新後ログを自ノードの前記一時記憶装置に書き込んだ時点で前記データ操作要求装置に対して応答を返すデータ操作手段と、
    チェックポイント到来時、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログに基づいて自ノードの前記データレコード記憶部を更新し、また、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログを自ノードの前記更新履歴記憶部に書き込むと共に、前記更新履歴記憶部に書き込んだ最新の前記更新後ログを特定する情報を有するチェックポイント情報を前記共用記憶装置に書き込むチェックポイント処理手段と
    を有する
    データ多重化システム。
  2. 各々の前記ノードの前記処理装置は、
    障害の発生した前記ノードが書き込んだ前記チェックポイント情報を前記共用記憶装置から読み出し、該読み出した前記チェックポイント情報に基づいて障害の発生した前記ノードの前記一時記憶装置から消失した可能性のある前記更新後ログを決定し、該決定した前記更新後ログと同じ前記更新後ログを障害の発生した前記ノード以外の前記ノードの前記更新履歴記憶部および前記一時記憶装置から読み出し、障害回復用更新後ログとして、障害の発生した前記ノードへ送信する他ノード障害回復手段
    を有する
    請求項1に記載のデータ多重化システム。
  3. 複数の前記ノードと前記共用記憶装置とに接続された管理装置を有し、
    前記管理装置は、
    障害の発生した前記ノードが書き込んだ前記チェックポイント情報を前記共用記憶装置から読み出し、該読み出した前記チェックポイント情報に基づいて障害の発生した前記ノードの前記一時記憶装置から消失した可能性のある前記更新後ログを決定し、該決定した前記更新後ログと同じ前記更新後ログを障害の発生した前記ノード以外の前記ノードの前記更新履歴記憶部および前記一時記憶装置から読み出し、障害回復用更新後ログとして、障害の発生した前記ノードへ送信する他ノード障害回復手段
    を有する
    請求項1に記載のデータ多重化システム。
  4. 各々の前記ノードの前記処理装置は、
    前記障害回復用更新後ログを受信し、該受信した前記障害回復用更新後ログを用いて自ノードの障害回復処理を行う障害回復手段
    を有する
    請求項2または3に記載のデータ多重化システム。
  5. 前記データ操作要求は、前記データ操作要求を一意に識別する操作IDを有し、
    前記データ操作手段は、前記更新後ログの前記一時記憶装置への書き込みでは、前記更新後ログに対応する前記データ操作要求の有する前記操作IDを前記更新後ログに付加して前記一時記憶装置に書き込み、
    前記チェックポイント処理手段は、前記チェックポイント情報の前記共用記憶装置への書き込みでは、最新の前記更新後ログに付加された前記操作IDを有する前記チェックポイント情報を前記共用記憶装置へ書き込む
    請求項2乃至4の何れかに記載のデータ多重化システム。
  6. 前記他ノード障害回復手段は、前記消失した可能性のある前記更新後ログの決定では、障害の発生した前記ノードが書き込んだ前記チェックポイント情報の前記操作IDを前記共用記憶装置から読み出し、該読み出した前記操作IDと同じ操作IDを有する前記更新後ログ以降の更新後ログを、前記消失した可能性のある前記更新後ログに決定する
    請求項5に記載のデータ多重化システム。
  7. 前記データ操作要求は、当該データ操作要求を一意に識別する操作IDを有し、
    前記データ操作手段は、前記更新後ログの前記一時記憶装置への書き込みでは、前記更新後ログに対応する前記データ操作要求の有する前記操作IDを前記更新後ログに付加して前記一時記憶装置に書き込み、
    前記チェックポイント処理手段は、前記チェックポイント情報の前記共用記憶装置への書き込みでは、前記更新履歴記憶部に書き込んだ前記更新後ログに付加された前記操作IDのリストとチェックポイント時刻とを有する前記チェックポイント情報を前記共用記憶装置へ書き込む
    請求項2乃至4の何れかに記載のデータ多重化システム。
  8. 前記他ノード障害回復手段は、前記消失した可能性のある前記更新後ログの決定では、前記障害回復用更新後ログを取得する前記ノードを障害回復用ノードと呼ぶとき、障害の発生した前記ノードが最後に書き込んだ前記チェックポイント情報を前記共用記憶装置から読み出し、該読み出した前記チェックポイント情報中の前記更新後ログのリストから最新の前記更新後ログの前記操作IDを読み出し、前記障害回復用ノードの前記チェックポイント情報のうち前記読み出した前記操作IDと同じ前記操作IDを前記リスト中に有する前記チェックポイント情報を前記共用記憶装置から読み出し、該読み出した前記チェックポイント情報の一つ前のチェックポイントで書き込まれた前記障害回復用ノードの前記チェックポイント情報を前記共用記憶装置から読み出し、該読み出した前記チェックポイント情報中のチェックポイント時刻に所定時間を加えた時刻より古く且つ当該時刻に最も近いチェックポイント時刻を有する前記障害回復用ノードの前記チェックポイント情報を前記共用記憶装置から検索し、該検索したチェックポイント情報中の前記リストに記載される最新の前記更新後ログ以降の前記障害回復用ノード上の前記更新後ログを、前記消失した可能性のある前記更新後ログに決定する
    請求項7に記載のデータ多重化システム。
  9. 前記所定時間は、前記データ操作要求装置が、複数の前記ノードのうちの最初の前記ノードへ前記データ操作要求を送信してから同じ前記データ操作要求を前記複数の前記ノードのうちの最後の前記ノードへ送信するまでの時間を二倍した時間である
    請求項8に記載のデータ多重化システム。
  10. それぞれが処理装置と永続記憶装置と一時記憶装置とを有する複数のノードと、該複数の前記ノードからアクセス可能な共用記憶装置とを有し、複数の前記ノードは、データ操作要求を多重化して同じ前記データ操作要求を複数の前記ノードへ送信するデータ操作要求装置から前記データ操作要求を受信し、前記永続記憶装置は、データレコードを記憶するデータレコード記憶部と前記データレコードの更新後ログを記憶する更新履歴記憶部とを有するデータ多重化システムにおけるデータ多重化方法であって、
    各々の前記ノードの前記処理装置が、前記データ操作要求によって要求された操作を実行した前記データレコードの更新後ログを自ノードの前記一時記憶装置に書き込んだ時点で前記データ操作要求装置に対して応答を返し、
    各々の前記ノードの前記処理装置が、チェックポイント到来時、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログに基づいて自ノードの前記データレコード記憶部を更新し、また、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログを自ノードの前記更新履歴記憶部に書き込むと共に、前記更新履歴記憶部に書き込んだ最新の前記更新後ログを特定する情報を有するチェックポイント情報を前記共用記憶装置に書き込む
    データ多重化方法。
  11. データ操作要求を多重化して送信するデータ操作要求装置と、他のノード装置と共用する共用記憶装置とに接続されるノード装置であって、
    処理装置と、
    永続記憶装置と、
    一時記憶装置と
    を有し、
    前記永続記憶装置は、データレコードを記憶するデータレコード記憶部と前記データレコードの更新後ログを記憶する更新履歴記憶部とを有し、
    前記処理装置は、
    前記データ操作要求によって要求された操作を実行した前記データレコードの更新後ログを自ノードの前記一時記憶装置に書き込んだ時点で前記データ操作要求装置に対して応答を返すデータ操作手段と、
    チェックポイント到来時、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログに基づいて自ノードの前記データレコード記憶部を更新し、また、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログを自ノードの前記更新履歴記憶部に書き込むと共に、前記更新履歴記憶部に書き込んだ最新の前記更新後ログを特定する情報を有するチェックポイント情報を前記共用記憶装置に書き込むチェックポイント処理手段と
    を有する
    ノード装置。
  12. 各々の前記ノードの前記処理装置は、
    障害の発生した前記ノードが書き込んだ前記チェックポイント情報を前記共用記憶装置から読み出し、該読み出した前記チェックポイント情報に基づいて障害の発生した前記ノードの前記一時記憶装置から消失した可能性のある前記更新後ログを決定し、該決定した前記更新後ログと同じ前記更新後ログを障害の発生した前記ノード以外の前記ノードの前記更新履歴記憶部および前記一時記憶装置から読み出し、障害回復用更新後ログとして、障害の発生した前記ノードへ送信する他ノード障害回復手段
    を有する
    請求項11に記載のノード装置。
  13. 各々の前記ノードの前記処理装置は、
    前記障害回復用更新後ログを受信し、該受信した前記障害回復用更新後ログを用いて自ノードの障害回復処理を行う障害回復手段
    を有する
    請求項12に記載のノード装置。
  14. 前記データ操作要求は、前記データ操作要求を一意に識別する操作IDを有し、
    前記データ操作手段は、前記更新後ログの前記一時記憶装置への書き込みでは、前記更新後ログに対応する前記データ操作要求の有する前記操作IDを前記更新後ログに付加して前記一時記憶装置に書き込み、
    前記チェックポイント処理手段は、前記チェックポイント情報の前記共用記憶装置への書き込みでは、最新の前記更新後ログに付加された前記操作IDを有する前記チェックポイント情報を前記共用記憶装置へ書き込む
    請求項12または13に記載のノード装置。
  15. 前記他ノード障害回復手段は、前記消失した可能性のある前記更新後ログの決定では、障害の発生した前記ノードが書き込んだ前記チェックポイント情報の前記操作IDを前記共用記憶装置から読み出し、該読み出した前記操作IDと同じ操作IDを有する前記更新後ログ以降の更新後ログを、前記消失した可能性のある前記更新後ログに決定する
    請求項14に記載のノード装置。
  16. 前記データ操作要求は、当該データ操作要求を一意に識別する操作IDを有し、
    前記データ操作手段は、前記更新後ログの前記一時記憶装置への書き込みでは、前記更新後ログに対応する前記データ操作要求の有する前記操作IDを前記更新後ログに付加して前記一時記憶装置に書き込み、
    前記チェックポイント処理手段は、前記チェックポイント情報の前記共用記憶装置への書き込みでは、前記更新履歴記憶部に書き込んだ前記更新後ログに付加された前記操作IDのリストとチェックポイント時刻とを有する前記チェックポイント情報を前記共用記憶装置へ書き込む
    請求項12乃至15の何れかに記載のノード装置。
  17. 前記他ノード障害回復手段は、前記消失した可能性のある前記更新後ログの決定では、前記障害回復用更新後ログを取得する前記ノードを障害回復用ノードと呼ぶとき、障害の発生した前記ノードが最後に書き込んだ前記チェックポイント情報を前記共用記憶装置から読み出し、該読み出した前記チェックポイント情報中の前記更新後ログのリストから最新の前記更新後ログの前記操作IDを読み出し、前記障害回復用ノードの前記チェックポイント情報のうち前記読み出した前記操作IDと同じ前記操作IDを前記リスト中に有する前記チェックポイント情報を前記共用記憶装置から読み出し、該読み出した前記チェックポイント情報の一つ前のチェックポイントで書き込まれた前記障害回復用ノードの前記チェックポイント情報を前記共用記憶装置から読み出し、該読み出した前記チェックポイント情報中のチェックポイント時刻に所定時間を加えた時刻より古く且つ当該時刻に最も近いチェックポイント時刻を有する前記障害回復用ノードの前記チェックポイント情報を前記共用記憶装置から検索し、該検索したチェックポイント情報中の前記リストに記載される最新の前記更新後ログ以降の前記障害回復用ノード上の前記更新後ログを、前記消失した可能性のある前記更新後ログに決定する
    請求項16に記載のノード装置。
  18. 前記所定時間は、前記データ操作要求装置が、複数の前記ノードのうちの最初の前記ノードへ前記データ操作要求を送信してから同じ前記データ操作要求を前記複数の前記ノードのうちの最後の前記ノードへ送信するまでの時間を二倍した時間である
    請求項17に記載のノード装置。
  19. 複数のノードと、複数の前記ノードからアクセス可能な共用記憶装置とを有し、各々の前記ノードは、処理装置と永続記憶装置と一時記憶装置とを有し、データ操作要求を多重化して同じ前記データ操作要求を複数の前記ノードへ送信するデータ操作要求装置から前記データ操作要求を受信し、前記永続記憶装置は、データレコードを記憶するデータレコード記憶部と前記データレコードの更新後ログを記憶する更新履歴記憶部とを有し、前記処理装置は、前記データ操作要求によって要求された操作を実行した前記データレコードの更新後ログを自ノードの前記一時記憶装置に書き込んだ時点で前記データ操作要求装置に対して応答を返すデータ操作手段と、チェックポイント到来時、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログに基づいて自ノードの前記データレコード記憶部を更新し、また、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログを自ノードの前記更新履歴記憶部に書き込むと共に、前記更新履歴記憶部に書き込んだ最新の前記更新後ログを特定する情報を有するチェックポイント情報を前記共用記憶装置に書き込むチェックポイント処理手段とを有する、データ多重化システムにおける前記複数のノードと前記共用記憶装置とに接続された管理装置であって、
    障害の発生した前記ノードが書き込んだ前記チェックポイント情報を前記共用記憶装置から読み出し、該読み出した前記チェックポイント情報に基づいて障害の発生した前記ノードの前記一時記憶装置から消失した可能性のある前記更新後ログを決定し、該決定した前記更新後ログと同じ前記更新後ログを障害の発生した前記ノード以外の前記ノードの前記更新履歴記憶部および前記一時記憶装置から読み出し、障害回復用更新後ログとして、障害の発生した前記ノードへ送信する他ノード障害回復手段
    を有する
    管理装置。
  20. データ操作要求を多重化して送信するデータ操作要求装置と、他のノード装置と共用する共用記憶装置とに接続され、処理装置と、永続記憶装置と、一時記憶装置とを有し、前記永続記憶装置は、データレコードを記憶するデータレコード記憶部と前記データレコードの更新後ログを記憶する更新履歴記憶部とを有するノード装置の前記処理装置を構成するコンピュータを、
    前記データ操作要求によって要求された操作を実行した前記データレコードの更新後ログを自ノードの前記一時記憶装置に書き込んだ時点で前記データ操作要求装置に対して応答を返すデータ操作手段と、
    チェックポイント到来時、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログに基づいて自ノードの前記データレコード記憶部を更新し、また、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログを自ノードの前記更新履歴記憶部に書き込むと共に、前記更新履歴記憶部に書き込んだ最新の前記更新後ログを特定する情報を有するチェックポイント情報を前記共用記憶装置に書き込むチェックポイント処理手段と
    して機能させるためのプログラム。
  21. 複数のノードと、複数の前記ノードからアクセス可能な共用記憶装置とを有し、各々の前記ノードは、処理装置と永続記憶装置と一時記憶装置とを有し、データ操作要求を多重化して同じ前記データ操作要求を複数の前記ノードへ送信するデータ操作要求装置から前記データ操作要求を受信し、前記永続記憶装置は、データレコードを記憶するデータレコード記憶部と前記データレコードの更新後ログを記憶する更新履歴記憶部とを有し、前記処理装置は、前記データ操作要求によって要求された操作を実行した前記データレコードの更新後ログを自ノードの前記一時記憶装置に書き込んだ時点で前記データ操作要求装置に対して応答を返すデータ操作手段と、チェックポイント到来時、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログに基づいて自ノードの前記データレコード記憶部を更新し、また、自ノードの前記一時記憶装置に記憶されている前記データレコードの更新後ログを自ノードの前記更新履歴記憶部に書き込むと共に、前記更新履歴記憶部に書き込んだ最新の前記更新後ログを特定する情報を有するチェックポイント情報を前記共用記憶装置に書き込むチェックポイント処理手段とを有する、データ多重化システムにおける前記複数のノードと前記共用記憶装置とに接続された管理装置を構成するコンピュータを、
    障害の発生した前記ノードが書き込んだ前記チェックポイント情報を前記共用記憶装置から読み出し、該読み出した前記チェックポイント情報に基づいて障害の発生した前記ノードの前記一時記憶装置から消失した可能性のある前記更新後ログを決定し、該決定した前記更新後ログと同じ前記更新後ログを障害の発生した前記ノード以外の前記ノードの前記更新履歴記憶部および前記一時記憶装置から読み出し、障害回復用更新後ログとして、障害の発生した前記ノードへ送信する他ノード障害回復手段
    として機能させるためのプログラム。
JP2015505087A 2013-03-13 2013-12-16 データ多重化システム Expired - Fee Related JP6028850B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013050236 2013-03-13
JP2013050236 2013-03-13
PCT/JP2013/007367 WO2014141343A1 (ja) 2013-03-13 2013-12-16 データ多重化システム

Publications (2)

Publication Number Publication Date
JP6028850B2 true JP6028850B2 (ja) 2016-11-24
JPWO2014141343A1 JPWO2014141343A1 (ja) 2017-02-16

Family

ID=51536046

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015505087A Expired - Fee Related JP6028850B2 (ja) 2013-03-13 2013-12-16 データ多重化システム

Country Status (3)

Country Link
US (1) US9836361B2 (ja)
JP (1) JP6028850B2 (ja)
WO (1) WO2014141343A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9639589B1 (en) * 2013-12-20 2017-05-02 Amazon Technologies, Inc. Chained replication techniques for large-scale data streams
US10284593B1 (en) * 2015-01-15 2019-05-07 EMC IP Holding Company LLC Protecting newly restored clients from computer viruses
WO2016117322A1 (ja) * 2015-01-22 2016-07-28 日本電気株式会社 処理要求装置、処理装置、データベースシステム、データベース更新方法およびプログラム記録媒体
CN105282244B (zh) * 2015-09-29 2018-10-02 华为技术有限公司 一种数据处理方法、装置、服务器及控制器
US10567500B1 (en) * 2015-12-21 2020-02-18 Amazon Technologies, Inc. Continuous backup of data in a distributed data store
US11120002B2 (en) * 2016-07-20 2021-09-14 Verizon Media Inc. Method and system for concurrent database operation
JP6939018B2 (ja) * 2017-03-30 2021-09-22 日本電気株式会社 情報管理方法および情報処理システム
JP6939246B2 (ja) * 2017-08-23 2021-09-22 富士通株式会社 処理分散プログラム、処理分散方法、および情報処理装置
US10754995B2 (en) * 2017-10-05 2020-08-25 Zadara Storage, Inc. Consistency across key value stores with shared journals
US10635523B2 (en) * 2018-02-23 2020-04-28 International Business Machines Corporation Fast recovery from failures in a chronologically ordered log-structured key-value storage system
US11138061B2 (en) * 2019-02-28 2021-10-05 Netapp Inc. Method and apparatus to neutralize replication error and retain primary and secondary synchronization during synchronous replication
US10761768B1 (en) 2019-02-28 2020-09-01 Netapp Inc. Method to address misaligned holes and writes to end of files while performing quick reconcile operation during synchronous filesystem replication
CN110532123B (zh) * 2019-08-30 2023-08-04 北京小米移动软件有限公司 HBase系统的故障转移方法及装置
US20210073198A1 (en) * 2019-09-09 2021-03-11 Oracle International Corporation Using persistent memory and remote direct memory access to reduce write latency for database logging
CN114327284B (zh) * 2021-12-30 2023-02-03 河北建筑工程学院 一种数据处理的方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0312773A (ja) * 1989-06-09 1991-01-21 Fujitsu Ltd データベース処理における局所異常回復処理方式
JPH04291618A (ja) * 1991-03-20 1992-10-15 Fujitsu Ltd 二重化ディスク制御方式
JPH1185408A (ja) * 1997-09-12 1999-03-30 Hitachi Ltd 記憶制御装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6988176B2 (en) 1997-09-12 2006-01-17 Hitachi, Ltd. Method and apparatus for data duplexing in storage unit system
JP4689137B2 (ja) 2001-08-08 2011-05-25 株式会社日立製作所 リモートコピー制御方法、及びストレージシステム
US7827214B1 (en) * 2003-02-14 2010-11-02 Google Inc. Maintaining data in a file system
JP5050358B2 (ja) 2006-01-27 2012-10-17 日本電気株式会社 データ複製システムおよびデータ複製方法
US7925624B2 (en) 2006-03-31 2011-04-12 Amazon Technologies, Inc. System and method for providing high availability data
US8074107B2 (en) * 2009-10-26 2011-12-06 Amazon Technologies, Inc. Failover and recovery for replicated data instances
US8856593B2 (en) * 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US8832022B2 (en) 2011-05-06 2014-09-09 Nec Corporation Transaction processing device, transaction processing method and transaction processing program
US8850144B1 (en) * 2012-03-29 2014-09-30 Emc Corporation Active replication switch

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0312773A (ja) * 1989-06-09 1991-01-21 Fujitsu Ltd データベース処理における局所異常回復処理方式
JPH04291618A (ja) * 1991-03-20 1992-10-15 Fujitsu Ltd 二重化ディスク制御方式
JPH1185408A (ja) * 1997-09-12 1999-03-30 Hitachi Ltd 記憶制御装置

Also Published As

Publication number Publication date
US20160041885A1 (en) 2016-02-11
US9836361B2 (en) 2017-12-05
WO2014141343A1 (ja) 2014-09-18
JPWO2014141343A1 (ja) 2017-02-16

Similar Documents

Publication Publication Date Title
JP6028850B2 (ja) データ多重化システム
KR101602312B1 (ko) 데이터 송신 방법, 데이터 수신 방법, 및 저장 장치
CA3121919C (en) System and method for augmenting database applications with blockchain technology
US9372908B2 (en) Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation
US9575849B2 (en) Synchronized backup and recovery of database systems
US9779128B2 (en) System and method for massively parallel processing database
EP2790112B1 (en) Method and system for data synchronization and data access apparatus
JP5091894B2 (ja) ストリーム回復方法、ストリーム回復プログラム、および、障害回復装置
US20150347250A1 (en) Database management system for providing partial re-synchronization and partial re-synchronization method of using the same
US10223007B1 (en) Predicting IO
EP2988220B1 (en) Computer system, computer-system management method, and program
US9229970B2 (en) Methods to minimize communication in a cluster database system
JPWO2014049691A1 (ja) 情報処理システム
JP2003263280A (ja) 複数リモートストレージのデータ同期方式
US20140108345A1 (en) Exchanging locations of an out of synchronization indicator and a change recording indicator via pointers
US20140156595A1 (en) Synchronisation system and method
JP6447258B2 (ja) 管理プログラム、管理方法、および管理装置
US11748215B2 (en) Log management method, server, and database system
US9563521B2 (en) Data transfers between cluster instances with delayed log file flush
KR20140047448A (ko) 트랜잭션 재시작 가능한 클라이언트 장치와 데이터베이스 서버 및 방법
CN110121712B (zh) 一种日志管理方法、服务器和数据库系统
US20150135004A1 (en) Data allocation method and information processing system
JP5685213B2 (ja) 差分レプリケーションシステム、マスターデータベース装置、及びスレーブデータベース装置
CN105491101B (zh) 数据的处理方法和装置
US20210248108A1 (en) Asynchronous data synchronization and reconciliation

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: 20160920

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161003

R150 Certificate of patent or registration of utility model

Ref document number: 6028850

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees