(57)【要約】【課題】  復旧作業時に、復旧対象レコードが格納されているブロックに対する読み込み障害が発生しても復旧作業を迅速に行えるようにするために、更新前ジャーナルの出力単位をブロックとした場合であっても、その出力量が余り多くならないようにする。【解決手段】  データベースファイル15には、各々が複数のレコードを含んだブロックが複数格納されている。データベース更新プログラム２が、レコードの更新要求を出力すると、データベースアクセス手段11は、更新対象にしているレコードを含んだ更新対象ブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に、出力されているか否かを判定する。ジャーナルファイルアクセス手段13は、出力されていない場合は、更新対象ブロック全体のイメージを含んだ更新前ジャーナルをジャーナルファイル18に出力し、出力されている場合は更新前ジャーナルを出力しない。【選択図】      図１
2006011505.tif 000002
【特許請求の範囲】
【請求項１】
データベースファイル中の各ブロックがそれぞれ複数のレコードを含み、且つ更新前ジャーナルの出力単位をブロックとしたデータベースシステムであって、
レコードの更新要求が発生したとき、前記更新要求が更新対象にしているレコードを含んだブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に出力されている場合は、更新前ジャーナルの出力を抑止し、出力されていない場合は、前記ブロック全体のイメージを含んだ更新前ジャーナルを出力する構成を有することを特徴とするデータベースシステム。
【請求項２】
それぞれが複数のレコードを含んだ複数のブロックが格納されたデータベースファイルと、
更新前ジャーナルが格納されるジャーナルファイルと、
レコードの更新要求が発生したとき、該更新要求が更新対象にしているレコードを含んだ更新対象ブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に、前記ジャーナルファイルに対して出力されているか否かを判定するデータベースアクセス手段と、
該データベースアクセス手段で、出力されていないと判定された場合は、前記更新対象ブロック全体のイメージを含んだ更新前ジャーナルを前記ジャーナルファイルに対して出力し、出力されていると判定された場合は更新前ジャーナルの出力を抑止するジャーナルファイルアクセス手段とを備えたことを特徴とするデータベースシステム。
【請求項３】
請求項２記載のデータベースシステムにおいて、
ブロック番号が格納されるブロック番号記憶部を備え、且つ、
前記データベースアクセス手段が、コミット命令が入力されたとき、前記ブロック番号記憶部に格納されているブロック番号を全て削除し、レコードの更新要求が発生したとき、該更新要求が更新対象にしているレコードを含んだ更新対象ブロックのブロック番号が前記ブロック番号記憶部に格納されているか否かを判定し、格納されていない場合には、前記更新対象ブロックのブロック番号を前記ブロック番号記憶部に格納する構成を有し、
前記ジャーナルファイルアクセス手段が、前記データベースアクセス手段において前記ブロック番号記憶部に前記更新対象ブロックのブロック番号が格納されていないと判定された場合は、前記更新対象ブロックについての更新前ジャーナルを前記ジャーナルファイルに出力し、格納されていると判定された場合は、更新前ジャーナルの出力を抑止する構成を有することを特徴とするデータベースシステム。
【請求項４】
データベースファイル中の各ブロックがそれぞれ複数のレコードを含み、且つ更新前ジャーナルの出力単位をブロックとしたデータベースシステムにおける更新前ジャーナル出力方法であって、
レコードの更新要求が発生したとき、前記更新要求が更新対象にしているレコードを含んだブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に出力されている場合は、更新前ジャーナルの出力を抑止し、出力されていない場合は、前記ブロック全体のイメージを含んだ更新前ジャーナルを出力することを特徴とする更新前ジャーナル出力方法。
【請求項５】
それぞれが複数のレコードを含んだ複数のブロックが格納されたデータベースファイルと、更新前ジャーナルが格納されるジャーナルファイルとを有するデータベースシステムにおける更新前ジャーナル出力方法であって、
レコードの更新要求が発生したとき、該更新要求が更新対象にしているレコードを含んだ更新対象ブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に、前記ジャーナルファイルに対して出力されているか否かを判定し、
出力されていないと判定した場合は、前記更新対象ブロック全体のイメージを含んだ更新前ジャーナルを前記ジャーナルファイルに対して出力し、出力されていると判定した場合は更新前ジャーナルの出力を抑止することを特徴とする更新前ジャーナル出力方法。
【請求項６】
請求項５記載の更新前ジャーナル出力方法において、
コミット命令が入力されたとき、ブロック番号記憶部に格納されているブロック番号を全て削除し、
レコードの更新要求が発生したとき、該更新要求が更新対象にしているレコードを含んだ更新対象ブロックのブロック番号が前記ブロック番号記憶部に格納されているか否かを判定し、
格納されていない場合には、前記更新対象ブロックのブロック番号を前記ブロック番号記憶部に格納すると共に、前記更新対象ブロックについての更新前ジャーナルを前記ジャーナルファイルに出力し、格納されている場合は、更新前ジャーナルの出力を抑止することを特徴とする更新前ジャーナル出力方法。
【請求項７】
それぞれが複数のレコードを含んだ複数のブロックが格納されたデータベースファイルと、更新前ジャーナルが格納されるジャーナルファイルとを備えたコンピュータを、
レコードの更新要求が発生したとき、前記更新要求が更新対象にしているレコードを含んだブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に出力されている場合は、更新前ジャーナルの出力を抑止し、出力されていない場合は、前記ブロック全体のイメージを含んだ更新前ジャーナルを出力する手段として機能させるためのプログラム。
【請求項８】
それぞれが複数のレコードを含んだ複数のブロックが格納されたデータベースファイルと、更新前ジャーナルが格納されるジャーナルファイルとを備えたコンピュータをデータベースシステムとして機能させるためのプログラムであって、
前記コンピュータを、
レコードの更新要求が発生したとき、該更新要求が更新対象にしているレコードを含んだ更新対象ブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に、前記ジャーナルファイルに対して出力されているか否かを判定するデータベースアクセス手段、
該データベースアクセス手段で、出力されていないと判定された場合は、前記更新対象ブロック全体のイメージを含んだ更新前ジャーナルを前記ジャーナルファイルに対して出力し、出力されていると判定された場合は更新前ジャーナルの出力を抑止するジャーナルファイルアクセス手段として機能させるためのプログラム。
【請求項９】
請求項８記載のプログラムにおいて、
前記コンピュータが、ブロック番号が格納されるブロック番号記憶部を備え、且つ、
前記データベースアクセス手段が、コミット命令が入力されたとき、前記ブロック番号記憶部に格納されているブロック番号を全て削除し、レコードの更新要求が発生したとき、該更新要求が更新対象にしているレコードを含んだ更新対象ブロックのブロック番号が前記ブロック番号記憶部に格納されているか否かを判定し、格納されていない場合には、前記更新対象ブロックのブロック番号を前記ブロック番号記憶部に格納する構成を有し、
前記ジャーナルファイルアクセス手段が、前記データベースアクセス手段において前記ブロック番号記憶部に前記更新対象ブロックのブロック番号が格納されていないと判定された場合は、前記更新対象ブロックについての更新前ジャーナルを前記ジャーナルファイルに出力し、格納されていると判定された場合は、更新前ジャーナルの出力を抑止する構成を有することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースシステムにおける更新前ジャーナルの出力技術に関し、特に、ブロック単位で更新前ジャーナルを出力する技術に関する。
【背景技術】
【０００２】
従来の一般的なデータベースシステムにおいては、レコードに対する更新要求が発生した場合、更新対象レコードの更新前のイメージを含んだ、レコード単位の更新前ジャーナルをジャーナルファイルに出力するようにしている。そして、障害が発生した場合には、復旧対象レコードを含んだブロック（復旧対象ブロック）をデータベースファイルからバッファに読み込み、ジャーナルファイルに出力しておいた更新前のレコードイメージをバッファ上に格納されている該当するレコードに被せ、再度バッファの内容をデータベースファイルに書き込むことにより、復旧対象レコードを更新前の状態に戻すようにしている。
【０００３】
また、上述した従来の技術以外にも、例えば、更新前ジャーナルの出力単位をブロックとする技術（例えば、特許文献１参照）や、出力単位をブロックにした更新前ジャーナルと出力単位をレコードとした更新前ジャーナルとの２種類の更新前ジャーナルを出力する技術も従来から知られている（例えば、特許文献２参照）。
【特許文献１】特開平１１−３３８７５２号公報
【特許文献２】特開平２−２５７２２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述した従来の技術の内、更新前ジャーナルの出力単位をレコードにする技術は、データベースファイルに障害が発生し、復旧対象ブロックを読み出すことができなくなった場合、バックアップしておいたデータベースファイルのリストアを行い、復旧対象ブロックが読み出せるようにしてから更新レコードの復旧作業を行うことが必要になるため、データベースファイルの復旧に非常に時間がかかってしまう。
【０００５】
また、更新前ジャーナルの出力単位をブロックとする、特許文献１に記載されている従来の技術によれば、復旧対象ブロックをデータベースファイルに書き戻すだけで復旧対象レコードを更新前の状態に戻すことができるので、復旧作業を迅速に行うことが可能になる。しかし、更新前ジャーナルの出力単位をブロックとした場合には、更新前ジャーナルの出力量が膨大なものとなり、大容量の記憶装置が必要になるという問題がある。
【０００６】
また、出力単位をレコードにした更新前ジャーナルと出力単位をブロックにした更新前ジャーナルとの２種類の更新前ジャーナルを出力する、特許文献２に記載されている従来の技術によれば、特許文献１に記載されている従来の技術に比較して、更新前ジャーナルの出力量を少なくすることができる。しかし、特許文献２に記載されている従来の技術では、レコード単位の更新前ジャーナルしか出力されていない、復旧対象レコードが格納されているブロックに対して読み込み障害が発生した場合、バックアップしておいたデータベースファイルのリストアを行うことが必要になるため、復旧作業に時間がかかるという問題がある。
【０００７】
〔発明の目的〕
そこで、本発明の目的は、復旧作業時に、復旧対象レコードが格納されているブロックに対する読み込み障害が発生しても復旧作業を迅速に行えるようにするために、更新前ジャーナルの出力単位をブロックとした場合であっても、その出力量が余り多くならないようにすることにある。
【課題を解決するための手段】
【０００８】
本発明にかかる第１のデータベースシステムは、復旧作業時に、復旧対象レコードが格納されているブロックに対する読み込み障害が発生しても復旧作業を迅速に行えるようにするために、更新前ジャーナルの出力単位をブロックとした場合であっても、その出力量が余り多くならないようにするため、
データベースファイル中の各ブロックがそれぞれ複数のレコードを含み、且つ更新前ジャーナルの出力単位をブロックとしたデータベースシステムであって、
レコードの更新要求が発生したとき、前記更新要求が更新対象にしているレコードを含んだブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に出力されている場合は、更新前ジャーナルの出力を抑止し、出力されていない場合は、前記ブロック全体のイメージを含んだ更新前ジャーナルを出力する構成を有することを特徴とする。
【０００９】
本発明にかかる第２のデータベースシステムは、復旧作業時に、復旧対象レコードが格納されているブロックに対する読み込み障害が発生しても復旧作業を迅速に行えるようにするために、更新前ジャーナルの出力単位をブロックとした場合であっても、その出力量が余り多くならないようにするため、
それぞれが複数のレコードを含んだ複数のブロックが格納されたデータベースファイルと、
更新前ジャーナルが格納されるジャーナルファイルと、
レコードの更新要求が発生したとき、該更新要求が更新対象にしているレコードを含んだ更新対象ブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に、前記ジャーナルファイルに対して出力されているか否かを判定するデータベースアクセス手段と、
該データベースアクセス手段で、出力されていないと判定された場合は、前記更新対象ブロック全体のイメージを含んだ更新前ジャーナルを前記ジャーナルファイルに対して出力し、出力されていると判定された場合は更新前ジャーナルの出力を抑止するジャーナルファイルアクセス手段とを備えたことを特徴とする。
【００１０】
本発明にかかる第３のデータベースシステムは、今回更新対象にしているブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に出力されているか否かを、簡単な構成で、且つ確実に判定できるようにするため、第２のデータベースシステムにおいて、
ブロック番号が格納されるブロック番号記憶部を備え、且つ、
前記データベースアクセス手段が、コミット命令が入力されたとき、前記ブロック番号記憶部に格納されているブロック番号を全て削除し、レコードの更新要求が発生したとき、該更新要求が更新対象にしているレコードを含んだ更新対象ブロックのブロック番号が前記ブロック番号記憶部に格納されているか否かを判定し、格納されていない場合には、前記更新対象ブロックのブロック番号を前記ブロック番号記憶部に格納する構成を有し、
前記ジャーナルファイルアクセス手段が、前記データベースアクセス手段において前記ブロック番号記憶部に前記更新対象ブロックのブロック番号が格納されていないと判定された場合は、前記更新対象ブロックについての更新前ジャーナルを前記ジャーナルファイルに出力し、格納されていると判定された場合は、更新前ジャーナルの出力を抑止する構成を有することを特徴とする。
【００１１】
本発明にかかる第１の更新前ジャーナル出力方法は、復旧作業時に、復旧対象レコードが格納されているブロックに対する読み込み障害が発生しても復旧作業を迅速に行えるようにするために、更新前ジャーナルの出力単位をブロックとした場合であっても、その出力量が余り多くならないようにするため、
データベースファイル中の各ブロックがそれぞれ複数のレコードを含み、且つ更新前ジャーナルの出力単位をブロックとしたデータベースシステムにおける更新前ジャーナル出力方法であって、
レコードの更新要求が発生したとき、前記更新要求が更新対象にしているレコードを含んだブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に出力されている場合は、更新前ジャーナルの出力を抑止し、出力されていない場合は、前記ブロック全体のイメージを含んだ更新前ジャーナルを出力することを特徴とする。
【００１２】
本発明にかかる第２の更新前ジャーナル出力方法は、復旧作業時に、復旧対象レコードが格納されているブロックに対する読み込み障害が発生しても復旧作業を迅速に行えるようにするために、更新前ジャーナルの出力単位をブロックとした場合であっても、その出力量が余り多くならないようにするため、
それぞれが複数のレコードを含んだ複数のブロックが格納されたデータベースファイルと、更新前ジャーナルが格納されるジャーナルファイルとを有するデータベースシステムにおける更新前ジャーナル出力方法であって、
レコードの更新要求が発生したとき、該更新要求が更新対象にしているレコードを含んだ更新対象ブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に、前記ジャーナルファイルに対して出力されているか否かを判定し、
出力されていないと判定した場合は、前記更新対象ブロック全体のイメージを含んだ更新前ジャーナルを前記ジャーナルファイルに対して出力し、出力されていると判定した場合は更新前ジャーナルの出力を抑止することを特徴とする。
【００１３】
本発明にかかる第３の更新前ジャーナル出力方法は、今回更新対象にしているブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に出力されているか否かを、簡単な構成で、且つ確実に判定できるようにするため、第２の更新前ジャーナル出力方法において、
コミット命令が入力されたとき、ブロック番号記憶部に格納されているブロック番号を全て削除し、
レコードの更新要求が発生したとき、該更新要求が更新対象にしているレコードを含んだ更新対象ブロックのブロック番号が前記ブロック番号記憶部に格納されているか否かを判定し、
格納されていない場合には、前記更新対象ブロックのブロック番号を前記ブロック番号記憶部に格納すると共に、前記更新対象ブロックについての更新前ジャーナルを前記ジャーナルファイルに出力し、格納されている場合は、更新前ジャーナルの出力を抑止することを特徴とする。
【００１４】
本発明にかかる第１のプログラムは、復旧作業時に、復旧対象レコードが格納されているブロックに対する読み込み障害が発生しても復旧作業を迅速に行えるようにするために、更新前ジャーナルの出力単位をブロックとした場合であっても、その出力量が余り多くならないようにするため、
それぞれが複数のレコードを含んだ複数のブロックが格納されたデータベースファイルと、更新前ジャーナルが格納されるジャーナルファイルとを備えたコンピュータを、
レコードの更新要求が発生したとき、前記更新要求が更新対象にしているレコードを含んだブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に出力されている場合は、更新前ジャーナルの出力を抑止し、出力されていない場合は、前記ブロック全体のイメージを含んだ更新前ジャーナルを出力する手段として機能させる。
【００１５】
本発明にかかる第２のプログラムは、復旧作業時に、復旧対象レコードが格納されているブロックに対する読み込み障害が発生しても復旧作業を迅速に行えるようにするために、更新前ジャーナルの出力単位をブロックとした場合であっても、その出力量が余り多くならないようにするため、
それぞれが複数のレコードを含んだ複数のブロックが格納されたデータベースファイルと、更新前ジャーナルが格納されるジャーナルファイルとを備えたコンピュータをデータベースシステムとして機能させるためのプログラムであって、
前記コンピュータを、
レコードの更新要求が発生したとき、該更新要求が更新対象にしているレコードを含んだ更新対象ブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に、前記ジャーナルファイルに対して出力されているか否かを判定するデータベースアクセス手段、
該データベースアクセス手段で、出力されていないと判定された場合は、前記更新対象ブロック全体のイメージを含んだ更新前ジャーナルを前記ジャーナルファイルに対して出力し、出力されていると判定された場合は更新前ジャーナルの出力を抑止するジャーナルファイルアクセス手段として機能させる。
【００１６】
本発明にかかる第３のプログラムは、今回更新対象にしているブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に出力されているか否かを、簡単な構成で、且つ確実に判定できるようにするため、第２のプログラムにおいて、
前記コンピュータが、ブロック番号が格納されるブロック番号記憶部を備え、且つ、
前記データベースアクセス手段が、コミット命令が入力されたとき、前記ブロック番号記憶部に格納されているブロック番号を全て削除し、レコードの更新要求が発生したとき、該更新要求が更新対象にしているレコードを含んだ更新対象ブロックのブロック番号が前記ブロック番号記憶部に格納されているか否かを判定し、格納されていない場合には、前記更新対象ブロックのブロック番号を前記ブロック番号記憶部に格納する構成を有し、
前記ジャーナルファイルアクセス手段が、前記データベースアクセス手段において前記ブロック番号記憶部に前記更新対象ブロックのブロック番号が格納されていないと判定された場合は、前記更新対象ブロックについての更新前ジャーナルを前記ジャーナルファイルに出力し、格納されていると判定された場合は、更新前ジャーナルの出力を抑止する構成を有することを特徴とする。
【発明の効果】
【００１７】
本発明にかかる第１，第２のデータベースシステム、第１，第２の更新前ジャーナル出力方法および第１，第２のプログラムによれば、復旧作業時に、復旧対象レコードが格納されているブロックに対する読み込み障害が発生しても復旧作業を迅速に行えるようにするために、更新前ジャーナルの出力単位をブロックとした場合であっても、その出力量が余り多くならないようにすることができる。
【００１８】
その理由は、更新要求が発生する毎に、常に、ブロック単位の更新前ジャーナルを出力するのではなく、更新要求が発生した時、今回更新対象にしているブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に出力されていれば、更新前ジャーナルの出力を抑止するようにしたからである。
【００１９】
本発明にかかる第３のデータベースシステム、第３の更新前ジャーナル出力方法および第３のプログラムによれば、今回更新対象にしているブロックと同一ブロックについての更新前ジャーナルが、最新のコミット点以降に出力されているか否かを、簡単な構成で、且つ確実に判定することが可能になる。
【００２０】
その理由は、コミット命令の入力時には、そこに格納されているブロック番号が全て削除され、更新要求の入力時には、更新対象ブロックのブロック番号が格納されていなければ、上記更新対象ブロックのブロック番号が格納されるブロック番号記憶部を備えているからである。
【発明を実施するための最良の形態】
【００２１】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００２２】
図１は本発明にかかるデータベースシステムの実施の形態の構成例を示すブロック図である。同図を参照すると、データベース更新プログラム２からのレコードの更新要求などを処理するデータベースシステム１は、データベースアクセス手段１１と、ジャーナル作成手段１２と、ジャーナルファイルアクセス手段１３と、復旧手段１４と、データベースファイル１５と、ブロック番号記憶部１６と、バッファ１７と、ジャーナルファイル１８とから構成されている。
【００２３】
データベースファイル１５には、図２に示すように、複数のブロックＢ１〜Ｂｎ（入出力の単位となる）が格納されている。また、各ブロックＢ１〜Ｂｎは、それぞれ複数のレコードを収容している。図２では、ブロックＢｎが３個のレコードＬ１〜Ｌ３を含んでいる場合を例示しているが、レコード数は複数個であれば、これに限られるものではない。また、以下の説明では、各ブロックＢ１〜Ｂｎのブロック番号はそれぞれＢ１〜Ｂｎであるとする。また、レコードＬ１，Ｌ２，…のレコード番号はＬ１，Ｌ２，…であるとする。
【００２４】
ブロック番号記憶部１６には、最新のコミット点以降に更新されたレコードを含むブロックのブロック番号が格納される。
【００２５】
データベースアクセス手段１１は、次のような機能を有する。
【００２６】
・データベース更新プログラム２からコミット命令が入力されたとき、ブロック番号記憶部１６に格納されているブロック番号を全て削除すると共に、ジャーナルファイルアクセス手段１３に対して、上記コミット命令をジャーナルファイル１８に書き込むことを指示する。
・データベース更新プログラム２からレコードの更新要求が入力されたとき、更新対象レコードを含む更新対象ブロックのブロック番号が、ブロック番号記憶部１６に格納されているか否かを判定する。
・更新対象ブロックのブロック番号がブロック番号記憶部１６に格納されていない場合は、更新対象ブロックのブロック番号をブロック番号記憶部１６に格納する処理と、更新対象ブロックのブロックイメージをバッファ１７に書き出した後、ジャーナル作成手段１２に対してジャーナルの作成を指示する処理と、更新レコードイメージをバッファ１７に反映させた後、バッファ１７の内容をデータベースファイル１５上の該当するブロックに書き戻す処理を行う。
・更新対象ブロックのブロック番号がブロック番号記憶部１６に格納されている場合は、更新対象ブロックのブロックイメージをバッファ１７に書き出す処理と、更新レコードイメージをバッファ１７に反映させた後、バッファ１７の内容をデータベースファイル１５上の該当するブロックに書き戻す処理とを行う。従って、更新対象ブロックのブロック番号がブロック番号記憶部１６に格納されている場合には、更新前ジャーナルの出力処理は行われない。
【００２７】
ジャーナル作成手段１２は、バッファ１７に格納されているブロックイメージに、ブロック番号などの制御情報を付加することにより、更新前ジャーナルを作成する機能を有する。
【００２８】
ジャーナルファイルアクセス手段１３は、ジャーナル作成手段１２で作成された更新前ジャーナルをジャーナルファイル１８に出力する機能や、コミット命令をジャーナルファイル１８に出力する機能を有する。なお、本実施の形態では、コミット命令発行後に更新されたブロックについての、コミット点におけるブロックイメージを更新前ジャーナルとしてジャーナルファイル１８に出力するようにしている。
【００２９】
復旧手段１４は、障害発生時、ジャーナルファイル１８に格納されている更新前ジャーナルを利用して、データベースファイル１５の状態を最新のコミット点の状態まで戻す機能を有する。
【００３０】
なお、データベースシステム１は、コンピュータによって実現可能であり、コンピュータによって実現する場合は、例えば、次のようにする。コンピュータをデータベースシステム１として機能させるためのプログラムを記録したディスク，半導体メモリ，その他の記録媒体を用意し、コンピュータに上記プログラムを読み取らせる。コンピュータは、読み取ったプログラムに従って自身の動作を制御することにより、自コンピュータ上に、データベースアクセス手段１１，ジャーナル作成手段１２，ジャーナルファイルアクセス手段１３，復旧手段１４を実現する。
【００３１】
〔実施の形態の動作の説明〕
次に、本発明の実施の形態の動作について詳細に説明する。
【００３２】
先ず、データベース更新プログラム２がコミット命令を発行したときの動作について説明する。
【００３３】
データベース更新プログラム２がコミット命令を発行すると、データベースシステム１内のデータベースアクセス手段１１は、図３のフローチャートに示すように、ブロック番号記憶部１６に格納されているブロック番号を全て削除する（ステップＳ３１）。その後、ジャーナルファイルアクセス手段１３に対して、上記コミット命令の書き込みを指示する（ステップＳ３２）。これにより、ジャーナルファイルアクセス手段１３は、ジャーナルファイル１８にコミット命令を書き込む。
【００３４】
次に、データベース更新プログラム２がレコードの更新要求を出力した場合の動作について説明する。
【００３５】
データベース更新プログラム２は、データベースファイル１５に格納されているレコードを更新する場合、更新対象レコードを含む更新対象ブロックのブロック番号と、更新対象ブロック内における更新対象レコードのレコード番号と、更新内容とを含む更新要求を出力する。
【００３６】
データベースシステム１内のデータベースアクセス手段１１は、データベース更新プログラム２から更新要求が入力されると、更新要求に含まれている更新対象ブロックのブロック番号と同一のブロック番号が、ブロック番号記憶部１６に格納されているか否かを調べる（図４のステップＳ４１）。即ち、ステップＳ４１では、最新のコミット点以降に、今回入力された更新要求が更新対象にしているブロックと同一ブロックについての更新前ジャーナルが、既に出力されているか否かを調べている。
【００３７】
そして、同一のブロック番号がブロック番号記憶部１６に格納されている場合（ステップＳ４１がＹＥＳ）は、データベースファイル１５から更新対象ブロック全体のイメージを読み込み、それをバッファ１７に書き込む（ステップＳ４７）。その後、データベースアクセス手段１１は、バッファ１７に格納されている更新対象レコードのイメージを更新後のイメージに書き換え（ステップＳ４５）、最後にバッファ１７に内容を該当するブロックに書き戻す（ステップＳ４６）。
【００３８】
これに対して、同一のブロック番号がブロック番号記憶部１６に格納されていない場合（ステップＳ４１がＮＯ）は、今回入力された更新要求中のブロック番号をブロック番号記憶部１６に格納し、更に、更新対象ブロック全体のイメージをバッファ１７に書き込む（ステップＳ４２，Ｓ４３）。その後、データベースアクセス手段１１は、ジャーナル作成手段１２に対して、更新対象ブロックのブロック番号を渡し、更新前ジャーナルの作成を指示する（ステップＳ４４）。
【００３９】
これにより、ジャーナル作成手段１２は、バッファ１７に格納されているブロックイメージに、データベースアクセス手段１１から渡されたブロック番号を制御情報として付加することにより、図５に示すような更新前ジャーナルを作成し、それをジャーナルファイルアクセス手段１３に渡す。ジャーナルファイルアクセス手段１３では、ジャーナル作成手段１２から渡された更新前ジャーナルをジャーナルファイル１８に出力する。これにより、データベースアクセス手段１１は、前述したステップＳ４５，Ｓ４６の処理を行い、更新対象レコードの内容を更新する。なお、本実施の形態では、制御情報としてブロック番号を使用するようにしたが、更新前ジャーナルを元のブロックに書き戻せるのであれば、他の情報を使用しても構わない。
【００４０】
次に、復旧時の動作について説明する。
【００４１】
データベースファイル１５の復旧時、復旧手段１４は、図６に示すように、ジャーナルファイル１８からレコードを１つ入力し、それがコミット命令であるか否かを判断する（ステップＳ６１，Ｓ６２）。なお、ステップＳ６１においては、格納時期が新しいレコードから優先的に入力する。
【００４２】
そして、レコードの内容がコミット命令であると判断した場合（ステップＳ６２）は、その処理を終了する。これに対して、コミット命令でないと判断した場合、即ち、レコードの内容が更新前ジャーナルであると判断した場合（ステップＳ６２がＮＯ）は、入力した更新前ジャーナルをバッファ１７に書き込み、データベースアクセス手段１１に対して、バッファ１７に格納されている更新前ジャーナルの書き戻しを指示する（ステップＳ６４）。これにより、データベースアクセス手段１１は、バッファ１７に格納されている更新前ジャーナルを、それに含まれているブロック番号に従って、データベースファイル１５中の該当するブロックに書き戻す。
【００４３】
その後、復旧手段１４は、再び、ステップＳ６１の処理に戻り、前述した処理と同様の処理を行う。以上の処理は、コミット命令を含んだレコードを入力するまで（ステップＳ６２がＹＥＳとなるまで）、繰り返し行われる。
【００４４】
次に、具体例を挙げて本実施の形態の動作について説明する。
【００４５】
今、例えば、データベース更新プログラム２が、図７に示すように、コミット命令Ｃ及び更新要求Ｄ１，Ｄ２，Ｄ３，Ｄ４を順次出力し、その後、障害が発生したとする。
【００４６】
コミット命令Ｃがデータベース更新プログラム２から出力されると、データベースアクセス手段１１は、ブロック番号記憶部１６に格納されているブロック番号を全て削除する（図３のステップＳ３１）。これにより、ブロック番号記憶部１６に内容は、図８（Ａ）に示すものとなる。その後、データベースアクセス手段１１は、ジャーナルファイルアクセス手段１３に対して、コミット命令Ｃの書き込みを指示する（ステップＳ３２）。これにより、ジャーナルファイルアクセス手段１３は、図９（Ａ）に示すように、ジャーナルファイル１８にコミット命令Ｃを書き込む。
【００４７】
その後、ブロック番号「Ｂｎ」，レコード番号「Ｌ３」および更新後のレコードイメージ「ＢＢＢ」を含む更新要求Ｄ１がデータベース更新プログラム２から出力されると、データベースアクセス手段１１は、ブロック番号記憶部１６にブロック番号「Ｂｎ」が格納されているか否かを判断する（ステップＳ４１）。この例の場合、ブロック番号記憶部１６には、図８（Ａ）に示すように、全くブロック番号が格納されていないので（ステップＳ４１がＮＯ）、上記ブロック番号「Ｂｎ」をブロック番号記憶部１６に格納する（ステップＳ４２）。この結果、ブロック番号記憶部１６の内容は、図８（Ｂ）に示すものとなる。
【００４８】
次に、データベースアクセス手段１１は、図１０に示すように、ブロック番号「Ｂｎ」のブロック全体イメージをバッファ１７に書き込み、ジャーナル作成手段１２に対して更新前ジャーナルの作成を指示する（ステップＳ４３，Ｓ４４）。これにより、ジャーナル作成手段１２がブロックＢｎのイメージにブロック番号「Ｂｎ」を付加した更新前ジャーナルＪ１を作成し、ジャーナルファイルアクセス手段１３が図９（Ａ）に示すように、更新前ジャーナルＪ１をジャーナルファイル１８に出力する。
【００４９】
その後、データベースアクセス手段１１は、図１０に示すように、バッファ１７上でブロックＢｎ内のレコードＬ３の内容を「ＢＢＢ」に変更し、更に、変更後のブロックＢｎの内容をデータベース１５に書き戻す（ステップＳ４５，Ｓ４６）。
【００５０】
更新要求Ｄ１の次に、ブロック番号「Ｂ２」，レコード番号「Ｌ１」を含む更新要求Ｄ２がデータベース更新プログラム２から出力されると、データベースアクセス１１は、上記ブロック番号「Ｂ２」がブロック番号１６に格納されていないので（ステップＳ４１がＮＯ）、更新要求Ｄ１が入力された場合と同様の処理を行う（ステップＳ４２〜４６）。この結果、ブロック記憶部１６には、図８（Ｃ）に示すように、ブロック番号「Ｂ２」が追記され、ジャーナルファイル１８には、図９（Ａ）に示すように、ブロック番号「Ｂ２」と、ブロックＢ２全体のブロックイメージとを含んだ更新前ジャーナルＪ２が格納される。
【００５１】
更新要求Ｄ２に引き続き、ブロック番号「Ｂｎ」，レコード番号「Ｌ２」を含む更新要求Ｄ３がデータベース更新プログラム２から出力されると、データベースアクセス手段１１は、ブロック番号記憶部１６に上記ブロック番号「Ｂｎ」が格納されているか否かを判断する（ステップＳ４１）。この例の場合、ブロック番号記憶部１６の内容は、図８（Ｃ）に示すものとなっており、ブロック番号「Ｂｎ」が格納されているので（ステップＳ４１がＹＥＳ）、データベースアクセス手段１１は、バッファ１７にブロックＢｎの全体イメージを格納した後、バッファ１７上でレコードＬ２を更新し、データベースファイル１５中の該当するブロックＢｎに書き戻す（ステップＳ４７，Ｓ４５，Ｓ４６）。このように、更新要求Ｄ２が入力された場合には、更新前ジャーナルがジャーナルファイル１８に格納されることはない。
【００５２】
更に、ブロック番号「Ｂｎ」，レコード番号「Ｌ１」を含む更新要求Ｄ４がデータベース更新プログラム２から出力されると、データベースアクセス手段１１は、上記ブロック番号「Ｂｎ」がブロック番号記憶部１６に格納されているので、更新要求Ｄ３が入力された場合と同様の処理を行う（ステップＳ４１がＹＥＳ，Ｓ４７，Ｓ４５，Ｓ４６）。
【００５３】
このように、本実施の形態では、データベース更新プログラム２から図７に示すように、更新要求Ｄ１，Ｄ２，Ｄ３，Ｄ４が出力された場合、ジャーナルファイル１８には、図９（Ａ）に示すように、更新要求Ｄ１，Ｄ２に対応する更新前ジャーナルＪ１，Ｊ２しか格納されない。これに対して、特許文献１に記載されている従来の技術のようにした場合には、図９（Ｂ）に示すように、４個の更新前ジャーナルＪ１〜Ｊ４がジャーナルファイル１８に格納されてしまう。
【００５４】
更新要求Ｄ４に対する処理が完了した後に障害が発生すると、復旧手段１４が動作する。復旧手段１４は、先ず、ジャーナルファイル１８から格納時期が最も新しいレコードを１つ入力し、それがコミット命令であるか否かを調べる（図６のステップＳ６１，Ｓ６２）。この例の場合、入力したレコードは、更新前ジャーナルＪ２であるので（図９参照）、復旧手段１４は、更新前ジャーナルＪ２をバッファ１７に書き込み、データベースアクセス手段１１に対してファイル１７の内容をデータベースファイル１５に書き戻すことを指示する（ステップＳ６４）。これにより、データベースアクセス手段１１は、更新前ジャーナル中のブロック番号「Ｂ２」に基づいて、ブロックイメージをデータベースファイル１５のブロックＢ２に書き戻す。
【００５５】
その後、復旧手段１４は、次のレコードを入力し、それがコミット命令であるか否かを調べる（ステップＳ６１，Ｓ６２）。この場合、レコードの内容は、更新前ジャーナルＪ１であるので、前述した処理と同様の処理が行われる（ステップＳ６２がＮＯ，Ｓ６３，Ｓ６４）。
【００５６】
更に、復旧手段１４は、次のレコードを入力し、それがコミット命令であるか否かを調べる（ステップＳ６１，Ｓ６２）。今回入力したレコードは、コミット命令Ｃであるので（ステップＳ６２がＹＥＳ）、復旧手段１４は処理を終了する。
【産業上の利用可能性】
【００５７】
本発明は、データベース更新時の障害発生の際、データベースの内容を消失させたくなく、且つ迅速なデータ復旧を行いたい場合などに適用できる。特に、銀行のオンライン情報などデータ消失が絶対に許されない用途に適用できる。
【図面の簡単な説明】
【００５８】
【図１】本発明にかかるデータベースシステムの実施の形態の構成例を示すブロック図である。
【図２】データベースファイル１５の内容例を示す図である。
【図３】コミット命令が入力されたときの、データベースアクセス手段１１の処理例を示すフローチャートである。
【図４】更新要求が入力されたときの、データベースアクセス手段１１の処理例を示すフローチャートである。
【図５】更新前ジャーナルの構成例を示す図である。
【図６】復旧手段１４の処理例を示すフローチャートである。
【図７】データベース更新プログラム２が出力するコミット命令Ｃ、更新要求Ｄ１〜Ｄ４を示した図である。
【図８】ブロック番号記憶部１６の内容が変化する様子を示した図である。
【図９】ジャーナルファイル１８の内容例を示す図である。
【図１０】レコードの更新処理を説明するための図である。
【符号の説明】
【００５９】
１…データベースシステム
１１…データベースアクセス手段
１２…ジャーナル作成手段
１３…ジャーナルファイルアクセス手段
１４…復旧手段
１５…データベースファイル
１６…ブロック番号記憶部
１７…バッファ
１８…ジャーナルファイル
２…データベース更新プログラム
【図１】
2006011505.tif 000003
【図２】
2006011505.tif 000004
【図３】
2006011505.tif 000005
【図４】
2006011505.tif 000006
【図５】
2006011505.tif 000007
【図６】
2006011505.tif 000008
【図７】
2006011505.tif 000009
【図８】
2006011505.tif 000010
【図９】
2006011505.tif 000011
【図１０】
2006011505.tif 000012