(57)【特許請求の範囲】
【請求項１】
データの更新がある度に、更新されたデータにおける更新内容と当該データが次に更新される時刻である次回更新時刻とが示されるデータ更新情報を入力する情報入力部と、
前記情報入力部によりデータ更新情報が入力される度に、前記情報入力部により入力されたデータ更新情報を記憶する記憶部と、
前回の現在時刻の設定から所定の単位時間が経過した際に新たな現在時刻を設定する時刻設定部と、
前記時刻設定部により新たな現在時刻が設定される度に、新たな現在時刻よりも前の次回更新時刻が示されているデータ更新情報を前記記憶部から消去する情報管理部とを有し、
前記記憶部は、
複数の記憶領域を有し、
前記複数の記憶領域には、前記時刻設定部により次に設定される現在時刻よりも前の次回更新時刻が示されていることが判明しているデータ更新情報が格納される消去対象記憶領域が含まれ、
前記消去対象記憶領域以外の記憶領域にも、前記時刻設定部により次に設定される現在時刻よりも前の次回更新時刻が示されているデータ更新情報が格納されている場合があり、
前記情報管理部は、
前記時刻設定部により新たな現在時刻が設定される度に、
前記消去対象記憶領域内のデータ更新情報を消去するとともに、
前記消去対象記憶領域以外の記憶領域内のデータ更新情報の中から新たな現在時刻よりも前の次回更新時刻が示されているデータ更新情報を抽出し、抽出したデータ更新情報を消去することを特徴とする情報処理装置。
【請求項２】
前記記憶部は、
前記消去対象記憶領域以外の記憶領域として、
前記時刻設定部により次に設定される現在時刻以降の次回更新時刻が示されているか否かが判明していないデータ更新情報が格納される確認対象記憶領域を有し、
前記情報管理部は、
前記時刻設定部により新たな現在時刻が設定される度に、
前記消去対象記憶領域内のデータ更新情報を消去するとともに、
前記確認対象記憶領域内のデータ更新情報の中から新たな現在時刻よりも前の次回更新時刻が示されているデータ更新情報を抽出し、抽出したデータ更新情報を消去することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記記憶部は、更に、
データ更新情報が一時的に格納される予備記憶領域を有し、
前記情報管理部は、
前記時刻設定部により新たな現在時刻が設定される度に、
前記消去対象記憶領域内のデータ更新情報を消去するとともに、
前記確認対象記憶領域内のデータ更新情報を前記予備記憶領域に移し、
前記予備記憶領域に移されたデータ更新情報の中から新たな現在時刻よりも前の次回更新時刻が示されているデータ更新情報を抽出し、抽出したデータ更新情報を消去することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記記憶部は、更に、
前記時刻設定部により次に設定される現在時刻以降の次回更新時刻が示されていることが判明しているデータ更新情報が格納される維持対象記憶領域を有し、
前記情報管理部は、
前記時刻設定部により新たな現在時刻が設定される度に、
前記消去対象記憶領域内のデータ更新情報を消去するとともに、
前記確認対象記憶領域内のデータ更新情報を前記予備記憶領域に移し、更に、前記維持対象記憶領域内のデータ更新情報を前記確認対象記憶領域に移し、
前記時刻設定部により設定された新たな現在時刻に前記単位時間を加算して、前記時刻設定部により次に設定される現在時刻である次設定現在時刻を導出し、
消去されずに前記予備記憶領域内で維持されているデータ更新情報の次回更新時刻と、導出した次設定現在時刻とを比較し、
次設定現在時刻以降の次回更新時刻が示されている前記予備記憶領域内のデータ更新情報を前記維持対象記憶領域に移し、次設定現在時刻よりも前の次回更新時刻が示されている前記予備記憶領域内のデータ更新情報を前記消去対象記憶領域に移すことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記情報入力部は、
前記情報管理部による前記維持対象記憶領域へのアクセスを禁止した後に、入力したデータ更新情報を前記維持対象記憶領域に格納し、前記維持対象記憶領域へのデータ更新情報の格納が完了した後に、前記情報管理部による前記維持対象記憶領域へのアクセスの禁止を解除し、
前記情報管理部は、
前記情報入力部による前記維持対象記憶領域へのアクセスを禁止した後に、次設定現在時刻以降の次回更新時刻が示されている前記予備記憶領域内のデータ更新情報を前記維持対象記憶領域に移し、前記維持対象記憶領域へのデータ更新情報の移行が完了した後に、前記情報入力部による前記維持対象記憶領域へのアクセスの禁止を解除することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記時刻設定部は、
現在時刻の設定に用いられる単位時間よりも長い時間を周期とする待機時間の満了時刻を設定し、
前記記憶部は、更に、
待機時間の満了時刻以降の次回更新時刻が示されているデータ更新情報が格納される待機対象記憶領域を有し、
前記情報入力部は、
入力したデータ更新情報に示されている次回更新時刻が待機時間の満了時刻以降であるか否かを判断し、
待機時間の満了時刻以降の次回更新時刻が示されているデータ更新情報を前記待機対象記憶領域に格納し、
待機時間の満了時刻よりも前の次回更新時刻が示されているデータ更新情報を前記維持対象記憶領域に格納し、
前記情報管理部は、
前記時刻設定部により設定された新たな現在時刻が待機時間の満了時刻に一致する場合に、
前記待機対象記憶領域内のデータ更新情報の中から、次の待機時間の満了時刻よりも前の次回更新時刻が示されているデータ更新情報を抽出し、
抽出したデータ更新情報の次回更新時刻と、次設定現在時刻とを比較し、
次設定現在時刻以降の次回更新時刻が示されている前記待機対象記憶領域内のデータ更新情報を前記維持対象記憶領域に移し、次設定現在時刻よりも前の次回更新時刻が示されている前記待機対象記憶領域内のデータ更新情報を前記消去対象記憶領域に移すことを特徴とする請求項４又は５に記載の情報処理装置。
【請求項７】
前記記憶部は、更に、
前記時刻設定部により次に設定される現在時刻以降の次回更新時刻が示されていることが判明しているデータ更新情報が格納される維持対象記憶領域と、
前記情報入力部によりデータ更新情報が入力される度に、前記情報入力部により入力されたデータ更新情報が格納される新規情報記憶領域を有し、
前記情報管理部は、
前記時刻設定部により新たな現在時刻が設定される度に、
前記消去対象記憶領域内のデータ更新情報を消去するとともに、
前記確認対象記憶領域内のデータ更新情報を前記予備記憶領域に移し、更に、前記維持対象記憶領域内のデータ更新情報及び前記新規情報記憶領域内のデータ更新情報を前記確認対象記憶領域に移し、
前記時刻設定部により設定された新たな現在時刻に前記単位時間を加算して、前記時刻設定部により次に設定される現在時刻である次設定現在時刻を導出し、
消去されずに前記予備記憶領域内で維持されているデータ更新情報の次回更新時刻と、導出した次設定現在時刻とを比較し、
次設定現在時刻以降の次回更新時刻が示されている前記予備記憶領域内のデータ更新情報を前記維持対象記憶領域に移し、次設定現在時刻よりも前の次回更新時刻が示されている前記予備記憶領域内のデータ更新情報を前記消去対象記憶領域に移すことを特徴とする請求項３に記載の情報処理装置。
【請求項８】
前記時刻設定部は、
現在時刻の設定に用いられる単位時間よりも長い時間を周期とする待機時間の満了時刻を設定し、
前記記憶部は、更に、
待機時間の満了時刻以降の次回更新時刻が示されているデータ更新情報が格納される待機対象記憶領域を有し、
前記情報入力部は、
入力したデータ更新情報に示されている次回更新時刻が待機時間の満了時刻以降であるか否かを判断し、
待機時間の満了時刻以降の次回更新時刻が示されているデータ更新情報を前記待機対象記憶領域に格納し、
待機時間の満了時刻よりも前の次回更新時刻が示されているデータ更新情報を前記新規情報記憶領域に格納し、
前記情報管理部は、
前記時刻設定部により設定された新たな現在時刻が待機時間の満了時刻に一致する場合に、
前記待機対象記憶領域内のデータ更新情報の中から、次の待機時間の満了時刻よりも前の次回更新時刻が示されているデータ更新情報を抽出し、
抽出したデータ更新情報の次回更新時刻と、次設定現在時刻とを比較し、
次設定現在時刻以降の次回更新時刻が示されている前記待機対象記憶領域内のデータ更新情報を前記維持対象記憶領域に移し、次設定現在時刻よりも前の次回更新時刻が示されている前記待機対象記憶領域内のデータ更新情報を前記消去対象記憶領域に移すことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記情報入力部は、
データベースを管理するデータベース管理装置から、前記データベース内のデータにおける更新内容が示されるデータ更新情報を入力し、
前記情報処理装置は、更に、
前記データベースの復元要求があった際に、前記記憶部内のデータ更新情報に示されている更新内容を用いて、前記データベースを復元するデータベース復元部を有することを特徴とする請求項１〜８のいずれかに記載の情報処理装置。
【請求項１０】
前記データベース復元部は、
前記データベースの復元要求があった際に、前記記憶部内で同一のデータに対して重複して存在しているデータ更新情報があれば、データ更新情報の重複を排除し、重複排除後の前記記憶部内のデータ更新情報に示されている更新内容を用いて、前記データベースを復元することを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
データの更新がある度に、更新されたデータにおける更新内容と当該データが次に更新される時刻である次回更新時刻とが示されるデータ更新情報を、コンピュータが入力する情報入力ステップと、
前記情報入力ステップによりデータ更新情報が入力される度に、前記コンピュータが、前記情報入力ステップにより入力されたデータ更新情報を記憶装置において記憶する記憶ステップと、
前記コンピュータが、前回の現在時刻の設定から所定の単位時間が経過した際に新たな現在時刻を設定する時刻設定ステップと、
前記時刻設定ステップにより新たな現在時刻が設定される度に、前記コンピュータが、新たな現在時刻よりも前の次回更新時刻が示されているデータ更新情報を前記記憶装置から消去する情報管理ステップとを有し、
前記記憶装置は、
複数の記憶領域を有し、
前記複数の記憶領域には、前記時刻設定ステップにより次に設定される現在時刻よりも前の次回更新時刻が示されていることが判明しているデータ更新情報が格納される消去対象記憶領域が含まれ、
前記消去対象記憶領域以外の記憶領域にも、前記時刻設定ステップにより次に設定される現在時刻よりも前の次回更新時刻が示されているデータ更新情報が格納されている場合があり、
前記時刻設定ステップにより新たな現在時刻が設定される度に、
前記情報管理ステップにおいて、
前記コンピュータが、
前記消去対象記憶領域内のデータ更新情報を消去するとともに、
前記消去対象記憶領域以外の記憶領域内のデータ更新情報の中から新たな現在時刻よりも前の次回更新時刻が示されているデータ更新情報を抽出し、抽出したデータ更新情報を消去することを特徴とする情報処理方法。
【請求項１２】
データの更新がある度に、更新されたデータにおける更新内容と当該データが次に更新される時刻である次回更新時刻とが示されるデータ更新情報を入力する情報入力ステップと、
前記情報入力ステップによりデータ更新情報が入力される度に、前記情報入力ステップにより入力されたデータ更新情報を記憶装置に記憶させる記憶ステップと、
前回の現在時刻の設定から所定の単位時間が経過した際に新たな現在時刻を設定する時刻設定ステップと、
前記時刻設定ステップにより新たな現在時刻が設定される度に、新たな現在時刻よりも前の次回更新時刻が示されているデータ更新情報を前記記憶装置から消去する情報管理ステップとをコンピュータに実行させるプログラムであって、
前記記憶装置は、
複数の記憶領域を有し、
前記複数の記憶領域には、前記時刻設定ステップにより次に設定される現在時刻よりも前の次回更新時刻が示されていることが判明しているデータ更新情報が格納される消去対象記憶領域が含まれ、
前記消去対象記憶領域以外の記憶領域にも、前記時刻設定ステップにより次に設定される現在時刻よりも前の次回更新時刻が示されているデータ更新情報が格納されている場合があり、
前記時刻設定ステップにより新たな現在時刻が設定される度に、
前記情報管理ステップにおいて、
前記コンピュータに、
前記消去対象記憶領域内のデータ更新情報を消去させるとともに、
前記消去対象記憶領域以外の記憶領域内のデータ更新情報の中から新たな現在時刻よりも前の次回更新時刻が示されているデータ更新情報を抽出し、抽出したデータ更新情報を消去させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、更新されたデータにおける更新内容を記憶するとともに、記憶している更新内容における重複を効率的に除去する技術に関する。
【背景技術】
【０００２】
コンピュータシステムの可用性を向上するため、データベースの冗長化が行われる。
常時更新されるデータベースを複製するに当たり、データ全体を複製することによるデータ転送コストの上昇を避けるため、更新の都度生成される差分情報（更新ログ、ジャーナル）を保存または別システムに転送し、差分情報から元のデータベースを復元する方式が知られている。
差分情報からデータベースを復元するには、差分情報を発生順にデータベースに反映すれば良いが、データベースのある部分（アドレス、レコード）に対する差分情報に引き続き、同一部分に対する別の差分情報が発生した場合、先行する差分情報の反映処理は無駄となり、データベース復元処理時間の増大を招いてしまう。
そこで、差分情報をデータベースに反映する前に、差分情報に対応するアドレスに基づいて重複除去処理を行い、各アドレスに対し、最新の差分情報のみを取り出してから反映処理を行う方法が、例えば特許文献１に述べられている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２４３１３８号公報  第４２頁  図２２
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のデータベース復元方法では、特許文献１に述べられているように、蓄積されたデータベース差分情報全体に対する重複除去を行うため、ソート等の演算処理が必要となる。
差分情報の蓄積量が少ない場合は、二次記憶上の差分情報全体を主記憶に読み込み、主記憶上でソート演算を完了させることができるが、蓄積量が増加するにつれ、主記憶に読み込み可能な部分毎に中間結果を作成し、二次記憶に対して入出力を繰り返す必要が生じ、処理コストが増大するという課題がある。
一方、差分情報が一定量蓄積されるごとに複製データベースへの反映を行うことで、差分情報を削除し蓄積量を抑制することが可能となるが、システムの可用性を高めるためには複製データベースを必ず二次記憶に書き込む必要があり、全体の処理コストは低減できない。
【０００５】
本発明は上記の課題を解決することを主な目的としており、データの更新がある度に、更新されたデータにおける更新内容を記憶するとともに、記憶している更新内容における重複を効率的に除去することを主な目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る情報処理装置は、
データの更新がある度に、更新されたデータにおける更新内容と当該データが次に更新される時刻である次回更新時刻とが示されるデータ更新情報を入力する情報入力部と、
前記情報入力部によりデータ更新情報が入力される度に、前記情報入力部により入力されたデータ更新情報を記憶する記憶部と、
前回の現在時刻の設定から所定の単位時間が経過した際に新たな現在時刻を設定する時刻設定部と、
前記時刻設定部により新たな現在時刻が設定される度に、新たな現在時刻よりも前の次回更新時刻が示されているデータ更新情報を前記記憶部から消去する情報管理部とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、新たな現在時刻が設定される度に、新たな現在時刻よりも前の次回更新時刻が示されているデータ更新情報を記憶部から消去するため、データ更新情報における重複を効率的に除去することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係るデータベース復元装置の構成例を示す図。
【図２】実施の形態１に係る更新ログエントリ（レコード更新）の例を示す図。
【図３】実施の形態１に係る更新ログエントリ（現在時刻設定）の例を示す図。
【図４】実施の形態１に係るログ入力処理の例を示すフローチャート図。
【図５】実施の形態１に係るログ縮約処理の例を示すフローチャート図。
【図６】実施の形態１に係るログ縮約処理の概要を説明する図。
【図７】実施の形態１に係るデータベース復元処理を示すフローチャート図。
【図８】実施の形態１に係るデータベース復元処理の概要を説明する図。
【図９】実施の形態１に係るデータベース復元装置とデータベース管理装置が一体となった場合の構成例を示す図。
【図１０】実施の形態１に係るデータベース復元装置とデータベース管理装置が一体となったサーバの例を示す図。
【図１１】実施の形態２に係るデータベース復元装置の構成例を示す図。
【図１２】実施の形態２に係るログ入力処理の例を示すフローチャート図。
【図１３】実施の形態２に係るログ縮約処理の例を示すフローチャート図。
【図１４】実施の形態２に係るログ縮約処理の概要を説明する図。
【図１５】実施の形態３に係るデータベース復元装置の構成例を示す図。
【図１６】実施の形態３に係るログ入力処理の例を示すフローチャート図。
【図１７】実施の形態３に係るログ縮約処理２の例を示すフローチャート図。
【図１８】実施の形態２に係るデータベース復元処理の概要を説明する図。
【図１９】実施の形態１〜３に係るデータベース復元装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１〜３では、データベースの各レコードに対する次回更新時刻が指定されている場合に、更新の都度発生する差分情報を常に二次記憶装置に格納しつつ、同一レコードに対する差分情報の重複を効率的に除去する例を説明する。
【００１０】
実施の形態１．
図１は、本実施の形態に係るデータベース復元装置１の構成例を示す。
なお、データベース復元装置１は情報処理装置の例に相当する。
【００１１】
図１において、データベース復元装置１は、データベース管理装置２と制御装置４と通信を行う。
データベース復元装置１は、データベース管理装置２が管理するデータベースの更新時に発生する差分情報を入力し、保持する。
そして、データベース管理装置２が管理するデータベースにおいて障害が発生した場合等に、制御装置４からの要求に基づき、保持している差分情報を用いてデータベースの復元を行う。
【００１２】
更新ログエントリ３は、データベース復元装置１がデータベース管理装置２から受け取るメッセージである。
更新ログエントリ３には、更新ログエントリ（レコード更新）３ｒと更新ログエントリ（現在時刻設定）３ｔとがある。
詳細は後述するが、更新ログエントリ（レコード更新）３ｒは、更新されたデータにおける更新内容である差分情報と当該データが次に更新される予定の時刻である次回更新時刻とが示される情報であり、データ更新情報の例に相当する。
また、更新ログエントリ（現在時刻設定）３ｔは、所定の単位時間（例えば、１分、１時間、１日等）ごとに到来する新たな現在時刻を通知する情報である。
【００１３】
データベース復元要求５は、データベース復元装置１が制御装置４から受け取るメッセージである。
より具体的には、制御装置４がデータベース復元装置１に対してデータベースの復元を要求するメッセージである。
【００１４】
データベース復元装置１は、記憶部６、ログ入力部７、ログ縮約部８、データベース復元部９からなる。
【００１５】
ログ入力部７は、更新ログエントリ（レコード更新）３ｒと更新ログエントリ（現在時刻設定）３ｔをデータベース管理装置２から入力する。
ログ入力部７は、更新ログエントリ（レコード更新）３ｒを入力する度に、入力した更新ログエントリ（レコード更新）３ｒを記憶部６に格納する。
また、ログ入力部７は、更新ログエントリ（現在時刻設定）３ｔを新たに入力する度に、更新ログエントリ（現在時刻設定）３ｔに示されている新たな現在時刻を設定する。
すなわち、ログ入力部７は、前回の現在時刻の設定から所定の単位時間が経過した際に新たな現在時刻を設定する。
現在時刻の刻み幅である単位時間を１分とすると、例えば、０時００分を現在時刻として通知する更新ログエントリ（現在時刻設定）３ｔを入力した際に、ログ入力部７は、現在時刻を０時００分として設定し、現在時刻０時００分に基づいて記憶部６内の更新ログエントリ（レコード更新）３ｒの整理を行う。
前回の更新ログエントリ（現在時刻設定）３ｔの入力から１分が経過すると、ログ入力部７は、０時０１分を現在時刻として通知する更新ログエントリ（現在時刻設定）３ｔを入力し、現在時刻を０時０１分として設定し、現在時刻０時０１分に基づいて記憶部６内の更新ログエントリ（レコード更新）３ｒの整理を行う。
なお、更新ログエントリ（レコード更新）３ｒは、データベース管理装置２で管理されているデータベース内のデータに更新があった際に出力されるので、更新ログエントリ（現在時刻設定）３ｔとは非同期に出力される。
ログ入力部７は、情報入力部及び時刻設定部の例に相当する。
更に、ログ入力部７による処理は、情報入力ステップ及び時刻設定ステップの例に相当する。
【００１６】
記憶部６は、更新ログエントリ３の内、レコード更新に関するエントリである更新ログエントリ（レコード更新）３ｒを格納する。
記憶部６は、領域ａ  ６ａ、領域ｂ  ６ｂ、及び領域ｃ  ６ｃからなり、さらに、一時作業領域として領域ｂ’  ６ｂ’を備える。
領域ａ  ６ａには、ログ入力部７により次に設定される現在時刻以降の次回更新時刻が示されていることが判明している更新ログエントリ（レコード更新）３ｒが格納される。
領域ａ  ６ａは、維持対象記憶領域の例に相当する。
領域ｂ  ６ｂには、ログ入力部７により次に設定される現在時刻以降の次回更新時刻が示されているか否かが判明していない更新ログエントリ（レコード更新）３ｒが格納される。
領域ｂ  ６ｂは、確認対象記憶領域の例に相当する。
領域ｃ  ６ｃには、ログ入力部７により次に設定される現在時刻よりも前の次回更新時刻が示されていることが判明している更新ログエントリ（レコード更新）３ｒが格納される。
領域ｃ  ６ｃは、消去対象記憶領域の例に相当する。
領域ｂ’  ６ｂ’には、更新ログエントリ（レコード更新）３ｒが一時的に格納される。
領域ｂ’  ６ｂ’は、予備記憶領域の例に相当する。
また、記憶部６において更新ログエントリ（レコード更新）３ｒを記憶する処理は、記憶ステップの例に相当する。
【００１７】
ログ縮約部８は、ログ入力部７により新たな現在時刻が設定される度に、新たな現在時刻よりも前の次回更新時刻が示されている更新ログエントリ（レコード更新）３ｒを記憶部６から消去する。
より具体的には、ログ入力部７により新たな現在時刻が設定される度に、領域ｃ  ６ｃ内の更新ログエントリ（レコード更新）３ｒを消去するとともに、領域ｃ  ６ｃ以外の領域に格納されている更新ログエントリ（レコード更新）３ｒの中から新たな現在時刻よりも前の次回更新時刻が示されている更新ログエントリ（レコード更新）３ｒを抽出し、抽出した更新ログエントリ（レコード更新）３ｒを消去する。
ログ縮約部８の動作の詳細は後述する。
なお、ログ縮約部８は、情報管理部の例に相当する。
また、ログ縮約部８による処理は、情報管理ステップの例に相当する。
【００１８】
データベース復元部９は、データベース復元要求５を入力した際に、記憶部６に記憶されている更新ログエントリ（レコード更新）３ｒを用いてデータベースを復元する。
【００１９】
データベース復元装置１は、プロセッサ、ランダムアクセスメモリ、磁気ディスク装置、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インタフェース等を備える一般的なコンピュータを用い、記憶部６を磁気ディスク装置で、ログ入力部７、ログ縮約部８、及びデータベース復元部９を、ランダムアクセスメモリに格納され、プロセッサで実行されるコンピュータプログラムとして、実現することができる。
また、領域ａ  ６ａ、領域ｂ  ６ｂ、領域ｂ’  ６ｂ’、及び領域ｃ  ６ｃは、Ｌｉｎｕｘ（登録商標）やＷｉｎｄｏｗｓ（登録商標）等の一般的なオペレーティングシステムが提供するファイルとして実現することができる。
さらに、ログ入力部７及びデータベース復元部９は、ＬＡＮ等の通信回線を介して、それぞれ更新ログエントリ３及びデータベース復元要求５を受信することができる。
【００２０】
図２は、レコード更新に関する更新ログエントリ３ｒの形式を示す図である。
【００２１】
更新ログエントリ（レコード更新）３ｒは、エントリ種別３０、レコードキー３１、次回更新時刻３２、及びレコードボディ３３からなる。
エントリ種別３０には常に「Ｒ」が設定され、当該エントリが更新ログエントリ（レコード更新）３ｒであることを識別可能にする。
レコードキー３１は、データベース内の更新対象となったレコードを一意に識別する情報であり、レコードボディ３３は更新後のレコードの内容である。
次回更新時刻３２は、データベース管理装置２が当該レコードを再度更新する予定の時刻である。
データベース管理装置２が外部から受け取る更新要求に次回更新時刻が含まれる場合、データベース管理装置２はその値を次回更新時刻３２に設定することができる。
データベース管理装置２の外部から明示的に次回更新時刻が指定されない場合、データベース管理装置２はレコード毎の更新の発生頻度に基づき、各レコードの次回更新時刻を推定し、その値を次回更新時刻３２に設定することができる。
次回更新時刻は所定の単位時間（時、分、秒など）で表される。
【００２２】
図３は、更新ログエントリ（現在時刻設定）３ｔの形式を示す図である。
データベース管理装置２は、単位時間で表した現在時刻が切り換わる際に、更新ログエントリ（現在時刻設定）３ｔを出力する。
【００２３】
更新ログエントリ（現在時刻設定）３ｔは、エントリ種別３０と現在時刻３４からなる。
エントリ種別３０には常に「Ｔ」が設定され、当該エントリが更新ログエントリ（現在時刻設定）３ｔであることを識別可能にする。
現在時刻３４には、所定の単位時間で表した新たな現在時刻が設定される。
【００２４】
次に、データベース復元装置１の動作をフローチャートを用いて説明する。
図４は、ログ入力部７の動作を示すフローチャートである。
【００２５】
まず、ステップＳ７０１において、ログ入力部７はデータベース管理装置２から更新ログエントリ３を１件受け取る。
次に、ステップＳ７０２において、受け取った更新ログエントリ３のエントリ種別３０の値に基づいて処理を分岐する。
受け取った更新ログエントリ３のエントリ種別３０が「Ｒ」であれば、ステップＳ７０３に進み、領域ａ  ６ａに対する書込みロックを取得する。
これにより、並行して動作している可能性のあるログ縮約部８が領域ａ  ６ａへの書込みを行うことを防ぐ。
ログ縮約部８が既に領域ａ  ６ａに対する書込みロックを保有している場合は、当該ロックが解放されるまで待機し、その後直ちに当該ロックを取得する。
次に、ログ入力部７は、ステップＳ７０４で、受け取った更新ログエントリ３（更新ログエントリ（レコード更新）３ｒ）の内容を領域ａ  ６ａの末尾に追加書込みする。
続いて、ログ入力部７は、ステップＳ７０５で領域ａ  ６ａに対する書込みロックを解放し、ステップＳ７０１に戻る。
一方、ステップＳ７０２において、受け取った更新ログエントリ３のエントリ種別３０が「Ｔ」である場合は、ステップＳ７０６に進み、ログ入力部７は、現在時刻３４の値をパラメータｔ’として、ログ縮約部８の動作を起動する。
ログ縮約部８は、ログ入力部７と並行して動作するものとし、公知のマルチスレッドやマルチプロセス等のプログラミング手法を用いて実現する。
次に、ログ入力部７は、ステップＳ７０７において、ログ縮約部８が領域ａ  ６ａを新たに作成した領域に置き換えるまで待機する。待機完了後、ステップＳ７０１に戻る。
以上のように、ログ入力部７は終了することなく処理を繰り返す。
【００２６】
図５は、ログ縮約部８の動作を説明するフローチャートである。
図５は、図４のＳ７０６においてログ入力部７により起動された後のログ縮約部８の動作例を示す。
以下では、ログ入力部７により設定された新たな現在時刻（Ｓ７０６でパラメータとしてログ入力部７から渡される現在時刻）を、ｔ’として説明を進める。
【００２７】
まず、ログ縮約部８は、ステップＳ８０１において、元の領域ｂ  ６ｂの内容を新たな領域ｂ’  ６ｂ’に移動させ、元の領域ａ  ６ａの内容を新たな領域ｂ  ６ｂに移動させる。
この処理は、領域ａ  ６ａ、領域ｂ  ６ｂ、領域ｂ’  ６ｂ’を表すファイル名の変更等により、領域の内容のコピーを伴わずに論理的な処理により実現することができる。
次に、ログ縮約部８は、ステップＳ８０２において、空の領域ａ  ６ａを新たに作成し、ステップＳ７０７において待機しているログ入力部７の待機状態を解除する。
次に、ログ縮約部８は、ステップＳ８０３において、領域ｃ  ６ｃに格納された更新ログエントリ（レコード更新）３ｒを全て抹消し、領域ｃ  ６ｃを空にする。
続いて、ログ縮約部８は、ステップＳ８０４以降の繰り返しにより、領域ｂ’  ６ｂ’に格納された更新ログエントリ（レコード更新）３ｒの処理を行う。
【００２８】
つまり、ログ縮約部８は、ステップＳ８０４において、領域ｂ’  ６ｂ’が空かどうかを判定し、空であればログ縮約部８の動作は完了であり、ログ縮約部８に対応するスレッドやプロセスを終了する。
領域ｂ’  ６ｂ’が空でなければステップＳ８０５に進み、領域ｂ’  ６ｂ’から更新ログエントリ（レコード更新）３ｒを１件取り出す（領域ｂ’  ６ｂ’からは取り除く）。
続いて、ステップＳ８０６において、取り出した更新ログエントリ（レコード更新）３ｒの次回更新時刻３２の値（これをｘとする）と、ログ縮約部８の呼び出しパラメータである新たな現在時刻ｔ’の比較を行う。
ｘ＜ｔ’であれば、ステップＳ８１１において、取り出した更新ログエントリ（レコード更新）３ｒを棄却し、直ちにステップＳ８０４に戻る。
例えば、単位時間が１分であり、次回更新時刻が１秒単位である場合に、ｔ’が０時００分であれば、２３時５９分５９秒以前の次回更新時刻の更新ログエントリ（レコード更新）３ｒは消去される。
【００２９】
一方、ｘ＝ｔ’であればステップＳ８０７に進み、ログ縮約部８は、取り出した更新ログエントリ（レコード更新）３ｒを領域ｃ  ６ｃの末尾に追加書込みし、ステップＳ８０４に戻る。
このｘ＝ｔ’とは、現在時刻ｔ’に単位時間を加算して得られる次の現在時刻（これをｔ”とする、また次設定現在時刻ともいう）よりも前の次回更新時刻であることを意味する。
例えば、単位時間が１分であり、次回更新時刻が１秒単位である場合に、ｔ’が０時００分であれば、次設定現在時刻ｔ”（０時０１分）よりも前の次回更新時刻（すなわち、ｘが０時００分００秒〜０時００分５９秒の間）の更新ログエントリ（レコード更新）３ｒがＳ８０７の処理の対象となる。
【００３０】
また、その他の場合、すなわちｘ＞ｔ’の場合、ステップＳ８０８に進み、領域ａ  ６ａに対する書込みロックを取得する。
このｘ＞ｔ’とは、現在時刻ｔ’に単位時間を加算して得られる次の現在時刻ｔ”以降の次回更新時刻であることを意味する。
例えば、単位時間が１分であり、次回更新時刻が１秒単位である場合に、ｔ’が０時００分であれば、次の現在時刻ｔ”（０時０１分）以降の次回更新時刻（すなわち、ｘが０時０１分００秒以降）の更新ログエントリ（レコード更新）３ｒがＳ８０８の処理の対象となる。
なお、Ｓ８０８の処理により、並行して動作しているログ入力部７が領域ａ  ６ａへの書込みを行うことを防ぐことができる。
次に、ログ縮約部８は、ステップＳ８０９において、取り出した更新ログエントリ（レコード更新）３ｒを領域ａ  ６ａの末尾に追加書込みする。
続いて、ログ縮約部８は、ステップＳ８１０で、領域ａ  ６ａの書込みロックを解放し、ステップＳ８０４に戻る。
【００３１】
図６は、ログ縮約部８の処理の概要を示す説明図である。
縦方向が各領域に、横方向が異なる時刻に対応している。
【００３２】
最も左に位置する列は、ログ縮約部８を呼び出す直前の状態に対応しており、この時の現在時刻をｔとする。
なお、現在時刻ｔ’は時刻ｔに単位時間を加算した時刻であり、現在時刻ｔ’＝ｔ＋１という関係にある。
更に、次設定現在時刻ｔ”は時刻ｔ”に単位時間を加算した時刻であり、現在時刻ｔ”＝ｔ’＋１という関係にある。
以下では、単位時間が１分であり、次回更新時刻が１秒単位である場合に、ｔが２３時５９分であり、ｔ’が０時００分であり、ｔ”が０時０１分である場合の例を、必要に応じてかっこ書等において示す。
また、ｘは更新ログエントリ（レコード更新）３ｒの次回更新時刻３２の値である。
【００３３】
左の列において、領域ａ  ６ａには、時刻ｔの間にログ入力部７が入力した更新ログエントリ（レコード更新）３ｒ及びログ縮約部８により次回更新時刻が時刻ｔよりも後であると判断された更新ログエントリ（レコード更新）３ｒのみが格納されているため、各エントリの次回更新時刻３２の値はｔよりも大きい（領域ａ  ６ａの各エントリの次回更新時刻は２３時５９分５９秒よりも後である）。
また、領域ｃ  ６ｃには、ログ縮約部８の動作の結果、次回更新時刻３２の値がｔに等しい更新ログエントリ（レコード更新）３ｒのみが格納されている（領域ｃ  ６ｃの各エントリの次回更新時刻は２３時５９分００〜２３時５９分５９秒の間である）。
一方、領域ｂ  ６ｂに格納されている更新ログエントリ（レコード更新）３ｒについては、次回更新時刻３２の値がｔより小さくないということが言える（領域ｂ  ６ｂの各エントリの次回更新時刻は２３時５９分００秒以降である）。
すなわち、当該エントリは、時刻ｔ以前の更新により重複除去の対象になっていない。
【００３４】
次に、中央の列は、ログ縮約部８がステップＳ８０３まで実行した後の状態に対応する。
つまり、図４のＳ７０６において新たな現在時刻ｔ’をパラメータとして起動されたログ縮約部８が、Ｓ８０１〜Ｓ８０３の処理を実行した後の各記憶領域の状態が中央の列に示されている。
【００３５】
領域ｃ  ６ｃの各エントリでは次回更新時刻が時刻ｔであるため、領域ｃ  ６ｃの各エントリが対象としているレコード（データベース内のレコード）は時刻ｔの間（２３時５９分００〜２３時５９分５９秒の間）に更新されており、時刻ｔ’の時点では、時刻ｔの間になされた更新の内容が示される更新ログエントリ（レコード更新）３ｒが必ず領域ａ  ６ａに含まれている。
そのため、領域ｃ  ６ｃの全てのエントリは重複除去の対象であり、一括して削除してよい（Ｓ８０３で削除）。
また、現在時刻ｔの時点で領域ａ  ６ａに関して成立するｘ＞ｔは、ｘ≧ｔ＋１すなわちｘ≧ｔ’となって、現在時刻ｔ’における領域ｂ  ６ｂに関する条件と同一になる（現在時刻ｔ時点で領域ａ  ６ａにあったｘ＞ｔのエントリ（ｘが２３時５９分５９秒よりも後のエントリ）は、現在時刻ｔ’を基準にすると、ｘ≧ｔ’（ｘが０時００分００秒以降）と解釈でき、現在時刻ｔ時点で領域ａ  ６ａにあったエントリは、現在時刻ｔ’における領域ｂ  ６ｂの条件に合致する）。
そこで、ログ縮約部８は、領域ａ  ６ａは領域ごと新たな領域ｂ  ６ｂとして読み替える（Ｓ８０１で置換）。
一方、元の領域ｂ  ６ｂに関して成立するｘ≧ｔは、時刻ｔ’におけるいずれの領域ａ〜ｃの条件にも対応しない（現在時刻ｔ時点で領域ｂ  ６ｂにあったｘ≧ｔのエントリ（ｘが２３時５９分００秒以降のエントリ）には、ｘ＝ｔ（ｘが２３時５９分００秒〜２３時５９分５９秒）のエントリも含まれている可能性があり、ｘ≧ｔ’であるかが不明であり、領域ａ〜ｃのいずれの条件にも対応しない）。
そこで、ログ縮約部８は、元の領域ｂ  ６ｂを領域ｂ’  ６ｂ’として退避し（Ｓ８０１で置換）、エントリごとに処理する。
【００３６】
つまり、ログ縮約部８は、エントリごとにｘとｔ’を比較し（Ｓ８０６）、ｘ＝ｔ（つまり、ｘ＜ｔ’）となるエントリは、重複除去の対象となるため削除する（Ｓ８１１）。
また、ｘ＝ｔ＋１すなわちｘ＝ｔ’となるエントリは、現在時刻ｔ’における領域ｃ  ６ｃの条件を満たすため、領域ｃ  ６ｃに移動する（Ｓ８０７）。
前述したように、ここでのｘ＝ｔ’とは、ｘ＜ｔ”ということである。
つまり、ｘが０時００分００秒〜０時００分５９秒のエントリを領域ｃ  ６ｃに移す。
残るエントリは、ｘ＞ｔ＋１すなわちｘ＞ｔ’（ｘが０時００分５９秒よりも後、つまり、ｘが０時０１分００秒（ｔ”）以降）を満たし、現在時刻ｔ’における領域ａ  ６ａの条件に合致するため、領域ａ  ６ａへの移動を行う（Ｓ８０８〜Ｓ８１０）。
【００３７】
最も右の列は、ログ縮約部８が動作を完了した直後の状態に対応しており、各領域のエントリが満たす条件が、最も左の列の条件における現在時刻を置き換えたものとなっている。
【００３８】
以上のように、ログ縮約部８は、更新ログエントリ（レコード更新）３ｒの次回更新時刻３２の値と現在時刻の大小関係に基づいてエントリの格納先領域を決定するので、領域ａ  ６ａ及び領域ｃ  ６ｃを領域単位で処理し、１件ずつ処理するエントリを領域ｂ  ６ｂに限定することが可能となる。
【００３９】
図７は、データベース復元部９の動作を示すフローチャートである。
【００４０】
ステップＳ９０１において、データベース復元部９は、制御装置４からのデータベース復元要求５を入力する。
次に、ステップＳ９０２において、データベース復元部９は、領域ｂ  ６ｂの更新ログエントリ（レコード更新）３ｒを１件ずつ調べ、エントリの次回更新時刻３２が現在時刻に等しければ領域ｃ  ６ｃの末尾に当該エントリを追加書込みして領域ｂ  ６ｂから削除する処理を繰り返す。
ここで、エントリの次回更新時刻ｘが現在時刻ｔに等しいとは、現在時刻ｔに単位時間を加算して得られる次の現在時刻ｔ’に対し、ｘ＜ｔ’であることを意味する。
次に、データベース復元部９は、ステップＳ９０３で、領域ｃ  ６ｃの更新ログエントリ（レコード更新）３ｒの内、レコードキー３１が一致するエントリが領域ａ  ６ａに含まれるものを削除する（領域ａ  ６ａを優先する重複除去）。
最後に、データベース復元部９は、ステップＳ９０４で、空のデータベースを作成し、領域ａ  ６ａ、領域ｂ  ６ｂ、及び領域ｃ  ６ｃの更新ログエントリ（レコード更新）３ｒの内容をデータベースに挿入し、データベースの復元を行う。
【００４１】
なお、データベース復元要求５は、通常、データベース管理装置２において障害が発生した際、すなわち、ログ入力部７による更新ログエントリ（レコード更新）３ｒの記憶部６への書き込みが行われないタイミングで発行されるため、図７では、図５のＳ８０８のような書き込みロックを行わない例を示している。
しかしながら、Ｓ９０１とＳ９０２との間で、Ｓ８０８のような書き込みロックを行い、Ｓ９０４の後でＳ８１０のような書き込みロックの解放を行うようにしてもよい。
【００４２】
図８は、図６と同様に、データベース復元部９の処理の概要を示す説明図である。
【００４３】
データベース復元部９は、次回更新時刻３２が現在時刻に等しい更新ログエントリ（レコード更新）３ｒを領域ｃ  ６ｃに集め、現在時刻に発生したレコード更新に対応する更新ログエントリ３ｒが集中している領域ａ  ６ａとの間で重複除去演算を行う。
これにより領域ｂ  ６ｂのエントリを重複除去演算の対象から除外することができる。
【００４４】
以上のように、本実施の形態によれば、データベースのレコード更新を再現するための更新ログエントリに、更新されたレコードが再度更新される時刻が次回更新時刻として付与されているので、当該エントリが重複除去対象となっているかどうかを、更新ログエントリの次回更新時刻の値と現在時刻を比較するだけで判定することができ、効率的に重複除去演算を実現できる。
また、現在時刻が変化する都度、更新ログエントリの重複除去を行うので、データベース復元時の処理対象エントリ件数を削減でき、データベース復元時間を短縮することが可能である。
また、現在時刻が変化する際に、直ちに新たな領域を作成し、更新ログエントリの入力と重複除去演算を並行して実施するので、データベース管理装置の停止や更新ログエントリの消失の可能性を最小限に止めることができる。
また、更新ログエントリを格納する領域を複数に分割し、次回更新時刻が現在時刻より大きいエントリのみを格納する領域を設けるので、当該領域を重複除去の対象外とし、処理対象の更新ログエントリを削減することができる。
また、３つの領域を用意し、次回更新時刻が現在時刻に等しいエントリのみを格納する領域を設けることで、当該領域を一括除去の対象とし、重複除去処理対象の更新ログエントリをさらに削減することができる。
【００４５】
なお、本実施の形態では、データベース復元装置１とデータベース管理装置２は独立したハードウェア（以下、Ｈ／Ｗとする）上に構成されるものとしたが、同一Ｈ／Ｗ上に構成しても良い。
例えば、図９に示すように、データベース管理を高速なランダムアクセスメモリ上で行い、障害回復のために更新ログを不揮発性の磁気ディスク装置に格納する形態が考えられる。
この場合、データベース復元部は、更新ログエントリの重複除去を効率的に行い、格納される更新ログエントリの増大を防ぐので、大容量の磁気ディスク装置や、ソート領域を含む大容量のランダムアクセスメモリを必要としないという効果がある。
【００４６】
また、複数のデータベース管理装置２が存在する場合、直接対応しないデータベース復元装置１とデータベース管理装置２を同一Ｈ／Ｗ上に構成しても良い。
例えば、図１０に示すように、２台のサーバのペアが相互にデータベース復元装置１とデータベース管理装置２の役割を果たすように構成することができる。
データベース復元装置１は大規模なＨ／Ｗを必要としないので、データベース管理装置２の余剰Ｈ／Ｗを利用して、サーバ障害への耐性を得るためのデータ冗長化を実現することができる。
【００４７】
以上、本実施の形態では、
データベースの更新ログ情報を入力するログ入力部と、記憶部と、ログ縮約部と、データベース復元部とを備えるデータベース復元装置を説明した。
より具体的には、
前記更新ログ情報は、
更新レコードの内容と、当該レコードが再度更新される予定の次回更新時刻と、からなるレコード更新情報と、
所定の単位時間が経過したことを示す現在時刻設定情報と、からなり、
前記ログ入力部が、
入力が前記レコード更新情報である場合は当該情報を前記記憶部に記憶させ、
入力が前記現在時刻設定情報である場合は前記ログ縮約部を呼び出し、
前記ログ縮約部が、
前記記憶部に記憶されたレコード更新情報のうち、前記次回更新時刻が新たに設定した現在時刻未満であるものを削除し、
前記データベース復元部が、
データベース復元要求を受け取って、前記記憶部に記憶されたレコード更新情報からレコードを復元してデータベースに登録することを説明した。
【００４８】
また、本実施の形態では、
前記記憶部は、
２つ以上の領域からなり、
前記ログ入力部が、
入力が前記レコード更新情報である場合は当該情報を前記記憶部の第１の領域に記憶させ、
前記ログ縮約部が、
前記記憶部の領域のうち少なくとも前記第１の領域を除く領域に記憶されたレコード更新情報のうち、前記次回更新時刻が新たな現在時刻未満であるものを削除し、
前記第１の領域に記憶されたレコード更新情報を、前記第１の領域と異なる領域のいずれかに記憶させ、前記第１の領域を空にすることを説明した。
【００４９】
また、本実施の形態では、
前記記憶部は、
３つ以上の領域からなり、
前記ログ入力部が、
入力が前記レコード更新情報である場合は当該情報を前記記憶部の第１の領域に記憶させ、
前記ログ縮約部が、
前記記憶部の第２の領域に記憶されたレコード更新情報を削除して第２の領域を空にし、
前記記憶部の領域のうち少なくとも前記第１および第２の領域を除く領域に記憶されたレコード更新情報のうち、
前記次回更新時刻が新たな現在時刻未満であるものを削除し、
前記次回更新時刻が新たな現在時刻以上であり、新たな現在時刻に所定の単位時間を加えた値未満である前記レコード更新情報を前記第２の領域に記憶させ、
前記次回更新時刻が新たな現在時刻に所定の単位時間を加えた値以上である前記レコード更新情報を新たに設けた領域に記憶させると共に、
前記第１の領域を前記第１および第２の領域を除く前記領域のいずれかに置き換え、
前記新たな領域を新たな第１の領域とすることを説明した。
【００５０】
また、本実施の形態では、
前記ログ入力部は、
入力が前記現在時刻設定情報である場合に、
新たな現在時刻が所定の第３の単位時間の整数倍となっている場合に前記ログ縮約部を呼び出し、
それ以外の場合に前記ログ縮約部を呼び出さないことを説明した。
【００５１】
実施の形態２．
図１１は、実施の形態２に係るデータベース復元装置１の構成例を示す。
【００５２】
図１１に示すデータベース復元装置１は、図１に示すデータベース復元装置１とは、記憶部６の領域の構成が異なる。
実施の形態２における記憶部６は、領域ａａ  ６ａは、領域ｂｂ  ６ｂ、領域ｃｃ  ６ｃ、領域ｄｄ  ６ｄ、及び領域ｅｅ  ６ｅからなり、さらに、一時作業領域として領域ｃｃ’  ６ｃ’及び領域ｄｄ’  ６ｄ’を備える。
なお、本実施の形態では、領域ｂｂ  ６ｂが維持対象記憶領域の例に相当し、領域ｃｃ  ６ｃ及び領域ｄｄ  ６ｄが確認対象記憶領域の例に相当し、領域ｃｃ’  ６ｃ’及び領域ｄｄ’  ６ｄ’が予備記憶領域の例に相当し、領域ｅｅ  ６ｅが消去対象記憶領域の例に相当する。
また、本実施の形態では、領域ａａ  ６ａは、ログ入力部７により更新ログエントリ（レコード更新）３ｒが入力される度に、ログ入力部７により入力された更新ログエントリ（レコード更新）３ｒが格納される領域であり、新規情報記憶領域の例に相当する。
【００５３】
図１２は、実施の形態２におけるログ入力部７の動作を示すフローチャートである。
【００５４】
まず、ステップＳ７７０１において、ログ入力部７はデータベース管理装置２から更新ログエントリ３を１件受け取り、ステップＳ７７０２において、受け取った更新ログエントリ３のエントリ種別３０の値に基づいて処理を分岐する。
これらの処理は、図４のステップＳ７０１及びステップＳ７０２と同様である。
受け取った更新ログエントリ３のエントリ種別３０が「Ｒ」であれば、ステップＳ７７０３に進み、ログ入力部７は、受け取った更新ログエントリ３（更新ログエントリ（レコード更新）３ｒ）の内容を領域ａａ  ６ａの末尾に追加書込みし、ステップＳ７７０１に戻る。
領域ａａ  ６ａに対する書込みロックの取得と解放は不要であり、図４のステップＳ７０３及びステップＳ７０５に相当する処理は実行しない。
ステップＳ７７０２において、受け取った更新ログエントリ３のエントリ種別３０が「Ｔ」である場合は、ステップＳ７７０４に進み、ログ入力部７は、現在時刻３４の値をパラメータｔ’として、ログ縮約部８の動作を起動し、ステップＳ７７０５において、ログ縮約部８が領域ａａ  ６ａを新たに作成した領域に置き換えるまで待機した後に、ステップＳ７７０１に戻る。
ステップＳ７７０４及びステップＳ７７０５の処理は、図４のステップＳ７０６及びステップＳ７０７と同様である。
【００５５】
図１３は、実施の形態２におけるログ縮約部８の動作を説明するフローチャートである。
【００５６】
まず、ステップＳ８８０１において、ログ縮約部８は、元の領域ｃｃ  ６ｃを新たな領域ｃｃ’  ６ｃ’に、元の領域ｄｄ  ６ｄを新たな領域ｄｄ’  ６ｄ’に、元の領域ａａ  ６ａを新たな領域ｃｃ  ６ｃに、元の領域ｂｂ  ６ｂを新たな領域ｄｄ  ６ｄに、それぞれ置き換える。
次に、ステップＳ８８０２において、ログ縮約部８は、空の領域ａａ  ６ａ及び空の領域ｂｂ  ６ｂを新たに作成し、ステップＳ７７０５において待機しているログ入力部７の待機状態を解除する。
次に、ステップＳ８８０３において、ログ縮約部８は、領域ｅｅ  ６ｅに格納された更新ログエントリ（レコード更新）３ｒを全て抹消し、領域ｅｅ  ６ｅを空にする。
これらの処理は、図５のステップＳ８０１〜ステップＳ８０３に相当する。
続いて、ステップＳ８８０４以降の繰り返しにより、領域ｃｃ’  ６ｃ’及び領域ｄｄ’  ６ｄ’に格納された更新ログエントリ（レコード更新）３ｒの処理を行う。
【００５７】
つまり、ステップＳ８８０４において、ログ縮約部８は、領域ｃｃ’  ６ｃ’及び領域ｄｄ’  ６ｄ’がいずれも空かどうかを判定し、いずれも空であれば終了する。
領域ｃｃ’  ６ｃ’または領域ｄｄ’  ６ｄ’の少なくとも一方が空でなければステップＳ８８０５に進み、空でない方から更新ログエントリ（レコード更新）３ｒを１件取り出す。
続いて、ステップＳ８８０６において、ログ縮約部８は、取り出した更新ログエントリ（レコード更新）３ｒの次回更新時刻３２の値（これをｘとする）と、ログ縮約部８の呼び出しパラメータである新たな現在時刻ｔ’の比較を行う。
ｘ＜ｔ’であれば、ステップＳ８８０９において、取り出した更新ログエントリ（レコード更新）３ｒを棄却し、直ちにステップＳ８８０４に戻る。
ｘ＝ｔ’であればステップＳ８８０７に進み、取り出した更新ログエントリ（レコード更新）３ｒを領域ｅｅ  ６ｅの末尾に追加書込みし、ステップＳ８８０４に戻る。
ステップＳ８８０４〜ステップＳ８８０７の処理は、図５のステップＳ８０４〜ステップＳ８０７に相当する。
その他の場合、すなわちｘ＞ｔ’の場合、ステップＳ８８０８に進み、取り出した更新ログエントリ（レコード更新）３ｒを領域ｂｂ  ６ｂの末尾に追加書込みし、ステップＳ８８０４に戻る。
領域ａａ  ６ａではなく、領域ｂｂ  ６ｂに書込むため、領域ａａ  ６ａの書込みロックの取得と解放は不要であり、図５のステップＳ８０８及びステップＳ８１０に相当する処理は実行しない。
【００５８】
図１４は、実施の形態２におけるログ縮約部８の処理の概要を示す説明図である。
【００５９】
図１４において、領域ａａと領域ｂｂを合わせたものが図６の領域ａに、領域ｃｃと領域ｄｄを合わせたものが図６の領域ｂに、領域ｃｃ’と領域ｄｄ’を合わせたものが図６の領域ｂ’に、領域ｅｅが図６の領域ｃに、それぞれ対応する。
領域ａａ  ６ａに対してはログ入力部７のみが書込みを行い、領域ｂｂ  ６ｂに対してはログ縮約部８のみが書込みを行うようになっており、書込みの排他制御を不要にしている。
領域ｃｃ  ６ｃ及び領域ｄｄ  ６ｄを分離する必要性はないが、それぞれ領域ａａ  ６ａ及び領域ｂｂ  ６ｂを置換した結果として存在する。
【００６０】
本実施の形態においてもデータベース復元部９は、図７に示したフローチャートに従って動作するが、図７のＳ９０３及びＳ９０４の領域ａは領域ａａと読み替え、Ｓ９０２及びＳ９０４の領域ｂは領域ｃｃ及び領域ｄｄと読み替え、Ｓ９０２〜Ｓ９０４の領域ｃは領域ｅｅに読み替えるものとする。
また、図１８は、実施の形態２におけるデータベース復元部９の処理の概要を示す説明図であり、実施の形態１の図８に相当する。
【００６１】
以上のように、実施の形態２によれば、ログ入力部７とログ縮約部８が同時に書込みを行わないよう、領域ａａ  ６ａと領域ｂｂ  ６ｂを分離しているので、ログ縮約部８の動作中にログ入力部７の動作を遅延させることを防ぎ、データベース管理装置２の停止や更新ログエントリ３の消失の可能性を低減する効果がある。
【００６２】
本実施の形態では、
実施の形態１に示した構成を有するデータベース復元装置において、
前記記憶部は、
５つ以上の領域からなり、
前記ログ入力部が、
入力が前記レコード更新情報である場合は当該情報を前記記憶部の第１の領域に記憶させ、
前記ログ縮約部が、
前記記憶部の第２の領域に記憶されたレコード更新情報を削除して第２の領域を空にし、
前記記憶部の領域のうち少なくとも前記第１および第２の領域および第３の領域を除く領域に記憶されたレコード更新情報のうち、
前記次回更新時刻が新たな現在時刻未満であるものを削除し、
前記次回更新時刻が新たな現在時刻以上であり、新たな現在時刻に所定の単位時間を加えた値未満である前記レコード更新情報を前記第２の領域に記憶させ、
前記次回更新時刻が新たな現在時刻に所定の単位時間を加えた値以上である前記レコード更新情報を新たに設けた領域に記憶させると共に、
前記第１および第３の領域を前記第１、第２、および第３の領域を除く前記領域のいずれかにそれぞれ置き換え、
前記新たな領域を新たな第３の領域とし、
新たに領域を設け、新たな第１の領域とすることを説明した。
【００６３】
また、本実施の形態では、
前記ログ縮約部が、
前記ログ入力部に呼び出されると直ちに、新たな第１の領域とする前記新たな領域を設け、前記ログ入力部による前記第１の領域への入力情報の格納を許可することを説明した。
【００６４】
実施の形態３．
図１５は、実施の形態３に係るデータベース復元装置１の構成図である。
【００６５】
図１５に示すデータベース復元装置１は、図１１に示すデータベース復元装置１に対し、記憶部６にさらに領域ｆｆ  ６ｆを備える点が異なる。
本実施の形態では、ログ入力部７は、現在時刻の設定に用いられる単位時間よりも長い時間を周期とする待機時間の満了時刻を設定する。
例えば、現在時刻の設定に用いられる単位時間が１分である場合は、待機時間の周期を１０分とすることが考えられる。
そして、記憶部６内の領域ｆｆ  ６ｆには、待機時間の満了時刻よりも後の次回更新時刻が示されている更新ログエントリ（レコード更新）３ｒが格納される。
領域ｆｆ  ６ｆは、待機対象記憶領域の例に相当する。
なお、以降、待機時間の満了時刻を所定時刻とも表記する。
【００６６】
図１６は、実施の形態３におけるログ入力部７の動作を示すフローチャートである。
【００６７】
図１２のステップＳ７７０３がステップＳ７７０３’に置き換わっている点が実施の形態２と異なる。
ステップＳ７７０３’では、受け取った更新ログエントリ（レコード更新）３ｒに対し、次回更新時刻３２に基づく判定を行い、次回更新時刻３２が所定時刻よりも前であればステップＳ７７０３と同様に領域ａａ  ６ａの末尾に当該エントリを追加書込みし、そうでなければ領域ｆｆ  ６ｆの末尾に当該エントリを追加書込みする。
ここで、所定時刻は、前述したように、次回更新時刻や現在時刻を表す単位時間より大きい第２の単位時間ごとに増加する時刻であり、現在時刻が所定時刻に達する都度、現在時刻に第２の単位時間を加えた値に再設定されるものとする。
例えば、現在時刻の単位時間が１分であり、待機時間の単位時間（第２の単位時間）が１０分であり、現在設定されている所定時刻（待機時間の満了時刻）が０時１０分である場合は、現在時刻が０時１０分になった際に、次の所定時刻が０時２０分に設定される。
【００６８】
図１７は、実施の形態３におけるログ縮約部８が、現在時刻が所定時刻に達した際に、図１３の動作に加えて実行する動作を示すフローチャートである。
つまり、上記の例では、０時０１分から０時０９分までの間は、図１３の動作のみが行われ、現在時刻が０時１０分になった際に、図１３の動作とともに図１７の動作が行われる。
【００６９】
始めに、ログ縮約部８は、ステップＳ８８１１において、領域ｆｆ  ６ｆの更新ログエントリ（レコード更新）３ｒで次回更新時刻３２が新たな所定時刻、すなわち新たな現在時刻に第２の単位時間を加えた時刻（上記の例では、現在時刻０時１０分に単位時間１０分を加算した０時２０分）、より前のものがあるかどうかを判定する。
そのようなエントリが存在しなければ処理を終了し、存在する場合はステップＳ８８１２に進み、領域ｆｆ  ６ｆから当該エントリを１件取り出す。
次に、ステップＳ８８１３において、取り出したエントリの次回更新時刻３２の値（これをｘとする）と、新たな現在時刻ｔ’（上記の例では、０時１０分）の比較を行う。
ｘ＜ｔ’であれば（上記の例では、ｘが０時１０分００秒よりも前であれば）、取り出したエントリを棄却し、直ちにステップＳ８８１１に戻る。
ｘ＝ｔ’であれば（上記の例では、ｘが０時１０分００秒〜０時１０分５９秒の間であれば）、ステップＳ８８１４に進み、取り出したエントリを領域ｅｅ  ６ｅの末尾に追加書込みし、ステップＳ８８１１に戻る。
その他の場合、すなわちｘ＞ｔ’の場合（上記の例では、ｘが０時１１分００秒以降の場合）、ステップＳ８８１５に進み、取り出したエントリを領域ｂｂ  ６ｂの末尾に追加書込みし、ステップＳ８８１１に戻る。
【００７０】
以上のように、実施の形態３によれば、領域ｆｆ  ６ｆを設け、所定時刻までは重複除去の対象とならないことが明らかな更新ログエントリ３を格納し、ログ縮約部８に処理させる回数を削減するので、ログ縮約部８の処理時間が短縮され、より小さな単位時間やより高頻度に発生する更新に適用可能となるという効果がある。
なお、領域ｆｆに相当する領域を複数設け、次回更新時刻３２の値の範囲によってエントリを分割して格納することで、ログ縮約部８の処理対象エントリ数をさらに削減することも可能である。
ただし、ログ入力部７による書込み先が多数になると、記憶部６に対するランダムアクセスが発生し、書込みの速度が低下してしまう。
そのため、領域数は一般に少数に止めることが望ましい。
【００７１】
また、以上では、実施の形態２の記憶部６の構成（領域ａａ〜領域ｅｅ、領域ｃｃ’、領域ｄｄ’による構成）に、待機対象記憶領域の例として領域ｆｆを追加する構成を示した。
これに代えて、実施の形態１の記憶部６の構成（領域ａ〜領域ｃ、領域ｂ’による構成）に、待機対象記憶領域を追加する構成としてもよい。
【００７２】
本実施の形態では、
実施の形態１に示した構成を有するデータベース復元装置において、
前記記憶部が、４つ以上の領域からなり、
前記ログ入力部が、入力が前記レコード更新情報であり、且つ当該情報の前記次回更新時刻が所定の第２の単位時間ごとに増加する時刻未満である場合は、当該情報を前記記憶部の第１の領域に記憶させ、
入力が前記レコード更新情報であり、且つ当該情報の前記次回更新時刻が第２の単位時間ごとに増加する時刻以上である場合は、当該情報を前記記憶部の第３の領域に記憶させ、
前記ログ縮約部が、
さらに、前記第２の単位時間ごとに増加する時刻が増加する際に、
前記記憶部の前記第３の領域に記憶されたレコード更新情報のうち、
前記次回更新時刻が前記第２の単位時間ごとに増加する時刻の増加後の値未満であるものを、
前記記憶部の前記第３の領域から取り出し、
前記レコード更新情報の前記次回更新時刻が新たな現在時刻未満であれば削除し、
前記次回更新時刻が新たな現在時刻以上であり、新たな現在時刻に所定の第１の単位時間を加えた値未満であれば前記レコード更新情報を前記第２の領域に記憶させ、
前記次回更新時刻が新たな現在時刻に所定の第１の単位時間を加えた値以上であれば前記レコード更新情報を新たな第１の領域とする新たに設けた領域に記憶させることを説明した。
【００７３】
本実施の形態では、
実施の形態２に示した構成を有するデータベース復元装置において、
前記記憶部が、４つ以上の領域からなり、
前記ログ入力部が、
入力が前記レコード更新情報であり、且つ当該情報の前記次回更新時刻が所定の第２の単位時間ごとに増加する時刻未満である場合は、当該情報を前記記憶部の第１の領域に記憶させ、
入力が前記レコード更新情報であり、且つ当該情報の前記次回更新時刻が第２の単位時間ごとに増加する時刻以上である場合は、当該情報を前記記憶部の第４の領域に記憶させ、
前記ログ縮約部が、
さらに、前記第２の単位時間ごとに増加する時刻が増加する際に、
前記記憶部の前記第４の領域に記憶されたレコード更新情報のうち、
前記次回更新時刻が前記第２の単位時間ごとに増加する時刻の増加後の値未満であるものを、
前記記憶部の前記第４の領域から取り出し、
前記レコード更新情報の前記次回更新時刻が新たな現在時刻未満であれば削除し、
前記次回更新時刻が新たな現在時刻以上であり、新たな現在時刻に所定の第１の単位時間を加えた値未満であれば前記レコード更新情報を前記第２の領域に記憶させ、
前記次回更新時刻が新たな現在時刻に所定の第１の単位時間を加えた値以上であれば前記レコード更新情報を新たな第３の領域とする新たに設けた領域に記憶させることを説明した。
【００７４】
最後に、実施の形態１〜３に示したデータベース復元装置１のハードウェア構成例について説明する。
図１９は、実施の形態１〜３に示すデータベース復元装置１のハードウェア資源の一例を示す図である。
なお、図１９の構成は、あくまでもデータベース復元装置１のハードウェア構成の一例を示すものであり、データベース復元装置１のハードウェア構成は図１９に記載の構成に限らず、他の構成であってもよい。
【００７５】
図１９において、データベース復元装置１は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。
また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態１〜３で説明した「記憶部６」は、例えば、磁気ディスク装置９２０、ＳＳＤにより実現される。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００７６】
通信ボード９１５は、ネットワークに接続されている。
例えば、通信ボード９１５は、ＬＡＮを介して、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されていてもよい。
【００７７】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００７８】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００７９】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
データベース復元装置１の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００８０】
上記プログラム群９２３には、実施の形態１〜３の説明において「〜部」（「記憶部６」以外、以下同様）として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００８１】
ファイル群９２４には、実施の形態１〜３の説明において、「〜の判断」、「〜の判定」、「〜の比較」、「〜の書き込み」、「〜の格納」、「〜の更新」、「〜の設定」、「〜の抽出」、「〜の選択」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１〜３で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００８２】
また、実施の形態１〜３の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態１〜３で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「情報処理方法」を実現することができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、実施の形態１〜３の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１〜３の「〜部」の手順や方法をコンピュータに実行させるものである。
【００８３】
このように、実施の形態１〜３に示すデータベース復元装置１は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【００８４】
１  データベース復元装置、２  データベース管理装置、３  更新ログエントリ、４  制御装置、５  データベース復元要求、６  記憶部、７  ログ入力部、８  ログ縮約部、９  データベース復元部。
（Ａ）
（Ｂ）
【図１】
0005649508.tif 000002
【図２】
0005649508.tif 000003
【図３】
0005649508.tif 000004
【図４】
0005649508.tif 000005
【図５】
0005649508.tif 000006
【図６】
0005649508.tif 000007
【図７】
0005649508.tif 000008
【図８】
0005649508.tif 000009
【図９】
0005649508.tif 000010
【図１０】
0005649508.tif 000011
【図１１】
0005649508.tif 000012
【図１２】
0005649508.tif 000013
【図１３】
0005649508.tif 000014
【図１４】
0005649508.tif 000015
【図１５】
0005649508.tif 000016
【図１６】
0005649508.tif 000017
【図１７】
0005649508.tif 000018
【図１８】
0005649508.tif 000019
【図１９】
0005649508.tif 000020