(57)【要約】【課題】  マスタデータベースからレプリカデータベースへの非同期レプリケーション処理において、レプリケーション処理に遅延が発生した場合でも、マスタデータベースの更新に与える影響を少なく、その遅延を解消することができるデータベース監視装置等を提供する。【解決手段】  データベース監視装置１０は、マスタデータベース２０に対する更新内容を蓄積可能なログ記憶部４０に、その更新内容をログとして保存するログ保存部１１と、前記ログ記憶部４０に保存された更新内容を、前記マスタデータベース２０に対する更新内容を反映可能なレプリカデータベース３０に反映するログ反映部１２と、前記ログ反映部１２による前記レプリカデータベース３０への前記更新内容の反映状態を所定の条件に従って監視し、その反映状態に遅延が生じている場合には、前記ログ記憶部４０に保存されたログのうち、更新が必要な特定ログを選択し、その特定ログを反映するよう前記ログ反映部１２に指示する監視部１３とを備える。【選択図】  図１
2015064850.tif 000002
【特許請求の範囲】
【請求項１】
マスタデータベースに対する更新内容を蓄積可能なログ記憶部に、その更新内容をログとして保存するログ保存部と、
前記ログ記憶部に保存された更新内容を、前記マスタデータベースに対する更新内容を反映可能なレプリカデータベースに反映するログ反映部と、
前記ログ反映部による前記レプリカデータベースへの前記更新内容の反映状態を所定の条件に従って監視し、その反映状態に遅延が生じている場合には、前記ログ記憶部に保存されたログのうち、更新が必要な特定ログを選択し、その特定ログを反映するよう前記ログ反映部に指示する監視部と、
を備えることを特徴とするデータベース監視装置。
【請求項２】
前記監視部は、前記ログ記憶部に保存された前記ログのうち、
前記マスタデータベースに格納されている同じレコードに対応するログについては最新の前記ログを前記特定ログとして選択する
ことを特徴とする請求項１記載のデータベース監視装置。
【請求項３】
前記監視部は、
前記レプリカデータベースへの前記ログの反映状態に遅延が生じていることを判断する条件として、前記ログを保存したときに付与した通番と、前記レプリカデータベースに反映済の前記ログの通番の差に関する閾値を利用する
ことを特徴とする請求項１または請求項２記載のデータベース監視装置。
【請求項４】
前記監視部は、
前記マスタデータベースに格納されているレコードと前記通番を関連付けて管理するテーブルについて、前記マスタデータベースを更新する処理における当該テーブルの変更処理を、更新内容の反映に際して生じた遅延を解消する処理における当該テーブルの参照処理が妨げることがないように、当該テーブルを複数用いて切り替える
ことを特徴とする請求項１乃至請求項３の何れかに記載のデータベース監視装置。
【請求項５】
前記ログ保存部は、
前記ログ記憶部に、前記通番と、更新内容とを関連付けて記憶するときに、
前記レコードを識別する情報と、記憶した最新の前記通番とを関連付けて格納する第１のテーブルを更新し、
最新の前記通番と、前記ログ反映部により行われた反映済の最新ログに対応する通番とを格納する第２のテーブルを更新し、
前記ログ監視部は、
前記第２のテーブルを参照することにより遅延が生じていることを判定したときには、
前記第１のテーブルを参照することにより更新が必要なログを選択して、更新が必要なログの通番リストを作成して前記ログ反映部に通知し、
前記ログ反映部は、
前記通番リストを基に前記ログ記憶部を参照して、前記レプリカデータベースに必要なログを反映する
ことを特徴とする請求項１乃至請求項４の何れかに記載のデータベース監視装置。
【請求項６】
情報処理装置によって、マスタデータベースに対する更新内容を蓄積可能なログ記憶部に、その更新内容をログとして保存し、
前記ログ記憶部に保存した更新内容を、前記マスタデータベースに対する更新内容を反映可能なレプリカデータベースに反映するに際して、
前記レプリカデータベースへの前記更新内容の反映状態を所定の条件に従って監視し、その反映状態に遅延が生じている場合には、前記ログ記憶部に保存されたログのうち、更新が必要な特定ログを選択し、その特定ログを反映する
ことを特徴とするデータベース監視方法。
【請求項７】
情報処理装置によって、
前記ログ記憶部に、マスタデータベースに格納されたレコードを更新するアプリケーションプログラムごとに付与する通番と、更新内容とを関連付けて記憶するときに、
前記レコードを識別する情報と、記憶した最新の前記通番とを関連付けて格納する第１のテーブルを更新し、
最新の前記通番と、最新の反映済の通番とを関連付けて格納する第２のテーブルを更新し、
前記第２のテーブルを参照することにより遅延が生じていることを判定したときには、
前記第１のテーブルを参照することにより更新が必要なログを選択して、更新が必要なログの通番リストを作成し、
前記通番リストを基に前記ログ記憶部を参照して、前記レプリカデータベースに必要なログを反映する
ことを特徴とする請求項６記載のデータベース監視方法。
【請求項８】
マスタデータベースに対する更新内容を蓄積可能なログ記憶部に、その更新内容をログとして保存するログ保存機能と、
前記ログ記憶部に保存された更新内容を、前記マスタデータベースに対する更新内容を反映可能なレプリカデータベースに反映するログ反映機能と、
前記レプリカデータベースへの前記更新内容の反映状態を所定の条件に従って監視し、その反映状態に遅延が生じている場合には、前記ログ記憶部に保存されたログのうち、更新が必要な特定ログを選択し、その特定ログを反映するよう前記ログ反映機能の動作を制御する監視機能とを、
コンピュータに実現させる
ことを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース監視装置、データベース監視方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
マスタデータベースへの更新内容を更新ログとして蓄積し、その更新ログをレプリカデータベースへ非同期に随時反映することでデータベースのレプリケーションを行う方式がある。
【０００３】
図１４は、非同期にデータベースのレプリケーションを行うデータベースシステムを説明する図である。図１４に示すデータベースシステムは、マスタデータベース１１０１と、レプリカデータベース１１０２と、アプリケーション１１０３と、更新ログ格納領域１１０４とを含む。このデータベースシステムは、マスタデータベース１１０１へのアプリケーション１１０３による更新内容を、更新ログとして更新ログ格納領域１１０４に蓄積し、その更新ログを基に、レプリカデータベースに非同期に反映する。
【０００４】
この方式を用いたオンライントランザクションシステムにおいて、図１４に示すように、マスタデータベース１１０１にはインメモリデータベースを使用し、レプリカデータベース１１０２にはディスクストレージのデータベースを使用する場合がある。この場合、メモリとディスクストレージとのレコードの書き込み処理速度には大きな差があるため、オンライン処理の処理速度が向上すると、非同期レプリケーション処理が追い付けなくなる可能性がある。そのため、非同期レプリケーション処理の性能を向上する方法およびレプリケーション処理の遅延を解消するための方法を考える必要がある。
【０００５】
ここで、本願出願に先だって存在する関連技術としては、例えば以下の特許文献がある。
【０００６】
特許文献１では、レプリケーション処理の遅延を検出すると、マスタデータベースの更新を保留して、遅延解消を図る技術が開示されている。
【０００７】
特許文献２では、マスタデータベースの更新頻度が多くなった場合に、レプリカデータベース側に差分データを送信する頻度を多くすることにより、遅延が大きくなるのを防ごうとする技術が開示されている。
【０００８】
特許文献３では、マスタデータベースで行われた更新をレプリカデータベースに対して、一定時間ごとに行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００６−５３７３７号公報
【特許文献２】特開２００６−３１８０２０号公報
【特許文献３】特開２００９−２７７１８７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１から３に提案されている技術を用いても、即時に変更が要求されるマスタデータベースにおいて、大量のデータ更新が発生した場合には、レプリカデータベースの更新に遅延が発生し、その遅延を解消することは難しい。
【００１１】
そこで、本発明は、マスタデータベースからレプリカデータベースへの非同期レプリケーション処理において、レプリケーション処理に遅延が発生した場合でも、マスタデータベースの更新に与える影響を少なく、その遅延を解消することができるデータベース監視装置等を提供することを主たる目的とする。
【課題を解決するための手段】
【００１２】
上記の目的を達成すべく、本発明に係るデータベース監視装置は、以下の構成を備えることを特徴とする。
【００１３】
即ち、本発明に係るデータベース監視装置は、
マスタデータベースに対する更新内容を蓄積可能なログ記憶部に、その更新内容をログとして保存するログ保存部と、
前記ログ記憶部に保存された更新内容を、前記マスタデータベースに対する更新内容を反映可能なレプリカデータベースに反映するログ反映部と、
前記ログ反映部による前記レプリカデータベースへの前記更新内容の反映状態を所定の条件に従って監視し、その反映状態に遅延が生じている場合には、前記ログ記憶部に保存されたログのうち、更新が必要な特定ログを選択し、その特定ログを反映するよう前記ログ反映部に指示する監視部と、
を備える
ことを特徴とする。
【００１４】
同目的を達成する本発明に係るデータベース監視方法は、
情報処理装置によって、マスタデータベースに対する更新内容を蓄積可能なログ記憶部に、その更新内容をログとして保存し、
前記ログ記憶部に保存した更新内容を、前記マスタデータベースに対する更新内容を反映可能なレプリカデータベースに反映するに際して、
前記レプリカデータベースへの前記更新内容の反映状態を所定の条件に従って監視し、その反映状態に遅延が生じている場合には、前記ログ記憶部に保存されたログのうち、更新が必要な特定ログを選択し、その特定ログを反映する
ことを特徴とする。  更に、同目的は、上記構成を有するデータベース監視方法、並びにデータベース監視装置を、コンピュータによって実現するコンピュータ・プログラム、及びそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００１５】
上記の本発明によれば、マスタデータベースからレプリカデータベースへの非同期レプリケーション処理において、レプリケーション処理に遅延が発生した場合でも、マスタデータベースの更新に与える影響を少なく、その遅延を解消することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１の実施形態に係るデータベース監視装置の構成を示すブロック図である。
【００１７】
【図２】本発明の第２の実施形態に係るデータベースシステムの構成を示すブロック図である。
【図３】本発明の第２の実施形態に係る更新ログ格納表を説明する図である。
【図４】本発明の第２の実施形態に係る処理済通番管理表を説明する図である。
【図５】本発明の第２の実施形態に係る最新登録通番管理表を説明する図である。
【図６】本発明の第２の実施形態に係る更新ログ保存部における更新ログ登録処理を示すフローチャートである。
【図７】本発明の第２の実施形態に係る更新ログを登録した後の更新ログ格納表を説明する図である。
【図８】本発明の第２の実施形態に係る最新の登録通番を更新した後の最新登録通番管理表を説明する図である。
【図９】本発明の第２の実施形態に係る更新ログ監視部における更新ログの反映状況を監視する処理のフローチャートである。
【図１０】本発明の第２の実施形態に係る更新ログ反映部における遅延解消のための更新ログ反映処理のフローチャートである。
【図１１】本発明の第２の実施形態に係る更新ログ格納表の一例を説明する図である
【図１２】本発明の第３の実施形態に係るデータベースシステムの構成を示すブロック図である。
【図１３】本発明の第３の実施形態に係る処理済通番管理表６０１を説明する図である。
【図１４】非同期にデータベースのレプリケーションを行うデータベースシステムを説明する図である。
【図１５】本発明の第１乃至第３の実施形態を実現可能なコンピュータ（情報処理装置）のハードウェア構成を例示的に説明する図である。
【発明を実施するための形態】
【００１８】
次に、本発明を実施する形態について図面を参照して詳細に説明する。
【００１９】
＜第１の実施形態＞
図１は、本発明の第１の実施形態に係るデータベース監視装置の構成を示すブロック図である。
【００２０】
本実施形態に係るデータベースシステムは、データベース監視装置１０と、マスタデータベース２０と、レプリカデータベース３０と、ログ記憶部４０とを有する。
【００２１】
マスタデータベース２０は、アプリケーションが更新するデータが格納されたデータベースである。
【００２２】
レプリカデータベース３０は、マスタデータベース２０の上記更新に伴うレプリケーション先となるデータベースである。
【００２３】
ログ記憶部４０は、マスタデータベース２０に対する更新内容を蓄積可能な装置である。
【００２４】
データベース監視装置１０は、ログ保存部１１と、ログ反映部１２と、監視部１３とを含む。
【００２５】
ログ保存部１１は、マスタデータベース２０に対する更新内容をログとして、ログ記憶部４０に保存する。
【００２６】
ログ反映部１２は、ログ記憶部４０に保存された更新内容をレプリカデータベース３０に反映する。
【００２７】
監視部１３は、所定の条件に従って、ログ反映部１２によるレプリカデータベース３０への更新内容の反映状態を監視する。遅延が生じている場合には、監視部１３は、ログ記憶部４０に保存されたログのうち、更新が必要な特定ログを選択する。監視部１３は、その特定ログを反映するようにログ反映部１２に指示する。
【００２８】
以上、説明したように、第１の実施形態には、マスタデータベースからレプリカデータベースへの非同期レプリケーション処理において、レプリケーション処理に遅延が発生した場合でも、マスタデータベースの更新に与える影響を少なく、その遅延を解消することができるという効果がある。
【００２９】
その理由は、本実施形態に係るデータベース監視装置１０は、レプリケーション処理に遅延が発生していると判定した場合には、ログ記憶部４０に保存されたログのうち、更新が必要な特定ログを選択して、その特定ログをレプリカデータベースに反映するためである。
【００３０】
＜第２の実施形態＞
図２は、本発明の第２の実施形態に係るデータベースシステムの構成を示すブロック図である。
【００３１】
本実施形態に係るデータベースシステムは、マスタデータベース１００と、レプリカデータベース２００と、アプリケーション３００と、更新ログ格納表５００と、処理済通番管理表６００と、最新登録通番管理表７００と、更新ログ反映部８００と、更新ログ監視部９００とを有する。
【００３２】
マスタデータベース１００は、アプリケーション３００が参照および更新するデータが格納されたデータベースである。
【００３３】
レプリカデータベース２００は、マスタデータベース１００に対する更新内容のレプリケーション先となるデータベースである。
【００３４】
アプリケーション３００は、少なくともマスタデータベース１００を参照および更新する機能を有するプログラムである。アプリケーション３００は、１つ以上存在する。
【００３５】
アプリケーション３００は、更新ログ保存部４００を有する。
【００３６】
アプリケーション３００によるマスタデータベース１００の更新時に、更新ログ保存部４００は、更新ログを更新ログ格納表５００に格納する。更新ログは、更新後のレコードイメージ全体と通番とを含む。更新ログ保存部４００は、処理済通番管理表６００を参照して、更新ログに付加する通番を決定する。更新ログ保存部４００は、更新ログの保存時に、最新登録通番管理表７００へ決定した通番を記録する。
【００３７】
図３は、本発明の第２の実施形態に係る更新ログ格納表を説明する図である。
【００３８】
更新ログ格納表５００は、更新ログを格納するテーブルであり、通番５１０と、更新内容５２０とを含む。通番５１０と、更新内容５２０は、更新ログ格納表５００において、図３に概念的に示すテーブルの如く関連付けされていることとする。
【００３９】
通番５１０は、更新内容５２０の更新が発生した順番を表す連番である。通番５１０は、アプリケーション３００を実行するトランザクション単位に決定される。１トランザクションで複数個のレコードを更新した場合、更新ログ保存部４００は、それらの更新を１つの通番の更新内容として更新ログ格納表５００に格納する。
【００４０】
本実施形態において、すべてのアプリケーション３００の更新ログ保存部４００は、１つの更新ログ格納表５００を共有しているものとして説明する。更新ログ格納表５００は、実際には、複数個存在しても構わない。
【００４１】
図４は、本発明の第２の実施形態に係る処理済通番管理表を説明する図である。
【００４２】
処理済通番管理表６００は、処理済の通番を管理するテーブルであり、登録済通番６１０と、反映済通番６２０とを含む。登録済通番６１０と、反映済通番６２０は、処理済通番管理表６００において、図４に概念的に示すテーブルの如く関連付けされていることとする。
【００４３】
登録済通番６１０の値は、更新ログ保存部４００が直近に更新ログを更新ログ格納表５００に保存したときの通番を表している。反映済通番６２０の値は、更新ログ反映部８００が直近にレプリカデータベース２００に反映した更新ログの通番を表している。各アプリケーション３００の更新ログ保存部４００は、１つの処理済通番管理表６００を共有している。
【００４４】
図５は、本発明の第２の実施形態に係る最新登録通番管理表を説明する図である。
【００４５】
最新登録通番管理表７００は、マスタデータベースに格納されたレコードに対応する最新の通番を管理するテーブルであり、更新先管理表７１０と、通番管理表ａ（通番管理表７２０）と、通番管理表ｂ（通番管理表７３０）とを含む。更新先管理表７１０と、通番管理表ａと、通番管理表ｂは、最新登録通番管理表７００において、図５に概念的に示すテーブルの如く関連付けされていることとする。
【００４６】
更新先管理表７１０の表識別名は、２つの通番管理表（通番管理表ａと、通番管理表ｂ）のうちでどちらの通番管理表に、更新ログ保存部４００が更新ログの通番を格納するかを表している。表識別名の値が「ａ」の場合、更新ログ保存部４００は、通番管理表ａを更新する。また、表識別名の値が「ｂ」の場合、更新ログ保存部４００は、通番管理表ｂを更新する。
【００４７】
通番管理表ａは、ユーザテーブルと、キーと、最新登録通番とを含む。ユーザテーブルと、キーと、最新登録通番は、通番管理表ａにおいて、図５に概念的に示すテーブルの如く関連付けされていることとする。
【００４８】
ユーザテーブルは、マスタデータベース１００に作成したユーザテーブルの識別子である。キーは、そのユーザテーブル内のレコードを一意に決定するための情報である。最新登録通番は、ユーザテーブルと、キーで一意に決定されるレコードを、最新に登録した時の通番である。図５に示す通番管理表ａで一行に示されるユーザテーブルと、キーと、最新登録通番を管理レコードという。
【００４９】
通番管理表ｂは、通番管理表ａと同じ形式である。
【００５０】
各アプリケーション３００の更新ログ保存部４００は、１つの最新登録通番管理表７００を共有している。
【００５１】
更新ログ反映部８００は、更新ログをレプリカデータベース２００へ反映する。更新ログ反映部８００は、例えば、あらかじめ定めた一定時間ごとに処理済通番管理表６００を参照して更新ログが登録されたことを検知すると、更新ログ格納表５００から該当の更新ログを取得する。更新ログ反映部８００は、取得した更新ログをレプリカデータベース２００へ反映する。更新ログを反映したら、更新ログ反映部８００は、最後に反映した更新ログの通番を処理済通番管理表６００の反映済通番６２０に記録する。また、更新ログ反映部８００は、複数の更新ログをレプリカデータベース２００へ反映後に、コミットして反映を確定する機能を有する。
【００５２】
更新ログ監視部９００は、例えば、あらかじめ定めた一定時間ごとに処理通番管理表５００を参照し、更新ログ反映部８００の処理に遅延が発生していないかを監視する。更新ログ監視部９００は、例えば、登録済通番と、反映済通番との差について、あらかじめ閾値を決定しておく。そして、更新ログ監視部９００は、その閾値を超えたことを検知した場合に、対応が必要な遅延が発生したと判定する。
【００５３】
対応が必要な遅延を検知した場合には、更新ログ監視部９００は、遅延解消処理を行う。更新ログ監視部９００は、最新登録通番管理表７００を参照し、レプリケーションを行うために必要な更新ログの通番リストを作成する。更新ログ監視部９００は、作成した通番リストを更新ログ反映部８００に通知する。更新ログ反映部８００は、通知された通番リストに基づいて、更新ログをレプリカデータベース２００へ反映する。反映完了が確認できれば、更新ログ監視部９００は、最新登録通番管理表７００から反映完了で不要になった情報を削除する。
【００５４】
次に、本発明の第２の実施形態の動作について詳細に説明する。
【００５５】
図６は、本発明の第２の実施形態に係る更新ログ保存部における更新ログ登録処理を示すフローチャートである。
【００５６】
図７は、本発明の第２の実施形態に係る更新ログを登録した後の更新ログ格納表を説明する図である。
【００５７】
図８は、本発明の第２の実施形態に係る最新の登録通番を更新した後の最新登録通番管理表を説明する図である。
【００５８】
アプリケーション３００がマスタデータベース１００に作成されたユーザテーブルに対して更新を行った際に、更新ログ保存部４００は、その更新内容を受け取り、動作する。
【００５９】
更新ログ保存部４００は、処理済通番管理表６００の登録済通番６１０を参照し、最新の更新ログの登録通番を取得する。更新ログ保存部４００は、取得した登録通番に１を加算して今回の通番の値を求める（ステップＳ１１）。図４に示す処理済通番管理表６００の状態では、更新ログ保存部４００は、登録済通番６１０の値である「１０００」に１を加算して、今回の通番の値である「１００１」を求める。
【００６０】
次に、更新ログ保存部４００は、求めた通番を通番５１０と、アプリケーション３００の更新内容を更新内容５２０として、更新ログ格納表５００に登録する（ステップＳ１２）。
登録前の更新ログ格納表５００が図３に示す内容であった場合には、登録後の更新ログ格納表５００は、図７に示す内容となる。
【００６１】
更新ログ保存部４００は、更新ログを登録後、更新先管理表７１０の表識別名を参照し、通番管理表のその時点での更新先を取得する（ステップＳ１３）。最新登録通番管理表７００が図５に示す内容の場合、通番管理表の更新先は、「通番管理表ａ」になる。表識別名の参照時には共有ロックを行い、更新ログ監視部９００が表識別名を更新する処理との排他を行う。共有ロックは、以降の通番管理表更新処理がすべて完了するまでを排他区間とする。
【００６２】
更新ログ保存部４００は、更新先の通番管理表において、今回更新したユーザテーブル内のレコードに対応する管理レコードを検索する（ステップＳ１４）。
【００６３】
ここで、管理レコードが見つかった（ステップＳ１５で「Ｙｅｓ」）場合、更新ログ保存部４００は、その管理レコードに含まれる最新登録通番を今回登録した通番で更新する（ステップＳ１６）。管理レコードが見つからない（ステップＳ１５で「Ｎｏ」）場合には、更新ログ保存部４００は、通番管理表に新たに管理レコードを追加する（ステップＳ１７）。１つのトランザクション内で複数のレコードを更新している場合、更新ログ保存部４００は、すべての更新に対して管理レコードの追加または更新を行う。
【００６４】
具体的に、テーブルＡのキー「３」に関連付けされたレコードと、テーブルＢのキー「１」に関連付けされたレコードとの２つのレコードを更新する場合を例に説明する。
【００６５】
テーブルＡのキー「３」に関連付けされたレコードの管理レコードについて、更新ログ保存部４００は、通番管理表ａを検索する（ステップＳ１４）。更新ログ保存部４００は、通番管理表ａに該当する管理レコードが存在しないため（ステップＳ１５で「Ｎｏ」）、新たに、テーブルＡのキー「３」に関連付けされた管理レコードを通番管理表ａに追加する（ステップＳ１７）。すなわち、図５の通番管理表は、ユーザテーブルが「テーブルＡ」で、キーが「キー３」で、最新登録通番が「１００１」の管理レコードが追加され、図８に示すようになる。
【００６６】
テーブルＢのキー「１」に関連付けされた管理レコードについては処理していない（ステップＳ１８で「Ｎｏ」）ので、  テーブルＢのキー「１」に関連付けされたレコードの管理レコードについても、更新ログ保存部４００は、通番管理表ａを検索する（ステップＳ１４）。更新ログ保存部４００は、通番管理表ａに該当するレコードが存在するため（ステップＳ１５で「Ｙｅｓ」）、通番管理表ａにおけるテーブルＢのキー「１」に関連付けされた管理レコードの最新登録通番を「１００１」に更新する（ステップＳ１６）。すなわち、図５の通番管理表ａは、ユーザテーブルが「テーブルＢ」で、キーが「キー１」の管理レコードに対し、最新登録通番が「１００１」に更新され、図８に示すようになる。
【００６７】
テーブルＡのキー「３」に関連付けされた管理レコードと、テーブルＢのキー「１」に関連付けされた管理レコードとの２つのレコードについて処理した(ステップＳ１８で「Ｙｅｓ」）ので、更新ログ保存部４００は、処理を終了する。
【００６８】
更新ログ保存部４００が行った更新ログ格納表５００、処理済通番管理表６００および、最新登録通番管理表７００への更新は、マスタデータベース１００に対する更新がコミットされることにより、内容が確定する。マスタデータベース１００のコミットに失敗してロールバックが発生した場合には、更新ログ格納表５００、処理済通番管理表６００および最新登録通番管理表７００への更新は、取り消される。
【００６９】
なお、管理レコードを更新するときは、他のアプリケーション３００の更新との排他を行うために管理レコード単位の占有ロックが必要である。しかし、通常は、ユーザテーブルのレコードを更新する際に排他が行われているはずなので、その排他が管理レコードの更新時点でも有効であれば管理レコード更新の排他制御は行わなくてもよい。
【００７０】
次に、レプリケーション処理が大幅に遅延した場合に実行する遅延解消処理について説明する。
【００７１】
図９は、本発明の第２の実施形態に係る更新ログ監視部における更新ログの反映状況を監視する処理のフローチャートである。
【００７２】
更新ログ監視部９００（図２）には、遅延解消処理の実行を判断するための条件があらかじめ設定されている。例えば、本実施形態では、登録済通番と反映済通番との間の差が、決められた閾値以上であった場合に、反映処理が遅延していると判断して遅延解消処理を実行することとする。ここでは、閾値を「５００」に設定する。なお、ここで記述した条件は、一例であり、本発明を限定するものではない。
【００７３】
更新ログ監視部９００は、あらかじめ定めた一定時間ごとに処理済通番管理表６００を参照し、登録済通番と反映済通番との間に閾値以上の差がないかを監視する（ステップＳ２１）。
【００７４】
閾値を超えていないとき(ステップＳ２２で「Ｎｏ」)、更新ログ監視部９００は、処理を終了する。
【００７５】
更新ログ監視部９００は、反映処理の遅延が閾値以上であることを検知すると(ステップＳ２２で「Ｙｅｓ」)、更新先管理表７１０の表識別名を、現在の更新先でない通番管理表を表す値に変更する（ステップＳ２３）。ステップＳ２３における表識別名の更新は、占有ロックを行い、更新ログ保存部４００による参照との排他を行う。この変更により、更新ログ保存部４００は、更新ログの登録時に、切り替え後の通番管理表を更新することができる。
【００７６】
ステップＳ２３における処理による通番管理表の切り替え後、更新ログ監視部９００は、切り替え前に更新先だった方の通番管理表にあるすべての管理レコードの最新登録通番を参照する。更新ログ監視部９００は、管理レコードに存在するすべての最新登録通番の値から、処理済通番管理表６００の反映済通番の値より大きい通番を抽出する。更新ログ監視部９００は、抽出した通番を基に、通番リストを作成する（ステップＳ２４）。例えば、図４に示す反映済通番が「５００」と図８に示す通番管理表ａを基に、通番リストを作成した場合、通番リストは、「５１０、６００、１０００、１００１」となる。
【００７７】
更新ログ監視部９００は、作成した通番リストを更新ログ反映部８００に送信する（ステップＳ２５）。
【００７８】
更新ログ反映部８００で行う処理については、後で説明する。
【００７９】
更新ログ監視部９００は、処理済通番管理表６００を参照し、反映済通番６２０を確認する（ステップＳ２６）。
【００８０】
更新ログ監視部９００は、更新ログ反映部８００へ通知した通番すべてが反映されたことを確認すると(ステップＳ２７で「Ｙｅｓ」)、最新登録通番管理表７００の更新先管理表の表識別名に対応する通番管理表でない方の通番管理表（すなわち、未反映通番リストを作成時に参照した通番管理表）内の管理レコードをすべて削除する（ステップＳ２８）。なお、本実施形態では更新ログ監視部９００が削除処理を行う例で説明したが、通番管理表内の管理レコードの削除は反映処理完了後に行われればいいので、更新ログ反映部８００が反映済通番更新時に同時に行ってもよい。
【００８１】
次に、更新ログ反映部８００で行う処理について説明する。
【００８２】
図１０は、本発明の第２の実施形態に係る更新ログ反映部における遅延解消のための更新ログ反映処理のフローチャートである。
図１１は、本発明の第２の実施形態に係る更新ログ格納表の一例を説明する図である。
【００８３】
更新ログ反映部８００は、更新ログ監視部９００から通番リストを受信する（ステップＳ３１）。受信した通番リストと処理済通番管理表６００の反映済通番６２０とを比較することにより、更新ログ反映部８００は、通番リスト内に含まれる通番について、未処理状態の通番を確認する（ステップＳ３２）。例えば、更新ログ監視部９００が通番リストを作成してから通知するまでの間に、更新ログ反映部８００が通番５２０までの更新ログの反映を行っていたとすると、未処理状態の通番リスト（以下、「未反映通番リスト」ともいう）は、「６００、１０００、１００１」となる。
【００８４】
未反映の通番がある(ステップＳ３３で「Ｙｅｓ」）場合、更新ログ反映部８００は、未反映通番リストにあるすべての通番の更新ログを更新ログ格納表５００から取得する。その後、更新ログ反映部８００は、通番の小さい更新ログから順にレプリカデータベース２００へ一括更新し、コミットして反映する（ステップＳ３４）。反映完了後、更新ログ反映部８００は、処理済通番管理表６００の反映済通番６２０を、通番リスト内の最も大きい通番の値に更新する。
【００８５】
もし受信した通番リストがすべて反映済であれば(ステップＳ３３で「Ｎｏ」）、更新ログ反映部８００は、反映処理を行わない。
【００８６】
今回の例では、更新ログ反映部８００は、通番６００、１０００、１００１の更新ログのみを更新ログ格納表５００から取得する。更新ログ反映部８００は、取得した更新ログを基に、レプリカデータベース２００に反映する。この時、更新ログ格納表５００が図１１に示す内容であったとする。この場合、通番１００１以下の未反映の更新ログのうちで、更新ログ反映部８００は、通番６００、１０００、１００１以外の更新ログを反映する必要がなくなる。通番６００、１０００、１００１の更新ログを反映することで、レプリカデータベース２００は、通番１００１の更新ログを生成した時点のマスタデータベース１００と同等の内容になる。よって、反映することを省略した更新ログを反映するのに必要な時間の分だけ、更新ログ反映部８００は、反映処理に要する時間を短縮することができる。
【００８７】
なお、更新ログ反映部８００が未反映通番リストを基に更新ログを反映する際、レプリカデータベース２００に更新対象レコードが存在しない場合がある。これは、未反映通番リストにない更新ログに対応する処理で、アプリケーション３００がマスタデータベース１００にレコードを追加していた場合に発生する。更新ログ反映部８００は、更新対象レコードが見つからない場合は、レコードの追加を行う。例えば、図１１の更新ログ管理表における通番５５０の更新でテーブルＢのキー「２」に関連付けされたレコードを追加した場合、通番６００の更新ログを反映する際にレプリカデータベース２００にテーブルＢキー「２」に関連付けされたレコードは存在しない。そのため、更新ログ反映部８００は、レプリカデータベース２００にテーブルＢのキー「２」に関連付けされたレコードを追加する。
【００８８】
更新ログ反映部８００は、未反映通番リストにあるすべての通番について、更新ログの反映を行ったら（ステップＳ３３で「Ｎｏ」）、処理を終了する。
【００８９】
本実施形態では、登録済通番と反映済通番との間に決められた閾値以上の差が生じたことを条件にして、その条件に従って、遅延解消処理が実行される例を示した。このような閾値の設定は、決められた更新数以上のレプリケーション処理の遅延を発生させないという要求がシステムの要件にある場合に有効である。
【００９０】
ただし、時間に対する平均的なレプリケーション処理の遅延量を抑えたいような場合は、本実施形態の条件設定はあまり効果的ではない。なぜなら、例えば、登録済通番と反映済通番との差分が「５００」を閾値とした場合、登録処理と反映処理との差分が「４９０」となった状態が継続する（すなわち、マスタデータベース１００への更新速度とレプリケーション処理速度とが平衡状態になる）場合を仮定すると、この場合は、遅延解消処理が実行されないからである。時間に対する平均的なレプリケーション処理の遅延量を抑えたいような場合は、単位時間あたりの処理遅延量の累積値に対して実行条件を設定することが望ましい。例えば、１秒間隔で処理遅延量を監視した際に、処理遅延量の累積加算した値が「５０００」以上であれば遅延解消処理を実行するように条件を設定する。このような設定を行えば、登録済通番と反映済通番との差分が「４９０」で平衡状態になったとしても、少なくとも１１秒後には遅延解消処理が実行される。
【００９１】
また、本実施形態および前述の条件設定では、レプリケーション処理の遅延量が閾値未満に収まっていれば遅延解消処理は実行されない。この場合、最新登録通番管理表７００の更新先となっている通番管理表の管理レコードが増大したままになるため、更新ログ保存部４００が通番管理表を更新する際の処理性能が低下する可能性がある。その結果、オンライン処理性能が低下する懸念が発生する。更新ログ監視部９００は、あらかじめ設定した時間を超えたら、遅延解消処理を実行し、通番管理表を切り替えて管理レコードの削除を実行することで、このような状況を回避できる。そのためには、前回の遅延解消処理実行からの経過時間に対する閾値を設定し、更新ログ監視部９００は、その閾値を越えた場合にも遅延解消処理を実行すればよい。
【００９２】
また、本実施形態では未反映の更新ログの通番数を、遅延解消処理を実行するか否かの判断に利用する例を示したが、通番以外に判断できる管理情報が存在するならばそれを使用して判断を行ってもいい。例えば未反映の更新ログの総データサイズに対して判断を行いたい場合は、更新ログ格納領域のサイズを管理する表を別途作成し、その値で遅延解消処理を実行すべきか否か判断すればよい。また、例えば最新登録通番管理表７００の更新先通番管理表の管理レコードのレコード数を一定数以下に抑えたい場合は、定期的にそのレコード数を参照して、判断を行えばよい。
【００９３】
最新登録通番管理表７００の通番管理表に対する更新方法として、本実施形態では、更新対象の管理レコードがない場合にのみ管理レコードを追加する例を示したが、更新ログ保存部４００は、常に管理レコードを追加するようにしてもよい。この場合、更新ログ監視部９００は、通番リストを作成する際に、ユーザテーブルとキーとが共に一致する管理レコードが複数存在しても、通番が最大のもののみを通番リストに追加する。このようにした場合、最新登録通番管理表７００を構成する通番管理表に、本実施形態よりも大きな領域が必要になる。しかし、管理レコードの検索処理が省略できるため、オンライン処理の性能が向上する。また、更新ログ監視部９００もしくは他の構成が、例えば、定期的に古い管理レコードを削除するようなことを行って、領域サイズの増大を抑制するようにしてもよい。
【００９４】
以上、説明したように、第２の実施形態には、マスタデータベースからレプリカデータベースへの非同期レプリケーション処理において、レプリケーション処理に遅延が発生した場合でも、マスタデータベースの更新に与える影響を少なく、その遅延を解消することができるという効果がある。
【００９５】
その理由は、本実施形態に係るデータベースシステムは、レプリケーション処理に遅延が発生していると判定した場合には、更新ログ格納表５００に保存された更新ログの中から、反映する必要がある更新ログを選択して、その選択した更新ログをレプリカデータベース２００に反映するためである。
【００９６】
また、本実施形態による遅延解消処理においてオンライン処理に与える影響は、最新登録通番管理表７００の更新先管理表７１０の表識別名を切り替える際の排他待ちのみである。そのため、遅延解消処理中でもオンライントランザクション処理を継続させることが可能である。
【００９７】
本実施形態は、短時間で少量のレコードに対して大量更新処理を行うようなオンライントランザクション処理システムにおいては非常に有効である。このようなシステムの場合、遅延解消処理を行うことで大部分の更新ログの反映を省略することができる。
【００９８】
また、１日の間で特定の時間帯だけ大量の更新処理が動作するようなオンライントランザクション処理システムにおいても有効である。通常のレプリケーション処理速度でレプリケーションが間に合う時間帯では、レプリケーション処理は随時実行されるため、マスタデータベース１００とレプリカデータベース２００との間のデータの差異はほとんど生じない。そのため、マスタデータベース１００とレプリカデータベース２００とのデータの差異を安定して抑えることが可能である。一時的にマスタデータベース１００への更新が増大する時間帯では、本実施形態の遅延解消処理が行われることで、レプリケーション処理を継続させることが可能である。
【００９９】
＜第３の実施形態＞
次に上述した第２の実施形態に係るデータベースシステムを基本とする第３の実施形態について説明する。
【０１００】
第２の実施形態では、マスタデータベースに対してレプリカデータベースが１つの構成で説明したが、レプリカデータベースは２つ以上であっても本発明は有効である。ここで、第３の実施形態として、レプリカデータベースを２つにした場合について説明する。
【０１０１】
図１２は、本発明の第３の実施形態に係るデータベースシステムの構成を示すブロック図である。本実施形態のシステム構成は、第２の実施形態のシステム構成に、レプリカデータベース２０１と、レプリカデータベース２０１に対して更新ログを反映する更新ログ反映部８０１とを追加した構成になっている。
【０１０２】
図１３は、本発明の第３の実施形態に係る処理済通番管理表６０１を説明する図である。処理済通番管理表６０１は、更新ログ反映部８００と８０１の各々についての反映済通番の値を管理する。
【０１０３】
更新ログ格納表５００は、更新ログ反映部８００と８０１で共有する。
【０１０４】
本実施形態において、更新ログ監視部９００は、更新ログ反映部８００と８０１のうちで、処理が遅れている方に対して閾値以上の差が生じているかを確認する。閾値以上の差が生じている場合には、更新ログ監視部９００は、未反映通番リストを作成する。作成した未反映通番リストを、更新ログ監視部９００は、更新ログ反映部８００と８０１の両方に向けて、送信する。
【０１０５】
更新ログ反映部８００と８０１は、受信した未反映通番リストから自装置が未反映の通番を抽出する。更新ログ反映部８００と８０１は、抽出した通番に相当する更新ログを、自装置のレプリカデータベース（２００または２０１）に反映する。
【０１０６】
更新ログ監視部９００は、更新ログ反映部８００と８０１の両方が未反映の更新ログを反映したことを確認後、最新登録通番管理表７００の通番管理表（７２０または７３０）内の管理レコードを削除する。
【０１０７】
以上、説明したように、第３の実施形態には、マスタデータベースに対して、複数のレプリカデータベースを有するシステムにおいても、マスタデータベースからレプリカデータベースへの非同期レプリケーション処理において、レプリケーション処理に遅延が発生した場合でも、マスタデータベースの更新に与える影響を少なく、その遅延を解消することができるという効果がある。
【０１０８】
その理由は、本実施形態に係るデータベースシステムは、レプリケーション処理に遅延が発生していると判定した場合には、更新ログ格納表５００に保存された更新ログの中から、反映する必要がある更新ログを選択して、その選択した更新ログをレプリカデータベース（２００、２０１）に反映するためである。
【０１０９】
（ハードウェア構成）
上述した実施形態において図１、図２および図１２に示した各部は、専用の装置によって実践してもよいが、ソフトウェアプログラムの機能（処理）単位（ソフトウェアモジュール）と捉えることができる。但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。このような場合のハードウェア環境の一例を、図１５を参照して説明する。
【０１１０】
図１５は、本発明の第１乃至第３の実施形態を実現可能なコンピュータ（情報処理装置）のハードウェア構成を例示的に説明する図である。即ち、図１、図２および図１２に示したデータベースシステムの全体または一部を実現可能なコンピュータ（情報処理装置）の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
【０１１１】
図１５に示した情報処理装置９０００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９００１、ディスプレイ９００２、通信インタフェース（Ｉ／Ｆ）９００３、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９００４、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９００５、ハードディスク装置（ＨＤ）９００６を備え、これらがバス９００７を介して接続された構成を有する。ハードディスク装置（ＨＤ）９００６には、プログラム群９００６Ａと、各種の記憶情報９００６Ｂとが格納されている。プログラム群９００６Ａは、例えば、上述した図１、図２および図１２に示した各ブロック（各部）に対応する機能を実現するためのコンピュータ・プログラムである。各種の記憶情報９００６Ｂは、例えば、図１に示したログ記憶部４０、図２に示した更新ログ格納表５００、処理済通番管理表６００、最新登録通番管理表７００等である。通信インタフェース９００３は、ネットワーク９１００を介して外部装置と通信を実現する一般的な通信手段である。
【０１１２】
そして、上述した実施形態を例に説明した本発明は、その実施形態の説明において参照したブロック構成図、あるいは、フローチャートの機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、当該ハードウェアのＣＰＵ９００１に読み出して、図１５に示す情報処理装置９０００のハードウェア資源を用いて実行することによって達成される。具体的には、更新ログ保存部４００を、情報処理装置９０００によって実現する場合、情報処理装置９０００は、図６に示すフローチャートに対応するコンピュータ・プログラムを実現すればよい。更新ログ監視部９００を、情報処理装置９０００によって実現する場合、情報処理装置９０００は、図９に示すフローチャートに対応するコンピュータ・プログラムを実現すればよい。更新ログ反映部８００を、情報処理装置９０００によって実現する場合、情報処理装置９０００は、図１０に示すフローチャートに対応するコンピュータ・プログラムを実現すればよい。また、情報処理装置９０００内に供給されたコンピュータ・プログラムは、読み書き可能な一時記憶メモリ（９００５）またはハードディスク装置９００６等の不揮発性の記憶デバイス（記憶媒体）に格納すれば良い。
【０１１３】
また、前記の場合において、当該装置内へのコンピュータ・プログラムの供給方法は、ＣＤ−ＲＯＭ等の各種記憶媒体を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明は、係るコンピュータ・プログラムを構成するコード或いは、そのコードが記録されたところの、コンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。
【符号の説明】
【０１１４】
１０    データベース監視装置
１１    ログ保存部
１２    ログ反映部
１３    監視部
２０    マスタデータベース
３０    レプリカデータベース
４０    ログ記憶部
１００    マスタデータベース
２００    レプリカデータベース
２０１    レプリカデータベース
３００    アプリケーション
４００    更新ログ保存部
５００    更新ログ格納表
５１０    通番
５２０    更新内容
６００    処理済通番管理表
６０１    処理済通番管理表
６１０    登録済通番
６２０    反映済通番
７００    最新登録通番管理表
７１０    更新先管理表
７２０    通番管理表
７３０    通番管理表
８００    更新ログ反映部
８０１    更新ログ反映部
９００    更新ログ監視部
１１０１    マスタデータベース
１１０２    レプリカデータベース
１１０３    アプリケーション
１１０４    更新ログ格納領域
９０００    情報処理装置（コンピュータ）
９００１    ＣＰＵ
９００２    ディスプレイ
９００３    通信インタフェース（Ｉ／Ｆ）
９００４    ＲＯＭ
９００５    ＲＡＭ
９００６    ハードディスク装置（ＨＤ）
９００６Ａ    プログラム群
９００６Ｂ    各種の記憶情報
９００７    バス
９１００    ネットワーク
【図１】
2015064850.tif 000003
【図２】
2015064850.tif 000004
【図３】
2015064850.tif 000005
【図４】
2015064850.tif 000006
【図５】
2015064850.tif 000007
【図６】
2015064850.tif 000008
【図７】
2015064850.tif 000009
【図８】
2015064850.tif 000010
【図９】
2015064850.tif 000011
【図１０】
2015064850.tif 000012
【図１１】
2015064850.tif 000013
【図１２】
2015064850.tif 000014
【図１３】
2015064850.tif 000015
【図１４】
2015064850.tif 000016
【図１５】
2015064850.tif 000017