(57)【特許請求の範囲】
【請求項１】
データベースを主メモリーに保存し、主メモリーデータベースに対する並列的な回復のためにログレコードを保存するための複数個のログディスクと、主メモリーデータベースを保存するための一つ又は複数個のバックアップディスクとを含む主メモリートランザクション処理システムのロギング方式において、ログレコードはある更新演算が行われる場合、これに対する更新前のイメージと更新後のイメージ間のＸＯＲ結果からなり、前記ログレコードと前記更新前のデータベースイメージ間のＸＯＲ演算を通じてシステムを復旧するとともに、
前記ＸＯＲ演算を通じたシステム復旧では、複数の前記ログレコードが、完了したトランザクションに対応するもののみについて、前記ログレコードの生成順序とは逆方法にスキャンされて各ログレコードが前記ＸＯＲ演算されることを特徴とする主メモリーデータ管理システムで並列的な回復演算のためのディファレンシャルロギング方法。
【請求項２】
前記データベースは複数個の固定の大きさを有したページから構成されることを特徴とする請求項１記載の主メモリーデータ管理システムで並列的な回復演算のためのディファレンシャルロギング方法。
【請求項３】
前記ＸＯＲ演算を通じたシステム復旧はチェックポインティング技法を用いて行われることを特徴とする請求項１記載の主メモリーデータ管理システムで並列的な回復演算のためのディファレンシャルロギング方法。
【請求項４】
前記チェックポインティングはトランザクション一貫性のチェックポインティング方式であることを特徴とする請求項３記載の主メモリーデータ管理システムで並列的な回復演算のためのディファレンシャルロギング方法。
【請求項５】
前記チェックポインティングは演算一貫性のチェックポインティング方式であることを特徴とする請求項３記載の主メモリーデータ管理システムで並列的な回復演算のためのディファレンシャルロギング方法。
【請求項６】
前記チェックポインティングを用いたシステム復旧過程は一つ又は複数個のバックアップディスクからバックアップデータを主メモリーにローディングする段階及び、一つ又は複数個のログディスクからログを主メモリーにローディングする段階を含むことを特徴とする請求項３記載の主メモリーデータ管理システムで並列的な回復演算のためのディファレンシャルロギング方法。
【請求項７】
前記バックアップデータを主メモリーにローディングする段階及び、ログを主メモリーにローディングする段階は、データベースをパーティショニングして複数個のバックアップディスクに並列的にチェックポインティングを行い、また、並列的にローディングすることを特徴とする請求項６記載の主メモリーデータ管理システムで並列的な回復演算のためのディファレンシャルロギング方法。
【請求項８】
前記チェックポインティングを用いたシステム復旧過程の前に予め主メモリーデータベース領域を０に初期化する段階を更に含むことを特徴とする請求項６記載の主メモリーデータ管理システムで並列的な回復演算のためのディファレンシャルロギング方法。
【請求項９】
前記バックアップデータを主メモリーにローディングする段階は一つ又は複数個のバックアップディスクからバックアップデータを読み込み、これらをバックアップデータと主メモリーデータベース間のＸＯＲ演算を通じて適用することを特徴とする請求項８記載の主メモリーデータ管理システムで並列的な回復演算のためのディファレンシャルロギング方法。
【請求項１０】
前記バックアップデータを読み込み、バックアップデータを適用する段階はパイプラインで行うことを特徴とする主メモリーデータベースを復旧することを特徴とする請求項９記載の主メモリーデータ管理システムで並列的な回復演算のためのディファレンシャルロギング方法。
【請求項１１】
前記バックアップデータを読み込み、これらを適用する段階はパーティショニングによって並列的に行うことを特徴とする請求項９記載の主メモリーデータ管理システムで並列的な回復演算のためのディファレンシャルロギング方法。
【請求項１２】
前記バックアップデータを読み込み、これらを適用する段階はパーティショニングによって並列的に行い、パイプラインで行うことを特徴とする請求項９記載の主メモリーデータ管理システムで並列的な回復演算のためのディファレンシャルロギング方法。
【請求項１３】
前記バックアップデータをローディングする段階及び、ログをローディングする段階は並列化することを特徴とする請求項９記載の主メモリーデータ管理システムで並列的な回復演算のためのディファレンシャルロギング方法。
【請求項１４】
データベースを保存するための主メモリー、主メモリーデータベースの並列的な回復のためのログレコードを保存する複数個のログディスク、主メモリーデータベースのコピー本を保存する一つ又は複数個のバックアップディスク、ある更新演算が行われる場合、これに対する更新前のイメージと更新後のイメージ間のＸＯＲ結果をログ本体に保存するログを生成するための手段及び、ディファレンシャルログとデータベースイメージ間のＸＯＲからなり、ディファレンシャルログレコードと前記更新前のデータベースイメージ間のＸＯＲ演算を通じてシステムを復旧する手段とを含み、
前記ＸＯＲ演算を通じてシステムを復旧する手段は、複数の前記ディファレンシャルログレコードを、完了したトランザクションに対応するもののみについて、前記ディファレンシャルログレコードの生成順序とは逆方法にスキャンして各ディファレンシャルログレコードについて前記ＸＯＲ演算を行うことを特徴とする主メモリートランザクション処理システム。
【請求項１５】
前記データベースは複数個の固定の大きさを有したページを含むことを特徴とする請求項１４記載の主メモリートランザクション処理システム。
【請求項１６】
一つ又は複数個のバックアップディスクにデータベースをバックアップするチェックポインティング手段を更に含むことを特徴とする請求項１４記載の主メモリートランザクション処理システム。
【請求項１７】
前記チェックポインティング手段はトランザクション一貫性のチェックポインティング方式を使用することを特徴とする請求項１６記載の主メモリートランザクション処理システム。
【請求項１８】
前記チェックポインティング手段は演算一貫性のチェックポインティング方式を使用することを特徴とする請求項１６記載の主メモリートランザクション処理システム。
【請求項１９】
前記チェックポインティング手段は再開始の過程時に一つ又は複数個のバックアップディスクからバックアップデータを主メモリーにローディングする手段及び、一つ又は複数個のログディスクからログを主メモリーにローディングする手段とを含むことを特徴とする請求項１６記載の主メモリートランザクション処理システム。
【請求項２０】
前記バックアップデータを主メモリーにローディングする手段は、一つ又は複数個のバックアップデータからバックアップデータを読み込む手段と、これらをバックアップデータと主メモリーデータベース間のＸＯＲ演算を通じて適用する手段とを含むことを特徴とする請求項１９記載の主メモリートランザクション処理システム。
【請求項２１】
主メモリーデータベースの並列的な回復のためのログレコードを保存する複数個のログディスクと、主メモリーデータベースの一つのコピー本を保存する一つ又は複数個のバックアップディスクを備えたシステムにおいて、また、主メモリートランザクション処理システムにおいて、ある更新演算が行われる場合、これに対する更新前のイメージと更新後のイメージ間のＸＯＲ結果をログ本体に保存するログを生成する機能及び、前記生成されたログレコードと前記更新前のデータベースイメージ間のＸＯＲ演算を通じてシステムを復旧する機能を実現させるためのプログラムを記録したコンピュータで読み込める記録媒体であって、
前記ＸＯＲ演算を通じてシステムを復旧する機能では、複数の前記ログレコードが、完了したトランザクションに対応するもののみについて、前記ログレコードの生成順序とは逆方法にスキャンされて各ログレコードが前記ＸＯＲ演算されることを特徴とする記録媒体。
【請求項２２】
前記記録媒体がＣＤであることを特徴とする請求項２１記載の記録媒体。
【請求項２３】
前記記録媒体が磁気テープであることを特徴とする請求項２１記載の記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は主メモリートランザクション処理システムにおいて回復のためのロギング方法及び装置に関する。
【０００２】
【従来の技術】
トランザクション処理システムは障害の発生時にも管理中のデータの一貫性や持続性が補償されなければならない。データの一貫性とは、トランザクションが行われる時にデータは常にある一貫した状態から他の一貫した状態に変更されるべきである性質を云う。また、データの持続性とは、完了したトランザクションにより変更されたデータはシステム障害時にも常にそのまま維持されるべきである性質を云う。
【０００３】
データベースの一貫性や持続性を保持するため、大部分のトランザクションシステムはロギングと称する方法を使用するが、この方法は各更新演算に関する情報からログレコードを構成してログファイルに保存する方法である。
障害が発生すると、完了していないトランザクションのログレコードに対しては該当更新演算をアンドゥーすることでデータベースの一貫性を維持させ、完了したトランザクションのログレコードに対しては該当更新演算をリドゥーすることでデータベースの持続性を維持させる。
【０００４】
ログのみを用いてデータベースを復旧する場合、システム稼動後に生成された全てのレコードに対してリドゥー又はアンドゥー演算を実行すべき必要から、あまりにも多量のログを読み込まなければならないという短所があった。
そこで、所謂チェックポインティングという方法を用いてデータベースを一定の時間間隔でバックアップディスクに保存して、システムの再開始時には一番最近成功したチェックポインティングの以後に生成されたログのみを読んでも済むようにする。一般的なチェックポインティングの場合には、データベースの各ページがダーティフラッグと呼ばれるデータを管理して、一番最近成功したチェックポインティングの以後に行われたトランザクションにより変更されたページのみバックアップディスクに保存するようにして、チェックポインティング時に保存すべきデータの量を減らす。
【０００５】
図１はデータベースを全て主メモリー上に保存する主メモリーデータベースシステムで使用される既存の回復構造に関する図面である。一般的には２つのバックアップディスク１０１，１０２と一つのログディスク１０３が使用される。
一回のチェックポインティングによってただ一つのバックアップディスクのみが更新され、毎チェックポインティングごとにバックアップディスクが変わりつつ更新される。このために、各データベースページごとに２つのダーティフラッグが存在して、一つのトランザクションが一つのページを更新させる時、２つのフラッグを共にセットする。そして、一つのチェックポインティングが行われると、そのページを一番目のパックアップディスクに保存した後、一番目のダーティフラッグをリセットする。同様に、後に続く他の一つのチェックポインティングはそのページを二番目のバックアップディスクに保存した後、二番目のダーティフラッグをリセットする。
【０００６】
図２はシステム障害の発生時に既存の回復構造で使用する再開始の過程に関する図面である。図２に示すように、再開始の過程は一番最近成功したチェックポインティングにより保存されたバックアップを主メモリーに読み込む過程（以下、″ＢＲ″）２０１と、読み込まれたバックアップを用いてデータベースを部分的に復旧する過程（以下、″ＢＰ″）２０２と、ログをログディスクから主メモリーに読み込む過程（以下、″ＬＲ″）２０３と、読み込まれたログレコードを部分的に復旧されたデータベースに適用する過程（以下、″ＬＰ″）２０４とから構成されている。
【０００７】
図３はシステムの再開始時に既存の回復構造で使用される二重経路ログの適用に関する図面である。
図３に示すように、まず、ログアンカーに保存された情報を用いてチェックポイント開始ログを読み込む。ルーザートランザクションを区分するために、ＴＩＤとラストＬＳＮというフィールドを有するルーザートランザクションテーブル（ＬＴＴ）が管理される。このテーブルはトランザクション開始ログレコードに保存された活動トランザクションのリストを用いて初期化される（３０１）。
既存の回復演算では交換性及び結合性が保障されないので、ログを正方向にスキャンし、ログレコードを読み込む。
【０００８】
読み込んだログがトランザクション開始ログである場合（３０２）、ルーザートランザクションテーブルで対応する一つのエントリーを生成するようにする（３０５）。読み込んだログがトランザクション終了ログである場合は、ルーザートランザクションテーブルで対応する一つのエントリーを削除するようにする（３０６）。
【０００９】
一貫した状態のデータベースに復旧するために、完了したトランザクションのログレコードはリドゥーを行い、システム障害の時点で活動中であったトランザクションのログは全てアンドゥーを行う必要がある。このために、チェックポインティング開始ログのレコードからログのエンドまでスキャンしながら更新ログの場合（３０４）、ログレコードに対してリドゥー演算を行い、対応するルーザートランザクションテーブルエントリのＬＳＮフィールドを更新する（３０７）。ログのエンドに到達した時、ＬＴＴにまだ残っているトランザクションがルーザートランザクションである。一つのルーザートランザクションの一番最近のログレコードは対応するＬＴＴエントリーのラストＬＳＮフィールドからその位置を見付けることができ、そのトランザクションの他のレコードは見付けたログレコードのラストＬＳＮフィールドから連鎖的にその位置を見付けられる（３０８）。
【００１０】
【発明が解決しようとする課題】
しかしながら、既存の物理的なロギング方法を使用する時には、全てのログレコードはＬＰ過程でその生成された順序通りに適用されるべきである。即ち、先に生成されたログが先にリドゥーされるべきである。このような条件はリドゥー演算とアンドゥー演算とが可換でなく且つ結合性がないからであって、データベースシステムの設計時に相当な制約をもたらす。
【００１１】
全体のデータベースを主メモリー上に保存する主メモリーデータベースシステムではログディスクに接近する方式がシステムの性能上主な障害となる。このような障害を減らすために、複数のログディスクを使用して並列的にロギングする構造が考えられるが、既存の物理的なロギング方法を使用した場合、システムの再開始時にＬＰ過程でログレコードの生成順序を把握して、その順序通りに適用しなければならないオーバーヘッドのため実際には使用し難い。
従って、複数個のログディスクが存在する環境でログに対する効果的な並列的演算が行われ得るようにしたロギング方法が必要である。
【００１２】
そこで、本発明の目的は、トランザクション処理システムで発生する障害を復旧するのに使用されるロギング方法において並列的な演算を可能にさせることにある。
このような目的を用いて、本発明では可換あり且つ結合性がある回復演算が許容可能なディファレンシャルロギング方法を使用する。この方法ではある更新演算の発生時に主メモリーデータベースの更新前のイメージと更新後のイメージ間のＸＯＲ演算の結果をログレコードで保存し、保存されたログレコードとデータベースイメージ間のＸＯＲ演算を行うことによってリドゥーやアンドゥー演算を行う。
【００１３】
【課題を解決するための手段】
上記目的を達成するために、本発明による主メモリートランザクション処理システムで並列的な回復演算のためのディファレンシャルロギング方法は、データベースを主メモリーに保存し、主メモリーデータベースに対する並列的な回復のためにログレコードを保存するための一つ又は複数個のログディスクと、主メモリーデータベースを保存するための一つ又は複数個のバックアップディスクとを含む主メモリートランザクション処理システムのロギング方式において、ログレコードはある更新演算が行われる場合、これに対する更新前のイメージと更新後のイメージ間のＸＯＲ結果からなり、前記ログレコードとデータベースイメージ間のＸＯＲ演算を通じてシステムを復旧することを特徴とする。
【００１４】
一方、本発明によるシステムは、データベースを保存するための主メモリー、主メモリーデータベースの並列的な回復のためのログレコードを保存する一つ又は複数個のログディスク、主メモリーデータベースのコピー本を保存する一つ又は複数個のバックアップディスク、ある更新演算が行われる場合、これに対する更新前のイメージと更新後のイメージ間のＸＯＲ結果をログ本体に保存するログを生成するための手段及び、ディファレンシャルログとデータベースイメージ間のＸＯＲからなり、ディファレンシャルログレコードとデータベースイメージ間のＸＯＲ演算を通じてシステムを復旧する手段とを含むことを特徴とする。
【００１５】
【発明の実施の形態】
以下、添付の図面に基づいて本発明による主メモリートランザクション処理システムで並列的な回復演算のためのディファレンシャルロギング方法及び装置の望ましい実施形態を詳細に説明する。
【００１６】
図４は本発明で使用される更新ログレコードとデータベースページの構造を示す図面である。本発明は一つのデータベースが固定された大きさを有する複数個のページから構成され、一つのページは再び複数個のスロットから構成される保存構造を有している。他の方式の保存構造を有するシステムに本発明を実施するためには多少の修正が必要であるが、これは、本発明に記述された内容から明白に類推可能である。本発明の一実施形態では、トランザクションの開始、トランザクションの終了、更新、チェックポイントの開始、チェックポイントの終了など少なくとも５つの類型のログレコードを使用する。
トランザクション開始のログレコードとトランザクション終了のログレコードは一つのトランザクションの開始や終了を、チェックポイント開始のログレコードとチェックポイント終了のログレコードは一つのチェックポインティングの開始や終了を記録するのに使用される。
【００１７】
一つの更新演算を記録するのに使用される更新ログレコードは、一つのログレコードと一つのログ本体とから構成される。図４は本発明の一実施形態で使用されるログヘッダーの構造に関する図面である。
″ＬＳＮ（Ｌｏｇ Ｓｅｑｕｅｎｃｅ Ｎｕｍｂｅｒ）″フィールドにはログレコードの認識番号を保存時に一般的にはディスク上でログレコードの物理的な住所が用いられる。
″ＴＩＤ（Ｔｒａｎｓａｃｔｉｏｎ ＩＤ）″フィールドには現在ログレコードを生成したトランザクションの認識番号を保存する。″ＰｒｅｖＬＳＮ″フィールドには同一のトランザクションによって一番最近生成されたログの認識番号を保存して、そのトランザクションを撤回する必要がある場合、そのトランザクションで発生した以前のログを迅速に見付けられるようにし、″Ｔｙｐｅ″フィールドにはログレコードのタイプを保存する。
【００１８】
″Ｂａｃｋｕｐ ＩＤ″フィールドには、ログレコードと更新されたページとの間の関係を保存するが、このフィールドはパージチェックポインティングが使用される場合にのみ必要である。これに対しては図８で詳細に説明する。
そして、″Ｐａｇｅ ＩＤ″フィールドには更新されたページの一連の番号を保存し、″Ｏｆｆｓｅｔ″フィールドにはそのページ内で実際に更新された領域までのオフセットを、″Ｓｉｚｅ″フィールドには実際に更新された領域の大きさを保存する。
【００１９】
更新された領域の更新前のイメージと更新後のイメージとをログ本体に保存する既存の物理的なロギングとは異なり、ディファレンシャルロギングでは更新前のイメージと更新後のイメージ間のＸＯＲ結果をログ本体に保存する。例えば、更新前のイメージが″００１１″であり、更新後のイメージが″０１０１″であれば、本発明ではディファレンシャルログの本体に″０１１０″というＸＯＲ結果を保存する。
【００２０】
図５は再開始過程の間にディファレンシャルログレコードをデータベースに適用する演算を例示した図面である。″Ｐａｇｅ ＩＤ″と″Ｏｆｆｓｅｔ″フィールドからログレコードを適用するデータベース上の位置を探した後、該当イメージとログレコードの本体をＸＯＲして、その結果を前記データベースの位置に保存することでリドゥーやアンドゥー演算を行うようになる。この場合、既存の物理的なロギングとは異なり、同一の演算によってリドゥーやアンドゥー演算が行われる。
【００２１】
図６ａ乃至図６ｅは本発明のディファレンシャルロギングと既存の物理的なロギングとを比較した図面である。既存の物理的なロギングでリドゥー演算は可換性および結合性がないため、ログレコードは生成順に適用されるべきである。図６ａに示すように、３つのトランザクションＴ１，Ｔ２，Ｔ３が処理された後、システムの障害が発生した場合を例に挙げると、このトランザクションはデータベース内にある４バイトの定数が０，７，６，１４の順に更新された。図６ｂと図６ｃはそれぞれ物理的なロギングとディファレンシャルロギングが使用された時、スロットのイメージが変更されることにより生成されるログレコードを示す図面である。物理的なログレコードは更新前のイメージと更新後のイメージとを含む反面、ディファレンシャルロギングは更新前のイメージと更新後のイメージ間のＸＯＲの差異のみを含めている。
【００２２】
システムの障害後にログレコードが生成された順序通りにリドゥーすると両者共にきちんと回復可能である。この際、物理的なロギングでのリドゥー演算は、ログ本体に保存された更新後のイメージを対応するスロットにコピーすることで行われる。しかしながら、ログレコードが生成された順序とは異なってリドゥーすると、物理的なロギングでは正確な回復が不可能である反面、ディファレンシャルロギングでは正確な回復が可能である。
【００２３】
図６ｃに示すようなディファレンシャルロギングはデータベースが主メモリーに常住する主メモリーデータベースだけでなく、データベースがディスクに常住するディスクデータベースにも適用可能である。
【００２４】
一貫性のチェックポインティングにはトランザクション一貫性のチェックポインティングと演算一貫性のチェックポインティングとがある。トランザクション一貫性のチェックポインティングは、チェックポインティングの途中にどんな更新トランザクションも進行しないように抑えるチェックポインティング方式である。即ち、現在進行中の更新トランザクションが全て終わるまで待ってからチェックポインティングを開始させ、チェックポインティングが終わるまではどんな更新トランザクションも開始しないようにする。同様に、演算一貫性のチェックポインティングはチェックポインティングの途中にどんな更新演算も進行しないように抑えるチェックポインティング方式である。このような一貫性のチェックポインティングがディファレンシャルロギングと共に使用される場合、図３の二重経路ログの適用もきちんと行われ得る。
【００２５】
図７は本発明で一貫性のチェックポインティング技法を用いて生成されたバックアップから、単一経路ログの適用を用いてデータベースを復旧する過程に関する図面である。
図７で、ＣＴＴ（Ｃｏｍｍｉｔｔｅｄ Ｔｒａｎｓａｃｔｉｏｎ Ｔａｂｌｅ）は終了ログのあるトランザクションの集合を意味し、ＲＴＴ（Ｒｏｌｌｅｄ−ｂａｃｋ Ｔｒａｎｓａｃｔｉｏｎ Ｔａｂｌｅ）は終了ログのないルーザートランザクションの集合を意味する。図７に示すように、まず、ＣＴＴを空いた状態に初期化する（７０１）。逆方向にログをスキャンし（７０２）、リドゥーを行う場合、ログレコードタイプを判断してトランザクション終了ログの場合（７０４）、トランザクション認識番号をＣＴＴに保存し（７０７）、トランザクション開始ログの場合（７０５）、ＣＴＴから該当トランザクションの一連の番号を削除する（７０８）。更新ログの場合（７０６）、ＣＴＴが該当トランザクションの一連の番号を有していればこれをリドゥーする（７０９）。チェックポイント終了ログの場合（７０３）、対応するチェックポイント開始ログを読み込み、これに保存された活動トランザクションリストでＡＴＴ（ａｂｏｒｔｅｄ  ｔｒａｎｓａｃｔｉｏｎ ｔａｂｌｅ）を初期化した後（７０１）、ＡＴＴに存在するトランザクションのうちＣＴＴにも存在するトランザクションを削除する（７１１）。ＡＴＴに残った各トランザクションに対しては、チェックポイント開始ログから逆方向にスキャンし、各更新ログをアンドゥーする（７１２）。
【００２６】
本発明は、ログ適用の過程が一度のログスキャンで行われるようにした長所を有する。即ち、ログはログの生成順序とは逆方向にスキャンされる。この場合、あるトランザクションの更新ログレコードに出会う前にそのトランザクションの終了ログレコードに先に出会うことになるので、撤回したトランザクションのログレコードは適用する必要がなくなる。即ち、再開始過程においてただ完了したトランザクションの更新ログのみを適用し、撤回したトランザクションの更新ログはスキップする。同様な理由から、トランザクション終了レコードを有していないルーザートランザクションの更新ログもまたそのままスキップすることができる。
【００２７】
既存の物理的なロギングではログレコードが生成された順序通りにリドゥーしなければならないので、生成された順序と同方向にログをスキャンする。あるトランザクションの終了ログレコードに出会う前にそのトランザクションの更新ログレコードに出会うようになっているため、そのトランザクションが完了したトランザクションであるか、撤回したトランザクションであるかが予め分からない。従って、一番目のスキャンでは全トランザクションの更新ログをリドゥーした後、逆方向に進行する二番目のスキャンで撤回したトランザクションのログをアンドゥーする。
【００２８】
図８は本発明で他の更新演算の実行を中止させないままバックアップを生成するパージチェックポインティング過程に関する図面である。パージチェックポインティングは上記した一貫性のチェックポインティングとは異なり、チェックポインティングの途中にも他のトランザクションや演算の実行を許容する。
従って、パージチェックポインティングがディファレンシャルロギングと共に使用される場合、正確な回復のためには２つの同期化の問題が考慮されるべきである。
【００２９】
第一に、チェックポインティングと更新演算とが同時に同一のページをバックアップし且つ更新している場合、そのページはその更新演算の更新前のイメージと更新後のイメージとが混合されたままバックアップディスクに保存されるので、正確な回復は不可能である。
この問題を解決するため、本発明はチェックポインティングと更新演算が接近しようとするページをロックした状態でバックアップするか更新させる。
【００３０】
第二に、ある更新演算に対するログレコードが形成された後、その更新が発生したページがバックアップディスクに保存された時、システムの再開始時にそのログレコードを再びデータベースに適用すると正確な回復が不可能である。
即ち、事前イメージと事後イメージ間のディファレンシャルロギングが適用された後、事後イメージに再びディファレンシャルロギングを適用してしまう結果が出ることがある。この問題を解決するために、各ログレコードに対して再開始時にそのレコードをデータベースに適用すべきか否かが判断可能な情報が各ページ８０９と各ログレコードごとに″Ｂａｃｋｕｐ ＩＤ″という名で保存される。
【００３１】
図８を参照して、ディファレンシャルロギングを適用するためのパージチェックポインティング過程を説明する。
ディファレンシャルロギングを適用したパージチェックポインティング過程では、ダーティページに対するイメージを非同期的にバックアップディスクに反映する過程において、一般的なパージチェックポインティング過程とは異なった過程を行う。図８で、左側の部分は従来のパージチェックポインティング過程と同様であるので詳細な説明を省略し、ディファレンシャルロギングを適用するために行われる右側の部分に対して説明する。
【００３２】
図８に示すように、まず、各ページに対してロックを獲得する（８００）。ロックを獲得した状態でページ内の″Ｂａｃｋｕｐ ＩＤ″フィールドを現在のバックアップ認識番号でセッティングする（８０１）。
現在、バックアップ認識番号に対応するダーティフラッグがセッティングされていない場合にはロックを解除する（８０５）。現在、バックアップ認識番号に対応するダーティフラッグがセッティングされていれば（８０２）、現在のバックアップ認識番号に対応するダーティフラッグをリセットし（８０３）、現在のページを現在のバックアップディスクに非同期的に記録した後（８０４）、ページに対するロックを解除する（８０５）。ロックを解除した後には従来のパージチェックポインティングのような過程が進行する。
【００３３】
図９はディファレンシャルロギングが図８のパージチェックポインティングと共に使用されるための更新過程に関する図面である。
図９に示すように、まず、更新したいページに対するロックを獲得する（９０１）。上記したような２つの同期化の問題を解決するため、ロックを獲得した状態で、更新ログを生成し（９０２）、ページヘッダーの″Ｂａｃｋｕｐ ＩＤ″フィールドをログヘッダーでコピーする（９０３）。コピーが行われると、ページを更新し（９０４）。ページヘッダーのダーティフラッグをセッティングする（９０５）。更新ログをログバッファに挿入すると（９０６）、ページに対するロックを解除する（９０７）。この過程で２つのバックアップに対して２つのダーティフラッグが各ページごとに管理される。
【００３４】
図１０はパージチェックポインティングにより生成されたバックアップからデータベースを復旧する、修正した二重経路ログの適用に関する図面である。
図３の二重経路ログの適用に比べて図１０は、チェックポインティング開始ログのレコードから同一のチェックポインティングのチェックポインティング終了ログのレコードの間に記録されたログレコードに対して他の演算を行うという点が異なる。このログレコードに対しては、ページに保存された″Ｂａｃｋｕｐ ＩＤ″とログレコードに保存された″Ｂａｃｋｕｐ ＩＤ″とを比較する。この両値が同一であれば、そのページがバックアップされる前にそのログレコードが生成されたことを意味するので、ログレコードをページに適用しない。しかし、もし両値が相異すると、反対の場合を意味するので、ログレコードをページに適用する（１００２）。チェックポイント終了ログの場合には図３と同様な過程を進ませる（１００１）。
【００３５】
図１１は本発明でパージチェックポインティングにより生成されたバックアップからデータベースを復旧する、修正した単一経路ログの適用に関する図面である。図７の単一経路ログの適用に比べて図１１は、チェックポインティング開始ログのレコードから同一のチェックポインティングのチェックポインティング終了ログレコードの間に記録されたログレコードに対して他の演算を行うという点が異なる。このログレコードに対しては、ページに保存された″Ｂａｃｋｕｐ ＩＤ″とログレコードに保存された″Ｂａｃｋｕｐ ＩＤ″とを比較する（１１０１）。この両値が同一であり且つ、そのログレコードが完了したトランザクションのログであれば、そのレコードはリドゥーされるべきである（１１０３）。仮に、両値が異なり且つ、そのログレコードが撤回したトランザクションのログであれば、そのレコードはアンドゥーされるべきである（１１０２）。残りの場合に対してはログレコードをスキップする。
【００３６】
図１２は本発明でログレコードを複数個のログディスクに分配して並列的なロギングを可能にさせるロギング構造の一実施形態に関する図面である。物理的なロギングとは異なり、ディファレンシャルロギングはその回復演算が可換であり且つ結合性があるため、任意のログディスクでログレコードを自由に分配させてもオーバーヘッドがかかることなく再開始することができる。この実施形態では、ログレコードがトランザクション識別番号を基準に複数個のログディスクに分配され、各ログディスク１２０３は互いに異なるログ管理者１２０１とログバッファ１２０２を有する。あるトランザクションが開始すると、ログ管理者は負荷が最も少ないログディスクにそのトランザクションを割り当てるし、後ほどそのトランザクションから発生するログレコードは割り当てられたログディスクに保存される。
【００３７】
図１３は本発明で複数個のログディスクから並列的に再開始する再開始構造の一実施形態に関する図面である。図２に示すように、再開始の過程はＢＲ，ＢＰ，ＬＲ，ＬＰの４つの段階から構成される。この実施形態では再開始の速度を高めるため３つの種類の並列化を導入する。一番目は、異なったバックアップローダー（ＢＬ）１３０２を各バックアップディスク１３０７ごとに生成して、パイプラインでＢＲ１３０３とＢＰ１３０１を行う方法である。この際、各ＢＬは互いに独立的に動作する。二番目は、異なったログローダー（ＬＬ）１３０５を各ログディスク１３０８ごとに生成して、パイプラインでＬＲ１３０６とＬＰ１３０４を行う方法である。この際、各ＬＬは互いに独立的に動作する。三番目は、ＢＬとＬＬとが同時に実行されるようにする方法である。
【００３８】
図１４は本発明で複数個のログディスク及びバックアップディスクを使用して、できるだけ迅速にデータベースを再開始できる並列的な再開始過程に関する図面である。まず、データベースを０に初期化する（１４０１）。０はＸＯＲ演算の恒等元であるため、バックアップデータを主メモリーにコピーする代わりにＸＯＲ演算を行うことによってＢＰプロセスが行えるようにする。次いで、一つのバックアップディスクと一つのログディスクに対してそれぞれ一つのＢＬと一つのＬＬが生成され、独立的に動作する（１４０２，１４０３）。
【００３９】
図１５は図１４の並列的な再開始の過程で使用されるバックアップローダー（ＢＬ）モジュールの一実施形態に関する図面である。ＢＬはＢＲプロセス１５０４とＢＰプロセス１５０２をパイプラインで行う。ＢＲプロセスはバックアップディスク１５０５から各ページを読み込んでページバッファ１５０３に保存し、ＢＰプロセスはそのバッファから一ページずつ読み込んで主メモリーデータベースにＸＯＲ演算を通じて適用する（１５０１）。
【００４０】
図１６はシステムの再開始時に同一の時間の間一つのプロセッサが処理可能なログ量より一つのディスクが伝送できるログ量が多い時、図１４の並列的な再開始の過程で使用されるログローダー（ＬＬ）モジュールの一実施形態に関する図面である。この実施形態では複数個のＬＰプロセス（１６０２）が同時に行われる。ＬＬはＬＲとＬＰプロセスの他にも、ＬＰプロセスが読み込んだログレコードを複数個のＬＰプロセスに分配してあげるプロセス１６０４を含む。この際、それぞれのＬＰプロセスは二重経路ログの適用である場合にはＬＴＴを、単一経路ログの適用である場合にはＣＴＴとＡＴＴを独立的に管理する（１６０１）。
【００４１】
図１７はシステムの再開始時に同一の時間の間一つのプロセッサが処理可能なログ量より一つのディスクが伝送できるログ量が少ない時、図１４の並列的な再開始の過程で使用されるログローダー（ＬＬ）モジュールの一実施形態に関する図面である。図１６の実施形態において、ディスパーチャープロセスはＬＰプロセスが増加するほど性能上の障害となる。また、それぞれのログレコードキューに対して、ログを入力及び出力する過程において、ロックしたりアンロックしたりするようなオーバーヘッドがかかる。このような問題を解決するため、この実施形態ではＬＰプロセスがログバッファに保存された各ログレコードが含めているトランザクション識別番号を読み込み、どんなＬＰプロセスで割り当てられるべきかを決定するようにする。一例として、３つのＬＰプロセスが存在する場合、一番目のプロセスはトランザクション識別番号を３に分けて、０が残るログレコードのみ持っていけるようにすることができる。この実施形態で各ログバッファは一つのカウンターを有するが、このカウンターはＬＲプロセスがログバッファにログを入力する毎にリセットするようにする。
そして、ＬＰプロセスがその読み込んだバッファページを一回スキャンする時一つずつ増加するようにし、カウンターの値がＬＰプロセスの数と同一になった時、そのバッファページを捨てられる。
【００４２】
上記では本発明の望ましい実施形態に基づいてその内容を記述したが、本発明はこの実施形態のみに限るものではない。
【００４３】
【発明の効果】
本発明で新たに提案された技法のディファレンシャルロギングを用いる場合、ロギング性能及び再開始性能の顕著な向上を期待できる。ディファレンシャルロギングがそのような性能向上を可能にさせる最も大きな理由は、ディファレンシャルロギングの交換性と結合性にある。複数のログディスクと多重プロセッサが存在する環境で既存のロギング方式を使用する場合、正確な回復のためには、ロギング時に複数のログディスクを十分に活用できないか、再開始時にログの生成順序を把握するためのオーバーヘッドがかかる。
しかしながら、ディファレンシャルロギングを使用した場合、ログを任意にログディスクに分配可能であるので、複数のログディスクを十分に活用できるだけでなく、再開始時にもログ生成順序の把握のためのオーバーヘッドがかかることがない。
そして、再開始時に各ログディスク間の並列的な再開始が可能であるだけでなく、ログを処理する過程とバックアップデータベースをメモリーでアップする過程を並列的に行えるので、再開始時間の相当な節減が期待される。
【００４４】
また、ディファレンシャルロギングではリドゥーとアンドゥーとの区分がないので、単一経路の再開始の技法が可能である。このような再開始の技法を用いる場合、ＣＬＲを形成する必要がなく、パージチェックポイント中でなければトランザクションの実行中に取り消されたものに対してはログをディスクに保存する必要がなくなる。従って、単一経路の再開始の技法は、再開始性能の向上だけでなく、トランザクション取り消し率の高い環境でロギング性能の向上にも寄与できる。
【００４５】
ディファレンシャルロギングは変更前のイメージと変更後のイメージとを共に保存する物理的なロギングとは異なり、これらの間の差異のみを保存するので、物理的なロギングに比べてログ量を半分近く減らすことができる。また、ディファレンシャルログは変更された部分のみビット１に表れるので、ＲＬＥ（Ｒｕｎ Ｌｅｎｇｔｈ Ｅｎｃｏｄｉｎｇ）を使用すると早い速度で高い圧縮率が得られる。このようなログ量の減少はロギング性能と再開始性能の向上に寄与することができる。
【００４６】
以上のようなディファレンシャルロギングの発明は電子商取引サーバー、工程制御、通信システムなどで使用される主メモリーデータ管理システムに活用され、ロギング及び再開始の性能を大きく向上させられることが期待させる。
【図面の簡単な説明】
【図１】  データベースを全て主メモリー上に保存する主メモリーデータベースシステムで使用される既存の回復構造に関する図面。
【図２】  システム障害の発生時に既存の回復構造で使用する再開始過程に関する図面。
【図３】  システムの再開始時に既存の回復構造で使用される二重経路ログの適用に関する図面。
【図４】    データベースで発生した更新演算から更新ログレコードを生成するために本発明で使用する構造に対する図面。
【図５】    本発明で再開始の過程中に更新ログレコードを用いて行うリドゥー又はアンドゥー演算を例示した図面。
【図６】    本発明のディファレンシャルロギング方式と既存の物理的なロギング方式とを比較した図面。
【図７】    本発明で一貫性チェックポインティング技法を用いて生成されたバックアップから、単一経路ログを適用することでデータベースを復旧する過程に関する図面。
【図８】    本発明で他の更新演算の実行を中止させないままバックアップを生成するパージチェックポインティング過程に関する図面。
【図９】    本発明でパージチェックポインティングと共に使用される更新過程に関する図面。
【図１０】    本発明でパージチェックポインティングにより生成されたバックアップから、修正した二重経路ログを適用してデータベースを復旧する過程に関する図面。
【図１１】    本発明でパージチェックポインティングにより生成されたバックアップから、修正した単一経路ログを適用してデータベースを復旧する過程に関する図面。
【図１２】    本発明でログレコードを複数個のログディスクに分配して並列的なロギングを可能にさせるロギング構造の一実施形態に関する図面。
【図１３】    本発明で複数個のログディスクから並列的に再開始する再開始構造の一実施形態に関する図面。
【図１４】    本発明で複数個のログディスク及びバックアップディスクを使用してできるだけ迅速にデータベースを再開始できる並列的な再開始過程に関する図面。
【図１５】    図１４の並列的な再開始過程で使用されるバックアップローダー（ＢＬ）モジュールの一実施形態に関する図面。
【図１６】    システムの再開始時に同一の時間の間一つのプロセッサが処理可能なログ量より一つのディスクが伝送できるログ量が多い時、図１４の並列的な再開始の過程で使用されるログローダー（ＬＬ）モジュールの一実施形態に関する図面。
【図１７】    システムの再開始時に同一の時間の間、一つのプロセッサが処理可能なログ量より一つのディスクが伝送できるログ量が少ない時、図１４の並列的な再開始の過程で使用されるログローダー（ＬＬ）モジュールの一実施形態に関する図面。
【図１】
0004813004.tif 000002
【図２】
0004813004.tif 000003
【図３】
0004813004.tif 000004
0004813004.tif 000005
【図４】
0004813004.tif 000006
【図５】
0004813004.tif 000007
【図６】
0004813004.tif 000008
【図７】
0004813004.tif 000009
0004813004.tif 000010
【図８】
0004813004.tif 000011
0004813004.tif 000012
【図９】
0004813004.tif 000013
【図１０】
0004813004.tif 000014
0004813004.tif 000015
【図１１】
0004813004.tif 000016
0004813004.tif 000017
【図１２】
0004813004.tif 000018
【図１３】
0004813004.tif 000019
【図１４】
0004813004.tif 000020
【図１５】
0004813004.tif 000021
【図１６】
0004813004.tif 000022
【図１７】
0004813004.tif 000023