(57)【要約】【課題】データベースの復元時間の増大化を抑えてスナップショットの蓄積量を減らすこと。【解決手段】管理装置１０１は、ＳＱＬクエリ１〜４の時刻とＳＱＬクエリ１〜４の処理時間とを対応付けた対応情報を記憶する。そして、管理装置１０１は、対応情報を参照して、スナップショットｓ１、ｓ２のいずれかのスナップショットの時刻からいずれかのスナップショットとは異なる他のスナップショットの時刻までにＤＢ１０２が受け付けたＳＱＬクエリの処理時間を特定する。次に、管理装置１０１は、スナップショットｓ１、ｓ２から、特定したＳＱＬクエリの処理時間に基づいて、削除するスナップショットを決定する。【選択図】図１
2016129003.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
データベースが受け付けた処理要求の時刻と前記処理要求に対応する処理にかかる時間とを対応付けた対応情報を参照して、複数の時刻の各々の時刻における前記データベースの内容を複製した複数のスナップショットのいずれかのスナップショットの時刻から前記いずれかのスナップショットとは異なる他のスナップショットの時刻までに前記データベースが受け付けた処理要求に対応する処理にかかる時間を特定し、
前記複数のスナップショットから、特定した前記時間に基づいて、削除するスナップショットを決定する、
処理を実行することを特徴とするスナップショット管理方法。
【請求項２】
前記いずれかのスナップショットが前記データベースの内容を復元することに用いられた時刻を特定する情報が前記いずれかのスナップショットに対応付けられており、
前記決定する処理は、
前記複数のスナップショットから、特定した前記時間と、前記データベースの内容を復元することに用いられた時刻とに基づいて、削除するスナップショットを決定することを特徴とする請求項１に記載のスナップショット管理方法。
【請求項３】
前記コンピュータが、
前記対応情報を参照して、前記データベースが受け付けた処理要求を当該処理要求の時刻に従って複数のグループに分類し、
分類した前記複数のグループの各々のグループに対応して、前記各々のグループに属する処理要求のうちの最初の処理要求の時刻における内容を有するデータベースに対して前記各々のグループに属する処理要求を発行することにより得られる当該データベースの内容を複製したスナップショットを作成する、
処理を実行することを特徴とする請求項１または２に記載のスナップショット管理方法。
【請求項４】
データベースが受け付けた処理要求の時刻と前記処理要求に対応する処理にかかる時間とを対応付けた対応情報を参照して、複数の時刻の各々の時刻における前記データベースの内容を複製した複数のスナップショットのいずれかのスナップショットの時刻から前記いずれかのスナップショットとは異なる他のスナップショットの時刻までに前記データベースが受け付けた処理要求に対応する処理にかかる時間を特定し、
前記複数のスナップショットから、特定した前記時間に基づいて、削除するスナップショットを決定する、
制御部を有することを特徴とする管理装置。
【請求項５】
コンピュータに、
データベースが受け付けた処理要求の時刻と前記処理要求に対応する処理にかかる時間とを対応付けた対応情報を参照して、複数の時刻の各々の時刻における前記データベースの内容を複製した複数のスナップショットのいずれかのスナップショットの時刻から前記いずれかのスナップショットとは異なる他のスナップショットの時刻までに前記データベースが受け付けた処理要求に対応する処理にかかる時間を特定し、
前記複数のスナップショットから、特定した前記時間に基づいて、削除するスナップショットを決定する、
処理を実行させることを特徴とするスナップショット管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スナップショット管理方法、管理装置、およびスナップショット管理プログラムに関する。
【背景技術】
【０００２】
従来、ある時刻におけるデータベースを複製したスナップショットを作成する技術がある。細かな時間間隔でスナップショットを蓄積することで、データベースを復元可能な時点を増やすことができる一方で、スナップショットを蓄積する記憶領域は有限であるため、蓄積できるスナップショットの数には限りがある。関連する先行技術として、例えば、障害が発生した際、仮想計算機のスナップショットを用いて仮想計算機をスナップショットの取得時点に復元し、復元した仮想計算機に通信ログが含む取得時点から障害発生時点までの入力ログを時系列順に投入するものがある。また、主系サーバに送信された２つのパケットの時間間隔と、予備系サーバに送信される２つのパケットの時間間隔が同一となるように、予備系サーバに送信される２つのパケットのヘッダ情報を適切に書き換える技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−０８０７０５号公報
【特許文献２】特開２０１１−１９９６８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、蓄積した複数のスナップショットから、どのスナップショットを削除すべきかを判断することは難しい。例えば、複数のスナップショットから、単に、いずれかのスナップショットを削除すると、スナップショットの蓄積量を減らすことはできるが、データベースの復元時間の増大化を招く恐れがある。
【０００５】
１つの側面では、本発明は、データベースの復元時間の増大化を抑えてスナップショットの蓄積量を減らすことができるスナップショット管理方法、管理装置、およびスナップショット管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、データベースが受け付けた処理要求の時刻と処理要求に対応する処理にかかる時間とを対応付けた対応情報を参照して、複数の時刻の各々の時刻におけるデータベースの内容を複製した複数のスナップショットのいずれかのスナップショットの時刻からいずれかのスナップショットとは異なる他のスナップショットの時刻までにデータベースが受け付けた処理要求に対応する処理にかかる時間を特定し、複数のスナップショットから、特定した時間に基づいて、削除するスナップショットを決定するスナップショット管理方法、管理装置、およびスナップショット管理プログラムが提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、データベースの復元時間の増大化を抑えてスナップショットの蓄積量を減らすことができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態にかかる管理装置１０１の動作例を示す説明図である。
【図２】図２は、アクセス再現システム２００の構成例を示す説明図である。
【図３】図３は、本実施の形態で用いられるコンピュータのハードウェア構成例を示す説明図である。
【図４】図４は、アクセス再現システム２００の動作例を示す説明図である。
【図５】図５は、アクセス再現のタイミング指定の一例を示す説明図である。
【図６】図６は、ＤＢ復元装置２１１の機能構成例を示すブロック図である。
【図７】図７は、スナップショット使用情報６１０の記憶内容の一例を示す説明図である。
【図８】図８は、削除するスナップショットの決定例を示す説明図である。
【図９】図９は、スナップショットの作成時間の特定方法の一例を示す説明図である。
【図１０】図１０は、投機的なスナップショットの作成方法の一例を示す説明図である。
【図１１】図１１は、アクセス再現処理手順の一例を示すフローチャートである。
【図１２】図１２は、削除スナップショット決定処理手順の一例を示すフローチャートである。
【図１３】図１３は、投機的スナップショット作成処理手順の一例を示すフローチャート（その１）である。
【図１４】図１４は、投機的スナップショット作成処理手順の一例を示すフローチャート（その２）である。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、開示のスナップショット管理方法、管理装置、およびスナップショット管理プログラムの実施の形態を詳細に説明する。
【００１０】
図１は、本実施の形態にかかる管理装置１０１の動作例を示す説明図である。システム１００に含まれる管理装置１０１は、ＤＢ（ＤａｔａＢａｓｅ）１０２のスナップショットを管理するコンピュータである。システム１００は、さらに、ＤＢ１０２を含む。スナップショットとは、ある時刻におけるＤＢの内容を複製したものである。スナップショットを保存することにより、スナップショットを保存した以降において、ＤＢのデータが紛失してしまった場合、スナップショットを用いて、複製した時点のデータを復元することができる。以下、スナップショットの時刻と記載した場合、該当のスナップショットを作成するためにＤＢの内容を複製したある時刻のことを示す。
【００１１】
ＤＢ１０２は、処理要求を受け付ける。ＤＢ１０２は、処理要求を受け付けると、処理要求に対応する処理を実行する。処理要求は、例えば、データベースの問い合わせ言語で記述されており、具体的には、ＳＱＬクエリである。以下、処理要求は、ＳＱＬクエリであるとする。また、ＳＱＬクエリに対応する処理は、例えば、ＳＱＬクエリがＤＢ１０２を参照して条件に一致するデータを返すクエリであれば、条件に一致するデータを検索して、条件に一致したデータを応答として要求元に返す処理である。また、例えば、ＳＱＬクエリがＤＢ１０２のデータを更新するクエリであれば、ＳＱＬクエリに対応する処理は、ＤＢ１０２のデータを更新して更新結果を返す処理である。
【００１２】
発行されたＳＱＬクエリを保存することにより、スナップショットから復元されたＤＢに対してＳＱＬクエリを発行すれば、スナップショットの時刻に限らず、任意の時刻におけるＤＢの内容を復元することができる。
【００１３】
ここで、スナップショットを保存する数を増やす程ＤＢの復元時間を短縮できるが、スナップショットを保存できる数には限度があるため、スナップショットを削除することになる。しかしながら、データベースの復元時間の増大化を抑制してスナップショットのデータ量を減らすことが難しい。例えば、複数のスナップショットから、単に、いずれかのスナップショットを削除すると、スナップショットの蓄積量を減らすことはできるが、データベースの復元時間の増大化を招く恐れがある。
【００１４】
そこで、本実施の形態における管理装置１０１は、複数のスナップショットから、各スナップショットの作成時刻の間に受けたＳＱＬクエリの処理時間を基に削除するスナップショットを決定する。これにより、管理装置１０１は、すぐ作成できるスナップショットを削除してスナップショットの蓄積量を減らしつつ、ＤＢの復元時間の増大化を抑えることができる。なお、本実施の形態では、管理装置１０１は、削除するスナップショットを決定するが、残すスナップショットを決定してもよい。
【００１５】
図１を用いて、管理装置１０１の具体的な動作について説明する。図１の例では、ＤＢ１０２に対して、ＳＱＬクエリ１〜４が発行された状態である。ＳＱＬクエリ１〜４は、それぞれ、時刻ｔｑ１〜４に発行されたものである。そして、ＤＢ１０２は、ＳＱＬクエリ１〜４の応答を、それぞれ、時刻ｔｓ１〜４に行う。ここで、時刻ｔｑ１〜４、ｔｓ１〜４の順序は、古い時刻から時刻ｔｑ１、ｔｓ１、ｔｑ２、ｔｓ２、ｔｑ３、ｔｓ３、ｔｑ４、ｔｓ４となる。従って、ＳＱＬクエリ１〜４に対応する処理にかかる時間は、それぞれ、時刻ｔｑ１から時刻ｔｓ１までの時間、時刻ｔｑ２から時刻ｔｓ２までの時間、時刻ｔｑ３から時刻ｔｓ３までの時間、時刻ｔｑ４から時刻ｔｓ４までの時間となる。ここでは、説明の簡略化のため、時刻ｔｑ１〜４から時刻ｔｓ１〜４までのそれぞれの時間は、全て同一として、図１の説明では、「１単位時間」と称する。以下、ＳＱＬクエリに対応する処理にかかる時間を、単に、「ＳＱＬクエリの処理時間」と称する。
【００１６】
管理装置１０１は、ＳＱＬクエリ１〜４の時刻とＳＱＬクエリ１〜４の処理時間とを対応付けた対応情報を記憶する。ここで、ＳＱＬクエリ１〜４の時刻は、ＳＱＬクエリの要求時刻でもよいし、応答時刻でもよい。
【００１７】
そして、管理装置１０１は、スナップショットｓ０〜ｓ２を管理しており、図１では、スナップショットｓ１、ｓ２を削除候補として、いずれか一方を削除するものとする。スナップショットｓ０は、時刻ｔｑ１におけるＤＢ１０２の内容を複製したものである。また、スナップショットｓ１は、時刻ｔｓ３におけるＤＢ１０２の内容を複製したものである。また、スナップショットｓ２は、時刻ｔｓ４におけるＤＢ１０２の内容を複製したものである。
【００１８】
管理装置１０１は、対応情報を参照して、スナップショットｓ１、ｓ２のいずれかのスナップショットの時刻からいずれかのスナップショットとは異なる他のスナップショットの時刻までにＤＢ１０２が受け付けたＳＱＬクエリの処理時間を特定する。スナップショットｓ１、ｓ２のいずれかのスナップショットの時刻からいずれかのスナップショットとは異なる他のスナップショットの時刻までにＤＢ１０２が受け付けたＳＱＬクエリの処理時間が、いずれかのスナップショットの作成時間となる。
【００１９】
管理装置１０１は、特定するＳＱＬクエリの処理時間について、一つのスナップショットに対して特定してもよいし、削除候補全てのスナップショットに対して特定してもよい。また、いずれかのスナップショットとは異なる他のスナップショットは、いずれかのスナップショットより前のスナップショットであればどれでもよいが、直前のスナップショットであることが好ましい。
【００２０】
例えば、図１の例では、管理装置１０１は、スナップショットｓ１の時刻ｔｓ３から、スナップショットｓ０の時刻ｔｑ１までのＳＱＬクエリの処理時間、すなわち、スナップショットｓ１の作成時間を、３単位時間と特定する。同様に、管理装置１０１は、スナップショットｓ２の時刻ｔｓ４から、スナップショットｓ１の時刻ｔｓ３までのＳＱＬクエリの処理時間、すなわち、スナップショットｓ２の作成時間を、１単位時間と特定する。
【００２１】
そして、管理装置１０１は、削除候補の複数のスナップショットから、特定したスナップショットの作成時間に基づいて、削除するスナップショットを決定する。例えば、あるスナップショットに対して特定した場合、管理装置１０１は、特定した作成時間が、所定の閾値未満であれば、あるスナップショットを削除するスナップショットとして決定する。また、削除候補全てのスナップショットに対して特定した場合、管理装置１０１は、特定した作成時間のうちの最小となるスナップショットを、削除するスナップショットとして決定する。
【００２２】
図１の例では、スナップショットｓ２の作成時間が１単位時間となり最小であるため、管理装置１０１は、スナップショットｓ２を、削除するスナップショットとして決定する。次に、図２を用いて、システム１００を、アクセス再現システム２００に適用した例について説明する。
【００２３】
図２は、アクセス再現システム２００の構成例を示す説明図である。アクセス再現システム２００は、本番系システム２０１におけるいずれかの時点の状態を、検証系システム２０２で再現するシステムである。アクセス再現システム２００は、本番系システム２０１と、検証系システム２０２と、ＤＢ復元装置２１１と、アクセス再現制御装置２１２と、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）リクエスト記憶装置２１３と、利用者端末２１４と、検証者端末２１５とを有する。
【００２４】
ＤＢ復元装置２１１は、ＳＱＬクエリ記憶部２２１と、スナップショット記憶部２２２とを有する。本番系システム２０１は、ＨＴＴＰサーバ２３１と、ＤＢサーバ２３２とを有する。また、本番系システム２０１は、ネットワーク２３３、２３４を含む。ＨＴＴＰリクエスト記憶装置２１３と、ＨＴＴＰサーバ２３１と、利用者端末２１４とは、ネットワーク２３３で接続される。ＨＴＴＰサーバ２３１と、ＤＢサーバ２３２と、ＤＢ復元装置２１１とは、ネットワーク２３４で接続される。検証系システム２０２は、アクセス再現装置２４１と、ＨＴＴＰサーバ２４２と、検証用ＤＢサーバ２４３とを有する。
【００２５】
ここで、ＤＢ復元装置２１１は、図１に示した管理装置１０１に相当する。また、ＤＢサーバ２３２は、図１に示したＤＢ１０２に相当する。また、ＳＱＬクエリ記憶部２２１は、図１に示した対応情報に相当する。
【００２６】
本番系システム２０１は、何らかのサービスを提供するシステムである。例えば、図２の例では、本番系システム２０１は、ＨＴＴＰによるＷｅｂサービスを提供する。利用者端末２１４は、本番系システム２０１を利用する利用者が操作する装置である。より具体的には、利用者端末２１４が、ＨＴＴＰリクエストを本番系システム２０１に送信すると、ネットワーク２３３は、受信したＨＴＴＰリクエストを、ＨＴＴＰサーバ２３１と、ＨＴＴＰリクエスト記憶装置２１３とにそれぞれ送信する。
【００２７】
ＨＴＴＰサーバ２３１は、受信したＨＴＴＰリクエストからＳＱＬクエリを生成し、ネットワーク２３４に送信する。ネットワーク２３４は、受信したＳＱＬクエリを、ＤＢサーバ２３２とＤＢ復元装置２１１とにそれぞれ送信する。ＤＢ復元装置２１１は、受信したＳＱＬクエリをＳＱＬクエリ記憶部２２１に記憶する。
【００２８】
ＤＢサーバ２３２は、受信したＳＱＬクエリに対応する処理を行う。また、ＤＢサーバ２３２は、メンテナンス時や、夜中等のアクセスが少ない時間帯に、スナップショットを作成する。メンテナンス時や、夜中等のアクセスが少ない時間帯に作成したスナップショットを、「初期スナップショット」と呼称する。ＤＢサーバ２３２は、作成したスナップショットを、ＤＢ復元装置２１１に送信する。ＤＢ復元装置２１１は、受信したスナップショットをスナップショット記憶部２２２に記憶する。ここで、ＨＴＴＰリクエスト記憶装置２１３に保存するＨＴＴＰリクエストと、ＳＱＬクエリ記憶部２２１に保存するＳＱＬクエリとは、発行順序があわせて特定できれば、パケットキャプチャでもよいし、ログでもよい。
【００２９】
検証系システム２０２は、本番系システム２０１の動作を検証するシステムである。例えば、本番系システム２０１に不具合が発生した際に、アクセス再現制御装置２１２は、検証者の操作により検証者端末２１５から不具合が発生した際の状態を再現する指示を受信する。そして、アクセス再現制御装置２１２は、ＤＢ復元装置２１１に対して、検証用ＤＢサーバ２４３に、本番系システム２０１に不具合が発生した際のＤＢサーバ２３２の内容を再現するように指示する。
【００３０】
そして、アクセス再現制御装置２１２は、ＨＴＴＰリクエスト記憶装置２１３に保存したＨＴＴＰリクエストを用いて、再現したいＨＴＴＰリクエストをＨＴＴＰサーバ２４２に送信するようにアクセス再現装置２４１に指示する。アクセス再現装置２４１は、ＨＴＴＰリクエスト記憶装置２１３に保存したＨＴＴＰリクエストを、検証系システム２０２にあわせてＨＴＴＰリクエストのＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスやポート番号を変換しながらＨＴＴＰサーバ２４２に送信する。より詳細な動作例については、図４で説明する。
【００３１】
図３は、本実施の形態で用いられるコンピュータのハードウェア構成例を示す説明図である。図３では、本実施の形態で用いられるコンピュータとして、ＤＢ復元装置２１１、アクセス再現制御装置２１２、ＨＴＴＰサーバ２３１、ＤＢサーバ２３２、アクセス再現装置２４１、ＨＴＴＰサーバ２４２、検証用ＤＢサーバ２４３のハードウェア構成を示す。
【００３２】
図３において、コンピュータは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、を含む。また、コンピュータは、ディスクドライブ３０４およびディスク３０５と、通信インターフェース３０６と、を含む。また、ＣＰＵ３０１〜ディスクドライブ３０４、通信インターフェース３０６はバス３０７によってそれぞれ接続される。
【００３３】
ＣＰＵ３０１は、コンピュータの全体の制御を司る演算処理装置である。また、コンピュータは、複数のＣＰＵを有してもよい。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される揮発性メモリである。
【００３４】
ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ３０４には、例えば、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する不揮発性メモリである。例えばディスクドライブ３０４が磁気ディスクドライブである場合、ディスク３０５には、磁気ディスクを採用することができる。また、ディスクドライブ３０４が光ディスクドライブである場合、ディスク３０５には、光ディスクを採用することができる。また、ディスクドライブ３０４がソリッドステートドライブである場合、ディスク３０５には、半導体素子によって形成された半導体メモリ、いわゆる半導体ディスクを採用することができる。
【００３５】
通信インターフェース３０６は、ネットワークと内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース３０６は、通信回線を通じてネットワークを介して他の装置に接続される。通信インターフェース３０６には、例えば、モデムやＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）アダプタなどを採用することができる。
【００３６】
また、利用者端末２１４、検証者端末２１５は、図３に示したハードウェアに加え、ディスプレイ、キーボード、マウスといったハードウェアを有する。
【００３７】
図４は、アクセス再現システム２００の動作例を示す説明図である。図４の（１）について、検証者端末２１５は、不具合が発生した際の状態を再現する指示を受信する。そして、アクセス再現制御装置２１２は、ＤＢ再現指示をＤＢ復元装置２１１に送信する。ここで、ＤＢ再現指示には、再現したい時刻が指定される。
【００３８】
次に、図４の（２）について、ＤＢ復元装置２１１は、ＤＢ再現指示に基づいて、スナップショット記憶部２２２に保存されたスナップショットから、復元に用いるスナップショットを選択する。具体的には、ＤＢ復元装置２１１は、ＤＢ再現指示で指定された時刻より過去の状態を示すスナップショットのうち、最も新しいものを選択する。図４の例では、スナップショット記憶部２２２は、初期スナップショットｓ０と、本実施の形態により作成されたスナップショットｓ１、ｓ２を保存してあり、ＤＢ復元装置２１１は、スナップショットｓ１を、復元に用いるスナップショットとして選択する。
【００３９】
そして、図４の（３）について、ＤＢ復元装置２１１は、スナップショットｓ１を用いて、検証用ＤＢサーバ２４３上で、復元に用いるスナップショットの時刻における内容を復元する。
【００４０】
次に、図４の（４）について、ＤＢ復元装置２１１は、検証用ＤＢサーバ２４３に対して、スナップショットｓ１の複製時点からＤＢ再現指示で指定された時刻までにＤＢサーバ２３２に発行されたＳＱＬクエリを、検証用ＤＢサーバ２４３に発行する。図４の（４）により、検証用ＤＢサーバ２４３の内容が、ＤＢサーバ２３２のＤＢ再現指示で指定された時刻の内容と一致する。また、図４の（４）について、スナップショットｓ１の複製時点からＤＢ再現指示で指定された時刻までにＤＢサーバ２３２に発行されたＳＱＬクエリがない場合、アクセス再現システム２００は、図４の（４）、（５）を行わず、図４の（６）を行う。
【００４１】
そして、図４の（５）について、検証用ＤＢサーバ２４３は、スナップショットを作成し、ＤＢ復元装置２１１に送信する。ＤＢ復元装置２１１は、受信したスナップショットをスナップショット記憶部２２２に保存する。図４の（５）を行う理由として、不具合は不具合を修正した箇所に現れやすいため、ＤＢ復元装置２１１は、同時刻が指定されたＤＢ再現指示を再び受ける可能性がある。そこで、一回指定された時刻に対するスナップショットを作成しておくことで、同時刻が指定されたＤＢ再現指示を再び受けた際に、ＤＢ復元装置２１１は、図４の（４）を行わなくて済む。
【００４２】
次に、図４の（６）について、アクセス再現制御装置２１２は、ＨＴＴＰリクエスト記憶装置２１３を用いてＨＴＴＰリクエストの再現をＨＴＴＰサーバ２４２に対して行う。
【００４３】
図５は、アクセス再現のタイミング指定の一例を示す説明図である。図５では、ＤＢ再現指示をＤＢ復元装置２１１が受信した際に、どこまでのＳＱＬクエリを発行するのかを説明する。表５０１は、ＨＴＴＰリクエスト記憶装置２１３が保存するＨＴＴＰリクエストと、ＳＱＬクエリ記憶部２２１が保存するＳＱＬクエリとを時系列に沿って並べたデータである。図５で示す表５０１は、レコード５０１−１〜７を有する。また、表５０１が示す要求時刻は、説明の簡略化のため、ｔｑ１〜ｔｑ７のうち、ｔｑ１が最も古い時刻であり、昇順に従って新しい時刻となり、ｔｑ７が最も新しい時刻であるとする。同様に、表５０１が示す応答時刻は、ｔｓ１〜ｔｓ７のうち、ｔｓ１が最も古い時刻であり、昇順に従って新しい時刻となり、ｔｓ７が最も新しい時刻であるとする。
【００４４】
例えば、図５の例では、図５の（１）として、検証者端末２１５の利用者が、レコード５０１−４が示すＨＴＴＰリクエスト以降を再現したいものとする。この場合、ＤＢ復元装置２１１は、時刻ｔｑ４におけるＤＢ再現指示を受ける。そして、ＤＢ復元装置２１１は、図５の（２）として、レコード５０１−２、３のＳＱＬクエリを検証用ＤＢサーバ２４３に発行する。
【００４５】
（ＤＢ復元装置２１１の機能構成例）
図６は、ＤＢ復元装置２１１の機能構成例を示すブロック図である。ＤＢ復元装置２１１は、制御部６００を含む。制御部６００は、特定部６０１と、決定部６０２と、削除部６０３と、分類部６０４と、作成部６０５とを含む。制御部６００は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、ディスク３０５などである。また、各部の処理結果は、ＣＰＵ３０１のレジスタや、ＣＰＵ３０１のキャッシュメモリ等に格納される。
【００４６】
また、ＤＢ復元装置２１１は、ＳＱＬクエリ記憶部２２１、スナップショット記憶部２２２、スナップショット使用情報６１０にアクセス可能である。ＳＱＬクエリ記憶部２２１、スナップショット記憶部２２２、スナップショット使用情報６１０は、ＲＡＭ３０３、ディスク３０５といった記憶装置に格納される。スナップショット記憶部２２２は、ＳＱＬクエリの時刻とＳＱＬクエリの処理時間とを対応付けて記憶する。スナップショット記憶部２２２は、スナップショットを記憶する。スナップショット使用情報６１０は、スナップショット記憶部２２２が記憶するスナップショットがＤＢサーバ２３２の内容を復元することに用いられた時刻を特定する情報を記憶する。スナップショット使用情報６１０の記憶内容の一例を、図７で説明する。
【００４７】
特定部６０１は、ＳＱＬクエリ記憶部２２１を参照して複数のスナップショットのいずれかのスナップショットの時刻からいずれかのスナップショットとは異なる他のスナップショットの時刻までにＤＢサーバ２３２が受け付けたＳＱＬクエリの処理時間を特定する。ＳＱＬクエリの処理時間は、全てのＳＱＬクエリのうち、ＤＢサーバ２３２を更新するクエリの処理としてもよい。具体的な特定方法については、図９で説明する。
【００４８】
決定部６０２は、複数のスナップショットから、特定部６０１が特定した作成時間に基づいて、削除するスナップショットを決定する。決定する方法は、閾値を用いた絶対比較でもよい。または、決定部６０２は、特定部６０１が特定した作成時間が複数あるならば、複数のスナップショットの中で最も作成時間が短いスナップショットを、削除するスナップショットとして決定してもよい。
【００４９】
また、決定部６０２は、複数のスナップショットから、特定部６０１が特定した時間と、スナップショット使用情報６１０が記憶するＤＢサーバ２３２の内容を復元することに用いられた時刻とに基づいて、削除するスナップショットを決定してもよい。具体的には、決定部６０２は、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）アルゴリズムに従って、削除するスナップショットを決定する。例えば、ＤＢサーバ２３２の内容を復元することに用いられた時刻が同程度であれば、決定部６０２は、ＤＢサーバ２３２の内容を復元することに用いられた回数が少ない方を、削除するスナップショットとして決定してもよい。具体的な削除するスナップショットの決定例は、図８で説明する。
【００５０】
削除部６０３は、スナップショット記憶部２２２から、決定部６０２が決定したスナップショットを削除する。
【００５１】
分類部６０４は、ＳＱＬクエリ記憶部２２１を参照して、ＳＱＬクエリ記憶部２２１の記憶するＳＱＬクエリをＳＱＬクエリの時刻に従って複数のグループに分類する。作成部６０５は、分類部６０４が分類した複数のグループの各々のグループに対応して、各々のグループに属するＳＱＬクエリを発行することにより得られるＤＢの内容を複製したスナップショットを作成する。ここで、ＳＱＬクエリの発行先は、各々のグループに属する処理要求のうちの最初のＳＱＬクエリの時刻における内容を有するＤＢとなり、例えば、検証用ＤＢサーバ２４３となる。分類の方法と、スナップショットの作成の方法とについては、図１０で説明する。
【００５２】
図７は、スナップショット使用情報６１０の記憶内容の一例を示す説明図である。スナップショット使用情報６１０は、スナップショットを管理する情報である。図７で示すスナップショット使用情報６１０は、レコード７０１−０〜８を有する。
【００５３】
スナップショット使用情報６１０は、スナップショットの直前のｓｑｌと、テスト使用時刻と、スナップショットＩＤというフィールドを含む。スナップショットの直前のｓｑｌフィールドには、該当のスナップショットｓ１の複製時点のＤＢサーバ２３２の直前に発行されたＳＱＬクエリの識別情報が格納される。テスト使用時刻フィールドには、該当のスナップショットがＤＢサーバ２３２の内容の復元のために使用された時刻が格納される。スナップショットＩＤフィールドには、該当のスナップショットの識別情報が格納される。
【００５４】
ここで、説明の簡略化のため、図７で示すスナップショット使用情報６１０内のｓｑｌ０〜８のうち、ｓｑｌ０が最も古く発行されており、昇順に従って発行された時刻が新しくなり、ｓｑｌ８が最も新しく発行されたことを示すものとする。同様に、図７で示すスナップショット使用情報６１０内のｔ０〜８のうち、ｔ０が最も古い時刻であり、昇順に従って新しい時刻となり、ｔ８が最も新しい時刻であるとする。
【００５５】
例えば、スナップショットｉｄ８は、最近の時刻であるｔ８に使われたことを示しているが、スナップショットｉｄ８の複製時点のＤＢサーバ２３２の直前に発行されたＳＱＬクエリはｓｑｌ７であり、スナップショットｉｄ７よりも古い時刻のものである。
【００５６】
また、ＤＢ復元装置２１１は、初期スナップショットもスナップショット使用情報６１０を用いて管理する。このとき、図７では示していないが、初期スナップショットであることを示すために、スナップショット使用情報６１０は、初期スナップショットであることを示すフラグを、スナップショットＩＤと関連付けて記憶する。図７の例では、スナップショットｉｄ０が初期スナップショットであるとする。
【００５７】
図８は、削除するスナップショットの決定例を示す説明図である。図８では、削除するスナップショットを決定する例について説明する。ここで、スナップショット記憶部２２２に保存したスナップショットは、図７で示したスナップショットｉｄ０〜８であるとする。さらに、初期スナップショットであるスナップショットｉｄ０は削除対象から除外する。また、図８の例では、７つまでスナップショットを保存するものとし、スナップショットｉｄ１〜８から、削除する２つのスナップショットを決定する方法について説明する。
【００５８】
図８では、直前のｓｑｌが発行された時刻順に、スナップショットｉｄ０〜８を並べたものである。図８で示すように、直前のｓｑｌが発行された古い順に、スナップショットｉｄ０〜６、８、７の順となる。さらに、図８で示すように、１つ前のスナップショットの複製時点の時刻から、あるスナップショットの複製時点の時刻までの間隔が、あるスナップショットの作成時間の長さを示す。スナップショットの作成時間の特定方法については、図９で説明する。図８で示すように、スナップショットｉｄ１、５の作成時間が最も長くなり、スナップショットｉｄ３の作成時間が２番目に長くなり、スナップショットｉｄ８の作成時間が３番目に長くなり、スナップショットｉｄ２、４、６、７の作成時間が最も短くなる。
【００５９】
まず、ＤＢ復元装置２１１は、復元に使われた最後の時刻が古いスナップショットからｎ［％］を選択する。ｎ［％］は、ＤＢ復元装置２１１の管理者が決定する値である。図８の例では、復元に使われた最後の時刻の古い順に、テスト使用時刻がｔ１〜ｔ４となるスナップショットｉｄ１〜ｉｄ４を選択する。このように、復元に使われた最後の時刻が古いスナップショットから削除することで、最近復元に使われたスナップショットを残すことができる。そして、本番系システム２０１の不具合を修正した際、修正した箇所で再び問題が発生しやすいという経験側から、最近復元に使われたスナップショットを残して、スナップショットの作成時間を短縮することができる。
【００６０】
また、アクセス再現の途中で、より細かく絞り込むため、指定された時刻から少し後の時刻から再現したりすることがある。この場合、指定された時刻から少し後のスナップショットは、指定された時刻のスナップショットからすぐ作れるものであるから、ＤＢ復元装置２１１は、指定された時刻のスナップショットを残すことで、スナップショットの作成時間を短縮することができる。
【００６１】
そして、ＤＢ復元装置２１１は、選択したスナップショットｉｄ１〜ｉｄ４のうちの作成時間が短いスナップショットｉｄ２、４を、削除するスナップショットとして決定する。このように、今後の作成の手間を考慮して、スナップショットの作成時間が短いものを削除対象とすることで、ＤＢ復元装置２１１は、平均作成時間が短くなる。
【００６２】
図９は、スナップショットの作成時間の特定方法の一例を示す説明図である。図９の例は、１つ前のスナップショットの複製時点の時刻から、あるスナップショットの複製時点の時刻までに、参照クエリｓｑ０〜ｓｑ６と更新クエリｕｑ０〜ｕｑ２とが発行された例を用いて、あるスナップショットの作成時間の特定方法について説明する。また、図９では、参照クエリｓｑ０〜ｓｑ６と更新クエリｕｑ０〜ｕｑ２の横幅が、各クエリの処理時間を示すものとする。ここで、参照クエリとは、ＤＢサーバ２３２に対して参照を行うクエリであり、例えば、ＳＥＬＥＣＴ文等である。また、更新クエリは、ＤＢサーバ２３２に対して更新を行うクエリであり、例えば、ＵＰＤＡＴＥ文、ＩＮＳＥＲＴ文、ＤＥＬＥＴＥ文である。
【００６３】
ＤＢ復元装置２１１は、ＳＱＬクエリの処理時間を合計した時間を、スナップショットの作成時間として特定する。また、ＤＢ復元装置２１１は、ＳＱＬクエリのうちの更新ＳＱＬクエリの処理時間を、スナップショットの作成時間として特定してもよい。例えば、ＤＢサーバ２３２が、同時にＳＱＬクエリを受け入れて処理するＤＢである場合、ＤＢ復元装置２１１は、同時に行う他の参照ＳＱＬクエリを除いても更新ＳＱＬクエリの処理時間は変わらないものとして処理する。実際には、参照ＳＱＬクエリを除くことで、更新ＳＱＬクエリの処理時間が短くなる可能性はあるが、短くなる時間は、更新ＳＱＬクエリの処理時間に対して小さいものであり、厳密に求めなくてよい。また、非同期の更新ＳＱＬクエリであったとしても、非同期の更新ＳＱＬクエリの処理時間は変わらないものとなる。
【００６４】
ＳＱＬクエリの処理時間について、ＤＢ復元装置２１１は、ＳＱＬクエリの処理時間を、例えば、ＳＱＬクエリの応答時刻から要求時刻を減じた時間とする。または、本番系システム２０１で発行されるＳＱＬクエリの処理時間が、常にほぼ一定であることが本番系システム２０１の仕様から明らかであったとする。この場合、ＤＢ復元装置２１１は、ＳＱＬクエリの処理時間を所定値としてもよい。
【００６５】
図９の例では、ＤＢ復元装置２１１は、あるスナップショットの作成時間を、更新クエリｕｑ０〜ｕｑ２の処理時間を合計した時間とする。
【００６６】
図１０は、投機的なスナップショットの作成方法の一例を示す説明図である。図１０の例では、スナップショット記憶部２２２には、初期スナップショットしか保存しておらず、さらに、検証用ＤＢサーバ２４３の内容が、初期スナップショットの状態になっているものとする。図１０の説明では、検証用ＤＢサーバ２４３＿ｓｘと記載する。末尾記号「ｓｘ」は、検証用ＤＢサーバ２４３の内容に一致するスナップショットの符号と一致する。また、ＳＱＬクエリ記憶部２２１は、更新ＳＱＬクエリであるｓｑｌ１〜ｓｑｌ３０を保存するものとする。そして、説明の簡略化のため、ｓｑｌ１〜ｓｑｌ３０の処理時間は同一であるものとする。
【００６７】
ＤＢ復元装置２１１は、スナップショット記憶部２２２に保存可能なデータ量からスナップショット記憶部２２２の現在のデータ量を引いた値を、１つあたりのスナップショットのデータ量で割った値を、スナップショットを保存可能な数として特定する。図１０の例では、ＤＢ復元装置２１１は、スナップショットを保存可能な数を３として特定したとする。
【００６８】
次に、ＤＢ復元装置２１１は、これから作成する３つのスナップショットが均等に分布するように、ｓｑｌの処理時間から、スナップショットを保存する更新ＳＱＬクエリを決定する。図１０の例では、ＤＢ復元装置２１１は、ｓｑｌ１０、２０、３０を、スナップショットを保存する更新ＳＱＬクエリとして決定する。
【００６９】
次に、ＤＢ復元装置２１１は、検証用ＤＢサーバ２４３＿ｓ０に対して、ｓｑｌ１〜１０を発行する。これにより、ＤＢ復元装置２１１は、ＤＢ状態１となった検証用ＤＢサーバ２４３＿ｓ１０の内容を複製したスナップショットｓ１０を作成する。同様に、ＤＢ復元装置２１１は、検証用ＤＢサーバ２４３＿ｓ１０に対して、ｓｑｌ１１〜２０を発行する。これにより、ＤＢ復元装置２１１は、ＤＢ状態２となった検証用ＤＢサーバ２４３＿ｓ２０の内容を複製したスナップショットｓ２０を作成する。同様に、ＤＢ復元装置２１１は、検証用ＤＢサーバ２４３＿ｓ２０に対して、ｓｑｌ２１〜３０を発行する。これにより、ＤＢ復元装置２１１は、目標状態となった検証用ＤＢサーバ２４３＿ｓ３０の内容を複製したスナップショットｓ３０を作成する。
【００７０】
次に、アクセス再現システム２００が実行する処理を示すフローチャートを、図１１〜図１４を用いて説明する。
【００７１】
図１１は、アクセス再現処理手順の一例を示すフローチャートである。アクセス再現処理は、本番系システム２０１における検証者が指定した時点の状態を、検証系システム２０２で再現する処理である。
【００７２】
ＤＢ復元装置２１１は、初期スナップショットを保存する（ステップＳ１１０１）。次に、アクセス再現システム２００は、ＨＴＴＰリクエストとＳＱＬクエリとの保存を開始する（ステップＳ１１０２）。ステップＳ１１０２の処理について、具体的には、ＨＴＴＰリクエスト記憶装置２１３がＨＴＴＰリクエストの保存を開始するとともに、ＤＢ復元装置２１１がＳＱＬクエリの保存を開始する。
【００７３】
ステップＳ１１０２の処理から一定時間経過後、ＤＢ復元装置２１１は、投機的スナップショット作成処理を実行する（ステップＳ１１０３）。投機的スナップショット作成処理の詳細については、図１３、図１４で説明する。なお、ＤＢ復元装置２１１は、ステップＳ１１０３の処理を行わなくてもよい。次に、ステップＳ１１０３の処理終了後、検証者端末２１５が状態を再現する指示をアクセス再現制御装置２１２に送信したとする。この時、アクセス再現制御装置２１２からのＤＢ再現指示を受けると、ＤＢ復元装置２１１は、指定された時刻から、復元に用いるスナップショットを選択する（ステップＳ１１０４）。
【００７４】
そして、ＤＢ復元装置２１１は、選択したスナップショットと、ＳＱＬクエリの発行とにより、ＤＢを復元する（ステップＳ１１０５）。次に、ＤＢ復元装置２１１は、スナップショットが保存可能、または、ＤＢ復元時にＳＱＬクエリの発行なしか否かを判断する（ステップＳ１１０６）。スナップショットが保存可能でない、かつ、ＤＢ復元時にＳＱＬクエリの発行がある場合（ステップＳ１１０６：Ｎｏ）、ＤＢ復元装置２１１は、削除スナップショット決定処理を実行する（ステップＳ１１０７）。削除スナップショット決定処理の詳細については、図１２で説明する。
【００７５】
ステップＳ１１０７の処理終了後、または、スナップショットが保存可能、または、ＤＢ復元時にＳＱＬクエリの発行なしの場合（ステップＳ１１０６：Ｙｅｓ）、ＤＢ復元装置２１１は、ＤＢ復元時にＳＱＬクエリの発行ありか否かを判断する（ステップＳ１１０８）。ＤＢ復元時にＳＱＬクエリの発行ありの場合（ステップＳ１１０８：Ｙｅｓ）、ＤＢ復元装置２１１は、復元したＤＢに対するスナップショットを保存する（ステップＳ１１０９）。
【００７６】
ステップＳ１１０９の処理終了後、または、ＤＢ復元時にＳＱＬクエリの発行なしの場合（ステップＳ１１０８：Ｎｏ）、ＤＢ復元装置２１１は、スナップショット使用情報を更新する（ステップＳ１１１０）。そして、アクセス再現制御装置２１２は、アクセス再現によるテストを実行する（ステップＳ１１１１）。ステップＳ１１１１の処理終了後、アクセス再現システム２００は、ステップＳ１１０３の処理に移行する。アクセス再現処理を実行することにより、ＤＢ復元装置２１１は、本番系システム２０１における検証者が指定した時点の状態を、検証系システム２０２で再現して、検証者が検証することができる。
【００７７】
図１２は、削除スナップショット決定処理手順の一例を示すフローチャートである。削除スナップショット決定処理は、スナップショット記憶部２２２に保存されたスナップショットから、スナップショットを削除する処理である。
【００７８】
ＤＢ復元装置２１１は、復元に使われた最後の時刻が古いスナップショットからｎ［％］を選択する（ステップＳ１２０１）。次に、ＤＢ復元装置２１１は、選択したスナップショットに対して、直前のスナップショットからの作成時間を特定する（ステップＳ１２０２）。そして、ＤＢ復元装置２１１は、選択したスナップショットのうち、作成時間が最小となるスナップショットを、削除するスナップショットとして決定する（ステップＳ１２０３）。そして、ＤＢ復元装置２１１は、決定したスナップショットを削除する（ステップＳ１２０４）。ステップＳ１２０４の処理終了後、ＤＢ復元装置２１１は、削除スナップショット決定処理を終了する。削除スナップショット決定処理を実行することにより、ＤＢ復元装置２１１は、スナップショット記憶部２２２のデータ量を削減するとともに、ＤＢの復元時間の増大を抑えることができる。
【００７９】
図１３は、投機的スナップショット作成処理手順の一例を示すフローチャート（その１）である。また、図１４は、投機的スナップショット作成処理手順の一例を示すフローチャート（その２）である。投機的スナップショット作成処理は、スナップショットを投機的に作成する処理である。
【００８０】
ＤＢ復元装置２１１は、スナップショットを保存可能な数を特定する（ステップＳ１３０１）。次に、ＤＢ復元装置２１１は、ＳＱＬクエリ記憶部２２１に保存されたＳＱＬクエリの分析により、更新ＳＱＬクエリの処理時間を特定する（ステップＳ１３０２）。そして、ＤＢ復元装置２１１は、特定したスナップショットを保存可能な数と更新ＳＱＬクエリの処理時間とから、スナップショットを保存する更新ＳＱＬクエリを決定する（ステップＳ１３０３）。次に、ＤＢ復元装置２１１は、ｌａｓｔｐｏｓを最後の更新ＳＱＬクエリに設定する（ステップＳ１３０４）。そして、ＤＢ復元装置２１１は、ｓｔａｒｔを最初の更新ＳＱＬクエリに設定する（ステップＳ１３０５）。
【００８１】
次に、ＤＢ復元装置２１１は、ｓｔａｒｔからｌａｓｔｐｏｓまでに、スナップショットを保存する更新ＳＱＬクエリがあるか否かを判断する（ステップＳ１４０１）。スナップショットを保存する更新ＳＱＬクエリがある場合（ステップＳ１４０１：Ｙｅｓ）、ＤＢ復元装置２１１は、ｐｏｓを次のスナップショットを保存する更新ＳＱＬクエリに設定する（ステップＳ１４０２）。次に、ＤＢ復元装置２１１は、検証用ＤＢサーバ２４３に対して、ｓｔａｒｔからｐｏｓまでの更新ＳＱＬクエリを発行する（ステップＳ１４０３）。そして、ＤＢ復元装置２１１は、検証用ＤＢサーバ２４３の内容を複製して、スナップショットを作成する（ステップＳ１４０４）。ＤＢ復元装置２１１は、作成したスナップショットをスナップショット記憶部２２２に保存する。次に、ＤＢ復元装置２１１は、スナップショット使用情報６１０を更新する（ステップＳ１４０５）。
【００８２】
そして、ＤＢ復元装置２１１は、ｓｔａｒｔをｐｏｓの次の更新ＳＱＬクエリに設定する（ステップＳ１４０６）。ステップＳ１４０５の処理について、スナップショットの直前のｓｑｌフィールドには、ｐｏｓが示すＳＱＬクエリの識別情報が格納される。テスト使用時刻フィールドには、何も格納されず、空のフィールドとなる。次に、ＤＢ復元装置２１１は、ステップＳ１４０１の処理に移行する。
【００８３】
一方、スナップショットを保存する更新ＳＱＬクエリがない場合（ステップＳ１４０１：Ｎｏ）、ＤＢ復元装置２１１は、検証用ＤＢサーバ２４３に対して、ｓｔａｒｔからｌａｓｔｐｏｓまでの更新ＳＱＬクエリを発行する（ステップＳ１４０７）。次に、ＤＢ復元装置２１１は、検証用ＤＢサーバ２４３の内容を複製して、スナップショットを作成する（ステップＳ１４０８）。ＤＢ復元装置２１１は、作成したスナップショットをスナップショット記憶部２２２に保存する。そして、ＤＢ復元装置２１１は、スナップショット使用情報６１０を更新する（ステップＳ１４０９）。ステップＳ１４０９の処理について、スナップショットの直前のｓｑｌフィールドには、ｌａｓｔｐｏｓが示すＳＱＬクエリの識別情報が格納される。テスト使用時刻フィールドには、何も格納されず、空のフィールドとなる。
【００８４】
ステップＳ１４０９の処理終了後、ＤＢ復元装置２１１は、投機的スナップショット作成処理を終了する。投機的スナップショット作成処理を実行することにより、ＤＢ復元装置２１１は、ＤＢの復元時間の平均値を短縮することができる。
【００８５】
以上説明したように、ＤＢ復元装置２１１によれば、複数のスナップショットから、各スナップショットの作成時刻の間に受けたＳＱＬクエリの処理時間、すなわち、スナップショットの作成時間に基づいて、削除するスナップショットを決定する。これにより、管理装置１０１は、すぐ作れるスナップショットを削除してデータ量を減らしつつ、ＤＢサーバ２３２の内容の復元時間の増大を抑えることができる。また、ＤＢ復元装置２１１は、本番系システム２０１に負担をかけずにスナップショットを作成することができる。仮に、本番系システム２０１でスナップショットを作成するために数秒止まることが許容されるとしても、任意のタイミングのスナップショットを保存することは困難である。これに対し、ＤＢ復元装置２１１は、任意のタイミングのスナップショットを保存することができる。
【００８６】
また、ＤＢ復元装置２１１によれば、スナップショットの作成時間と、スナップショットのテスト使用時刻とに基づいて、削除するスナップショットを決定してもよい。これにより、本番系システム２０１の不具合を修正した際、修正した箇所で再び問題が発生しやすいという経験側から、ＤＢ復元装置２１１は、最近復元に使われたスナップショットを残して、スナップショットの作成時間を短縮することができる。
【００８７】
また、ＤＢ復元装置２１１によれば、ＳＱＬクエリ記憶部２２１を参照して、投機的にスナップショットを作成してもよい。これにより、ＤＢ復元装置２１１は、ＤＢの復元時間の平均値を短縮することができる。また、投機的に作成されたスナップショットは、テスト使用時刻が空となるため、削除されやすくなる。従って、投機的に作成されたスナップショットにより、頻繁に使用されるスナップショットが削除されてしまうということは起こらない。
【００８８】
なお、本実施の形態で説明したスナップショット管理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本スナップショット管理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本スナップショット管理プログラムは、インターネット等のネットワークを介して配布してもよい。
【００８９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００９０】
（付記１）コンピュータが、
データベースが受け付けた処理要求の時刻と前記処理要求に対応する処理にかかる時間とを対応付けた対応情報を参照して、複数の時刻の各々の時刻における前記データベースの内容を複製した複数のスナップショットのいずれかのスナップショットの時刻から前記いずれかのスナップショットとは異なる他のスナップショットの時刻までに前記データベースが受け付けた処理要求に対応する処理にかかる時間を特定し、
前記複数のスナップショットから、特定した前記時間に基づいて、削除するスナップショットを決定する、
処理を実行することを特徴とするスナップショット管理方法。
【００９１】
（付記２）前記いずれかのスナップショットが前記データベースの内容を復元することに用いられた時刻を特定する情報が前記いずれかのスナップショットに対応付けられており、
前記決定する処理は、
前記複数のスナップショットから、特定した前記時間と、前記データベースの内容を復元することに用いられた時刻とに基づいて、削除するスナップショットを決定することを特徴とする付記１に記載のスナップショット管理方法。
【００９２】
（付記３）前記コンピュータが、
前記対応情報を参照して、前記データベースが受け付けた処理要求を当該処理要求の時刻に従って複数のグループに分類し、
分類した前記複数のグループの各々のグループに対応して、前記各々のグループに属する処理要求のうちの最初の処理要求の時刻における内容を有するデータベースに対して前記各々のグループに属する処理要求を発行することにより得られる当該データベースの内容を複製したスナップショットを作成する、
処理を実行することを特徴とする付記１または２に記載のスナップショット管理方法。
【００９３】
（付記４）データベースが受け付けた処理要求の時刻と前記処理要求に対応する処理にかかる時間とを対応付けた対応情報を参照して、複数の時刻の各々の時刻における前記データベースの内容を複製した複数のスナップショットのいずれかのスナップショットの時刻から前記いずれかのスナップショットとは異なる他のスナップショットの時刻までに前記データベースが受け付けた処理要求に対応する処理にかかる時間を特定し、
前記複数のスナップショットから、特定した前記時間に基づいて、削除するスナップショットを決定する、
制御部を有することを特徴とする管理装置。
【００９４】
（付記５）コンピュータに、
データベースが受け付けた処理要求の時刻と前記処理要求に対応する処理にかかる時間とを対応付けた対応情報を参照して、複数の時刻の各々の時刻における前記データベースの内容を複製した複数のスナップショットのいずれかのスナップショットの時刻から前記いずれかのスナップショットとは異なる他のスナップショットの時刻までに前記データベースが受け付けた処理要求に対応する処理にかかる時間を特定し、
前記複数のスナップショットから、特定した前記時間に基づいて、削除するスナップショットを決定する、
処理を実行させることを特徴とするスナップショット管理プログラム。
【符号の説明】
【００９５】
１０１  管理装置
１０２  ＤＢ
２００  アクセス再現システム
２０１  本番系システム
２０２  検証系システム
２１１  ＤＢ復元装置
２２１  ＳＱＬクエリ記憶部
２２２  スナップショット記憶部
２３２  ＤＢサーバ
２４３  検証用ＤＢサーバ
６００  制御部
６０１  特定部
６０２  決定部
６０３  削除部
６０４  分類部
６０５  作成部
６１０  スナップショット使用情報
【図１】
2016129003.tif 000003
【図２】
2016129003.tif 000004
【図３】
2016129003.tif 000005
【図４】
2016129003.tif 000006
【図５】
2016129003.tif 000007
【図６】
2016129003.tif 000008
【図７】
2016129003.tif 000009
【図８】
2016129003.tif 000010
【図９】
2016129003.tif 000011
【図１０】
2016129003.tif 000012
【図１１】
2016129003.tif 000013
【図１２】
2016129003.tif 000014
【図１３】
2016129003.tif 000015
【図１４】
2016129003.tif 000016