(57)【要約】【課題】複数データベース間のデータの整合性がとれている状態で、過去のデータを取得可能とする。【解決手段】トランザクション監視部１０１が、トランザクションの処理状況を監視し、データベース間で整合性が取れた時刻をＤＢ静止点記憶部１０５に記録する。リアルタイムの更新はプライマリＤＢのみ行い、プライマリＤＢの更新ログを更新ログ蓄積部１０６に蓄積する。更新ログ蓄積部１０６に蓄積されたログのうち、一定期間経過したものから順にセカンダリＤＢの更新を行うことにより、セカンダリＤＢの更新を遅延させて行う。過去データの取得要求があった場合に、セカンダリＤＢの更新処理を停止し、ＤＢ静止点記憶部１０５に記録された時刻であって、要求された時刻に最も近い時刻の更新ログを更新ログ蓄積部１０６から取得し、セカンダリＤＢのデータと更新ログ蓄積部１０６から取得した更新ログから過去データを作成する。【選択図】図１
2012234462.tif 000002
【特許請求の範囲】
【請求項１】
更新される第１のデータと、前記第１のデータの更新処理が完了してから所定時間が経過した後に前記第１のデータと同じ更新処理が行われる第２のデータとを管理するデータ管理装置であって、
前記第１のデータの更新処理が完了する度に、更新処理が完了した時刻を第１データ更新完了時刻として記憶する第１データ更新完了時刻記憶部と、
前記第１のデータの更新に用いられた更新データと、更新データによる前記第１のデータの更新時刻とを関連付けて記憶する更新データ記憶部と、
過去の時刻が指定時刻として指定され、指定時刻での第１のデータを生成するよう要求するデータ生成要求を入力する入力部と、
前記入力部により前記データ生成要求が入力された場合に、前記データ生成要求の前記指定時刻に基づき、前記第１データ更新完了時刻記憶部に記憶されている第１データ更新完了時刻の中から特定の第１データ更新完了時刻を選択第１データ更新完了時刻として選択し、更新時刻が選択第１データ更新完了時刻までの更新データと、前記第２のデータとを用いて、選択第１データ更新完了時刻での第１のデータを生成するデータ生成部とを有することを特徴とするデータ管理装置。
【請求項２】
前記データ生成部は、
前記指定時刻に最も近い第１データ更新完了時刻を選択することを特徴とする請求項１に記載のデータ管理装置。
【請求項３】
前記データ管理装置は、
前記更新データ記憶部に記憶されている更新データを用いて前記第１のデータと同じ更新処理が行われる第２のデータを管理し、
前記データ生成部は、
前記第２のデータの更新に最後に用いられた更新データの更新時刻よりも後の第１データ更新完了時刻であって、前記指定時刻に最も近い第１データ更新完了時刻を選択することを特徴とする請求項２に記載のデータ管理装置。
【請求項４】
前記データ生成部は、
前記第２のデータの更新に最後に用いられた更新データの更新時刻から選択第１データ更新完了時刻までの時間に更新時刻が含まれる更新データと、直近の更新の後の第２のデータとを用いて、選択第１データ更新完了時刻での第１のデータを生成することを特徴とする請求項１〜３のいずれかに記載のデータ管理装置。
【請求項５】
前記データ管理装置は、更に、
前記第１のデータに対する更新状況を監視し、前記第１のデータに対する更新処理が完了した時刻を第１データ更新完了時刻として前記第１データ更新完了時刻記憶部に書き込む更新状況監視部を有することを特徴とする請求項１〜４のいずれかに記載のデータ管理装置。
【請求項６】
前記データ管理装置は、更に、
前記入力部により前記データ生成要求が入力された際に前記第２のデータの更新を禁止し、前記データ生成部による第１のデータの生成が完了した際に前記第２のデータの更新を許可する第２データ状態管理部を有することを特徴とする請求項１〜５のいずれかに記載のデータ管理装置。
【請求項７】
更新される第１のデータと、前記第１のデータの更新処理が完了してから所定時間が経過した後に前記第１のデータと同じ更新処理が行われる第２のデータとをコンピュータが管理するデータ管理方法であって、
前記第１のデータの更新処理が完了する度に、前記コンピュータが、更新処理が完了した時刻を第１データ更新完了時刻として記憶する第１データ更新完了時刻記憶ステップと、
前記コンピュータが、前記第１のデータの更新に用いられた更新データと、更新データによる前記第１のデータの更新時刻とを関連付けて記憶する更新データ記憶ステップと、
過去の時刻が指定時刻として指定され、指定時刻での第１のデータを生成するよう要求するデータ生成要求を、前記コンピュータが入力する入力ステップと、
前記入力ステップにより前記データ生成要求が入力された場合に、前記コンピュータが、前記データ生成要求の前記指定時刻に基づき、前記第１データ更新完了時刻記憶ステップにより記憶された第１データ更新完了時刻の中から特定の第１データ更新完了時刻を選択第１データ更新完了時刻として選択し、更新時刻が選択第１データ更新完了時刻までの更新データと、前記第２のデータとを用いて、選択第１データ更新完了時刻での第１のデータを生成するデータ生成ステップとを有することを特徴とするデータ管理方法。
【請求項８】
更新される第１のデータと、前記第１のデータの更新処理が完了してから所定時間が経過した後に前記第１のデータと同じ更新処理が行われる第２のデータとを管理するコンピュータに、
前記第１のデータの更新処理が完了する度に、更新処理が完了した時刻を第１データ更新完了時刻として記憶する第１データ更新完了時刻記憶ステップと、
前記第１のデータの更新に用いられた更新データと、更新データによる前記第１のデータの更新時刻とを関連付けて記憶する更新データ記憶ステップと、
過去の時刻が指定時刻として指定され、指定時刻での第１のデータを生成するよう要求するデータ生成要求を入力する入力ステップと、
前記入力ステップにより前記データ生成要求が入力された場合に、前記データ生成要求の前記指定時刻に基づき、前記第１データ更新完了時刻記憶ステップにより記憶された第１データ更新完了時刻の中から特定の第１データ更新完了時刻を選択第１データ更新完了時刻として選択し、更新時刻が選択第１データ更新完了時刻までの更新データと、前記第２のデータとを用いて、選択第１データ更新完了時刻での第１のデータを生成するデータ生成ステップとを実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、冗長構成のデータベースにおけるデータを管理する技術に関する。
【背景技術】
【０００２】
データベースを過去の状態にリカバリする方式として、データベースのスナップショットとジャーナル格納域を設け過去の状態に回復する方式が提案されている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１８７３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の過去の状態にリカバリする方式はデータベースを２重化し、片方のデータベースは、スナップショットとジャーナルを保管することで過去の状態を取得可能とする。
この方式では、スナップショットとジャーナルからデータを取得する際、データの更新処理の完了（トランザクションの完了）を意識しないでデータベースを切り離す。
このため、採取したバックアップのデータには、必ずしも更新処理が完了した後のデータ内容が反映されているとは限らず、データベースの利用者から見て、データベース間で整合性がとれた状態であることが保障されないという課題がある。
例えば、プログラムのテスト目的などのために過去のある時点のデータベースのデータを取得した場合に、取得したデータがある処理の途中（トランザクションの途中）まで更新された状態となっている場合がある。
このようにデータ内容に不整合が生じている可能性がある場合には、リストア先でデータを完全に再利用することはできない。
【０００５】
この発明は上記のような課題を解決することを主な目的としており、更新処理が完了した後のデータ内容が反映されるデータを得ることを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係るデータ管理装置は、
更新される第１のデータと、前記第１のデータの更新処理が完了してから所定時間が経過した後に前記第１のデータと同じ更新処理処理が行われる第２のデータとを管理するデータ管理装置であって、
前記第１のデータの更新処理が完了する度に、更新処理が完了した時刻を第１データ更新完了時刻として記憶する第１データ更新完了時刻記憶部と、
前記第１のデータの更新に用いられた更新データと、更新データによる前記第１のデータの更新時刻とを関連付けて記憶する更新データ記憶部と、
過去の時刻が指定時刻として指定され、指定時刻での第１のデータを生成するよう要求するデータ生成要求を入力する入力部と、
前記入力部により前記データ生成要求が入力された場合に、前記データ生成要求の前記指定時刻に基づき、前記第１データ更新完了時刻記憶部に記憶されている第１データ更新完了時刻の中から特定の第１データ更新完了時刻を選択第１データ更新完了時刻として選択し、更新時刻が選択第１データ更新完了時刻までの更新データと、前記第２のデータとを用いて、選択第１データ更新完了時刻での第１のデータを生成するデータ生成部とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、第１のデータの更新処理が完了した時刻である第１データ更新完了時刻を記憶し、第１データ更新完了時刻を基準にして第１のデータを生成するため、更新処理が完了した後のデータ内容が反映されるデータを得ることができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係るデータベース管理装置の構成例を示す図。
【図２】実施の形態１に係るデータベース管理装置の動作の詳細を示すフローチャート図。
【図３】実施の形態１に係るデータベース管理装置の動作の詳細を示すフローチャート図。
【図４】実施の形態１に係るデータベース管理装置の動作の詳細を示すフローチャート図。
【図５】実施の形態１に係るＤＢ分離処理の詳細を示すフローチャート図。
【図６】実施の形態１に係るＤＢ結合処理の詳細を示すフローチャート図。
【図７】実施の形態１に係るＤＢ更新処理の詳細を示すフローチャート図。
【図８】実施の形態１に係る過去データ取得処理の詳細を示すフローチャート図。
【図９】実施の形態１に係るセカンダリＤＢ更新部の動作の詳細を示すフローチャート図。
【図１０】実施の形態１に係るデータベース管理装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１．
本実施の形態では、例えば２４時間稼動する情報システムにおいて、一連のデータベースの更新処理が完了し、データベース間のデータの整合性がとれている状態で、過去に遡って、データベースのデータを取得可能とするデータリカバリ方式を説明する。
【００１０】
図１は、本実施の形態に係るデータベース管理装置１００とデータベースシステム２００の構成例を示す。
なお、データベース管理装置１００は、データ管理装置の例に相当する。
【００１１】
図１に示すように、データベース管理装置１００は、データベースシステム２００に接続され、データベースシステム２００を管理する。
データベースシステム２００には、一例としてシステムＡ用ＤＢ（プライマリ）２０１、システムＢ用ＤＢ（プライマリ）２０２、システムＡ用ＤＢ（セカンダリ）２０３、システムＢ用ＤＢ（セカンダリ）２０４が配置されている。
システムＡとシステムＢは互いに連動しており、例えば、システムＡが商品の出入庫管理システムであり、システムＢが商品の在庫管理システムである。
システムＡ用のデータベース（システムＡ用ＤＢ（プライマリ）２０１とシステムＡ用ＤＢ（セカンダリ）２０３）は、１つのトランザクションにより商品の出入庫履歴を更新し、システムＢ用のデータベース（システムＢ用ＤＢ（プライマリ）２０２とシステムＢ用ＤＢ（セカンダリ）２０４）は、同じトランザクションにより商品の在庫量を更新する。
そして、システムＡ用ＤＢ（プライマリ）２０１はシステムＡ用のデータを記憶する主系のデータベースであり、システムＢ用ＤＢ（プライマリ）２０２はシステムＢ用のデータを記憶する主系のデータベースである。
また、システムＡ用ＤＢ（セカンダリ）２０３はシステムＡ用のデータを記憶する予備系のデータベースであり、システムＢ用ＤＢ（セカンダリ）２０４はシステムＢ用のデータを記憶する予備系のデータベースである。
原則としてシステムＡ用ＤＢ（プライマリ）２０１とシステムＡ用ＤＢ（セカンダリ）２０３は同じデータを持つが、システムＡ用ＤＢ（セカンダリ）は、システムＡ用ＤＢ（プライマリ）の更新が行われてからある程度遅延して同じデータの更新が行われる。
なお、以下では、システムＡ用ＤＢ（プライマリ）２０１及びシステムＢ用ＤＢ（プライマリ）２０２を区別しない場合は、両者をまとめてプライマリデータベース又はプライマリＤＢという。
また、システムＡ用ＤＢ（セカンダリ）２０３及びシステムＢ用ＤＢ（セカンダリ）２０４を区別しない場合は、両者をまとめてセカンダリデータベース又はセカンダリＤＢという。
また、プライマリデータベースとセカンダリデータベースを別のサーバ（別のコンピュータ）としてもよい。
また、システムＡ用ＤＢ（プライマリ）２０１のデータとシステムＢ用ＤＢ（プライマリ）２０２のデータが第１のデータの例に相当し、システムＡ用ＤＢ（セカンダリ）２０３のデータとシステムＢ用ＤＢ（セカンダリ）２０４のデータが第２のデータの例に相当する。
【００１２】
データベース管理装置１００において、トランザクション監視部１０１は、データベースを操作するトランザクションの処理中／完了の状態を監視する機能である。
また、トランザクション監視部１０１は、過去データ要求を入力する。
過去データ要求には、過去データ取得開始要求、過去データ取得要求、過去データ取得終了要求が含まれる。
過去データ取得開始要求、過去データ取得要求、過去データ取得終了要求の詳細は後述する。
なお、過去データとは、所定の過去の時刻でのデータである。
プライマリデータベースのデータの更新処理が完了してから所定時間が経過した後に、セカンダリデータベースのデータの更新処理が行われるため、プライマリデータベースの更新処理後であっても、更新処理前のセカンダリデータベースのデータを用いて、プライマリデータベースの更新処理前の過去のデータを生成することができる。
なお、トランザクション監視部１０１は入力部及び更新状況監視部の例に相当し、また、トランザクション監視部１０１が実行する処理が入力ステップの例に相当する。
【００１３】
ＤＢ同期管理部１０２は、後述のセカンダリＤＢ更新部１０４の同期／分離状態の監視、セカンダリＤＢ更新部１０４の同期／分離を制御する機能である。
ここで、「同期」とは、セカンダリＤＢの更新処理が許可されている状態であり、「分離」とは、セカンダリＤＢの更新処理が禁止されている状態である。
セカンダリＤＢは、プライマリＤＢの更新処理の完了から所定時間が経過するとプライマリＤＢと同じ更新処理が行われるが、セカンダリＤＢの更新タイミング時に「分離」の状態であれば、ＤＢ同期管理部１０２により「同期」の状態に変更されるまで、セカンダリＤＢの更新処理が保留される。
ＤＢ同期管理部１０２は、第２データ状態管理部の例である。
【００１４】
プライマリＤＢ更新部１０３は、データベースシステム２００内のシステムＡ用ＤＢ（プライマリ）２０１及びシステムＢ用ＤＢ（プライマリ）２０２の更新処理を行う機能である。
【００１５】
セカンダリＤＢ更新部１０４は、プライマリＤＢ更新部１０３が更新処理の対象とするプライマリデータベースと同じシステムのセカンダリデータベースの更新処理を行い、過去データ取得時はデータの更新処理を停止し、過去データ取得後に当該セカンダリデータベースの更新処理を行う機能である。
【００１６】
ＤＢ静止点記憶部１０５は、トランザクション監視部１０１がすべてのトランザクションが完了し、プライマリデータベース間の状態が整合性がとれていることを検知したときにその時刻を記録するための領域である。
つまり、ＤＢ静止点記憶部１０５は、プライマリＤＢのデータ（第１のデータの例）の更新処理が完了する度に、更新処理が完了した時刻をＤＢ静止点（第１データ更新完了時刻の例）として記憶する。
ＤＢ静止点記憶部１０５は、第１データ更新完了時刻記憶部の例に相当し、ＤＢ静止点記憶部１０５が実行する処理は、第１データ更新完了時刻記憶ステップの例に相当する。
【００１７】
更新ログ蓄積部１０６は、セカンダリＤＢの更新を遅延させるためにプライマリＤＢの更新ログを一定期間蓄積しておく保管領域である。
つまり、更新ログ蓄積部１０６は、プライマリＤＢのデータ（第１のデータの例）の更新に用いられた更新データと、更新データによるプライマリＤＢの更新時刻とが関連付けられた更新ログを記憶する。
更新ログ蓄積部１０６は、更新データ記憶部の例に相当し、更新ログ蓄積部１０６が実行する処理は、更新データ記憶ステップの例に相当する。
【００１８】
更新ログ制御管理部１０７は、更新ログ蓄積部１０６に蓄積されているシステムＡ用ＤＢ（プライマリ）２０１及びシステムＢ用ＤＢ（プライマリ）２０２の更新ログのうち、あらかじめ設定されたＤＢリカバリ可能期間（保管期間ともいう）を超過したログを取り出し、その更新ログをもとにしたセカンダリＤＢの更新をセカンダリＤＢ更新部１０４に要求する機能である。
更新ログ制御管理部１０７は、過去データ取得要求があった際に、システムＡ用ＤＢ（セカンダリ）２０３及びシステムＢ用ＤＢ（セカンダリ）２０４のデータ、及び、更新ログ蓄積部１０６に蓄積されている更新ログを用いて、過去データを生成する。
より具体的には、更新ログ制御管理部１０７は、セカンダリＤＢのデータの更新に最後に用いられた更新データの更新時刻よりも後のＤＢ静止点であって、過去データ取得要求で指定されている過去の時刻（指定時刻という）に最も近いＤＢ静止点を選択する。
そして、更新ログ制御管理部１０７は、セカンダリＤＢのデータの更新に最後に用いられた更新データの更新時刻と選択したＤＢ静止点（選択第１データ更新完了時刻の例）までの時間に更新時刻が含まれる更新データと、セカンダリＤＢのデータとを用いて、選択したＤＢ静止点でのプライマリＤＢのデータを生成する。
更新ログ制御管理部１０７は、データ生成部の例に相当する。また、更新ログ制御管理部１０７が実施する処理は、データ生成ステップの例に相当する。
【００１９】
トランザクション完了管理テーブル１０８は、現在処理中のトランザクション数を管理するための情報である。
【００２０】
監視対象トランザクションテーブル１０９は、１つのトランザクションに含まれる更新要求のうち、トランザクション監視部１０１が監視すべき更新要求が示されている情報である。
【００２１】
ＤＢ同期状態管理テーブル１１０は、ＤＢ同期管理部１０２が管理する更新ログ制御管理部１０７の同期／分離状態を記憶する保管領域である。
【００２２】
最終ＤＢ更新時刻テーブル１１１は、更新ログ蓄積部１０６に蓄積された更新ログのうち、セカンダリＤＢの更新に最後に用いられた更新データの更新時刻、つまり、セカンダリＤＢの状態と一致していたときのプライマリＤＢの時刻を記憶する保管領域である。
【００２３】
ここで、トランザクションについて説明する。
１つのトランザクションは、複数のデータベース更新要求で構成される。
１つトランザクションには、トランザクションの開始を示す（データベースの更新開始を示す）更新要求（以下、ＳＴＡＲＴと呼ぶ）とトランザクションの完了を示す（データベースの更新完了を示す）更新要求（以下、ＣＯＭＭＩＴと呼ぶ）があり、ＳＴＡＲＴとＣＯＭＭＩＴの間に、具体的な更新処理の内容（更新対象の商品コード、数量等）を示す更新要求が発行される。
具体的な更新処理の内容（更新対象の商品コード、数量等）が、更新データに相当する。
トランザクションにおける各更新要求は、トランザクション監視部１０１が入力する。
【００２４】
また、トランザクション監視部１０１は、過去データ取得開始要求、過去データ取得要求、過去データ取得終了通知も入力する。
トランザクション監視部１０１は、トランザクション、過去データ取得開始要求及び過去データ取得終了通知を、例えば、データベース管理装置１００のオペレータ又はデータベース管理装置１００を利用するアプリケーションプログラムから入力する。
過去データ取得開始要求は、データベースシステム２００内から過去の状態のデータの取得開始を通知するメッセージである。
データベース管理装置１００は、過去データ取得開始要求を入力した際には、過去データを取得する処理を開始する。
過去データ取得終了通知は、取得の対象となっていた過去の状態のデータの取得が完了したことを通知するメッセージである。
データベース管理装置１００は、過去データ取得終了通知を入力した際には、セカンダリＤＢの遅延更新を再開させるための処理（「分離」状態から「同期」状態にする処理）を行う。
本実施の形態では、過去データ取得開始要求が入力された際には、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４がともに過去データ取得の対象となる。
同様に、過去データ取得終了通知が入力された際には、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４の過去データ取得がともに完了しており、システムＡ用ＤＢ（セカンダリ）２０３とシステムＢ用ＤＢ（セカンダリ）２０４がともに遅延更新再開の対象となることとする。
なお、システムＡ用ＤＢ（セカンダリ）２０３の過去データとは、過去データ取得要求で指定されている指定時刻に最も近いＤＢ静止点でのシステムＡ用ＤＢ（プライマリ）２０１のデータ内容が復元されているデータである。
同様に、システムＢ用ＤＢ（セカンダリ）２０４の過去データとは、過去データ取得要求で指定されている指定時刻に最も近いＤＢ静止点でのシステムＢ用ＤＢ（プライマリ）２０２のデータ内容が復元されているデータである。
【００２５】
本実施の形態では、データベース内の複数のテーブルが更新されるシステムにおいて、複数データベース間のデータの整合性がとれている状態で、過去のデータを取得可能とする。
【００２６】
本実施の形態では、トランザクション監視部１０１が、トランザクションの処理状況を監視し、処理中のトランザクションがなくなったタイミングで、データベース間の整合性が取れている状態として、その時刻をＤＢ静止点記憶部１０５に記録する。
前述したように、データベースは、複数個のプライマリＤＢと、複数個のセカンダリＤＢを持ち、データベースのリアルタイムの更新はプライマリＤＢのみ行い、プライマリＤＢの更新ログを更新ログ蓄積部１０６に蓄積する。
更新ログ蓄積部１０６に蓄積されたログのうち、一定期間経過したものから順にセカンダリＤＢの更新を行うことにより、セカンダリＤＢの更新を遅延させて行う。
過去データの取得が要求された場合は、セカンダリＤＢの更新処理を停止し、ＤＢ静止点記憶部１０５に記録された時刻（データの整合性が取れている時刻）であって、過去データ取得要求で要求された時刻に最も近い時刻の更新ログを更新ログ蓄積部１０６から取得する。
また、過去データを取得する際には、セカンダリＤＢの内容と更新ログ蓄積部１０６に蓄積された更新ログの内容から要求された時刻のデータを作成する。
【００２７】
次に、本実施の形態に係るデータベース管理装置１００の動作の概要をトランザクション監視部１０１の動作を中心にして説明する。
ここでは、図２〜図８のフローチャートを参照して説明する。
図２、図３、図４は、データベース管理装置１００の全体の動作を示す。
図５は、ＤＢ分離処理の詳細を示す。
図６は、ＤＢ結合処理の詳細を示す。
図７は、ＤＢ更新処理の詳細を示す。
図８は、過去データ取得処理の詳細を示す。
【００２８】
最初に、通常時のデータベースの更新処理の動作について説明する。
【００２９】
トランザクション監視部１０１がトランザクションの開始要求（ＤＢ更新要求）を受け取ると（図２のＳ１０１→Ｓ１０２→Ｓ１０３→図３のＳ１０８）、監視対象トランザクションテーブル１０９に登録されているトランザクションであるかを判定する（Ｓ１０９）。
監視対象トランザクションテーブル１０９に登録されているトランザクションである場合（Ｓ１０９でＹＥＳ）には、トランザクション監視部１０１は、トランザクション完了管理テーブル１０８の処理カウンタの値を１カウントアップし（Ｓ１１０）、データベース更新処理を行う（Ｓ１１１）。
監視対象トランザクションテーブル１０９に登録されていないトランザクションである場合（Ｓ１０９でＮＯ）には、トランザクション完了管理テーブル１０８の処理カウンタは変更せずにそのままデータベース更新処理を行う。
【００３０】
データベース更新処理（Ｓ１１１）では、図７に示すように、プライマリＤＢ更新部１０３が管理するプライマリＤＢ２０１、２０２のみのデータを更新し（Ｓ４０１）、このとき更新したデータの更新ログを更新日時と合わせて更新ログ蓄積部１０６に保管する（Ｓ４０２）。
【００３１】
次にトランザクション監視部１０１がトランザクションの終了要求（ＤＢ更新完了通知）を受け取ると（図２のＳ１０１→Ｓ１０２→Ｓ１０３→図３のＳ１０８→Ｓ１１２）、監視対象トランザクションテーブル１０９に登録されているトランザクションの完了であるかを判定する（Ｓ１１３）。
監視対象トランザクションテーブル１０９に登録されているトランザクションの完了である場合（Ｓ１１３でＹＥＳ）には、トランザクション完了管理テーブル１０８の処理カウンタの値を１カウントダウンする（Ｓ１１４）。
その結果、トランザクション完了管理テーブル１０８の処理カウンタが０、すなわち処理中のトランザクションが存在しない状態のとき（Ｓ１１５でＹＥＳ）は、データベース間の整合性が取れている状態であると判断し、ＤＢ静止点記憶部１０５に日時をＤＢ静止点として記録する（Ｓ１１６）。
【００３２】
次に過去データを取得するときの動作について説明する。
【００３３】
トランザクション監視部１０１が過去データ取得開始要求を受け取ると（図２のＳ１０１→Ｓ１０２）、最終ＤＢ更新時刻テーブル１１１を参照し、取得したい過去のデータの時刻（指定時刻）が最終ＤＢ更新時刻テーブル１１１に保管されている時刻より新しいかを判定する（Ｓ１０４）。
指定時刻が最終ＤＢ更新時刻テーブル１１１に保管されている時刻より古い場合（Ｓ１０４でＮＯ）は、トランザクション監視部１０１は、セカンダリＤＢ２０３、２０４の現在の状態は、要求された指定時刻の状態を過ぎた後の状態であると判断し、過去データを取得できない旨を回答する。
指定時刻が最終ＤＢ更新時刻テーブル１１１に保管されている時刻より新しい場合（Ｓ１０４でＹＥＳ）は、トランザクション監視部１０１は、セカンダリＤＢ２０３、２０４の現在の状態が要求された指定時刻の前の状態であり、過去データを取得可能であると判断し、セカンダリＤＢの分離処理が行われる（Ｓ１０５）。
【００３４】
ＤＢ分離処理（Ｓ１０５）では、図５に示すように、ＤＢ同期状態管理テーブル１１０の状態が「同期」であれば（Ｓ２０１）、ＤＢ同期管理部１０２が、ＤＢ同期状態管理テーブル１１０の状態を「分離」に変更する（Ｓ２０２）。
ＤＢ同期状態管理テーブル１１０の状態を「分離」にすることで、セカンダリＤＢ更新部１０４からのセカンダリＤＢ２０３、２０４の更新処理は停止する。
ＤＢ分離処理が完了すると、トランザクション監視部１０１は、過去データが取得可能であることを回答する（図２のＳ１０６）。
【００３５】
次にトランザクション監視部１０１が過去データ取得要求を受け取ると（図２のＳ１０１→Ｓ１０２→Ｓ１０３→図３のＳ１０８→Ｓ１１２→図４のＳ１１７）、過去データ取得処理が行われる（Ｓ１０８）。
【００３６】
過去データ取得処理（Ｓ１０８）では、図８に示すように、ＤＢ同期管理部１０２が、ＤＢ同期状態管理テーブル１１０の状態を確認する（Ｓ５０１）。
ＤＢ同期状態管理テーブル１１０の状態が「分離」以外の場合（Ｓ５０１でＮＯ）は、セカンダリＤＢ２０３、２０４が切り離されておらず、過去データを取得できる状態ではないため、取得不可の回答を返す。
「分離」のときは、更新ログ制御管理部１０７が、ＤＢ同期管理部１０２を介して、ＤＢ静止点記憶部１０５に保管されている時刻の中から、過去データとして取得したい時刻（指定時刻）に最も近い時刻を検索する（Ｓ５０２）。
検索対象の時刻は指定時刻に最も近い時刻であればよく、指定時刻よりも前の時刻であっても、指定時刻よりも後の時刻であってもよい。
また、このとき抽出する時刻は、最終ＤＢ更新時刻テーブル１１１に保管されている時刻よりも新しい時刻とする。
次に、更新ログ制御管理部１０７は、更新ログ蓄積部１０６に保管されている更新ログから、最終ＤＢ更新時刻テーブル１１１の時刻からＳ５０２で抽出した時刻までの時間に更新時刻が含まれる更新データを抽出し、抽出した更新データをセカンダリＤＢ２０３、２０４のデータに反映させて過去データを作成し（Ｓ５０３）、作成した過去データを返す。
【００３７】
過去データ取得完了後、トランザクション監視部１０１が過去データ取得終了要求を受け取ると（図２のＳ１０１→Ｓ１０２→Ｓ１０３）、ＤＢ結合処理が行われる（Ｓ１０７）。
【００３８】
ＤＢ結合処理（Ｓ１０７）では、図６に示すように、ＤＢ同期管理部１０２が、ＤＢ同期状態管理テーブル１１０の状態を「同期」に変更する（Ｓ３０１）。
【００３９】
最後に更新ログ制御管理部１０７によるセカンダリＤＢ２０３、２０４の更新処理を、図９を参照して説明する。
【００４０】
更新ログ制御管理部１０７は、起動後、システムで設定された一定時間何も処理をしないで待機する（Ｓ６０１）。
セカンダリＤＢの更新処理についての終了要求がなく（Ｓ６０２でＮＯ）一定時間が経過した後に、更新ログ制御管理部１０７は、ＤＢ同期状態管理テーブル１１０の状態を参照し、状態が「分離」である場合（Ｓ６０３でＹＥＳ）は、過去データを取得中であると判断し、セカンダリＤＢの更新は行わずに、再度待機する（Ｓ６０１）。
ＤＢ同期状態管理テーブル１１０の状態が「同期」である場合（Ｓ６０３でＮＯ）は、更新ログ制御管理部１０７は、更新ログ蓄積部１０６に蓄積されている更新ログのうち、最も古いログを参照し、その更新ログをセカンダリＤＢに反映するかを判定する。
更新ログの更新日時がシステムで設定された保管期間を超過している場合は、反映する必要があると判断し（Ｓ６０４）、セカンダリＤＢ２０３、２０４を更新ログの内容で更新する（Ｓ６０５）。
更新ログの反映が完了すると、更新ログ制御管理部１０７は、最終ＤＢ更新時刻テーブル１１１の時刻を更新ログの時刻に書き換える（Ｓ６０６）。
更新ログのセカンダリＤＢへの反映は、保管期間を超過したすべての更新ログについて行う。
超過したすべての更新ログの反映が完了すると、再度、一定時間待機を行う（Ｓ６０１）。
この処理を繰り返し行うことで、セカンダリＤＢ２０３、２０４は、プライマリＤＢ２０１、２０２に比べ、常に一定期間遅れた状態を保持することが可能となる。
【００４１】
このように、本実施の形態によれば、すべてのトランザクションが完了したタイミングを記録しながら２重化したデータベースの一方を遅らせながら更新するので、データの整合性がとれている過去の状態のデータを取得することができる。
【００４２】
以上、本実施の形態では、
複数のデータベースを管理するデータベース管理装置であって、
前記複数のデータベースにおけるトランザクションの処理状況を監視し、処理中のトランザクションがなくなったときにデータベースが整合性がとれている状態であると記録するトランザクション監視部と、
前記トランザクション監視部により過去データ取得指示が出力された場合に、一部のデータベースの更新処理を停止させるＤＢ同期管理部とを有するデータベース管理装置を説明した。
【００４３】
また、本実施の形態では、
前記データベース管理装置は、
監視するトランザクションの種類を登録する監視対象トランザクションテーブルを有することを説明した。
【００４４】
また、本実施の形態では、
前記データベース管理装置は、
それぞれが同じデータを記憶する複数のデータベースを管理し、
前記データベース管理装置は、更に、
前記複数のデータベースの一部のデータベースの更新処理のログを蓄積する更新ログ蓄積部と、
蓄積した更新ログを一定時間経過してからデータベースの更新を行う更新ログ制御管理部を有することを説明した。
【００４５】
また、本実施の形態では、
前記データベース管理装置は、更に、
過去データを取得する際、ＤＢのデータと前記更新ログ蓄積部に蓄積された更新ログから取得したい時点のデータを生成する更新ログ制御管理部を有することを説明した。
【００４６】
また、本実施の形態では、
前記データベース管理装置は、更に、
前記トランザクション監視部により監視しているトランザクションがすべて処理完了したことを検知可能なトランザクション完了管理テーブルと、
トランザクションがすべて完了し、データベースのデータの整合性がとれているタイミングを記録可能なＤＢ静止点記憶部を有することを説明した。
【００４７】
また、本実施の形態では、
複数のデータベースを管理するデータベース管理装置であって、
データベースにおけるトランザクションの処理状況を監視し、処理中のトランザクションがなくなったときにその時間をＤＢ静止点記憶部に記憶するトランザクション監視部と、
ＤＢ静止点記憶部に記録されたＤＢの整合性がとれている時間、最終ＤＢ更新時刻ＴＢＬに記録されたセカンダリＤＢの最終更新時刻から要求された過去の時間で最も近い整合性がとれているデータベースの時刻を判断するＤＢ同期管理部とを有することを説明した。
【００４８】
最後に、本実施の形態に示したデータベース管理装置１００のハードウェア構成例について説明する。
図１０は、本実施の形態に示すデータベース管理装置１００のハードウェア資源の一例を示す図である。
なお、図１０の構成は、あくまでもデータベース管理装置１００のハードウェア構成の一例を示すものであり、データベース管理装置１００のハードウェア構成は図１０に記載の構成に限らず、他の構成であってもよい。
【００４９】
図１０において、データベース管理装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
本実施の形態で説明した「ＤＢ静止点記憶部１０５」、「更新ログ蓄積部１０６」は、ＲＡＭ９１４、磁気ディスク装置９２０等により実現される。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００５０】
通信ボード９１５は、ネットワークに接続されている。
例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されている。
【００５１】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００５２】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００５３】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
データベース管理装置１００の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００５４】
上記プログラム群９２３には、本実施の形態の説明において「〜部」（「ＤＢ静止点記憶部１０５」、「更新ログ蓄積部１０６」以外、以下同様）として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００５５】
ファイル群９２４には、本実施の形態の説明において、「〜の判断」、「〜の検索」、「〜の抽出」、「〜の生成」、「〜の作成」、「〜の比較」、「〜の更新」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、本実施の形態で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００５６】
また、本実施の形態の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、本実施の形態で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「データ管理方法」を実現することができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、本実施の形態の「〜部」としてコンピュータを機能させるものである。あるいは、本実施の形態の「〜部」の手順や方法をコンピュータに実行させるものである。
【００５７】
このように、本実施の形態に示すデータベース管理装置１００は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【００５８】
１００  データベース管理装置、１０１  トランザクション監視部、１０２  ＤＢ同期管理部、１０３  プライマリＤＢ更新部、１０４  セカンダリＤＢ更新部、１０５  ＤＢ静止点記憶部、１０６  更新ログ蓄積部、１０７  更新ログ制御管理部、１０８  トランザクション完了管理テーブル、１０９  監視対象トランザクションテーブル、１１０  ＤＢ同期状態管理テーブル、１１１  最終ＤＢ更新時刻テーブル、２０１  システムＡ用ＤＢ（プライマリ）、２０２  システムＢ用ＤＢ（プライマリ）、２０３  システムＡ用ＤＢ（セカンダリ）、２０４  システムＢ用ＤＢ（セカンダリ）。
【図１】
2012234462.tif 000003
【図２】
2012234462.tif 000004
【図３】
2012234462.tif 000005
【図４】
2012234462.tif 000006
【図５】
2012234462.tif 000007
【図６】
2012234462.tif 000008
【図７】
2012234462.tif 000009
【図８】
2012234462.tif 000010
【図９】
2012234462.tif 000011
【図１０】
2012234462.tif 000012