(57)【要約】【課題】複数の複写元データベースの複製を作成する場合に、複雑な論理処理や、トランザクションの処理時間の遅延を回避しつつも、データベース間の整合性を維持することを可能とする。【解決手段】複写元データベースから更新結果であるジャーナルを取得し、複写先データベースに配付するジャーナル取得・配付装置１は、ジャーナル取得機構３及びジャーナル配付機構１０を備える。ジャーナル取得機構３は、前記複写元データベースから前記ジャーナルを取得する。ジャーナル配付機構１０は、取得した前記ジャーナルを、前記複写元データベースを更新するトランザクション単位に前記複写先データベースに配付する。【選択図】      図１
2004302662.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、複写元データベースから更新結果であるジャーナルを取得し、複写先データベースに配付する制御を行わせるコンピュータ・プログラムであって、
前記複写元データベースから前記ジャーナルを取得し、
前記ジャーナルを取得する際に、前記複写元データベースを更新するトランザクションを識別するトランザクション識別情報を取得し、
前記複写元データベースが更新される回数をカウントし、
ジャーナルを配付する前に、前記カウント値及び前記トランザクション識別情報に基づいて、前記ジャーナルを並び替え、
前記トランザクション識別情報に基づいて、並べ替えられた前記ジャーナルを、前記複写元データベースを更新するトランザクション単位に前記複写先データベースに配付する、
ことを含む処理を前記コンピュータに行わせることを特徴とするコンピュータ・プログラム。
【請求項２】
前記カウント値と、前記カウント値を取得する際に取得した前記トランザクション識別情報を対応付けてジャーナル管理情報格納手段に格納し、
前記ジャーナルと、前記ジャーナルを取得する際に取得された前記トランザクション識別情報とを対応付けてジャーナル格納手段に格納し、
所定のタイミングで、最も小さなカウント値に対応付けられたトランザクション識別情報を前記ジャーナル管理情報格納手段から取得し、
前記ジャーナル格納手段に格納されたジャーナルのうち、前記ジャーナル管理情報手段から取得されたトランザクション識別情報に対応するジャーナルを、配付すべきジャーナルとして選択する、
ことを更に含む処理を前記コンピュータに行わせることを特徴とする請求項１に記載のコンピュータ・プログラム。
【請求項３】
コンピュータが、複写元データベースから更新結果であるジャーナルを取得し、複写先データベースに配付するジャーナル取得・配付方法であって、
前記複写元データベースから前記ジャーナルを取得し、
前記ジャーナルを取得する際に、前記複写元データベースを更新するトランザクションを識別するトランザクション識別情報を取得し、
前記複写元データベースが更新される回数をカウントし、
ジャーナルを配付する前に、前記カウント値及び前記トランザクション識別情報に基づいて、前記ジャーナルを並び替え、
前記トランザクション識別情報に基づいて、並べ替えられた前記ジャーナルを、前記複写元データベースを更新するトランザクション単位に前記複写先データベースに配付する、
ことを含むことを特徴とするジャーナル取得・配付方法。
【請求項４】
前記カウント値と、前記カウント値を取得する際に取得した前記トランザクション識別情報を対応付けてジャーナル管理情報格納手段に格納し、
前記ジャーナルと、前記ジャーナルを取得する際に取得された前記トランザクション識別情報とを対応付けてジャーナル格納手段に格納し、
所定のタイミングで、最も小さなカウント値に対応付けられたトランザクション識別情報を前記ジャーナル管理情報格納手段から取得し、
前記ジャーナル格納手段に格納されたジャーナルのうち、前記ジャーナル管理情報手段から取得されたトランザクション識別情報に対応するジャーナルを、配付すべきジャーナルとして選択する、
ことを更に含む処理を特徴とする請求項３に記載のジャーナル取得・配付方法。
【請求項５】
複写元データベースから更新結果であるジャーナルを取得し、複写先データベースに配付するジャーナル取得・配付装置であって、
前記複写元データベースから前記ジャーナルを取得するジャーナル取得手段と、
前記ジャーナルを取得する際に、前記複写元データベースを更新するトランザクションを識別するトランザクション識別情報を取得する識別情報取得手段と、
前記複写元データベースが更新される回数をカウントするカウンタと、
ジャーナルを配付する前に、前記カウント値及び前記トランザクション識別情報に基づいて、前記ジャーナルを並び替えるジャーナル並び替え手段と、
取得した前記ジャーナルを、前記複写元データベースを更新するトランザクション単位に前記複写先データベースに配付するジャーナル配付手段と、
を備えることを特徴とするジャーナル取得・配付装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複写元となるデータベース（以下、複写元データベース）を複写先となるデータベース（以下、複写先データベース）に複写（レプリケーション）する技術に関し、特に異なるプラットフォーム間でデータベースを共通化（コピー）する際に好適である。
【０００２】
【従来の技術】
レプリケーションにおいて、データベースを更新するトランザクションによって発生するデータベース上の情報が更新されると、そのトランザクションによって更新されたデータ（以下、ジャーナルという）を複写元データベースから取得して、複写先データベースに配付する処理が必要となる。
【０００３】
以下、従来技術に係わる、複写元データベースからジャーナルを取得し、そのジャーナルを複写先データベースに配付するジャーナル取得・配付システムについて説明する。図２１に、従来技術に係わるジャーナル取得・配付システムの構成を示す。
【０００４】
図２１に示すジャーナル取得・配付システムは、コンピュータＣ１とコンピュータＣ２とを有する。まず、コンピュータＣ１の構成について説明する。コンピュータＣ１は、複写元データベースＤＢａ及びＤＢｂを備え、これらの複写元データベースは、データベース管理システム１０１（以下、ＤＢＭＳ）によって管理される。更に、コンピュータＣ１は、ジャーナル取得機構１０２、ジャーナル取得ファイル１０３及びジャーナル配付機構１０４を備える。ジャーナル取得ファイル１０３は、複写元データベースに対応して備えられる。図１の例の場合、ジャーナル取得ファイル１０３ａ及び１０３ｂが、それぞれ、複写元データベースＤＢａ及びＤＢｂに対応して備えられる。
【０００５】
ＤＢＭＳ１０１は、トランザクションによって複写元データベースＤＢａ及びＤＢｂが更新されると、トリガーをジャーナル取得機構１０２に出力する。
ジャーナル取得機構１０２は、ＤＢＭＳ１０１から出力されたトリガーによって呼び出される。ジャーナル取得機構１０２は、複写元データベースＤＢａ及びＤＢｂから別々にジャーナルを取得し、それらのジャーナルをそれぞれ、ジャーナル取得ファイル１０３ａ及び１０３ｂに書き込む。ジャーナル配付機構１０４は、ジャーナル取得ファイル１０３ａ及び１０３ｂに書き込まれたジャーナルを、複写先データベースを備えるコンピュータＣ２に配付する。
【０００６】
次に、コンピュータＣ２の構成について説明する。コンピュータＣ２は、複写先データベースＤＢ１及びＤＢ２、並びに、配付されたジャーナルを格納するジャーナル利用ファイル２０１ａ及び２０１ｂを備える。ジャーナル利用ファイル２０１ａ及び２０１ｂは、それぞれ、ジャーナル取得ファイル１０３ａ及び１０３ｂに対応する。コンピュータＣ１内のジャーナル配付機構１０４は、ジャーナル取得ファイル１０３ａに書き込まれたジャーナルを、更新された順に並べて１ファイルにまとめてから一括して、ジャーナル利用ファイル２０１ａに書き込む。同様にして、ジャーナル配付機構１０４は、ジャーナル取得ファイル１０３ｂに書き込まれたジャーナルを、ジャーナル利用ファイル２０１ｂに書き込む。
【０００７】
ジャーナル利用ファイル２０１ａ及び２０１ｂにジャーナルが書き込まれると、複写先データベースＤＢ１及びＤＢ２に、配付された単位ごとにジャーナルを複写する。以下、このジャーナルを複写先データベースに複写することをジャーナルの反映という。
【０００８】
次に、図２２を用いて、図２１に示すシステムにおけるジャーナルのやり取りについて説明する。図２２に、トランザクションＴ１によって複写元データベースＤＢａのカラム１及びＤＢｂのカラム１が更新され、トランザクションＴ２によって複写元データベースＤＢａのカラム２及びＤＢｂのカラム２が更新される場合におけるジャーナルのやり取りの流れを示す。
【０００９】
トランザクションＴ１及びＴ２によって複写元データベースＤＢａ及びＤＢｂが更新されると、トリガーによってジャーナル取得機構１０２が呼び出される。ジャーナル取得機構１０２は、複写元データベースＤＢａ内のカラム１及び２からジャーナルを取得し、それらをジャーナル取得ファイル１０３ａに書き込む。同様に、ジャーナル取得機構１０２は、複写元データベースＤＢｂ内のカラム１及び２からジャーナルを取得し、それらをジャーナル取得ファイル１０３ｂに書き込む。
【００１０】
ジャーナル配付機構１０４は、ジャーナル取得ファイル１０３ａから、複写元データベースＤＢａ内のカラム１及び２のジャーナルを更新された順に並べて１つのファイルにまとめて取得し、これらジャーナルを一括してジャーナル利用ファイル２０１ａに書き込む。同様に、ジャーナル配付機構１０４は、ジャーナル取得ファイル１０３ｂから、複写元データベースＤＢｂ内のカラム１及び２のジャーナルを更新された順に並べて１つのファイルにまとめて取得し、これらジャーナルを一括してジャーナル利用ファイル２０１ｂに書き込む。
【００１１】
次に、ジャーナル利用ファイル２０１ａに、複写元データベースＤＢａ内のカラム１及び２のジャーナルを一括して複写先データベースＤＢ１に反映するトランザクションＴ３が行われる。同様に、ジャーナル利用ファイル２０１ｂに、複写元データベースＤＢｂ内のカラム１及び２のジャーナルを一括して複写先データベースＤＢ２に反映するトランザクションＴ４が行われる。
【００１２】
これらの一連の処理によって、トランザクションによる複写元データベースＤＢａ及びＤＢｂの更新結果は、複写先データベースＤＢ１及びＤＢ２に反映される（例えば、非特許文献１参照）。
【００１３】
【非特許文献１】
”ＦＵＪＩＴＳＵ  Ｌｉｎｋｅｘｐｒｅｓｓ  Ｒｅｐｌｉｃａｔｉｏｎ  ｏｐｔｉｏｎ説明書”、［ｏｎｌｉｎｅ］、［平成１５年２月１２日検索］、インターネット、＜ＵＲＬ：ｈｔｔｐ：／／ｓｏｆｔｗａｒｅ．ｆｕｊｉｔｓｕ．ｃｏｍ／ｊｐ／ｍａｎｕａｌ／ｓ／ｄ２３ｐｄｐ４ｈａ／ｊ２ｘ０３６４１／０１／＞
【００１４】
【発明が解決しようとする課題】
しかし、上記の従来技術によれば、複数の複写元データベースの複製を作成する場合、複写元データベース別に（或いは複写元データベース単位に）ジャーナルを取得して、複写元データベース別に備えられたジャーナル利用ファイルに、それらジャーナルを配付する。しかし、１つのトランザクション（業務）で複数の複写元データベースを更新している場合、複製の作成過程において、ある複写先データベースについては複写元データベースの更新結果を反映したが、他の複写先データベースについてはまだ反映がされていないという状態が一時的に生じる。例えば、図２２の場合を例とすると、トランザクションＴ１は、複写元データベースＤＢａ及びＤＢｂを更新している。トランザクションＴ３及びＴ４によって、この更新によって発生したジャーナルを複写先データベースに反映される。この反映の途中に、トランザクションＴ３は行われたが、トランザクションＴ４はまだ行われていない場合、つまり、複写先データベースＤＢ１への反映は完了したが、複写先データベースＤＢ２への反映が完了していないという状態が一時的に生じる。
【００１５】
このような状態で複写先データベースを参照する新たなトランザクションを実行しようとすると、複写元データベースを更新するトランザクションの結果が完全に反映されていないため、新たなトランザクションに処理を継続することが困難となるという問題が生じる。
【００１６】
そのため、従来技術によれば、以下の方法を用いて、データベース間の整合性を維持し、新たなトランザクションに処理を継続することができるようにしている。まず、第１の方法について説明する。第１の方法では、複数のデータベースを利用するアプリケーションを実行する場合には、データベースを更新する際にレコードに更新日時を入れ、この更新日時に基づいて複数のデータベース間の整合性を保つ。
【００１７】
以下、図２３を用いて、この第１の方法の手順について詳しく説明する。図２３において、図２２と同じく、トランザクションＴ１によって複写元データベースＤＢａのカラム１及びＤＢｂのカラム１が更新され、トランザクションＴ２によって複写元データベースＤＢａのカラム２及びＤＢｂのカラム２が更新されると仮定する。更新の際には、各レコードには、更新日時が付加される。図２２を用いて説明したようにしてジャーナルが取得・配付された後、更新先データベースＤＢ１のカラム１及びカラム２にジャーナルを反映するトランザクションＴ３、及び更新先データベースＤＢ２のカラム１及びカラム２にジャーナルを反映するトランザクションＴ４が行われる。ここで、更に、複写先データベースＤＢ１のカラム１及びＤＢ２のカラム１を参照する新たなトランザクションＴ５が実行されると仮定する。この場合、第１の方法によれば、データベースＤＢ１及びＤＢ２の間でのデータの整合性を確認するために、トランザクションＴ５において、参照した各カラム内のレコードに付加された更新日時が比較される。従って、例えば、トランザクションＴ３が行われたが、まだトランザクションＴ４が行われていない状態でトランザクションＴ５を実行した場合には、データベースＤＢ１及びＤＢ２の間でのデータの整合性が保たれていないため、トランザクションＴ５はキャンセルされる。
【００１８】
しかし、この第１の方法によれば、更新日時に基づいてデータベース間の整合性を確認するための論理処理が複雑であるという問題があった。
次に、データベース間の整合性を維持するための第２の方法について説明する。第１の方法では、１つのトランザクションによって、１つのデータベースにジャーナルを反映していたが、第２の方法によれば、１つのトランザクションによって、複数のデータベースにジャーナルを反映する。例えば、図２３を用いて説明した場合を例とすると、第１の方法ではトランザクションＴ３及びＴ４によって行われる処理を、第２の方法ではトランザクションＴ６によって一括して行われる。従って、第２の方法によると、第１の方法で行われていた複雑な論理処理は不要となる。
【００１９】
以下、図２４を用いて、この第２の方法の手順について詳しく説明する。図２４は、図２２及び図２３と同様に、それぞれ、複数のデータベースを更新するトランザクションＴ１及びＴ２を仮定する。図２２を用いて説明したようにしてジャーナルが取得・配付された後、第２の方法によれば、更新先データベースＤＢ１及びＤＢ２にジャーナルを、一括して反映するトランザクションＴ６が行われる。ここで、更に、複写先データベースＤＢ１及びＤＢ２内の更新されたカラムを参照する新たなトランザクションＴ７が実行されると仮定する。排他制御によってデータベースＤＢ１及びＤＢ２を参照できないため、トランザクションＴ６による反映処理が行われている最中は、トランザクションＴ７は完了しない。従って、第２の方法の場合も、データベース間の整合性を維持することができる。
【００２０】
しかし、第２の方法では一括してジャーナルを反映するため、大量のジャーナルを反映する際には、反映処理にかかる時間が長くなる。その間、複写先データベースを参照することはできないため、複写先データベースを参照するトランザクションの処理時間に遅延が発生したり、最悪の場合、そのトランザクションがタイムアウトのために異常終了したりするという問題があった。
【００２１】
以上の問題に鑑み、複数の複写元データベースの複製を作成する場合に、複雑な論理処理や、トランザクションの処理時間の遅延を回避しつつも、データベース間の整合性を維持することを可能とするレプリケーション技術を提供することが、本発明の解決しようとする課題である。
【００２２】
【課題を解決するための手段】
上記課題を解決するために、本発明の１態様によれば、複写元データベースから更新結果であるジャーナルを取得し、複写先データベースに配付するジャーナル取得・配付装置において、前記複写元データベースから前記ジャーナルを取得するジャーナル取得手段と、取得した前記ジャーナルを、前記複写元データベースを更新するトランザクション単位に前記複写先データベースに配付するジャーナル配付手段とを備える。
【００２３】
ジャーナル取得手段は、複写元データベースからジャーナルを取得し、ジャーナル配付手段は、ジャーナルをトランザクション単位に配付する。従来、複数の複写元データベースの複製を作成する場合、ジャーナルの配付は複写元データベース単位に行われていた。しかし、本発明の１態様によれば、ジャーナルの配付をトランザクション単位で行うことにより、データベース間の整合性を維持する。これにより、上記第１の方法で行われていた複雑な論理処理を不要とし、上記第２の方法で生じていたトランザクションの処理時間の遅延を回避することが可能となる。
【００２４】
上記ジャーナル取得・配付装置は、前記ジャーナルを取得する際に、前記複写元データベースを更新するトランザクションを識別するトランザクション識別情報を獲得するトランザクション識別情報獲得手段を更に備え、前記ジャーナル配付手段は、前記トランザクション識別情報に基づいて、前記ジャーナルをトランザクション単位に配付することとしてもよい。
【００２５】
なお、上記ジャーナル取得・配付装置は、複写元データベースからトランザクションがコミットしたことの通知を受けるか否かに応じて、異なる構成を持つこととしてもよい。まず、前者のコミットしたことの通知を受けない場合の構成について説明する。
【００２６】
この場合、上記ジャーナル取得・配付装置は、前記複写元データベースが更新される回数をカウントするＤＢ更新計数手段を更に備え、前記ジャーナル取得手段は、ジャーナルを配付する前に、前記カウント値及び前記トランザクション識別情報に基づいて、前記ジャーナルを並び替えることとしてもよい。
【００２７】
また、ＤＢ更新計数手段を備える上記ジャーナル取得・配付装置は、前記カウント値と、前記カウント値を取得する際に取得した前記トランザクション識別情報を対応付けて格納するジャーナル管理情報格納手段と、前記ジャーナルと、前記ジャーナルを取得する際に取得された前記トランザクション識別情報とを対応付けて格納するジャーナル格納手段とを更に備え、所定のタイミングで、前記ジャーナル配付手段は、最も小さなカウント値に対応付けられたトランザクション識別情報を前記ジャーナル管理情報格納手段から取得し、前記ジャーナル格納手段に格納されたジャーナルのうち、前記ジャーナル管理情報手段から取得されたトランザクション識別情報に対応するジャーナルを、配付すべきジャーナルとして選択することとしてもよい。
【００２８】
次に、後者のコミットしたことの通知を受ける場合の構成について説明する。この場合、上記ジャーナル取得・配付装置内のジャーナル取得手段は、前記複写元データベースを更新するトランザクションがコミットしたことの通知を受信し、前記通知及び、前記コミットしたトランザクションの前記トランザクション識別情報に基づいて、ジャーナルをトランザクション単位にまとめることとしてもよい。
【００２９】
また、この場合、上記ジャーナル取得・配付装置は、前記ジャーナルを、前記ジャーナルを取得する際に取得した前記トランザクション識別情報に対応付けて格納するジャーナル一時格納手段を更に備え、前記ジャーナル取得手段は前記通知に基づいて、前記ジャーナル一時格納手段において、前記コミットしたトランザクションのトランザクション識別情報に対応付けられたジャーナルを、配付すべきジャーナルとして選択することとしてもよい。また、上記ジャーナル取得・配付装置は、前記選択されたジャーナルを格納するジャーナル格納手段を更に備え、前記ジャーナル配付手段は、所定のタイミングで、格納された順番で、前記ジャーナル格納手段からジャーナルを読み出して配付することとしてもよい。
【００３０】
また、上記ジャーナル取得・配付装置において行われる各動作と同様の手順からなるジャーナル取得・配付方法によっても、上記ジャーナル取得・配付装置と同様の作用・効果が得られるため、上記課題を解決することが可能である。
【００３１】
また、上記ジャーナル取得・配付方法によって行われる手順をコンピュータに行わせるコンピュータ・プログラムも、上記コンピュータ・プログラムをコンピュータに備えられたメモリに一旦格納させ、そのコンピュータにそのメモリから上記コンピュータ・プログラムを読み出させて実行させることにより、上記課題を解決する事が可能である。
【００３２】
また、上記コンピュータ・プログラムを記録したコンピュータで読み取り可能な記録媒体から、そのプログラムをコンピュータに読み出させて実行させることによっても、上記課題を解決することができる。
【００３３】
【発明の実施の形態】
以下、本発明の実施の形態について図面を用いて説明する。なお、同じ装置等には同じ参照番号をつけ、説明を省略する。
【００３４】
図１に、第１実施形態に係わるジャーナル取得・配付装置の構成を示す。図１に示すように、ジャーナル取得・配付装置１は、ＤＢＭＳ２、ジャーナル取得機構３、ＤＢ更新カウンタ６、ジャーナル取得ファイル７、ジャーナル配付機構１０を備える。また、複写元データベースに対応して、同数の複写先データベース（不図示）がジャーナルの配付先に存在する。なお、各図及び説明において、複写元データベースＤＢａ及びＤＢｂの２つが存在すると仮定しているが、これは説明のためであり、２以上の任意の数の複写元データベースを備えることが可能である。
【００３５】
ＤＢＭＳ２は、複数の複写元データベースＤＢａ、ＤＢｂを管理する。ＤＢＭＳ２は、トランザクションによって複写元データベースＤＢａ及びＤＢｂが更新されると、それをトリガーによってジャーナル取得機構３を呼び出す。また、ＤＢＭＳ２は、各トランザクションに、トランザクションを識別するトランザクション番号を、データベースを更新するプロセス単位に一意に割り振る。
【００３６】
ジャーナル取得機構３は、ＤＢＭＳ２から呼び出されると、ＤＢＭＳ２からトランザクション番号及びジャーナルを取得し、それらをトランザクション別にまとめて、ジャーナル取得ファイル７に書き込む。ジャーナル取得ファイル７は、トランザクション番号に対応付けて、ジャーナルを格納する。以下、ジャーナル取得機構３及びジャーナル取得ファイル７の構成についてより詳しく説明する。
【００３７】
図１に示すように、ジャーナル取得機構３は、トランザクション番号獲得部４及びジャーナル取得部５を備える。また、ジャーナル取得ファイル７は、ジャーナル管理テーブル８及びジャーナル格納テーブル９を備える。トランザクション番号獲得部４は、ＤＢＭＳ２からトランザクション番号を獲得する。更に、トランザクション番号獲得部４は、ＤＢ更新カウンタ６を１インクリメントした後、その値を獲得する。そして、トランザクション番号獲得部４は、トランザクション番号と、そのトランザクション番号を取得した際の最新のカウント値をジャーナル管理テーブル８に書き込む。図２に、ジャーナル管理テーブル８のデータ構造例を示す。図２に示すように、ジャーナル管理テーブル８内のレコードは、トランザクション番号とそれに対応するカウント値を含む。新たなトランザクション番号が取得されると、ジャーナル管理テーブル８にレコードが追加され、ＤＢ更新カウンタ６がインクリメントされるごとに、ジャーナル管理テーブル８内のレコードが更新されるか、又は、ジャーナル管理テーブル８内に新たなレコードが挿入される。
【００３８】
ジャーナル取得部５は、複写元データベースからジャーナルを取得し、そのジャーナルを取得する際に獲得したトランザクション番号と共に、取得したジャーナルをジャーナル格納テーブル９に書き込む。図３に、ジャーナル格納テーブル９のデータ構造例を示す。図３に示すように、ジャーナル格納テーブル９内のレコードは、トランザクション番号と、それに対応するジャーナルを含む。新たなジャーナルが取得されると、ジャーナル格納テーブル９にレコードが追加される。
【００３９】
本発明によれば、ジャーナルの配付はジャーナル取得側のトランザクション単位に行われるため、ジャーナル取得ファイル７は、複写元データベースに対応して備えられる必要はない。
【００４０】
ＤＢ更新カウンタ６は、ジャーナル取得・配付装置内で一意であり、データベースベースが更新されるごとにインクリメントされる。ＤＢ更新カウンタ６は、例えば、ジャーナル取得・配付装置１を実現するコンピュータに備えられたメモリ上に配置される。
【００４１】
ジャーナル配付機構１０は、ジャーナル利用ファイル１２を介してジャーナルを複写先データベースＤＢ１及びＤＢ２に配付する。ジャーナル配付機構１０は、ジャーナル配付部１１を備える。ジャーナル配付部１１は、ジャーナル管理テーブル８を参照しながら、複写元データベースを更新する際のトランザクション別に、ジャーナル格納テーブル９からジャーナルを読み出してジャーナル利用ファイル１２に書き込む。ジャーナル利用ファイル１２に書き込まれたジャーナルは、ジャーナルを反映するトランザクションによって、複写先データベースＤＢ１及びＤＢ２に書き込まれる。ジャーナルの反映は、複写元データベースを更新する際のトランザクション（つまり、ジャーナル取得側のトランザクション）別に行われる。
【００４２】
ジャーナル利用ファイル１２は、配付されたジャーナルを格納する。従来技術によれば、ジャーナルの配付は複写元データベース単位に行われていたため、ジャーナル利用ファイルも、複写元データベースに対応して備えられていたが、本発明によれば、ジャーナルの配付は、ジャーナル取得側のトランザクション単位に行われるため、ジャーナル利用ファイル１２は、複写元データベースに対応して備えられる必要はない。
【００４３】
以下、図４を用いて、ジャーナル取得・配付装置を適用したシステムの構成について説明する。図４に示すように、ジャーナル取得・配付システムにおいて、コンピュータＣ１及びＣ２はネットワークを介して接続されている。
【００４４】
コンピュータＣ１は、複写元データベースＤＢａ及びＤＢｂ、これらの複写元データベースを管理するＤＢＭＳ２、ジャーナル取得機構３、ＤＢ更新カウンタ６、ジャーナル取得ファイル７及び及びジャーナル配付機構１０を備える。コンピュータＣ１は、ジャーナル取得・利用装置１に相当する。コンピュータＣ２は、ジャーナル利用ファイル１２、複写先データベースＤＢ１及びＤＢ２を備える。
【００４５】
以下、第１実施形態に係わるジャーナル取得・配付処理の手順について説明する。図４に示すジャーナル取得・配付システムにおけるジャーナルのやり取りの流れについて、図５を用いて説明する。まず、トランザクションＴ１及びＴ２によって、データベースＤＢａ及びＤＢｂが更新される。トランザクションＴ１及びＴ２によって行われる処理は以下の通りであり、（ａ）から（ｆ）までの順序で行われる。
【００４６】
（ａ）：トランザクションＴ１によるデータベースＤＢａのカラム１の更新
（ｂ）：トランザクションＴ２によるデータベースＤＢａのカラム２の更新
（ｃ）：トランザクションＴ１によるデータベースＤＢｂのカラム１の更新
（ｄ）：トランザクションＴ１の終了（コミット）、
データベースの内容の保証
（ｅ）：トランザクションＴ２によるデータベースＤＢｂのカラム２の更新
（ｆ）：トランザクションＴ２の終了（コミット）、
データベースの内容の保証
データベースが更新されるごとに、ＤＢＭＳ２からのトリガーによってジャーナル取得機構３は呼び出される。ジャーナル取得機構３は、呼び出されるごとに、ジャーナル及びトランザクション番号をＤＢＭＳ２から取得し、カウント値をＤＢ更新カウンタ６から取得する。そして、ジャーナル取得機構３は、取得したカウント値及びトランザクション番号をジャーナル管理テーブル８に書き込み、ジャーナル及びトランザクション番号をジャーナル格納ファイル９に書き込む。
【００４７】
ＤＢ更新カウンタ６は、データベースが更新されるごとに１インクリメントされる。従って、トランザクションＴ１が開始される当初、ＤＢ更新カウンタ６のカウント値が「０」であると仮定すると、（ａ）、（ｂ）、（ｃ）及び（ｅ）の更新処理が行われる際に取得されるカウント値は、それぞれ、「１」、「２」、「３」及び「４」となる。（ｃ）の処理はトランザクションＴ１の最後の処理であるため、トランザクションＴ１のトランザクション番号を「１００」と仮定すると、ジャーナル管理テーブル８において、トランザクション番号「１００」に対応するカウント値は最終的には「３」となる。同様に、（ｅ）の処理はトランザクションＴ２の最後の処理であるため、トランザクションＴ２のトランザクション番号を「１０１」と仮定すると、ジャーナル管理テーブル８において、トランザクション番号「１０１」に対応するカウント値は最終的には「４」となる。
【００４８】
ジャーナル配付機構１０は、ジャーナル管理テーブル８からトランザクション番号を取得し、そのトランザクション番号と対応付けられたジャーナルをジャーナル格納テーブル９から取出してジャーナル利用ファイル１２に配付する。なお、複数のトランザクション番号がジャーナル管理テーブル８に格納されている場合、最も小さなカウント値に対応するトランザクション番号から順番にこの処理を行う。例えば、図５に示すジャーナル取得ファイル７の場合、ジャーナル管理テーブル８内で最も小さなカウント値「３」に対応付けられているトランザクション番号は「１００」であるため、ジャーナル格納テーブル９内でトランザクション番号「１００」に対応付けられているジャーナル「ＤＢａのカラム１の更新データ」及び「ＤＢｂのカラム１の更新データ」が先にジャーナル利用ファイル１２に配付される。続いて、カウント値「４」に対応付けられているトランザクション番号「１０１」を有するトランザクションによって生じたジャーナル、つまり、「ＤＢａのカラム２の更新データ」及び「ＤＢｂのカラム２の更新データ」が、ジャーナル利用ファイル１２に配付される。このようにして、ジャーナルの配付は、ジャーナル取得側のトランザクション単位に行われる。
【００４９】
ジャーナルがジャーナル利用ファイル１２に配付されると、コンピュータＣ２において、ジャーナルが反映される。ジャーナルは、ジャーナル取得側のトランザクション毎に配付されるため、ジャーナルの反映も、ジャーナル取得側のトランザクション毎に行われる。図５に示す例の場合、ジャーナルを反映するトランザクションは、２つに分けられる。前者は、ジャーナル利用ファイル１２から「ＤＢａのカラム１の更新データ」を読み込んで、複写先データベースＤＢ１を更新し、更に、「ＤＢｂのカラム１の更新データ」を読み込んで、複写先データベースＤＢ２を更新する処理である。後者は、ジャーナル利用ファイル１２から「ＤＢａのカラム２の更新データ」を読み込んで、複写先データベースＤＢ１を更新し、更に、「ＤＢｂのカラム２の更新データ」を読み込んで、複写先データベースＤＢ２を更新する処理である。
【００５０】
以下、図６から図１１を用いて第１実施形態に係わるジャーナル取得・配付処理について詳しく説明する。まず、図６から図９を用いてジャーナル取得処理について説明する。ジャーナル取得処理において、ジャーナル取得機構３は、複写元データベースからジャーナルを取得する。図６は、ジャーナル取得処理を示すフローチャートである。図６に示す処理は、ＤＢＭＳ２からのトリガーによってジャーナル取得機構３が呼び出される毎に行われる。
【００５１】
図６に示すように、まず、ＤＢＭＳ２からのトリガーによってジャーナル取得機構３が呼び出されると、ジャーナル取得部５は、ジャーナルをＤＢＭＳ２から受け取る（ステップＳ１）。続いて、トランザクション番号獲得部４は、ＤＢＭＳ２からトランザクション番号を獲得する（ステップＳ２）。さらに、トランザクション番号獲得部４は、ＤＢ更新カウンタ６のカウント値を１インクリメントした後、そのカウント値を獲得する（ステップＳ３）。トランザクション番号獲得部４は、獲得したトランザクション番号をキーとしてジャーナル管理テーブル８を検索し（ステップＳ４）、そのトランザクション番号を持つレコードがジャーナル管理テーブル８に格納されているか否か判定する（ステップＳ５）。
【００５２】
そのトランザクション番号を持つレコードがジャーナル管理テーブル８に格納されている場合（ステップＳ５：Ｙｅｓ）、トランザクション番号獲得部４は、そのレコードに含まれるカウント値を、ステップＳ３で獲得したカウント値に更新し（ステップＳ６）、ステップＳ８に進む。そのトランザクション番号を持つレコードがジャーナル管理テーブル８に格納されていない場合（ステップＳ５：Ｎｏ）、トランザクション番号獲得部４は、そのトランザクション番号と、ステップＳ３で獲得したカウント値を有するレコードをジャーナル管理テーブル８に挿入し（ステップＳ７）、ステップＳ８に進む。ステップＳ８において、ジャーナル取得部５は、ステップＳ１で取得したジャーナルと、ステップＳ２で獲得したトランザクション番号を有するレコードをジャーナル格納テーブル９に挿入し、処理を終了する。
【００５３】
以下、図７から図９を用いて、上記のジャーナル取得処理について具体的に説明する。この説明において、説明を分かりやすくするために、図５を用いてジャーナルのやり取りの流れを説明する際の仮定と同じ仮定を用いる。
【００５４】
まず、図７を用いて、トランザクションＴ１中の（ａ）の更新処理を行った際のジャーナル取得処理について説明する。トランザクションＴ１中の（ａ）の更新処理によって複写元データベースＤＢａのカラム１が更新されると（矢印Ａ１）、ＤＢＭＳ２からのトリガーによってジャーナル取得機構３が呼び出される（矢印Ａ２）。ジャーナル取得機構３は、ＤＢＭＳ２からトランザクションＴ１のトランザクション番号「１００」を獲得する（矢印Ａ３）。更に、ジャーナル取得機構３は、ＤＢ更新カウンタ６のカウント値を「０」から１インクリメントして「１」とし、そのカウント値「１」を取得する（矢印Ａ４）。ジャーナル取得機構３は、ジャーナル管理テーブル８に、トランザクション番号「１００」及びカウント値「１」を含むレコードを挿入し（矢印Ａ５）、ジャーナル格納テーブル９に、トランザクション番号「１００」及び「データベースＤＢａのカラム１の更新データ」を含むレコードを挿入する（矢印Ａ６）。
【００５５】
次に、トランザクションＴ２中の（ｂ）の更新処理によって発生したジャーナルの取得処理が行われる。この処理は、上記と同様であるため、説明を省略する。なお、この場合、トランザクション番号「１０１」が獲得され、カウント値「２」が取得される。この結果、ジャーナル管理テーブル８には、トランザクション番号「１０１」及びカウント値「２」を含むレコードが挿入され、ジャーナル格納テーブル９には、トランザクション番号「１０１」及び「データベースＤＢａのカラム２の更新データ」を含むレコードが挿入される。
【００５６】
次に、図８を用いて、トランザクションＴ１中の（ｃ）の更新処理を行った際のジャーナル取得処理について説明する。（ｃ）の更新処理によって複写元データベースＤＢｂのカラム１が更新されると（矢印Ａ６）、ＤＢＭＳ２からのトリガーによってジャーナル取得機構３が呼び出される（矢印Ａ７）。ジャーナル取得機構３は、ＤＢＭＳ２からトランザクションＴ１のトランザクション番号「１００」を獲得する（矢印Ａ８）。この（ｃ）の更新処理の前には、トランザクションＴ２内の（ｂ）の更新処理が行われている。（ｂ）の更新処理についてのジャーナル取得処理によって、ＤＢ更新カウンタ６のカウント値は、「２」になっている。ジャーナル取得機構３は、ＤＢ更新カウンタ６のカウント値を「２」から更に１インクリメントして「３」とし、そのカウント値「３」を取得する（矢印Ａ９）。
【００５７】
ジャーナル管理テーブル８には、既に、トランザクション番号「１００」を有するレコードが格納されているため、ジャーナル取得機構３は、そのレコード内のカウント値「１」を「３」に更新する（矢印Ａ１０）。更に、ジャーナル取得機構３は、ジャーナル格納テーブル９に、トランザクション番号「１００」及び「データベースＤＢｂのカラム１の更新データ」を含むレコードを挿入する（矢印Ａ１１）。
【００５８】
この（ｃ）の更新処理の後、トランザクションＴ１は、終了する。続いて、トランザクションＴ２中の（ｅ）の更新処理が行われる。最後に、図９を用いて、トランザクションＴ２中の（ｅ）の更新処理を行った際のジャーナル取得処理について説明する。（ｅ）の更新処理によって複写元データベースＤＢｂのカラム２が更新されると（矢印Ａ１２）、ＤＢＭＳ２からのトリガーによってジャーナル取得機構３が呼び出される（矢印Ａ１３）。ジャーナル取得機構３は、ＤＢＭＳ２からトランザクションＴ２のトランザクション番号「１０１」を獲得する（矢印Ａ１４）。更に、ジャーナル取得機構３は、ＤＢ更新カウンタ６のカウント値を「３」から更に１インクリメントして「４」とし、そのカウント値「４」を取得する（矢印Ａ１５）。
【００５９】
ジャーナル管理テーブル８には、既に、トランザクション番号「１０１」を有するレコードが格納されているため、ジャーナル取得機構３は、そのレコード内のカウント値「２」を「４」に更新する（矢印Ａ１６）。更に、ジャーナル取得機構３は、ジャーナル格納テーブル９に、トランザクション番号「１０１」及び「データベースＤＢｂのカラム２の更新データ」を含むレコードを挿入する（矢印Ａ１７）。
【００６０】
このようにして、トランザクション中の更新処理によって生じたジャーナルを取得すると、次に、ジャーナルの配付処理が行われる。ジャーナル配付処理において、ジャーナル配付機構１０は、ジャーナル取得ファイル７に格納されたジャーナルをジャーナル利用ファイル１２に配付する。以下、図１０及び図１１を用いて、ジャーナル配付処理について説明する。図１０は、ジャーナルの配付処理を示すフローチャートである。図１０に示す処理は、原則として、一定の時間間隔で行われる。もちろん、メンテナンス時等に、不定期に行われる事としても良い。
【００６１】
まず、図１０に示すように、一定間隔でジャーナル配付機構１０が起動されると、ジャーナルを配付するトランザクションが開始される。まず、ジャーナル配付機構１０内のジャーナル配付部１１は、ジャーナル管理テーブル８から、最も小さなカウント値を有するレコードを検索し（ステップＳ１１）、該当するレコードがジャーナル管理テーブル８に格納されているか否か判定する（ステップＳ１２）。ジャーナル管理テーブル８にレコードが１つも格納されていない場合は（ステップＳ１２：Ｎｏ）、ジャーナルを配付するトランザクションを終了し、ステップＳ１７に進む。ステップＳ１７において、更に一定時間待つ。
【００６２】
ジャーナル管理テーブル８に該当するレコードが格納されている場合（ステップＳ１２：Ｙｅｓ）、ジャーナル配付部１１は、そのレコードに含まれるトランザクション番号と同じトランザクション番号を有するジャーナル格納テーブル９内のレコードから、ジャーナルを取得する（ステップＳ１３）。該当するジャーナルがジャーナル格納テーブル９内にある場合（ステップＳ１４：Ｙｅｓ）、ジャーナル配付部１１は、そのジャーナルを読み出して、ジャーナル利用ファイル１２に出力する（ステップＳ１５）。該当するジャーナルがジャーナル格納テーブル９内にない場合（ステップＳ１４：Ｎｏ）、ステップＳ１５を行わずにステップＳ１６に進む。
【００６３】
ステップＳ１６において、ジャーナル配付部１１は、ジャーナル管理テーブル８から、処理したトランザクション番号を有するレコードをジャーナル管理テーブル８及びジャーナル格納テーブル９から削除し、ステップＳ１１にもどる。
【００６４】
このようにして、ジャーナル取得ファイル７内のジャーナルは、ジャーナル利用ファイル１２に配付される。ジャーナル利用ファイル１２に書き込まれたジャーナルは、ジャーナルを反映するトランザクションによって、複写先データベースＤＢ１及びＤＢ２に書き込まれる。上記のように、ジャーナルの配付は、ジャーナル取得側のトランザクション別に行われるため、ジャーナルの反映も、ジャーナル取得側のトランザクション別に行われる。
【００６５】
以下、ジャーナル取得ファイル７に、図１１に示すようなデータが格納されている場合にジャーナルを配付する処理について具体的に説明する。なお、この説明は、図５を用いてジャーナルのやり取りの流れを説明する際の仮定と同じ仮定に基づいている。
【００６６】
まず、ジャーナル配付機構１０は、ジャーナル管理テーブル８から最も小さなカウント値「３」を有するレコードを取得する（矢印Ａ２１）。このレコードには、トランザクション番号「１００」が含まれる。従って、ジャーナル配付機構１０は、ジャーナル格納テーブル９から、トランザクション番号「１００」を有するレコードを取得し（矢印Ａ２２）、そのレコードに含まれるジャーナルをジャーナル利用ファイル１２に書き込む（矢印Ａ２３）。なお、トランザクション番号「１００」に対応するトランザクションＴ１において、（ａ）及び（ｃ）の更新処理によって「データベースＤＢａのカラム１の更新データ」及び「データベースＤＢｂのカラム１の更新データ」が生じている。従って、この場合、「データベースＤＢａのカラム１の更新データ」及び「データベースＤＢｂのカラム１の更新データ」がジャーナル利用ファイル１２に書き込まれる。
【００６７】
最後に、ジャーナル配付機構１０は、トランザクション番号「１００」を有するレコードをジャーナル管理テーブル８及びジャーナル格納テーブル９から削除する（矢印Ａ２４、Ａ２５及びＡ２６）。
【００６８】
次に、第２実施形態について説明する。第１実施形態において、ＤＢＭＳ２からトランザクションの処理が正常に終了したこと（コミット）の通知がジャーナル取得機構３に対して行われない場合について説明した。以下、第２実施形態として、トランザクションがコミットされたことの通知がＤＢＭＳ２からジャーナル取得機構３に行われる場合について説明する。
【００６９】
図１２に、第２実施形態に係わるジャーナル取得・配付装置の構成を示す。図１２に示すように、第２実施形態に係わるジャーナル取得・配付装置２０の構成は、第１実施形態に係わるジャーナル取得・配付装置１とほぼ同様である。両者で異なる点は、第１実施形態に係わるジャーナル取得・配付装置１は、ＤＢ更新カウンタ６及びジャーナル管理テーブル８を備えていたが、第２実施形態に係わるジャーナル取得・配付装置２０は、これらの代わりに、ジャーナル格納領域２１を備えることである。
【００７０】
第２実施形態に係わるジャーナル取得・配付装置２０を構成する各部の動作も、基本的には第１実施形態と同様であるため、両者の相違点に重点をおいて説明する。
【００７１】
ＤＢＭＳ２は、複写元データベースＤＢａ及びＤＢｂが更新される毎に、トリガーによってジャーナル取得機構３を呼び出し、ジャーナルをジャーナル取得機構３に出力する。更に、ＤＢＭＳ２は、トランザクションが終了する毎に、トリガーによってジャーナル取得機構３を呼び出し、応答としてジャーナル取得機構３から終了したトランザクションに係わるジャーナルが格納されている格納領域の通知を受ける。ＤＢＭＳ２は、その格納領域内のジャーナルをジャーナル格納テーブル９に挿入する。
【００７２】
ジャーナル取得部５がＤＢＭＳ２からジャーナルを取得した際、トランザクション番号獲得部４は、ＤＭＢＳ２からトランザクション番号を獲得し、そのジャーナルとトランザクション番号をジャーナル格納領域２１内に設定する。
【００７３】
ＤＢＭＳ２からトランザクションの終了の通知を受けた際、トランザクション番号獲得部４はＤＭＢＳ２からトランザクション番号を獲得し、ジャーナル格納領域２１内で、そのトランザクション番号に対応する格納領域をＤＢＭＳ２に通知する。
【００７４】
ジャーナル配付機構１０は、原則的に一定時間間隔ごとに起動される。起動されると、ジャーナル配付機構１０は、ジャーナル格納テーブル９に格納されたジャーナルをジャーナル利用ファイル１２に出力することにより、ジャーナルを配付する。
【００７５】
ジャーナル格納領域２１は、トランザクション番号別にジャーナルを格納する。ジャーナル格納領域２１は、例えば、コンピュータのメモリ上に配置される。図１３に、ジャーナル格納領域２１のデータ構造例を示す。図１３に示すように、ジャーナル格納領域２１は、トランザクション番号別にジャーナルを格納する格納領域を備える。
【００７６】
次に、第２実施形態に係わるジャーナル取得・配付装置を適用したシステムの構成について説明する。このシステムは、図４に示すジャーナル取得・配付システムと同様に、互いにネットワークを介して接続されているコンピュータＣ１及びＣ２を備える。第２実施形態では、第１実施形態の場合と、コンピュータＣ１の構成が若干異なる。第２実施形態の場合、コンピュータＣ１は、複写元データベースＤＢａ及びＤＢｂ、これらの複写元データベースを管理するＤＢＭＳ２、ジャーナル取得機構３、ジャーナル取得ファイル７、ジャーナル配付機構１０及ジャーナル格納領域２１を備える。コンピュータＣ２の構成は第１実施形態と同様である。
【００７７】
以下、第２実施形態に係わるジャーナル取得・配付処理の手順について説明する。まず、ジャーナル取得・配付システムにおけるジャーナルのやり取りの流れの概要について、図１４を用いて説明する。以下の説明において、第１実施形態と同様に、トランザクションＴ１によって、複写元データベースＤＢａ及びＤＢｂのカラム１が更新され、トランザクションＴ２によって複写元データベースＤＢａ及びＤＢｂのカラム２が更新されると仮定する。
【００７８】
第２実施形態に係わるシステムでは、ＤＢＭＳ２は、処理（ａ）、（ｂ）、（ｃ）及び（ｅ）によってデータベースが更新されるごとに、トリガーによってジャーナル取得機構３を呼び出し、さらに、ジャーナルをジャーナル取得機構３に出力する。ジャーナル取得機構３は、ジャーナル及びトランザクション番号をＤＢＭＳ２から取得し、取得したトランザクション番号に対応する格納領域をジャーナル格納領域２１内に獲得し、取得したジャーナル及びトランザクション番号をその格納領域に書き込む。例えば、トランザクションＴ１の（ａ）の更新処理によってデータベースＤＢａのカラム１が更新されると、ジャーナル取得機構３は、「ＤＢａのカラム１の更新データベース」及びトランザクションＴ１のトランザクション番号「１００」を取得し、ジャーナル格納領域２１に「ＤＢａのカラム１の更新データベース」及びトランザクションＴ１のトランザクション番号「１００」を書き込む。（ｂ）、（ｃ）及び（ｅ）の更新処理の場合も、同様に処理される。
【００７９】
また、ＤＢＭＳ２は、（ｄ）及び（ｆ）においてトランザクションが終了するごとに、トリガーによってジャーナル取得機構３を呼び出す。例えば、（ｄ）においてトランザクションＴ１が終了すると、ジャーナル取得機構３は、トランザクションＴ１のトランザクション番号「１００」をＤＢＭＳ２から取得し、ジャーナル格納領域２１内で、そのトランザクション番号「１００」に対応する格納領域をＤＢＭＳ２に通知する。ＤＢＭＳ２は、通知に基づいて、そのジャーナル格納領域２１からトランザクション番号「１００」を有するジャーナルを全て読み出して、ジャーナル格納テーブル９に挿入する。これにより、ジャーナル格納テーブル９には、トランザクションＴ１に係わるジャーナルが全て書き込まれる。（ｆ）においてトランザクションＴ２が終了した場合も、同様に処理される。
【００８０】
ジャーナル配付機構１０は、原則的に一定時間間隔ごとに起動される。起動されると、ジャーナル配付機構１０は、ジャーナル格納テーブル９に格納されたジャーナルをジャーナル利用ファイル１２に出力することにより、ジャーナルを配付する。図１４に示すように、ジャーナル格納テーブル９には、ジャーナル取得側のトランザクション別にジャーナルが書き込まれている。従って、ジャーナル格納テーブル９に格納されている順にジャーナルをジャーナル利用ファイル１２に配付すると、ジャーナルは、ジャーナル取得側のトランザクション単位に配付される。ジャーナルを反映するトランザクションは、第１実施形態と第２実施形態は同じであるため、説明を省略する。
【００８１】
図１５から図１７を用いて第２実施形態に係わるジャーナル取得・配付処理について詳しく説明する。まず、図１５及び図１６を用いてジャーナル取得処理について説明する。図１５は、データベースが更新（データの変更、削除、追加）された場合のジャーナル取得処理を示すフローチャートである。図１５に示す処理は、ＤＢＭＳ２からのトリガーによってジャーナル取得機構３が呼び出される毎に行われる。
【００８２】
図１５に示すように、まず、ＤＢＭＳ２からのトリガーによってジャーナル取得機構３が呼び出されると、ジャーナル取得部５は、データベースの更新によって出力されるジャーナルをＤＢＭＳ２から受け取る（ステップＳ２１）。続いて、トランザクション番号獲得部４は、ＤＢＭＳ２からトランザクション番号を獲得する（ステップＳ２２）。トランザクション番号獲得部４は、獲得したトランザクション番号に対応する格納領域を、ジャーナル格納領域２１から検索し（ステップＳ２３）、そのトランザクション番号に対応する格納領域がジャーナル格納領域２１内にあるか否か判定する（ステップＳ２４）。
【００８３】
該当する格納領域がジャーナル格納領域２１に存在する場合（ステップＳ２４：Ｙｅｓ）、トランザクション番号獲得部４は、その格納領域に、ステップＳ２１で取得したジャーナル及びステップＳ２２で獲得したトランザクション番号を設定し（ステップＳ２６）、処理を終了する。該当する格納領域がジャーナル格納領域２１に存在しない場合（ステップＳ２４：Ｎｏ）、そのトランザクション番号に対応する格納領域をジャーナル格納領域２１内に獲得した後に（ステップＳ２５）、ステップＳ２６を行い、処理を終了する。
【００８４】
図１６は、トランザクションが終了した場合のジャーナル取得処理を示すフローチャートである。図１６に示す処理も、ＤＢＭＳ２からのトリガーによってジャーナル取得機構３が呼び出される毎に行われる。
【００８５】
図１６に示すように、まず、ＤＢＭＳ２からのトリガーによってジャーナル取得機構３が呼び出されると、トランザクション番号獲得部４は、ＤＢＭＳ２からトランザクション番号を獲得する（ステップＳ３１）。続いて、トランザクション番号獲得部４は、獲得したトランザクション番号に対応する格納領域を、ジャーナル格納領域２１から検索し（ステップＳ３２）、そのトランザクション番号に対応する格納領域がジャーナル格納領域２１内にあるか否か判定する（ステップＳ３３）。
【００８６】
該当する格納領域がジャーナル格納領域２１に存在する場合（ステップＳ３３：Ｙｅｓ）、トランザクション番号獲得部４は、その格納領域をＤＢＭＳ２に通知する（ステップＳ３４）。ＤＢＭＳ２は、通知された格納領域からそのトランザクション番号に対応するジャーナルを取得し、トランザクション番号と取得したジャーナルをジャーナル格納テーブル９に挿入する（ステップＳ３５）。その後、処理を終了する。一方、該当する格納領域がジャーナル格納領域２１に存在しない場合（ステップＳ３３：Ｎｏ）、ステップＳ３４及びＳ３５を行わなわずに処理を終了する。
【００８７】
このようにして、ジャーナル取得機構３は、ジャーナル取得側のトランザクション毎に、ジャーナルを取得する。
次に、図１７を用いて、ジャーナル配付処理について説明する。図１７は、ジャーナルの配付処理を示すフローチャートである。図１７に示す処理は、原則として、一定の時間間隔で行われる。
【００８８】
まず、図１７に示すように、一定間隔でジャーナル配付機構１０が起動されると、ジャーナルを配付するトランザクションが開始される。まず、ジャーナル配付機構１０内のジャーナル配付部１１は、ジャーナル格納テーブル９からジャーナルを先に格納された順に読み込む（ステップＳ４１）。読み込むべきレコードがない場合（ステップＳ４２：Ｎｏ）、ステップＳ４５に進む。ステップＳ４５において、更に一定時間間隔待つ。
【００８９】
レコードを読み込む事ができた場合（ステップＳ４２：Ｙｅｓ）、ジャーナル配付部１１は、そのレコード中のジャーナルをジャーナル利用ファイル１２に出力する（ステップＳ４３）。続いて、ジャーナル配付部１１は、読み込んだレコードをジャーナル格納テーブル９から削除し（ステップＳ４４）、ステップＳ４１に戻る。
【００９０】
このようにして、ジャーナル取得ファイル７内のジャーナルは、ジャーナル利用ファイル１２に配付される。上記の説明から、第２実施形態によっても、ジャーナルの配付は、ジャーナル取得側のトランザクション別に行われることがわかる。ジャーナルの配付は、ジャーナル取得側のトランザクション別に行われるため、当然、ジャーナルの反映も、ジャーナル取得側のトランザクション別に行われる。
【００９１】
図１８に、ジャーナル取得・配付装置の応用例を示す。図１８では、ジャーナル取得・配付装置を、本社及びその本社によって管理される各営業店に配置されるサーバに採用している。各営業店に配置されるサーバ（以下、営業店サーバ）は、全社共通の顧客に関する情報を格納する全社顧客情報データベース、営業店別の契約情報を格納する営業店契約情報データベース、ＤＢＭＳ（図中省略）及びジャーナル取得・配付装置を備える。営業店サーバ内のジャーナル取得・配付装置は、営業店契約情報データベースを複写元データベースとし、本社に設置されるサーバ（以下、本社サーバ）内の全社契約情報データベースを複写先データベースとする。従って、各営業店サーバ内の営業店契約情報データベースが更新されると、その更新処理によって生じたジャーナルが本店サーバ内の全社契約情報データベースに配付される。これにより、本社は、常に、各営業店の最新の契約情報を取得することができる。
【００９２】
一方、本社サーバは、全社顧客情報データベース、全ての営業店の契約情報を格納する全社契約情報データベース、ＤＢＭＳ及び、ジャーナル取得・配付装置を備える。本社サーバ内のジャーナル取得・配付装置は、本社サーバ内の全社顧客情報データベースを複写元データベースとし、営業店サーバ内の全社顧客情報データベースを複写先データベースとする。従って、本社サーバ内の全社顧客情報データベースが更新されると、その更新処理によって生じたジャーナルが各営業店サーバ内の全社顧客情報データベースに配付される。これにより、各営業店は、常に最新の顧客情報を取得することができる。各営業店は、最新の顧客情報及び契約に基づいて、今までの営業成績を分析し、今後の営業戦略を立案する事が可能となる。
【００９３】
なお、図１８の営業店Ａのように、各営業店サーバは、各種形態の端末とのあいだで情報をやり取りするアプリケーションサーバとしての機能を有することとしてもよい。
【００９４】
上記のジャーナル取得・配付装置１及び２０は、コンピュータを用いて構成することができる。図１９に、コンピュータの構成図を示す。図１９に示すようにコンピュータ３０は、ＣＰＵ３１、メモリ３２、入力装置３３、出力装置３４、外部記憶装置３５、媒体駆動装置３６、及びネットワーク接続装置３７を備え、それらはバス３８により互いに接続されている。
【００９５】
メモリ３２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等を含み、処理に用いられるプログラムとデータを格納する。コンピュータを用いて第１実施形態に係わるジャーナル取得・配付装置１を構成する場合、メモリ３２は、ジャーナル取得機構３、ＤＢ更新カウンタ６及びジャーナル配付機構１０によって行われる処理をコンピュータに行わせるための制御プログラムを特定のプログラムコードセグメントに格納する。また、コンピュータを用いて第２実施形態に係わるジャーナル取得・配付装置２０を構成する場合、メモリ３２は、ジャーナル取得機構３、及びジャーナル配付機構１０によって行われる処理をコンピュータに行わせるための制御プログラムを特定のプログラムコードセグメントに格納し、さらに、ジャーナル格納領域２１を実現する。
【００９６】
ＣＰＵ３１は、メモリ３２を利用して上述の制御プログラムを実行することにより、必要な処理を行う。
入力装置３３は、例えば、キーボード、ポインティングデバイス、タッチパネル等であり、ユーザからの指示や情報の入力に用いられる。また、入力装置３３は、出力装置３４は、例えば、ディスプレイやプリンタ等であり、コンピュータのユーザへの問合わせ、処理結果等の出力に用いられる。
【００９７】
外部記憶装置３５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置等である。外部記憶装置３５は、ジャーナル取得・配付装置１又は２０に備えられるジャーナル取得ファイル７、及びジャーナルの配付先となる装置に備えられるジャーナル利用ファイル１２を実現する。なお、上述の制御プログラムを外部記憶装置３５に保存しておき、必要に応じて、それらをメモリ３２にロードして使用することもできる。
【００９８】
媒体駆動装置３６は、可搬記録媒体３９を駆動し、その記録内容にアクセスする。可搬記録媒体３９としては、メモリカード、メモリスティック、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、光ディスク、光磁気ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等、任意のコンピュータ読み取り可能な記録媒体が用いられる。この可搬記録媒体３９に上述の制御プログラムを格納しておき、必要に応じて、それをコンピュータのメモリ３２にロードして使用することもできる。
【００９９】
ネットワーク接続装置３７は、ＬＡＮ、ＷＡＮ等の任意のネットワーク（回線）を介して外部の装置を通信し、通信に伴うデータ変換を行う。また、必要に応じて、上述のプログラムを外部の装置から受け取り、それをコンピュータのメモリ３２にロードして使用することもできる。
【０１００】
図２０は、図１９のコンピュータへのプログラムのローディングを説明している。コンピュータ３０にセンタ・サーバＣを実現させるためのプログラムは、以下のようにしてコンピュータにロードする事ができる。
【０１０１】
まず、上述のプログラムを、コンピュータで読み取り可能な記録媒体３９に予め記憶させておく。そして、図２０に示すようにしてその記録媒体３９からプログラムをコンピュータ３０に読み出させて、そのコンピュータ３０のメモリ３２や外部記憶装置３５に一旦格納させ、この格納されたプログラムをそのコンピュータの有するＣＰＵ３１に読み出させる。
【０１０２】
また、プログラムやデータを提供するサーバ４０が有するＤＢ４１から、ネットワークを介して、プログラムをダウンロードすることとしてもよい。この場合、例えば、サーバ４０では、プログラムを表現するプログラム・データをプログラム・データ・シグナルに変換し、モデムを用いて変換されたプログラム・データ・シグナルを変調することにより伝送信号を得て、得られた伝送信号をネットワークに出力する。プログラムを受信するコンピュータ３０では、モデムを用いて受信した伝送信号を復調することにより、プログラム・データ・シグナルを得て、得られたプログラム・データ・シグナルを変換することにより、プログラム・データを得る。なお、送信側のコンピュータと受信側のコンピュータの間を接続するネットワークがデジタル回線の場合、プログラム・データ・シグナルを通信することも可能である。
【０１０３】
以上、本発明の実施形態及び変形例について説明したが、本発明は上述した実施形態及び変形例に限定されるものではなく、その他の様々な変更が可能である。
【０１０４】
【発明の効果】
以上詳細に説明したように、本発明によれば、複数の複写元データベースをレの複製を作成する場合に、トランザクション単位でレプリケーションすることにより、複雑な論理処理や、トランザクションの処理時間の遅延を回避しつつも、データベース間の整合性を維持することが可能となる。
【図面の簡単な説明】
【図１】第１実施形態に係わるジャーナル取得・配付装置の構成図である。
【図２】ジャーナル管理テーブルのデータ構造例を示す図である。
【図３】ジャーナル格納テーブルのデータ構造例を示す図である。
【図４】第１実施形態に係わるジャーナル取得・配付システムの構成図である。
【図５】第１実施形態に係わるジャーナル取得・配付システムにおけるジャーナルのやり取りの流れの概要を説明する図である。
【図６】第１実施形態におけるジャーナル取得処理を示すフローチャートである。
【図７】第１実施形態におけるジャーナル取得処理を具体的に説明する図（その１）である。
【図８】第１実施形態におけるジャーナル取得処理を具体的に説明する図（その２）である。
【図９】第１実施形態におけるジャーナル取得処理を具体的に説明する図（その３）である。
【図１０】ジャーナル配付処理を示すフローチャートである。
【図１１】ジャーナル配付処理を具体的に説明する図である。
【図１２】第２実施形態に係わるジャーナル取得・配付装置の構成図である。
【図１３】ジャーナル格納領域のデータ構造例を示す図である。
【図１４】第２実施形態に係わるジャーナル取得・配付システムにおけるジャーナルのやり取りの流れの概要を説明する図である。
【図１５】第２実施形態におけるジャーナル取得処理を示すフローチャート（その１）である。
【図１６】第２実施形態におけるジャーナル取得処理を示すフローチャート（その２）である。
【図１７】第２実施形態におけるジャーナル配付処理を示すフローチャートである。
【図１８】ジャーナル取得・配付装置の応用例を示す図である。
【図１９】コンピュータの構成図である。
【図２０】コンピュータへのデータ及びプログラムのローディングを説明する図である。
【図２１】従来技術に係わるジャーナル取得・配付装置の構成図である。
【図２２】従来技術に係わるジャーナル取得・配付システムにおけるジャーナルのやり取りの流れの概要を説明する図である。
【図２３】従来技術に係わるジャーナル取得・配付システムにおける問題を説明する図（その１）である。
【図２４】従来技術に係わるジャーナル取得・配付システムにおける問題を説明する図（その２）である。
【符号の説明】
１、２０  ジャーナル取得・配付装置
２  ＤＢＭＳ
３  ジャーナル取得機構
４  トランザクション番号獲得部
５  ジャーナル取得部
６  ＤＢ更新カウンタ
７  ジャーナル取得ファイル
８  ジャーナル管理テーブル
９  ジャーナル格納テーブル
１０  ジャーナル配付機構
１１  ジャーナル配付部
１２  ジャーナル利用ファイル
２１  ジャーナル格納領域
３０  コンピュータ
３１  ＣＰＵ
３２  メモリ
３３  入力装置
３４  出力装置
３５  外部記憶装置
３６  媒体駆動装置
３７  ネットワーク接続装置
３８  バス
３９  可搬記録媒体
４０  サーバ
４１  データベース
１０１  ＤＢＭＳ
１０２  ジャーナル取得機構
１０３  ジャーナル利用ファイル
１０４  ジャーナル配付機構
２０１  ジャーナル利用ファイル
ＤＢａ、ＤＢｂ  複写元データベース
Ｄｂ１、ＤＢ２  複写先データベース
Ｓ  ステップ
【図１】
2004302662.tif 000003
【図２】
2004302662.tif 000004
【図３】
2004302662.tif 000005
【図４】
2004302662.tif 000006
【図５】
2004302662.tif 000007
【図６】
2004302662.tif 000008
【図７】
2004302662.tif 000009
【図８】
2004302662.tif 000010
【図９】
2004302662.tif 000011
【図１０】
2004302662.tif 000012
【図１１】
2004302662.tif 000013
【図１２】
2004302662.tif 000014
【図１３】
2004302662.tif 000015
【図１４】
2004302662.tif 000016
【図１５】
2004302662.tif 000017
【図１６】
2004302662.tif 000018
【図１７】
2004302662.tif 000019
【図１８】
2004302662.tif 000020
【図１９】
2004302662.tif 000021
【図２０】
2004302662.tif 000022
【図２１】
2004302662.tif 000023
【図２２】
2004302662.tif 000024
【図２３】
2004302662.tif 000025
【図２４】
2004302662.tif 000026