(57)【要約】【課題】  データベースのレコードの追加、削除、更新におけるレコード格納方法に係り、ディスクの利用効率やアクセス効率を最適化することを課題とする。【解決手段】  最適化処理実行部４は、最適化の際に、最適化管理テーブル５から最適化の条件を読み出し、その条件に従って、更新領域のレコードを抽出し、抽出したレコードを参照領域に書き込み、抽出したレコードを更新領域から削除し、残りのレコードを再配置する。最適化管理テーブル５は、最適化の条件として、レコード蓄積量、最適化周期、非更新期間、更新可否を設定可能であり、これらを選択的に組み合わせて、データベースを運用する。【選択図】        図１
2006004304.tif 000002
【特許請求の範囲】
【請求項１】
データベースとしてデータを管理するデータ管理装置であって、以下の要素を有することを特徴とするデータ管理装置
（１）データベースで管理しているレコードを格納する参照領域
（２）更新によりデータベースに追加されるレコードを格納する更新領域
（３）最適化の条件を記憶する最適化管理テーブル
（４）更新領域のレコードを参照領域のレコードに移す最適化処理として、最適化管理テーブルから最適化の条件を読み出し、当該最適化の条件に従って、更新領域のレコードを抽出し、抽出したレコードを参照領域に書き込み、抽出したレコードを更新領域から削除する最適化処理実行部。
【請求項２】
最適化管理テーブルは、最適化の条件として、非更新期間を記憶し、
最適化処理実行部は、各レコードが更新領域に格納された日付を参照し、当該日付から非更新期間が経過したレコードを抽出することを特徴とする請求項１記載のデータ管理装置。
【請求項３】
最適化処理実行部は、最適化管理テーブルの最適化の条件として、更新可否が設定されている場合に、各レコードについて更新及び削除が許可されているか否かを示す更新可否を参照し、更新及び削除が許可されていないレコードを抽出することを特徴とする請求項１記載のデータ管理装置。
【請求項４】
最適化管理テーブルは、最適化の条件として、レコード蓄積量を記憶し、
データ管理装置は、更に、更新領域に蓄積されたデータ量を監視する蓄積量監視部を有し、
最適化処理実行部は、更新領域に蓄積されたデータ量が、最適化管理テーブルに設定されているデータ蓄積量に達した時に最適化処理を実行することを特徴とする請求項１記載のデータ管理装置。
【請求項５】
最適化管理テーブルは、最適化の条件として、最適化周期を記憶し、
データ管理装置は、更に、前回最適化処理が行われてから経過した時間を監視するタイマーを有し、
最適化処理実行部は、前回最適化処理が行われてから、最適化管理テーブルに設定された最適化周期の時間が経過した時に、最適化処理を実行することを特徴とする請求項１記載のデータ管理装置。
【請求項６】
データ管理装置は、更に、各レコードが論理的に削除されているか否かを示す削除フラグを記憶する実体管理テーブルを有し、
最適化処理実行部は、抽出した更新領域の前記レコードが論理的に削除されている場合に、最適化対象から外し、参照領域へ追加せずに更新領域から物理的に削除することを特徴とする請求項１記載のデータ管理装置。
【請求項７】
最適化処理実行部は、最適化の際に、複数のレコードを圧縮し、圧縮されたデータを参照領域へ追加することを特徴とする請求項１記載のデータ管理装置。
【請求項８】
データベースで管理しているレコードを格納する参照領域と、更新によりデータベースに追加されるレコードを格納する更新領域と、最適化の条件を設定する最適化管理テーブルとを有するデータ管理装置によるデータ管理方法であって、以下の要素を有することを特徴とするデータ管理方法
（１）最適化管理テーブルから最適化の条件を読み出し、当該最適化の条件に従って、更新領域のレコードを抽出する最適化対象レコード選択工程
（２）抽出したレコードを参照領域に書き込む参照領域の再配置工程
（３）抽出したレコードを更新領域から削除し、残りのレコードを再配置する更新領域の再配置工程。
【請求項９】
データベースで管理しているレコードを格納する参照領域と、更新によりデータベースに追加されるレコードを格納する更新領域と、最適化の条件を設定する最適化管理テーブルとを有するデータ管理装置となるコンピュータに、以下の手順を実行させるためのプログラム
（１）最適化管理テーブルから最適化の条件を読み出し、当該最適化の条件に従って、更新領域のレコードを抽出する最適化対象レコード選択手順
（２）抽出したレコードを参照領域に書き込む参照領域の再配置手順
（３）抽出したレコードを更新領域から削除し、残りのレコードを再配置する更新領域の再配置手順。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースのレコードの追加、削除、更新におけるレコード格納方法に係り、ディスクの利用効率やアクセス効率を最適化するデータベースに関する。
【背景技術】
【０００２】
データベースにおいてレコードの削除や更新が頻繁に行われた場合、ディスクの利用効率やデータベースへのアクセス効率が低下するため、データベースの最適化処理（レコードの再配置処理や再編成処理）を行い、ディスクの利用効率やデータベースへのアクセス効率の改善を行う必要がある。しかし、データベースの最適化処理の実行時は基本的にデータベースへのアクセスが行えないため、処理に時間がかかる場合にデータベースへのアクセスが長時間行えなくなってしまう課題があった。
【０００３】
データベースの最適化処理を高速に行う技術としては特許文献１があげられる。また、レコードの再配置方式としては特許文献２があげられる。
【０００４】
特許文献１はデータベースの格納領域を分割管理し、レコードの更新が行われた領域だけを対象に再編成処理を行うことによって、最適化対象となる格納領域を絞りこみ、最適化処理を高速化する手法であるが、レコードの更新が分割管理した領域に点在した場合、結局は全ての領域に対して最適化処理を行わなければ成らず、最適化処理にかかる時間を短縮することはできない。
【０００５】
特許文献２は、データベース内でレコードの配置を変更することでレコードへの効率的なアクセスを実現するものであるが、ディスクの利用効率の改善を考慮した方式ではない。
【０００６】
これらの方式の課題は、最適化対象のレコードがデータベース内に点在してしまうことや、最適化処理が必要となる状況、つまりレコードの更新や削除が頻発する状況を抑える管理方法を用いないことにある。
【特許文献１】特開平５−３１３９６１号公報
【特許文献２】特開平１０−３３３９４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、上記した従来技術の欠点を除くためになされたものであって、その目的とするところは、特定の領域に格納されたレコードを最適化の対象とするデータ管理方法と、特定の領域から最適化の対象となるレコードを選択的に抽出するデータ選択手段を用いることで、レコードの更新や削除が行われた場合も、ディスクの利用効率やデータベースへのアクセス効率が低下することを抑えるデータ管理方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明に係るデータ管理装置は、
データベースとしてデータを管理するデータ管理装置であって、以下の要素を有することを特徴とする
（１）データベースで管理しているレコードを格納する参照領域
（２）更新によりデータベースに追加されるレコードを格納する更新領域
（３）最適化の条件を記憶する最適化管理テーブル
（４）更新領域のレコードを参照領域のレコードに移す最適化処理として、最適化管理テーブルから最適化の条件を読み出し、当該最適化の条件に従って、更新領域のレコードを抽出し、抽出したレコードを参照領域に書き込み、抽出したレコードを更新領域から削除する最適化処理実行部。
【発明の効果】
【０００９】
本発明においては、最適化処理時に更新領域内に配置されたレコードの中から更新、削除処理が発生する可能性が低いレコードを選択的に抽出することができ、参照領域へ追加したレコードの更新、削除処理の発生が低下し、ディスクの利用効率やデータベースのアクセス効率の低下を抑えることができる。
【発明を実施するための最良の形態】
【００１０】
実施の形態１．
以下本発明を図面に示す実施例に基づいて説明する。図１は本発明で用いるデータ管理装置１の構成図である。アプリケーションプログラム１４はデータ管理装置１を使用する上位プログラムである。データ管理部２はアプリケーションプログラム１４の要求を受け、データの登録処理、更新処理、削除処理を行う。データアクセス部８はデータ管理装置１が保持する情報であるデータ格納領域９、実体管理テーブル１３へのアクセスを行う。データ格納領域９は参照領域１０、更新領域１１、およびレコードアクセス情報１２から構成され、アプリケーションプログラム１４により登録されたデータを管理する。実体管理テーブル１３は登録されたデータが論理的に存在するか否かの管理を行う。
【００１１】
最適化処理部３は最適化処理実行部４、最適化管理テーブル５、タイマー６、および蓄積量監視部７から構成され、データ格納領域９の最適化処理を行う。最適化処理実行部４は最適化処理実行時に、最適化対象のレコードの選択、参照領域１０、更新領域１１のレコードの再配置、実体管理テーブル１３の更新を行う。また、タイマー６を用いることで定期的に最適化処理を実行することや、蓄積量監視部７を用いることでデータ格納領域９の更新領域１１のレコード蓄積量に応じて最適化処理を実行することができる。最適化管理テーブル５には、最適化処理時に最適化の対象とするレコードを抽出する条件が設定される。
【００１２】
次に、データ管理装置１のデータの管理方法について説明する。図２はデータ格納領域９のデータの格納形式を示した図である。データ格納領域９は参照領域１０と更新領域１１とレコードアクセス情報１２で構成される。参照領域１０と更新領域１１はそれぞれを１つのファイルとして管理してもよいし、それぞれを物理的に連続した領域として確保してもよい。
【００１３】
参照領域１０および更新領域１１の１つのレコードはアプリケーションプログラム１４によって登録された１つのデータに対応する。参照領域１０および更新領域１１に格納された各レコードはデータ格納領域９において一意のレコード番号を持つ。図２において、レコード１はレコード番号が１のレコード、レコード２はレコード番号が２のレコード、…、レコードＮはレコード番号がＮのレコードとなる。参照領域１０と更新領域１１において、レコードは各領域の先頭から連続して配置される。レコードは各レコードのサイズが同一の固定長レコードでも、各レコードのサイズが異なる可変長レコードでも構わない。
【００１４】
更新領域１１はアプリケーションプログラム１４の登録処理、更新処理時にレコードの追加が行われる領域である。参照領域１０は最適化処理実行部４の最適化処理によって、更新領域１１のレコードが追加される領域である。レコードアクセス情報１２は、参照領域１０、更新領域１１に格納されたレコードにアクセスを行うための情報を格納する。レコード番号１５とアクセス情報１６で構成される。アクセス情報１６は、各レコードにアクセスできればどのような情報でも構わないが、例えば、参照領域１０、更新領域１１の先頭を起点としたオフセットとレコードのサイズなどとすればよい。また、レコードが固定長レコードの場合など、計算により各レコードへのアクセス情報１６を求めることが可能である場合は、レコードアクセス情報１２はなくてもよい。
【００１５】
図３は実体管理テーブル１３のデータの格納形式を示した図である。実体管理テーブル１３はデータ格納領域９に格納された全レコード数の情報である総レコード数１４、参照領域１０に格納された全レコード数の情報である参照領域レコード数１５、および参照領域１０と更新領域１１に格納された各レコードに対応する、レコード番号１６、論理ＩＤ１７、削除フラグ１８、作成日付１９、および更新可否２０の情報を管理する。
【００１６】
論理ＩＤ１７はアプリケーションプログラム１４が付与する情報であり、アプリケーションプログラム１４は論理ＩＤ１７を基に参照領域１０または更新領域１１に格納されたレコードを一意に特定することが可能である。削除フラグ１８はデータ格納領域９において、レコードが論理的に削除されているか否かを示す情報である。データ格納領域９でレコードが論理的に削除されている場合、該当レコードの削除フラグ１８には１が付与される。削除フラグ１８が１であるレコードはアプリケーションプログラム１４に対しては削除されたレコードとして扱われる。実体管理テーブル１３はレコードの論理的な矛盾が生じないように管理を行う。つまり、実体管理テーブル１３で同一の論理ＩＤ１７を持つレコードは複数存在しても良いが、その中で削除フラグ１８が０であるレコードは０個もしくは１個しか存在しない。
【００１７】
作成日付１９はレコードが更新領域１１に追加された日付を記録する。更新可否２０は、レコードに対する更新や削除を許可する場合は１、許可しない場合は０を記録する。各レコードの更新可否２０はアプリケーションプログラム１４が、任意のタイミングで変更することが可能である。
【００１８】
次に、データ管理装置１のデータ登録処理について説明する。図４はデータ管理装置１のデータ登録処理を示すフローチャートである。図５は、データ登録処理に係るデータフローを示す図である。まず、ステップＳ１１において、データ管理部２がアプリケーションプログラム１４の登録要求を受ける。アプリケーションプログラム１４は、登録を行うデータ、データに対応する論理ＩＤ、およびデータの更新可否を指定してデータ管理部２へ登録要求を行う。更新可否は、登録を行うデータに対して更新や削除を許可する場合は１、許可しない場合は０を指定する。
【００１９】
データ管理部２は登録要求を受けると、ステップＳ１２において、ステップＳ１１で受け取ったデータをデータ格納領域９が管理するレコードの形式へ変換し、ステップＳ１３において、ステップＳ１２で作成したレコード、ステップＳ１１で受け取った論理ＩＤ、およびステップＳ１１で受け取った更新可否を指定してデータアクセス部８へレコードの追加要求を行う。
【００２０】
データアクセス部８はレコードの追加要求を受けると、ステップＳ１４において、ステップＳ１３で指定された論理ＩＤの重複チェックを行う。重複チェックは、実体管理テーブル１３を参照して、ステップＳ１３で指定された論理ＩＤと同一の論理ＩＤ１７を持ち、削除フラグ１８が０であるレコードが存在する場合にエラーとする。データアクセス部８は、重複チェックでエラーが発生するとステップＳ１４：ＹＥＳに進み、ステップＳ１５において、ステップＳ１３で指定された論理ＩＤを持つレコードが既に登録されていることをデータ管理部２へ伝える。データアクセス部８は、重複チェックでエラーが発生しなかった場合、ステップＳ１４：ＮＯに進み、ステップＳ１６において、実体管理テーブル１３の総レコード数１４の値Ｎを参照し、更新領域１１のレコードＮの後にステップＳ１３で指定されたレコードをレコードＮ＋１として追加する。この時に、データ格納領域９がレコードアクセス情報１２を持つ場合、レコード番号１５がＮ＋１のアクセス情報１６を追加する。ステップＳ１６の処理完了後、データアクセス部８はステップＳ１７において、実体管理テーブル１３へレコードＮ＋１の情報を追加する。この時、レコード番号１６はＮ＋１、論理ＩＤ１７はステップＳ１３で指定された論理ＩＤ、削除フラグ１８は０、作成日付１９は現在の日付、更新可否２０はステップＳ１３で指定された更新可否の値を設定する。また、実体管理テーブル１３の総レコード数１４の値をＮ＋１に更新する。
【００２１】
次に、データ管理装置１のデータ削除処理について説明する。図６はデータ管理装置１のデータ削除処理を示すフローチャートである。図７は、データ削除処理に係るデータフローを示す図である。まず、ステップＳ２１において、データ管理部２３がアプリケーションプログラム１４の削除要求を受ける。この時に、アプリケーションプログラム１４は削除を行うデータの論理ＩＤを指定する。
【００２２】
データ管理部２は削除要求を受けると、ステップＳ２２において、ステップＳ２１で受け取った論理ＩＤを指定してデータアクセス部８へレコードの削除要求を行う。
【００２３】
データアクセス部８はレコードの削除要求を受けると、ステップＳ２３において、ステップＳ２２で指定された論理ＩＤの存在チェックを行う。存在チェックでは実体管理テーブル１３を参照し、ステップＳ２２で指定された論理ＩＤと同一の論理ＩＤ１７を持ち、削除フラグ１８が０であるレコードが存在しない場合にエラーとする。存在チェックでエラーが発生すると、データアクセス部８はステップＳ２３：ＮＯに進み、ステップＳ２６において、データ管理部２へステップＳ２２で指定された論理ＩＤを持つレコードが存在しないことを伝える。存在チェックでエラーが発生しなかった場合、データアクセス部８はステップＳ２３：ＹＥＳに進み、ステップＳ２４において更新許可チェックを行う。更新許可チェックでは、ステップＳ２３で見つかったレコードの更新可否２０を参照し、値が０であればエラーとする。更新許可チェックでエラーが発生した場合、データアクセス部８はステップＳ２４：ＮＯに進み、ステップＳ２６において、ステップＳ２２で指定された論理ＩＤを持つレコードは更新、削除が許可されていないことをデータ管理部２へ伝える。更新許可チェックでエラーが発生しなかった場合、データアクセス部８はステップＳ２４：ＹＥＳに進み、ステップＳ２５において、ステップＳ２３で見つかったレコードの削除フラグ１８の値を１に変更する。
【００２４】
次に、データ管理装置１のデータ更新処理について説明する。図８はデータ管理装置１のデータ更新処理を示すフローチャートである。図９は、データ更新処理に係るデータフローを示す図である。まず、ステップＳ３１において、データ管理部２がアプリケーションプログラム１４の更新要求を受ける。アプリケーションプログラム１４は、更新を行うデータの論理ＩＤ、更新データ、およびデータの更新可否を指定してデータ管理部２へ更新要求を行う。
【００２５】
データ管理部２は更新要求を受けると、ステップＳ３２において、ステップＳ３１で受け取った更新データをデータ格納領域９が管理するレコードの形式へ変換し、ステップＳ３３において、ステップＳ３２で作成したレコード、ステップＳ３１で受け取った論理ＩＤ、ステップＳ３１で受け取った更新可否を指定してデータアクセス部８へレコードの更新要求を行う。
【００２６】
データアクセス部８はレコードの更新要求を受けると、ステップＳ３４において、ステップＳ３３で指定された論理ＩＤの存在チェックを行う。存在チェックの方法はデータ削除時と同様であるので説明を省略する。存在チェックでエラーが発生した場合、データアクセス部８はステップＳ３４：ＮＯに進み、ステップＳ３９においてステップＳ３３で指定された論理ＩＤを持つレコードが存在しないことをデータ管理部２へ伝える。存在チェックでエラーが発生しなかった場合、データアクセス部８はステップＳ３４：ＹＥＳに進み、更新許可チェックを行う。更新許可チェックの方法はデータ削除時と同様であるので説明を省略する。更新許可チェックでエラーが発生した場合、データアクセス部８はステップＳ３５：ＮＯに進み、ステップＳ３９においてデータ管理部２へステップＳ３３で指定された論理ＩＤを持つレコードは更新、削除が許可されていないことを伝える。更新許可チェックでエラーが発生しなかった場合、データアクセス部８はステップＳ３５：ＹＥＳに進み、ステップＳ３６において、ステップＳ３４でみつかったレコードの削除フラグ１８を１に変更し、ステップＳ３７の処理を行う。ステップＳ３７において、データアクセス部８は実体管理テーブル１３の総レコード数１４の値Ｎを参照する。データアクセス部８は更新領域１１のレコードＮの後にステップＳ３３で指定されたレコードをレコードＮ＋１として追加する。このとき、データ格納領域９がレコードアクセス情報１２を持つ場合、レコード番号１５がＮ＋１のアクセス情報１６を追加する。ステップＳ３７の処理完了後、データアクセス部８はステップＳ３８において、実体管理テーブル１３へレコードＮ＋１の情報を追加する。この時、レコード番号１６はＮ＋１、論理ＩＤ１７はステップＳ３３で指定された論理ＩＤ、削除フラグ１８は０、作成日付１９は現在の日付、更新可否２０はステップＳ３３で指定された更新可否を設定する。また、実体管理テーブル１３の総レコード数１４の情報をＮ＋１に更新する。
【００２７】
次に、データ管理装置１の最適化処理について説明する。最適化処理では、最適化処理部３が最適化管理テーブル５に設定された条件に従い、更新領域１１のレコードを選択的に抽出して参照領域１０へ追加する処理を行う。まず、最適化管理テーブル５について説明する。図１０は最適化管理テーブル５を示す図である。最適化管理テーブル５では最適化条件５１として、レコード蓄積量５４、最適化周期５５、非更新期間５６、更新可否５７の設定を行うことができる。
【００２８】
レコード蓄積量５４は、更新領域１１に一定数のレコードが蓄積された時に最適化処理を行う場合に設定する。図１０ではレコード蓄積量５４の設定値５２が１０００に設定されているため、更新領域１１に１０００レコードが蓄積された時に最適化処理が実行される。
【００２９】
最適化周期５５は、一定期間経過ごとに最適化処理を行う場合に設定する。図１０では最適化周期５５の設定値５２が３０日に設定されているため、３０日ごとに最適化処理が実行される。
【００３０】
非更新期間５６は、一定期間更新処理が行われなかったレコードを最適化処理の対象とする場合に設定する。図１０では非更新期間５６の設定値５２が６０日に設定されているため、６０日間更新処理が行われなかったレコードを対象に最適化処理が実行される。
【００３１】
更新可否５７は、最適化処理時に実体管理テーブル１３の更新可否２０を参照し、更新可否の値が０であるレコードを対象に最適化処理を実行する場合に設定する。
【００３２】
最適化管理テーブル５において、レコード蓄積量５４、最適化周期５５、非更新期間５６、更新可否５７の最適化条件を有効にする場合は設定５３の値を１に、無効にする場合は０に設定する。最適化管理テーブル５の設定値５２、および設定５３はアプリケーションプログラム１４が、任意のタイミングで変更することができる。
【００３３】
ここで、最適化処理が実行されるタイミングについて説明する。最適化処理はアプリケーションプログラム１４、タイマー６、蓄積量監視部７のいずれかが、最適化処理実行部４に最適化処理要求を発行することで実行される。アプリケーションプログラム１４は任意のタイミングで最適化処理実行部４へ最適化処理要求を行うことができる。タイマー６は最適化条件５１の最適化周期５５の設定５３が１の場合に、前回最適化処理を行った時、もしくは最適化周期５５の設定値５２が変更された時からの経過時間を測定し、最適化周期５５の設定値５２に指定された時間が経過すると、最適化処理実行部４へ最適化処理要求を行う。蓄積量監視部７は最適化条件５１のレコード蓄積量５４の設定５３が１の場合に、更新領域１１のレコード数を監視し、レコード蓄積量５４の設定値５２に指定されたレコード数に達した場合に、最適化処理実行部４へ最適化処理要求を行う。
【００３４】
次に、最適化処理の手順について説明する。図１１は最適化処理の手順を示すフローチャートである。図１２は、最適化処理に係るデータフローを示す図である。ステップＳ５１において、最適化処理実行部４が最適化要求を受けると、ステップＳ５２において、最適化処理実行部４が実体管理テーブル１３、レコードアクセス情報１２の更新領域に関する情報、およびデータ格納領域９の更新領域１１を退避し、ステップＳ５３において最適化対象とするレコードの選択を行う。
【００３５】
ここで、最適化対象レコード選択の処理について詳細に説明する。図１３は最適化対象レコード選択処理を示すフローチャートであり、図１４は最適化対象レコード選択処理の説明図である。図１４において、更新領域６０にはレコード１００１からレコード１０１１が格納されており、最適化管理テーブル６１、および実体管理テーブル６２は図の通りの値に設定されている。以後、説明のため、最適化対象とするレコードの集合を集合Ｌ、最適化対象外とするレコードの集合を集合Ｋとする。
【００３６】
まず、ステップＳ６１において、最適化処理実行部４は最適化管理テーブル５を参照し、レコード蓄積量５４の設定５３が１である場合は、ステップＳ６１：ＹＥＳに進みステップＳ６２の処理を実行する。レコード蓄積量５４の設定５３が０である場合は、集合Ｌを更新領域１１の全レコードとし、ステップＳ６１：ＮＯに進みステップＳ６３の処理を実行する。図１４では最適化管理テーブル６１のレコード蓄積量の設定が１であるため、ステップＳ６２の処理を実行する。最適化処理実行部４は、ステップＳ６２において、実体管理テーブル１３の参照領域レコード数１５の値が最適化管理テーブル５のレコード蓄積量５４の設定値５２以上である場合は、集合Ｌを更新領域１１の全レコードとするが、そうでない場合は集合Ｋを更新領域１１の全レコードとする。図１４では、実体管理テーブル６２の参照領域レコード数が１１であり、最適化管理テーブル６１のレコード蓄積量の設定値が１０であるため、集合Ｌを更新領域６０の全レコードとし、集合Ｌと集合Ｋは状態Ａ６３となる。
【００３７】
次に、ステップＳ６３において、最適化処理実行部４は最適化管理テーブル５を参照し、非更新期間５６の設定５３が１である場合は、ステップＳ６３：ＹＥＳに進みステップＳ６４の処理を実行する。非更新期間５６の設定５３が０である場合は、ステップＳ６３：ＮＯに進みステップＳ６５の処理を実行する。図１４では最適化管理テーブル６１の非更新期間の設定が１であるため、ステップＳ６４の処理を実行する。最適化処理実行部４はステップＳ６４において、集合Ｌに属するレコードの内、実体管理テーブル１３の作成日付１９と現在の日付の差が、最適化管理テーブル５の非更新期間５６の設定値５２以下であるレコードを集合Ｋに移す。図１４では、状態Ａ６３の集合Ｌの内、実体管理テーブル６２の作成日付から３０日以上が経過していないレコードが集合Ｋに移される。例えば、現在の日付が”２００４／２／１０”である場合、状態Ａ６３の集合Ｌの内、レコード１００６からレコード１０１１が作成日付から３０日以上が経過していないため、集合Ｋに移され、状態Ｂ６４となる。
【００３８】
更に、ステップＳ６５において、最適化処理実行部４は最適化管理テーブル５を参照し、更新可否５７の設定５３が１である場合は、ステップＳ６５：ＹＥＳに進みステップＳ６６の処理を実行する。更新可否５７の設定５３が０である場合は、ステップＳ６５：ＮＯに進みステップＳ６７の処理を実行する。図１４では、最適化管理テーブル６１の更新可否の設定が１であるため、ステップＳ６６の処理を実行する。最適化処理実行部４はステップＳ６６において、集合Ｌに属するレコードの内、実体管理テーブル１３の更新可否２０が１であるレコードを集合Ｋに移動する。図１４では、状態Ｂ６４の集合Ｌの内、最適化管理テーブル６１の更新可否が１であるレコード１００２とレコード１００５が集合Ｋに移され、状態Ｃ６５となる。
【００３９】
最後に、ステップＳ６７において、最適化処理実行部４は集合Ｌに属するレコードの内、実体管理テーブル１３の削除フラグ１８が１であるレコードを集合Ｋに移動する。図１４では、状態Ｃ６５の集合Ｌの内、実体管理テーブルの削除フラグが１であるレコードが存在しないため、状態Ｃ６５のままとなる。
【００４０】
ここで再び、図１１のフローチャートに戻り、最適化処理の手順について説明する。ステップＳ５４において、最適化処理実行部４は、実体管理テーブル１３の参照領域レコード数１５を参照し、その値をＭｃとする。また、ステップＳ５３で求めた最適化対象レコードの数をＬｃ、最適化対象外レコードの数をＫｃとする。次にステップＳ５５において、参照領域１０の再配置を行う。
【００４１】
ここで、参照領域１０の再配置処理の手順について詳細に説明する。図１５は参照領域１０の再配置処理を示すフローチャートであり、図１６は参照領域１０の再配置処理の説明図である。図１６において、最適化対象とするレコードの集合Ｌ８０、ステップＳ５２で退避した更新領域８１、ステップＳ５２で退避した実体管理テーブル８５、および実体管理テーブル８６は図に示す通りである。退避した実体管理テーブル８５、および実体管理テーブル８６のレコード情報は、実体管理テーブル１３が管理するレコード番号１６、論理ＩＤ１７、削除フラグ１８、作成日付１９、更新可否２０の情報である。また、参照領域１０の再配置処理の実行前の参照領域１０は状態Ａ８２であるとする。
【００４２】
まず、ステップＳ７１において、最適化処理実行部４は集合Ｌに含まれる全てのレコードに対して処理を完了したか否かの判定を行う。全てのレコードに対して処理を完了した場合（Ｌｃが０の場合）は、ステップＳ７１：ＮＯへ進み、ステップＳ７６において参照領域１０の再配置処理を終了する。まだ処理が完了していないレコードが存在する場合、ステップＳ７１：ＹＥＳへ進みステップＳ７２の処理を実行する。ステップＳ７２では、最適化処理実行部４は集合Ｌの中でまだ処理が完了していないレコードｌを選択し、ステップＳ７３を実行する。図１６では最適化処理実行部４はレコード１００１を選択する。次に、ステップＳ７３において、最適化処理実行部４は、レコードｌのデータをステップＳ５２で退避した更新領域から取得し、データアクセス部８を介して参照領域１０のレコードＭｃの後に追加する。図１６では、ステップＳ７３において、レコード１００１のデータを退避した更新領域８１から取得し、状態Ａ８２の参照領域のレコード１０００の後にレコード１００１として追加し、参照領域は状態Ｂ８３となる。更に、ステップＳ７４において、最適化処理実行部４は実体管理テーブル１３のレコード番号１６がＭｃ＋１の情報を更新する。また、データ格納領域９がレコードアクセス情報１２を持つ場合、最適化処理実行部４はレコード番号１５がＭｃ＋１のアクセス情報１６を更新する。実体管理テーブル１３の更新は、ステップＳ５２で退避した実体管理テーブルからレコードｌに関する情報を取得し、データアクセス部８を介して実体管理テーブル１３のレコードＭｃ＋１の情報として書き込むことで行う。また、レコードアクセス情報１２の更新は、ステップＳ７３で参照領域１０へ追加したレコードｌにアクセスするための情報を、データアクセス部８を介してレコードアクセス情報１２のレコード番号１５がＭｃ＋１のアクセス情報１６として書き込むことで行う。図１６では、ステップＳ７４において、実体管理テーブル８６のレコード１００１に関する情報を更新する。実体管理テーブル８６の更新は、退避した実体管理テーブル８５からレコード１００１に関する情報を取得し、実体管理テーブル８６の１００１の情報として書き込むことで行う。最後に、ステップＳ７５において、Ｍｃの値を１増加させ、Ｌｃの値を１減少させ、ステップＳ７１の処理を再度行う。図１６において、集合Ｌ８０の全てのレコードに対して参照領域の再配置処理を実行することで、退避した更新領域８１のレコード１００３、レコード１００４が参照領域へ順次追加され、処理終了時に参照領域は状態Ｃ８４となる。また、実体管理テーブル８６のレコード１００２、レコード１００３のレコード情報は、それぞれ、退避した実体管理テーブル８５のレコード１００３、レコード１００４のレコード情報となる。
【００４３】
ここで再び、図１１のフローチャートに戻り、最適化処理の手順について説明する。ステップＳ５６において、最適化処理実行部４は、更新領域１１の再配置を行う。
【００４４】
ここで、更新領域１１の再配置処理の手順について詳細に説明する。図１７は更新領域１１の再配置処理を示すフローチャートであり、図１８は更新領域１１の再配置処理の説明図である。図１８において、最適化対象外とするレコードの集合Ｋ９０、ステップＳ５２で退避した更新領域９１、ステップＳ５２で退避した実体管理テーブル９６、および実体管理テーブル９７は図に示す通りである。退避した実体管理テーブル９６、および実体管理テーブル９７のレコード情報は、実体管理テーブル１３が管理するレコード番号１６、論理ＩＤ１７、削除フラグ１８、作成日付１９、更新可否２０の情報である。また、更新領域１１の再配置処理の実行前の更新領域１１は状態Ａ９２であるとする。
【００４５】
まず、ステップＳ８１において最適化処理実行部４は、データアクセス部８を介して更新領域１１の初期化を行う。更新領域１１をファイルとして管理する場合、データアクセス部８は更新領域１１のファイルを空にすることで初期化を行う。更新領域１１を物理的に連続した領域として確保する場合、データアクセス部８は更新領域１１のデータを全て削除し初期化を行う。ステップＳ８１の処理により、図１８の更新領域１１は状態Ｂ９３となる。
【００４６】
次に、ステップＳ８２において最適化処理実行部４は、更新領域１１の書込み位置Ｗｐを０にセットする。書込み位置Ｗｐは、更新領域１１においてレコードを書込む位置を特定する情報であり、更新領域１１の先頭を起点としたオフセットとする。ステップＳ８２の処理により、図１８において書込み位置Ｗｐは状態Ｂ９３の更新領域の先頭を指す。ステップＳ８２の処理完了後、最適化処理実行部４は、ステップＳ８３において、集合Ｋに含まれる全てのレコードに対して処理を完了したか否かの判定を行う。全てのレコードに対して処理を完了した場合（Ｋｃが０の場合）、最適化処理実行部４はステップＳ８３：ＮＯへ進み、ステップＳ９１において更新領域１１の再配置処理を終了する。まだ処理が完了していないレコードが存在する場合、最適化処理実行部４はステップＳ８３：ＹＥＳへ進み、ステップＳ８４の処理を実行し、集合Ｋの中でまだ処理が完了していないレコードｋを選択する。図１８では、レコード１００２を選択する。
【００４７】
次に、ステップＳ８５において、ステップＳ８４で選択したレコードｋが論理削除済みか否かの判定を行う。判定ではステップＳ５２で退避した実体管理テーブルを参照し、ステップＳ８４で選択したレコードｋの削除フラグが１である場合にレコードｋが削除済みであると判定し、ステップＳ８５：ＹＥＳに進みステップＳ９０の処理を実行する。レコードｋが削除済みでないと判定した場合、ステップＳ８５：ＮＯに進みステップＳ８６の処理を実行する。図１８では、退避した実体管理テーブル９１のレコード１００２の削除フラグが０であるため、ステップＳ８５：ＮＯに進みステップＳ８６の処理を実行する。最適化処理実行部４は、ステップＳ８６においてレコードｋのデータをステップＳ５２で退避した更新領域１１から取得し、データアクセス部８を介してＷｐの位置から書込みを行う。ステップＳ８６において、書き込みを行なったレコードｋのデータは、データ格納領域９のレコードＭｃ＋１のデータとなる。図１８では、ステップＳ８６において、レコード１００２のデータを退避した更新領域９１から取得し、レコード１００４のデータとして状態Ｂ９３の更新領域の先頭から書き込み、更新領域は状態Ｃ９４となる。
【００４８】
更に、ステップＳ８７において、最適化処理実行部４は、ステップＳ８６で更新領域１１へ書き込みを行ったレコードｋのデータサイズをＷｐに加え、次のレコードの書き込み位置Ｗｐを求め、ステップＳ８８において、実体管理テーブル１３のレコード番号１６がＭｃ＋１の情報を更新する。また、データ格納領域９がレコードアクセス情報１２を持つ場合、最適化処理実行部４はレコード番号１５がＭｃ＋１のアクセス情報１６を更新する。実体管理テーブル１３の更新時、最適化処理実行部４はステップＳ５２で退避した実体管理テーブルからレコードｋに関する情報を取得し、データアクセス部８を介して取得した情報を実体管理テーブル１３のレコードＭｃ＋１の情報として書き込む。また、レコードアクセス情報１２の更新時、最適化処理実行部４はステップＳ８６で更新領域１１へ追加したレコードｋにアクセスするための情報を、データアクセス部８を介してレコードアクセス情報１２のレコード番号１５がＭｃ＋１のアクセス情報１６として書き込む。図１８では、ステップＳ８８において、実体管理テーブル９７のレコード１００４に関する情報を更新する。実体管理テーブル９７の更新は、退避した実体管理テーブル９６からレコード１００２に関するレコード情報を取得し、実体管理テーブル９７のレコード１００４のレコード情報として書き込むことで行う。最後に、ステップＳ８９において、Ｍｃの値を１増加させ、更にステップＳ９０においてＫｃの値を１減少させ、ステップＳ８３の処理を再度行う。図１８において、集合Ｋの全てのレコードに対して更新領域１１の再配置処理を行うことで、退避した更新領域９１のレコード１００５、レコード１００６、レコード１００８、レコード１０１０、レコード１０１１が更新領域へ順次追加され、処理終了時には状態Ｄ９５となる。また、実体管理テーブル９７は退避した実体管理テーブル９６のレコード１００５、レコード１００６、レコード１００８、レコード１０１０、レコード１０１１のレコード情報が、それぞれ、実体管理テーブル１３のレコード１００５、レコード１００６、レコード１００７、レコード１００８、レコード１００９の情報となる。
【００４９】
ここで再び、図１１のフローチャートに戻り、最適化処理の手順について説明する。ステップＳ５７において、最適化処理実行部４は、実体管理テーブル１３の更新を行う。最適化処理実行部４は実体管理テーブル１３の総レコード数をＭｃに変更し、実体管理テーブル１３のレコードＭｃ＋１以降の情報を削除する。また、実体管理テーブル１３の参照領域レコード数１５の現在の値にステップＳ５５で参照領域１０へ追加したレコード数の値を加える。
【００５０】
また、上記では、参照領域１０と更新領域１１が管理するデータの最小単位をレコードとしているが、参照領域１０では複数のレコードをまとめたブロックを最小単位として管理し、更新領域１１が管理するデータの最小単位をレコードとして管理する構成をとることも可能である。この場合、上記の参照領域１０の再配置処理では、ステップＳ７２で複数のレコードを選択し、ブロック化して参照領域１０へ書込みを行う。この場合に、ブロック化したレコードに対して、圧縮処理を行い参照領域１０へ書き込むこんでもよい。
【００５１】
以上の通り説明したデータ管理方式、および最適化方式を用いることで、最適化処理時に更新領域内に配置されたレコードの中から更新、削除処理が発生する可能性が低いレコードを選択的に抽出することができ、参照領域へ追加したレコードの更新、削除処理の発生が低下し、ディスクの利用効率やデータベースのアクセス効率の低下を抑えることができる。
【００５２】
また、最適化対象となるレコードを更新領域のレコードに限定して管理を行うため、最適化処理に必要となる時間を短縮することができる。
【００５３】
また、一定の期間ごとにレコードの更新、削除が頻繁に行われるデータを管理する場合、最適化条件に最適化周期の条件を設定することで、更新領域でレコードの更新、削除処理が発生する状況を低下することができる。例えば、月単位でデータの更新、削除が頻繁に行われる月次データなどを管理する場合、最適化条件に最適化周期の条件を１月に設定することで、参照領域のレコードの更新、削除が発生する状況を低下することができる。
【００５４】
また、最適化条件に非更新期間の条件を設定することで、一定期間更新、削除が発生していないレコードを選択的に抽出することが可能となり、データの登録直後などに、更新、削除の処理が頻発することによるディスクの利用効率やデータベースのアクセス効率の低下を抑えることができる。
【００５５】
また、最適化条件に更新可否の条件を設定することで、更新、削除が発生しないレコードを選択的に抽出することが可能となる。
【００５６】
また、最適化条件にレコード蓄積量の条件を設定し、蓄積した複数のレコードをブロック化して圧縮処理を行い参照領域へ追加することにより、ディスクの利用効率や圧縮効率を高めることが可能となる。
【００５７】
実施の形態２．
上述の例におけるデータ管理装置を、複数の装置に分割することも考えられる。図１９は、実施の形態２におけるデータ管理装置の構成図である。
【００５８】
図に示す通り、データアクセス部をインターフェースとするデータ管理下位装置と、当該インターフェースにアクセスするデータ管理上位装置に分けることも考えられる。
【００５９】
実施の形態３．
また、データ管理下位装置に最適化処理実行部と最適化に関連するモジュールを加え、データ管理部からなるデータ管理上位装置によりシステム全体を構成することも考えられる。図２０は、実施の形態３におけるデータ管理装置の構成図である。
【００６０】
上述のデータ管理装置は、コンピュータであり、各要素はプログラムにより処理を実行することができる。また、プログラムを記憶媒体に記憶させ、記憶媒体からコンピュータに読み取られるようにすることができる。
【００６１】
図２１は、データ管理装置のハードウエア構成例を示す図である。バスに、演算装置２１０１、データ記憶装置２１０２、メモリ２１０３が接続されている。データ記憶装置２１０２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やハードディスクである。メモリ２１０３は、通常ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００６２】
プログラムは、通常データ記憶装置２１０２に記憶されており、メモリ２１０３にロードされた状態で、順次演算装置２１０１に読み込まれ処理を行う。
【図面の簡単な説明】
【００６３】
【図１】本発明で用いるデータ管理装置の構成図である。
【図２】データ格納領域のデータの格納形式を示した図である。
【図３】実体管理テーブルのデータの格納形式を示した図である。
【図４】データ管理装置のデータ登録処理を示すフローチャートである。
【図５】データ登録処理に係るデータフローを示す図である。
【図６】データ管理装置のデータ削除処理を示すフローチャートである。
【図７】データ削除処理に係るデータフローを示す図である。
【図８】データ管理装置のデータ更新処理を示すフローチャートである。
【図９】データ更新処理に係るデータフローを示す図である。
【図１０】最適化管理テーブルを示す図である。
【図１１】最適化処理の手順を示すフローチャートである。
【図１２】最適化処理に係るデータフローを示す図である。
【図１３】最適化対象レコード選択処理を示すフローチャートである。
【図１４】最適化対象レコード選択処理の説明図である。
【図１５】参照領域の再配置処理を示すフローチャートである。
【図１６】参照領域の再配置処理の説明図である。
【図１７】更新領域の再配置処理を示すフローチャートである。
【図１８】更新領域の再配置処理の説明図である。
【図１９】実施の形態２におけるデータ管理装置の構成図である。
【図２０】実施の形態３におけるデータ管理装置の構成図である。
【図２１】データ管理装置のハードウエア構成例を示す図である。
【符号の説明】
【００６４】
１  データ管理装置、２  データ管理部、３  最適化処理部、４  最適化処理実行部、５  最適化管理テーブル、６  タイマー、７  蓄積量監視部、８  データアクセス部、９  データ格納領域、１０  参照領域、１１  更新領域、１２  レコードアクセス情報、１３  実体管理テーブル。
【図１】
2006004304.tif 000003
【図２】
2006004304.tif 000004
【図３】
2006004304.tif 000005
【図４】
2006004304.tif 000006
【図５】
2006004304.tif 000007
【図６】
2006004304.tif 000008
【図７】
2006004304.tif 000009
【図８】
2006004304.tif 000010
【図９】
2006004304.tif 000011
【図１０】
2006004304.tif 000012
【図１１】
2006004304.tif 000013
【図１２】
2006004304.tif 000014
【図１３】
2006004304.tif 000015
【図１４】
2006004304.tif 000016
【図１５】
2006004304.tif 000017
【図１６】
2006004304.tif 000018
【図１７】
2006004304.tif 000019
【図１８】
2006004304.tif 000020
【図１９】
2006004304.tif 000021
【図２０】
2006004304.tif 000022
【図２１】
2006004304.tif 000023