(57)【特許請求の範囲】
【請求項１】
第１のコンピュータと第２のコンピュータとを有し、
前記第１のコンピュータは、
版管理表と、
前記版管理表をデータベースの再構成に応じて更新する版管理手段と、
更新ログ格納手段と
更新対象のキー毎に更新先のデータベースが決定される分散配置データベースを構成する複数のマスターデータベースと、
前記マスターデータベース毎の処理系列を構成するマスター側更新ログ格納表および更新ログ送信手段と、
を有し、
前記第２のコンピュータは、
前記マスターデータベース毎の複製データベースと、
前記処理系列を構成する更新ログ受信手段および複製側更新ログ格納表と、
前記処理系列毎の更新ログ反映手段と、
同期情報管理表と、
を有し、
前記マスター側更新ログ格納表は、通番項目と版数項目と処理実行項目と同期対象処理系列項目と更新ログ項目とを有する更新ログを格納し、
前記更新ログ送信手段は、同じ処理系列の前記マスター側更新ログ格納表に格納された前記更新ログを前記第１のコンピュータから前記第２のコンピュータへ送信し、
前記更新ログ受信手段は、同じ処理系列の前記更新ログ送信手段から送信された前記更新ログを受信し、
前記複製側更新ログ格納表は、同じ処理系列の前記更新ログ受信手段で受信された前記更新ログを格納し、
前記版管理表は、版数項目と処理系列毎の同期対象処理系列項目および同期済項目とを有し、前記版数項目にデータベースの最新の版数を格納し、前記処理系列毎の同期対象処理系列項目に前記処理系列と同期を取る必要のある他の処理系列の一覧を格納し、前記同期済項目に当該他の処理系列と同期済みか否かを示す同期済情報を格納し、
前記同期情報管理表は、処理系列毎の版数項目および同期対象処理系列項目を有し、前記版数項目に前記処理系列の版数を格納し、前記同期対象処理系列項目に前記処理系列と同期を取る必要のある他の処理系列の一覧を格納し、
前記更新ログ格納手段は、前記マスターデータベースを更新した場合、前記版管理表を参照し、前記更新したマスターデータベースに対応する前記処理系列の前記同期済情報が同期済みを示していれば、通番項目に最新の通番、版数項目に前記版管理表の前記版数項目が示す版数、処理実行項目に処理実行要、同期対象処理系列項目に同期を取る必要のある他の処理系列がない旨、更新ログ項目に更新後ログ情報をそれぞれ格納した更新ログを、前記更新したマスターデータベースに対応する前記処理系列の前記マスター側更新ログ格納表に格納し、
一方、前記同期済情報が同期済みでなければ、通番項目に最新の通番、版数項目に前記版管理表の前記版数項目が示す版数の次の版数、処理実行項目に処理実行不要、同期対象処理系列項目に前記版管理表の同期対象処理系列項目の内容、更新ログ項目に更新後ログ情報がない旨をそれぞれ格納した更新ログ（同期データ）を、前記更新したマスターデータベースに対応する前記処理系列の前記マスター側更新ログ格納表に格納した後、前記版管理表の同期済項目を同期済みに更新し、また、通番項目に最新の通番、版数項目に前記版管理表の前記版数項目が示す版数、処理実行項目に処理実行要、同期対象処理系列項目に同期を取る必要のある他の処理系列がない旨、更新ログ項目に更新後ログ情報をそれぞれ格納した更新ログを、前記更新したマスターデータベースに対応する前記処理系列の前記マスター側更新ログ格納表に格納し、さらに、前記版管理表における同期を取る必要のある他の処理系列の前記同期済情報が同期済みでなければ、通番項目に最新の通番、版数項目に前記版管理表の前記版数項目が示す版数の次の版数、処理実行項目に処理実行不要、同期対象処理系列項目に前記版管理表の同期対象処理系列項目の内容、更新ログ項目に更新後ログ情報がない旨をそれぞれ格納した更新ログ（同期データ）を、当該他の処理系列の前記マスター側更新ログ格納表に格納して前記同期済情報を同期済みに更新し、
前記更新ログ反映手段は、対応する前記複製側更新ログ格納表から更新ログを参照し、当該更新ログ中の版数項目の版数が前記同期情報管理表の同じ処理系列の版数項目の版数と同じであれば、前記更新ログ中の更新後ログ項目の内容に基づいて前記複製データベースを更新し、前記更新ログ中の版数項目の版数が前記同期情報管理表の同じ処理系列の版数項目の版数と異なっていれば、更新ログ中の版数項目および同期対象処理系列情報項目の内容で前記同期情報管理表の同じ処理系列の版数項目および同期対象処理系列情報項目を更新し、該更新後の前記同期対象処理系列情報項目が同期すべき他の処理系列がないことを示していれば、前記更新ログ中の更新後ログ項目の内容に基づいて前記複製データベースを更新し、同期すべき他の処理系列があることを示していれば、前記同期情報管理表の当該他の処理系列の版数項目の版数が自処理系列の版数と同じになるまで待機した後、前記更新ログ中の更新後ログ項目の内容に基づいて前記複製データベースを更新する
データベースのレプリケーションシステム。
【請求項２】
第１のコンピュータと第２のコンピュータとを有し、
前記第１のコンピュータは、
版管理表と、
前記版管理表をデータベースの再構成に応じて更新する版管理手段と、
更新ログ格納手段と
更新対象のキー毎に更新先のデータベースが決定される分散配置データベースを構成する複数のマスターデータベースと、
前記マスターデータベース毎の処理系列を構成するマスター側更新ログ格納表および更新ログ送信手段と、
を有し、
前記第２のコンピュータは、
前記マスターデータベース毎の複製データベースと、
前記処理系列を構成する更新ログ受信手段および複製側更新ログ格納表と、
前記処理系列毎の更新ログ反映手段と、
同期情報管理表と、
を有し、
前記マスター側更新ログ格納表は、通番項目と版数項目と処理実行項目と同期対象処理系列項目と更新ログ項目とを有する更新ログを格納し、
前記更新ログ送信手段は、同じ処理系列の前記マスター側更新ログ格納表に格納された前記更新ログを前記第１のコンピュータから前記第２のコンピュータへ送信し、
前記更新ログ受信手段は、同じ処理系列の前記更新ログ送信手段から送信された前記更新ログを受信し、
前記複製側更新ログ格納表は、同じ処理系列の前記更新ログ受信手段で受信された前記更新ログを格納し、
前記版管理表は、版数項目と処理系列毎の同期対象処理系列項目および同期済項目とを有し、前記版数項目にデータベースの最新の版数を格納し、前記処理系列毎の同期対象処理系列項目に前記処理系列と同期を取る必要のある他の処理系列の一覧を格納し、前記同期済項目に当該他の処理系列と同期済みか否かを示す同期済情報を格納し、
前記同期情報管理表は、処理系列毎の版数項目および同期対象処理系列項目を有し、前記版数項目に前記処理系列の版数を格納し、前記同期対象処理系列項目に前記処理系列と同期を取る必要のある他の処理系列の一覧を格納し、
前記更新ログ格納手段は、前記マスターデータベースを更新した場合、前記版管理表を参照し、前記更新したマスターデータベースに対応する前記処理系列の前記同期済情報が同期済みを示していれば、通番項目に最新の通番、版数項目に前記版管理表の前記版数項目が示す版数、処理実行項目に処理実行要、同期対象処理系列項目に同期を取る必要のある他の処理系列がない旨、更新ログ項目に更新後ログ情報をそれぞれ格納した更新ログを、前記更新したマスターデータベースに対応する前記処理系列の前記マスター側更新ログ格納表に格納し、
一方、前記同期済情報が同期済みでなければ、通番項目に最新の通番、版数項目に前記版管理表の前記版数項目が示す版数の次の版数、処理実行項目に処理実行不要、同期対象処理系列項目に前記版管理表の同期対象処理系列項目の内容、更新ログ項目に更新後ログ情報がない旨をそれぞれ格納した更新ログ（同期データ）を、前記更新したマスターデータベースに対応する前記処理系列の前記マスター側更新ログ格納表に格納した後、前記版管理表の同期済項目を同期済みに更新し、また、通番項目に最新の通番、版数項目に前記版管理表の前記版数項目が示す版数、処理実行項目に処理実行要、同期対象処理系列項目に同期を取る必要のある他の処理系列がない旨、更新ログ項目に更新後ログ情報をそれぞれ格納した更新ログを、前記更新したマスターデータベースに対応する前記処理系列の前記マスター側更新ログ格納表に格納し、さらに、前記版管理表における同期を取る必要のある他の処理系列の前記同期済情報が同期済みでなければ、通番項目に最新の通番、版数項目に前記版管理表の前記版数項目が示す版数の次の版数、処理実行項目に処理実行不要、同期対象処理系列項目に前記版管理表の同期対象処理系列項目の内容、更新ログ項目に更新後ログ情報がない旨をそれぞれ格納した更新ログ（同期データ）を、当該他の処理系列の前記マスター側更新ログ格納表に格納して前記同期済情報を同期済みに更新し、
前記更新ログ反映手段は、対応する前記複製側更新ログ格納表から更新ログを参照し、当該更新ログ中の版数項目の版数が前記同期情報管理表の同じ処理系列の版数項目の版数と同じであれば、前記更新ログ中の更新後ログ項目の内容に基づいて前記複製データベースを更新し、前記更新ログ中の版数項目の版数が前記同期情報管理表の同じ処理系列の版数項目の版数と異なっていれば、更新ログ中の版数項目および同期対象処理系列情報項目の内容で前記同期情報管理表の同じ処理系列の版数項目および同期対象処理系列情報項目を更新し、該更新後の前記同期対象処理系列情報項目が同期すべき他の処理系列がないことを示していれば、前記更新ログ中の更新後ログ項目の内容に基づいて前記複製データベースを更新し、同期すべき他の処理系列があることを示していれば、前記同期情報管理表の当該他の処理系列の版数項目の版数が自処理系列の版数と同じになるまで待機した後、前記更新ログ中の更新後ログ項目の内容に基づいて前記複製データベースを更新する
データベースのレプリケーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータベースの複製を作成するレプリケーション方法に関する。
【背景技術】
【０００２】
データベースのレプリケーション方法として、フロントシステムのマスターデータベースが更新された際に、その更新ログを通信路を通じてフロントシステムからバックアップシステムに送信し、バックアップシステムが、受信した更新ログに従って複製データベースを更新する方法がある（例えば特許文献１参照）。
【０００３】
図１７は上記レプリケーション方法の概略図である。マスターデータベースＭＤに対して、更新１、更新２がその順に実行されると、更新１に対応する更新ログＬ１、更新２に対応する更新ログＬ２がその順に通信路ＰＨ１を通じてフロントシステムＦＳからバックアップシステムＢＳへ転送される。バックアップシステムＢＳ側では、更新ログＬ１を受信すると、それに従って複製データベースＲＤを更新する。また、更新ログＬ１に続いて更新ログＬ１を受信すると、それに従って複製データベースＲＤを更新する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１１６９３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、更新ログを転送する通信路を別の通信路に切替えることがある。しかし、このような通信路の切替えを上述したレプリケーション方法の下で実施すると、複製データベースの更新の順序性を保証することができなくなる。
【０００６】
例えば、前述した例において、更新１の更新ログＬ１を通信路ＰＨ１に送出した直後に通信路の切替えを行い、以後、通信路ＰＨ１の代わりに通信路ＰＨ２を使用したとする。このとき、図１８に示すように、更新２の更新ログＬ２は通信路ＰＨ２を流れるため、過度的に、同じデータベースの更新ログＬ１、Ｌ２が複数の通信路ＰＨ１、ＰＨ２を流れることになる。従って、若し、後から送信された更新ログＬ２が更新ログＬ１よりも先にバックアップシステムＢＳに到着して処理されると、複製データベースＲＤは、更新２、更新１の順序で更新される。この結果、それらの更新が同一のデータを対象とする場合にはデータに矛盾が生じることになる。
【０００７】
本発明の目的は、上述した課題、すなわち、更新ログを転送する通信路を別の通信路に切替えると複製データベースの更新の順序性を保証することができなくなる、という課題を解決するデータベースのレプリケーション方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の一形態にかかるデータベースのレプリケーション方法は、
マスターデータベースの更新ログを複製データベースに伝達する通信路の切替時、前記マスターデータベースを有する第１のコンピュータが、切替前後の通信路に同期データを送信し、
前記複製データベースを有する第２のコンピュータが、切替前後の通信路から前記同期データを受信するまで、前記同期データに続いて受信する前記更新ログに基づく前記複製データベースの更新処理を保留する
といった構成を採る。
【発明の効果】
【０００９】
本発明は上述した構成を有するため、更新ログを転送する通信路を別の通信路に切替えても複製データベースの更新の順序性を保証することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第２の実施形態のブロック図である。
【図２】本発明の第２の実施形態における更新ログ格納表の例を示す図である。
【図３】本発明の第２の実施形態における同期情報管理表の例を示す図である。
【図４】本発明の第２の実施形態における版管理表の例を示す図である。
【図５】本発明の第２の実施形態におけるデータベース再構成の例を示す図である。
【図６】本発明の第２の実施形態におけるデータベース再構成前後の更新ログの順序の例を示す図である。
【図７】本発明の第２の実施形態における版管理表の更新の例を示す図である。
【図８】本発明の第２の実施形態における再構成後の更新ログ格納表の例を示す図である。
【図９】本発明の第２の実施形態における同期情報管理表の更新の例を示す図である。
【図１０】本発明の第２の実施形態における更新ログ格納機能の処理フローチャートである。
【図１１】本発明の第２の実施形態における更新ログ反映機能の処理フローチャートである。
【図１２】本発明の第２の実施形態における再構成前後の更新ログと同期用データの反映順序を説明するための図である。
【図１３】本発明の第２の実施形態におけるデータベース再構成の別の例を示す図である。
【図１４】本発明の第２の実施形態におけるデータベース再構成の更に別の例を示す図である。
【図１５】本発明の第２の実施形態におけるデータベース再構成の他の例を示す図である。
【図１６】本発明の第１の実施形態のブロック図である。
【図１７】本発明に関連するレプリケーション方法の説明図である。
【図１８】本発明が解決しようとする課題の説明図である。
【発明を実施するための形態】
【００１１】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第１の実施形態]
図１６を参照すると、本発明の第１の実施形態は、フロントシステムＦＳと、バックアップシステムＢＳと、これらを通信可能に接続する通信路ＰＨ１、ＰＨ２とから構成される。
【００１２】
フロントシステムＦＳは、サーバ装置などの情報処理装置である。フロントシステムＦＳは、マスターデータベースＭＤと更新ログ格納手段ＬＷとを有する。
【００１３】
バックアップシステムＢＳは、サーバ装置などの情報処理装置である。バックアップシステムＢＳは、マスターデータベースＭＤの複製である複製データベースＲＤと更新ログ反映手段ＬＲとを有する。
【００１４】
マスターデータベースＭＤとその複製データベースＲＤは、例えばＫＶＳ（キーバリューストア）あるいはそれ以外の任意の種類のデータベースである。
【００１５】
通信路ＰＨ１、通信路ＰＨ２は、マスターデータベースＭＤの更新ログをフロントシステムＦＳからバックアップシステムＢＳへ転送する機能を有する。通信路ＰＨ１および通信路ＰＨ２内では、それぞれ更新ログの順序性は保証されている。本実施形態では、通信路をＰＨ１からＰＨ２に切替えることを想定している。
【００１６】
通信路ＰＨ１、ＰＨ２のそれぞれは、例えば、フロントシステムＦＳに設けられる第１の記憶手段および送信手段と、バックアップシステムＢＳに設けられる受信手段および第２の記憶手段とから構成される。第１の記憶手段は、マスターデータベースＭＤの更新ログを記憶する送信バッファとして機能する。送信手段は、第１の記憶手段に記憶された更新ログをＬＡＮやＷＡＮなどのネットワークを通じて、同じ通信路を構成するバックアップシステムＢＳ側の受信手段に向けて送信する。受信手段は、受信した更新ログを第２の記憶手段に記憶する。第２の記憶手段は受信バッファとして機能する。
【００１７】
更新ログ格納手段ＬＷは、マスターデータベースＭＤの更新時、その更新ログを現在使用している通信路を通じてフロントシステムＦＳからバックアップシステムＢＳへ送信する機能を有する。また更新ログ格納手段ＬＷは、通信路の切替え時、切替前の通信路ＰＨ１および切替後の通信路ＰＨ２に同期データを送信する機能を有する。同期データは、更新ログと明確に識別できる形式であれば、その形式は任意である。
【００１８】
更新ログ反映手段ＬＲは、通信路ＰＨ１、ＰＨ２を通じて受信した更新ログに従って複製データベースＲＤを更新する機能を有する。また更新ログ反映手段ＬＲは、通信路の切替時、切替前後の通信路ＰＨ１、ＰＨ２から同期データを受信するまで、同期データに続いて受信する更新ログに基づく複製データベースＲＤの更新処理を保留する機能を有する。
【００１９】
次に本実施形態の動作を説明する。
【００２０】
今、フロントシステムＦＳの更新ログ格納手段ＬＷが、マスターデータベースＭＤに対して実施された更新１の更新ログＬ１を通信路ＰＨ１に送出した直後に、通信路の切替えが行われたとする。このとき、更新ログ格納手段ＬＷは、図１６に示すように、切替前の通信路ＰＨ１に同期データＤを送信すると共に、切替後の通信路ＰＨ２に同期データＤを送信する。そして、更新ログ格納手段ＬＷは、更新１より後に実施される更新２の更新ログＬ２を切替後の通信路ＰＨ２へ送信する。
【００２１】
バックアップシステムＢＳの更新ログ反映手段ＬＲは、通信路の切替時、切替前後の通信路から同期データを受信するまで、同期データに続いて受信する更新ログに基づく複製データベースＲＤの更新処理を保留する。従って、例えば通信路ＰＨ１よりも通信路ＰＨ２の方が高速であったり、あるいは通信路ＰＨ１の受信バッファに多くの更新ログが蓄積されている等の理由で、更新ログ反映手段ＬＲが、更新ログＬ１より後に送信された通信路ＰＨ２の同期データＤを先に処理すると、切替前の通信路ＰＨ１から未だ同期データＤを受信していないので、通信路ＰＨ２から受信する更新ログＬ２の処理を保留する。そして、その後、通信路ＰＨ１から受信した更新ログＬ１に従って複製データベースＲＤを更新し、次いで通信路ＰＨ１から同期データＤを受信したことを確認した時点で、上記保留状態を解除し、上記更新ログＬ２に従って複製データベースＲＤを更新する。
【００２２】
このように本実施形態によれば、更新ログを転送する通信路を別の通信路に切替えても複製データベースの更新の順序性を保証することができる。
【００２３】
なお、本実施形態は各種の付加変更が可能である。例えば、上記の実施形態では、更新ログ反映手段ＬＲは、同期を取る対象の通信路が通信路ＰＨ１と通信路ＰＨ２であることを事前に認識しているものとしたが、同期データＤに、同期を取る必要のある通信路ＰＨ１、ＰＨ２を特定する同期対象通信路情報を持たせるようにしても良い。この場合、更新ログ反映手段ＬＲは、受信した同期データＤに含まれる同期対象通信路情報で特定される通信路ＰＨ１、ＰＨ２で同期データを受信したときに、切替前後の全ての通信路から同期データを受信したと判断する。
【００２４】
また、同期データＤに、版数を持たせるようにしても良い。この場合、フロントシステムＦＳの更新ログ格納手段ＬＷは、通信路の切替毎に、以前の版数と異なる版数を含む同期データを切替前後の通信路に送信する。また、バックアップシステムＢＳの更新ログ反映手段ＬＲは、切替前後の全ての通信路から同じ版数の同期データを受信するまで、その版数の同期データに続いて受信する更新ログに基づく複製データベースＲＤの更新処理を保留する。
【００２５】
さらに、更新ログ反映手段ＬＲは、通信路ＰＨ１、ＰＨ２毎に設けるようにしても良い。
【００２６】
また、通信路を切替える要因は、任意である。例えば、システムのスループットを向上するために、通信路ＰＨ１をより高速な通信路ＰＨ２に切替えてもよい。あるいは、後述する第２の実施形態で説明するように、データベースの再構成に応じて通信路を切替えてもよい。
【００２７】
[第２の実施形態]
［概要］
本実施形態は、分散配置されたデータベースの更新ログをフロントシステムからバックアップシステムへ反映させる際、任意の時点でデータベースが動的に再構成された場合に、再構成前後に発生した更新ログの間でバックアップシステムへ更新する順序性を保証する。
【００２８】
［本実施形態が解決しようとする課題］
データベースを含むシステムにおいて、フロントシステムのデータベースをバックアップシステムへレプリケーションする方式としては、フロントシステムでの処理に大きな影響を与えないために、フロントシステムでの更新内容をバックアップシステムへ転送して同様の内容を非同期的に更新するといった方式が一般的にとられている。本実施形態もそのようなバックアップ処理を前提とする。また、データベースは複数存在し、更新対象のキーごとに更新先データベースが決められるような分散配置データベースを前提とする。さらに、バックアップ処理は、分散されたデータベースごとに処理系列を分けて更新ログの転送・更新を行うことで、バックアップ転送・反映のスループットの向上を図っている。ここで、処理系列は第１の実施形態における通信路に相当し、1つの処理系列では転送・更新の順序性は保証されているものとする。
【００２９】
分散配置されたデータベースは、1つのデータベースが高負荷状態になったときの負荷分散を行う等の場合に、動的に再構成される。データベースの再構成は、フロントシステムではフロントシステムのデータベースを元に、バックアップシステムではバックアップシステムのデータベースを元に実施される。バックアップシステムのデータベースを再構成する際に、フロントシステムのデータベースが再構成される前の更新ログが未反映だった場合は、再構成後のバックアップシステムのデータベースにフロントシステムの再構成前の更新ログを反映する。
【００３０】
上述のようなシステムにおいて、データベースの動的な再構成が行われた際に、データベースのあるキーに対する更新ログのバックアップへの反映は、データベース再構成の前後で異なる処理系列で行われる可能性があるため、バックアップシステムへの更新の順序性が保証できなくなる問題が発生する。このような問題は、バックアップシステムへの更新ログの自動反映を一旦停止してから、バックアップシステムへ転送された再構成前更新ログ・再構成後更新ログを直接確認して手動で反映させることで解決できる。しかし、データベース再構成を実施する毎にバックアップシステムでの手動作業が発生してしまうため、その作業の手間と時間が必要になるという課題がある。
【００３１】
本実施形態は上述した課題を解決するために、データベース再構成が行われた際にカウントアップされるような版数を導入し、版数が上がったときに再構成に関わる全ての処理系列に対して同期を行うためのデータをバックアップ処理に挿入してバックアップシステムへ転送する。また、同期データには同期を取る処理系列一覧を格納する。バックアップシステム側では同期データを受け取った際に、残りの同期データが届くまで待ち合わせを行い、全ての同期データを受けとった後に以降の更新ログを反映する処理を再開する。これにより、再構成前後の更新ログの順序性を保証することができ、再構成前後での自動的なバックアップ処理が可能となる。
【００３２】
［構成の説明］
図１を参照して、本実施形態の全体構成を説明する。全体構成は大きく分けて、フロントシステム１００とバックアップシステム２００とに分かれている。
【００３３】
フロントシステム１００のデータベース０１−１〜４は、それぞれに同じ表が存在し、更新対象のレコードのキーによってどのデータベースに更新するかが決まっている分散配置型データベースである。図１では例として４重で構成された場合を示している。データベース０１−１〜４には、それぞれにバックアップ転送の処理系列が存在する。例えば、図1のデータベース０１−１に対するバックアップ転送の処理系列（処理系列１とする）は、更新ログ格納表０４−１、更新ログ送信機能０５−１、更新ログ受信機能０６−１、更新ログ格納表０７−１、および更新ログ反映機能０８−１であり、データベース１０−１が反映先のデータベースである。それぞれの処理系列内では更新ログ反映の順序性は保証されている。
【００３４】
フロントシステム１００のアプリケーション０２は複数存在し、各々がデータベースの更新を行う。アプリケーション０２は、更新対象のキーによって更新を行うデータベースを選択する。
【００３５】
アプリケーション０２には更新ログ格納機能０３が存在し、データベースを更新した際にその更新ログを対応する更新ログ格納表０４−１〜４に格納する。
【００３６】
更新ログ送信機能０５−１〜４は、同じ処理系列の更新ログ格納表０４−１〜４からそれぞれ更新ログを参照し、同じ処理系列の更新ログ受信機能０６−１〜４に送信する。
【００３７】
更新ログ受信機能０６−１〜４は、同じ処理系列の更新ログ送信機能０５−１〜４から送信された更新ログを受信し、同じ処理系列の更新ログ格納表０７−１〜４に更新ログを格納する。
【００３８】
更新ログ反映機能０８−１〜４は、対応する更新ログ格納表０７−１〜４から更新ログを参照し、更新ログで示されたキーによって更新を行うデータベース１０−１〜４を選択し、その選択したデータベース１０−１〜４へ更新ログで示された更新後データを用いて更新を行う。
【００３９】
同期情報管理表０９は、更新ログ反映機能０８−１〜４から参照・更新され、処理系列間の同期情報を管理する。
【００４０】
フロントシステムの版管理機能１１は、データベースの再構成が行われる際に版管理表１２を更新する。
【００４１】
図２に更新ログ格納表０４−１〜４、０７−１〜４の例を示す。表の[通番]は、更新ログが格納された際に採番される番号であり、処理系列内の更新順序を表している。[版数]は、更新ログが格納された時点での版数を表している。版数は、データベース再構成時にカウントアップされる番号である。[処理実行]には、[更新ログ]の内容がバックアップシステムのデータベースへ反映させるものであった場合に「YES」、反映させないもの（すなわち、同期データ）であった場合に「NO」が格納される。[同期対象処理系列]には、同期をとる必要のある他処理系列を表している。[更新ログ]には、データベース更新時の更新ログが格納される。
【００４２】
図３に同期情報管理表０９の例を示す。表の[処理系列]は、そのレコードで管理する処理系列を表している。[版数]は、取得確認済みの更新ログの版数を表している。[同期対象処理系列]は、版数更新時の同期対象処理系列を表している。同期対象処理系列がない場合は「なし」と表す。
【００４３】
図４に版管理表１２の例を示す。表の[版数]は現在の版数を表す。[処理系列]は、そのレコードが管理している処理系列を表している。[同期対象処理系列]は、データベース再構成前後で同期を取る必要のある他処理系列の一覧を表している。[同期済み]は、データベース再構成後に発生する同期データがまだ更新ログ格納表に書き込まれていない場合に「未」を、既に書き込まれている場合に「済」を表す。
【００４４】
［動作の説明］
図1を参照してバックアップコピーの動作を説明する。
【００４５】
アプリケーション０２は、データベース更新時に更新対象レコードのキーから更新先データベースを決定して、データベースを更新する。ここではデータベース０１−１に更新を行った場合を例に説明する。
【００４６】
アプリケーション０２がデータベース０１−１へ更新を行うと、更新ログ格納機能０３は、版管理表１２から現時点の版数を取得し、更新先である処理系列１のレコードの[同期済み]が「済」であることを確認してから、更新ログ格納表０４−１に、更新対象レコードのキーおよび更新後の値を含む更新ログを格納する。このとき、更新ログ格納機能０３は、通番を採番して、その通番と一緒に更新ログの格納を行う。各処理系列の通番は、複数存在するアプリケーション０２で共通に管理されている。また版数も一緒に格納する。以下、更新ログ格納表に格納されている更新ログを、その更新ログと一緒に格納されている通番、版数、処理実行、同期対象処理系列とあわせて、単に「更新ログ」と呼ぶことがある。
【００４７】
更新ログ送信機能０５−１は、更新ログ格納表０４−１に格納された更新ログを更新ログ受信機能０６−１へ送信する。
【００４８】
更新ログ受信機能０６−１は、更新ログを受信すると、更新ログ格納表０７−１に更新ログを格納する。
【００４９】
更新ログ反映機能０８−１は、更新ログ格納表０７−１から更新ログを取得し、同期データでない場合は、更新ログをデータベース１０−１に反映させる。
【００５０】
次に、ある時点でデータベースの再構成が行われた場合の動作を説明する。
【００５１】
図５はデータベース再構成前後の処理系列の変化を示している。図５ではデータベース再構成の例として、再構成前のデータベース０１−１に存在するキー１〜１０を、データベース０１−１とデータベース０１−５に分散させるような再構成を示している。以下では図５で示す再構成の例で説明を行う。
【００５２】
データベースの再構成が行われた場合、再構成前後の更新ログの順序性について、次のような問題が生じる。
【００５３】
再構成前後の更新ログの転送・反映順序について、図６に示す。処理系列１と処理系列５は、それぞれが担当している更新ログに対しては順序性を保証して転送・反映が行われる。しかし、処理系列１と処理系列５の間の更新ログは順序性に関して独立しているため、再構成前の処理系列１の更新ログよりも再構成後の処理系列５の更新ログが先にバックアップシステムに到達した場合、再構成後の更新ログが再構成前の更新ログより先に反映される可能性がある。このとき、再構成前後の更新ログにおいて同一のキーに対する更新ログが存在した場合、更新順序の逆転が発生するため、順序性が保証されない。
【００５４】
このような問題を解決するため、本実施形態ではデータベースの再構成時に以下で示すような処理で順序性の保証を行う。
【００５５】
データベースの再構成が実施された際に、版管理機能１１は版管理表１２の更新を行う。図７に版管理表１２の更新の様子を示す（図７の(1)→(2)）。具体的な更新内容は下記の通りである。
・[版数]を、再構成前の版数に1加えた値に変更する（図７では５→６）
・再構成に関係する処理系列のレコード（図７では処理系列１と５）に対して、[同期対象処理系列]に同期する必要のある処理系列一覧を格納し、[同期済み]に同期データ書き込み前を表す「未」を格納する。処理系列が新たに発生した場合（図７では処理系列５の場合）は、新規処理系列のレコードを作成して更新する。
・再構成に関係しない処理系列のレコードには、[同期対象処理系列]を「なし」にして、[同期済み]は「済」のままで更新する。
【００５６】
更新ログ格納機能０３の処理フローチャートを図１０に示す。
【００５７】
更新ログ格納機能０３は、版管理表１２を参照した際、更新対象処理系列のレコードの[同期済み]が「未」となっていた場合は（Ｓ１、Ｓ２）、更新ログを格納する前に更新ログ格納表に同期データを格納する（Ｓ５）。更新ログ格納機能０３が処理系列１に対して更新を行う例で考えると、版管理表１２の処理系列が１であるレコードの[同期済み]が「未」になっているので、同期データを更新ログ格納表０４−１に格納する。同期データには、版管理表１２の[同期対象処理系列]に表された処理系列一覧が格納されている。同期データを格納後に、版管理表１２の[同期済み]を「済」に更新し（Ｓ６）、本来格納する予定であった更新ログを更新ログ格納表０４−１に格納する（Ｓ７）。同期データと再構成前後の更新ログを格納した更新ログ格納表の例を図８に示す。
【００５８】
更新ログの格納が完了したら、更新ログ格納機能０３は、版管理表１２から同期対象処理系列に格納した処理系列（本例では処理系列５）のレコードの[同期済み]を参照し（Ｓ８）、「未」である場合は同様の手順で同期データを更新ログ格納表０４−５に格納して処理系列５のレコードの[同期済み]を「済」に更新する（Ｓ９〜Ｓ１１）。処理系列５のレコードの[同期済み]が既に「済」であった場合（既に他のアプリケーションの更新ログ格納機能が同期用データを格納した場合）は、Ｓ１０、Ｓ１１の処理は行わない。同期対象の処理系列レコードの[同期済み]がすべて「済」になったことを確認したら（図７の(3)の状態になったら）、更新ログ格納処理を終了する（Ｓ４）。
【００５９】
他方、更新ログ格納機能０３は、版管理表１２を参照した際、更新対象処理系列のレコードの[同期済み]が「済」となっていた場合は（Ｓ１、Ｓ２）、更新ログを更新ログ格納表０４−１に格納し（Ｓ３）、更新ログ格納処理を終了する（Ｓ４）。
【００６０】
更新ログ格納表０４−１および更新ログ格納表０４−５に格納された更新ログと同期用データは、前述したバックアップコピーの動作の通りに、バックアップシステムの更新ログ格納表０７−１および更新ログ格納表０７−５にそれぞれ格納される。
【００６１】
更新ログ反映機能の処理フローを図１１に示す。
【００６２】
更新ログ反映機能０８−１と更新ログ反映機能０８−５は、それぞれ更新ログ格納表０７−１と更新ログ格納表０７−５から更新ログを参照する際に、[版数]に格納されている版数と同期情報管理表０９に書かれている[版数]とを比較し（Ｓ２１）、異なっている場合は同期情報管理表０９の自処理系列レコードの版数を更新する（Ｓ２２、Ｓ２５）。その際に、更新ログ格納表の[同期対象処理系列]の内容を同期情報管理表０９の自処理系列レコードの[同期対象処理系列]に格納する。更新された同期情報管理表０９の例を図９に示す。
【００６３】
更新ログ反映機能は、同期情報管理表０９を更新後、次のような同期処理を行う。ここでは、更新ログ反映機能０８−１に注目して同期処理の説明を行う。更新ログ反映機能０８−１は、同期情報管理表０９から、同期対象である処理系列５のレコードの[版数]を取得し、自処理系列である処理系列１のレコードの版数と比較する（Ｓ２６、Ｓ２７）。比較した結果、版数が異なっていた場合は処理系列５の同期用データが未到達と判断して、処理系列５レコードの[版数]が更新されるまで待機する（Ｓ２８、Ｓ２９）。その後で、更新ログ反映機能０８−５が同期用データを取得して同期情報管理表０９の処理系列５レコードの[版数]を更新した結果、処理系列１と５の版数が同じになったことが確認できたら（Ｓ２８でＹＥＳ）、更新ログ反映機能０８−１はそれ以降の更新ログをデータベース１０−１へ反映させる（Ｓ２３）。このとき、更新ログ反映機能０８−５では、同期情報管理表０９から処理系列１の版数が自処理系列の版数と同じことを初回比較時に確認できるため、確認後にそれ以降の更新ログをデータベース１０−５に反映させる。
【００６４】
なお、本例での同期処理を行わない更新ログ反映機能０８−２〜４については、同期データを受け取らないため、版数が更新された更新ログを受け取ると、同期情報管理表０９の自処理系列レコードの版数を更新して、更新ログ反映を行う。
【００６５】
再構成前後の更新ログと同期用データの反映順序を図１２に示す。処理系列１では、再構成前の更新ログ、同期データ、再構成後の更新ログの順序で転送され、反映される。処理系列５は今回の再構成後に生成された処理系列なので、同期データ、再構成後の更新ログの順序になっている。
【００６６】
［効果の説明］
フロントシステム１００からバックアップシステム２００へ更新ログの転送、反映を行う際に、データベースの再構成前の更新ログと再構成後の更新ログとの間に同期データを書き込み、バックアップシステム２００の更新ログ反映時に全ての同期データを待ち合わせることで、再構成後の更新ログが再構成前の更新ログを追い抜くといった現象を防ぐことができるので、再構成前後の更新ログ反映の順序性が保証できる。
【００６７】
これにより、データベース再構成前後の更新ログの順序を正しくするための手動作業が必要なくなるため、データベース再構成の際の運用の作業とその時間が削減できる。
【００６８】
［本実施形態の変形例］
上記の実施形態では、データベースの再構成の例として、１つの処理系列で処理しているキーの一部を別の処理系列を追加して分散する場合の説明をしたが、下記の再構成例でも同様の処理で順序性を保証できる。
(1)図１３に示すように、１つの処理系列で処理しているキーを、別の複数の処理系列に分散する。
(2)図１４に示すように、複数の処理系列で処理しているキーを１つの処理系列に統合する。
(3)図１５に示すように、複数の処理系列がそれぞれ処理しているキーを、再分配する。
【００６９】
即ち、一般的に複数の処理系列が担当しているキーを複数の処理系列に分散、統合する場合に適応できる。
【産業上の利用可能性】
【００７０】
分散配置型データベースを含むフロント−バックアップ構成のシステムで、負荷分散などの理由でデータベース構成を再構成するようなシステム等に有効である。特に、データベースの再構成を行う頻度が高い場合に有効である。
【符号の説明】
【００７１】
ＦＳ…フロントシステム
ＢＳ…バックアップシステム
ＭＤ…マスターデータベース
ＲＤ…複製データベース
ＬＷ…更新ログ格納手段
ＬＲ…更新ログ反映手段
ＰＨ１、ＰＨ２…通信路
【図１】
0005673234.tif 000002
【図２】
0005673234.tif 000003
【図３】
0005673234.tif 000004
【図４】
0005673234.tif 000005
【図５】
0005673234.tif 000006
【図６】
0005673234.tif 000007
【図７】
0005673234.tif 000008
【図８】
0005673234.tif 000009
【図９】
0005673234.tif 000010
【図１０】
0005673234.tif 000011
【図１１】
0005673234.tif 000012
【図１２】
0005673234.tif 000013
【図１３】
0005673234.tif 000014
【図１４】
0005673234.tif 000015
【図１５】
0005673234.tif 000016
【図１６】
0005673234.tif 000017
【図１７】
0005673234.tif 000018
【図１８】
0005673234.tif 000019