JP4299033B2 - ジャーナル取得・配付装置、ジャーナル取得・配付方法、その方法をコンピュータに行わせるプログラム - Google Patents
ジャーナル取得・配付装置、ジャーナル取得・配付方法、その方法をコンピュータに行わせるプログラム Download PDFInfo
- Publication number
- JP4299033B2 JP4299033B2 JP2003092543A JP2003092543A JP4299033B2 JP 4299033 B2 JP4299033 B2 JP 4299033B2 JP 2003092543 A JP2003092543 A JP 2003092543A JP 2003092543 A JP2003092543 A JP 2003092543A JP 4299033 B2 JP4299033 B2 JP 4299033B2
- Authority
- JP
- Japan
- Prior art keywords
- journal
- transaction
- acquisition
- database
- identification information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は、複写元となるデータベース(以下、複写元データベース)を複写先となるデータベース(以下、複写先データベース)に複写(レプリケーション)する技術に関し、特に異なるプラットフォーム間でデータベースを共通化(コピー)する際に好適である。
【0002】
【従来の技術】
レプリケーションにおいて、データベースを更新するトランザクションによって発生するデータベース上の情報が更新されると、そのトランザクションによって更新されたデータ(以下、ジャーナルという)を複写元データベースから取得して、複写先データベースに配付する処理が必要となる。
【0003】
以下、従来技術に係わる、複写元データベースからジャーナルを取得し、そのジャーナルを複写先データベースに配付するジャーナル取得・配付システムについて説明する。図21に、従来技術に係わるジャーナル取得・配付システムの構成を示す。
【0004】
図21に示すジャーナル取得・配付システムは、コンピュータC1とコンピュータC2とを有する。まず、コンピュータC1の構成について説明する。コンピュータC1は、複写元データベースDBa及びDBbを備え、これらの複写元データベースは、データベース管理システム101(以下、DBMS)によって管理される。更に、コンピュータC1は、ジャーナル取得機構102、ジャーナル取得ファイル103及びジャーナル配付機構104を備える。ジャーナル取得ファイル103は、複写元データベースに対応して備えられる。図1の例の場合、ジャーナル取得ファイル103a及び103bが、それぞれ、複写元データベースDBa及びDBbに対応して備えられる。
【0005】
DBMS101は、トランザクションによって複写元データベースDBa及びDBbが更新されると、トリガーをジャーナル取得機構102に出力する。
ジャーナル取得機構102は、DBMS101から出力されたトリガーによって呼び出される。ジャーナル取得機構102は、複写元データベースDBa及びDBbから別々にジャーナルを取得し、それらのジャーナルをそれぞれ、ジャーナル取得ファイル103a及び103bに書き込む。ジャーナル配付機構104は、ジャーナル取得ファイル103a及び103bに書き込まれたジャーナルを、複写先データベースを備えるコンピュータC2に配付する。
【0006】
次に、コンピュータC2の構成について説明する。コンピュータC2は、複写先データベースDB1及びDB2、並びに、配付されたジャーナルを格納するジャーナル利用ファイル201a及び201bを備える。ジャーナル利用ファイル201a及び201bは、それぞれ、ジャーナル取得ファイル103a及び103bに対応する。コンピュータC1内のジャーナル配付機構104は、ジャーナル取得ファイル103aに書き込まれたジャーナルを、更新された順に並べて1ファイルにまとめてから一括して、ジャーナル利用ファイル201aに書き込む。同様にして、ジャーナル配付機構104は、ジャーナル取得ファイル103bに書き込まれたジャーナルを、ジャーナル利用ファイル201bに書き込む。
【0007】
ジャーナル利用ファイル201a及び201bにジャーナルが書き込まれると、複写先データベースDB1及びDB2に、配付された単位ごとにジャーナルを複写する。以下、このジャーナルを複写先データベースに複写することをジャーナルの反映という。
【0008】
次に、図22を用いて、図21に示すシステムにおけるジャーナルのやり取りについて説明する。図22に、トランザクションT1によって複写元データベースDBaのカラム1及びDBbのカラム1が更新され、トランザクションT2によって複写元データベースDBaのカラム2及びDBbのカラム2が更新される場合におけるジャーナルのやり取りの流れを示す。
【0009】
トランザクションT1及びT2によって複写元データベースDBa及びDBbが更新されると、トリガーによってジャーナル取得機構102が呼び出される。ジャーナル取得機構102は、複写元データベースDBa内のカラム1及び2からジャーナルを取得し、それらをジャーナル取得ファイル103aに書き込む。同様に、ジャーナル取得機構102は、複写元データベースDBb内のカラム1及び2からジャーナルを取得し、それらをジャーナル取得ファイル103bに書き込む。
【0010】
ジャーナル配付機構104は、ジャーナル取得ファイル103aから、複写元データベースDBa内のカラム1及び2のジャーナルを更新された順に並べて1つのファイルにまとめて取得し、これらジャーナルを一括してジャーナル利用ファイル201aに書き込む。同様に、ジャーナル配付機構104は、ジャーナル取得ファイル103bから、複写元データベースDBb内のカラム1及び2のジャーナルを更新された順に並べて1つのファイルにまとめて取得し、これらジャーナルを一括してジャーナル利用ファイル201bに書き込む。
【0011】
次に、ジャーナル利用ファイル201aに、複写元データベースDBa内のカラム1及び2のジャーナルを一括して複写先データベースDB1に反映するトランザクションT3が行われる。同様に、ジャーナル利用ファイル201bに、複写元データベースDBb内のカラム1及び2のジャーナルを一括して複写先データベースDB2に反映するトランザクションT4が行われる。
【0012】
これらの一連の処理によって、トランザクションによる複写元データベースDBa及びDBbの更新結果は、複写先データベースDB1及びDB2に反映される(例えば、非特許文献1参照)。
【0013】
【非特許文献1】
”FUJITSU Linkexpress Replication option説明書”、[online]、[平成15年2月12日検索]、インターネット、<URL:http://software.fujitsu.com/jp/manual/s/d23pdp4ha/j2x03641/01/>
【0014】
【発明が解決しようとする課題】
しかし、上記の従来技術によれば、複数の複写元データベースの複製を作成する場合、複写元データベース別に(或いは複写元データベース単位に)ジャーナルを取得して、複写元データベース別に備えられたジャーナル利用ファイルに、それらジャーナルを配付する。しかし、1つのトランザクション(業務)で複数の複写元データベースを更新している場合、複製の作成過程において、ある複写先データベースについては複写元データベースの更新結果を反映したが、他の複写先データベースについてはまだ反映がされていないという状態が一時的に生じる。例えば、図22の場合を例とすると、トランザクションT1は、複写元データベースDBa及びDBbを更新している。トランザクションT3及びT4によって、この更新によって発生したジャーナルを複写先データベースに反映される。この反映の途中に、トランザクションT3は行われたが、トランザクションT4はまだ行われていない場合、つまり、複写先データベースDB1への反映は完了したが、複写先データベースDB2への反映が完了していないという状態が一時的に生じる。
【0015】
このような状態で複写先データベースを参照する新たなトランザクションを実行しようとすると、複写元データベースを更新するトランザクションの結果が完全に反映されていないため、新たなトランザクションに処理を継続することが困難となるという問題が生じる。
【0016】
そのため、従来技術によれば、以下の方法を用いて、データベース間の整合性を維持し、新たなトランザクションに処理を継続することができるようにしている。まず、第1の方法について説明する。第1の方法では、複数のデータベースを利用するアプリケーションを実行する場合には、データベースを更新する際にレコードに更新日時を入れ、この更新日時に基づいて複数のデータベース間の整合性を保つ。
【0017】
以下、図23を用いて、この第1の方法の手順について詳しく説明する。図23において、図22と同じく、トランザクションT1によって複写元データベースDBaのカラム1及びDBbのカラム1が更新され、トランザクションT2によって複写元データベースDBaのカラム2及びDBbのカラム2が更新されると仮定する。更新の際には、各レコードには、更新日時が付加される。図22を用いて説明したようにしてジャーナルが取得・配付された後、更新先データベースDB1のカラム1及びカラム2にジャーナルを反映するトランザクションT3、及び更新先データベースDB2のカラム1及びカラム2にジャーナルを反映するトランザクションT4が行われる。ここで、更に、複写先データベースDB1のカラム1及びDB2のカラム1を参照する新たなトランザクションT5が実行されると仮定する。この場合、第1の方法によれば、データベースDB1及びDB2の間でのデータの整合性を確認するために、トランザクションT5において、参照した各カラム内のレコードに付加された更新日時が比較される。従って、例えば、トランザクションT3が行われたが、まだトランザクションT4が行われていない状態でトランザクションT5を実行した場合には、データベースDB1及びDB2の間でのデータの整合性が保たれていないため、トランザクションT5はキャンセルされる。
【0018】
しかし、この第1の方法によれば、更新日時に基づいてデータベース間の整合性を確認するための論理処理が複雑であるという問題があった。
次に、データベース間の整合性を維持するための第2の方法について説明する。第1の方法では、1つのトランザクションによって、1つのデータベースにジャーナルを反映していたが、第2の方法によれば、1つのトランザクションによって、複数のデータベースにジャーナルを反映する。例えば、図23を用いて説明した場合を例とすると、第1の方法ではトランザクションT3及びT4によって行われる処理を、第2の方法ではトランザクションT6によって一括して行われる。従って、第2の方法によると、第1の方法で行われていた複雑な論理処理は不要となる。
【0019】
以下、図24を用いて、この第2の方法の手順について詳しく説明する。図24は、図22及び図23と同様に、それぞれ、複数のデータベースを更新するトランザクションT1及びT2を仮定する。図22を用いて説明したようにしてジャーナルが取得・配付された後、第2の方法によれば、更新先データベースDB1及びDB2にジャーナルを、一括して反映するトランザクションT6が行われる。ここで、更に、複写先データベースDB1及びDB2内の更新されたカラムを参照する新たなトランザクションT7が実行されると仮定する。排他制御によってデータベースDB1及びDB2を参照できないため、トランザクションT6による反映処理が行われている最中は、トランザクションT7は完了しない。従って、第2の方法の場合も、データベース間の整合性を維持することができる。
【0020】
しかし、第2の方法では一括してジャーナルを反映するため、大量のジャーナルを反映する際には、反映処理にかかる時間が長くなる。その間、複写先データベースを参照することはできないため、複写先データベースを参照するトランザクションの処理時間に遅延が発生したり、最悪の場合、そのトランザクションがタイムアウトのために異常終了したりするという問題があった。
【0021】
以上の問題に鑑み、複数の複写元データベースの複製を作成する場合に、複雑な論理処理や、トランザクションの処理時間の遅延を回避しつつも、データベース間の整合性を維持することを可能とするレプリケーション技術を提供することが、本発明の解決しようとする課題である。
【0022】
【課題を解決するための手段】
上記課題を解決するために、本発明の1態様によれば、複写元データベースから更新結果であるジャーナルを取得し、複写先データベースに配付するジャーナル取得・配付装置において、前記複写元データベースから前記ジャーナルを取得するジャーナル取得手段と、取得した前記ジャーナルを、前記複写元データベースを更新するトランザクション単位に前記複写先データベースに配付するジャーナル配付手段とを備える。
【0023】
ジャーナル取得手段は、複写元データベースからジャーナルを取得し、ジャーナル配付手段は、ジャーナルをトランザクション単位に配付する。従来、複数の複写元データベースの複製を作成する場合、ジャーナルの配付は複写元データベース単位に行われていた。しかし、本発明の1態様によれば、ジャーナルの配付をトランザクション単位で行うことにより、データベース間の整合性を維持する。これにより、上記第1の方法で行われていた複雑な論理処理を不要とし、上記第2の方法で生じていたトランザクションの処理時間の遅延を回避することが可能となる。
【0024】
上記ジャーナル取得・配付装置は、前記ジャーナルを取得する際に、前記複写元データベースを更新するトランザクションを識別するトランザクション識別情報を獲得するトランザクション識別情報獲得手段を更に備え、前記ジャーナル配付手段は、前記トランザクション識別情報に基づいて、前記ジャーナルをトランザクション単位に配付することとしてもよい。
【0025】
なお、上記ジャーナル取得・配付装置は、複写元データベースからトランザクションがコミットしたことの通知を受けるか否かに応じて、異なる構成を持つこととしてもよい。まず、前者のコミットしたことの通知を受けない場合の構成について説明する。
【0026】
この場合、上記ジャーナル取得・配付装置は、前記複写元データベースが更新される回数をカウントするDB更新計数手段を更に備え、前記ジャーナル取得手段は、ジャーナルを配付する前に、前記カウント値及び前記トランザクション識別情報に基づいて、前記ジャーナルを並び替えることとしてもよい。
【0027】
また、DB更新計数手段を備える上記ジャーナル取得・配付装置は、前記カウント値と、前記カウント値を取得する際に取得した前記トランザクション識別情報を対応付けて格納するジャーナル管理情報格納手段と、前記ジャーナルと、前記ジャーナルを取得する際に取得された前記トランザクション識別情報とを対応付けて格納するジャーナル格納手段とを更に備え、所定のタイミングで、前記ジャーナル配付手段は、最も小さなカウント値に対応付けられたトランザクション識別情報を前記ジャーナル管理情報格納手段から取得し、前記ジャーナル格納手段に格納されたジャーナルのうち、前記ジャーナル管理情報手段から取得されたトランザクション識別情報に対応するジャーナルを、配付すべきジャーナルとして選択することとしてもよい。
【0028】
次に、後者のコミットしたことの通知を受ける場合の構成について説明する。この場合、上記ジャーナル取得・配付装置内のジャーナル取得手段は、前記複写元データベースを更新するトランザクションがコミットしたことの通知を受信し、前記通知及び、前記コミットしたトランザクションの前記トランザクション識別情報に基づいて、ジャーナルをトランザクション単位にまとめることとしてもよい。
【0029】
また、この場合、上記ジャーナル取得・配付装置は、前記ジャーナルを、前記ジャーナルを取得する際に取得した前記トランザクション識別情報に対応付けて格納するジャーナル一時格納手段を更に備え、前記ジャーナル取得手段は前記通知に基づいて、前記ジャーナル一時格納手段において、前記コミットしたトランザクションのトランザクション識別情報に対応付けられたジャーナルを、配付すべきジャーナルとして選択することとしてもよい。また、上記ジャーナル取得・配付装置は、前記選択されたジャーナルを格納するジャーナル格納手段を更に備え、前記ジャーナル配付手段は、所定のタイミングで、格納された順番で、前記ジャーナル格納手段からジャーナルを読み出して配付することとしてもよい。
【0030】
また、上記ジャーナル取得・配付装置において行われる各動作と同様の手順からなるジャーナル取得・配付方法によっても、上記ジャーナル取得・配付装置と同様の作用・効果が得られるため、上記課題を解決することが可能である。
【0031】
また、上記ジャーナル取得・配付方法によって行われる手順をコンピュータに行わせるコンピュータ・プログラムも、上記コンピュータ・プログラムをコンピュータに備えられたメモリに一旦格納させ、そのコンピュータにそのメモリから上記コンピュータ・プログラムを読み出させて実行させることにより、上記課題を解決する事が可能である。
【0032】
また、上記コンピュータ・プログラムを記録したコンピュータで読み取り可能な記録媒体から、そのプログラムをコンピュータに読み出させて実行させることによっても、上記課題を解決することができる。
【0033】
【発明の実施の形態】
以下、本発明の実施の形態について図面を用いて説明する。なお、同じ装置等には同じ参照番号をつけ、説明を省略する。
【0034】
図1に、第1実施形態に係わるジャーナル取得・配付装置の構成を示す。図1に示すように、ジャーナル取得・配付装置1は、DBMS2、ジャーナル取得機構3、DB更新カウンタ6、ジャーナル取得ファイル7、ジャーナル配付機構10を備える。また、複写元データベースに対応して、同数の複写先データベース(不図示)がジャーナルの配付先に存在する。なお、各図及び説明において、複写元データベースDBa及びDBbの2つが存在すると仮定しているが、これは説明のためであり、2以上の任意の数の複写元データベースを備えることが可能である。
【0035】
DBMS2は、複数の複写元データベースDBa、DBbを管理する。DBMS2は、トランザクションによって複写元データベースDBa及びDBbが更新されると、それをトリガーによってジャーナル取得機構3を呼び出す。また、DBMS2は、各トランザクションに、トランザクションを識別するトランザクション番号を、データベースを更新するプロセス単位に一意に割り振る。
【0036】
ジャーナル取得機構3は、DBMS2から呼び出されると、DBMS2からトランザクション番号及びジャーナルを取得し、それらをトランザクション別にまとめて、ジャーナル取得ファイル7に書き込む。ジャーナル取得ファイル7は、トランザクション番号に対応付けて、ジャーナルを格納する。以下、ジャーナル取得機構3及びジャーナル取得ファイル7の構成についてより詳しく説明する。
【0037】
図1に示すように、ジャーナル取得機構3は、トランザクション番号獲得部4及びジャーナル取得部5を備える。また、ジャーナル取得ファイル7は、ジャーナル管理テーブル8及びジャーナル格納テーブル9を備える。トランザクション番号獲得部4は、DBMS2からトランザクション番号を獲得する。更に、トランザクション番号獲得部4は、DB更新カウンタ6を1インクリメントした後、その値を獲得する。そして、トランザクション番号獲得部4は、トランザクション番号と、そのトランザクション番号を取得した際の最新のカウント値をジャーナル管理テーブル8に書き込む。図2に、ジャーナル管理テーブル8のデータ構造例を示す。図2に示すように、ジャーナル管理テーブル8内のレコードは、トランザクション番号とそれに対応するカウント値を含む。新たなトランザクション番号が取得されると、ジャーナル管理テーブル8にレコードが追加され、DB更新カウンタ6がインクリメントされるごとに、ジャーナル管理テーブル8内のレコードが更新されるか、又は、ジャーナル管理テーブル8内に新たなレコードが挿入される。
【0038】
ジャーナル取得部5は、複写元データベースからジャーナルを取得し、そのジャーナルを取得する際に獲得したトランザクション番号と共に、取得したジャーナルをジャーナル格納テーブル9に書き込む。図3に、ジャーナル格納テーブル9のデータ構造例を示す。図3に示すように、ジャーナル格納テーブル9内のレコードは、トランザクション番号と、それに対応するジャーナルを含む。新たなジャーナルが取得されると、ジャーナル格納テーブル9にレコードが追加される。
【0039】
本発明によれば、ジャーナルの配付はジャーナル取得側のトランザクション単位に行われるため、ジャーナル取得ファイル7は、複写元データベースに対応して備えられる必要はない。
【0040】
DB更新カウンタ6は、ジャーナル取得・配付装置内で一意であり、データベースベースが更新されるごとにインクリメントされる。DB更新カウンタ6は、例えば、ジャーナル取得・配付装置1を実現するコンピュータに備えられたメモリ上に配置される。
【0041】
ジャーナル配付機構10は、ジャーナル利用ファイル12を介してジャーナルを複写先データベースDB1及びDB2に配付する。ジャーナル配付機構10は、ジャーナル配付部11を備える。ジャーナル配付部11は、ジャーナル管理テーブル8を参照しながら、複写元データベースを更新する際のトランザクション別に、ジャーナル格納テーブル9からジャーナルを読み出してジャーナル利用ファイル12に書き込む。ジャーナル利用ファイル12に書き込まれたジャーナルは、ジャーナルを反映するトランザクションによって、複写先データベースDB1及びDB2に書き込まれる。ジャーナルの反映は、複写元データベースを更新する際のトランザクション(つまり、ジャーナル取得側のトランザクション)別に行われる。
【0042】
ジャーナル利用ファイル12は、配付されたジャーナルを格納する。従来技術によれば、ジャーナルの配付は複写元データベース単位に行われていたため、ジャーナル利用ファイルも、複写元データベースに対応して備えられていたが、本発明によれば、ジャーナルの配付は、ジャーナル取得側のトランザクション単位に行われるため、ジャーナル利用ファイル12は、複写元データベースに対応して備えられる必要はない。
【0043】
以下、図4を用いて、ジャーナル取得・配付装置を適用したシステムの構成について説明する。図4に示すように、ジャーナル取得・配付システムにおいて、コンピュータC1及びC2はネットワークを介して接続されている。
【0044】
コンピュータC1は、複写元データベースDBa及びDBb、これらの複写元データベースを管理するDBMS2、ジャーナル取得機構3、DB更新カウンタ6、ジャーナル取得ファイル7及び及びジャーナル配付機構10を備える。コンピュータC1は、ジャーナル取得・利用装置1に相当する。コンピュータC2は、ジャーナル利用ファイル12、複写先データベースDB1及びDB2を備える。
【0045】
以下、第1実施形態に係わるジャーナル取得・配付処理の手順について説明する。図4に示すジャーナル取得・配付システムにおけるジャーナルのやり取りの流れについて、図5を用いて説明する。まず、トランザクションT1及びT2によって、データベースDBa及びDBbが更新される。トランザクションT1及びT2によって行われる処理は以下の通りであり、(a)から(f)までの順序で行われる。
【0046】
(a):トランザクションT1によるデータベースDBaのカラム1の更新
(b):トランザクションT2によるデータベースDBaのカラム2の更新
(c):トランザクションT1によるデータベースDBbのカラム1の更新
(d):トランザクションT1の終了(コミット)、
データベースの内容の保証
(e):トランザクションT2によるデータベースDBbのカラム2の更新
(f):トランザクションT2の終了(コミット)、
データベースの内容の保証
データベースが更新されるごとに、DBMS2からのトリガーによってジャーナル取得機構3は呼び出される。ジャーナル取得機構3は、呼び出されるごとに、ジャーナル及びトランザクション番号をDBMS2から取得し、カウント値をDB更新カウンタ6から取得する。そして、ジャーナル取得機構3は、取得したカウント値及びトランザクション番号をジャーナル管理テーブル8に書き込み、ジャーナル及びトランザクション番号をジャーナル格納ファイル9に書き込む。
【0047】
DB更新カウンタ6は、データベースが更新されるごとに1インクリメントされる。従って、トランザクションT1が開始される当初、DB更新カウンタ6のカウント値が「0」であると仮定すると、(a)、(b)、(c)及び(e)の更新処理が行われる際に取得されるカウント値は、それぞれ、「1」、「2」、「3」及び「4」となる。(c)の処理はトランザクションT1の最後の処理であるため、トランザクションT1のトランザクション番号を「100」と仮定すると、ジャーナル管理テーブル8において、トランザクション番号「100」に対応するカウント値は最終的には「3」となる。同様に、(e)の処理はトランザクションT2の最後の処理であるため、トランザクションT2のトランザクション番号を「101」と仮定すると、ジャーナル管理テーブル8において、トランザクション番号「101」に対応するカウント値は最終的には「4」となる。
【0048】
ジャーナル配付機構10は、ジャーナル管理テーブル8からトランザクション番号を取得し、そのトランザクション番号と対応付けられたジャーナルをジャーナル格納テーブル9から取出してジャーナル利用ファイル12に配付する。なお、複数のトランザクション番号がジャーナル管理テーブル8に格納されている場合、最も小さなカウント値に対応するトランザクション番号から順番にこの処理を行う。例えば、図5に示すジャーナル取得ファイル7の場合、ジャーナル管理テーブル8内で最も小さなカウント値「3」に対応付けられているトランザクション番号は「100」であるため、ジャーナル格納テーブル9内でトランザクション番号「100」に対応付けられているジャーナル「DBaのカラム1の更新データ」及び「DBbのカラム1の更新データ」が先にジャーナル利用ファイル12に配付される。続いて、カウント値「4」に対応付けられているトランザクション番号「101」を有するトランザクションによって生じたジャーナル、つまり、「DBaのカラム2の更新データ」及び「DBbのカラム2の更新データ」が、ジャーナル利用ファイル12に配付される。このようにして、ジャーナルの配付は、ジャーナル取得側のトランザクション単位に行われる。
【0049】
ジャーナルがジャーナル利用ファイル12に配付されると、コンピュータC2において、ジャーナルが反映される。ジャーナルは、ジャーナル取得側のトランザクション毎に配付されるため、ジャーナルの反映も、ジャーナル取得側のトランザクション毎に行われる。図5に示す例の場合、ジャーナルを反映するトランザクションは、2つに分けられる。前者は、ジャーナル利用ファイル12から「DBaのカラム1の更新データ」を読み込んで、複写先データベースDB1を更新し、更に、「DBbのカラム1の更新データ」を読み込んで、複写先データベースDB2を更新する処理である。後者は、ジャーナル利用ファイル12から「DBaのカラム2の更新データ」を読み込んで、複写先データベースDB1を更新し、更に、「DBbのカラム2の更新データ」を読み込んで、複写先データベースDB2を更新する処理である。
【0050】
以下、図6から図11を用いて第1実施形態に係わるジャーナル取得・配付処理について詳しく説明する。まず、図6から図9を用いてジャーナル取得処理について説明する。ジャーナル取得処理において、ジャーナル取得機構3は、複写元データベースからジャーナルを取得する。図6は、ジャーナル取得処理を示すフローチャートである。図6に示す処理は、DBMS2からのトリガーによってジャーナル取得機構3が呼び出される毎に行われる。
【0051】
図6に示すように、まず、DBMS2からのトリガーによってジャーナル取得機構3が呼び出されると、ジャーナル取得部5は、ジャーナルをDBMS2から受け取る(ステップS1)。続いて、トランザクション番号獲得部4は、DBMS2からトランザクション番号を獲得する(ステップS2)。さらに、トランザクション番号獲得部4は、DB更新カウンタ6のカウント値を1インクリメントした後、そのカウント値を獲得する(ステップS3)。トランザクション番号獲得部4は、獲得したトランザクション番号をキーとしてジャーナル管理テーブル8を検索し(ステップS4)、そのトランザクション番号を持つレコードがジャーナル管理テーブル8に格納されているか否か判定する(ステップS5)。
【0052】
そのトランザクション番号を持つレコードがジャーナル管理テーブル8に格納されている場合(ステップS5:Yes)、トランザクション番号獲得部4は、そのレコードに含まれるカウント値を、ステップS3で獲得したカウント値に更新し(ステップS6)、ステップS8に進む。そのトランザクション番号を持つレコードがジャーナル管理テーブル8に格納されていない場合(ステップS5:No)、トランザクション番号獲得部4は、そのトランザクション番号と、ステップS3で獲得したカウント値を有するレコードをジャーナル管理テーブル8に挿入し(ステップS7)、ステップS8に進む。ステップS8において、ジャーナル取得部5は、ステップS1で取得したジャーナルと、ステップS2で獲得したトランザクション番号を有するレコードをジャーナル格納テーブル9に挿入し、処理を終了する。
【0053】
以下、図7から図9を用いて、上記のジャーナル取得処理について具体的に説明する。この説明において、説明を分かりやすくするために、図5を用いてジャーナルのやり取りの流れを説明する際の仮定と同じ仮定を用いる。
【0054】
まず、図7を用いて、トランザクションT1中の(a)の更新処理を行った際のジャーナル取得処理について説明する。トランザクションT1中の(a)の更新処理によって複写元データベースDBaのカラム1が更新されると(矢印A1)、DBMS2からのトリガーによってジャーナル取得機構3が呼び出される(矢印A2)。ジャーナル取得機構3は、DBMS2からトランザクションT1のトランザクション番号「100」を獲得する(矢印A3)。更に、ジャーナル取得機構3は、DB更新カウンタ6のカウント値を「0」から1インクリメントして「1」とし、そのカウント値「1」を取得する(矢印A4)。ジャーナル取得機構3は、ジャーナル管理テーブル8に、トランザクション番号「100」及びカウント値「1」を含むレコードを挿入し(矢印A5)、ジャーナル格納テーブル9に、トランザクション番号「100」及び「データベースDBaのカラム1の更新データ」を含むレコードを挿入する(矢印A6)。
【0055】
次に、トランザクションT2中の(b)の更新処理によって発生したジャーナルの取得処理が行われる。この処理は、上記と同様であるため、説明を省略する。なお、この場合、トランザクション番号「101」が獲得され、カウント値「2」が取得される。この結果、ジャーナル管理テーブル8には、トランザクション番号「101」及びカウント値「2」を含むレコードが挿入され、ジャーナル格納テーブル9には、トランザクション番号「101」及び「データベースDBaのカラム2の更新データ」を含むレコードが挿入される。
【0056】
次に、図8を用いて、トランザクションT1中の(c)の更新処理を行った際のジャーナル取得処理について説明する。(c)の更新処理によって複写元データベースDBbのカラム1が更新されると(矢印A6)、DBMS2からのトリガーによってジャーナル取得機構3が呼び出される(矢印A7)。ジャーナル取得機構3は、DBMS2からトランザクションT1のトランザクション番号「100」を獲得する(矢印A8)。この(c)の更新処理の前には、トランザクションT2内の(b)の更新処理が行われている。(b)の更新処理についてのジャーナル取得処理によって、DB更新カウンタ6のカウント値は、「2」になっている。ジャーナル取得機構3は、DB更新カウンタ6のカウント値を「2」から更に1インクリメントして「3」とし、そのカウント値「3」を取得する(矢印A9)。
【0057】
ジャーナル管理テーブル8には、既に、トランザクション番号「100」を有するレコードが格納されているため、ジャーナル取得機構3は、そのレコード内のカウント値「1」を「3」に更新する(矢印A10)。更に、ジャーナル取得機構3は、ジャーナル格納テーブル9に、トランザクション番号「100」及び「データベースDBbのカラム1の更新データ」を含むレコードを挿入する(矢印A11)。
【0058】
この(c)の更新処理の後、トランザクションT1は、終了する。続いて、トランザクションT2中の(e)の更新処理が行われる。最後に、図9を用いて、トランザクションT2中の(e)の更新処理を行った際のジャーナル取得処理について説明する。(e)の更新処理によって複写元データベースDBbのカラム2が更新されると(矢印A12)、DBMS2からのトリガーによってジャーナル取得機構3が呼び出される(矢印A13)。ジャーナル取得機構3は、DBMS2からトランザクションT2のトランザクション番号「101」を獲得する(矢印A14)。更に、ジャーナル取得機構3は、DB更新カウンタ6のカウント値を「3」から更に1インクリメントして「4」とし、そのカウント値「4」を取得する(矢印A15)。
【0059】
ジャーナル管理テーブル8には、既に、トランザクション番号「101」を有するレコードが格納されているため、ジャーナル取得機構3は、そのレコード内のカウント値「2」を「4」に更新する(矢印A16)。更に、ジャーナル取得機構3は、ジャーナル格納テーブル9に、トランザクション番号「101」及び「データベースDBbのカラム2の更新データ」を含むレコードを挿入する(矢印A17)。
【0060】
このようにして、トランザクション中の更新処理によって生じたジャーナルを取得すると、次に、ジャーナルの配付処理が行われる。ジャーナル配付処理において、ジャーナル配付機構10は、ジャーナル取得ファイル7に格納されたジャーナルをジャーナル利用ファイル12に配付する。以下、図10及び図11を用いて、ジャーナル配付処理について説明する。図10は、ジャーナルの配付処理を示すフローチャートである。図10に示す処理は、原則として、一定の時間間隔で行われる。もちろん、メンテナンス時等に、不定期に行われる事としても良い。
【0061】
まず、図10に示すように、一定間隔でジャーナル配付機構10が起動されると、ジャーナルを配付するトランザクションが開始される。まず、ジャーナル配付機構10内のジャーナル配付部11は、ジャーナル管理テーブル8から、最も小さなカウント値を有するレコードを検索し(ステップS11)、該当するレコードがジャーナル管理テーブル8に格納されているか否か判定する(ステップS12)。ジャーナル管理テーブル8にレコードが1つも格納されていない場合は(ステップS12:No)、ジャーナルを配付するトランザクションを終了し、ステップS17に進む。ステップS17において、更に一定時間待つ。
【0062】
ジャーナル管理テーブル8に該当するレコードが格納されている場合(ステップS12:Yes)、ジャーナル配付部11は、そのレコードに含まれるトランザクション番号と同じトランザクション番号を有するジャーナル格納テーブル9内のレコードから、ジャーナルを取得する(ステップS13)。該当するジャーナルがジャーナル格納テーブル9内にある場合(ステップS14:Yes)、ジャーナル配付部11は、そのジャーナルを読み出して、ジャーナル利用ファイル12に出力する(ステップS15)。該当するジャーナルがジャーナル格納テーブル9内にない場合(ステップS14:No)、ステップS15を行わずにステップS16に進む。
【0063】
ステップS16において、ジャーナル配付部11は、ジャーナル管理テーブル8から、処理したトランザクション番号を有するレコードをジャーナル管理テーブル8及びジャーナル格納テーブル9から削除し、ステップS11にもどる。
【0064】
このようにして、ジャーナル取得ファイル7内のジャーナルは、ジャーナル利用ファイル12に配付される。ジャーナル利用ファイル12に書き込まれたジャーナルは、ジャーナルを反映するトランザクションによって、複写先データベースDB1及びDB2に書き込まれる。上記のように、ジャーナルの配付は、ジャーナル取得側のトランザクション別に行われるため、ジャーナルの反映も、ジャーナル取得側のトランザクション別に行われる。
【0065】
以下、ジャーナル取得ファイル7に、図11に示すようなデータが格納されている場合にジャーナルを配付する処理について具体的に説明する。なお、この説明は、図5を用いてジャーナルのやり取りの流れを説明する際の仮定と同じ仮定に基づいている。
【0066】
まず、ジャーナル配付機構10は、ジャーナル管理テーブル8から最も小さなカウント値「3」を有するレコードを取得する(矢印A21)。このレコードには、トランザクション番号「100」が含まれる。従って、ジャーナル配付機構10は、ジャーナル格納テーブル9から、トランザクション番号「100」を有するレコードを取得し(矢印A22)、そのレコードに含まれるジャーナルをジャーナル利用ファイル12に書き込む(矢印A23)。なお、トランザクション番号「100」に対応するトランザクションT1において、(a)及び(c)の更新処理によって「データベースDBaのカラム1の更新データ」及び「データベースDBbのカラム1の更新データ」が生じている。従って、この場合、「データベースDBaのカラム1の更新データ」及び「データベースDBbのカラム1の更新データ」がジャーナル利用ファイル12に書き込まれる。
【0067】
最後に、ジャーナル配付機構10は、トランザクション番号「100」を有するレコードをジャーナル管理テーブル8及びジャーナル格納テーブル9から削除する(矢印A24、A25及びA26)。
【0068】
次に、第2実施形態について説明する。第1実施形態において、DBMS2からトランザクションの処理が正常に終了したこと(コミット)の通知がジャーナル取得機構3に対して行われない場合について説明した。以下、第2実施形態として、トランザクションがコミットされたことの通知がDBMS2からジャーナル取得機構3に行われる場合について説明する。
【0069】
図12に、第2実施形態に係わるジャーナル取得・配付装置の構成を示す。図12に示すように、第2実施形態に係わるジャーナル取得・配付装置20の構成は、第1実施形態に係わるジャーナル取得・配付装置1とほぼ同様である。両者で異なる点は、第1実施形態に係わるジャーナル取得・配付装置1は、DB更新カウンタ6及びジャーナル管理テーブル8を備えていたが、第2実施形態に係わるジャーナル取得・配付装置20は、これらの代わりに、ジャーナル格納領域21を備えることである。
【0070】
第2実施形態に係わるジャーナル取得・配付装置20を構成する各部の動作も、基本的には第1実施形態と同様であるため、両者の相違点に重点をおいて説明する。
【0071】
DBMS2は、複写元データベースDBa及びDBbが更新される毎に、トリガーによってジャーナル取得機構3を呼び出し、ジャーナルをジャーナル取得機構3に出力する。更に、DBMS2は、トランザクションが終了する毎に、トリガーによってジャーナル取得機構3を呼び出し、応答としてジャーナル取得機構3から終了したトランザクションに係わるジャーナルが格納されている格納領域の通知を受ける。DBMS2は、その格納領域内のジャーナルをジャーナル格納テーブル9に挿入する。
【0072】
ジャーナル取得部5がDBMS2からジャーナルを取得した際、トランザクション番号獲得部4は、DMBS2からトランザクション番号を獲得し、そのジャーナルとトランザクション番号をジャーナル格納領域21内に設定する。
【0073】
DBMS2からトランザクションの終了の通知を受けた際、トランザクション番号獲得部4はDMBS2からトランザクション番号を獲得し、ジャーナル格納領域21内で、そのトランザクション番号に対応する格納領域をDBMS2に通知する。
【0074】
ジャーナル配付機構10は、原則的に一定時間間隔ごとに起動される。起動されると、ジャーナル配付機構10は、ジャーナル格納テーブル9に格納されたジャーナルをジャーナル利用ファイル12に出力することにより、ジャーナルを配付する。
【0075】
ジャーナル格納領域21は、トランザクション番号別にジャーナルを格納する。ジャーナル格納領域21は、例えば、コンピュータのメモリ上に配置される。図13に、ジャーナル格納領域21のデータ構造例を示す。図13に示すように、ジャーナル格納領域21は、トランザクション番号別にジャーナルを格納する格納領域を備える。
【0076】
次に、第2実施形態に係わるジャーナル取得・配付装置を適用したシステムの構成について説明する。このシステムは、図4に示すジャーナル取得・配付システムと同様に、互いにネットワークを介して接続されているコンピュータC1及びC2を備える。第2実施形態では、第1実施形態の場合と、コンピュータC1の構成が若干異なる。第2実施形態の場合、コンピュータC1は、複写元データベースDBa及びDBb、これらの複写元データベースを管理するDBMS2、ジャーナル取得機構3、ジャーナル取得ファイル7、ジャーナル配付機構10及ジャーナル格納領域21を備える。コンピュータC2の構成は第1実施形態と同様である。
【0077】
以下、第2実施形態に係わるジャーナル取得・配付処理の手順について説明する。まず、ジャーナル取得・配付システムにおけるジャーナルのやり取りの流れの概要について、図14を用いて説明する。以下の説明において、第1実施形態と同様に、トランザクションT1によって、複写元データベースDBa及びDBbのカラム1が更新され、トランザクションT2によって複写元データベースDBa及びDBbのカラム2が更新されると仮定する。
【0078】
第2実施形態に係わるシステムでは、DBMS2は、処理(a)、(b)、(c)及び(e)によってデータベースが更新されるごとに、トリガーによってジャーナル取得機構3を呼び出し、さらに、ジャーナルをジャーナル取得機構3に出力する。ジャーナル取得機構3は、ジャーナル及びトランザクション番号をDBMS2から取得し、取得したトランザクション番号に対応する格納領域をジャーナル格納領域21内に獲得し、取得したジャーナル及びトランザクション番号をその格納領域に書き込む。例えば、トランザクションT1の(a)の更新処理によってデータベースDBaのカラム1が更新されると、ジャーナル取得機構3は、「DBaのカラム1の更新データベース」及びトランザクションT1のトランザクション番号「100」を取得し、ジャーナル格納領域21に「DBaのカラム1の更新データベース」及びトランザクションT1のトランザクション番号「100」を書き込む。(b)、(c)及び(e)の更新処理の場合も、同様に処理される。
【0079】
また、DBMS2は、(d)及び(f)においてトランザクションが終了するごとに、トリガーによってジャーナル取得機構3を呼び出す。例えば、(d)においてトランザクションT1が終了すると、ジャーナル取得機構3は、トランザクションT1のトランザクション番号「100」をDBMS2から取得し、ジャーナル格納領域21内で、そのトランザクション番号「100」に対応する格納領域をDBMS2に通知する。DBMS2は、通知に基づいて、そのジャーナル格納領域21からトランザクション番号「100」を有するジャーナルを全て読み出して、ジャーナル格納テーブル9に挿入する。これにより、ジャーナル格納テーブル9には、トランザクションT1に係わるジャーナルが全て書き込まれる。(f)においてトランザクションT2が終了した場合も、同様に処理される。
【0080】
ジャーナル配付機構10は、原則的に一定時間間隔ごとに起動される。起動されると、ジャーナル配付機構10は、ジャーナル格納テーブル9に格納されたジャーナルをジャーナル利用ファイル12に出力することにより、ジャーナルを配付する。図14に示すように、ジャーナル格納テーブル9には、ジャーナル取得側のトランザクション別にジャーナルが書き込まれている。従って、ジャーナル格納テーブル9に格納されている順にジャーナルをジャーナル利用ファイル12に配付すると、ジャーナルは、ジャーナル取得側のトランザクション単位に配付される。ジャーナルを反映するトランザクションは、第1実施形態と第2実施形態は同じであるため、説明を省略する。
【0081】
図15から図17を用いて第2実施形態に係わるジャーナル取得・配付処理について詳しく説明する。まず、図15及び図16を用いてジャーナル取得処理について説明する。図15は、データベースが更新(データの変更、削除、追加)された場合のジャーナル取得処理を示すフローチャートである。図15に示す処理は、DBMS2からのトリガーによってジャーナル取得機構3が呼び出される毎に行われる。
【0082】
図15に示すように、まず、DBMS2からのトリガーによってジャーナル取得機構3が呼び出されると、ジャーナル取得部5は、データベースの更新によって出力されるジャーナルをDBMS2から受け取る(ステップS21)。続いて、トランザクション番号獲得部4は、DBMS2からトランザクション番号を獲得する(ステップS22)。トランザクション番号獲得部4は、獲得したトランザクション番号に対応する格納領域を、ジャーナル格納領域21から検索し(ステップS23)、そのトランザクション番号に対応する格納領域がジャーナル格納領域21内にあるか否か判定する(ステップS24)。
【0083】
該当する格納領域がジャーナル格納領域21に存在する場合(ステップS24:Yes)、トランザクション番号獲得部4は、その格納領域に、ステップS21で取得したジャーナル及びステップS22で獲得したトランザクション番号を設定し(ステップS26)、処理を終了する。該当する格納領域がジャーナル格納領域21に存在しない場合(ステップS24:No)、そのトランザクション番号に対応する格納領域をジャーナル格納領域21内に獲得した後に(ステップS25)、ステップS26を行い、処理を終了する。
【0084】
図16は、トランザクションが終了した場合のジャーナル取得処理を示すフローチャートである。図16に示す処理も、DBMS2からのトリガーによってジャーナル取得機構3が呼び出される毎に行われる。
【0085】
図16に示すように、まず、DBMS2からのトリガーによってジャーナル取得機構3が呼び出されると、トランザクション番号獲得部4は、DBMS2からトランザクション番号を獲得する(ステップS31)。続いて、トランザクション番号獲得部4は、獲得したトランザクション番号に対応する格納領域を、ジャーナル格納領域21から検索し(ステップS32)、そのトランザクション番号に対応する格納領域がジャーナル格納領域21内にあるか否か判定する(ステップS33)。
【0086】
該当する格納領域がジャーナル格納領域21に存在する場合(ステップS33:Yes)、トランザクション番号獲得部4は、その格納領域をDBMS2に通知する(ステップS34)。DBMS2は、通知された格納領域からそのトランザクション番号に対応するジャーナルを取得し、トランザクション番号と取得したジャーナルをジャーナル格納テーブル9に挿入する(ステップS35)。その後、処理を終了する。一方、該当する格納領域がジャーナル格納領域21に存在しない場合(ステップS33:No)、ステップS34及びS35を行わなわずに処理を終了する。
【0087】
このようにして、ジャーナル取得機構3は、ジャーナル取得側のトランザクション毎に、ジャーナルを取得する。
次に、図17を用いて、ジャーナル配付処理について説明する。図17は、ジャーナルの配付処理を示すフローチャートである。図17に示す処理は、原則として、一定の時間間隔で行われる。
【0088】
まず、図17に示すように、一定間隔でジャーナル配付機構10が起動されると、ジャーナルを配付するトランザクションが開始される。まず、ジャーナル配付機構10内のジャーナル配付部11は、ジャーナル格納テーブル9からジャーナルを先に格納された順に読み込む(ステップS41)。読み込むべきレコードがない場合(ステップS42:No)、ステップS45に進む。ステップS45において、更に一定時間間隔待つ。
【0089】
レコードを読み込む事ができた場合(ステップS42:Yes)、ジャーナル配付部11は、そのレコード中のジャーナルをジャーナル利用ファイル12に出力する(ステップS43)。続いて、ジャーナル配付部11は、読み込んだレコードをジャーナル格納テーブル9から削除し(ステップS44)、ステップS41に戻る。
【0090】
このようにして、ジャーナル取得ファイル7内のジャーナルは、ジャーナル利用ファイル12に配付される。上記の説明から、第2実施形態によっても、ジャーナルの配付は、ジャーナル取得側のトランザクション別に行われることがわかる。ジャーナルの配付は、ジャーナル取得側のトランザクション別に行われるため、当然、ジャーナルの反映も、ジャーナル取得側のトランザクション別に行われる。
【0091】
図18に、ジャーナル取得・配付装置の応用例を示す。図18では、ジャーナル取得・配付装置を、本社及びその本社によって管理される各営業店に配置されるサーバに採用している。各営業店に配置されるサーバ(以下、営業店サーバ)は、全社共通の顧客に関する情報を格納する全社顧客情報データベース、営業店別の契約情報を格納する営業店契約情報データベース、DBMS(図中省略)及びジャーナル取得・配付装置を備える。営業店サーバ内のジャーナル取得・配付装置は、営業店契約情報データベースを複写元データベースとし、本社に設置されるサーバ(以下、本社サーバ)内の全社契約情報データベースを複写先データベースとする。従って、各営業店サーバ内の営業店契約情報データベースが更新されると、その更新処理によって生じたジャーナルが本店サーバ内の全社契約情報データベースに配付される。これにより、本社は、常に、各営業店の最新の契約情報を取得することができる。
【0092】
一方、本社サーバは、全社顧客情報データベース、全ての営業店の契約情報を格納する全社契約情報データベース、DBMS及び、ジャーナル取得・配付装置を備える。本社サーバ内のジャーナル取得・配付装置は、本社サーバ内の全社顧客情報データベースを複写元データベースとし、営業店サーバ内の全社顧客情報データベースを複写先データベースとする。従って、本社サーバ内の全社顧客情報データベースが更新されると、その更新処理によって生じたジャーナルが各営業店サーバ内の全社顧客情報データベースに配付される。これにより、各営業店は、常に最新の顧客情報を取得することができる。各営業店は、最新の顧客情報及び契約に基づいて、今までの営業成績を分析し、今後の営業戦略を立案する事が可能となる。
【0093】
なお、図18の営業店Aのように、各営業店サーバは、各種形態の端末とのあいだで情報をやり取りするアプリケーションサーバとしての機能を有することとしてもよい。
【0094】
上記のジャーナル取得・配付装置1及び20は、コンピュータを用いて構成することができる。図19に、コンピュータの構成図を示す。図19に示すようにコンピュータ30は、CPU31、メモリ32、入力装置33、出力装置34、外部記憶装置35、媒体駆動装置36、及びネットワーク接続装置37を備え、それらはバス38により互いに接続されている。
【0095】
メモリ32は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)等を含み、処理に用いられるプログラムとデータを格納する。コンピュータを用いて第1実施形態に係わるジャーナル取得・配付装置1を構成する場合、メモリ32は、ジャーナル取得機構3、DB更新カウンタ6及びジャーナル配付機構10によって行われる処理をコンピュータに行わせるための制御プログラムを特定のプログラムコードセグメントに格納する。また、コンピュータを用いて第2実施形態に係わるジャーナル取得・配付装置20を構成する場合、メモリ32は、ジャーナル取得機構3、及びジャーナル配付機構10によって行われる処理をコンピュータに行わせるための制御プログラムを特定のプログラムコードセグメントに格納し、さらに、ジャーナル格納領域21を実現する。
【0096】
CPU31は、メモリ32を利用して上述の制御プログラムを実行することにより、必要な処理を行う。
入力装置33は、例えば、キーボード、ポインティングデバイス、タッチパネル等であり、ユーザからの指示や情報の入力に用いられる。また、入力装置33は、出力装置34は、例えば、ディスプレイやプリンタ等であり、コンピュータのユーザへの問合わせ、処理結果等の出力に用いられる。
【0097】
外部記憶装置35は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置等である。外部記憶装置35は、ジャーナル取得・配付装置1又は20に備えられるジャーナル取得ファイル7、及びジャーナルの配付先となる装置に備えられるジャーナル利用ファイル12を実現する。なお、上述の制御プログラムを外部記憶装置35に保存しておき、必要に応じて、それらをメモリ32にロードして使用することもできる。
【0098】
媒体駆動装置36は、可搬記録媒体39を駆動し、その記録内容にアクセスする。可搬記録媒体39としては、メモリカード、メモリスティック、フレキシブルディスク、CD−ROM(Compact Disc Read Only Memory)、光ディスク、光磁気ディスク、DVD(Digital Versatile Disk)等、任意のコンピュータ読み取り可能な記録媒体が用いられる。この可搬記録媒体39に上述の制御プログラムを格納しておき、必要に応じて、それをコンピュータのメモリ32にロードして使用することもできる。
【0099】
ネットワーク接続装置37は、LAN、WAN等の任意のネットワーク(回線)を介して外部の装置を通信し、通信に伴うデータ変換を行う。また、必要に応じて、上述のプログラムを外部の装置から受け取り、それをコンピュータのメモリ32にロードして使用することもできる。
【0100】
図20は、図19のコンピュータへのプログラムのローディングを説明している。コンピュータ30にセンタ・サーバCを実現させるためのプログラムは、以下のようにしてコンピュータにロードする事ができる。
【0101】
まず、上述のプログラムを、コンピュータで読み取り可能な記録媒体39に予め記憶させておく。そして、図20に示すようにしてその記録媒体39からプログラムをコンピュータ30に読み出させて、そのコンピュータ30のメモリ32や外部記憶装置35に一旦格納させ、この格納されたプログラムをそのコンピュータの有するCPU31に読み出させる。
【0102】
また、プログラムやデータを提供するサーバ40が有するDB41から、ネットワークを介して、プログラムをダウンロードすることとしてもよい。この場合、例えば、サーバ40では、プログラムを表現するプログラム・データをプログラム・データ・シグナルに変換し、モデムを用いて変換されたプログラム・データ・シグナルを変調することにより伝送信号を得て、得られた伝送信号をネットワークに出力する。プログラムを受信するコンピュータ30では、モデムを用いて受信した伝送信号を復調することにより、プログラム・データ・シグナルを得て、得られたプログラム・データ・シグナルを変換することにより、プログラム・データを得る。なお、送信側のコンピュータと受信側のコンピュータの間を接続するネットワークがデジタル回線の場合、プログラム・データ・シグナルを通信することも可能である。
【0103】
以上、本発明の実施形態及び変形例について説明したが、本発明は上述した実施形態及び変形例に限定されるものではなく、その他の様々な変更が可能である。
【0104】
【発明の効果】
以上詳細に説明したように、本発明によれば、複数の複写元データベースをレの複製を作成する場合に、トランザクション単位でレプリケーションすることにより、複雑な論理処理や、トランザクションの処理時間の遅延を回避しつつも、データベース間の整合性を維持することが可能となる。
【図面の簡単な説明】
【図1】第1実施形態に係わるジャーナル取得・配付装置の構成図である。
【図2】ジャーナル管理テーブルのデータ構造例を示す図である。
【図3】ジャーナル格納テーブルのデータ構造例を示す図である。
【図4】第1実施形態に係わるジャーナル取得・配付システムの構成図である。
【図5】第1実施形態に係わるジャーナル取得・配付システムにおけるジャーナルのやり取りの流れの概要を説明する図である。
【図6】第1実施形態におけるジャーナル取得処理を示すフローチャートである。
【図7】第1実施形態におけるジャーナル取得処理を具体的に説明する図(その1)である。
【図8】第1実施形態におけるジャーナル取得処理を具体的に説明する図(その2)である。
【図9】第1実施形態におけるジャーナル取得処理を具体的に説明する図(その3)である。
【図10】ジャーナル配付処理を示すフローチャートである。
【図11】ジャーナル配付処理を具体的に説明する図である。
【図12】第2実施形態に係わるジャーナル取得・配付装置の構成図である。
【図13】ジャーナル格納領域のデータ構造例を示す図である。
【図14】第2実施形態に係わるジャーナル取得・配付システムにおけるジャーナルのやり取りの流れの概要を説明する図である。
【図15】第2実施形態におけるジャーナル取得処理を示すフローチャート(その1)である。
【図16】第2実施形態におけるジャーナル取得処理を示すフローチャート(その2)である。
【図17】第2実施形態におけるジャーナル配付処理を示すフローチャートである。
【図18】ジャーナル取得・配付装置の応用例を示す図である。
【図19】コンピュータの構成図である。
【図20】コンピュータへのデータ及びプログラムのローディングを説明する図である。
【図21】従来技術に係わるジャーナル取得・配付装置の構成図である。
【図22】従来技術に係わるジャーナル取得・配付システムにおけるジャーナルのやり取りの流れの概要を説明する図である。
【図23】従来技術に係わるジャーナル取得・配付システムにおける問題を説明する図(その1)である。
【図24】従来技術に係わるジャーナル取得・配付システムにおける問題を説明する図(その2)である。
【符号の説明】
1、20 ジャーナル取得・配付装置
2 DBMS
3 ジャーナル取得機構
4 トランザクション番号獲得部
5 ジャーナル取得部
6 DB更新カウンタ
7 ジャーナル取得ファイル
8 ジャーナル管理テーブル
9 ジャーナル格納テーブル
10 ジャーナル配付機構
11 ジャーナル配付部
12 ジャーナル利用ファイル
21 ジャーナル格納領域
30 コンピュータ
31 CPU
32 メモリ
33 入力装置
34 出力装置
35 外部記憶装置
36 媒体駆動装置
37 ネットワーク接続装置
38 バス
39 可搬記録媒体
40 サーバ
41 データベース
101 DBMS
102 ジャーナル取得機構
103 ジャーナル利用ファイル
104 ジャーナル配付機構
201 ジャーナル利用ファイル
DBa、DBb 複写元データベース
Db1、DB2 複写先データベース
S ステップ
Claims (3)
- コンピュータに、複写元データベースから更新結果であるジャーナルを取得し、複写先データベースに配付する制御を行わせるコンピュータ・プログラムであって、
前記複写元データベースから前記ジャーナルを取得し、
前記ジャーナルを取得する際に、前記複写元データベースを更新するトランザクションを識別するトランザクション識別情報を取得し、
前記複写元データベースが更新される回数をカウントしてカウント値を生成し、
前記カウント値と、前記カウント値を取得する際に取得した前記トランザクション識別情報を対応付けてジャーナル管理情報格納手段に格納し、
前記ジャーナルと、前記ジャーナルを取得する際に取得された前記トランザクション識別情報とを対応付けてジャーナル格納手段に格納し、
所定のタイミングで、最も小さなカウント値に対応付けられたトランザクション識別情報を前記ジャーナル管理情報格納手段から取得し、
前記ジャーナル格納手段に格納されたジャーナルのうち、前記ジャーナル管理情報手段から取得されたトランザクション識別情報に対応するジャーナルを、配付すべきジャーナルとして選択し、
前記トランザクション識別情報に基づいて、選択された前記ジャーナルを、前記複写元データベースを更新するトランザクション単位に前記複写先データベースに配付する、
ことを含む処理を前記コンピュータに行わせることを特徴とするコンピュータ・プログラム。 - コンピュータが、複写元データベースから更新結果であるジャーナルを取得し、複写先データベースに配付するジャーナル取得・配付方法であって、
前記複写元データベースから前記ジャーナルを取得し、
前記ジャーナルを取得する際に、前記複写元データベースを更新するトランザクションを識別するトランザクション識別情報を取得し、
前記複写元データベースが更新される回数をカウントしてカウント値を生成し、
前記カウント値と、前記カウント値を取得する際に取得した前記トランザクション識別情報を対応付けてジャーナル管理情報格納手段に格納し、
前記ジャーナルと、前記ジャーナルを取得する際に取得された前記トランザクション識別情報とを対応付けてジャーナル格納手段に格納し、
所定のタイミングで、最も小さなカウント値に対応付けられたトランザクション識別情報を前記ジャーナル管理情報格納手段から取得し、
前記ジャーナル格納手段に格納されたジャーナルのうち、前記ジャーナル管理情報手段から取得されたトランザクション識別情報に対応するジャーナルを、配付すべきジャーナルとして選択し、
前記トランザクション識別情報に基づいて、選択された前記ジャーナルを、前記複写元データベースを更新するトランザクション単位に前記複写先データベースに配付する、
ことを含むことを特徴とするジャーナル取得・配付方法。 - 複写元データベースから更新結果であるジャーナルを取得し、複写先データベースに配付するジャーナル取得・配付装置であって、
前記複写元データベースから前記ジャーナルを取得するジャーナル取得手段と、
前記ジャーナルを取得する際に、前記複写元データベースを更新するトランザクションを識別するトランザクション識別情報を取得する識別情報取得手段と、
前記複写元データベースが更新される回数をカウントしてカウント値を生成するカウンタと、
前記カウント値と、前記カウント値を取得する際に取得した前記トランザクション識別情報を対応付けて格納するジャーナル管理情報格納手段と、
前記ジャーナルと、前記ジャーナルを取得する際に取得された前記トランザクション識別情報とを対応付けて格納するジャーナル格納手段と、
所定のタイミングで、最も小さなカウント値に対応付けられたトランザクション識別情報を前記ジャーナル管理情報格納手段から取得し、前記ジャーナル格納手段に格納されたジャーナルのうち、前記ジャーナル管理情報手段から取得されたトランザクション識別情報に対応するジャーナルを、配付すべきジャーナルとして選択し、前記トランザクション識別情報に基づいて、選択された前記ジャーナルを、前記複写元データベースを更新するトランザクション単位に前記複写先データベースに配付するジャーナル配付手段と、
を備えることを特徴とするジャーナル取得・配付装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003092543A JP4299033B2 (ja) | 2003-03-28 | 2003-03-28 | ジャーナル取得・配付装置、ジャーナル取得・配付方法、その方法をコンピュータに行わせるプログラム |
US10/779,352 US20040193655A1 (en) | 2003-03-28 | 2004-02-13 | Journal obtaining-distributing apparatus, journal obtaining-distributing method, and program used to direct computer to use method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003092543A JP4299033B2 (ja) | 2003-03-28 | 2003-03-28 | ジャーナル取得・配付装置、ジャーナル取得・配付方法、その方法をコンピュータに行わせるプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004302662A JP2004302662A (ja) | 2004-10-28 |
JP4299033B2 true JP4299033B2 (ja) | 2009-07-22 |
Family
ID=32985364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003092543A Expired - Fee Related JP4299033B2 (ja) | 2003-03-28 | 2003-03-28 | ジャーナル取得・配付装置、ジャーナル取得・配付方法、その方法をコンピュータに行わせるプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20040193655A1 (ja) |
JP (1) | JP4299033B2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8639660B1 (en) * | 2005-08-10 | 2014-01-28 | Symantec Operating Corporation | Method and apparatus for creating a database replica |
US7818292B2 (en) * | 2007-04-05 | 2010-10-19 | Anil Kumar Nori | SQL change tracking layer |
US7870110B2 (en) * | 2008-02-27 | 2011-01-11 | International Business Machines Corporation | Method and system for generating a transaction-bound sequence of records in a relational database table |
EP2184688A1 (en) * | 2008-11-06 | 2010-05-12 | Amadeus s.a.s | Method of integrating in real time large volumes of updates in a database |
US8930499B2 (en) | 2010-07-09 | 2015-01-06 | International Business Machines Corporation | Data replication between software versions |
JP5597580B2 (ja) * | 2011-03-01 | 2014-10-01 | 三菱電機株式会社 | データベース管理装置及び情報配信システム及びデータベース管理方法及びプログラム |
JP5812512B2 (ja) * | 2011-05-10 | 2015-11-17 | 日本電気株式会社 | データベースシステム、マスタースレーブ管理方法およびマスタースレーブ管理プログラム |
US9280591B1 (en) * | 2013-09-20 | 2016-03-08 | Amazon Technologies, Inc. | Efficient replication of system transactions for read-only nodes of a distributed database |
US10423642B2 (en) * | 2015-06-12 | 2019-09-24 | International Business Machines Corporation | Aggregating modifications to a database for journal replay |
US11797569B2 (en) * | 2019-09-13 | 2023-10-24 | Pure Storage, Inc. | Configurable data replication |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6338092B1 (en) * | 1998-09-24 | 2002-01-08 | International Business Machines Corporation | Method, system and computer program for replicating data in a distributed computed environment |
US7290285B2 (en) * | 2000-06-30 | 2007-10-30 | Zinio Systems, Inc. | Systems and methods for distributing and viewing electronic documents |
US6668262B1 (en) * | 2000-11-09 | 2003-12-23 | Cisco Technology, Inc. | Methods and apparatus for modifying a database |
JP2003006020A (ja) * | 2001-06-26 | 2003-01-10 | Hitachi Ltd | 複製データベースアクセス装置とそのアクセス方法 |
-
2003
- 2003-03-28 JP JP2003092543A patent/JP4299033B2/ja not_active Expired - Fee Related
-
2004
- 2004-02-13 US US10/779,352 patent/US20040193655A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JP2004302662A (ja) | 2004-10-28 |
US20040193655A1 (en) | 2004-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10846277B1 (en) | Journaled tables in database systems | |
KR102307371B1 (ko) | 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치 | |
JP6033830B2 (ja) | 高可用性データを提供するためのシステム及び方法 | |
EP4254183A1 (en) | Transaction processing method and apparatus, computer device, and storage medium | |
US8782070B2 (en) | Data pattern for storing information, including associated version and audit information for use in data management | |
US10838935B2 (en) | Automating the logging of table changes in a database | |
KR101323500B1 (ko) | 데이터 웨어하우징을 위한 장치 및 방법 | |
CN103299267B (zh) | 用于执行多租户存储中的交叉存储连接的方法和系统 | |
KR100926880B1 (ko) | Dbms에서의 데이터 복제 방법 및 시스템 | |
US7321907B2 (en) | Method and system for managing multiple database storage units | |
US20170213209A1 (en) | Enterprise blockchains and transactional systems | |
JP2004295870A (ja) | アプリケーション定義のシステムにおける整合性ユニットのレプリケーション | |
US20130110873A1 (en) | Method and system for data storage and management | |
CN108475271A (zh) | 容器数据库的应用容器 | |
US11232099B2 (en) | Automatically aggregating data in database tables | |
JP4299033B2 (ja) | ジャーナル取得・配付装置、ジャーナル取得・配付方法、その方法をコンピュータに行わせるプログラム | |
WO2017156855A1 (en) | Database systems with re-ordered replicas and methods of accessing and backing up databases | |
Frank | Architecture for integration of distributed ERP systems and e‐commerce systems | |
CN118805171A (zh) | 用于数据库管理系统的数据库管理引擎 | |
US20190005082A1 (en) | Method and system for committing group atomic transaction in non-relational database | |
JP4390618B2 (ja) | データベース再編成プログラム、データベース再編成方法、及びデータベース再編成装置 | |
Simmons et al. | Pro SQL Server 2012 Administration | |
JP2003208346A (ja) | データベース更新情報の反映システムおよびそのためのプログラム | |
JP5733434B6 (ja) | データ統合装置、データ統合方法およびデータ統合プログラム | |
JP5733434B2 (ja) | データ統合装置、データ統合方法およびデータ統合プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060202 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20081209 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090106 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090303 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090414 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090416 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120424 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120424 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130424 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140424 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |