(57)【要約】【課題】分散データベースシステムで管理するデータと配信先ノードで管理するデータの整合性を分散データベースシステムにおける障害からの復旧中であっても確保する。【解決手段】第１データベース装置１１は、第１データベース装置１１と配信先ノード３の間のネットーワーク断などにより、キャッシュデータ更新応答電文を受信できなかったなら（Ｓ２０６）、第２データベース装置１２にマスター化指示を送信するとともに（Ｓ２０７）、送信元ノード２にデータ更新電文誘起応答電文を送信する（Ｓ２０８）。送信元ノード２は、データ更新電文誘起応答電文を受信したなら、データ更新リクエスト電文を第２データベース装置１２に送信する（Ｓ２１０）。第２データベース装置１２は、マスター化指示を受信し、再送信されたデータ更新リクエスト電文を受信したなら、キャッシュデータ更新リクエスト電文を配信先ノード３に送信する（Ｓ２１２）。【選択図】図５
2014026587.tif 000002
【特許請求の範囲】
【請求項１】
第１データベース装置と第２データベース装置とを備える分散データベースシステムであって、
前記第１データベース装置は、第１原本データを有し、前記第２データベース装置は、前記第１原本データに整合すべき第２原本データを有し、前記第１データベース装置と前記第２データベース装置は、前記第１原本データに整合すべきキャッシュデータを有する配信先ノードならびに、前記第１原本データ、前記第２原本データおよび前記キャッシュデータを更新するためのデータ更新リクエスト電文を前記第１データベース装置に送信する送信元ノードに対して通信可能であり、前記送信元ノードは、前記データ更新リクエスト電文を再送信させるためのデータ更新電文誘起応答電文を受信したなら、前記データ更新リクエスト電文を前記第２データベース装置に再送信するものであり、
前記第１データベース装置は、前記データ更新リクエスト電文を受信したなら、前記キャッシュデータを更新させるキャッシュデータ更新リクエスト電文を前記配信先ノードに送信し、前記配信先ノードからキャッシュデータ更新応答電文を受信したなら、前記第１原本データを更新するとともに、前記第２原本データを更新するための第２原本データ更新指示を前記第２データベース装置に送信し、前記第２データベース装置から第２原本データ更新応答を受信したなら、前記送信元ノードにデータ更新応答電文を送信するものであり、
前記第２データベース装置は、前記第２原本データ更新指示を受信したなら、前記第２原本データを更新するとともに、前記第２原本データ更新応答を前記第１データベース装置に送信するものであり、
前記配信先ノードは、前記キャッシュデータ更新リクエスト電文を受信したなら、前記キャッシュデータを更新するとともに、前記キャッシュデータ更新リクエスト電文の送信元に前記キャッシュデータ更新応答電文を送信するものであり、
前記第１データベース装置は、前記キャッシュデータ更新応答電文を受信できなかったなら、前記第２データベース装置にマスター化指示を送信するとともに、前記送信元ノードに前記データ更新電文誘起応答電文を送信し、
前記第２データベース装置は、前記マスター化指示を受信するとともに、前記送信元ノードから再送信されたデータ更新リクエスト電文を受信したなら、前記キャッシュデータ更新リクエスト電文を前記配信先ノードに送信し、前記配信先ノードからキャッシュデータ更新応答電文を受信したなら、前記送信元ノードにデータ更新応答電文を送信する
ことを特徴とする分散データベースシステム。
【請求項２】
第１データベース装置と第２データベース装置とを備える分散データベースシステムの前記第１データベース装置であって、
前記第１データベース装置は、第１原本データを有し、前記第２データベース装置は、前記第１原本データに整合すべき第２原本データを有し、前記第１データベース装置と前記第２データベース装置は、前記第１原本データに整合すべきキャッシュデータを有する配信先ノードならびに、前記第１原本データ、前記第２原本データおよび前記キャッシュデータを更新するためのデータ更新リクエスト電文を前記第１データベース装置に送信する送信元ノードに対して通信可能であり、前記送信元ノードは、前記データ更新リクエスト電文を再送信させるためのデータ更新電文誘起応答電文を受信したなら、前記データ更新リクエスト電文を前記第２データベース装置に再送信するものであり、
前記第１データベース装置は、前記データ更新リクエスト電文を受信したなら、前記キャッシュデータを更新させるキャッシュデータ更新リクエスト電文を前記配信先ノードに送信し、前記配信先ノードからキャッシュデータ更新応答電文を受信したなら、前記第１原本データを更新するとともに、前記第２原本データを更新するための第２原本データ更新指示を前記第２データベース装置に送信し、前記第２データベース装置から第２原本データ更新応答を受信したなら、前記送信元ノードにデータ更新応答電文を送信するものであり、
前記第２データベース装置は、前記第２原本データ更新指示を受信したなら、前記第２原本データを更新するとともに、前記第２原本データ更新応答を前記第１データベース装置に送信するものであり、
前記配信先ノードは、前記キャッシュデータ更新リクエスト電文を受信したなら、前記キャッシュデータを更新するとともに、前記キャッシュデータ更新リクエスト電文の送信元に前記キャッシュデータ更新応答電文を送信するものであり、
前記第１データベース装置は、前記キャッシュデータ更新応答電文を受信できなかったなら、前記第２データベース装置にマスター化指示を送信するとともに、前記送信元ノードに前記データ更新電文誘起応答電文を送信し、
前記第２データベース装置は、前記マスター化指示を受信するとともに、前記送信元ノードから再送信されたデータ更新リクエスト電文を受信したなら、前記キャッシュデータ更新リクエスト電文を前記配信先ノードに送信し、前記配信先ノードからキャッシュデータ更新応答電文を受信したなら、前記送信元ノードにデータ更新応答電文を送信する
ことを特徴とする分散データベースシステムの第１データベース装置。
【請求項３】
第１データベース装置と第２データベース装置とを備える分散データベースシステムの前記第２データベース装置であって、
前記第１データベース装置は、第１原本データを有し、前記第２データベース装置は、前記第１原本データに整合すべき第２原本データを有し、前記第１データベース装置と前記第２データベース装置は、前記第１原本データに整合すべきキャッシュデータを有する配信先ノードならびに、前記第１原本データ、前記第２原本データおよび前記キャッシュデータを更新するためのデータ更新リクエスト電文を前記第１データベース装置に送信する送信元ノードに対して通信可能であり、前記送信元ノードは、前記データ更新リクエスト電文を再送信させるためのデータ更新電文誘起応答電文を受信したなら、前記データ更新リクエスト電文を前記第２データベース装置に再送信するものであり、
前記第１データベース装置は、前記データ更新リクエスト電文を受信したなら、前記キャッシュデータを更新させるキャッシュデータ更新リクエスト電文を前記配信先ノードに送信し、前記配信先ノードからキャッシュデータ更新応答電文を受信したなら、前記第１原本データを更新するとともに、前記第２原本データを更新するための第２原本データ更新指示を前記第２データベース装置に送信し、前記第２データベース装置から第２原本データ更新応答を受信したなら、前記送信元ノードにデータ更新応答電文を送信するものであり、
前記第２データベース装置は、前記第２原本データ更新指示を受信したなら、前記第２原本データを更新するとともに、前記第２原本データ更新応答を前記第１データベース装置に送信するものであり、
前記配信先ノードは、前記キャッシュデータ更新リクエスト電文を受信したなら、前記キャッシュデータを更新するとともに、前記キャッシュデータ更新リクエスト電文の送信元に前記キャッシュデータ更新応答電文を送信するものであり、
前記第１データベース装置は、前記キャッシュデータ更新応答電文を受信できなかったなら、前記第２データベース装置にマスター化指示を送信するとともに、前記送信元ノードに前記データ更新電文誘起応答電文を送信し、
前記第２データベース装置は、前記マスター化指示を受信するとともに、前記送信元ノードから再送信されたデータ更新リクエスト電文を受信したなら、前記キャッシュデータ更新リクエスト電文を前記配信先ノードに送信し、前記配信先ノードからキャッシュデータ更新応答電文を受信したなら、前記送信元ノードにデータ更新応答電文を送信する
ことを特徴とする分散データベースシステムの第２データベース装置。
【請求項４】
前記データ更新リクエスト電文内のデータ入力リクエストを示すインサート情報をデータ変更リクエストを示すアップデート情報に変換し、当該アップデート情報を含むキャッシュデータ更新リクエスト電文を前記配信先ノードに送信することを特徴とする請求項３記載の分散データベースシステムの第２データベース装置。
【請求項５】
前記配信先ノードから二重登録エラーのエラーコードを受信したなら、当該エラーコードを前記データ更新応答電文に含むべき成功コードに変換し、当該成功コードをデータ更新応答電文に含めて前記送信元ノードに送信することを特徴とする請求項３または４記載の分散データベースシステムの第２データベース装置。
【請求項６】
請求項２記載の分散データベースシステムの第１データベース装置としてコンピュータを機能させるためのコンピュータプログラム。
【請求項７】
請求項３ないし５のいずれかに記載の分散データベースシステムの第２データベース装置としてコンピュータを機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散データベースシステムで管理するデータと配信先ノードで管理するデータの整合性を分散データベースシステムにおける障害からの復旧中であっても確保できる技術に関するものである。
【背景技術】
【０００２】
大容量のデータを一元的に管理する分散データベースシステムにおいては、障害が発生した場合であっても、データベースで管理する原本データと配信先ノードで管理するデータとの整合性が確保されていることが重要となる。
【０００３】
従来の一般的なデータベース技術として、データ更新中に障害が発生した場合に、予め保持されている更新データの履歴情報であるジャーナルを用いて、保守手順によりデータベースの復旧を行い、原本データと配信先ノードのデータの整合性を確保する。この場合、ジャーナルによるデータベースの復旧中は、データベースの操作を停止する。またはデータベースの操作を停止することなく復旧を可能とするためには、複雑な仕組みが必要となる（例えば、特許文献１）。しかし、いずれにせよ保守者稼働が発生してしまう。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２５０７１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、上記の課題に鑑みてなされたものであり、その目的とするところは、分散データベースシステムで管理するデータと配信先ノードで管理するデータの整合性を分散データベースシステムにおける障害からの復旧中であっても確保できる技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、第１データベース装置と第２データベース装置とを備える分散データベースシステムであって、前記第１データベース装置は、第１原本データを有し、前記第２データベース装置は、前記第１原本データに整合すべき第２原本データを有し、前記第１データベース装置と前記第２データベース装置は、前記第１原本データに整合すべきキャッシュデータを有する配信先ノードならびに、前記第１原本データ、前記第２原本データおよび前記キャッシュデータを更新するためのデータ更新リクエスト電文を前記第１データベース装置に送信する送信元ノードに対して通信可能であり、前記送信元ノードは、前記データ更新リクエスト電文を再送信させるためのデータ更新電文誘起応答電文を受信したなら、前記データ更新リクエスト電文を前記第２データベース装置に再送信するものであり、前記第１データベース装置は、前記データ更新リクエスト電文を受信したなら、前記キャッシュデータを更新させるキャッシュデータ更新リクエスト電文を前記配信先ノードに送信し、前記配信先ノードからキャッシュデータ更新応答電文を受信したなら、前記第１原本データを更新するとともに、前記第２原本データを更新するための第２原本データ更新指示を前記第２データベース装置に送信し、前記第２データベース装置から第２原本データ更新応答を受信したなら、前記送信元ノードにデータ更新応答電文を送信するものであり、前記第２データベース装置は、前記第２原本データ更新指示を受信したなら、前記第２原本データを更新するとともに、前記第２原本データ更新応答を前記第１データベース装置に送信するものであり、前記配信先ノードは、前記キャッシュデータ更新リクエスト電文を受信したなら、前記キャッシュデータを更新するとともに、前記キャッシュデータ更新リクエスト電文の送信元に前記キャッシュデータ更新応答電文を送信するものであり、前記第１データベース装置は、前記キャッシュデータ更新応答電文を受信できなかったなら、前記第２データベース装置にマスター化指示を送信するとともに、前記送信元ノードに前記データ更新電文誘起応答電文を送信し、前記第２データベース装置は、前記マスター化指示を受信するとともに、前記送信元ノードから再送信されたデータ更新リクエスト電文を受信したなら、前記キャッシュデータ更新リクエスト電文を前記配信先ノードに送信し、前記配信先ノードからキャッシュデータ更新応答電文を受信したなら、前記送信元ノードにデータ更新応答電文を送信することを特徴とする分散データベースシステムを設ける。
【０００７】
例えば、第２データベース装置は、前記データ更新リクエスト電文内のデータ入力リクエストを示すインサート情報をデータ変更リクエストを示すアップデート情報に変換し、当該アップデート情報を含むキャッシュデータ更新リクエスト電文を前記配信先ノードに送信する。
【０００８】
例えば、第２データベース装置は、前記配信先ノードから二重登録エラーのエラーコードを受信したなら、当該エラーコードを前記データ更新応答電文に含むべき成功コードに変換し、当該成功コードをデータ更新応答電文に含めて前記送信元ノードに送信する。
【発明の効果】
【０００９】
本発明によれば、第１データベース装置は、キャッシュデータ更新応答電文を受信できなかったなら、第２データベース装置にマスター化指示を送信するとともに、送信元ノードにデータ更新電文誘起応答電文を送信し、第２データベース装置は、マスター化指示を受信するとともに、送信元ノードから再送信されたデータ更新リクエスト電文を受信したなら、キャッシュデータ更新リクエスト電文を配信先ノードに送信し、配信先ノードからキャッシュデータ更新応答電文を受信したなら、送信元ノードにデータ更新応答電文を送信するので、第１データベース装置が復旧中であっても、原本データとキャッシュデータの整合性を確保することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係る分散データベースシステムの構成を示す図である。
【図２】分散データベースシステムの一構成例を示す図である。
【図３】第１の実施形態の動作についての説明図である。
【図４】第１の実施形態のシーケンス図である。
【図５】第２の実施形態の動作についての説明図である。
【図６】第２の実施形態のシーケンス図である。
【図７】第３の実施形態の動作についての説明図である。
【図８】第３の実施形態のシーケンス図である。
【図９】第４の実施形態の動作についての説明図である。
【図１０】第４の実施形態のシーケンス図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について図面を参照して説明する。
【００１２】
図１は、本発明の実施形態に係る分散データベースシステムの構成を示す図である。
【００１３】
分散データベースシステム１は、第１データベース装置１１と第２データベース装置１２とを備える分散データベースシステムである。第１データベース装置１１と第２データベース装置１２には主従関係があり、主従関係は入れ替わることができる。この時点では、第１データベース装置１１が主のデータベース装置（マスターデータベース装置ともいう）、第２データベース装置１２が従のデータベース装置（スレーブデータベース装置ともいう）であることとする。
【００１４】
なお、スレーブデータベース装置は、複数台あってもよい。つまり、分散データベースシステム１は、３台以上のデータベース装置を含んでいてもよい。
【００１５】
第１データベース装置１１は、第１原本データ１１１を有し、第２データベース装置１２は、第１原本データ１１１に整合すべき第２原本データ１２１を有する。
【００１６】
第１データベース装置１１と第２データベース装置１２は、送信元ノード２および配信先ノード３に対して通信可能である。
【００１７】
配信先ノード３は、第１原本データ１１１および第２原本データ１２１に整合すべきキャッシュデータ３１を有する。
【００１８】
送信元ノード２は、第１原本データ１１１、第２原本データ１２１およびキャッシュデータ３１を更新させるためのデータ更新リクエスト電文をマスターデータベース装置、この時点では第１データベース装置１１に送信するようになっている。
【００１９】
送信元ノード２は、データ更新リクエスト電文を再送信させるためのデータ更新電文誘起応答電文を受信したなら、データ更新リクエスト電文をマスターデータベース装置、例えば、主従関係が入れ替わった後の第２データベース装置１２に再送信するようになっている。
【００２０】
図２は、分散データベースシステム１の一構成例を示す図である。
【００２１】
第１データベース装置１１は、例えば、２つの第１原本データ１１１（アクト系とスタンバイ系）を有していてもよい。この場合、アクト系の第１原本データ１１１を管理するアクト系装置１１ａが配信先ノード３から応答を受信できない場合、スタンバイ系の第１原本データ１１１を管理するスタンバイ系装置１１ｂに切り替えることで復旧を行う。しかし、スタンバイ系装置１１ｂの信号処理状態等をアクト系装置１１ａと同じにする必要があり、長時間を要する。
【００２２】
第２データベース装置１２は、例えば、２つの第２原本データ１２１（アクト系とスタンバイ系）を有していてもよい。この場合、アクト系の第２原本データ１２１を管理するアクト系装置１２ａが配信先ノード３から応答を受信できない場合、スタンバイ系の第２原本データ１２１を管理するスタンバイ系装置１２ｂに切り替えることで復旧を行う。しかし、スタンバイ系装置１２ｂの信号処理状態等をアクト系装置１２ａと同じにする必要があり、長時間を要する。
【００２３】
分散データベースシステム１は、この切り替えに要する時間に関わらず、つまり、障害からの復旧中であっても、原本データとキャッシュデータの整合性を確保する。
【００２４】
（第１の実施形態）
次に、図３、図４を参照し、第１の実施形態として、第１データベース装置１１がマスターデータベース装置である場合の通常動作について説明する。
【００２５】
Ｓ１０１：送信元ノード２は、例えば、第１原本データ１１１、第２原本データ１２１およびキャッシュデータ３１を更新する場合は、更新データ（以下、更新データ「ｘｘｘｘ」という）、リトライフラグ「ＯＦＦ」および電文識別子（例えば、「ｒｃｖ−ｉｄ１」）を含むデータ更新リクエスト電文をマスターデータベース装置、この時点では第１データベース装置１１に送信する。図示しないが、データ更新リクエスト電文は、データ更新のプロトコルで定められたインサート情報（データの上書きでなくデータの入力のリクエストであること（データ入力リクエスト）を示す情報）を含む。インサート情報は、以降の説明におけるデータ更新リクエスト電文にも含まれる。
【００２６】
Ｓ１０２：第１データベース装置１１は、送信元電文管理表、電文識別子対応表および配信先電文管理表を有しており、このようなデータ更新リクエスト電文を受信したなら、送信元電文管理表には、受信したデータ更新リクエスト電文内の電文識別子「ｒｃｖ−ｉｄ１」と処理状態「処理中」を記憶させ、電文識別子対応表には電文識別子「ｒｃｖ−ｉｄ１」とこれから送信するキャッシュデータ更新リクエスト電文に格納する電文識別子「ｓｎｄ−ｉｄ１」を記憶させ、配信先電文管理表には電文識別子「ｓｎｄ−ｉｄ１」と処理状態「処理中」を記憶させる。
【００２７】
Ｓ１０３：次に、第１データベース装置１１は、更新データ「ｘｘｘｘ」の形式を配信先ノード３での利用や配信先ノード３への送信に適したものに変換したデータ（以下、更新データ「ｙｙｙｙ」という）、リトライフラグ「ＯＦＦ」および電文識別子「ｓｎｄ−ｉｄ１」を含むキャッシュデータ更新リクエスト電文を配信先ノード３に送信する。なお、更新データを「ｘｘｘｘ」の形式のままキャッシュデータ更新リクエスト電文に含ませてもよい。図示しないが、キャッシュデータ更新リクエスト電文もデータ更新リクエスト電文と同様にインサート情報を含む。インサート情報は、以降の説明におけるキャッシュデータ更新リクエスト電文にも含まれる。
【００２８】
Ｓ１０４、Ｓ１０５：配信先ノード３は、このようなキャッシュデータ更新リクエスト電文を受信したなら、キャッシュデータ３１の一部を更新データ「ｙｙｙｙ」で更新し、電文識別子「ｓｎｄ−ｉｄ１」を含むキャッシュデータ更新応答電文を第１データベース装置１１に送信する。
【００２９】
Ｓ１０６：第１データベース装置１１は、キャッシュデータ更新リクエスト電文の送信先（この場合、配信先ノード３）からキャッシュデータ更新応答電文を受信したなら、第１原本データ１１１の一部を更新データ「ｘｘｘｘ」で更新する。
【００３０】
Ｓ１０７：次に、第１データベース装置１１は、第２原本データ１２１を更新させるための、更新データ「ｘｘｘｘ」を含む第２原本データ更新指示を第２データベース装置１２に送信する。
【００３１】
Ｓ１０８、Ｓ１０９：第２データベース装置１２は、第２原本データ更新指示を受信したなら、第２原本データ１２１の一部を更新データ「ｘｘｘｘ」で更新し、第２原本データ更新応答を第１データベース装置１１に送信する。
【００３２】
Ｓ１１０：第１データベース装置１１は、第２原本データ更新応答を受信したなら、送信元ノード２に対し、電文識別子「ｒｃｖ−ｉｄ１」を含むデータ更新応答電文を送信する。なお、データ更新応答電文には所定の成功コードが含まれる。
【００３３】
Ｓ１１１：次に、第１データベース装置１１は、送信元電文管理表から電文識別子「ｒｃｖ−ｉｄ１」と処理状態「処理中」を削除し、電文識別子対応表から電文識別子「ｒｃｖ−ｉｄ１」と電文識別子「ｓｎｄ−ｉｄ１」を削除し、配信先電文管理表から電文識別子「ｓｎｄ−ｉｄ１」と処理状態「処理中」を削除する。
【００３４】
（第２の実施形態）
次に、図５、図６を参照し、第２の実施形態として、第１データベース装置１１がマスターデータベース装置である場合の異常時の動作について説明する。
【００３５】
まず、Ｓ２０１〜Ｓ２０５については、第１の実施形態のＳ１０１〜Ｓ１０５と同じなので、説明を省略する。
【００３６】
Ｓ２０６、Ｓ２０７、Ｓ２０８：第１データベース装置１１は、例えば、第１データベース装置１１と配信先ノード３の間のネットーワーク断などにより、キャッシュデータ更新応答電文を受信できなかったなら（Ｓ２０６）、第２データベース装置１２にマスター化指示（マスターの権限を委譲する指示）を送信するとともに、送信元ノード２に対し、電文識別子「ｒｃｖ−ｉｄ１」を含むデータ更新電文誘起応答電文を送信する。
【００３７】
なお、スレーブデータベース装置が複数ある場合、マスター化指示は、例えば、その中で、予め次にマスターデータベース装置となるように定められたスレーブデータベース装置、または、その時点で適宜選択したスレーブデータベース装置に送信すればよい。
【００３８】
例えば、図２において、第１データベース装置１１のアクト系装置１１ａがキャッシュデータ更新応答電文を受信できなかったなら、スタンバイ系装置１１ｂへの切り替えによる復旧がなされる。この復旧には、場合によっては、長時間を要するが、第２データベース装置１２にマスター化指示を送信し、送信元ノード２にデータ更新電文誘起応答電文を送信するので、以下のように、復旧中であっても、原本データとキャッシュデータの整合性が確保される。
【００３９】
Ｓ２０９：第１データベース装置１１は、送信元電文管理表から電文識別子「ｒｃｖ−ｉｄ１」と処理状態「処理中」を削除し、電文識別子対応表から電文識別子「ｒｃｖ−ｉｄ１」と電文識別子「ｓｎｄ−ｉｄ１」を削除し、配信先電文管理表から電文識別子「ｓｎｄ−ｉｄ１」と処理状態「処理中」を削除する。
【００４０】
Ｓ２１０：送信元ノード２は、データ更新電文誘起応答電文を受信したなら、更新データ「ｘｘｘｘ」、リトライフラグ「ＯＮ」および電文識別子「ｒｃｖ−ｉｄ１」を含むデータ更新リクエスト電文をマスターデータベース装置、この時点では第２データベース装置１２に送信する。なお、ここでは、ステップＳ２０１のときと同じ電文識別子「ｒｃｖ−ｉｄ１」を使用するが、異なっていてもよい。以下、同じ電文識別子を使用することとして説明を続ける。
【００４１】
Ｓ２１１：第２データベース装置１２は、送信元電文管理表、電文識別子対応表および配信先電文管理表を有しており、マスター化指示を受信し、再送信されたデータ更新リクエスト電文を受信したなら、送信元電文管理表には、受信したデータ更新リクエスト電文内の電文識別子「ｒｃｖ−ｉｄ１」と処理状態「処理中」を記憶させ、電文識別子対応表には電文識別子「ｒｃｖ−ｉｄ１」とこれから送信するデータ更新リクエスト電文に格納する電文識別子「ｓｎｄ−ｉｄ１」を記憶させ、配信先電文管理表には電文識別子「ｓｎｄ−ｉｄ１」と処理状態「処理中」を記憶させる。
【００４２】
Ｓ２１２：次に、第２データベース装置１２は、更新データ「ｘｘｘｘ」を更新データ「ｙｙｙｙ」に変換し、更新データ「ｙｙｙｙ」、リトライフラグ「ＯＮ」および電文識別子「ｓｎｄ−ｉｄ１」を含むキャッシュデータ更新リクエスト電文を配信先ノード３に送信する。
【００４３】
Ｓ２１３、Ｓ２１４：配信先ノード３は、キャッシュデータ更新リクエスト電文を受信し、リトライフラグが「ＯＮ」なので、キャッシュデータの既に更新した部分「ｙｙｙｙ」を更新データ「ｙｙｙｙ」で上書きし、電文識別子「ｓｎｄ−ｉｄ１」を含むキャッシュデータ更新応答電文を第２データベース装置１２に送信する。なお、配信先ノード３は、このようなキャッシュデータにおける二重登録を禁止している場合は、二重登録のエラーコードを第２データベース装置１２に送信する。
【００４４】
Ｓ２１５：第２データベース装置１２は、キャッシュデータ更新応答電文を受信したなら、第２原本データ１２１の一部を更新データ「ｘｘｘｘ」で更新する。なお、第１データベース装置１１、第２データベース装置１２は、同じエラーコード変換表を有し、第２データベース装置１２は、２重登録のエラーコードを受信したなら、エラーコード変換表で、このエラーコードに対応づけられた成功コード（データ更新応答電文に含むべきもの）を読み出す。
【００４５】
Ｓ２１６：次に、第２データベース装置１２は、送信元ノード２に対し、電文識別子「ｒｃｖ−ｉｄ１」を含むデータ更新応答電文を送信する。なお、第２データベース装置は、２重登録のエラーコードを受信した場合は、読み出した成功コードをデータ更新応答電文に含める。
【００４６】
Ｓ２１７：次に、第２データベース装置１２は、送信元電文管理表から電文識別子「ｒｃｖ−ｉｄ１」と処理状態「処理中」を削除し、電文識別子対応表から電文識別子「ｒｃｖ−ｉｄ１」と電文識別子「ｓｎｄ−ｉｄ１」を削除し、配信先電文管理表から電文識別子「ｓｎｄ−ｉｄ１」と処理状態「処理中」を削除する。
【００４７】
したがって、第２の実施形態によれば、第１データベース装置１１は、キャッシュデータ更新応答電文を受信できなかったなら（Ｓ２０６）、第２データベース装置１２にマスター化指示を送信するとともに（Ｓ２０７）、送信元ノード２にデータ更新電文誘起応答電文を送信し（Ｓ２０８）、第２データベース装置１２は、マスター化指示を受信するとともに、送信元ノード２から再送信されたデータ更新リクエスト電文を受信したなら（Ｓ２１０）、キャッシュデータ更新リクエスト電文を配信先ノード３に送信し（Ｓ２１２）、配信先ノード３からキャッシュデータ更新応答電文を受信したなら（Ｓ２１５）、送信元ノード２にデータ更新応答電文を送信する（Ｓ２１６）ので、ジャーナルを用いた復旧のような保守手順を実行することなく、第１データベース装置１１が復旧中であっても、原本データとキャッシュデータの整合性を確保することができる。また、第１データベース装置１１が、アクト系装置１１ａからスタンバイ系装置１１ｂへの切り替えによる復旧中であっても、原本データとキャッシュデータの整合性を確保することができる。つまり、復旧と並行して、原本データとキャッシュデータをその整合性を確保しつつ更新を行うことができる。
【００４８】
（第３の実施形態）
次に、図７、図８を参照し、第３の実施形態として、第１データベース装置１１がマスターデータベース装置である場合の異常時の別の動作について説明する。
【００４９】
まず、Ｓ３０１〜Ｓ３１１については、第２の実施形態のＳ２０１〜Ｓ２１１と同じなので、説明を省略する。
【００５０】
Ｓ３１２：次に、第２データベース装置１２は、更新データ「ｘｘｘｘ」を更新データ「ｙｙｙｙ」に変換し、また、データ更新リクエスト電文内のインサート情報を、データ更新のプロトコルで定められたアップデート情報（データの上書きのリクエストであること（データ変更リクエスト）を示す情報）に変換する。そして、第２データベース装置１２は、更新データ「ｙｙｙｙ」、アップデート情報および電文識別子「ｓｎｄ−ｉｄ１」を含むキャッシュデータ更新リクエスト電文を配信先ノード３に送信する。
【００５１】
Ｓ３１３、Ｓ３１４：配信先ノード３は、キャッシュデータ更新リクエスト電文を受信し、アップデート情報が含まれるので、キャッシュデータの既に更新した部分「ｙｙｙｙ」を更新データ「ｙｙｙｙ」で上書きし、電文識別子「ｓｎｄ−ｉｄ１」を含むキャッシュデータ更新応答電文を第２データベース装置１２に送信する。なお、配信先ノード３は、このようなキャッシュデータにおける二重登録を禁止している場合は、二重登録のエラーコードを第２データベース装置１２に送信する。
【００５２】
Ｓ３１５〜Ｓ３１７については、第２の実施形態のＳ２１５〜Ｓ２１７と同じなので、説明を省略する。
【００５３】
したがって、第３の実施形態によれば、第２データベース装置１２は、データ更新リクエスト電文内のインサート情報をアップデート情報に変換し、アップデート情報を含むキャッシュデータ更新リクエスト電文を配信先ノード３に送信する（Ｓ３１２）ので、例えば、配信先ノード３が、リトライフラグを受け付けず、しかも、インサート情報は２回以上受け付けないがアップデート情報なら何回でも受け付ける場合、キャッシュデータの既に更新した部分を上書きすることができる。
【００５４】
なお、配信先ノード３に信号を送信する際のデータ操作インタワークは、配信先ノード３のデータベース実装に依存する。ここでは例として、インサート情報をアップデート情報に変換したが、逆にアップデート情報をインサート情報に変換してもよい。その場合、該当ユーザのデータを全て送信することとなる。
【００５５】
また、第２データベース装置１２は、配信先ノード３から二重登録エラーのエラーコードを受信したなら、エラーコードを成功コードに変換し、成功コードをデータ更新応答電文に含めて送信元ノード２に送信するので、配信先ノード３が、二重登録を禁止する場合であっても、その二重登録禁止の影響が送信元ノード２へ及ぶのを防ぐことができる。
【００５６】
（第４の実施形態）
次に、図９、図１０を参照し、第４の実施形態として、第１データベース装置１１がマスターデータベース装置であり、かつ、第１原本データ１１１と第２原本データ１２１のみを更新する場合の通常時の動作について説明する。
【００５７】
Ｓ４０１：送信元ノード２は、例えば、第１原本データ１１１および第２原本データ１２１を更新する場合は、更新データ（以下、更新データ「ｘｘｘｘ」という）、リトライフラグ「ＯＦＦ」および電文識別子（例えば、「ｒｃｖ−ｉｄ１」）を含むデータ更新リクエスト電文をマスターデータベース装置、この時点では第１データベース装置１１に送信する。
【００５８】
Ｓ４０２：第１データベース装置１１は、このようなデータ更新リクエスト電文を受信したなら、送信元電文管理表に、受信したデータ更新リクエスト電文内の電文識別子「ｒｃｖ−ｉｄ１」と処理状態「処理中」を記憶させる。
【００５９】
Ｓ４０３：次に、第１データベース装置１１は、第１原本データ１１１の一部を更新データ「ｘｘｘｘ」で更新する。
【００６０】
Ｓ４０４：次に、第１データベース装置１１は、更新データ「ｘｘｘｘ」を含む第２原本データ更新指示を第２データベース装置１２に送信する。
【００６１】
Ｓ４０５、Ｓ４０６：第２データベース装置１２は、第２原本データ更新指示を受信したなら、第２原本データ１２１の一部を更新データ「ｘｘｘｘ」で更新し、第２原本データ更新応答を第１データベース装置１１に送信する。
【００６２】
Ｓ４０７：第１データベース装置１１は、第２原本データ更新応答を受信したなら、送信元ノード２に対し、電文識別子「ｒｃｖ−ｉｄ１」を含むデータ更新応答電文を送信する。
【００６３】
Ｓ４０８：次に、第１データベース装置１１は、送信元電文管理表から電文識別子「ｒｃｖ−ｉｄ１」と処理状態「処理中」を削除する。
【００６４】
なお、これまでの説明では、当初は第１データベース装置１１がマスターデータベース装置であったが、第２データベース装置１２が当初のマスターデータベース装置である場合は、第１データベース装置１１と第２データベース装置１２の動作が逆となる。これについては、冗長となるので説明を省略する。
【００６５】
また、第１データベース装置１１や第２データベース装置１２としてコンピュータを機能させるためのコンピュータプログラムは、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのコンピュータ読み取り可能な記録媒体に記録でき、また、インターネットなどの通信網を介して伝送させて、広く流通させることができる。
【符号の説明】
【００６６】
１  分散データベースシステム
２  送信元ノード
３  配信先ノード
１１  第１データベース装置
１１ａ、１２ａ  アクト系装置
１１ｂ、１２ｂ  スタンバイ系装置
１２  第２データベース装置
３１  キャッシュデータ
１１１  第１原本データ
１２１  第２原本データ
【図１】
2014026587.tif 000003
【図２】
2014026587.tif 000004
【図３】
2014026587.tif 000005
【図４】
2014026587.tif 000006
【図５】
2014026587.tif 000007
【図６】
2014026587.tif 000008
【図７】
2014026587.tif 000009
【図８】
2014026587.tif 000010
【図９】
2014026587.tif 000011
【図１０】
2014026587.tif 000012