JP2012068693A - データベース管理装置及びデータベース管理方法及びプログラム - Google Patents
データベース管理装置及びデータベース管理方法及びプログラム Download PDFInfo
- Publication number
- JP2012068693A JP2012068693A JP2010210451A JP2010210451A JP2012068693A JP 2012068693 A JP2012068693 A JP 2012068693A JP 2010210451 A JP2010210451 A JP 2010210451A JP 2010210451 A JP2010210451 A JP 2010210451A JP 2012068693 A JP2012068693 A JP 2012068693A
- Authority
- JP
- Japan
- Prior art keywords
- database
- separation
- transaction
- unit
- update
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】2重化されたDBの一方を切り離してバックアップをとる場合に、バックアップのデータが、切り離されない他方のDBのデータと整合がとれているようにする。
【解決手段】トランザクション監視部101が、バックアップ開始要求を入力した際に、トランザクションの処理状況を監視し、処理中のトランザクションが存在していれば処理中のトランザクションがなくなるまで、バックアップ開始要求の出力を保留し、トランザクションがなくなったときにバックアップ開始要求を出力する。トランザクション監視部101は、バックアップ開始要求を入力してからDB同期管理部102にバックアップ開始要求を出力するまでの間に発生したトランザクション内の更新要求をトランザクション一時蓄積部105に蓄積させる。DB同期管理部102は、トランザクション監視部101からバックアップ開始要求を入力した際に、バックアップ対象のデータベースを切り離す。
【選択図】図1
【解決手段】トランザクション監視部101が、バックアップ開始要求を入力した際に、トランザクションの処理状況を監視し、処理中のトランザクションが存在していれば処理中のトランザクションがなくなるまで、バックアップ開始要求の出力を保留し、トランザクションがなくなったときにバックアップ開始要求を出力する。トランザクション監視部101は、バックアップ開始要求を入力してからDB同期管理部102にバックアップ開始要求を出力するまでの間に発生したトランザクション内の更新要求をトランザクション一時蓄積部105に蓄積させる。DB同期管理部102は、トランザクション監視部101からバックアップ開始要求を入力した際に、バックアップ対象のデータベースを切り離す。
【選択図】図1
Description
本発明は、冗長構成のデータベースにおけるバックアップ取得技術に関する。
24時間稼動する情報システムの従来のバックアップの取得方式として、データベースを2重化し、2重化したデータベースのうちの1つを切り離し、切り離したデータベースのバックアップを採取する方式が提案されている(特許文献1、特許文献2)。
従来のバックアップ方式は、2重化されたデータベースの一方を切り離してバックアップを採取する際に、データの更新処理の完了(トランザクションの完了)を意識しないでデータベースを切り離すため、採取したバックアップのデータがデータベースの利用者から見て、整合性がとれた状態であることが保障されないという課題がある。
例えば、データベースの移行やテスト目的などのためにある時点のデータベースのバックアップを取得した場合に、バックアップされたデータがある処理の途中(トランザクションの途中)まで更新された状態となっている場合があり、切り離されていない他方のデータベースのデータ内容と整合がとれていない可能性がある。
このようにデータ内容に不整合が生じている可能性がある場合には、リストア先でデータを再利用することができない。
例えば、データベースの移行やテスト目的などのためにある時点のデータベースのバックアップを取得した場合に、バックアップされたデータがある処理の途中(トランザクションの途中)まで更新された状態となっている場合があり、切り離されていない他方のデータベースのデータ内容と整合がとれていない可能性がある。
このようにデータ内容に不整合が生じている可能性がある場合には、リストア先でデータを再利用することができない。
この発明は上記のような課題を解決するためになされたもので、一連のデータベースの更新処理(トランザクション)が完了し、データの整合性がとれている状態でデータベースのバックアップを取得可能とすることを目的とする。
つまり、本発明は、冗長構成のデータベースの1つを切り離してバックアップをとる場合に、バックアップのデータが、切り離されない他のデータベースのデータと整合がとれているようにすることを主な目的とする。
つまり、本発明は、冗長構成のデータベースの1つを切り離してバックアップをとる場合に、バックアップのデータが、切り離されない他のデータベースのデータと整合がとれているようにすることを主な目的とする。
本発明に係るデータベース管理装置は、
複数のデータベースを管理するデータベース管理装置であって、
前記複数のデータベースのうちの特定のデータベースの分離を要求する分離要求を入力した際に、前記複数のデータベースにおけるトランザクションの処理状況を監視し、処理中のトランザクションが存在していれば処理中のトランザクションがなくなるまで、分離対象データベースの分離を指示する分離指示の出力を保留し、処理中のトランザクションがなくなったときに、前記分離指示を出力するトランザクション監視部と、
前記トランザクション監視部により前記分離指示が出力された場合に、前記分離対象データベースの分離を行う分離処理部とを有することを特徴とする。
複数のデータベースを管理するデータベース管理装置であって、
前記複数のデータベースのうちの特定のデータベースの分離を要求する分離要求を入力した際に、前記複数のデータベースにおけるトランザクションの処理状況を監視し、処理中のトランザクションが存在していれば処理中のトランザクションがなくなるまで、分離対象データベースの分離を指示する分離指示の出力を保留し、処理中のトランザクションがなくなったときに、前記分離指示を出力するトランザクション監視部と、
前記トランザクション監視部により前記分離指示が出力された場合に、前記分離対象データベースの分離を行う分離処理部とを有することを特徴とする。
本発明によれば、処理中のトランザクションが存在しないタイミングでデータベースの分離が行われるので、データの整合性がとれている状態でデータベースのバックアップを行うことができる。
実施の形態1.
本実施の形態では、例えば24時間稼動する情報システムにおいて、一連のデータベースの更新処理が完了し、データの整合性がとれている状態でデータベースのバックアップを取得可能とするデータベースバックアップ方式を説明する。
本実施の形態では、例えば24時間稼動する情報システムにおいて、一連のデータベースの更新処理が完了し、データの整合性がとれている状態でデータベースのバックアップを取得可能とするデータベースバックアップ方式を説明する。
図1は、本実施の形態に係るデータベース管理装置100とデータベースシステム200の構成例を示す。
図1に示すように、データベース管理装置100は、データベースシステム200に接続され、データベースシステム200を管理する。
データベースシステム200には、一例としてシステムA用DB(プライマリ)201、システムB用DB(プライマリ)202、システムA用DB(セカンダリ)203、システムB用DB(セカンダリ)204が配置されている。
システムAとシステムBは互いに連動しており、例えば、システムAが商品の出入庫管理システムであり、システムBが商品の在庫管理システムである。
システムA用のデータベース(システムA用DB(プライマリ)201とシステムA用DB(セカンダリ)203)は、1つのトランザクションにより商品の出入庫履歴を更新し、システムB用のデータベース(システムB用DB(プライマリ)202とシステムB用DB(セカンダリ)204)は、同じトランザクションにより商品の在庫量を更新する。
そして、システムA用DB(プライマリ)201はシステムA用のデータを記憶する主系のデータベースであり、システムB用DB(プライマリ)202はシステムB用のデータを記憶する主系のデータベースである。
また、システムA用DB(セカンダリ)203はシステムA用のデータを記憶する予備系のデータベースであり、システムB用DB(セカンダリ)204はシステムB用のデータを記憶する予備系のデータベースである。
原則としてシステムA用DB(プライマリ)201とシステムA用DB(セカンダリ)203はデータ内容が一致しており、原則としてシステムB用DB(プライマリ)202とシステムB用DB(セカンダリ)204はデータ内容が一致している。
なお、プライマリデータベースとセカンダリデータベースを別のサーバ(別のコンピュータ)としてもよい。
データベースシステム200には、一例としてシステムA用DB(プライマリ)201、システムB用DB(プライマリ)202、システムA用DB(セカンダリ)203、システムB用DB(セカンダリ)204が配置されている。
システムAとシステムBは互いに連動しており、例えば、システムAが商品の出入庫管理システムであり、システムBが商品の在庫管理システムである。
システムA用のデータベース(システムA用DB(プライマリ)201とシステムA用DB(セカンダリ)203)は、1つのトランザクションにより商品の出入庫履歴を更新し、システムB用のデータベース(システムB用DB(プライマリ)202とシステムB用DB(セカンダリ)204)は、同じトランザクションにより商品の在庫量を更新する。
そして、システムA用DB(プライマリ)201はシステムA用のデータを記憶する主系のデータベースであり、システムB用DB(プライマリ)202はシステムB用のデータを記憶する主系のデータベースである。
また、システムA用DB(セカンダリ)203はシステムA用のデータを記憶する予備系のデータベースであり、システムB用DB(セカンダリ)204はシステムB用のデータを記憶する予備系のデータベースである。
原則としてシステムA用DB(プライマリ)201とシステムA用DB(セカンダリ)203はデータ内容が一致しており、原則としてシステムB用DB(プライマリ)202とシステムB用DB(セカンダリ)204はデータ内容が一致している。
なお、プライマリデータベースとセカンダリデータベースを別のサーバ(別のコンピュータ)としてもよい。
データベース管理装置100において、トランザクション監視部101は、データベースを操作するトランザクションの処理中/完了の状態を監視する機能である。
なお、トランザクション監視部101が実行する処理が、分離要求入力ステップ及びトランザクション監視ステップに相当する。
なお、トランザクション監視部101が実行する処理が、分離要求入力ステップ及びトランザクション監視ステップに相当する。
DB同期管理部102は、後述のプライマリDB更新部103、セカンダリDB更新部104のデータ同期状態/非同期状態の監視、プライマリDB更新部103、セカンダリDB更新部104の分離、結合を制御する機能である。
DB同期管理部102は、分離処理部及び更新要求管理部の例である。
また、DB同期管理部102が実行する処理が分離処理ステップに相当する。
DB同期管理部102は、分離処理部及び更新要求管理部の例である。
また、DB同期管理部102が実行する処理が分離処理ステップに相当する。
プライマリDB更新部103はデータベースシステム200内のシステムA用DB(プライマリ)201及びシステムB用DB(プライマリ)202の更新処理を行う機能である。
セカンダリDB更新部104は、プライマリDB更新部103が更新するデータベースと同じデータベースを更新し、バックアップ採取時はデータの更新処理を停止し、バックアップ採取後に当該データベースの更新を行う機能である。
本実施の形態では、システムA用DB(セカンダリ)203及びシステムB用DB(セカンダリ)204がバックアップの対象であり、分離の対象であるため、セカンダリDB更新部104は分離対象データベース管理部の例に相当する。
なお、システムA用DB(プライマリ)201及びシステムB用DB(プライマリ)202がバックアップの対象であり、分離の対象である場合は、プライマリDB更新部103が分離対象データベース管理部の例に相当する。
本実施の形態では、システムA用DB(セカンダリ)203及びシステムB用DB(セカンダリ)204がバックアップの対象であり、分離の対象であるため、セカンダリDB更新部104は分離対象データベース管理部の例に相当する。
なお、システムA用DB(プライマリ)201及びシステムB用DB(プライマリ)202がバックアップの対象であり、分離の対象である場合は、プライマリDB更新部103が分離対象データベース管理部の例に相当する。
トランザクション一時蓄積部105は、データベースの切り離し処理をしている間、または、バックアップ要求を受け付けてトランザクションの完了を待つ間に発生したトランザクションを一時蓄積するための保管領域である。
トランザクション一時蓄積部105は、更新要求蓄積部の例である。
トランザクション一時蓄積部105は、更新要求蓄積部の例である。
セカンダリデータベース更新要求蓄積部106は、バックアップのためにセカンダリDB更新部104が更新処理を停止している間に発生したデータベース更新要求(以下、単に更新要求ともいう)を蓄積しておく保管領域である。
セカンダリデータベース更新要求蓄積部106は、分離対象データベース蓄積部の例である。
なお、システムA用DB(プライマリ)201及びシステムB用DB(プライマリ)202がバックアップの対象であり、分離の対象である場合は、プライマリDB更新部103に対して、セカンダリデータベース更新要求蓄積部106と同様の機能が設けられ、当該機能が分離対象データベース蓄積部の例に相当することになる。
セカンダリデータベース更新要求蓄積部106は、分離対象データベース蓄積部の例である。
なお、システムA用DB(プライマリ)201及びシステムB用DB(プライマリ)202がバックアップの対象であり、分離の対象である場合は、プライマリDB更新部103に対して、セカンダリデータベース更新要求蓄積部106と同様の機能が設けられ、当該機能が分離対象データベース蓄積部の例に相当することになる。
テーブル記憶部107は、後述のトランザクション完了管理テーブル108等の各種テーブルを記憶する記憶領域である。
なお、図1では、トランザクション完了管理テーブル108等は、テーブル記憶部107から読み出されて、トランザクション監視部101等により利用可能な状態になっていることを示している。
なお、図1では、トランザクション完了管理テーブル108等は、テーブル記憶部107から読み出されて、トランザクション監視部101等により利用可能な状態になっていることを示している。
トランザクション完了管理テーブル108は、現在処理中のトランザクション数を管理するための情報である。
監視対象トランザクションテーブルは、1つのトランザクションに含まれる更新要求のうち、トランザクション監視部101が監視すべき更新要求が示されている情報である。
DB同期状態管理テーブル110は、DB同期管理部102が管理するデータ同期状態/非同期状態を記憶する保管領域である。
ここで、トランザクションについて説明する。
1つのトランザクションは、複数のデータベース更新要求で構成される。
1つトランザクションには、トランザクションの開始を示す(データベースの更新開始を示す)更新要求(以下、STARTと呼ぶ)とトランザクションの完了を示す(データベースの更新完了を示す)更新要求(以下、COMMITと呼ぶ)があり、STARTとCOMMITの間に、具体的な更新処理の内容(更新対象の商品コード、数量等)を示す更新要求が発行される。
トランザクションにおける各更新要求は、トランザクション監視部101が入力する。
1つのトランザクションは、複数のデータベース更新要求で構成される。
1つトランザクションには、トランザクションの開始を示す(データベースの更新開始を示す)更新要求(以下、STARTと呼ぶ)とトランザクションの完了を示す(データベースの更新完了を示す)更新要求(以下、COMMITと呼ぶ)があり、STARTとCOMMITの間に、具体的な更新処理の内容(更新対象の商品コード、数量等)を示す更新要求が発行される。
トランザクションにおける各更新要求は、トランザクション監視部101が入力する。
また、トランザクション監視部101は、バックアップ開始要求とバックアップ終了通知も入力する。
トランザクション監視部101は、トランザクション、バックアップ開始要求及びバックアップ終了通知を、例えば、データベース管理装置100のオペレータ又はデータベース管理装置100を利用するアプリケーションプログラムから入力する。
バックアップ開始要求は、データベースシステム200内の所定のデータベースのバックアップの開始を通知するメッセージである。
データベース管理装置100は、バックアップ開始要求を入力した際には、対象となるデータベースを分離すための処理を行う。
このように、バックアップ開始要求をトリガーにしてデータベースの分離が開始されるため、バックアップ開始要求は特定のデータベースの分離を要求する分離要求として捉えることができる。
バックアップ終了通知は、バックアップの対象となっていたデータベースのバックアップが完了したことを通知するメッセージである。
データベース管理装置100は、バックアップ終了通知を入力した際には、対象となるデータベースを復旧させるための処理を行う。
本実施の形態では、バックアップ開始要求が入力された際には、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204がともにバックアップの対象となり、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204がともに切り離しの対象となることとする。
システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204は、分離対象データベースの例である。
同様に、バックアップ終了通知が入力された際には、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204のバックアップがともに完了しており、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204がともに復旧の対象となることとする。
トランザクション監視部101は、トランザクション、バックアップ開始要求及びバックアップ終了通知を、例えば、データベース管理装置100のオペレータ又はデータベース管理装置100を利用するアプリケーションプログラムから入力する。
バックアップ開始要求は、データベースシステム200内の所定のデータベースのバックアップの開始を通知するメッセージである。
データベース管理装置100は、バックアップ開始要求を入力した際には、対象となるデータベースを分離すための処理を行う。
このように、バックアップ開始要求をトリガーにしてデータベースの分離が開始されるため、バックアップ開始要求は特定のデータベースの分離を要求する分離要求として捉えることができる。
バックアップ終了通知は、バックアップの対象となっていたデータベースのバックアップが完了したことを通知するメッセージである。
データベース管理装置100は、バックアップ終了通知を入力した際には、対象となるデータベースを復旧させるための処理を行う。
本実施の形態では、バックアップ開始要求が入力された際には、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204がともにバックアップの対象となり、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204がともに切り離しの対象となることとする。
システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204は、分離対象データベースの例である。
同様に、バックアップ終了通知が入力された際には、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204のバックアップがともに完了しており、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204がともに復旧の対象となることとする。
次に、トランザクション完了管理テーブル108の例を図7に示す。
図7に示すように、トランザクション完了管理テーブル108は、処理カウンタを有する。
処理カウンタは、初期値は0であり、トランザクション監視部101により値がインクリメント又はデクリメントされるカウンタである。
トランザクション監視部101がSTARTの更新要求を入力した場合には処理カウンタの値がインクリメントされ、トランザクション監視部101がCOMMITの更新要求を入力した場合には処理カウンタの値がデクリメントされる。
図7に示すように、トランザクション完了管理テーブル108は、処理カウンタを有する。
処理カウンタは、初期値は0であり、トランザクション監視部101により値がインクリメント又はデクリメントされるカウンタである。
トランザクション監視部101がSTARTの更新要求を入力した場合には処理カウンタの値がインクリメントされ、トランザクション監視部101がCOMMITの更新要求を入力した場合には処理カウンタの値がデクリメントされる。
次に、監視対象トランザクションテーブル109の例を図8に示す。
図8に示すように、監視対象トランザクションテーブル109は、監視対象IDと属性の項目を有する。
監視対象IDは、1つのトランザクションに含まれる更新要求のうちトランザクション完了管理テーブル108が監視すべき更新要求が示される。
具体的には、トランザクション完了管理テーブル108はSTARTとCOMMITの2つの更新要求を監視対象とし、前述したように、STARTを入力した際にはトランザクション完了管理テーブル108の処理カウンタの値をインクリメントし、COMMTを入力した際にはトランザクション完了管理テーブル108の処理カウンタの値をデクリメントする。
なお、属性の欄は必須ではなく、省略していもよい。
図8に示すように、監視対象トランザクションテーブル109は、監視対象IDと属性の項目を有する。
監視対象IDは、1つのトランザクションに含まれる更新要求のうちトランザクション完了管理テーブル108が監視すべき更新要求が示される。
具体的には、トランザクション完了管理テーブル108はSTARTとCOMMITの2つの更新要求を監視対象とし、前述したように、STARTを入力した際にはトランザクション完了管理テーブル108の処理カウンタの値をインクリメントし、COMMTを入力した際にはトランザクション完了管理テーブル108の処理カウンタの値をデクリメントする。
なお、属性の欄は必須ではなく、省略していもよい。
次に、DB同期状態管理テーブル110の例を図9に示す。
図9(a)に示すように、DB同期状態管理テーブル110は、データベースの状態を示す。
図9(b)に示すように、DB同期状態管理テーブル110の状態は、同期→分離中→分離→同期中→同期という順序で遷移する。
「同期」とは、バックアップ開始要求が入力される前の状態、または、バックアップ終了通知が入力されてバックアップ対象のデータベース(システムA用DB(セカンダリ)203、システムB用DB(セカンダリ)204)の更新が行われた後の状態である。
DB同期状態管理テーブル110の状態が「同期」となっているときは、システムA用DB(プライマリ)201とシステムA用DB(セカンダリ)203の更新が同時に行われ、システムA用DB(プライマリ)201とシステムA用DB(セカンダリ)203の内容が完全に一致しており、またシステムB用DB(プライマリ)202とシステムB用DB(セカンダリ)204の更新が同時に行われ、システムB用DB(プライマリ)202とシステムB用DB(セカンダリ)204の内容が完全に一致している状態である。
「分離中」とは、バックアップ開始要求が入力された後であって、未処理のトランザクションが残っているためシステムA用DB(セカンダリ)203、システムB用DB(セカンダリ)204の切り離しが完了していない状態である。
「分離」とは、バックアップ開始要求が入力された後であって、未処理のトランザクションがなくシステムA用DB(セカンダリ)203、システムB用DB(セカンダリ)204の切り離しが可能な状態又は切り離された後の状態である。
DB同期状態管理テーブル110の状態が「分離」となっているときに、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204のバックアップが行われる。
なお、分離という語と切り離しという語は同義である。
「同期中」とは、バックアップ終了通知が入力された後に、分離されていたシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の結合処理を行っていることを示しており、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204が切り離されている際に入力された更新要求をシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204に反映させる更新が実施中であることを示す。
図9(a)に示すように、DB同期状態管理テーブル110は、データベースの状態を示す。
図9(b)に示すように、DB同期状態管理テーブル110の状態は、同期→分離中→分離→同期中→同期という順序で遷移する。
「同期」とは、バックアップ開始要求が入力される前の状態、または、バックアップ終了通知が入力されてバックアップ対象のデータベース(システムA用DB(セカンダリ)203、システムB用DB(セカンダリ)204)の更新が行われた後の状態である。
DB同期状態管理テーブル110の状態が「同期」となっているときは、システムA用DB(プライマリ)201とシステムA用DB(セカンダリ)203の更新が同時に行われ、システムA用DB(プライマリ)201とシステムA用DB(セカンダリ)203の内容が完全に一致しており、またシステムB用DB(プライマリ)202とシステムB用DB(セカンダリ)204の更新が同時に行われ、システムB用DB(プライマリ)202とシステムB用DB(セカンダリ)204の内容が完全に一致している状態である。
「分離中」とは、バックアップ開始要求が入力された後であって、未処理のトランザクションが残っているためシステムA用DB(セカンダリ)203、システムB用DB(セカンダリ)204の切り離しが完了していない状態である。
「分離」とは、バックアップ開始要求が入力された後であって、未処理のトランザクションがなくシステムA用DB(セカンダリ)203、システムB用DB(セカンダリ)204の切り離しが可能な状態又は切り離された後の状態である。
DB同期状態管理テーブル110の状態が「分離」となっているときに、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204のバックアップが行われる。
なお、分離という語と切り離しという語は同義である。
「同期中」とは、バックアップ終了通知が入力された後に、分離されていたシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の結合処理を行っていることを示しており、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204が切り離されている際に入力された更新要求をシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204に反映させる更新が実施中であることを示す。
次に、本実施の形態に係るデータベース管理装置100の動作の概要をトランザクション監視部101の動作を中心にして説明する。
ここでは、図10のフローチャートを参照して説明する。
ここでは、図10のフローチャートを参照して説明する。
トランザクション監視部101がバックアップ開始要求(分離要求)を入力すると、DB同期管理部102にDB同期状態管理テーブル110の状態を「同期」から「分離中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の状態を「同期」から「分離中」に変更する(S1001)。
トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
次に、トランザクション監視部101はトランザクション完了管理テーブル108の処理カウンタの値が0であるかどうかを確認する(S1002)。
処理カウンタの値が0の場合(S1002でYES)は、トランザクション監視部101は、バックアップ開始要求をDB同期管理部102に出力してシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の分離を指示する(S1007)。
一方、処理カウンタの値が0でない場合(S1002でNO)、すなわち、処理が完了していないトランザクション(COMMITが入力されていないトランザクション)が存在している場合は、処理が完了していないトランザクションの完了を待つ。
より具体的には、トランザクション監視部101は、COMMITが入力される度に(S1003でYES)、トランザクション完了管理テーブル108の処理カウンタの値をデクリメントし(S1004)、STARTが入力される度に(S1005でYES)、START及びSTARTに後続する更新要求をトランザクション一時蓄積部105に蓄積させて(S1006)、処理カウンタの値が0になる(処理が完了していないトランザクションがなくなる)のを待つ。
バックアップ開始要求が入力される前は、トランザクション監視部101はSTARTが入力されると処理カウンタの値をインクリメントするとともに更新要求をDB同期管理部102に出力するが、バックアップ開始要求が入力された(S1001)後は、STARTが入力されても処理カウンタの値はインクリメントせずに更新要求をトランザクション一時蓄積部105に蓄積する。
このため、処理カウンタの値はCOMMITの入力とともに減少していく。
トランザクション完了管理テーブル108の処理カウンタの値が0になれば(S1002でYES)、トランザクション監視部101は、バックアップ開始要求をDB同期管理部102に出力してシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の分離を指示する(S1007)。
処理カウンタの値が0の場合(S1002でYES)は、トランザクション監視部101は、バックアップ開始要求をDB同期管理部102に出力してシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の分離を指示する(S1007)。
一方、処理カウンタの値が0でない場合(S1002でNO)、すなわち、処理が完了していないトランザクション(COMMITが入力されていないトランザクション)が存在している場合は、処理が完了していないトランザクションの完了を待つ。
より具体的には、トランザクション監視部101は、COMMITが入力される度に(S1003でYES)、トランザクション完了管理テーブル108の処理カウンタの値をデクリメントし(S1004)、STARTが入力される度に(S1005でYES)、START及びSTARTに後続する更新要求をトランザクション一時蓄積部105に蓄積させて(S1006)、処理カウンタの値が0になる(処理が完了していないトランザクションがなくなる)のを待つ。
バックアップ開始要求が入力される前は、トランザクション監視部101はSTARTが入力されると処理カウンタの値をインクリメントするとともに更新要求をDB同期管理部102に出力するが、バックアップ開始要求が入力された(S1001)後は、STARTが入力されても処理カウンタの値はインクリメントせずに更新要求をトランザクション一時蓄積部105に蓄積する。
このため、処理カウンタの値はCOMMITの入力とともに減少していく。
トランザクション完了管理テーブル108の処理カウンタの値が0になれば(S1002でYES)、トランザクション監視部101は、バックアップ開始要求をDB同期管理部102に出力してシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の分離を指示する(S1007)。
このように、トランザクション監視部101は、バックアップ開始要求を入力した際に、データベースシステム200におけるトランザクションの処理状況を監視し、処理中のトランザクションが存在していれば処理中のトランザクションがなくなる(処理カウンタの値が0になる)まで、バックアップ開始要求の出力を保留し、処理中のトランザクションがなくなったときに、バックアップ開始要求を出力する。
また、トランザクション監視部101は、バックアップ開始要求を入力してからDB同期管理部102にバックアップ開始要求を出力するまでの間に発生したトランザクション内の更新要求をトランザクション一時蓄積部105に蓄積させる。
なお、トランザクション監視部101は、監視対象トランザクションテーブル109を参照して、S1003においてCOMMITの入力を監視し、S1005においてSTARTの入力を監視する。
また、トランザクション監視部101は、バックアップ開始要求を入力してからDB同期管理部102にバックアップ開始要求を出力するまでの間に発生したトランザクション内の更新要求をトランザクション一時蓄積部105に蓄積させる。
なお、トランザクション監視部101は、監視対象トランザクションテーブル109を参照して、S1003においてCOMMITの入力を監視し、S1005においてSTARTの入力を監視する。
前述したように、トランザクション監視部101は、処理カウンタの値が0の場合に(S1002でYES)、バックアップ開始要求をDB同期管理部102に出力してシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の分離を指示し、DB同期管理部102がバックアップ開始要求を入力し、DB同期状態管理テーブル110の状態を「分離中」から「分離」に変更する(S1007)。
DB同期状態管理テーブル110の状態が「分離」になると、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204がシステムA用DB(プライマリ)201及びシステムB用DB(プライマリ)202から切り離され、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204に対する更新はできなくなる。
一方で、システムA用DB(プライマリ)201及びシステムB用DB(プライマリ)202は通常の状態で稼働しており、更新が可能である。
トランザクション監視部101は、バックアップ開始要求をDB同期管理部102に出力した際にトランザクション一時蓄積部105に更新要求が蓄積されている場合(S1008でYES)は、トランザクション一時蓄積部105に蓄積されている更新要求をDB同期管理部102に出力する(S1009)。
DB同期状態管理テーブル110の状態が「分離」になると、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204がシステムA用DB(プライマリ)201及びシステムB用DB(プライマリ)202から切り離され、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204に対する更新はできなくなる。
一方で、システムA用DB(プライマリ)201及びシステムB用DB(プライマリ)202は通常の状態で稼働しており、更新が可能である。
トランザクション監視部101は、バックアップ開始要求をDB同期管理部102に出力した際にトランザクション一時蓄積部105に更新要求が蓄積されている場合(S1008でYES)は、トランザクション一時蓄積部105に蓄積されている更新要求をDB同期管理部102に出力する(S1009)。
DB同期管理部102では、トランザクション監視部101から入力した更新要求をプライマリDB更新部103とセカンダリDB更新部104に出力し、プライマリDB更新部103はDB同期管理部102から入力した更新要求に従ってシステムA用DB(プライマリ)201とシステムB用DB(プライマリ)202の更新を行う。
一方、セカンダリDB更新部104では、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204が切り離されているため、DB同期管理部102から入力した更新要求はセカンダリデータベース更新要求蓄積部106に蓄積する。
また、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204が切り離されている間にトランザクション監視部101が入力した更新要求は、トランザクション監視部101からDB同期管理部102を経由してプライマリDB更新部103とセカンダリDB更新部104に出力される。
つまり、S1007以降にトランザクション監視部101が入力したSTARTに対しては、S1006とは異なり、トランザクション完了管理テーブル108の処理カウンタの値がインクリメントされ、START及びSTARTに後続する更新要求がDB同期管理部102に出力され、プライマリDB更新部103及びセカンダリDB更新部104に出力される。
プライマリDB更新部103は、更新要求に従ってシステムA用DB(プライマリ)201とシステムB用DB(プライマリ)202の更新を行い、セカンダリDB更新部104は、入力した更新要求をセカンダリデータベース更新要求蓄積部106に蓄積させる。
つまり、セカンダリDB更新部104は、S1006においてトランザクション一時蓄積部105に蓄積され、トランザクション監視部101により出力された(S1009)更新要求をセカンダリデータベース更新要求蓄積部106に蓄積させる。
更に、セカンダリDB更新部104は、DB同期管理部102によりシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の分離処理が開始されてから後述するシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の結合処理が開始されるまでの間(S1007とS1010の間)にトランザクション監視部101が入力し、トランザクション監視部101が出力したシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204に対する更新要求をセカンダリデータベース更新要求蓄積部106に蓄積させる。
一方、セカンダリDB更新部104では、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204が切り離されているため、DB同期管理部102から入力した更新要求はセカンダリデータベース更新要求蓄積部106に蓄積する。
また、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204が切り離されている間にトランザクション監視部101が入力した更新要求は、トランザクション監視部101からDB同期管理部102を経由してプライマリDB更新部103とセカンダリDB更新部104に出力される。
つまり、S1007以降にトランザクション監視部101が入力したSTARTに対しては、S1006とは異なり、トランザクション完了管理テーブル108の処理カウンタの値がインクリメントされ、START及びSTARTに後続する更新要求がDB同期管理部102に出力され、プライマリDB更新部103及びセカンダリDB更新部104に出力される。
プライマリDB更新部103は、更新要求に従ってシステムA用DB(プライマリ)201とシステムB用DB(プライマリ)202の更新を行い、セカンダリDB更新部104は、入力した更新要求をセカンダリデータベース更新要求蓄積部106に蓄積させる。
つまり、セカンダリDB更新部104は、S1006においてトランザクション一時蓄積部105に蓄積され、トランザクション監視部101により出力された(S1009)更新要求をセカンダリデータベース更新要求蓄積部106に蓄積させる。
更に、セカンダリDB更新部104は、DB同期管理部102によりシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の分離処理が開始されてから後述するシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の結合処理が開始されるまでの間(S1007とS1010の間)にトランザクション監視部101が入力し、トランザクション監視部101が出力したシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204に対する更新要求をセカンダリデータベース更新要求蓄積部106に蓄積させる。
その後、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204のバックアップが終了すると、バックアップの終了を通知するバックアップ終了通知をトランザクション監視部101が入力する(S1010)。
バックアップ終了通知が入力されると、トランザクション監視部101はDB同期管理部102にDB同期状態管理テーブル110の状態を「分離」から「同期中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の状態を「分離」から「同期中」に変更する(S1010)。
トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
DB同期状態管理テーブル110の状態が「同期中」になるとセカンダリDB更新部104によるシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の結合処理が開始される。
つまり、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の更新が可能になるので、セカンダリDB更新部104はセカンダリデータベース更新要求蓄積部106に蓄積されている更新要求に基づいてシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204のデータ内容の更新を行い、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204のデータ内容の更新が完了するとDB更新完了通知を出力する。
セカンダリDB更新部104から出力されたDB更新完了通知はDB同期管理部102を介してトランザクション監視部101に到達し、トランザクション監視部101がDB更新完了通知を入力する(S1011)。
トランザクション監視部101はDB更新完了通知を入力すると、DB同期管理部102にDB同期状態管理テーブル110の状態を「同期中」から「同期」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の状態を「同期中」から「同期」に変更する(S1011)。
DB同期状態管理テーブル110の状態が「同期」になると、システムA用DB(プライマリ)201とシステムA用DB(セカンダリ)203、システムB用DB(プライマリ)202とシステムB用DB(セカンダリ)204はデータ内容が一致しており、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204は通常状態で稼働する。
バックアップ終了通知が入力されると、トランザクション監視部101はDB同期管理部102にDB同期状態管理テーブル110の状態を「分離」から「同期中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の状態を「分離」から「同期中」に変更する(S1010)。
トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
DB同期状態管理テーブル110の状態が「同期中」になるとセカンダリDB更新部104によるシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の結合処理が開始される。
つまり、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の更新が可能になるので、セカンダリDB更新部104はセカンダリデータベース更新要求蓄積部106に蓄積されている更新要求に基づいてシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204のデータ内容の更新を行い、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204のデータ内容の更新が完了するとDB更新完了通知を出力する。
セカンダリDB更新部104から出力されたDB更新完了通知はDB同期管理部102を介してトランザクション監視部101に到達し、トランザクション監視部101がDB更新完了通知を入力する(S1011)。
トランザクション監視部101はDB更新完了通知を入力すると、DB同期管理部102にDB同期状態管理テーブル110の状態を「同期中」から「同期」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の状態を「同期中」から「同期」に変更する(S1011)。
DB同期状態管理テーブル110の状態が「同期」になると、システムA用DB(プライマリ)201とシステムA用DB(セカンダリ)203、システムB用DB(プライマリ)202とシステムB用DB(セカンダリ)204はデータ内容が一致しており、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204は通常状態で稼働する。
次に、本実施の形態に係るデータベース管理装置100の動作の詳細を説明する。
ここでは、図2〜図6のフローチャートを参照して説明する。
ここでは、図2〜図6のフローチャートを参照して説明する。
トランザクション監視部101が、データベースへの更新要求、バックアップ開始要求、バックアップ終了通知のいずれかの入力待ち状態(図2のS101)において、データベースの更新要求を入力すると(図2のS102でNO、図2のS105でNO、図3のS107でYES)、トランザクション監視部101は、DB同期管理部102を介してDB同期状態管理テーブル110の状態が「分離中」であるかを確認する(図3のS108)。
DB同期状態管理テーブル110の状態が「分離中」でない場合(S108でNO)は、トランザクション監視部101は、S107で入力した更新要求の種類を判別する(図3のS109)。
S107で入力した更新要求がSTART(監視対象トランザクションテーブル109に登録されている更新要求)であれば、トランザクション監視部101はトランザクション完了管理テーブル108の処理カウンタの値を1インクリメントする(図3のS110)。
S107で入力した更新要求がCOMMIT(監視対象トランザクションテーブル109に登録されている更新要求)であれば、トランザクション監視部101はトランザクション完了管理テーブル108の処理カウンタの値を1デクリメントする(図3のS112)。
S112でデクリメントされた後は、処理がS101に戻る。
S110で処理カウンタがインクリメントされた場合、またはS109で判別した結果がSTARTでもCOMMITでもない場合、DB更新処理(図3のS111)が実施される。
DB更新処理の後、処理がS101に戻る。
DB同期状態管理テーブル110の状態が「分離中」でない場合(S108でNO)は、トランザクション監視部101は、S107で入力した更新要求の種類を判別する(図3のS109)。
S107で入力した更新要求がSTART(監視対象トランザクションテーブル109に登録されている更新要求)であれば、トランザクション監視部101はトランザクション完了管理テーブル108の処理カウンタの値を1インクリメントする(図3のS110)。
S107で入力した更新要求がCOMMIT(監視対象トランザクションテーブル109に登録されている更新要求)であれば、トランザクション監視部101はトランザクション完了管理テーブル108の処理カウンタの値を1デクリメントする(図3のS112)。
S112でデクリメントされた後は、処理がS101に戻る。
S110で処理カウンタがインクリメントされた場合、またはS109で判別した結果がSTARTでもCOMMITでもない場合、DB更新処理(図3のS111)が実施される。
DB更新処理の後、処理がS101に戻る。
DB更新処理(S111)の詳細は、図6に示す通りである。
更新要求がトランザクション監視部101からDB同期管理部102を介してプライマリDB更新部103及びセカンダリDB更新部104に出力され、プライマリDB更新部103によりプライマリデータベース(システムA用DB(プライマリ)201とシステムB用DB(プライマリ)202)は更新要求に従って更新処理される(S401)。
また、セカンダリDB更新部104は、DB同期状態管理テーブル110の状態が「同期」であるかどうかを確認し(S402)、この時点では、DB同期状態管理テーブル110の状態は「同期」であるため(S402でYES)、セカンダリDB更新部104はセカンダリデータベース(システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)を更新要求に従って更新処理する(S403)。
このように、プライマリDB更新部103は、DB同期状態管理テーブル110の状態に関わらずデータベースの更新要求を受け付けるとプライマリデータベースの更新処理を行う。
一方、セカンダリDB更新部104は、DB同期状態管理テーブル110を参照し、「同期」状態であれば要求された更新処理を即時実行する。
「同期」状態以外の場合は、セカンダリデータベースはバックアップのために切り離されている状態であると判断し、更新処理は実行せずに要求をセカンダリデータベース更新要求蓄積部106に蓄積し、更新完了を通知する。
更新要求がトランザクション監視部101からDB同期管理部102を介してプライマリDB更新部103及びセカンダリDB更新部104に出力され、プライマリDB更新部103によりプライマリデータベース(システムA用DB(プライマリ)201とシステムB用DB(プライマリ)202)は更新要求に従って更新処理される(S401)。
また、セカンダリDB更新部104は、DB同期状態管理テーブル110の状態が「同期」であるかどうかを確認し(S402)、この時点では、DB同期状態管理テーブル110の状態は「同期」であるため(S402でYES)、セカンダリDB更新部104はセカンダリデータベース(システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)を更新要求に従って更新処理する(S403)。
このように、プライマリDB更新部103は、DB同期状態管理テーブル110の状態に関わらずデータベースの更新要求を受け付けるとプライマリデータベースの更新処理を行う。
一方、セカンダリDB更新部104は、DB同期状態管理テーブル110を参照し、「同期」状態であれば要求された更新処理を即時実行する。
「同期」状態以外の場合は、セカンダリデータベースはバックアップのために切り離されている状態であると判断し、更新処理は実行せずに要求をセカンダリデータベース更新要求蓄積部106に蓄積し、更新完了を通知する。
図3のS108の判断においてDB同期状態管理テーブル110の状態が「分離中」である場合(図3のS108でYES)は、トランザクション監視部101はS107で入力した更新要求が新規なトランザクションのものかどうかを判断する(図3のS115)。
新規なトランザクションとは、DB同期状態管理テーブル110の状態が「分離中」になった後に開始したトランザクション(DB同期状態管理テーブル110の状態が「分離中」になった後にSTARTを入力したトランザクション)である。
新規なトランザクションの場合(図3のS115でYES)は、トランザクション監視部101は、S107で入力した更新要求をトランザクション一時蓄積部105に蓄積させる(図3のS116)。
一方、新規なトランザクションでない場合(DB同期状態管理テーブル110の状態が「分離中」になる前にSTARTが入力されていたトランザクションの場合)は、S109に移行する。
なお、この場合は、S107で入力した更新要求は通常はSTARTではないので、S109の判定の結果、DB更新処理(S111)又はトランザクション完了管理テーブル108の処理カウンタのデクリメント(S112)が実施される。
DB更新処理(S111)の詳細は、前述したとおりである。
新規なトランザクションとは、DB同期状態管理テーブル110の状態が「分離中」になった後に開始したトランザクション(DB同期状態管理テーブル110の状態が「分離中」になった後にSTARTを入力したトランザクション)である。
新規なトランザクションの場合(図3のS115でYES)は、トランザクション監視部101は、S107で入力した更新要求をトランザクション一時蓄積部105に蓄積させる(図3のS116)。
一方、新規なトランザクションでない場合(DB同期状態管理テーブル110の状態が「分離中」になる前にSTARTが入力されていたトランザクションの場合)は、S109に移行する。
なお、この場合は、S107で入力した更新要求は通常はSTARTではないので、S109の判定の結果、DB更新処理(S111)又はトランザクション完了管理テーブル108の処理カウンタのデクリメント(S112)が実施される。
DB更新処理(S111)の詳細は、前述したとおりである。
一方、図3のS107においてNOであった場合は、処理がS101に戻る。
なお、S107でNOであった場合に、不正な入力である場合は所定のエラー処理を行ってもよい。
また、バックアップ開始要求、バックアップ終了通知、更新要求以外の適正な入力である場合には、当該入力に対応する処理を行う。
なお、S107でNOであった場合に、不正な入力である場合は所定のエラー処理を行ってもよい。
また、バックアップ開始要求、バックアップ終了通知、更新要求以外の適正な入力である場合には、当該入力に対応する処理を行う。
トランザクション監視部101が、入力待ち状態(図2のS101)において、バックアップ開始要求を入力すると(図2のS102でYES)、DB分離処理(S103)が実行され、更に、トランザクション一時蓄積部105に蓄積されている更新要求の各々に対してDB更新処理(S104)が実行される。
DB分離処理(S103)の詳細は、図4に示す通りである。
まず、トランザクション監視部101がDB同期管理部102にDB同期状態管理テーブル110の状態を「同期」から「分離中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の状態を「同期」から「分離中」に変更する(S201)。
前述したように、トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
次に、トランザクション監視部101はトランザクション完了管理テーブル108の処理カウンタの値が0になるのを待つ(S102)。
処理カウンタの値が0になると処理中のトランザクションが存在しない状態となるので、トランザクション監視部101はバックアップ開始要求をDB同期管理部102に出力してシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の分離を指示する(S203)。
DB同期管理部102はバックアップ開始要求を入力すると、DB同期状態管理テーブル110の状態を「分離中」から「分離」に変更する(S204)。
トランザクション監視部101は、バックアップ開始要求に対して、バックアップ可能となったことを回答する(S205)。
まず、トランザクション監視部101がDB同期管理部102にDB同期状態管理テーブル110の状態を「同期」から「分離中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の状態を「同期」から「分離中」に変更する(S201)。
前述したように、トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
次に、トランザクション監視部101はトランザクション完了管理テーブル108の処理カウンタの値が0になるのを待つ(S102)。
処理カウンタの値が0になると処理中のトランザクションが存在しない状態となるので、トランザクション監視部101はバックアップ開始要求をDB同期管理部102に出力してシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の分離を指示する(S203)。
DB同期管理部102はバックアップ開始要求を入力すると、DB同期状態管理テーブル110の状態を「分離中」から「分離」に変更する(S204)。
トランザクション監視部101は、バックアップ開始要求に対して、バックアップ可能となったことを回答する(S205)。
DB更新処理(S104)の詳細は、図6に示す通りである。
トランザクション一時蓄積部105に蓄積されている更新要求がトランザクション監視部101からDB同期管理部102を介して、プライマリDB更新部103及びセカンダリDB更新部104に出力され、プライマリDB更新部103によりプライマリデータベース(システムA用DB(プライマリ)201とシステムB用DB(プライマリ)202)は更新要求に従って更新処理される(S401)。
また、セカンダリDB更新部104は、DB同期状態管理テーブル110の状態が「同期」であるかどうかを確認し(S402)、この時点では、DB同期状態管理テーブル110の状態が「分離」であるため(S402でNO)、セカンダリDB更新部104は、セカンダリデータベース(システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)についてはセカンダリデータベース更新要求蓄積部106に更新要求を蓄積し、セカンダリデータベースの更新処理が行われない。
これで、セカンダリデータベースは、トランザクションが完了し、データベースの整合性が保たれ、かつ、更新が発生しない状態となっているのでセカンダリデータベースからバックアップを取得することができる。
この結果、整合性がとれたデータをバックアップできる。
トランザクション一時蓄積部105に蓄積されている更新要求がトランザクション監視部101からDB同期管理部102を介して、プライマリDB更新部103及びセカンダリDB更新部104に出力され、プライマリDB更新部103によりプライマリデータベース(システムA用DB(プライマリ)201とシステムB用DB(プライマリ)202)は更新要求に従って更新処理される(S401)。
また、セカンダリDB更新部104は、DB同期状態管理テーブル110の状態が「同期」であるかどうかを確認し(S402)、この時点では、DB同期状態管理テーブル110の状態が「分離」であるため(S402でNO)、セカンダリDB更新部104は、セカンダリデータベース(システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)についてはセカンダリデータベース更新要求蓄積部106に更新要求を蓄積し、セカンダリデータベースの更新処理が行われない。
これで、セカンダリデータベースは、トランザクションが完了し、データベースの整合性が保たれ、かつ、更新が発生しない状態となっているのでセカンダリデータベースからバックアップを取得することができる。
この結果、整合性がとれたデータをバックアップできる。
また、トランザクション監視部101が、入力待ち状態(図2のS101)において、バックアップ終了通知を入力すると(図2のS102でNO、図2のS105でYES)、DB結合処理(S106)が実行される。
DB結合処理の後、処理がS101に戻る。
DB結合処理の後、処理がS101に戻る。
DB結合処理(S106)の詳細は、図5に示す通りである。
トランザクション監視部101がDB同期管理部102にデータベースの結合を要求し、また、DB同期状態管理テーブル110の状態を「分離」から「同期中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の状態を「分離」から「同期中」に変更する(S301)。
トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
また、DB同期管理部102はセカンダリDB更新部104に対してデータベースの同期を要求する。
セカンダリDB更新部104はセカンダリデータベース更新要求蓄積部106に蓄積されている更新要求がなくなるまで、更新要求ごとに、セカンダリデータベース(システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)のデータ内容の更新を行う(S302)。
そして、セカンダリデータベース(システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)のデータ内容の更新が完了すると、セカンダリDB更新部104はDB更新完了通知を出力する。
トランザクション監視部101がDB更新完了通知を入力すると、DB同期管理部102にDB同期状態管理テーブル110の状態を「同期中」から「同期」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の状態を「同期中」から「同期」に変更する(S303)。
これにより通常状態である「同期」状態に戻ることができる。
トランザクション監視部101がDB同期管理部102にデータベースの結合を要求し、また、DB同期状態管理テーブル110の状態を「分離」から「同期中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の状態を「分離」から「同期中」に変更する(S301)。
トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
また、DB同期管理部102はセカンダリDB更新部104に対してデータベースの同期を要求する。
セカンダリDB更新部104はセカンダリデータベース更新要求蓄積部106に蓄積されている更新要求がなくなるまで、更新要求ごとに、セカンダリデータベース(システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)のデータ内容の更新を行う(S302)。
そして、セカンダリデータベース(システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)のデータ内容の更新が完了すると、セカンダリDB更新部104はDB更新完了通知を出力する。
トランザクション監視部101がDB更新完了通知を入力すると、DB同期管理部102にDB同期状態管理テーブル110の状態を「同期中」から「同期」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の状態を「同期中」から「同期」に変更する(S303)。
これにより通常状態である「同期」状態に戻ることができる。
以上のように、データベースをプライマリとセカンダリに2重化し、トランザクション監視部101によりすべてのデータ更新処理の完了を監視し、処理中のトランザクションが存在しないタイミングでセカンダリデータベースを切り離すことでデータベースの整合性を確保したバックアップを実現することが可能となる。
また、監視対象トランザクションテーブルに監視対象とすべき更新処理(具体的には、STARTとCOMMIT)を登録可能とすることで、バックアップに影響のないトランザクションを無視することが可能となり、バックアップ開始時のすべての更新処理が完了している状態が発生する確率を上げることができる。
また、セカンダリDB更新部104にセカンダリデータベース更新要求蓄積部106を設けることでバックアップ完了後にプライマリデータベースと同期が取れた状態まで回復することを可能としている。
また、監視対象トランザクションテーブルに監視対象とすべき更新処理(具体的には、STARTとCOMMIT)を登録可能とすることで、バックアップに影響のないトランザクションを無視することが可能となり、バックアップ開始時のすべての更新処理が完了している状態が発生する確率を上げることができる。
また、セカンダリDB更新部104にセカンダリデータベース更新要求蓄積部106を設けることでバックアップ完了後にプライマリデータベースと同期が取れた状態まで回復することを可能としている。
なお、本実施の形態では、データベースを2重化した例で説明したが、高信頼化のために3重化以上の構成としてもよい。
その場合は、どれか一つのデータベースをバックアップ用のデータベースとして設定し、そこにデータベース更新要求蓄積部を設けて、そのデータベースをバックアップ時の切り離し対象として処理すればよい。
他のデータベースはプライマリデータベースと同じ動作をする。
その場合は、どれか一つのデータベースをバックアップ用のデータベースとして設定し、そこにデータベース更新要求蓄積部を設けて、そのデータベースをバックアップ時の切り離し対象として処理すればよい。
他のデータベースはプライマリデータベースと同じ動作をする。
実施の形態2.
実施の形態1では、相互に関連する一対のデータベース(システムA用データベース、システムB用データベース)がプライマリデータベースとセカンダリデータベースという冗長構成になっている例を説明した。
本実施の形態では、二対以上のデータベースが冗長構成になっている例を説明する。
実施の形態1では、相互に関連する一対のデータベース(システムA用データベース、システムB用データベース)がプライマリデータベースとセカンダリデータベースという冗長構成になっている例を説明した。
本実施の形態では、二対以上のデータベースが冗長構成になっている例を説明する。
図11は、本実施の形態に係るデータベース管理装置100とデータベースシステム200の構成例を示す。
図11において、データベース管理装置100の構成は、図1と同様であり、データベースシステム200の構成が異なる。
図11に示すデータベースシステム200は、サブグループ1(205)とサブグループ2(210)に分類される。
サブグループ1(205)は、システムA用のデータベース(システムA用DB(プライマリ)201とシステムA用DB(セカンダリ)203)とシステムB用のデータベース(システムB用DB(プライマリ)202とシステムB用DB(セカンダリ)204)で構成される。
システムA用のデータベースとシステムB用のデータベースは、実施の形態1で説明したように、相互に連動しているデータベースであり、1つのトランザクションによりそれぞれのシステムのデータ更新が行われる。
サブグループ2(210)は、システムC用のデータベース(システムC用DB(プライマリ)206とシステムC用DB(セカンダリ)208)とシステムD用のデータベース(システムD用DB(プライマリ)207とシステムD用DB(セカンダリ)209)で構成される。
システムC用のデータベースとシステムD用のデータベースは、相互に連動しているデータベースであり、1つのトランザクションによりそれぞれのシステムのデータ更新が行われる。
なお、サブグループ1(205)とサブグループ2(210)は相互に独立しており、サブグループ1(205)ではサブグループ1(205)に対するトランザクションに従ってシステムA用DB(プライマリ)201、システムB用DB(プライマリ)202、システムA用DB(セカンダリ)203、システムB用DB(セカンダリ)204のデータの更新が行われる。
同様に、サブグループ2(210)ではサブグループ2(210)に対するトランザクションに従ってシステムC用DB(プライマリ)206、システムD用DB(プライマリ)207、システムC用DB(セカンダリ)208、システムD用DB(セカンダリ)209のデータの更新が行われる。
更に、バックアップのタイミングもサブグループ1(205)とサブグループ2(210)では一致している必要はない。
サブグループ1(205)では、サブグループ1(205)用のバックアップ開始要求が入力された際にセカンダリデータベースの切り離し及びバックアップが行われ、サブグループ2(210)では、サブグループ2(210)用のバックアップ開始要求が入力された際にセカンダリデータベースの切り離し及びバックアップが行われる。
なお、データベース管理装置100においてトランザクション一時蓄積部105及びセカンダリデータベース更新要求蓄積部106は、サブグループごとに、更新要求を蓄積可能である。
データベース管理装置100における各要素の動作は、本実施の形態において注記するものを除いては実施の形態1で説明したものと同様とする。
また、以降、サブグループはSGとも表記する。
図11において、データベース管理装置100の構成は、図1と同様であり、データベースシステム200の構成が異なる。
図11に示すデータベースシステム200は、サブグループ1(205)とサブグループ2(210)に分類される。
サブグループ1(205)は、システムA用のデータベース(システムA用DB(プライマリ)201とシステムA用DB(セカンダリ)203)とシステムB用のデータベース(システムB用DB(プライマリ)202とシステムB用DB(セカンダリ)204)で構成される。
システムA用のデータベースとシステムB用のデータベースは、実施の形態1で説明したように、相互に連動しているデータベースであり、1つのトランザクションによりそれぞれのシステムのデータ更新が行われる。
サブグループ2(210)は、システムC用のデータベース(システムC用DB(プライマリ)206とシステムC用DB(セカンダリ)208)とシステムD用のデータベース(システムD用DB(プライマリ)207とシステムD用DB(セカンダリ)209)で構成される。
システムC用のデータベースとシステムD用のデータベースは、相互に連動しているデータベースであり、1つのトランザクションによりそれぞれのシステムのデータ更新が行われる。
なお、サブグループ1(205)とサブグループ2(210)は相互に独立しており、サブグループ1(205)ではサブグループ1(205)に対するトランザクションに従ってシステムA用DB(プライマリ)201、システムB用DB(プライマリ)202、システムA用DB(セカンダリ)203、システムB用DB(セカンダリ)204のデータの更新が行われる。
同様に、サブグループ2(210)ではサブグループ2(210)に対するトランザクションに従ってシステムC用DB(プライマリ)206、システムD用DB(プライマリ)207、システムC用DB(セカンダリ)208、システムD用DB(セカンダリ)209のデータの更新が行われる。
更に、バックアップのタイミングもサブグループ1(205)とサブグループ2(210)では一致している必要はない。
サブグループ1(205)では、サブグループ1(205)用のバックアップ開始要求が入力された際にセカンダリデータベースの切り離し及びバックアップが行われ、サブグループ2(210)では、サブグループ2(210)用のバックアップ開始要求が入力された際にセカンダリデータベースの切り離し及びバックアップが行われる。
なお、データベース管理装置100においてトランザクション一時蓄積部105及びセカンダリデータベース更新要求蓄積部106は、サブグループごとに、更新要求を蓄積可能である。
データベース管理装置100における各要素の動作は、本実施の形態において注記するものを除いては実施の形態1で説明したものと同様とする。
また、以降、サブグループはSGとも表記する。
図12は、本実施の形態に係るトランザクション完了管理テーブル108の構成例を示す。
図12に示すように、本実施の形態では、トランザクション完了管理テーブル108にサブグループごとに処理カウンタを設けている。
図12に示すように、本実施の形態では、トランザクション完了管理テーブル108にサブグループごとに処理カウンタを設けている。
図13は、本実施の形態に係るDB同期状態管理テーブル110の構成例を示す。
図13に示すように、本実施の形態では、DB同期状態管理テーブル110はサブグループごとにデータベースの状態を管理している。
図13に示すように、本実施の形態では、DB同期状態管理テーブル110はサブグループごとにデータベースの状態を管理している。
次に、本実施の形態に係るデータベース管理装置100の動作の概要をトランザクション監視部101の動作を中心にして説明する。
ここでは、図18のフローチャートを参照して説明する。
なお、図18は、図10のフローチャートに対応する。
ここでは、図18のフローチャートを参照して説明する。
なお、図18は、図10のフローチャートに対応する。
トランザクション監視部101がバックアップ開始要求(分離要求)を入力する(S2000)。
なお、本実施の形態では、バックアップ開始要求にバックアップの対象となるサブグループ(分離対象サブグループの例)が示されているものとする。
また、本実施の形態では、更新要求にも更新要求の対象となるサブグループが示され、また、バックアップ終了通知にもバックアップが終了したサブグループが示されるものとする。
これら、バックアップ開始要求、バックアップ終了通知及び更新要求に示されているサブグループを対象サブグループ(対象SGとも表記する)と呼ぶ。
なお、本実施の形態では、バックアップ開始要求にバックアップの対象となるサブグループ(分離対象サブグループの例)が示されているものとする。
また、本実施の形態では、更新要求にも更新要求の対象となるサブグループが示され、また、バックアップ終了通知にもバックアップが終了したサブグループが示されるものとする。
これら、バックアップ開始要求、バックアップ終了通知及び更新要求に示されているサブグループを対象サブグループ(対象SGとも表記する)と呼ぶ。
次に、トランザクション監視部101は、バックアップ開始要求を解析して、対象サブグループを特定する(S2001)。
また、トランザクション監視部101はDB同期管理部102にDB同期状態管理テーブル110の対象サブグループの状態を「同期」から「分離中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の対象サブグループの状態を「同期」から「分離中」に変更する(S2001)。
トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
また、トランザクション監視部101はDB同期管理部102にDB同期状態管理テーブル110の対象サブグループの状態を「同期」から「分離中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の対象サブグループの状態を「同期」から「分離中」に変更する(S2001)。
トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
次に、トランザクション監視部101は対象サブグループについてトランザクション完了管理テーブル108の処理カウンタの値が0であるかどうかを確認する(S2002)。
対象サブグループについての処理カウンタの値が0の場合(S2002でYES)は、トランザクション監視部101は、バックアップ開始要求をDB同期管理部102に出力して対象サブグループのセカンダリデータベース(例えば、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)の分離を指示する(S2007)。
一方、対象サブグループについての処理カウンタの値が0でない場合(S2002でNO)、すなわち、対象サブグループについて処理が完了していないトランザクション(COMMITが入力されていないトランザクション)が存在している場合は、処理が完了していないトランザクションの処理完了を待つ。
より具体的には、トランザクション監視部101は、対象サブグループに対するCOMMITが入力される度に(S2003でYES)、トランザクション完了管理テーブル108の対象サブグループに対する処理カウンタの値をデクリメントし(S2004)、対象サブグループに対するSTARTが入力される度に(S2005でYES)、START及びSTARTに後続する更新要求をトランザクション一時蓄積部105に蓄積させて(S2006)、対象サブグループに対する処理カウンタの値が0になる(処理が完了していないトランザクションがなくなる)のを待つ。
トランザクション完了管理テーブル108の対象サブグループに対する処理カウンタの値が0になれば(S2002でYES)、トランザクション監視部101は、バックアップ開始要求をDB同期管理部102に出力して対象サブグループのセカンダリデータベース(例えば、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)の分離を指示する(S2007)。
対象サブグループについての処理カウンタの値が0の場合(S2002でYES)は、トランザクション監視部101は、バックアップ開始要求をDB同期管理部102に出力して対象サブグループのセカンダリデータベース(例えば、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)の分離を指示する(S2007)。
一方、対象サブグループについての処理カウンタの値が0でない場合(S2002でNO)、すなわち、対象サブグループについて処理が完了していないトランザクション(COMMITが入力されていないトランザクション)が存在している場合は、処理が完了していないトランザクションの処理完了を待つ。
より具体的には、トランザクション監視部101は、対象サブグループに対するCOMMITが入力される度に(S2003でYES)、トランザクション完了管理テーブル108の対象サブグループに対する処理カウンタの値をデクリメントし(S2004)、対象サブグループに対するSTARTが入力される度に(S2005でYES)、START及びSTARTに後続する更新要求をトランザクション一時蓄積部105に蓄積させて(S2006)、対象サブグループに対する処理カウンタの値が0になる(処理が完了していないトランザクションがなくなる)のを待つ。
トランザクション完了管理テーブル108の対象サブグループに対する処理カウンタの値が0になれば(S2002でYES)、トランザクション監視部101は、バックアップ開始要求をDB同期管理部102に出力して対象サブグループのセカンダリデータベース(例えば、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)の分離を指示する(S2007)。
このように、トランザクション監視部101は、バックアップ開始要求を入力した際に、対象サブグループごとにトランザクションの処理状況を監視し、対象サブグループについて処理中のトランザクションが存在していれば処理中のトランザクションがなくなる(処理カウンタの値が0になる)まで、バックアップ開始要求の出力を保留し、処理中のトランザクションがなくなったときに、バックアップ開始要求を出力する。
また、トランザクション監視部101は、バックアップ開始要求を入力してからDB同期管理部102にバックアップ開始要求を出力するまでの間に発生したトランザクション内の対象サブグループに対する更新要求をトランザクション一時蓄積部105に蓄積させる。
また、トランザクション監視部101は、バックアップ開始要求を入力してからDB同期管理部102にバックアップ開始要求を出力するまでの間に発生したトランザクション内の対象サブグループに対する更新要求をトランザクション一時蓄積部105に蓄積させる。
前述したように、トランザクション監視部101は、処理カウンタの値が0の場合に(S2002でYES)、バックアップ開始要求をDB同期管理部102に出力して対象サブグループのセカンダリデータベース(例えば、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)の分離を指示し、DB同期管理部102がバックアップ開始要求を入力し、DB同期状態管理テーブル110の対象サブグループの状態を「分離中」から「分離」に変更する(S2007)。
DB同期状態管理テーブル110の状態が「分離」になると、対象サブグループのセカンダリデータベース(例えば、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)がプライマリデータベース(例えば、システムA用DB(プライマリ)201及びシステムB用DB(プライマリ)202)から切り離され、セカンダリデータベースに対する更新はできなくなる。
一方で、プライマリデータベースは通常の状態で稼働しており、更新が可能である。
トランザクション監視部101は、バックアップ開始要求をDB同期管理部102に出力した際にトランザクション一時蓄積部105に対象サブグループに対する更新要求が蓄積されている場合(S2008でYES)は、トランザクション一時蓄積部105に蓄積されている対象サブグループに対する更新要求をDB同期管理部102に出力する(S2009)。
DB同期管理部102では、トランザクション監視部101から入力した更新要求をプライマリDB更新部103とセカンダリDB更新部104に出力し、プライマリDB更新部103はDB同期管理部102から入力した更新要求に従って対象サブグループのプライマリデータベースの更新を行う。
一方、セカンダリDB更新部104では、対象サブグループのセカンダリデータベースが切り離されているため、DB同期管理部102から入力した更新要求はセカンダリデータベース更新要求蓄積部106に蓄積する。
また、トランザクション監視部101からDB同期管理部102にバックアップ開始要求が出力された(S2007)後であって対象サブグループのセカンダリデータベースが切り離されている間にトランザクション監視部101が入力した更新要求は、トランザクション監視部101からDB同期管理部102を経由してプライマリDB更新部103とセカンダリDB更新部104に出力される。
つまり、S2007以降にトランザクション監視部101が入力したSTARTに対しては、S2006とは異なり、トランザクション完了管理テーブル108の処理カウンタの値がインクリメントされ、START及びSTARTに後続する更新要求がDB同期管理部102に出力され、プライマリDB更新部103及びセカンダリDB更新部104に出力される。
プライマリDB更新部103は、更新要求に従って対象サブグループのプライマリデータベースの更新を行い、セカンダリDB更新部104は、入力した更新要求をセカンダリデータベース更新要求蓄積部106に蓄積させる。
つまり、セカンダリDB更新部104は、S2006においてトランザクション一時蓄積部105に蓄積され、トランザクション監視部101により出力された(S2009)更新要求をセカンダリデータベース更新要求蓄積部106に蓄積させる。
更に、セカンダリDB更新部104は、DB同期管理部102により対象サブグループのセカンダリデータベースの分離処理が開始されてから対象サブグループのセカンダリデータベースの結合処理が開始されるまでの間(S2007とS2010の間)にトランザクション監視部101が入力し、トランザクション監視部101が出力した対象サブグループのセカンダリデータベースに対する更新要求をセカンダリデータベース更新要求蓄積部106に蓄積させる。
DB同期状態管理テーブル110の状態が「分離」になると、対象サブグループのセカンダリデータベース(例えば、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)がプライマリデータベース(例えば、システムA用DB(プライマリ)201及びシステムB用DB(プライマリ)202)から切り離され、セカンダリデータベースに対する更新はできなくなる。
一方で、プライマリデータベースは通常の状態で稼働しており、更新が可能である。
トランザクション監視部101は、バックアップ開始要求をDB同期管理部102に出力した際にトランザクション一時蓄積部105に対象サブグループに対する更新要求が蓄積されている場合(S2008でYES)は、トランザクション一時蓄積部105に蓄積されている対象サブグループに対する更新要求をDB同期管理部102に出力する(S2009)。
DB同期管理部102では、トランザクション監視部101から入力した更新要求をプライマリDB更新部103とセカンダリDB更新部104に出力し、プライマリDB更新部103はDB同期管理部102から入力した更新要求に従って対象サブグループのプライマリデータベースの更新を行う。
一方、セカンダリDB更新部104では、対象サブグループのセカンダリデータベースが切り離されているため、DB同期管理部102から入力した更新要求はセカンダリデータベース更新要求蓄積部106に蓄積する。
また、トランザクション監視部101からDB同期管理部102にバックアップ開始要求が出力された(S2007)後であって対象サブグループのセカンダリデータベースが切り離されている間にトランザクション監視部101が入力した更新要求は、トランザクション監視部101からDB同期管理部102を経由してプライマリDB更新部103とセカンダリDB更新部104に出力される。
つまり、S2007以降にトランザクション監視部101が入力したSTARTに対しては、S2006とは異なり、トランザクション完了管理テーブル108の処理カウンタの値がインクリメントされ、START及びSTARTに後続する更新要求がDB同期管理部102に出力され、プライマリDB更新部103及びセカンダリDB更新部104に出力される。
プライマリDB更新部103は、更新要求に従って対象サブグループのプライマリデータベースの更新を行い、セカンダリDB更新部104は、入力した更新要求をセカンダリデータベース更新要求蓄積部106に蓄積させる。
つまり、セカンダリDB更新部104は、S2006においてトランザクション一時蓄積部105に蓄積され、トランザクション監視部101により出力された(S2009)更新要求をセカンダリデータベース更新要求蓄積部106に蓄積させる。
更に、セカンダリDB更新部104は、DB同期管理部102により対象サブグループのセカンダリデータベースの分離処理が開始されてから対象サブグループのセカンダリデータベースの結合処理が開始されるまでの間(S2007とS2010の間)にトランザクション監視部101が入力し、トランザクション監視部101が出力した対象サブグループのセカンダリデータベースに対する更新要求をセカンダリデータベース更新要求蓄積部106に蓄積させる。
その後、対象サブグループのセカンダリデータベースのバックアップが終了すると、バックアップの終了を通知するバックアップ終了通知をトランザクション監視部101が入力する(S2010)。
バックアップ終了通知が入力されると、トランザクション監視部101はDB同期管理部102にDB同期状態管理テーブル110の対象サブグループの状態を「分離」から「同期中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の対象サブグループの状態を「分離」から「同期中」に変更する(S2010)。
トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
DB同期状態管理テーブル110の対象サブグループの状態が「同期中」になるとセカンダリDB更新部104による対象サブグループのセカンダリデータベースの結合処理が開始される。
セカンダリDB更新部104はセカンダリデータベース更新要求蓄積部106に蓄積されている更新要求に基づいて対象サブグループのセカンダリデータベースのデータ内容の更新を行い、対象サブグループのセカンダリデータベースのデータ内容の更新が完了するとDB更新完了通知を出力する。
セカンダリDB更新部104から出力されたDB更新完了通知はDB同期管理部102を介してトランザクション監視部101に到達し、トランザクション監視部101がDB更新完了通知を入力する(S2011)。
トランザクション監視部101はDB更新完了通知を入力すると、DB同期管理部102にDB同期状態管理テーブル110の対象サブグループの状態を「同期中」から「同期」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の対象サブグループの状態を「同期中」から「同期」に変更する(S2011)。
バックアップ終了通知が入力されると、トランザクション監視部101はDB同期管理部102にDB同期状態管理テーブル110の対象サブグループの状態を「分離」から「同期中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の対象サブグループの状態を「分離」から「同期中」に変更する(S2010)。
トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
DB同期状態管理テーブル110の対象サブグループの状態が「同期中」になるとセカンダリDB更新部104による対象サブグループのセカンダリデータベースの結合処理が開始される。
セカンダリDB更新部104はセカンダリデータベース更新要求蓄積部106に蓄積されている更新要求に基づいて対象サブグループのセカンダリデータベースのデータ内容の更新を行い、対象サブグループのセカンダリデータベースのデータ内容の更新が完了するとDB更新完了通知を出力する。
セカンダリDB更新部104から出力されたDB更新完了通知はDB同期管理部102を介してトランザクション監視部101に到達し、トランザクション監視部101がDB更新完了通知を入力する(S2011)。
トランザクション監視部101はDB更新完了通知を入力すると、DB同期管理部102にDB同期状態管理テーブル110の対象サブグループの状態を「同期中」から「同期」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の対象サブグループの状態を「同期中」から「同期」に変更する(S2011)。
なお、図18に示すS2002〜S2011の処理は、対象サブグループごとに行われる。
つまり、サブグループ1(205)に対するバックアップ開始要求とサブグループ2(210)に対するバックアップ開始要求が並行して発生した場合には、サブグループ1(205)に対する処理カウンタの値が0になれば、サブグループ2(210)に対する処理カウンタの値とは無関係に、サブグループ1(205)のセカンダリデータベースの分離、バックアップがなされる。
また、サブグループ1(205)に対する処理カウンタの値が0でなければ、サブグループ2(210)に対する処理カウンタの値とは無関係に、サブグループ1(205)に対する処理カウンタがデクリメントされ、また、サブグループ1(205)に対する更新要求がトランザクション一時蓄積部105に蓄積される。
また、サブグループ1(205)のセカンダリデータベースに対するバックアップが完了すれば、サブグループ2(210)のセカンダリデータベースに対するバックアップの状態に関わらず、サブグループ1(205)の状態が「同期中」、「同期」に変化する。
つまり、サブグループ1(205)に対するバックアップ開始要求とサブグループ2(210)に対するバックアップ開始要求が並行して発生した場合には、サブグループ1(205)に対する処理カウンタの値が0になれば、サブグループ2(210)に対する処理カウンタの値とは無関係に、サブグループ1(205)のセカンダリデータベースの分離、バックアップがなされる。
また、サブグループ1(205)に対する処理カウンタの値が0でなければ、サブグループ2(210)に対する処理カウンタの値とは無関係に、サブグループ1(205)に対する処理カウンタがデクリメントされ、また、サブグループ1(205)に対する更新要求がトランザクション一時蓄積部105に蓄積される。
また、サブグループ1(205)のセカンダリデータベースに対するバックアップが完了すれば、サブグループ2(210)のセカンダリデータベースに対するバックアップの状態に関わらず、サブグループ1(205)の状態が「同期中」、「同期」に変化する。
次に、本実施の形態に係るデータベース管理装置100の動作の詳細を説明する。
ここでは、図14〜図17のフローチャートを参照して説明する。
図14は図3のフローチャートに対応し、図15は図4のフローチャートに対応し、図16は図5のフローチャートに相当し、図17は図6のフローチャートに対応する。
なお、図16のフローに先行するフローは図2に示したS101〜S106である。
以下では、図2のS101〜S106を含めて、本実施の形態に係るデータベース管理装置100の動作の詳細を説明する。
ここでは、図14〜図17のフローチャートを参照して説明する。
図14は図3のフローチャートに対応し、図15は図4のフローチャートに対応し、図16は図5のフローチャートに相当し、図17は図6のフローチャートに対応する。
なお、図16のフローに先行するフローは図2に示したS101〜S106である。
以下では、図2のS101〜S106を含めて、本実施の形態に係るデータベース管理装置100の動作の詳細を説明する。
トランザクション監視部101が、データベースへの更新要求、バックアップ開始要求、バックアップ終了通知のいずれかの入力待ち状態(図2のS101)において、データベースの更新要求を入力すると(図2のS102でNO、図2のS105でNO、図14のS107でYES)、トランザクション監視部101は、更新要求を解析して、対象サブグループを特定する(図14のS701)。
次に、トランザクション監視部101は、DB同期管理部102を介してDB同期状態管理テーブル110の対象サブグループの状態が「分離中」であるかを確認する(図14のS702)。
DB同期状態管理テーブル110の対象サブグループの状態が「分離中」でない場合(S702でNO)は、トランザクション監視部101は、S107で入力した更新要求の種類を判別する(図14のS109)。
S107で入力した更新要求がSTART(監視対象トランザクションテーブル109に登録されている更新要求)であれば、トランザクション監視部101はトランザクション完了管理テーブル108の対象サブグループの対象サブグループに対する処理カウンタの値を1インクリメントする(図17のS703)。
S107で入力した更新要求がCOMMIT(監視対象トランザクションテーブル109に登録されている更新要求)であれば、トランザクション監視部101はトランザクション完了管理テーブル108の対象サブグループに対する処理カウンタの値を1デクリメントする(図14のS704)。
S704でデクリメントされた後は、処理がS101に戻る。
S703で処理カウンタがインクリメントされた場合、またはS109で判別した結果がSTARTでもCOMMITでもない場合、DB更新処理(図14のS111)が実施される。
DB更新処理の後、処理がS101に戻る。
次に、トランザクション監視部101は、DB同期管理部102を介してDB同期状態管理テーブル110の対象サブグループの状態が「分離中」であるかを確認する(図14のS702)。
DB同期状態管理テーブル110の対象サブグループの状態が「分離中」でない場合(S702でNO)は、トランザクション監視部101は、S107で入力した更新要求の種類を判別する(図14のS109)。
S107で入力した更新要求がSTART(監視対象トランザクションテーブル109に登録されている更新要求)であれば、トランザクション監視部101はトランザクション完了管理テーブル108の対象サブグループの対象サブグループに対する処理カウンタの値を1インクリメントする(図17のS703)。
S107で入力した更新要求がCOMMIT(監視対象トランザクションテーブル109に登録されている更新要求)であれば、トランザクション監視部101はトランザクション完了管理テーブル108の対象サブグループに対する処理カウンタの値を1デクリメントする(図14のS704)。
S704でデクリメントされた後は、処理がS101に戻る。
S703で処理カウンタがインクリメントされた場合、またはS109で判別した結果がSTARTでもCOMMITでもない場合、DB更新処理(図14のS111)が実施される。
DB更新処理の後、処理がS101に戻る。
DB更新処理(S111)の詳細は、図17に示す通りである。
更新要求がトランザクション監視部101からDB同期管理部102を介してプライマリDB更新部103及びセカンダリDB更新部104に出力され、プライマリDB更新部103によりプライマリデータベース(例えば、システムA用DB(プライマリ)201とシステムB用DB(プライマリ)202)は更新要求に従って更新処理される(S401)。
また、セカンダリDB更新部104は、DB同期管理部102から入力した更新要求を解析し、対象サブグループを特定する(S801)。
そして、セカンダリDB更新部104は、DB同期状態管理テーブル110の対象サブグループの状態が「同期」であるかどうかを確認し(S802)、この時点では、DB同期状態管理テーブル110の対象サブグループの状態は「同期」であるため(S802でYES)、対象サブグループのセカンダリデータベース(例えば、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)も更新要求に従って更新処理される(S403)。
更新要求がトランザクション監視部101からDB同期管理部102を介してプライマリDB更新部103及びセカンダリDB更新部104に出力され、プライマリDB更新部103によりプライマリデータベース(例えば、システムA用DB(プライマリ)201とシステムB用DB(プライマリ)202)は更新要求に従って更新処理される(S401)。
また、セカンダリDB更新部104は、DB同期管理部102から入力した更新要求を解析し、対象サブグループを特定する(S801)。
そして、セカンダリDB更新部104は、DB同期状態管理テーブル110の対象サブグループの状態が「同期」であるかどうかを確認し(S802)、この時点では、DB同期状態管理テーブル110の対象サブグループの状態は「同期」であるため(S802でYES)、対象サブグループのセカンダリデータベース(例えば、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)も更新要求に従って更新処理される(S403)。
図14のS702の判断においてDB同期状態管理テーブル110の対象サブグループの状態が「分離中」である場合(図14のS702でYES)は、トランザクション監視部101はS107で入力した更新要求が新規なトランザクションかどうかを判断する(図14のS115)。
新規なトランザクションの場合(図14のS115でYES)は、トランザクション監視部101は、S107で入力した更新要求をトランザクション一時蓄積部105に蓄積させる(図3のS116)。
一方、新規なトランザクションでない場合は、S109に移行する。
なお、この場合は、S107で入力した更新要求は通常はSTARTではないので、S109の判定の結果、DB更新処理(S111)又はトランザクション完了管理テーブル108の処理カウンタのデクリメントが実施される。
DB更新処理(S111)の詳細は、前述したとおりである。
新規なトランザクションの場合(図14のS115でYES)は、トランザクション監視部101は、S107で入力した更新要求をトランザクション一時蓄積部105に蓄積させる(図3のS116)。
一方、新規なトランザクションでない場合は、S109に移行する。
なお、この場合は、S107で入力した更新要求は通常はSTARTではないので、S109の判定の結果、DB更新処理(S111)又はトランザクション完了管理テーブル108の処理カウンタのデクリメントが実施される。
DB更新処理(S111)の詳細は、前述したとおりである。
一方、図14のS107においてNOであった場合は、処理がS101に戻る。
なお、S107でNOであった場合に、不正な入力である場合は所定のエラー処理を行ってもよい。
また、バックアップ開始要求、バックアップ終了通知、更新要求以外の適正な入力である場合には、当該入力に対応する処理を行う。
なお、S107でNOであった場合に、不正な入力である場合は所定のエラー処理を行ってもよい。
また、バックアップ開始要求、バックアップ終了通知、更新要求以外の適正な入力である場合には、当該入力に対応する処理を行う。
トランザクション監視部101が、入力待ち状態(図2のS101)において、バックアップ開始要求を入力すると(図2のS102でYES)、DB分離処理(S103)が実行され、更に、トランザクション一時蓄積部105に蓄積されている更新要求の各々に対してDB更新処理(S104)が実行される。
DB分離処理(S103)の詳細は、図15に示す通りである。
まず、トランザクション監視部101がバックアップ開始要求を解析して、対象サブグループを特定する(S501)。
次に、トランザクション監視部101がDB同期管理部102にDB同期状態管理テーブル110の対象サブグループの状態を「同期」から「分離中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の対象サブグループの状態を「同期」から「分離中」に変更する(S502)。
前述したように、トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
次に、トランザクション監視部101はトランザクション完了管理テーブル108の対象サブグループの処理カウンタの値が0になるのを待つ(S503)。
処理カウンタの値が0になると処理中のトランザクションが存在しない状態となるので、トランザクション監視部101はバックアップ開始要求をDB同期管理部102に出力してシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の分離を指示する(S504)。
DB同期管理部102はバックアップ開始要求を入力すると、DB同期状態管理テーブル110の対象サブグループの状態を「分離中」から「分離」に変更する(S505)。
トランザクション監視部101は、バックアップ開始要求に対して、バックアップ可能となったことを回答する(S205)。
まず、トランザクション監視部101がバックアップ開始要求を解析して、対象サブグループを特定する(S501)。
次に、トランザクション監視部101がDB同期管理部102にDB同期状態管理テーブル110の対象サブグループの状態を「同期」から「分離中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の対象サブグループの状態を「同期」から「分離中」に変更する(S502)。
前述したように、トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
次に、トランザクション監視部101はトランザクション完了管理テーブル108の対象サブグループの処理カウンタの値が0になるのを待つ(S503)。
処理カウンタの値が0になると処理中のトランザクションが存在しない状態となるので、トランザクション監視部101はバックアップ開始要求をDB同期管理部102に出力してシステムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204の分離を指示する(S504)。
DB同期管理部102はバックアップ開始要求を入力すると、DB同期状態管理テーブル110の対象サブグループの状態を「分離中」から「分離」に変更する(S505)。
トランザクション監視部101は、バックアップ開始要求に対して、バックアップ可能となったことを回答する(S205)。
DB更新処理(S104)の詳細は、図17に示す通りである。
トランザクション一時蓄積部105に蓄積されている更新要求がトランザクション監視部101からDB同期管理部102を介して、プライマリDB更新部103及びセカンダリDB更新部104に出力され、プライマリDB更新部103によりプライマリデータベース(例えば、システムA用DB(プライマリ)201とシステムB用DB(プライマリ)202)は更新要求に従って更新処理される(S401)。
また、セカンダリDB更新部104は、DB同期管理部102から入力した更新要求を解析し、対象サブグループを特定する(S801)。
そして、セカンダリDB更新部104は、DB同期状態管理テーブル110の対象サブグループの状態が「同期」であるかどうかを確認し(S802)、この時点では、DB同期状態管理テーブル110の対象サブグループの状態が「分離」であるため(S802でNO)、対象サブグループのセカンダリデータベース(例えば、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)についてはセカンダリDB更新部104がセカンダリデータベース更新要求蓄積部106に更新要求を蓄積し、セカンダリデータベースの更新処理が行われない。
トランザクション一時蓄積部105に蓄積されている更新要求がトランザクション監視部101からDB同期管理部102を介して、プライマリDB更新部103及びセカンダリDB更新部104に出力され、プライマリDB更新部103によりプライマリデータベース(例えば、システムA用DB(プライマリ)201とシステムB用DB(プライマリ)202)は更新要求に従って更新処理される(S401)。
また、セカンダリDB更新部104は、DB同期管理部102から入力した更新要求を解析し、対象サブグループを特定する(S801)。
そして、セカンダリDB更新部104は、DB同期状態管理テーブル110の対象サブグループの状態が「同期」であるかどうかを確認し(S802)、この時点では、DB同期状態管理テーブル110の対象サブグループの状態が「分離」であるため(S802でNO)、対象サブグループのセカンダリデータベース(例えば、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)についてはセカンダリDB更新部104がセカンダリデータベース更新要求蓄積部106に更新要求を蓄積し、セカンダリデータベースの更新処理が行われない。
また、トランザクション監視部101が、入力待ち状態(図2のS101)において、バックアップ終了通知を入力すると(図2のS102でNO、図2のS105でYES)、DB結合処理(S106)が実行される。
DB結合処理の後、処理がS101に戻る。
DB結合処理の後、処理がS101に戻る。
DB結合処理(S106)の詳細は、図16に示す通りである。
トランザクション監視部101がDB同期管理部102にデータベースの結合を要求し、また、DB同期状態管理テーブル110の対象サブグループの状態を「分離」から「同期中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の対象サブグループの状態を「分離」から「同期中」に変更する(S601)。
トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
また、DB同期管理部102はセカンダリDB更新部104に対してデータベースの同期を要求する。
セカンダリDB更新部104はセカンダリデータベース更新要求蓄積部106に蓄積されている更新要求がなくなるまで、更新要求ごとに、対象サブグループのセカンダリデータベース(例えば、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)のデータ内容の更新を行う(S602)。
そして、対象サブグループのセカンダリデータベースのデータ内容の更新が完了すると、セカンダリDB更新部104はDB更新完了通知を出力する。
トランザクション監視部101がDB更新完了通知を入力すると、DB同期管理部102にDB同期状態管理テーブル110の対象サブグループの状態を「同期中」から「同期」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の対象サブグループの状態を「同期中」から「同期」に変更する(S303)。
これにより通常状態である「同期」状態に戻ることができる。
トランザクション監視部101がDB同期管理部102にデータベースの結合を要求し、また、DB同期状態管理テーブル110の対象サブグループの状態を「分離」から「同期中」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の対象サブグループの状態を「分離」から「同期中」に変更する(S601)。
トランザクション監視部101が直接DB同期状態管理テーブル110の状態を変更できる場合は、トランザクション監視部101が直接変更してもよい。
また、DB同期管理部102はセカンダリDB更新部104に対してデータベースの同期を要求する。
セカンダリDB更新部104はセカンダリデータベース更新要求蓄積部106に蓄積されている更新要求がなくなるまで、更新要求ごとに、対象サブグループのセカンダリデータベース(例えば、システムA用DB(セカンダリ)203とシステムB用DB(セカンダリ)204)のデータ内容の更新を行う(S602)。
そして、対象サブグループのセカンダリデータベースのデータ内容の更新が完了すると、セカンダリDB更新部104はDB更新完了通知を出力する。
トランザクション監視部101がDB更新完了通知を入力すると、DB同期管理部102にDB同期状態管理テーブル110の対象サブグループの状態を「同期中」から「同期」に変更するように指示し、DB同期管理部102がDB同期状態管理テーブル110の対象サブグループの状態を「同期中」から「同期」に変更する(S303)。
これにより通常状態である「同期」状態に戻ることができる。
以上のように、データベースをプライマリとセカンダリに2重化し、また、データベースを2以上のサブグループに分類している場合にも、トランザクション監視部101によりサブグループごとにすべてのデータ更新処理の完了を監視し、サブグループごとに処理中のトランザクションが存在しないタイミングでセカンダリデータベースを切り離すことでデータベースの整合性を確保したバックアップを実現することが可能となる。
また、セカンダリDB更新部104にセカンダリデータベース更新要求蓄積部106を設けることでバックアップ完了後にプライマリデータベースと同期が取れた状態まで回復することを可能としている。
また、セカンダリDB更新部104にセカンダリデータベース更新要求蓄積部106を設けることでバックアップ完了後にプライマリデータベースと同期が取れた状態まで回復することを可能としている。
実施の形態3.
実施の形態1及び2では、トランザクション監視部101でバックアップ要求開始を受け付けた場合、トランザクション完了管理テーブル108の処理カウンタが0になるのを待つ動作を説明した。
しかし、処理が完了していないトランザクションが多数あり、トランザクション監視部101でバックアップ開始要求を受け付けた後、一定時間を過ぎてもトランザクション完了管理テーブル108の処理カウンタが0にならないことも考えられる。
このため、一定時間経過してもトランザクション完了管理テーブル108の処理カウンタが0にならない場合は、トランザクション監視部101は、バックアップ開始要求をDB同期管理部102に出力せずに、トランザクション一時蓄積部105に保管している更新要求をDB同期管理部102に出力するようにしてもよい。
つまり、バックアップのための分離を行わずに、トランザクション一時蓄積部105に保管している更新要求を先に処理し、再度、トランザクション開始要求を入力した際に、トランザクション完了管理テーブル108の処理カウンタが0になるのを待ち、またトランザクション一時蓄積部105に更新要求を保管するという処理を繰り返す。
こうすることで、よりバックアップ開始時のすべての更新処理が完了している状態が発生する確率を上げることができる。
実施の形態1及び2では、トランザクション監視部101でバックアップ要求開始を受け付けた場合、トランザクション完了管理テーブル108の処理カウンタが0になるのを待つ動作を説明した。
しかし、処理が完了していないトランザクションが多数あり、トランザクション監視部101でバックアップ開始要求を受け付けた後、一定時間を過ぎてもトランザクション完了管理テーブル108の処理カウンタが0にならないことも考えられる。
このため、一定時間経過してもトランザクション完了管理テーブル108の処理カウンタが0にならない場合は、トランザクション監視部101は、バックアップ開始要求をDB同期管理部102に出力せずに、トランザクション一時蓄積部105に保管している更新要求をDB同期管理部102に出力するようにしてもよい。
つまり、バックアップのための分離を行わずに、トランザクション一時蓄積部105に保管している更新要求を先に処理し、再度、トランザクション開始要求を入力した際に、トランザクション完了管理テーブル108の処理カウンタが0になるのを待ち、またトランザクション一時蓄積部105に更新要求を保管するという処理を繰り返す。
こうすることで、よりバックアップ開始時のすべての更新処理が完了している状態が発生する確率を上げることができる。
実施の形態4.
実施の形態1〜3では、セカンダリデータベース更新要求蓄積部106には、データベースへの更新要求を蓄積する動作を説明した。
しかし、システムが自動採取するデータの更新時刻など更新要求には含まれないデータで、更新タイミングが異なることによりプライマリとセカンダリのデータが一致しないことも考えられる。
このため、セカンダリデータベース更新要求蓄積部106には、データベースの更新要求ではなく、プライマリデータベースでの更新結果が示される更新ジャーナルを蓄積するようにしてもよい。
データベースが分離状態であるときには、プライマリDB更新部103がデータベースの更新処理を完了するとその更新ジャーナルをセカンダリデータベース更新要求蓄積部106に蓄積する。
セカンダリDB更新部104は、データベースのバックアップが完了し、同期をとるとき(セカンダリデータベースの結合処理が開始される際)は、セカンダリデータベース更新要求蓄積部106に蓄積してある更新ジャーナルを元にデータベースの同期を行う。
こうすることで、データベースへの更新要求に含まれないデータについてもプライマリDBと同じデータとすることができる。
実施の形態1〜3では、セカンダリデータベース更新要求蓄積部106には、データベースへの更新要求を蓄積する動作を説明した。
しかし、システムが自動採取するデータの更新時刻など更新要求には含まれないデータで、更新タイミングが異なることによりプライマリとセカンダリのデータが一致しないことも考えられる。
このため、セカンダリデータベース更新要求蓄積部106には、データベースの更新要求ではなく、プライマリデータベースでの更新結果が示される更新ジャーナルを蓄積するようにしてもよい。
データベースが分離状態であるときには、プライマリDB更新部103がデータベースの更新処理を完了するとその更新ジャーナルをセカンダリデータベース更新要求蓄積部106に蓄積する。
セカンダリDB更新部104は、データベースのバックアップが完了し、同期をとるとき(セカンダリデータベースの結合処理が開始される際)は、セカンダリデータベース更新要求蓄積部106に蓄積してある更新ジャーナルを元にデータベースの同期を行う。
こうすることで、データベースへの更新要求に含まれないデータについてもプライマリDBと同じデータとすることができる。
以上の実施の形態1〜4では、
24時間データベースの稼動が行われる情報システムにおいて、以下の手段を備え、トランザクションの要求者(アプリケーションプログラム)から見たデータベースのデータの整合性を確保したバックアップが取得可能なデータベースバックアップ方式を説明した。
(a)データベースを操作するトランザクションの状態を監視するトランザクション監視部;
(b)トランザクション監視部が監視対象とするトランザクションの種類を登録する監視対象トランザクションテーブル;
(c)現在処理中のトランザクション数を管理するトランザクション完了管理テーブル;
(d)データベースの切り離し処理をしている間、または、バックアップ要求を受け付けてトランザクションの完了を待つ間に発生したトランザクションを一時蓄積するトランザクション一時蓄積部;
(e)データベースの更新処理を行うプライマリDB更新部;
(f)プライマリDB更新部が更新するデータベースと同じデータベースを更新するセカンダリDB更新部;
(g)バックアップ用にセカンダリDBを切り離したときに、バックアップを採取している間に発生したデータベースの更新要求を蓄積するセカンダリデータベース更新要求蓄積部;
(h)プライマリDB、セカンダリDBのデータ更新状態の管理、プライマリDB、セカンダリDBの分離、結合を制御するDB同期管理部;
(i)プライマリDB、セカンダリDBの状態を記録するDB同期状態管理テーブル。
24時間データベースの稼動が行われる情報システムにおいて、以下の手段を備え、トランザクションの要求者(アプリケーションプログラム)から見たデータベースのデータの整合性を確保したバックアップが取得可能なデータベースバックアップ方式を説明した。
(a)データベースを操作するトランザクションの状態を監視するトランザクション監視部;
(b)トランザクション監視部が監視対象とするトランザクションの種類を登録する監視対象トランザクションテーブル;
(c)現在処理中のトランザクション数を管理するトランザクション完了管理テーブル;
(d)データベースの切り離し処理をしている間、または、バックアップ要求を受け付けてトランザクションの完了を待つ間に発生したトランザクションを一時蓄積するトランザクション一時蓄積部;
(e)データベースの更新処理を行うプライマリDB更新部;
(f)プライマリDB更新部が更新するデータベースと同じデータベースを更新するセカンダリDB更新部;
(g)バックアップ用にセカンダリDBを切り離したときに、バックアップを採取している間に発生したデータベースの更新要求を蓄積するセカンダリデータベース更新要求蓄積部;
(h)プライマリDB、セカンダリDBのデータ更新状態の管理、プライマリDB、セカンダリDBの分離、結合を制御するDB同期管理部;
(i)プライマリDB、セカンダリDBの状態を記録するDB同期状態管理テーブル。
また、実施の形態1〜4では、
トランザクション監視部において、処理中のトランザクションが存在しないタイミングを監視し、処理中のトランザクションが存在しなくなったときにセカンダリDBを切り離し、切り離したDBからバックアップ採取可能であることを説明した。
トランザクション監視部において、処理中のトランザクションが存在しないタイミングを監視し、処理中のトランザクションが存在しなくなったときにセカンダリDBを切り離し、切り離したDBからバックアップ採取可能であることを説明した。
また、実施の形態1〜4では、
トランザクション監視部は、監視が必要なトランザクション、不要なトランザクションを識別とし、処理中トランザクションが存在しない確率を向上させることを説明した。
トランザクション監視部は、監視が必要なトランザクション、不要なトランザクションを識別とし、処理中トランザクションが存在しない確率を向上させることを説明した。
また、実施の形態1〜4では、トランザクション監視部は、バックアップ要求を受け付けると一時的にトランザクション一時蓄積部に要求トランザクションを滞留させ、処理中のトランザクションの完了を待つことで処理中トランザクションが存在しない確率を向上させることを説明した。
最後に、実施の形態1〜4に示したデータベース管理装置100のハードウェア構成例について説明する。
図19は、実施の形態1〜4に示すデータベース管理装置100のハードウェア資源の一例を示す図である。
なお、図19の構成は、あくまでもデータベース管理装置100のハードウェア構成の一例を示すものであり、データベース管理装置100のハードウェア構成は図19に記載の構成に限らず、他の構成であってもよい。
図19は、実施の形態1〜4に示すデータベース管理装置100のハードウェア資源の一例を示す図である。
なお、図19の構成は、あくまでもデータベース管理装置100のハードウェア構成の一例を示すものであり、データベース管理装置100のハードウェア構成は図19に記載の構成に限らず、他の構成であってもよい。
図19において、データベース管理装置100は、プログラムを実行するCPU911(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1〜4で説明した「テーブル記憶部107」は、RAM914、磁気ディスク装置920等により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
CPU911は、バス912を介して、例えば、ROM(Read Only Memory)913、RAM(Random Access Memory)914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
更に、CPU911は、FDD904(Flexible Disk Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907と接続していてもよい。また、磁気ディスク装置920の代わりに、SSD(Solid State Drive)、光ディスク装置、メモリカード(登録商標)読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態1〜4で説明した「テーブル記憶部107」は、RAM914、磁気ディスク装置920等により実現される。
通信ボード915、キーボード902、マウス903、スキャナ装置907、FDD904などは、入力装置の一例である。
また、通信ボード915、表示装置901、プリンタ装置906などは、出力装置の一例である。
通信ボード915は、例えば、LAN(ローカルエリアネットワーク)、インターネット、WAN(ワイドエリアネットワーク)、SAN(ストレージエリアネットワーク)などに接続されていても構わない。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
プログラム群923のプログラムは、CPU911がオペレーティングシステム921、ウィンドウシステム922を利用しながら実行する。
また、RAM914には、CPU911に実行させるオペレーティングシステム921のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、RAM914には、CPU911による処理に必要な各種データが格納される。
また、ROM913には、BIOS(Basic Input Output System)プログラムが格納され、磁気ディスク装置920にはブートプログラムが格納されている。
データベース管理装置100の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
データベース管理装置100の起動時には、ROM913のBIOSプログラム及び磁気ディスク装置920のブートプログラムが実行され、BIOSプログラム及びブートプログラムによりオペレーティングシステム921が起動される。
上記プログラム群923には、実施の形態1〜4の説明において「〜部」(「テーブル記憶部107」以外、以下同様)として説明している機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、実施の形態1〜4の説明において、「〜の判断」、「〜の判定」、「〜の比較」、「〜の蓄積」、「〜の更新」、「〜の指示」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜4で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。
また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのCPUの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態1〜4で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD等の記録媒体に記録される。
また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、実施の形態1〜4の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態1〜4で説明したフローチャートに示すステップ、手順、処理により、本発明に係るデータベース管理方法を実現することができる。
また、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、実施の形態1〜4の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜4の「〜部」の手順や方法をコンピュータに実行させるものである。
すなわち、実施の形態1〜4で説明したフローチャートに示すステップ、手順、処理により、本発明に係るデータベース管理方法を実現することができる。
また、「〜部」として説明しているものは、ROM913に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。
プログラムはCPU911により読み出され、CPU911により実行される。
すなわち、プログラムは、実施の形態1〜4の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態1〜4の「〜部」の手順や方法をコンピュータに実行させるものである。
このように、実施の形態1〜4に示すデータベース管理装置100は、処理装置たるCPU、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
100 データベース管理装置、101 トランザクション監視部、102 DB同期管理部、103 プライマリDB更新部、104 セカンダリDB更新部、105 トランザクション一時蓄積部、106 セカンダリデータベース更新要求蓄積部、107 テーブル記憶部、108 トランザクション完了管理テーブル、109 監視対象トランザクションテーブル、110 DB同期状態管理テーブル、200 データベースシステム、201 システムA用DB(プライマリ)、202 システムB用DB(プライマリ)、203 システムA用DB(セカンダリ)、204 システムB用DB(セカンダリ)、205 サブグループ1、206 システムC用DB(プライマリ)、207 システムD用DB(プライマリ)、208 システムC用DB(セカンダリ)、209 システムD用DB(セカンダリ)、210 サブグループ2。
Claims (12)
- 複数のデータベースを管理するデータベース管理装置であって、
前記複数のデータベースのうちの特定のデータベースの分離を要求する分離要求を入力した際に、前記複数のデータベースにおけるトランザクションの処理状況を監視し、処理中のトランザクションが存在していれば処理中のトランザクションがなくなるまで、分離対象データベースの分離を指示する分離指示の出力を保留し、処理中のトランザクションがなくなったときに、前記分離指示を出力するトランザクション監視部と、
前記トランザクション監視部により前記分離指示が出力された場合に、前記分離対象データベースの分離を行う分離処理部とを有することを特徴とするデータベース管理装置。 - 前記データベース管理装置は、
それぞれが同じデータを記憶する複数のデータベースを管理し、
前記データベース管理装置は、更に、
データ内容の更新を要求するデータベース更新要求を蓄積する更新要求蓄積部を有し、
前記トランザクション監視部は、
前記分離要求を入力してから前記分離処理部に前記分離指示を出力するまでの間に発生したトランザクション内のデータベース更新要求を前記更新要求蓄積部に蓄積させることを特徴とする請求項1に記載のデータベース管理装置。 - 前記データベース管理装置は、更に、
データベース更新要求を前記複数のデータベースの各々に出力する更新要求管理部を有し、
前記トランザクション監視部は、
前記分離指示を出力する際に前記更新要求蓄積部にデータベース更新要求が蓄積されている場合に、前記分離処理部に前記分離指示を出力するとともに、前記更新要求蓄積部に蓄積されているデータベース更新要求を前記更新要求管理部に出力することを特徴とする請求項2に記載のデータベース管理装置。 - 前記データベース管理装置は、更に、
前記分離対象データベースに対して出力されたデータベース更新要求を蓄積する分離対象データベース蓄積部と、
前記分離処理部により前記分離対象データベースの分離処理が開始されてから前記分離対象データベースの結合処理が開始されるまでの間に前記分離対象データベースに対して出力されたデータベース更新要求を前記分離対象データベース蓄積部に蓄積させる分離対象データベース管理部とを有することを特徴とする請求項3に記載のデータベース管理装置。 - 前記分離対象データベース管理部は、
前記分離対象データベースの結合処理が開始された際に前記分離対象データベース蓄積部にデータベース更新要求が蓄積されている場合に、前記分離対象データベース蓄積部に蓄積されているデータベース更新要求に基づいて前記分離対象データベースのデータ内容の更新を行うことを特徴とする請求項4に記載のデータベース管理装置。 - 前記分離対象データベース蓄積部は、
前記分離対象データベース以外のデータベースでの更新結果が示される更新ジャーナルを蓄積し、
前記分離対象データベース管理部は、
前記分離対象データベースの結合処理が開始された際に前記分離対象データベース蓄積部に更新ジャーナルが蓄積されている場合に、前記分離対象データベース蓄積部に蓄積されている更新ジャーナルに基づいて前記分離対象データベースのデータ内容の更新を行うことを特徴とする請求項4又は5に記載のデータベース管理装置。 - 前記データベース管理装置は、
それぞれが複数のサブグループのうちのいずれかに分類され、同じサブグループに分類されているデータベース間では同じデータを記憶する複数のデータベースを管理し、
前記トランザクション監視部は、
特定のサブグループに分類されている特定のデータベースの分離を要求する分離要求を入力した際に、前記複数のデータベースにおける分離対象サブグループに対するトランザクションの処理状況を監視し、分離対象サブグループに対して処理中のトランザクションが存在していれば分離対象サブグループに対する処理中のトランザクションがなくなるまで、分離対象サブグループに分類されている分離対象データベースの分離を指示する分離指示の出力を保留し、分離対象サブグループに対する処理中のトランザクションがなくなったときに前記分離指示を出力し、
前記分離処理部は、
前記トランザクション監視部により前記分離指示が出力された場合に、前記分離対象データベースの分離を行うことを特徴とする請求項1〜6のいずれかに記載のデータベース管理装置。 - 前記データベース管理装置は、更に、
データ内容の更新を要求するデータベース更新要求を蓄積する更新要求蓄積部を有し、
前記トランザクション監視部は、
前記分離要求を入力してから前記分離処理部に前記分離指示を出力するまでの間に発生したトランザクション内の前記分離対象サブグループに対するデータベース更新要求を前記更新要求蓄積部に蓄積させることを特徴とする請求項7に記載のデータベース管理装置。 - 前記トランザクション監視部は、
データのバックアップのためにバックアップの対象となるデータベースの分離を要求する分離要求を入力することを特徴とする請求項1〜8のいずれかに記載のデータベース管理装置。 - 前記トランザクション監視部は、
所定時間が経過しても処理中のトランザクションが存在している場合は、前記分離指示を出力せずに、前記更新要求蓄積部に蓄積されているデータベース更新要求を前記更新要求管理部に出力することを特徴とする請求項3〜5のいずれかに記載のデータベース管理装置。 - 複数のデータベースを管理するコンピュータが行うデータベース管理方法であって、
前記コンピュータが、前記複数のデータベースのうちの特定のデータベースの分離を要求する分離要求を入力する分離要求入力ステップと、
前記分離要求入力ステップにより分離要求が入力された際に、前記コンピュータが、前記複数のデータベースにおけるトランザクションの処理状況を監視し、処理中のトランザクションが存在していれば処理中のトランザクションがなくなるまで、分離対象データベースの分離を指示する分離指示の出力を保留し、処理中のトランザクションがなくなったときに、前記分離指示を出力するトランザクション監視ステップと、
前記トランザクション監視ステップにより前記分離指示が出力された場合に、前記コンピュータが、前記分離対象データベースの分離を行う分離処理ステップとを有することを特徴とするデータベース管理方法。 - 複数のデータベースを管理するコンピュータに、
前記複数のデータベースのうちの特定のデータベースの分離を要求する分離要求を入力する分離要求入力ステップと、
前記分離要求入力ステップにより分離要求が入力された際に、前記複数のデータベースにおけるトランザクションの処理状況を監視し、処理中のトランザクションが存在していれば処理中のトランザクションがなくなるまで、分離対象データベースの分離を指示する分離指示の出力を保留し、処理中のトランザクションがなくなったときに、前記分離指示を出力するトランザクション監視ステップと、
前記トランザクション監視ステップにより前記分離指示が出力された場合に、前記分離対象データベースの分離を行う分離処理ステップとを実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010210451A JP2012068693A (ja) | 2010-09-21 | 2010-09-21 | データベース管理装置及びデータベース管理方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010210451A JP2012068693A (ja) | 2010-09-21 | 2010-09-21 | データベース管理装置及びデータベース管理方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012068693A true JP2012068693A (ja) | 2012-04-05 |
Family
ID=46165961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010210451A Pending JP2012068693A (ja) | 2010-09-21 | 2010-09-21 | データベース管理装置及びデータベース管理方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012068693A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455606A (zh) * | 2013-09-03 | 2013-12-18 | 何云坤 | 一种大数据库创建及数据管理方法 |
JP2014241059A (ja) * | 2013-06-12 | 2014-12-25 | 富士ゼロックス株式会社 | オンラインバックアップ制御システム及びプログラム |
-
2010
- 2010-09-21 JP JP2010210451A patent/JP2012068693A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014241059A (ja) * | 2013-06-12 | 2014-12-25 | 富士ゼロックス株式会社 | オンラインバックアップ制御システム及びプログラム |
CN103455606A (zh) * | 2013-09-03 | 2013-12-18 | 何云坤 | 一种大数据库创建及数据管理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7389300B1 (en) | System and method for multi-staged in-memory checkpoint replication with relaxed consistency | |
US7725776B2 (en) | Method for displaying pair state of copy pairs | |
JP6362685B2 (ja) | オンライン・ホット・スタンバイ・データベースのためのレプリケーション方法、プログラム、および装置 | |
CN100403272C (zh) | 用于处理到远程存储位置的故障恢复的方法、系统 | |
US7844856B1 (en) | Methods and apparatus for bottleneck processing in a continuous data protection system having journaling | |
US7216210B2 (en) | Data I/O system using a plurality of mirror volumes | |
CN102652423A (zh) | 用于集群选择和协作复制的集群族 | |
US8108637B2 (en) | Information processing system, controlling method in information processing system, and managing apparatus to manage remote copy in consideration of saving power | |
US9507674B2 (en) | Methods for preserving state across a failure and devices thereof | |
US9648104B2 (en) | Configuration information acquisition method and management computer | |
US8527723B1 (en) | Storage system and control method for storage system | |
US10140183B2 (en) | Efficient state tracking for clusters | |
US20050198411A1 (en) | Commingled write cache in dual input/output adapter | |
JP2012068693A (ja) | データベース管理装置及びデータベース管理方法及びプログラム | |
JP2008310591A (ja) | クラスタシステム、計算機、および障害回復方法 | |
JP6674101B2 (ja) | 制御装置および情報処理システム | |
US20230043307A1 (en) | Replicating Changes Written by a Transactional Virtual Storage Access Method | |
JP4898609B2 (ja) | ストレージ装置、データ回復方法及び計算機システム | |
JP6788188B2 (ja) | 制御装置および制御プログラム | |
JP2007140651A (ja) | 計算機システム | |
JP5309816B2 (ja) | データ管理プログラム、データ管理装置、およびデータ管理方法 | |
US11853099B2 (en) | Recovery method of remote copy | |
US20170255499A1 (en) | Hybrid quorum system with persistent and non-persistent | |
US11468091B2 (en) | Maintaining consistency of asynchronous replication | |
JP6810353B2 (ja) | 情報処理システム、情報処理装置およびプログラム |