(57)【要約】【課題】  トランザクション発生時の新規割当ページに対するログ情報を最小化することによって大量のレコード挿入またはインデックス生成作業に対する応答時間を短縮して、ログ情報管理システムの性能を改善する。【解決手段】  更新されるページが新しく割り当てられるページであるか否かを判断するインデックス／レコード／カタログ管理モジュールと、フリーページリストと未完了フリーページリストとを管理して、前記更新されるページが新しく割り当てられるページである場合、前記フリーページリストまたは前記未完了フリーページリストから新規ページを割り当てる格納管理モジュールと、前記新規ページに対応するバッファページに対する識別情報を設定するバッファ管理モジュールとを含み、前記バッファページに対するデータ値変更についてはログ情報が発生しない。【選択図】      図３
2007188497.tif 000002
【特許請求の範囲】
【請求項１】
更新されるページが新しく割り当てられるページであるか否かを判断するインデックス／レコード／カタログ管理モジュールと、
フリーページリストと未完了フリーページリストとを管理して、前記更新されるページが新しく割り当てられるページである場合、前記フリーページリストまたは前記未完了フリーページリストから新規ページを割り当てる格納管理モジュールと、
前記新規ページに対応するバッファページに対する識別情報を設定するバッファ管理モジュールとを含み、
前記バッファページに対するデータ値変更についてはログ情報が発生しないログ情報管理システム。
【請求項２】
前記識別情報は、ページログシーケンス番号を含む請求項１に記載のログ情報管理システム。
【請求項３】
前記バッファ管理モジュールは、前記識別情報を生成可能な最も大きいログシーケンス番号として設定する請求項１に記載のログ情報管理システム。
【請求項４】
前記新規ページは、前記フリーページリストから割り当てられる請求項１に記載のログ情報管理システム。
【請求項５】
前記新規ページが前記未完了フリーページリストから割り当てられた場合には前記格納管理モジュールがディスクから該当ページを指定されたバッファ空間に読み込む請求項１に記載のログ情報管理システム。
【請求項６】
前記バッファ管理モジュールによって管理されるバッファで任意のページに対するページログシーケンス番号が既に設定された特定の値に該当する場合、前記格納管理モジュールは前記ページをディスクに記録する前に前記ページログシーケンス番号の値を既に設定された任意のログシーケンス番号に変更する請求項１に記載のログ情報管理システム。
【請求項７】
前記インデックス／レコード／カタログ管理モジュールは、前記バッファ管理モジュールによって管理されるバッファにあるページに対するページログシーケンス番号が既に設定された特定の値に該当する場合に、データ値が更新されたページに対するログ情報を生成しない請求項１に記載のログ情報管理システム。
【請求項８】
更新されるページが新しく割り当てられるページであるか否かを判断する（ａ）ステップと、
前記更新されるページが新しく割り当てられるページである場合、フリーページリストまたは未完了フリーページリストから新規ページを割り当てる（ｂ）ステップと、
前記新規ページに対応するバッファページに対する識別情報を設定する（ｃ）ステップとを含み、
前記バッファページに対するデータ値変更についてはログ情報が発生しないログ情報管理方法。
【請求項９】
前記識別情報は、ページログシーケンス番号を含む請求項８に記載のログ情報管理方法。
【請求項１０】
前記（ｃ）ステップは、前記識別情報を生成可能な最も大きいログシーケンス番号として設定するステップを含む請求項８に記載のログ情報管理方法。
【請求項１１】
前記（ｂ）ステップは、前記新規ページが前記未完了フリーページリストから割り当てられた場合に前記割り当てられた新規ページがディスクから指定されたバッファ空間にロードされるステップを含む請求項８に記載のログ情報管理方法。
【請求項１２】
前記バッファページに対するページログシーケンス番号が既に設定された特定の値に該当する場合、前記バッファページをディスクに記録する前に前記ページログシーケンス番号の値を既に設定された任意のログシーケンス番号に変更する（ｄ）ステップをさらに含む請求項８に記載のログ情報管理方法。
【請求項１３】
前記バッファページに対するページログシーケンス番号が既に設定された特定の値に該当する場合、前記バッファページに対するログ情報を生成しない（ｄ）ステップをさらに含む請求項８に記載のログ情報管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース管理システムでのログ情報管理に関し、より詳しくは、新規に割り当てられたデータページに関して発生するログ情報の大きさを最小化するログ情報管理システムおよび方法に関するものである。
【背景技術】
【０００２】
データベース管理システムにおける「ログ」または「ロギング」という一般的にアプリケーションプログラムが行う作業によって、変更中であるデータがシステム異常またはユーザの不注意によって正常な値を有することができなくなることを防止するために変更前状態のデータを別途に格納することを意味する。
【０００３】
このようなロギングによりデータベース管理システムは取り消しまたは復旧作業を行うことによって、非正常的に終了したアプリケーションプログラムによって操作中であったデータを本来の正常な状態に戻せるようになる。
【０００４】
図１は、従来技術に係るログ情報管理システムの構成を示すブロック図である。
【０００５】
図１を参照すれば、トランザクションマネージャ１１０は、トランザクションの開始、終了、取り消し時にログマネージャ１３０を用いてログ情報を残し、現在進行しているトランザクションの情報を保持する。復旧マネージャ１２０は特定トランザクションの取り消し時にログマネージャ１３０を介してログ情報を確保した後、データに行なわれた変更を戻す役割を担当する。特に、復旧マネージャ１２０は、ログ情報管理システムが非正常的に終了した時に未完了であったトランザクションの影響をデータベースから削除して完了したトランザクションの修正事項をデータベースに反映して、データの一貫性を保持するようにする。ログマネージャ１３０は、他のモジュールで発生させたデータベースに対する変更されたログ情報を取り集めてバッファ１６０に反映し、復旧マネージャ１２０から要請されたログ情報をディスク１８０から読み込んで提供する。
【０００６】
インデックス／レコード／カタログマネージャ１４０は、ログ情報管理システムを構成する主要データのインデックス、レコード、カタログ情報を各々管理するモジュールであって、バッファマネージャ１５０に必要なデータ（インデックス、レコード、カタログ）をバッファ１６０にロードさせて必要な値を読み込んだり変更したりするように要請する。ログ情報管理システムにおいて、大部分のログ情報はインデックス／レコード／カタログマネージャ１４０によって発生する。
【０００７】
バッファマネージャ１５０は、バッファ１６０を管理しながら、他のモジュールの要請によってディスク１８０に格納されたインデックス、レコード、またはカタログに対するログ情報を入れたページをバッファにロードさせたり、バッファ１６０にロードされたページをディスク１８０に格納したりする。ディスク１８０でデータページを読み込んだり記録したりする作業は格納マネージャ１７０によって行われる。
【０００８】
バッファ１６０は、メモリの一部であって、ログ情報管理システムが確保して専用する空間である。バッファ１６０にはログ情報が記録され、図２ではこのようなログ情報の例としてログレコードを示している。
【０００９】
ログレコード２００は、ログヘッダ２１０、以前データイメージ２２０、そして更新データイメージ２３０を含む。
【００１０】
ログヘッダ２１０は、ログシーケンス番号（以下、「ＬＳＮ」）、トランザクション識別情報、以前ＬＳＮ情報、ページ識別情報、オフセット情報、データ長情報などを含む。
【００１１】
ＬＳＮは該当ログレコードを識別する情報であり、トランザクション識別情報は該当ログレコードが意味する変更を発生させたトランザクションの識別情報である。以前ＬＳＮ情報は、トランザクション識別情報が示すトランザクション内で該当ログ直前に発生させたログレコードの識別情報である。ページ識別情報は、該当ログレコードが含んでいる変更作業がどのページに対して行われたかを示し、オフセット情報は、ページ識別情報によって識別されるページのどの位置からデータ変更が発生したかを示し、データ長情報は変更されたデータの大きさを示す情報である。
【００１２】
以前データイメージ２２０は変更される以前のデータ値を、更新データイメージ２３０は変更された以後のデータ値を示す。
【００１３】
バッファマネージャ１５０はディスク１８０からページ単位でデータを読み込むため、バッファ１６０も同様にページ単位で分割して管理される。
【００１４】
格納マネージャ１７０は、バッファマネージャ１５０の要請によりディスク１８０の特定ページを読み込んでバッファ１６０にロードしたりバッファ１６０の特定ページをディスク１８０に記録したりする。また、格納マネージャ１７０は新しいページが要請される時、該当時点で用いられていないディスクページをデータ格納用として割り当てて、既存のディスクページをそれ以上データ格納用として用いない場合には、該当ディスクページを空のディスクページのうちの１つとして管理する。格納マネージャ１７０は、ページ使用現況を管理する役割をするページ使用管理モジュールをさらに含むことができる。
【００１５】
アプリケーション１９０は、クエリープロセッサまたはクエリーエンジンとして動作することができる。アプリケーション１９０は、トランザクションマネージャ１１０にトランザクションの開始、取り消しまたは終了を知らせることができ、トランザクションの境界内、即ちトランザクションの開始とトランザクション終了／取り消しの間でインデックス／レコード／カタログマネージャ１４０を介してログ情報を読み込んだり変更したりすることができる。
【００１６】
図１に示された各構成要素間の動作過程を説明すれば次の通りである。
【００１７】
まず、アプリケーション１９０がトランザクションの開始をトランザクションマネージャ１１０に要請すれば、トランザクションマネージャ１１０は、新しい１つのトランザクションを生成し、生成されたトランザクションに対する情報をトランザクションが終了するまで保持する。
【００１８】
そして、アプリケーションがインデックス／レコード／カタログマネージャ１４０にデータ更新作業を要請すれば、インデックス／レコード／カタログマネージャ１４０は必要なページをバッファマネージャ１５０に要請し、バッファ１６０内に確保した後に必要な更新作業を行う。各更新作業が行われる時毎にインデックス／レコード／カタログマネージャ１４０は、変更前のデータと変更後のデータに対するログ情報を生成し、ログマネージャ１３０に伝送する。データ更新作業に対するより具体的な過程は、後述することにする。
【００１９】
アプリケーション１９０は、データ更新作業がエラーなしに行われたと判断した場合、トランザクションマネージャ１１０にトランザクションを終了するようにし、そうではない場合にはトランザクションを中断するように要請する。
【００２０】
トランザクションが終了する場合に、トランザクションマネージャ１１０は、ログマネージャ１３０にトランザクションの終了を意味するログ（以下、「Ｃｏｍｍｉｔ＿Ｌｏｇ」）情報を生成するように指示する。そして、トランザクションマネージャ１１０は、ログマネージャ１３０に前記Ｃｏｍｍｉｔ＿Ｌｏｇ情報を含むすべてのログ情報をディスク１８０に記録するように要請する。前記Ｃｏｍｍｉｔ＿ＬｏｇのＬＳＮ値より小さいＬＳＮ値を有するすべてのログ情報がバッファ１６０内にある場合、ログマネージャ１３０は、バッファマネージャ１５０に前記ログ情報をディスク１８０のログファイルに記録するように要請する。
【００２１】
アプリケーション１９０がトランザクションを中断すると決定した場合には、トランザクションマネージャ１１０が復旧マネージャ１２０にトランザクションの取り消しを要請する。復旧マネージャ１２０は該当トランザクション内で既に変更したデータ値を復旧するために、以前のデータ値を有するログ情報をログマネージャ１３０に要請する。前記要請は、バッファマネージャ１５０と格納マネージャ１７０に順に伝えられて処理される。
【００２２】
そして、復旧マネージャ１２０は、以前の値に復旧しなければならないデータページをバッファマネージャ１５０に要請し、バッファマネージャ１５０は要請されたページを格納マネージャ１７０を用いてバッファ１６０に読み込む。復旧マネージャ１２０は、ログマネージャ１３０に要請したログ情報を参照して、変更が発生した部分を探して以前のデータ値（ビフォーイメージ）に復元する。
【００２３】
トランザクションが終了したり取り消されたりした後、トランザクションマネージャ１１０は該当トランザクションの情報をトランザクションテーブルから削除する。
【００２４】
一方、アプリケーション１９０がインデックス／レコード／カタログマネージャ１４０にデータ更新を要請する場合に発生する動作過程を具体的に説明することにする。
【００２５】
インデックス／レコード／カタログマネージャ１４０は、データ更新が物理的にディスク１８０に及ぼす影響を把握して、ディスク１８０内のどのディスクページを修正するべきかを決定する。
【００２６】
インデックス／レコード／カタログマネージャ１４０は、アプリケーション１９０から要請された更新作業がディスクページの削除であるか（「デリート」モード）、新しいページにデータを記録することであるか（「インサート」モード）、または既存ページに記録されたデータ値の変更であるか（「モディファイ」モード）を判断する。
【００２７】
「デリート」モードの場合、バッファマネージャ１５０は、指定されたディスクページがバッファ１６０内にある場合、該当ページをバッファ１６０から削除する。そして、バッファマネージャ１５０は、指定されたディスクページの削除を格納マネージャ１７０に要請し、格納マネージャ１７０は該当ページをそれ以上用いないページとして分類する。この時、ディスクページの使用に変更が発生したため、格納マネージャ１７０は、変更内訳に対するログ情報を生成し、ログマネージャ１３０に伝送する。
【００２８】
「インサート」モードの場合、バッファマネージャ１５０は格納マネージャ１７０に新しいページを割り当てることを要請する。格納マネージャ１７０が新しいページを割り当てた後にディスクページ使用の変更内訳に対するログ情報を生成してログマネージャ１３０に伝送する。そして、格納マネージャ１７０は、要請されたディスクページをバッファマネージャ１５０が指定したバッファ１６０の空間にコピーした後、インデックス／レコード／カタログマネージャ１４０は、該当ページに対するデータ値の挿入を行い、これに対するログ情報を発生させてログマネージャ１３０に伝送する。
【００２９】
「モディファイ」モードの場合、インデックス／レコード／カタログマネージャ１４０は、変更するディスクページをバッファマネージャ１５０に要請する。バッファマネージャ１５０は、該当ディスクページがバッファ１６０に存在するか否かを検査する。データ値を更新するページが既にバッファ１６０内に存在すれば、インデックス／レコード／カタログマネージャ１４０は、該当ページに対するデータ値の変更を行う。
【００３０】
しかし、データ値を更新するページがバッファ１６０内に存在しない場合には、格納マネージャ１７０が要請されたディスクページをバッファマネージャ１５０が指定したバッファ１６０の空いた空間にコピーする。この場合、使用可能な空いた空間がない場合にバッファマネージャ１５０は適切なページを選定して、ディスク１８０に送ってバッファ１６０内に空いた空間を確保する。そして、格納マネージャ１７０が要請されたディスクページをバッファマネージャ１５０が指定したバッファ１６０の空いた空間にコピーする。そして、インデックス／レコード／カタログマネージャ１４０は、該当ページに対するデータ値の変更を行い、データ値変更に対するログ情報を発生させて、ログマネージャ１３０に伝送する。
【００３１】
一方、データベースでは、ログレコードの大量挿入やインデックスの生成時多くのページが新規に割り当てられ、割り当てられたページに対するデータ値が変更される。ところで、上記のような従来のログ情報管理システムでは、すべてのデータ値の変更に対して以前データイメージ（ビフォーイメージ）と更新データイメージ（アフターイメージ）とがログ情報として残る。このような特性のために、あるページがインデックス、レコードまたはカタログ情報を格納するためのページとして新しく割り当てられた後に、ページ全体に対し新しいデータ値が書き込まれるようになれば、従来技術ではヘッダー情報を無視するとしても、新しく割り当てられたページサイズの２倍に達するログ情報が発生する。即ち、Ｎ個のデータページが新規割り当てられた後に各ページ全体に亘って値が書き込まれる時、２Ｎ個のページに達するログ情報が発生するようになる。ところで、一度生成されたログ情報は、すべてトランザクションが完了する以前にディスクに記録されなければならないため、ディスクの入出力過程でログ情報管理システムの性能を低下させられる。特に大量のレコード挿入作業を迅速に処理しなければならないシステムでは、大きな問題ともなり得る。
【００３２】
したがって、新規に割り当てられたデータページに関して、発生するログ情報の大きさを最小化することによって、大量のレコード挿入または新しいインデックス生成作業が発生してもシステムの性能が低下することを防止する必要ができるようになっている。
【特許文献１】韓国公開特許第１０−２００２−００３０２２３号公報
【発明の開示】
【発明が解決しようとする課題】
【００３３】
本発明は、トランザクション発生時の新規割当ページに対するログ情報を最小化することによって大量のレコード挿入またはインデックス生成作業に対する応答時間を短縮して、ログ情報管理システムの性能を改善することを目的とする。
【００３４】
本発明の目的は、以上で言及した目的に制限されず、言及していないまた他の目的は下記記載によって当業者が明確に理解できるものである。
【課題を解決するための手段】
【００３５】
前記目的を達成するために、本発明の一態様に係るログ情報管理システムは、更新されるページが新しく割り当てられるページであるか否かを判断するインデックス／レコード／カタログ管理モジュールと、フリーページリストと未完了フリーページリストとを管理して、前記更新されるページが新しく割り当てられるページである場合、前記フリーページリストまたは前記未完了フリーページリストから新規ページを割り当てる格納管理モジュールと、前記新規ページに対応するバッファページに対する識別情報を設定するバッファ管理モジュールとを含み、前記バッファページに対するデータ値変更についてはログ情報が発生しない。
【００３６】
また、前記目的を達成するために、本発明の他の態様に係るログ情報管理方法は、更新されるページが新しく割り当てられるページであるか否かを判断する（ａ）ステップと、前記更新されるページが新しく割り当てられるページである場合、フリーページリストまたは未完了フリーページリストから新規ページを割り当てる（ｂ）ステップと、前記新規ページに対応するバッファページに対する識別情報を設定する（ｃ）ステップとを含み、前記バッファページに対するデータ値変更についてはログ情報が発生しない。
【発明の効果】
【００３７】
本発明に従えば、ログ情報管理システムにおいて大量で新規ページが割り当てられても割り当てられたページに対するログ情報を最小化することができるため、ディスクの書き込みコストを減少させられる効果がある。
【００３８】
また、本発明に従えば、新しく割り当てられたページをディスクから読み込まないため、ディスクの読み込み費用コストを減少させられる効果がある。
【００３９】
また、本発明に従えば、新しく割り当てられたページに関するログ情報が最小化されるため、データを復旧する場合にも応答速度が速くなる効果がある。
【発明を実施するための最良の形態】
【００４０】
その他、実施形態の具体的な事項は、詳細な説明および図面に含まれている。
【００４１】
本発明の利点および特徴、そしてそれらを達成する方法は、添付する図面と共に詳細に後述する実施形態を参照すれば明確になる。しかし、本発明は以下にて開示する実施形態に限定されず、互いに異なる多様な形態によって実施され、単に本実施形態は本発明の開示が完全なものとなるようにし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであって、本発明は請求項の範疇によってのみ定義されるものである。
【００４２】
以下、本発明の実施形態によって、ログ情報管理システムおよび方法を説明するためのブロック図または処理フローチャートに対する図面を参考にして本発明について説明する。この時、処理フローチャートの各ブロックとフローチャートの組合せは、コンピュータプログラムインストラクションによって行われることが理解できる。これらコンピュータプログラムインストラクションは、汎用コンピュータ、特殊用コンピュータ、またはその他のプログラム可能なデータプロセシング装備のプロセッサに搭載することができるため、コンピュータまたはその他のプログラム可能なデータプロセシング装備のプロセッサを介して行われるそのインストラクションがフローチャートブロックで説明する機能を行う手段を生成するようになる。これらコンピュータプログラムインストラクションは、特定方式で機能を具現するために、コンピュータまたはその他のプログラム可能なデータプロセシング装備が備えられるコンピュータによって利用可能または読取可能なメモリに格納されることも可能であるため、そのコンピュータによって利用可能または読取可能なメモリに格納されたインストラクションは、フローチャートブロックで説明する機能を行うインストラクション手段を含む製造品目の生産に用いることも可能である。コンピュータプログラムインストラクションは、コンピュータまたはその他のプログラム可能なデータプロセシング装備上に搭載することも可能であるため、コンピュータまたはその他のプログラム可能なデータプロセシング装備上で一連の動作ステップが行われ、コンピュータで実行されるプロセスを生成して、コンピュータまたはその他のプログラム可能なデータプロセシング装備の機能を行うインストラクションはフローチャートブロックで説明する各ステップの機能を実行することも可能である。
【００４３】
また、各ブロックは、特定された論理的機能を実行するための１つ以上の実行可能なインストラクションを含むモジュール、セグメント、またはコードの一部を示すことができる。また、複数の代替実行例ではブロックで言及された機能が順序から外れて行われることも可能であることに注目しなければならない。例えば、連続して図示されている２つのブロックは、実質的に同時に行われることも可能で、またはそのブロックが時には該当機能により逆順に行われることも可能である。
【００４４】
図３は、本発明の一実施形態に係るログ情報管理システムの構成を示すブロック図である。
【００４５】
図３を参照すれば、ログ情報管理システム３００は、トランザクション管理モジュール３１０、復旧管理モジュール３２０、ログ管理モジュール３３０、インデックス／レコード／カタログ管理モジュール３４０、バッファ管理モジュール３５０、バッファモジュール３６０、格納管理モジュール３７０、ディスクモジュール３８０、およびアプリケーション３９０を含む。ここで、バッファモジュール３６０はデータバッファ３６２とログバッファ３６４を含み、格納管理モジュール３７０はページ使用管理モジュール３７２を含む。
【００４６】
この時、本実施形態で用いられる「モジュール」という用語は、ソフトウェアまたはＦＰＧＡまたはＡＳＩＣのようなハードウェア構成要素を意味し、モジュールはある役割を行う。ところが、モジュールは、ソフトウェアまたはハードウェアに限定される意味ではない。モジュールは、アドレッシングできる格納媒体にあるように構成することもでき、１つまたはそれ以上のプロセッサを再生させるように構成することもできる。したがって、一例としてモジュールはソフトウェア構成要素、オブジェクト指向ソフトウェア構成要素、クラス構成要素およびタスク構成要素のような構成要素と、プロセス、関数、属性、プロシージャ、サブルーチン、プログラムコードのセグメント、ドライバ、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、および変数を含む。構成要素とモジュールの中で提供されている機能は、さらに小さい数の構成要素およびモジュールに結合したり、追加的な構成要素とモジュールにさらに分離したりすることができる。それだけでなく、構成要素およびモジュールはデバイスまたは保安マルチメディアカード内の１つまたはそれ以上のＣＰＵを再生させるように具現されることもできる。
【００４７】
アプリケーション３９０は、クエリープロセッサまたはクエリーエンジンとして動作することができる。アプリケーション３９０は、トランザクション管理モジュール３１０にトランザクションの開始、取り消しまたは終了を知らせることができ、トランザクションの境界内、即ちトランザクションの開始とトランザクション終了／取り消しの間でインデックス／レコード／カタログ管理モジュール３４０を介してログ情報を読み込んだり変更したりすることができる。
【００４８】
トランザクション管理モジュール３１０は、トランザクションの開始、終了、取り消し時にログ管理モジュール３３０を用いてログ情報を残し、現在進行しているトランザクションの情報を維持保持する。
【００４９】
復旧管理モジュール３２０は、特定トランザクションの取り消し時にログ管理モジュール３３０を介してログ情報を確保した後、データに行なわれた変更を戻す役割を担当する。特に、復旧管理モジュール３２０は、ログ情報管理システム３００が非正常的に終了した時に未完了であったトランザクションの影響をデータベースから削除し、完了したトランザクションの修正事項をデータベースに反映して、データの一貫性を維持保持するようにする。
【００５０】
ログ管理モジュール３３０は、他のモジュールで発生させたデータベースに対する変更したログ情報を取り集めてバッファモジュール３６０に反映し、復旧管理モジュール３２０から要請されたログ情報をディスクモジュール３８０から読み込んで提供する。
【００５１】
インデックス／レコード／カタログ管理モジュール３４０は、ログ情報管理システム３００を構成する主要データのインデックス、レコード、カタログ情報を管理するモジュールであって、バッファ管理モジュール３５０に必要なデータ（インデックス、レコード、カタログ）をバッファモジュール３６０にロードさせて必要な値を読み込んだり変更したりするように要請する。ログ情報管理システム３００において、大部分のログ情報はインデックス／レコード／カタログ管理モジュール３４０によって発生する。
【００５２】
また、インデックス／レコード／カタログ管理モジュール３４０は、データ値に対する更新が発生する場合、ログ情報を残す前に更新が発生したページが新しく割り当てられたページであるかを確認する。データ値に対する更新が発生したページが該当トランザクション内で新しく割り当てられたページとして判定されれば、インデックス／レコード／カタログ管理モジュール３４０はデータ値が更新されたとしても、これに対するログ情報を残さない。
【００５３】
バッファ管理モジュール３５０は、バッファモジュール３６０を管理しながら、他のモジュールの要請によりディスクモジュール３８０に格納されたインデックス、レコードまたはカタログに対するログ情報を入れたページをバッファモジュール３６０のデータバッファ３６２にロードさせたり、データバッファ３６２にロードされたページをディスクモジュール３８０に格納したりする。ディスクモジュール３８０からデータページを読み込んだり記録したりする作業は、格納管理モジュール３７０によって行われる。
【００５４】
また、バッファ管理モジュール３５０は、ログ管理モジュール３３０の要請によってページＬＳＮ値としてＭＡＸ＿ＬＳＮ値を有するデータページのみをデータバッファ３６２から選択し、ディスクモジュール３８０にすべて記録する。ページＬＳＮは、各ページを識別する識別情報として理解され得る。
【００５５】
バッファモジュール３６０は、メモリの一部としてログ情報管理システム３００が確保して専用する空間である。バッファモジュール３６０は、ログ情報が格納されるログバッファ３６４とページが格納されるデータバッファ３６２とを含む。
【００５６】
格納管理モジュール３７０は、バッファ管理モジュール３５０の要請によってディスクモジュール３８０の特定ページを読み込み、バッファモジュール３６０にロードしたり、バッファモジュール３６０の特定ページをディスクモジュール３８０に記録したりする。また、格納管理モジュール３７０は新しいページが要請される時、該当時点で用いられていないディスクページをデータ格納用として割り当て、既存のディスクページをそれ以上データ格納用として用いない場合には、該当ディスクページを空のディスクページのうちの１つとして管理する。格納管理モジュール３７０は、ページ使用現況を管理する役割をするページ使用管理モジュール３７２を含む。
【００５７】
一方、格納管理モジュール３７０は、新しく割り当てられたページをバッファモジュール３６０のデータバッファ３６２に搬入する時、該当ページをフリーページリストから割り当てられた場合、ディスクモジュール３８０からページを読み込む代わりに、データバッファ３６２にある指定されたバッファページのページＬＳＮを変更する作業を行う。この時、フリーページとは、データが新しく割当可能なページを意味し、フリーページリストはこのようなフリーページを管理するデータ構造としてページ使用管理モジュール３７２によって管理される。
【００５８】
また、データバッファ３６２内の任意のページをディスクモジュール３８０に搬出する時には指定されたバッファページのページＬＳＮを任意の値に変更した後に記録する。このようなディスク入出力に関連した格納管理モジュール３７０の動作は、図７と図８で具体的に説明することにする。
【００５９】
格納管理モジュール３７０に含まれたページ使用管理モジュール３７２はフリーページリストと未完了ノンコミッテッドフリーページリストとを管理する。未完了フリーページリストは、まだ完了しない任意のトランザクション内で削除されたページの目録である。ディスクページに対する新規割当が要請されれば、ページ使用管理モジュール３７２は、先ずフリーページリストで使用可能なフリーページを探して割り当てる。フリーページリストに使用可能なフリーページがない時には、未完了フリーページリストからフリーページを探して割り当てるようになる。フリーページと未完了フリーページを更新する方法については、図９で具体的に説明することにする。
【００６０】
図４は、本発明の一実施形態に係る更新トランザクション過程を示すフローチャートである。
【００６１】
まず、アプリケーション３９０がトランザクションの開始をトランザクション管理モジュール３１０に要請すれば、トランザクション管理モジュール３１０は新しい１つのトランザクションを生成し、生成されたトランザクションに対する情報をトランザクションが終了するまで維持保持する（Ｓ４０５）。
【００６２】
そして、アプリケーション３９０がインデックス／レコード／カタログ管理モジュール３４０にデータ更新作業を要請すれば、インデックス／レコード／カタログ管理モジュール３４０は必要なページをバッファ管理モジュール３５０に要請して、バッファモジュール３６０のデータバッファ３６２内に確保した後に必要な更新作業を行うようになる（Ｓ４１０）。この時、更新が発生したページのうち新しく割り当てられるデータページについてはログ情報が発生しない。一方、データバッファ３６４にロードされるページは各ページ内部にページＬＳＮ値を保有するようになるが、本発明では新しく割り当てられるページについてはこのページＬＳＮ値を特定の値（例えば、ＭＡＸ＿ＬＳＮ値）に設定することによって不要なログ情報を生成しない。即ち、インデックス／レコード／カタログ管理モジュール３４０は、更新が発生したページのページＬＳＮ値がＭＡＸ＿ＬＳＮである場合、ログ情報を生成しない。この時、「ＭＡＸ＿ＬＳＮ」は該当ログ情報管理システムで生成可能な最も大きいＬＳＮ値を示す。
【００６３】
データ更新作業に対するより具体的な過程は、図５で説明することにする。
【００６４】
アプリケーション３９０は、データ更新作業がエラーなしに行われたと判断した場合、トランザクション管理モジュール３１０にトランザクションを終了するようにし、そうではない場合にはトランザクションを中断するように要請する（Ｓ４１５）。
【００６５】
アプリケーション３９０が更新を承認する場合（Ｓ４１５）、該当トランザクションによって削除され、未完了フリーページリストに入っていたページ情報をフリーページリストに反映する（Ｓ４２０）。本発明では従来の方式とは異なり、あるトランザクション内で削除されたページを直ちにフリーページリストに入れずに、別の未完了フリーページリストで管理する。
【００６６】
そして、データバッファ３６２に入っているデータページのうち、未だディスクモジュール３８０に記録されていない新規割当ページ（即ち、ページＬＳＮがＭＡＸ＿ＬＳＮであるページ）をディスクモジュール３８０に記録する（Ｓ４２５）。本発明では、新規割当ページに対してログ情報を残さない代わりに、トランザクションが完了する前にディスクモジュール３８０に新規割当ページを記録することによって、トランザクション完了後に発生し得る正常ではない終了においてもデータの一貫性が維持保持されるようになる。
【００６７】
一方、新規割当ページをディスクモジュール３８０にページＬＳＮ値がＭＡＸ＿ＬＳＮの状態で記録されるようになれば、他のトランザクション内で該当ページに対する更新を試みる時に、ページＬＳＮを新規に割り当てられたページとして誤認し得る。したがって、格納管理モジュール３７０はページＬＳＮがＭＡＸ＿ＬＳＮの新規割当ページをディスクモジュール３８０に記録する時には、ページＬＳＮを任意の他の値に変えた後に記録することが好ましい。
【００６８】
Ｓ４２５のステップが行われた後、トランザクション管理モジュール３１０はログ管理モジュール３３０に「Ｃｏｍｍｉｔ＿Ｌｏｇ」を生成するように指示する（Ｓ４３０）。そして、前記Ｃｏｍｍｉｔ＿ＬｏｇのＬＳＮ値より小さいか同じであるＬＳＮ値を有するすべてのログ情報がログバッファ３６４内にある場合、ログ管理モジュール３３０はバッファ管理モジュール３５０に前記ログ情報をディスクモジュール３８０のログファイルに記録するように要請する（Ｓ４３５）。
【００６９】
アプリケーション３９０がデータ更新を承認しない場合、即ち、トランザクションを中断すると決定した場合には、トランザクション管理モジュール３１０は復旧管理モジュール３２０にトランザクションの取り消しを要請する。復旧管理モジュール３２０は、該当トランザクション内で既に変更したデータ値を復旧するために、以前のデータ値を有するログ情報をログ管理モジュール３３０に要請する（Ｓ４４５）。前記要請は、バッファ管理モジュール３５０と格納管理モジュール３７０に順に伝えられて処理される。
【００７０】
そして、復旧管理モジュール３２０は、ログ管理モジュール３３０に要請したログ情報を参照し、変更が発生した部分を探して以前のデータ値に復元する（Ｓ４５０）。
【００７１】
トランザクションが終了するか取り消された後、トランザクション管理モジュール３１０は、該当トランザクションの情報をトランザクションテーブルから削除する（Ｓ４４０）。
【００７２】
図５は、本発明の一実施形態によりデータを更新する過程を具体的に示すフローチャートである。
【００７３】
まず、アプリケーション３９０は、インデックス／レコード／カタログ管理モジュール３４０にデータ更新を要請する（Ｓ５０５）。そして、インデックス／レコード／カタログ管理モジュール３４０は、前記要請された更新がディスクページを削除する更新であると判断した場合には（Ｓ５１０）、バッファ管理モジュール３５０が該当するディスクページがデータバッファ３６２に存在する場合に該当ページを削除し（Ｓ５１５）、格納管理モジュール３７０のページ使用管理モジュール３７２は、削除されたページ番号を未完了フリーページリストに挿入した後、このページを削除させたトランザクションが完了するか中断される前まで維持保持するようになる。このページを削除させたトランザクションが完了する場合、完了したトランザクションによって削除されたすべてのページは未完了フリーページリストから削除され、フリーページリストに挿入される。そして、トランザクションが中断される場合には、中断されたトランザクションによって削除されたすべてのページは未完了フリーページリストから削除され、フリーページリストには挿入されない。このような方法によって、要請されたディスクページが削除される（Ｓ５２０）。
【００７４】
格納管理モジュール３７０は、ページ変更に対するログ情報を生成してログ管理モジュール３３０に伝送するようになる。
【００７５】
一方、Ｓ５１０のステップで要請された更新がディスクページを削除する更新ではなく、新しいページまたは既存ページに対するデータ値の変更であるとインデックス／レコード／カタログ管理モジュール３４０によって判断された場合には（Ｓ５１０）、バッファ管理モジュール３５０は更新されるページがバッファモジュール３６０に既に存在するか否かを検査する（Ｓ５３０）。更新されるページがバッファモジュール３６０に既に存在する場合にはページを更新するが（Ｓ５６０）、そうではない場合にはバッファ管理モジュール３５０はバッファモジュール３６０に使用可能なバッファ空間があるか否かを検査する（Ｓ５３５）。
【００７６】
Ｓ５３５のステップで使用可能なバッファ空間がない場合、ディスクモジュール３８０に記録するページが選択され、選択されたページに対するページＬＳＮが処理されるが、このような動作を具体的に説明することにする（Ｓ５４０）。
【００７７】
まず、データバッファ３６２から選択された特定のページに対するページＬＳＮがＭＡＸ＿ＬＳＮである場合、これは選択されたページがフリーページリストにあってトランザクション内で新しく割り当てられたことを意味する。したがって、この場合、格納管理モジュール３７０は選択されたページをディスクモジュール３８０に記録する前に、先ずページＬＳＮ値を既に設定された任意のＬＳＮ値に変更する。この時、好ましくは変更されたＬＳＮ値は、システム内で発生した最も大きいＬＳＮ値である。データバッファ３６２から選択された特定のページに対するページＬＳＮがＭＡＸ＿ＬＳＮでない場合に、格納管理モジュール３７０は選択されたページのページＬＳＮを変更させずにディスクモジュール３８０に記録する。
【００７８】
上記のような方法によって、バッファモジュール３６０に使用可能なバッファ空間が備えられれば、バッファ管理モジュール３５０は要請されたページが新しく割り当てられなければならないページであるかを検査する（Ｓ５４５）。
【００７９】
要請されたページが新しく割り当てられなければならないページでない場合には、格納管理モジュール３７２は要請されたディスクページをバッファ管理モジュール３５０が指定したデータバッファ３６２にコピーし（Ｓ５５５）、インデックス／レコード／カタログ管理モジュール３４０は該当ページに対するデータ値の変更を行う（Ｓ５６０）。
【００８０】
Ｓ５４５のステップで要請されたページが新しく割り当てられなければならないページである場合には、新しく割り当てられるページに対する処理動作が行われるが（Ｓ５５０）、以下にて具体的に説明することにする。
【００８１】
まず、ページ使用管理モジュール３７２は、フリーページリスト内に利用可能なフリーページがある場合にはフリーページリスト内で新規ページを割り当て、そうではない場合には未完了フリーページリストからページを割り当てる。
【００８２】
この時、新しく割り当てられたページがフリーページリストに割り当てられた場合、該当ディスクページがデータバッファ３６２にロードされ、再びディスクモジュール３８０に記録される前までは該当ページに対するすべてのデータ値変更についてはログ情報を発生させない。そして、格納管理モジュール３７０は、ディスクモジュール３８０で該当ディスクページを読み込まず、バッファ管理モジュール３５０は指定されたバッファページに対するページＬＳＮ値をこのページがフリーページリストで新規割り当てられたページであることを意味するＭＡＸ＿ＬＳＮ値として設定する。
【００８３】
フリーページリスト内にフリーページが１つもなく、新規割り当てられたページが未完了フリーページリストから割り当てられた場合には、ディスクモジュール３８０から該当ページを指定されたバッファ空間に読み込む。
【００８４】
Ｓ５６０のステップでページが更新されれば、更新されたページに対するログ情報が処理される（Ｓ５６５）。
【００８５】
従来技術ではあるページに対するデータ値が更新される毎に必ずログ情報が生成されたが、本発明ではインデックス／レコード／カタログ管理モジュール３４０がＳ５６０のステップでデータ値を更新した後、該当ページに対するログ情報生成が必要であるか否かを判断する。より具体的にインデックス／レコード／カタログ管理モジュール３４０は、バッファモジュール３６０に存在する該当ページのページＬＳＮ値がＭＡＸ＿ＬＳＮである場合には、ログ情報を生成しなくなる。
【００８６】
図６は、本発明の一実施形態によりディスクページを新しく割り当てる過程を示すフローチャートである。
【００８７】
図６を参照すれば、ページ使用管理モジュール３７２は、フリーページリストが空いているか否かを検査し（Ｓ６１０）、空いている場合には、未完了フリーページリストから一番目のページを選択して割り当てる（Ｓ６２０）。空いていない場合には、フリーページリストから一番目のページを選択して割り当てる（Ｓ６３０）。
【００８８】
図７は、本発明の一実施形態により新しく割り当てられたディスクページをバッファに搬入する過程を示すフローチャートである。
【００８９】
格納管理モジュール３７０は、要請を受けたページが新しく割り当てられるページであるかを検査し（Ｓ７１０）、新しく割り当てられるページである場合には、格納管理モジュール３７０は新しく割り当てられたページがフリーページリストに割り当てられたものか検査し（Ｓ７２０）、フリーページリストに割り当てられたページである場合には、データバッファ３６２の該当空間（即ち、ディスクページをロードするバッファモジュール３６０内のバッファページ）のページＬＳＮをＭＡＸ＿ＬＳＮに設定することによって（Ｓ７３０）、新しく割り当てられるディスクページをバッファモジュール３６０に搬入する過程が終了する。
【００９０】
しかし、Ｓ７１０のステップで新しく割り当てられるページではないか、Ｓ７２０のステップで新しく割り当てられたページがフリーページリストに割り当てられたものでない場合（例えば、新しく割り当てられたページが未完了フリーページリストで割り当てられた新規ページの場合）には、格納管理モジュール３７０は該当ディスクページをディスクモジュール３８０から読み込んだ後、バッファモジュール３６０のデータバッファ３６２にロードする。
【００９１】
図７のような動作を行うために、格納管理モジュール３７０はバッファモジュール３６０を管理するバッファ管理モジュール３５０と通信を行うようになる。
【００９２】
図８は、本発明の一実施形態によりバッファ内のページをディスクに搬出する過程を示すフローチャートである。
【００９３】
図８を参照すれば、格納管理モジュール３７０は、ディスクモジュール３８０に記録するページのページＬＳＮがＭＡＸ＿ＬＳＮであるかを検査する（Ｓ８１０）。この時、ＭＡＸ＿ＬＳＮの場合には、ページＬＳＮを既に設定されたＬＳＮに変更し（Ｓ８２０）、バッファモジュール３６０のデータバッファ３６２内で要請されたバッファページをディスクモジュール３８０に記録する（Ｓ８３０）。Ｓ８１０のステップでＭＡＸ＿ＬＳＮでない場合には、バッファモジュール３６０のデータバッファ３６２内で要請されたバッファページをディスクモジュール３８０に記録する（Ｓ８３０）。
【００９４】
図８のような動作を行うために、格納管理モジュール３７０はバッファモジュール３６０を管理するバッファ管理モジュール３５０と通信を行うようになる。
【００９５】
図９は、本発明の一実施形態によりフリーページリストと未完了フリーページリストとの更新過程を示す例示図であって、このような更新過程は格納管理モジュール３７０のページ使用管理モジュール３７２によって行われる。
【００９６】
まず最初に、フリーページリストに５個のフリーページがあり、未完了フリーページリストは空いていることを示している（Ｓ９１０）。未完了フリーページリストが空いているとは、現在完了していないトランザクションから削除したディスクページが無いことを意味する。
【００９７】
ページ＃１とページ＃３とが削除されれば、ページ＃１とページ＃３とは未完了フリーページリストに入り、フリーページリストには変化がない（Ｓ９２０）。
【００９８】
次に、５個のディスクページが割り当てられれば、先ずフリーページリストにあるページから割り当てられるため、フリーページリストは空くようになり、未完了フリーページリストには変化がない（Ｓ９３０）。
【００９９】
次に、１個のページがさらに割り当てられれば、今は未完了フリーページリストからページ＃３を割り当てる。その結果、未完了フリーページリストにはページ＃１だけがフリーページとして残る（Ｓ９４０）。
【０１００】
最後に、ページ＃１とページ＃３とを削除したトランザクションが完了した後には、未完了フリーページリストのフリーページがフリーページリストに併合される。その結果、フリーページリストは、未完了フリーページリストにあったページ＃１を有するようになり、未完了フリーページリストは空いているようになる（Ｓ９５０）。
【０１０１】
図１０は、本発明の一実施形態に係る実験結果を示すグラフであって、３０００個のレコードを新しく挿入した時の処理速度を比較している。
【０１０２】
この時、１つのレコードは、１１個のフィールドから構成され、１１個のフィールドのうち９個のフィールドをインデックスとし、１つのレコードの大きさは２１０バイトとした。
【０１０３】
図１０を参照すれば、従来技術に係わる場合には、３０００個のレコードを新しく挿入する場合に約２５秒を必要としたが、本発明に係わる場合には約１０秒を必要とし、挿入性能が約２．５倍向上したことが分かる。また、本発明によりログ情報の量が減少したので復旧時所要時間も約１／５０で減少した。
【０１０４】
以上、添付した図面を参照して本発明の実施形態を説明したが、本発明が属する技術分野で通常の知識を有する者であれば、本発明がその技術的思想や必須の特徴を変更せず、他の具体的な形態によって実施することができるということを理解できる。したがって、以上で記述した実施形態はすべての面で例示的なものであり、限定的なものではないことを理解しなければならない。
【図面の簡単な説明】
【０１０５】
【図１】従来技術に係るログ情報管理システムの構成を示すブロック図である。
【図２】従来技術に係る一般的なログレコードの構造を示す例示図である。
【図３】本発明の一実施形態に係るログ情報管理システムの構成を示すブロック図である。
【図４】本発明の一実施形態に係る更新トランザクション過程を示すフローチャートである。
【図５】本発明の一実施形態によりデータを更新する過程を具体的に示すフローチャートである。
【図６】本発明の一実施形態によりディスクページを新しく割り当てる過程を示すフローチャートである。
【図７】本発明の一実施形態により新しく割り当てられたディスクページをバッファに搬入する過程を示すフローチャートである。
【図８】本発明の一実施形態によりバッファ内のページをディスクに搬出する過程を示すフローチャートである。
【図９】本発明の一実施形態によりフリーページリストと未完了フリーページリストとの更新過程を示す例示図である。
【図１０】本発明の一実施形態に係る実験結果を示すグラフである。
【符号の説明】
【０１０６】
３００      ログ情報管理システム
３１０      トランザクション管理モジュール
３２０      復旧管理モジュール
３３０      ログ管理モジュール
３４０      インデックス／レコード／カタログ管理モジュール
３５０      バッファ管理モジュール
３７０      格納管理モジュール
３９０      アプリケーション
【図１】
2007188497.tif 000003
【図２】
2007188497.tif 000004
【図３】
2007188497.tif 000005
【図４】
2007188497.tif 000006
【図５】
2007188497.tif 000007
【図６】
2007188497.tif 000008
【図７】
2007188497.tif 000009
【図８】
2007188497.tif 000010
【図９】
2007188497.tif 000011
【図１０】
2007188497.tif 000012