(57)【要約】【課題】負荷を抑制することと、トランザクション処理の一貫性を保証することと、を両立することができないという問題を解決すること。【解決手段】マスタデータベースに対して所定の更新処理を行い、マスタデータベースに記憶されたデータベースを更新する更新手段と、更新手段にて更新したデータベースに基づいて更新情報を抽出する更新情報抽出手段と、更新情報抽出手段にて抽出した複数の更新情報を１つの更新情報群に含めて、当該更新情報群を、マスタデータベースに記憶されたデータベースの複製データを記憶するレプリカデータベースへ、一度のタイミングで転送する更新情報転送手段と、を備え、更新情報転送手段は、関連する複数の更新処理を一連の処理として管理する、同一のトランザクション処理によって更新された複数の更新情報を１つの更新情報群に含めて、当該更新情報群をレプリカデータベースへ、一度のタイミングで転送する。【選択図】図１２
2014106580.tif 000002
【特許請求の範囲】
【請求項１】
マスタデータベースに対して所定の更新処理を行い、前記マスタデータベースに記憶されたデータベースを更新する更新手段と、
前記更新手段にて更新した前記データベースに基づいて更新情報を抽出する更新情報抽出手段と、
前記更新情報抽出手段にて抽出した複数の前記更新情報を１つの更新情報群に含めて、当該更新情報群を、前記マスタデータベースに記憶された前記データベースの複製データを記憶するレプリカデータベースへ、一度のタイミングで転送する更新情報転送手段と、
を備え、
前記更新情報転送手段は、関連する複数の更新処理を一連の処理として管理する、同一のトランザクション処理によって更新された複数の前記更新情報を１つの前記更新情報群に含めて、当該更新情報群を前記レプリカデータベースへ、一度のタイミングで転送する、
情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
予め設定された転送条件に基づいて、同一の前記トランザクション処理によって更新された前記データベースに基づいて抽出した複数の前記更新情報を１つの前記更新情報群に含めるように、当該更新情報群を決定する更新情報制御手段をさらに備え、
前記更新情報転送手段は、前記更新情報制御手段にて決定した１つの前記更新情報群を、前記レプリカデータベースへ、一度のタイミングで転送する、
情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記更新情報抽出手段は、同一の前記トランザクション処理によって更新された前記データベースに基づいて抽出した複数の前記更新情報のそれぞれに、同じトランザクション識別情報を設定し、
前記更新情報制御手段は、前記更新情報抽出手段にて同じ前記トランザクション識別情報が設定された全ての前記更新情報を含む１つの前記更新情報群を決定する、
情報処理装置。
【請求項４】
請求項３に記載の情報処理装置であって、
前記更新情報制御手段は、前記更新情報抽出手段にて同じ前記トランザクション識別情報が設定された全ての前記更新情報を含む複数の前記更新情報のそれぞれに同じ転送識別情報を設定し、同じ転送識別情報が設定された複数の前記更新情報を前記更新情報群として決定する、
情報処理装置。
【請求項５】
請求項４に記載の情報処理装置であって、
前記更新情報制御手段は、予め設定された数以下の前記更新情報、または、予め設定された時間内に前記更新情報抽出手段にて抽出した前記更新情報であり、かつ、同じ前記トランザクション識別情報が設定された全ての前記更新情報に同じ前記転送識別情報を設定する、
情報処理装置。
【請求項６】
請求項１乃至５のいずれかに記載の情報処理装置であって、
前記レプリカデータベースを備える他の情報処理装置から、前記レプリカデータベースに対する前記更新情報の反映に失敗したことが通知された場合に、当該更新情報の更新元となる前記データベース自体を前記マスタデータベースから取得し、取得した前記データベース自体を前記レプリカデータベースへ転送するデータベース転送制御手段、
をさらに備える情報処理装置。
【請求項７】
情報処理装置に、
マスタデータベースに対して所定の更新処理を行い、前記マスタデータベースに記憶されたデータベースを更新する更新手段と、
前記更新手段にて更新した前記データベースに基づいて更新情報を抽出する更新情報抽出手段と、
前記更新情報抽出手段にて抽出した複数の前記更新情報を１つの更新情報群に含めて、当該更新情報群を、前記マスタデータベースに記憶された前記データベースの複製データを記憶するレプリカデータベースへ、一度のタイミングで転送する更新情報転送手段と、
を実現させるとともに、
前記更新情報転送手段は、関連する複数の更新処理を一連の処理として管理する、同一のトランザクション処理によって更新された複数の前記更新情報を１つの前記更新情報群に含めて、当該更新情報群を前記レプリカデータベースへ、一度のタイミングで転送する、
ことを実現させるためのプログラム。
【請求項８】
請求項７に記載のプログラムであって、
予め設定された転送条件に基づいて、同一の前記トランザクション処理によって更新された前記データベースに基づいて抽出した複数の前記更新情報を１つの前記更新情報群に含めるように、当該更新情報群を決定する更新情報制御手段をさらに備え、
前記更新情報転送手段は、前記更新情報制御手段にて決定した１つの前記更新情報群を、前記レプリカデータベースへ、一度のタイミングで転送する、
プログラム。
【請求項９】
マスタデータベースに対して所定の更新処理を行い、前記マスタデータベースに記憶されたデータベースを更新し、
更新した前記データベースに基づいて更新情報を抽出し、
関連する複数の更新処理を一連の処理として管理する、同一のトランザクション処理によって更新された前記データベースに基づいて抽出した複数の前記更新情報を１つの前記更新情報群に含めて、当該更新情報群を、前記マスタデータベースに記憶された前記データベースの複製データを記憶するレプリカデータベースへ、一度のタイミングで転送する、
情報処理方法。
【請求項１０】
請求項９に記載の情報処理方法であって、
予め設定された転送条件に基づいて、同一の前記トランザクション処理によって更新された前記データベースに基づいて抽出した複数の前記更新情報を１つの前記更新情報群に含めるように、当該更新情報群を決定し、
決定した１つの前記更新情報群を、前記レプリカデータベースへ、一度のタイミングで転送する、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置にかかり、特に、データを更新したときの更新情報を他の記憶装置へ転送する情報処理装置に関する。
【背景技術】
【０００２】
データベースに冗長性を持たせるために、データを格納するマスタデータベースと、マスタデータベースの複製データを格納するレプリカデータベースと、を備えるレプリケーションシステムが知られている（例えば特許文献１参照）。レプリケーションシステムでは、マスタデータベースが更新された場合に、更新に伴う更新情報を抽出し、抽出した更新情報をレプリカデータベースへ転送することで、データベースのレプリケーションを実現する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３１８７１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、関連する複数の処理を一連の処理として管理するトランザクション処理によりマスタデータベースを更新することがある。上述したレプリケーションシステムでは、トランザクション処理毎に更新情報を逐一レプリカデータベースへ転送することで、マスタデータベースとレプリカデータベースとの間の整合性を保証することができる。しかしながら、トランザクション処理毎に更新情報を転送する場合には、マスタデータベースへの更新回数が多くなるほど更新情報の転送回数が増加し、マスタデータベース側の処理と、レプリカデータベース側の処理と、ネットワークと、のそれぞれの負荷が増加してしまうという問題があった。
【０００５】
また、上述したレプリケーションシステムにおいて、負荷を抑制するために、マスタデータベースの更新により抽出した更新情報の数が一定件数になった時に更新情報を転送する処理が知られている。しかしながら、更新情報の数が一定件数になった時に更新情報を転送する場合には、同一のトランザクション処理に基づく更新情報の全てが一度のタイミングで転送されないことがあった。この結果、マスタデータベースとレプリカデータベースとの間において、一時的に整合性が取れず、マスタデータベースに対して行われた更新のトランザクション処理の一貫性をレプリカデータベースにおいて保障することができないという問題があった。
【０００６】
このため、本発明の目的は、負荷を抑制することと、トランザクション処理の一貫性を保証することと、を両立することができないという問題を解決することができる情報処理装置を提供させることにある。
【課題を解決するための手段】
【０００７】
上記目的を達成すべく、本発明の一形態である情報処理装置は、
マスタデータベースに対して所定の更新処理を行い、前記マスタデータベースに記憶されたデータベースを更新する更新手段と、
前記更新手段にて更新した前記データベースに基づいて更新情報を抽出する更新情報抽出手段と、
前記更新情報抽出手段にて抽出した複数の前記更新情報である更新情報群を、前記マスタデータベースに記憶された前記データベースの複製データを記憶するレプリカデータベースへ、一度のタイミングで転送する更新情報転送手段と、
を備え、
前記更新情報転送手段は、関連する複数の更新処理を一連の処理として管理する、同一のトランザクション処理によって更新された前記データベースに基づいて抽出した前記更新情報を、前記更新情報群に含む、
という構成を取る。
【０００８】
また、本発明の他の形態であるプログラムは、
情報処理装置に、
マスタデータベースに対して所定の更新処理を行い、前記マスタデータベースに記憶されたデータベースを更新する更新手段と、
前記更新手段にて更新した前記データベースに基づいて更新情報を抽出する更新情報抽出手段と、
前記更新情報抽出手段にて抽出した複数の前記更新情報である更新情報群を、前記マスタデータベースに記憶された前記データベースの複製データを記憶するレプリカデータベースへ、一度のタイミングで転送する更新情報転送手段と、
を実現させるとともに、
前記更新情報転送手段は、関連する複数の更新処理を一連の処理として管理する、同一のトランザクション処理によって更新された前記データベースに基づいて抽出した前記更新情報を、前記更新情報群に含む、
ことを実現させるためのプログラムである。
【０００９】
また、本発明の他の形態である情報処理方法は、
マスタデータベースに対して所定の更新処理を行い、前記マスタデータベースに記憶されたデータベースを更新し、
更新した前記データベースに基づいて更新情報を抽出し、
関連する複数の更新処理を一連の処理として管理する、同一のトランザクション処理によって更新された前記データベースに基づいて抽出した前記更新情報を含む前記更新情報群を、前記マスタデータベースに記憶された前記データベースの複製データを記憶するレプリカデータベースへ、一度のタイミングで転送する、
という構成を取る。
【発明の効果】
【００１０】
本発明は、以上のように構成されることにより、負荷を低減しつつ、マスタデータベースに対して行われた更新のトランザクション処理の一貫性をレプリカデータベースにおいて保証することができるという優れた効果を有する。
【図面の簡単な説明】
【００１１】
【図１】本発明における情報処理システムの構成の概略を示すブロック図である。
【図２】マスターサーバの構成を示すブロック図である。
【図３】スレーブサーバの構成を示すブロック図である。
【図４】本発明の第１実施形態における情報処理システムの構成を示す機能ブロック図である。
【図５】更新ログ中間テーブルの例を説明するための図である。
【図６】更新処理を説明するためのフローチャートである。
【図７】更新情報抽出処理を説明するためのフローチャートである。
【図８】更新情報制御処理を説明するためのフローチャートである。
【図９】更新情報転送処理を説明するためのフローチャートである。
【図１０】反映処理を説明するためのフローチャートである。
【図１１】一括反映処理を説明するためのフローチャートである。
【図１２】本発明の第２実施形態におけるマスターサーバの構成を示す機能ブロック図である。
【発明を実施するための形態】
【００１２】
＜第１実施形態＞
本発明の第１実施形態を、図１乃至図１１を参照して説明する。図１乃至図５は、情報処理システムの構成を説明するための図である。図６乃至図１１は、情報処理システムの動作を説明するための図である。
【００１３】
［構成］
最初に、情報処理システム１の構成について説明する。図１に示すように、本実施形態における情報処理システム１は、マスターサーバ１１と、スレーブサーバ１２と、通信網１３と、を備えている。そして、マスターサーバ１１（情報処理装置）は、マスターデータを記憶（格納）するマスタＤＢ（データベース）２１を備えている。また、スレーブサーバ１２は、マスタＤＢ２１に記憶されたマスターデータの複製データを記憶するレプリカＤＢ２２を備えている。さらに、マスターサーバ１１とスレーブサーバ１２とは、有線または無線による通信網１３を介して接続される。
【００１４】
情報処理システム１は、マスタＤＢ２１に記憶されたマスターデータの内容と、レプリカＤＢ２２に記憶された複製データの内容と、を常に同期するように制御する。これにより、マスターサーバ１１に障害等が発生した場合に、スレーブサーバ１２がマスターサーバ１１の代わりに機能するので、情報処理システム１全体の機能を維持することができる。なお、図１の情報処理システム１には、１台のスレーブサーバ１２が記載されているが、情報処理システム１は、２台以上の複数のスレーブサーバ１２を備えてもよい。
【００１５】
次に、マスターサーバ１１とスレーブサーバ１２との構成について説明する。まず、図２を参照して、マスターサーバ１１の構成について説明する。図２は、マスターサーバ１１の構成例を示すブロック図である。図２に示すように、マスターサーバ１１は、演算部４１と、記憶部４２と、入出力部４３と、通信部４４と、を備えている。
【００１６】
演算部４１は、例えば、CPU（Central Processing Unit）により構成される。演算部４１は、記憶部４２に格納されたプログラムを読み込み、プログラムを実行することにより、マスターサーバ１１を制御するための各種機能を実行する。演算部４１の機能的構成については、図４を参照して後述する。
【００１７】
記憶部４２は、マスターデータを記憶するマスタＤＢ２１を有している。マスターデータは、例えば、銀行口座を管理するデータベースや、商品の受注や配送を管理するデータベース等である。特に、本実施形態では、マスターデータは、関連する複数の更新処理を一連の処理として管理するトランザクション処理により更新される。
【００１８】
入出力部４３は、マスタＤＢ２１を更新するためのデータベース反映情報の入力を受け付ける。入出力部４３がデータベース反映情報の入力を受け付けた場合、後述する更新部７１は、入出力部４３にて入力を受け付けたデータベース反映情報に基づいてマスタＤＢ２１を更新する。続いて、後述する更新ログ抽出部７２は、マスタＤＢ２１の更新に基づく更新情報（更新ログ）を抽出する。そして、通信部４４は、通信網１３を介して、生成された更新情報をスレーブサーバ１２へ転送する。
【００１９】
次に、図３を参照して、スレーブサーバ１２の構成について説明する。図３は、スレーブサーバ１２の構成例を示すブロック図である。図３に示すように、スレーブサーバ１２は、演算部５１と、記憶部５２と、通信部５３と、を備えている。なお、スレーブサーバ１２の演算部５１と、記憶部５２と、通信部５３と、の構成は、マスターサーバ１１の演算部４１と、記憶部４２と、通信部４４と、同様の構成を有しているので、マスターサーバ１１と相違する点について説明する。
【００２０】
記憶部５２は、マスタＤＢ２１に記憶されたマスターデータの複製データを記憶するレプリカＤＢ２２を有している。通信部５３は、マスターサーバ１１から転送された更新情報を受信する。通信部５３が更新情報を受信すると、後述する更新ログ反映部９１が、受信した更新情報をレプリカＤＢ２２へ反映し、レプリカＤＢ２２を更新する。このように、マスタＤＢ２１に記憶された内容を、レプリカＤＢ２２に記憶された内容に反映させるので、情報処理システム１においてレプリケーション機能を実現し、情報処理システム１全体の機能を維持することができる。
【００２１】
次に、図４を参照して、マスターサーバ１１とスレーブサーバ１２の各構成の詳細について説明する。図４は、マスターサーバ１１とスレーブサーバ１２の機能的構成例を示すブロック図である。
【００２２】
マスターサーバ１１の演算部４１は、プログラムを実行することにより、更新部７１（更新手段）と、更新ログ抽出部７２（更新情報抽出手段）と、更新ログ制御部７３（更新情報制御手段）と、更新ログ転送部７４（更新情報転送手段）と、テーブル取得部７５（データベース転送制御手段）と、を有する。また、マスターサーバ１１の記憶部４２は、マスタＤＢ２１と、更新ログ中間テーブルＡ８１を有する。更新ログ中間テーブルＡ８１については、図５を参照して後述する。
【００２３】
また、スレーブサーバ１２の演算部５１は、プログラムを実行することにより、更新ログ反映部９１と、一括反映制御部９２と、一括反映実行部９３と、を有する。さらに、スレーブサーバ１２の記憶部５２は、レプリカＤＢ２２と、更新ログ中間テーブルＢ１０１を有する。なお、スレーブサーバ１２の更新ログ中間テーブルＢ１０１は、マスターサーバ１１の更新ログ中間テーブルＡ８１と同様の構成である。以下にマスターサーバ１１とスレーブサーバ１２との具体的な処理について説明する。
【００２４】
最初に、マスターサーバ１１が、マスタＤＢ２１のマスターデータを更新する処理について説明する。更新部７１は、マスタＤＢ２１に対して所定の更新処理を行い、マスタＤＢ２１に記憶されたデータベースを更新する。具体的には、まず、更新部７１は、トランザクション処理を開始する。すなわち、更新部７１は、トランザクションの開始を宣言し、更新処理を開始する。続いて、更新部７１は、入出力部４３を介して、マスタＤＢ２１を更新するためのデータベース反映情報を取得する。データベース反映情報は、例えば、ユーザが銀行口座にお金を振り込む操作を実行することにより生成される。
【００２５】
そして、更新部７１は、取得したデータベース反映情報に基づいて、マスタＤＢ２１に記憶されたマスターデータの更新を開始する。またこの時、更新部７１は、更新ログ抽出部７２へトリガを発行する。このトリガは、更新ログ抽出部７２に抽出処理を開始させるための情報であり、更新処理毎に発行される。具体的には、更新部７１は、データベース反映情報に基づいて、マスターデータに含まれる所定のデータを更新する度にトリガを発行する。例えば、ａさんの銀行口座からｂさんの銀行口座へ、所定の金額（例えば１０万円）を移動する場合、ａさんの銀行口座の金額から１０万円を引く処理（更新処理）を開始した時に、更新部７１はトリガを発行する。そして、ｂさんの銀行口座の金額に１０万円を加える処理を開始した時に、更新部７１は再びトリガを発行する。
【００２６】
続いて、更新ログ抽出部７２は、更新部７１が発行したトリガを受信することにより、更新部７１が更新したデータベースに基づく更新情報の抽出処理を開始する。そして、更新ログ抽出部７２は、トリガを受信する度に、マスタＤＢ２１に記憶された更新前のマスターデータと、更新情報に基づいて更新された更新後のマスターデータと、に基づいて、更新情報（更新ログ）を抽出し、抽出した更新情報を更新ログ中間テーブルＡ８１に記憶する。ここで、図５を参照して、更新ログ中間テーブルＡ８１の詳細について説明する。
【００２７】
図５は、更新ログ中間テーブルＡ８１の詳細を説明するための図である。図５に示すように、更新ログ中間テーブルＡ８１は、データベース反映情報をマスタＤＢ２１に反映させる更新処理が行われるごとに、トリガＩＤ（Identification）と、時刻と、トランザクションＩＤと、反映ＩＤと、更新情報と、を有する１つのレコードを登録する。トリガＩＤは、更新部７１により発行された個々のトリガに設定され、更新情報を識別するための情報である。例えば、更新ログ抽出部７２は、トリガを受け付ける度に１だけインクリメントしたトリガＩＤを生成する。時刻は、トリガが発行された時刻（すなわち更新が開始された時刻）を表す情報であり、更新ログ抽出部７２により取得される。トランザクションＩＤは、トランザクション処理を識別するための情報である。更新ログ抽出部７２は、同一のトランザクション処理にて生成した更新情報に同一のトランザクションＩＤを設定する。例えば、更新ログ抽出部７２は、トランザクションが切り替わる度に１だけインクリメントしたトランザクションＩＤを生成する。反映ＩＤは、スレーブサーバ１２へ一度のタイミングで転送し、レプリカＤＢ２２へ一度のタイミングで反映させる更新情報群を識別するための情報である。反映ＩＤは、後述する更新ログ制御部７３が設定する情報であり、更新ログ抽出部７２が更新情報を記憶する際には空欄（またはＮＵＬＬ）になる。更新情報は、更新前のデータと更新後のデータとを含む情報である。
【００２８】
例えば、ａさんの銀行口座からｂさんの銀行口座へ１０万円を移動する処理の場合、ａさんの銀行口座の金額から１０万円を引く処理と、ｂさんの銀行口座の金額に１０万円を加える処理と、のそれぞれに基づいて抽出された各更新情報には、同じトランザクションＩＤが設定される。そして、更新ログ抽出部７２は、更新ログ中間テーブルＡ８１に２つのレコードを登録する。
【００２９】
また、図５に示すように、更新情報は、対象テーブルと、格納行数と、Ｘ（Ｘは自然数）行目の更新情報からＹ（Ｙは自然数（Ｘ＜Ｙ））行目の更新情報と、を有している。対象テーブルは、マスタＤＢ２１に格納されたテーブル（データベース）のうち、更新部７１が更新したテーブルを特定するための情報である。格納行数は、対象テーブルに格納されたレコード（行）の数を表す情報である。
【００３０】
そして、Ｘ行目の更新情報は、対象行主キーと、格納列数と、Ｍ（Ｍは自然数）列目の更新前データからＮ（Ｎは自然数（Ｍ＜Ｎ））列目の更新前データと、Ｍ列目の更新後データからＮ列目の更新後データと、を有している。対象行主キーは、対象テーブルの更新された１つの行を特定するための情報である。格納列数は、対象テーブルに格納された列の数を表す情報である。そして、Ｍ列目の更新前データは、更新前データが格納された位置を表すＭ列列位置と、更新前データのサイズを表すＭ列列長と、更新前のデータを表す更新前データと、を有している。同様に、Ｍ列目の更新後データは、更新後データが格納された位置を表すＭ列列位置と、更新後データのサイズを表すＭ列列長と、更新後のデータを表す更新後データと、を有している。
【００３１】
ここで図４の説明に戻る。図４の更新部７１による更新が完了し、更新ログ抽出部７２がデータベース反映情報に基づく更新情報を全て更新ログ中間テーブルＡ８１に記憶した場合、更新部７１は、トランザクション処理の成功を出力する。すなわち、更新部７１による更新処理が確定される。これにより、マスタＤＢ２１の更新に基づく更新情報を抽出し、更新ログ中間テーブルＡ８１に記憶することができる。
【００３２】
次に、マスターサーバ１１が、更新ログ中間テーブルＡ８１に記憶された更新情報に反映ＩＤを設定する処理について説明する。まず、更新ログ制御部７３は、更新ログ中間テーブルＡ８１を参照して、反映ＩＤが未設定（例えば空欄またはＮＵＬＬ）の更新情報を読み出す。続いて、更新ログ制御部７３は、予め設定された転送条件に基づいて、レプリカＤＢ２２へ一度のタイミングで転送し、レプリカＤＢ２２へ反映させる複数の更新情報（更新情報群）を決定する。例えば、更新ログ制御部７３は、転送条件として予め件数設定がされている場合、設定された件数まで反映ＩＤを設定し、同じ反映ＩＤを設定した複数の更新情報を更新情報群として決定する。
【００３３】
具体的には、更新ログ制御部７３は、設定された件数が１００件ならば、１００件以内かつトランザクションＩＤが切り替わる前の更新情報までに（すなわち同じトランザクションＩＤが設定された全ての更新情報に）同じ反映ＩＤを設定する。更新ログ制御部７３は、例えば、１から順番に反映ＩＤを発行する。例えば、９０〜９８件目（トリガＩＤ「９０」〜「９８」）の更新情報のトランザクションＩＤが「１０」であり、９９〜１０４件目の更新情報のトランザクションＩＤが「１１」である場合、更新ログ制御部７３は、１〜９８件目の更新情報に同じ反映ＩＤ（例えば「１」）を設定し、反映ＩＤ「１」を設定した１〜９８件目の更新情報を１つの更新情報群として決定する。また、９９件目以降（１９９件目未満）の更新情報に、次の反映ＩＤ（例えば「２」）を設定し、反映ＩＤ「２」を設定した複数の更新情報を次の更新情報群として決定する。このように、更新ログ制御部７３は、更新情報の件数単位に基づいて、更新ログ中間テーブルＡ８１の各更新情報に反映ＩＤを割り当てる。
【００３４】
つまり、ａさんの銀行口座からｂさんの銀行口座へ１０万円を移動する処理の場合、ａさんの銀行口座の金額から１０万円を引く処理と、ｂさんの銀行口座の金額に１０万円を加える処理と、のそれぞれに基づいて抽出された各更新情報には、同じトランザクションＩＤが設定されるとともに、同じ反映ＩＤが設定される。
【００３５】
また、更新ログ制御部７３は、予め件数設定がされていない場合、転送条件として予め設定された時間まで同じ反映ＩＤを設定する（ステップＳ４４）。例えば、更新ログ制御部７３は、予め設定された時間が「１秒」である場合に、更新ログ中間テーブルＡ８１の時刻を参照して、１秒以内かつトランザクションＩＤが切り替わる前の更新情報までに同じ反映ＩＤを設定する。このように、更新ログ制御部７３は、時間インターバル単位に基づいて、更新ログ中間テーブルＡ８１の各更新情報に反映ＩＤを割り当てることもできる。
【００３６】
次に、マスターサーバ１１が、更新ログ中間テーブルＡ８１に記憶された更新情報をスレーブサーバ１２へ転送する処理について説明する。更新ログ転送部７４は、更新ログ抽出部７２が抽出し、更新ログ制御部７３が決定した更新情報群を、レプリカＤＢ２２へ、一度のタイミングで転送する処理を行う。
【００３７】
まず、更新ログ転送部７４は、更新ログ中間テーブルＡ８１を参照する。件数設定がされている場合には、更新ログ転送部７４は、設定された件数未満（または以上）かつ反映ＩＤが切り替わる前までの更新情報を取得する。設定された件数が１００件ならば、更新ログ転送部７４は、例えば１〜９８件目の更新情報を取得する。なお、更新ログ制御部７３が読み出す予め設定された件数（例えば上述した１００件）と、更新ログ転送部７４が読み出す予め設定された件数とは異なる値（例えば１０００件）でもよい。なお、更新ログ転送部７４は、件数設定がされていない場合には、更新ログ中間テーブルＡ８１に格納された全ての更新情報を取得する。
【００３８】
そして、更新ログ転送部７４は、通信部４４と通信網１３とを介して、スレーブサーバ１２へ、取得した更新情報を転送する。スレーブサーバ１２は、通信部５３を介して、更新情報を受信すると、記憶部５２の更新ログ中間テーブルＢ１０１に更新情報を記憶する。なお、更新ログ中間テーブルＢ１０１は、更新ログ中間テーブルＡ８１と同じ構成である。続いて、マスターサーバ１１の更新ログ転送部７４は、更新ログ反映部９１へ反映処理を指示する。さらに、更新ログ転送部７４は、転送した更新情報（を含むレコード）を更新ログ中間テーブルＡ８１から削除する。
【００３９】
このように、同じ反映ＩＤが設定された更新情報（すなわち同じトランザクションＩＤが設定された更新情報）を一度のタイミングで転送するので、マスタＤＢ２１に対して行った更新のトランザクション処理の一貫性を保証したまま、更新情報をスレーブサーバ１２へ転送することができる。
【００４０】
次に、スレーブサーバ１２が、更新ログ中間テーブルＢ１０１に記憶された更新情報をレプリカＤＢ２２へ反映する処理について説明する。
【００４１】
マスターサーバ１１の更新ログ転送部７４により反映処理が指示されると、更新ログ反映部９１は、まず反映処理がロックされているか否かを判定する。反映処理は、後述する一括反映処理を行う場合にロックされる。反映処理がロックされている場合には、更新ログ転送部７４は、反映処理のロックが解除されるまで待機する。反映処理がロックされていないと判定した場合、更新ログ反映部９１は、更新ログ中間テーブルＢ１０１を参照し、更新情報が記憶されている場合には、トランザクション処理を開始する。そして、更新ログ反映部９１は、更新ログ中間テーブルＢ１０１に記憶された更新情報をレプリカＤＢ２２へ反映する。具体的には、更新ログ反映部９１は、同じトランザクションＩＤが設定された更新情報を一度に取得し、レプリカＤＢ２２に記憶された複製データを更新する。例えば、ａさんの銀行口座からｂさんの銀行口座へ１０万円を移動する処理の場合、ａさんの銀行口座の金額から１０万円を引く処理と、ｂさんの銀行口座の金額に１０万円を加える処理と、のそれぞれに基づいて抽出された各更新情報は一度のタイミングで取得され、レプリカＤＢ２２が更新される。
【００４２】
更新ログ反映部９１は、レプリカＤＢ２２に対する更新情報の反映に成功した場合に、トランザクション処理の成功を出力する。これにより、レプリカＤＢ２２に対する更新のトランザクション処理の一貫性を保証することができる。
【００４３】
一方、更新ログ反映部９１は、レプリカＤＢ２２に対する更新情報の反映に失敗した場合に、ロールバックを行う。例えば、スレーブサーバ１２の負荷が増加することにより、更新情報の反映に失敗することがある。このように更新情報の反映に失敗した場合には、更新ログ反映部９１は、再度レプリカＤＢ２２に対して更新情報を反映する処理を行う。ロールバックを繰り返しても（例えば予め設定された回数以上ロールバックを行っても）レプリカＤＢ２２に対する更新情報の反映に成功しなかった場合、更新ログ反映部９１は、トランザクション処理の失敗を出力する。そして、更新ログ反映部９１は、一括反映実行部９３へ一括反映処理を指示する。
【００４４】
ここで、スレーブサーバ１２が、レプリカＤＢ２２に対して更新情報を一括反映させる場合の処理について説明する。まず、一括反映制御部９２は、予め設定されたタイミングで（例えば定期的に）、スレーブサーバ１２のCPU等の負荷を取得し、取得した負荷の値が予め設定された閾値未満である場合に、一括反映処理を開始する。なお、一括反映制御部９２は、更新ログ中間テーブルＢ１０１に記憶された更新情報（レコード）の数が予め設定された閾値未満である場合に、一括反映処理を開始することもできる。
【００４５】
一括反映処理を開始する場合、一括反映制御部９２は、上述した反映処理をロックする。なお、一括反映制御部９２は、反映処理が実行中の場合には、反映処理が終了するまで待機し、反映処理が終了した時にロックする。反映処理をロックした後、一括反映制御部９２は、更新ログ反映部９１により反映に失敗した更新情報に基づいて、一括反映するテーブル情報を取得する。例えば、一括反映制御部９２は、更新情報の更新元となるデータベース自体の情報を取得する。このテーブル情報は、更新ログ中間テーブルＢ１０１に記憶された更新情報に含まる「対象テーブル」により特定することができる。そして、一括反映制御部９２は、一括反映実行部９３に反映処理の実行を指示する。
【００４６】
続いて、一括反映実行部９３は、一括反映制御部９２が取得した一括反映するテーブル情報を、通信部５３と通信網１３とを介して、マスターサーバ１１のテーブル取得部７５へ送信する。なお、スレーブサーバ１２からテーブル情報を送信することで、レプリカＤＢ２２に対する更新情報の反映に失敗したことがマスターサーバ１１へ通知される。そして、テーブル取得部７５は、受信したテーブル情報にて示されるテーブル（データベース）自体（全体）をマスタＤＢ２１から取得する。例えば、ａさんの銀行口座からｂさんの銀行口座へ１０万円を移動する処理の場合、テーブル取得部７５は、ａさんの銀行口座の情報を含むデータベースと、ｂさんの銀行口座の情報を含むデータベースとのそれぞれを取得する。続いて、テーブル取得部７５は、取得したテーブルそのものを、通信部４４と通信網１３とを介して、スレーブサーバ１２の一括反映実行部９３へ転送する。そして、一括反映実行部９３は、受信したテーブルをレプリカＤＢ２２に反映する。すなわち、一括反映実行部９３は、レプリカＤＢ２２に記憶されたテーブル全体を、受信したテーブルに置き換える。これにより、スレーブサーバ１２に対する負荷が大きく、更新情報の反映処理に失敗した場合でも、スレーブサーバ１２に対する負荷が小さくなった時に、一括して更新情報の反映処理を行うので、確実にレプリケーション処理を実行することができる。
【００４７】
また、一括反映実行部９３は、一括反映を開始する開始時刻を記録しておき、一括反映処理が終了した場合に、更新ログ中間テーブルＢ１０１から開始時刻より前の時刻が設定された、一括反映したテーブルに含まれる更新情報を削除する。これにより、一括反映処理は終了するので、一括反映制御部９２は、更新ログ反映部９１へ反映処理のロックの解除を通知する。そして、更新ログ反映部９１は、反映処理のロックの解除が通知されると、再び反映処理を実行する。
【００４８】
このように、更新ログ制御部７３の反映ＩＤの設定と、更新ログ転送部７４の転送タイミングの設定と、により更新情報を転送するタイミングを細かく任意に調節した運用が可能である。また、一括反映制御部９２は、更新ログ反映部９１による反映が失敗した場合、スレーブサーバ１２の負荷が比較的小さい時に、更新情報を一括して反映するので、データベースの整合性の保証をとることができる。従って、マスタＤＢ２１に対して行われた更新のトランザクション処理の一貫性をレプリカＤＢ２２において保証することができる。
【００４９】
［動作］
次に、図６乃至図１１を参照して、上述した情報処理システム１の動作について詳細に説明する。図６は、更新処理を説明するためのフローチャートである。図７は、更新ログ抽出処理を説明するためのフローチャートである。図８は、更新情報制御処理を説明するためのフローチャートである。図９は、更新情報転送処理を説明するためのフローチャートである。図１０は、反映処理を説明するためのフローチャートである。図１１は、一括反映処理を説明するためのフローチャートである。
【００５０】
最初に、図６と図７を参照して、更新部７１の更新処理と、更新ログ抽出部７２の更新ログ抽出処理について説明する。まず、図６の更新処理では、更新部７１が、トランザクション処理を開始する（ステップＳ１）。続いて、更新部７１は、データベース反映情報を取得する（ステップＳ２）。そして、更新部７１は、マスタＤＢ２１に記憶されたマスターデータの更新を開始する（ステップＳ３）。
【００５１】
続いて、更新部７１は、更新ログ抽出部７２へトリガを発行する（ステップＳ４）。
更新部７１が発行したトリガを受信することにより、更新ログ抽出部７２は、図７の更新ログ抽出処理を開始する。次に、更新部７１は、更新が完了したか否かを判定する（ステップＳ５）。更新が完了していないと判定した場合（ステップＳ５：Ｎｏ）、すなわち、まだデータベース反映情報が存在する場合、処理はステップＳ２に戻り、それ以降の処理が繰り返される。一方、更新が完了したと判定した場合（ステップＳ５：Ｙｅｓ）、更新部７１は、更新完了を更新ログ抽出部７２へ通知する（ステップＳ６）。
【００５２】
ここで、図７を参照して、更新ログ抽出部７２の更新ログ抽出処理について説明する。図７の更新ログ抽出処理では、まず、更新ログ抽出部７２が、図６のステップＳ４の処理にて発行されたトリガを受け付ける（ステップＳ２１）。続いて、更新ログ抽出部７２は、マスタＤＢ２１に記憶された更新前のマスターデータと、更新情報に基づいて更新された更新後のマスターデータと、に基づいて、更新情報（更新ログ）を生成（抽出）する（ステップＳ２２）。
【００５３】
そして、更新ログ抽出部７２は、ステップＳ２２の処理にて生成した更新情報を更新ログ中間テーブルＡ８１に記憶する（ステップＳ２３）。次に、更新ログ抽出部７２は、図６のステップＳ６の処理にて更新部７１から出力される更新完了通知を受信したか否かを判定する（ステップＳ２４）。更新完了通知を受信していないと判定した場合（ステップＳ２４：Ｎｏ）、処理はステップＳ２１に戻り、それ以降の処理を繰り返す。
【００５４】
一方、更新完了通知を受信したと判定した場合（ステップＳ２４：Ｙｅｓ）、更新ログ抽出部７２は、全ての更新情報を記憶したか否かを判定する（ステップＳ２５）。全ての更新情報を記憶していないと判定した場合（ステップＳ２５：Ｎｏ）、処理はステップＳ２１に戻り、それ以降の処理を繰り返す。
【００５５】
一方、全ての更新情報を記憶したと判定した場合（ステップＳ２５：Ｙｅｓ）、すなわち、同一のトランザクション内で生成した更新情報全てを更新ログ中間テーブルＡ８１へ記憶した場合、更新ログ抽出部７２は、記憶完了を更新部７１へ通知する（ステップＳ２６）。ステップＳ２６の処理の後、更新ログ抽出処理は終了する。これにより、トランザクション処理によりマスタＤＢ２１を更新するとともに、マスタＤＢ２１の更新情報を抽出することができる。
【００５６】
次に、図６のステップＳ７において、更新部７１は、図７のステップＳ２６の処理にて通知された記憶完了を受信する（ステップＳ７）。そして、更新部７１は、トランザクション処理の成功を出力する（ステップＳ８）。ステップＳ８の処理の後、更新処理は終了する。
【００５７】
次に、図８を参照して、更新ログ制御部７３の更新ログ制御処理について説明する。更新ログ制御処理は、更新部７１の動作とは独立して動作する。
【００５８】
まず、更新ログ制御部７３は、更新ログ中間テーブルＡ８１を参照して、反映ＩＤが未設定の更新情報が存在するか否かを判定する（ステップＳ４１）。反映ＩＤが未設定の更新情報が存在しないと判定した場合（ステップＳ４１：Ｎｏ）、処理はステップＳ４１に戻り、同様の処理が繰り返される。一方、反映ＩＤが未設定の更新情報が存在すると判定した場合（ステップＳ４１：Ｙｅｓ）、更新ログ制御部７３は、件数設定がされているか否かを判定する（ステップＳ４２）。
【００５９】
件数設定がされていると判定された場合（ステップＳ４２：Ｙｅｓ）、更新ログ制御部７３は、設定された件数まで反映ＩＤを設定する（ステップＳ４３）。具体的には、更新ログ制御部７３は、設定された件数が１００件ならば、１００件以内かつトランザクションＩＤが切り替わる前の更新情報までに同じ反映ＩＤを設定する。更新ログ制御部７３は、例えば、１から順番に反映ＩＤを発行する。また、トランザクションＩＤが同じ更新情報には、同じ反映ＩＤを設定する。例えば、９０〜９８件目の更新情報のトランザクションＩＤが「１０」であり、９９〜１０４件目の更新情報のトランザクションＩＤが「１１」である場合、更新ログ制御部７３は、１〜９８件目の更新情報に同じ反映ＩＤを設定する。
【００６０】
一方、件数設定がされていないと判定された場合（ステップＳ４２：Ｎｏ）、更新ログ制御部７３は、予め設定された時間まで反映ＩＤを設定する（ステップＳ４４）。例えば、更新ログ制御部７３は、予め設定された時間が「１秒」である場合に、更新ログ中間テーブルＡ８１の時刻を参照して、１秒以内かつトランザクションＩＤが切り替わる前の更新情報までに同じ反映ＩＤを設定する。
【００６１】
ステップＳ４３，Ｓ４４の処理の後、処理はステップＳ４１に戻り、それ以降の処理が繰り返される。このように、更新ログ制御部７３は、更新情報の件数単位、または、時間インターバル単位に基づいて、更新ログ中間テーブルＡ８１の各更新情報に反映ＩＤを割り当てる。
【００６２】
次に、図９を参照して、更新ログ転送部７４の更新ログ転送処理について説明する。更新ログ転送処理は、予め設定されたタイミング（例えば定期的）に開始する。
【００６３】
まず、更新ログ転送部７４は、更新ログ中間テーブルＡ８１を参照して、更新情報が存在するか否かを判定する（ステップＳ６１）。更新情報が存在すると判定した場合（ステップＳ６１：Ｙｅｓ）、更新ログ転送部７４は、件数設定がされているか否かを判定する（ステップＳ６２）。件数設定がされていると判定した場合（ステップＳ６２：Ｙｅｓ）、更新ログ転送部７４は、設定された件数以上の更新情報が存在するか否かを判定する（ステップＳ６３）。
【００６４】
ステップＳ６２の処理にて件数設定がされていないと判定した場合（ステップＳ６２：Ｎｏ）、および、ステップＳ６３の処理にて設定された件数以上の更新情報が存在しないと判定した場合（ステップＳ６３：Ｎｏ）、更新ログ転送部７４は、更新ログ中間テーブルＡ８１に格納された全ての更新情報を取得する（ステップＳ６４）。一方、ステップＳ６３の処理にて設定された件数以上の更新情報が存在すると判定した場合（ステップＳ６３：Ｙｅｓ）、転送する更新情報を取得する（ステップＳ６５）。具体的には、更新ログ転送部７４は、設定された件数以上（または未満）かつ反映ＩＤが切り替わる前までの更新情報を取得する。
【００６５】
そして、更新ログ転送部７４は、ステップＳ６４，Ｓ６５の処理にて取得した更新情報を更新ログ中間テーブルＢ１０１へ転送する（ステップＳ６６）。なお、更新ログ中間テーブルＢ１０１は、更新ログ中間テーブルＡ８１と同じ構成であり、図５に示すものと同一である。続いて、更新ログ転送部７４は、更新ログ反映部９１へ反映処理を指示する（ステップＳ６７）。反映処理については図１０を参照して後述する。次に、更新ログ転送部７４は、転送した更新情報（を含むレコード）を更新ログ中間テーブルＡ８１から削除する（ステップＳ６８）。
【００６６】
そして、更新ログ転送部７４は、予め設定された時間待機し（ステップＳ６９）、その後、ステップＳ６１以降の処理を繰り返す。また、ステップＳ６１の処理にて更新情報が存在しないと判定した場合（ステップＳ６１：Ｎｏ）にも、更新ログ転送部７４は、予め設定された時間待機する（ステップＳ６９）。
【００６７】
次に、図１０を参照して、更新ログ反映部９１の反映処理について説明する。反映処理は、更新ログ転送部７４により反映処理が指示されたとき（例えば図９のステップＳ６７）に開始する。
【００６８】
まず、更新ログ反映部９１は、反映処理がロックされているか否かを判定する（ステップＳ８１）。反映処理は、後述する一括反映処理を行う場合にロックされる。一括反映処理については図１１を参照して後述する。反映処理がロックされていないと判定した場合（ステップＳ８１：Ｎｏ）、更新ログ反映部９１は、更新ログ中間テーブルＢ１０１に更新情報が存在するか否かを判定する（ステップＳ８２）。
【００６９】
更新情報が存在すると判定した場合（ステップＳ８２：Ｙｅｓ）、更新ログ反映部９１は、トランザクション処理を開始する（ステップＳ８３）。そして、更新ログ反映部９１は、更新ログ中間テーブルＢ１０１に記憶された更新情報をレプリカＤＢ２２へ反映する（ステップＳ８４）。具体的には、更新ログ反映部９１は、同じトランザクションＩＤが設定された更新情報をレプリカＤＢ２２へ反映し、レプリカＤＢ２２に記憶された複製データを更新する。
【００７０】
続いて、更新ログ反映部９１は、反映に成功したか否かを判定する（ステップＳ８５）。反映に成功したと判定した場合（ステップＳ８５：Ｙｅｓ）、更新ログ反映部９１は、トランザクション処理の成功を出力する（ステップＳ８６）。これにより、レプリカＤＢ２２に対する更新情報の反映を確定することができる。そして、更新ログ反映部９１は、更新ログ中間テーブルＢ１０１から、反映した更新情報（を含むレコード）を削除する（ステップＳ８７）。ステップＳ８７の処理の後、処理はステップＳ８１に戻り、それ以降の処理が繰り返される。
【００７１】
一方、ステップＳ８５の処理にて反映に成功していないと判定した場合（ステップＳ８５：Ｎｏ）、更新ログ反映部９１は、ロールバック回数が予め設定された閾値以上であるか否かを判定する（ステップＳ８８）。ロールバック回数が閾値以上でないと判定した場合（ステップＳ８８：Ｎｏ）、更新ログ反映部９１は、ロールバックを行う（ステップＳ８９）。そして、ステップＳ８９の処理の後、処理はステップＳ８４に戻り、再度更新情報の反映を行う。
【００７２】
一方、ステップＳ８８においてロールバック回数が閾値以上であると判定した場合（ステップＳ８８：Ｙｅｓ）、更新ログ反映部９１は、トランザクション処理の失敗を出力する（ステップＳ９０）。そして、更新ログ反映部９１は、一括反映実行部９３へ一括反映処理を指示する（ステップＳ９１）。一括反映処理については図１１を参照して説明する。ステップＳ９１の処理の後、処理はステップＳ８１に戻り、それ以降の処理が繰り返される。
【００７３】
また、ステップＳ８１の処理にて反映処理がロックされていると判定した場合（ステップＳ８１：Ｙｅｓ）、および、ステップＳ８２の処理にて更新情報が存在しないと判定した場合（ステップＳ８２：Ｎｏ）には、図１０の反映処理は終了する。
【００７４】
次に、図１１を参照して、一括反映処理について説明する。まず、一括反映制御部９２は、予め設定されたタイミングで（例えば定期的に）、スレーブサーバ１２のCPUの負荷を表す負荷情報を取得する（ステップＳ１１１）。続いて、一括反映制御部９２は、取得した負荷が予め設定された閾値未満であるか否かを判定する（ステップＳ１１２）。取得した負荷が予め設定された閾値未満でない（閾値以上である）と判定した場合（ステップＳ１１２：Ｎｏ）、処理はステップＳ１１１に戻り、それ以降の処理が繰り返される。  
【００７５】
一方、ステップＳ１１２において、取得した負荷が予め設定された閾値未満である場合（ステップＳ１１２：Ｙｅｓ）、一括反映制御部９２は、反映処理をロックする（ステップＳ１１３）。反映処理をロックした後、更新ログ反映部９１により反映に失敗した更新情報に基づいて、一括反映するテーブル情報を取得する（ステップＳ１１４）。
【００７６】
続いて、一括反映実行部９３は、一括反映制御部９２が取得した一括反映するテーブル情報を、通信部５３と通信網１３とを介して、マスターサーバ１１のテーブル取得部７５へ送信する（ステップＳ１１５）。マスターサーバ１１のテーブル取得部７５は、受信したテーブル情報にて示されるテーブル（データベース）自体をマスタＤＢ２１から取得する。続いて、テーブル取得部７５は、取得したテーブル自体を、通信部４４と通信網１３とを介して、スレーブサーバ１２の一括反映実行部９３へ転送する。
【００７７】
そして、一括反映実行部９３は、転送されたテーブルを受信し（ステップＳ１１６）、レプリカＤＢ２２を更新する（ステップＳ１１７）。すなわち、一括反映実行部９３は、レプリカＤＢ２２に記憶されたテーブル全体を、受信したテーブルに置き換える。これにより、スレーブサーバ１２に対する負荷が大きく、更新情報の反映処理に失敗した場合でも、スレーブサーバ１２に対する負荷が小さくなった時に、一括して更新情報の反映処理を行うので、確実にレプリケーション処理を実行することができる。
【００７８】
次に、一括反映実行部９３は、更新ログ中間テーブルＢ１０１（および更新ログ中間テーブルＡ８１）に記憶された更新情報を削除する（ステップＳ１１８）。具体的には、一括反映実行部９３は、一括反映を開始する開始時刻を記録しておき、一括反映処理が終了した場合に、更新ログ中間テーブルＢ１０１から開始時刻より前の時刻が設定された更新情報を削除する。最後に、一括反映制御部９２は、更新ログ反映部９１へ反映処理のロックを解除する（ステップＳ１１９）。ステップＳ１１９の処理の後、一括反映処理は終了する。そして、更新ログ反映部９１は、反映処理のロックの解除が通知されると、再び反映処理を実行する。
【００７９】
なお、本実施形態において、レプリカＤＢ２２（スレーブサーバ１２）が複数ある場合、マスターサーバ１１の更新ログ中間テーブルＡ８１をレプリカＤＢ２２の数だけ複数用意する。そして、更新ログ抽出部７２は、更新部７１によりトリガが発行された時に、複数の更新ログ中間テーブルのそれぞれへ同時に書き込みを行う。そして、更新ログ転送部７４は、それぞれのレプリカＤＢ２２単位で更新情報を転送する。このように、レプリカＤＢ２２を複数台用意し遠隔地に分ける場合などには、転送のタイミングを独立させることができる。
【００８０】
＜第２実施形態＞
次に、本発明の第２実施形態に係るマスターサーバについて図１２を参照して説明する。
第２実施形態に係るマスターサーバ２０１（情報処理装置）は、
マスタデータベース（マスタＤＢ）２１１に対して所定の更新処理を行い、マスタＤＢ２１１に記憶されたデータベースを更新する更新部２１２（更新手段）と、
更新部２１２にて更新したデータベースに基づいて更新情報を抽出する更新ログ抽出部２１３（更新情報抽出手段）と、
更新ログ抽出部２１３にて抽出した複数の更新情報を１つの更新情報群に含めて、当該更新情報群を、マスタＤＢ２１１に記憶されたデータベースの複製データを記憶するレプリカデータベースへ、一度のタイミングで転送する更新ログ転送部２１４（更新情報転送手段）と、
を備え、
更新ログ転送部２１４は、関連する複数の更新処理を一連の処理として管理する、同一のトランザクション処理によって更新された複数の更新情報を１つの更新情報群に含めて、当該更新情報群をレプリカデータベースへ、一度のタイミングで転送する。
【００８１】
上記構成により、更新部２１２がトランザクション処理によってデータベースを更新した場合に、更新ログ抽出部２１３は、複数の更新情報を１つの更新情報群に含める。そして、更新ログ転送部２１４は、更新情報群をレプリカデータベースへ、一度のタイミングで転送する。従って、マスターサーバ２０１やレプリカデータベース側の装置への負荷を抑制しつつ、マスタＤＢ２１１に対して行われたトランザクション処理の一貫性をレプリカデータベースにおいて保障することができる。
【００８２】
以上、上記実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成及び詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。
【００８３】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理装置等の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００８４】
（付記１）
マスタデータベースに対して所定の更新処理を行い、前記マスタデータベースに記憶されたデータベースを更新する更新手段と、
前記更新手段にて更新した前記データベースに基づいて更新情報を抽出する更新情報抽出手段と、
前記更新情報抽出手段にて抽出した複数の前記更新情報を１つの更新情報群に含めて、当該更新情報群を、前記マスタデータベースに記憶された前記データベースの複製データを記憶するレプリカデータベースへ、一度のタイミングで転送する更新情報転送手段と、
を備え、
前記更新情報転送手段は、関連する複数の更新処理を一連の処理として管理する、同一のトランザクション処理によって更新された複数の前記更新情報を１つの前記更新情報群に含めて、当該更新情報群を前記レプリカデータベースへ、一度のタイミングで転送する、
情報処理装置。
【００８５】
これによれば、トランザクション処理によってデータベースを更新した場合に、複数の更新情報を１つの更新情報群に含めて、当該更新情報群をレプリカデータベースへ、一度のタイミングで転送するので、情報処理装置やレプリカデータベース側の装置への負荷を抑制しつつ、マスタデータベースに対して行われたトランザクション処理の一貫性をレプリカデータベースにおいて保障することができる。
【００８６】
（付記２）
付記１に記載の情報処理装置であって、
予め設定された転送条件に基づいて、同一の前記トランザクション処理によって更新された前記データベースに基づいて抽出した複数の前記更新情報を１つの前記更新情報群に含めるように、当該更新情報群を決定する更新情報制御手段をさらに備え、
前記更新情報転送手段は、前記更新情報制御手段にて決定した１つの前記更新情報群を、前記レプリカデータベースへ、一度のタイミングで転送する、
情報処理装置。
【００８７】
これによれば、予め設定された転送条件に基づいて、同一のトランザクション処理によって更新されたデータベースに基づいて抽出した複数の更新情報を１つの更新情報群に含めるように、当該更新情報群を決定し、決定した１つの更新情報群を、レプリカデータベースへ、一度のタイミングで転送するので、マスタデータベースに対して行われた更新のトランザクション処理の一貫性を保証した更新情報群を決定し、レプリカデータベースへ転送することができる。従って、更新のトランザクション処理の一貫性をレプリカデータベースにおいて保障することができる。
【００８８】
（付記３）
付記２に記載の情報処理装置であって、
前記更新情報抽出手段は、同一の前記トランザクション処理によって更新された前記データベースに基づいて抽出した複数の前記更新情報のそれぞれに、同じトランザクション識別情報を設定し、
前記更新情報制御手段は、前記更新情報抽出手段にて同じ前記トランザクション識別情報が設定された全ての前記更新情報を含む１つの前記更新情報群を決定する、
情報処理装置。
【００８９】
これによれば、同一のトランザクション処理によって更新されたデータベースに基づいて抽出した複数の更新情報のそれぞれに、同じトランザクション識別情報を設定し、同じトランザクション識別情報が設定された全ての更新情報を含む１つの更新情報群を決定するので、同一のトランザクション処理に基づく更新情報のそれぞれを容易に管理することができ、より確実に更新のトランザクション処理の一貫性をレプリカデータベースにおいて保障することができる。
【００９０】
（付記４）
付記３に記載の情報処理装置であって、
前記更新情報制御手段は、前記更新情報抽出手段にて同じ前記トランザクション識別情報が設定された全ての前記更新情報を含む複数の前記更新情報のそれぞれに同じ転送識別情報を設定し、同じ転送識別情報が設定された複数の前記更新情報を前記更新情報群として決定する、
情報処理装置。
【００９１】
これによれば、同じトランザクション識別情報が設定された全ての更新情報を含む複数の更新情報のそれぞれに転送識別情報を設定し、同じ転送識別情報が設定された複数の更新情報を更新情報群として決定するので、レプリカデータベースへ一度のタイミングで転送する更新情報群を容易に管理することができ、より確実に更新のトランザクション処理の一貫性をレプリカデータベースにおいて保障することができる。
【００９２】
（付記５）
付記４に記載の情報処理装置であって、
前記更新情報制御手段は、予め設定された数以下の前記更新情報、または、予め設定された時間内に前記更新情報抽出手段にて抽出した前記更新情報であり、かつ、同じ前記トランザクション識別情報が設定された全ての前記更新情報に同じ前記転送識別情報を設定する、
情報処理装置。
【００９３】
これによれば、レプリカデータベースへ一度のタイミングで転送する更新情報の数を制限することができるので、レプリカデータベースを備える他の情報処理装置に対する負荷を抑制することができる。
【００９４】
（付記６）
付記１乃至５のいずれかに記載の情報処理装置であって、
前記レプリカデータベースを備える他の情報処理装置から、前記レプリカデータベースに対する前記更新情報の反映に失敗したことが通知された場合に、当該更新情報の更新元となる前記データベース自体を前記マスタデータベースから取得し、取得した前記データベース自体を前記レプリカデータベースへ転送するデータベース転送制御手段、
をさらに備える情報処理装置。
【００９５】
これによれば、他の情報処理装置がレプリカデータベースに対する更新情報の反映に失敗した場合に、当該更新情報の更新元となるデータベース自体を取得し、レプリカデータベースへ転送する。従って、他の情報処理装置は、レプリカデータベースに記憶されたデータベースを、転送されたデータベースに置き換えて更新することができるので、簡単な処理によりレプリカデータベースに対する更新漏れを防止し、確実にレプリカデータベースを更新することができる。
【００９６】
（付記７）
情報処理装置に、
マスタデータベースに対して所定の更新処理を行い、前記マスタデータベースに記憶されたデータベースを更新する更新手段と、
前記更新手段にて更新した前記データベースに基づいて更新情報を抽出する更新情報抽出手段と、
前記更新情報抽出手段にて抽出した複数の前記更新情報を１つの更新情報群に含めて、当該更新情報群を、前記マスタデータベースに記憶された前記データベースの複製データを記憶するレプリカデータベースへ、一度のタイミングで転送する更新情報転送手段と、
を実現させるとともに、
前記更新情報転送手段は、関連する複数の更新処理を一連の処理として管理する、同一のトランザクション処理によって更新された複数の前記更新情報を１つの前記更新情報群に含めて、当該更新情報群を前記レプリカデータベースへ、一度のタイミングで転送する、
ことを実現させるためのプログラム。
【００９７】
（付記８）
付記７に記載のプログラムであって、
予め設定された転送条件に基づいて、同一の前記トランザクション処理によって更新された前記データベースに基づいて抽出した複数の前記更新情報を１つの前記更新情報群に含めるように、当該更新情報群を決定する更新情報制御手段をさらに備え、
前記更新情報転送手段は、前記更新情報制御手段にて決定した１つの前記更新情報群を、前記レプリカデータベースへ、一度のタイミングで転送する、
プログラム。
【００９８】
（付記９）
マスタデータベースに対して所定の更新処理を行い、前記マスタデータベースに記憶されたデータベースを更新し、
更新した前記データベースに基づいて更新情報を抽出し、
関連する複数の更新処理を一連の処理として管理する、同一のトランザクション処理によって更新された前記データベースに基づいて抽出した複数の前記更新情報を１つの前記更新情報群に含めて、当該更新情報群を、前記マスタデータベースに記憶された前記データベースの複製データを記憶するレプリカデータベースへ、一度のタイミングで転送する、
情報処理方法。
【００９９】
（付記１０）
付記９に記載の情報処理方法であって、
予め設定された転送条件に基づいて、同一の前記トランザクション処理によって更新された前記データベースに基づいて抽出した複数の前記更新情報を１つの前記更新情報群に含めるように、当該更新情報群を決定し、
決定した１つの前記更新情報群を、前記レプリカデータベースへ、一度のタイミングで転送する、
情報処理方法。
【符号の説明】
【０１００】
１      情報処理システム
１１    マスターサーバ
１２    スレーブサーバ
１３    通信網
２１    マスタＤＢ
２２    レプリカＤＢ
４１    演算部
４２    記憶部
４３    入出力部
４４    通信部
５１    演算部
５２    記憶部
５３    通信部
７１    更新部
７２    更新ログ抽出部
７３    更新ログ制御部
７４    更新ログ転送部
７５    テーブル取得部
８１    更新ログ中間テーブルＡ
９１    更新ログ反映部
９２    一括反映制御部
９３    一括反映実行部
１０１  更新ログ中間テーブルＢ
２０１  マスターサーバ
２１１  マスタＤＢ
２１２  更新部
２１３  更新ログ抽出部
２１４  更新ログ転送部
【図１】
2014106580.tif 000003
【図２】
2014106580.tif 000004
【図３】
2014106580.tif 000005
【図４】
2014106580.tif 000006
【図５】
2014106580.tif 000007
【図６】
2014106580.tif 000008
【図７】
2014106580.tif 000009
【図８】
2014106580.tif 000010
【図９】
2014106580.tif 000011
【図１０】
2014106580.tif 000012
【図１１】
2014106580.tif 000013
【図１２】
2014106580.tif 000014