(57)【要約】【課題】無効レコードの削除に関する処理負荷を軽減することができるデータベース管理装置、データベース管理方法、およびデータベース管理プログラムを提供することである。【解決手段】実施形態のデータベース管理装置は、データ処理部と、代表有効期限決定部と、削除部とを持つ。データ処理部は、記憶装置に対してデータの書き込みまたは読み出しを行う。代表有効期限決定部は、前記データ処理部が扱うデータに対してそれぞれ割り当てられた有効期限に基づいて、前記データをグループ化したデータグループの代表有効期限を決定する。削除部は、前記代表有効期限決定部により決定された代表有効期限に基づいて、削除対象の前記データグループを抽出し、前記抽出した削除対象の前記データグループに含まれるデータのうち前記有効期限を徒過したデータを削除する。【選択図】図１
2018005552.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に対してデータの書き込みまたは読み出しを行うデータ処理部と、
前記データ処理部が扱うデータに対してそれぞれ割り当てられた有効期限に基づいて、前記データをグループ化したデータグループの代表有効期限を決定する代表有効期限決定部と、
前記代表有効期限決定部により決定された代表有効期限に基づいて、削除対象の前記データグループを抽出し、前記抽出した削除対象の前記データグループに含まれるデータのうち前記有効期限を徒過したデータを削除する削除部と、
を備えるデータベース管理装置。
【請求項２】
前記代表有効期限決定部は、前記データグループと、前記データグループの代表有効期限とを関連付けて管理する索引情報を生成し、
前記削除部は、前記索引情報に基づいて、前記代表有効期限を徒過したデータグループを抽出する、
請求項１に記載のデータベース管理装置。
【請求項３】
前記索引情報は、前記代表有効期限を再生成するための付加情報を更に含み、
前記代表有効期限決定部は、前記データグループ内のデータが更新された場合に、前記付加情報に基づいて前記代表有効期限を再生成する、
請求項２に記載のデータベース管理装置。
【請求項４】
前記代表有効期限決定部は、前記データ処理部が前記記憶装置に対してデータの書き込みまたは削除を行った場合に、前記索引情報を更新する、
請求項２または３に記載のデータベース管理装置。
【請求項５】
前記代表有効期限決定部は、同一のデータグループに属するそれぞれのデータに割り当てられた有効期限のうち一部または全部に対して統計処理を行った値に基づいて、前記データグループの代表有効期限を設定する、
請求項１から４のうち、いずれか１項に記載のデータベース管理装置。
【請求項６】
前記代表有効期限決定部は、同一のデータグループに属するそれぞれのデータに割り当てられた有効期限の最大値と最小値とを取得し、取得した最大値および最小値の一方または双方に基づいて、前記データグループの代表有効期限を設定する、
請求項１から５のうち、いずれか１項に記載のデータベース管理装置。
【請求項７】
前記代表有効期限決定部は、同一のデータグループに属するそれぞれのデータに割り当てられた有効期限と、前記データグループ内の各データのサイズとに基づいて、前記データグループの代表有効期限を設定する、
請求項１から６のうち、いずれか１項に記載のデータベース管理装置。
【請求項８】
データベース管理装置のコンピュータが、
記憶装置に対してデータの書き込みまたは読み出しを行い、
前記書き込みまたは読み出しを行うデータに対してそれぞれ割り当てられた有効期限に基づいて、前記データをグループ化したデータグループの代表有効期限を決定し、
決定された前記代表有効期限に基づいて、削除対象の前記データグループを抽出し、前記抽出した削除対象の前記データグループに含まれるデータのうち前記有効期限を徒過したデータを削除する、
データベース管理方法。
【請求項９】
データベース管理装置のコンピュータに、
記憶装置に対してデータの書き込みまたは読み出しを行わせ、
前記書き込みまたは読み出しを行うデータに対してそれぞれ割り当てられた有効期限に基づいて、前記データをグループ化したデータグループの代表有効期限を決定させ、
決定された前記代表有効期限に基づいて、削除対象の前記データグループを抽出し、前記抽出した削除対象の前記データグループに含まれるデータのうち前記有効期限を徒過したデータを削除させる、
データベース管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データベース管理装置、データベース管理方法、およびデータベース管理プログラムに関する。
【背景技術】
【０００２】
データベースを管理するシステムでは、データベースにレコードを登録する場合に、そのレコードを利用できる有効期限を設定し、有効期限を徒過したレコード（無効レコード）を所定のタイミングで削除する場合がある。無効レコードを削除する手法としては、例えば定期的にデータベース内の全レコードをスキャンし、有効期限を徒過したレコードを削除する手法（ガベージコレクション）がある。しかしながら、従来の技術では、全レコードをスキャンするために、無効レコードを削除する処理負荷が増大する場合があった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２６７０２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、無効レコードの削除に関する処理負荷を軽減することができるデータベース管理装置、データベース管理方法、およびデータベース管理プログラムを提供することである。
【課題を解決するための手段】
【０００５】
実施形態のデータベース管理装置は、データ処理部と、代表有効期限決定部と、削除部とを持つ。データ処理部は、記憶装置に対してデータの書き込みまたは読み出しを行う。代表有効期限決定部は、前記データ処理部が扱うデータに対してそれぞれ割り当てられた有効期限に基づいて、前記データをグループ化したデータグループの代表有効期限を決定する。削除部は、前記代表有効期限決定部により決定された代表有効期限に基づいて、削除対象の前記データグループを抽出し、前記抽出した削除対象の前記データグループに含まれるデータのうち前記有効期限を徒過したデータを削除する。
【図面の簡単な説明】
【０００６】
【図１】本実施形態のデータベース管理装置１００を備えるデータベース管理システム１の機能構成例を示す図。
【図２】レコード管理情報１５０Ａの内容の一例を示す図。
【図３】第１インデックス１５０Ｂの内容の一例を示す図。
【図４】第２インデックス１５０Ｃの内容の一例を示す図。
【図５】データベース管理装置１００におけるレコードアクセス時の動作例を説明するための図。
【図６】データベース管理装置１００におけるガベージコレクション処理の動作例を説明するための図。
【図７】代表ＴＴＬ値を設定する第１の実施例を示す図。
【図８】代表ＴＴＬ値を設定する第２の実施例を示す図。
【図９】代表ＴＴＬ値を設定する第３の実施例を示す図。
【図１０】削除対象ページの抽出例を説明するための図。
【図１１】削除処理実行後の各ページの様子とインデックスの更新例を示す図。
【図１２】ページにレコードが追加された場合のインデックスの生成例を示す図。
【図１３】データベース管理装置１００におけるレコード書き込み処理（新規登録）の一例を示すフローチャート。
【図１４】インデックス生成処理の一例を示すフローチャート。
【図１５】データベース管理装置１００におけるレコード書き込み処理（更新）の一例を示すフローチャート。
【図１６】データベース管理装置１００におけるレコード読み出し処理の一例を示すフローチャート。
【図１７】データベース管理装置１００におけるレコード削除処理の一例を示すフローチャート。
【図１８】データベース管理装置１００における無効レコード削除処理の一例を示すフローチャート。
【発明を実施するための形態】
【０００７】
以下、実施形態のデータベース管理装置、データベース管理方法、およびデータベース管理プログラムを、図面を参照して説明する。
【０００８】
図１は、本実施形態のデータベース管理装置１００を備えるデータベース管理システム１の機能構成例を示す図である。図１に示すデータベース管理システム１は、データベース管理装置１００と、記憶装置２００と、クライアント３００とを備える。データベース管理装置１００、記憶装置２００、およびクライアント３００のそれぞれは、インターネットやＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）等を含む通信ネットワークを介して通信する。
【０００９】
図１に示すデータベース管理システム１において、記憶装置２００およびクライアント３００の一方または双方は、データベース管理装置１００と統合されてもよい。また、図１の例では、データベース管理装置１００を使用する装置として１つのクライアント３００を示しているが、複数のクライアント３００が１つのデータベース管理装置１００を使用してもよい。
【００１０】
データベース管理装置１００は、ユーザが使用するクライアント３００からの設定情報の入力や、処理を実行するための指示の入力を受け付け、受け付けた内容に基づいて、記憶装置２００に対するＩ／Ｏ命令を発行する。また、データベース管理装置１００は、処理結果等の情報をクライアント３００に出力する。
【００１１】
データベース管理装置１００は、レコード管理部（データ処理部）１１０と、インデックス管理部（代表有効期限決定部）１２０と、無効レコード削除部（削除部）１３０と、通信部１４０と、記憶部１５０とを備える。また、これらの構成要素のうち記憶部１５０を除くものは、例えば、コンピュータにおけるＣＰＵ（Central Processing Unit）等のプロセッサが、記憶部１５０等のプログラムメモリに格納されたプログラム（ソフトウェア）を実行することで実現される。また、これらの機能部のうち一部または全部は、ＬＳＩ（Large Scale Integration）やＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field-Programmable Gate Array）等のハードウェアによって実現されてもよく、ソフトウェアとハードウェアとの協働により実現されてもよい。また、記憶部１５０は、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）、フラッシュメモリ等により実現される。記憶部１５０には、レコード管理情報１５０Ａ、第１インデックス１５０Ｂ、および第２インデックス１５０Ｃ等の情報が記憶される。
【００１２】
レコード管理部１１０は、クライアント３００から書き込み指示されたデータを記憶装置２００に書き込んだり、読み出し指示されたデータを記憶装置２００から読み出したり、削除指示されたデータを記憶装置２００から削除する処理を行う。また、本実施形態では、クライアント３００が、書き込み、読み出し、または削除等を指示する一単位のデータを、レコードと称する。レコードは、例えば、レコードを識別する識別情報（レコードＩＤ）と、それに関連付けられたデータ本体部とを含む。レコードは、固定長でもよく、可変長でもよい。
【００１３】
レコード管理部１１０は、レコードを、例えば一以上のレコードを包含するページ、および一以上のページを包含するテーブル等で表現される論理的な階層構造で管理する。この階層構造は、レコード管理情報１５０Ａによって把握される。ここで、ページとは、１または複数のレコードが割り当て可能な固定長の記憶領域を持つ仮想的な記憶領域を示すものである。また、テーブルとは、１又は複数のページが割り当て可能な固定長の記憶領域を持つ仮想的な記憶領域を示すものである。テーブルまたはページは、それぞれレコードをグループ化したデータグループの一例である。以下の説明では、ページがデータグループであるものとする。
【００１４】
図２は、レコード管理情報１５０Ａの内容の一例を示す図である。レコード管理情報１５０Ａは、例えば、テーブルごとに、「ページＩＤ」、「レコードＩＤ」、および「ＴＴＬ（Time To Live）値」が互いに対応付けられた情報である。「ページＩＤ」は、ページを識別する識別情報である。レコード管理部１１０は、記憶装置２００に対してレコードの書き込みを行う場合に、レコードごとにＴＴＬ値を設定し、レコード管理情報１５０Ａに追加する。「ＴＴＬ値」は、レコードの有効期限を認識可能な情報の一例である。ＴＴＬ値は、例えば、そのレコードがいつまで有効であるかを示す時刻情報である。ＴＴＬ値は、クライアント３００から指定されてもよく、データベース管理装置１００において設定されてもよい。
【００１５】
図２に示すＴＴＬ値は、時刻型の値（例えば、日時情報）が設定される。また、ＴＴＬ値は、例えばレコードに対するアクセス時刻からの有効期間（例えば、最終アクセス時刻より２４時間といった情報）が設定されてもよい。
【００１６】
なお、レコード管理部１１０は、レコード管理情報に記憶されたレコードＩＤに対応する論理アドレスから、記憶装置２００の物理アドレスに変換する変換部を備えていてもよい。また、本実施形態では、ＴＴＬ値が設定されない状態で記憶装置２００にレコードが記憶される場合もあり得る。この場合、レコード管理部１１０は、レコード管理情報１５０ＡのＴＴＬ値を空欄等にして登録してもよく、そのレコードに関する情報をレコード管理情報１５０Ａに登録しなくてもよい。
【００１７】
インデックス管理部１２０は、レコード管理部１１０によって、記憶装置２００にレコードが書き込まれたり、レコードが削除された場合に、各レコードを管理するためのインデックス（索引情報）を生成する。また、インデックス管理部１２０は、レコードに対してそれぞれ割り当てられたＴＴＬ値に基づいて、データをグループ化したデータグループの代表有効期限（代表ＴＴＬ値）を決定し、決定した情報をインデックスに格納する。また、インデックス管理部１２０は、無効レコード削除部１３０によって、記憶装置２００内の無効レコードが削除された場合にも、インデックスを更新する。本実施形態では、インデックスは、第１インデックス１５０Ｂと、第２インデックス１５０Ｃとを含むものとする。
【００１８】
図３は、第１インデックス１５０Ｂの内容の一例を示す図である。第１インデックス１５０Ｂは、例えば、「代表ＴＴＬ値」および「ページＩＤ」が互いに対応付けられた情報である。「代表ＴＴＬ値」とは、レコード管理情報１５０Ａで管理されるページごとの代表有効期限である。代表有効期限は、各ページのそれぞれに記憶されたレコードに割り当てられたＴＴＬ値等に基づいて決定される期限情報であり、無効レコードを削除する際の一次検索に用いられる。なお、代表ＴＴＬ値の設定手法については後述する。「代表ＴＴＬ値」なるデータは、例えば各レコードに対するＴＴＬ値と同様のデータ形式で表現される。
【００１９】
第１インデックス１５０Ｂは、例えば代表ＴＴＬ値を検索条件（キー）として、代表有効期限を徒過したページが検索できるように構成される。第１インデックス１５０Ｂは、例えば無効レコード削除部１３０により、ページ単位でガベージコレクション処理（コンパクション、バキューム、ページ再編成ともいう）を実現するために用いられるインデックスである。
【００２０】
図４は、第２インデックス１５０Ｃの内容の一例を示す図である。第２インデックス１５０Ｃは、例えば、「ページＩＤ」、「代表ＴＴＬ値」、および「付加情報」が互いに対応付けられた情報である。「付加情報」とは、例えば過去の代表ＴＴＬ値、ページ内の全レコードにおけるＴＴＬ値の最大、最小、平均、レコード数、各レコードのレコード長の総和、および代表ＴＴＬ値を求めるための規則等のうち、少なくとも１つを含む情報である。また、「付加情報」は、例えばインデックス管理部１２０において、代表ＴＴＬ値を再計算し、第１インデックス１５０Ｂを更新するのに用いられる情報である。
【００２１】
なお、インデックス管理部１２０は、上述した第１インデックス１５０Ｂおよび第２インデックス１５０Ｃを１つのインデックスとして管理してもよく、他の情報を含むインデックスを生成してもよい。
【００２２】
無効レコード削除部１３０は、第１インデックス１５０Ｂに基づいて、削除対象のページを抽出し、抽出した削除対象のページに含まれるレコードのうち有効期限を徒過したレコード（無効レコード）を削除する。無効レコードの削除とは、例えば記憶装置２００のデータ記憶領域２１０に記憶されている無効レコードを削除するとともに、レコード管理情報１５０Ａから該当する無効レコードの管理情報を削除することである。
【００２３】
なお、無効レコード削除部１３０は、例えば無効レコードの削除を、ガベージコレクション処理として定期的に実施してもよく、レコード管理情報１５０Ａまたは記憶装置２００のデータ量が閾値を超えた場合に実施してもよく、クライアント３００からの指示で実施してもよい。
【００２４】
通信部１４０は、他のデータベース管理装置１００、記憶装置２００、およびクライアント３００のうち、少なくとも１つと通信ネットワークを介してデータの送受信を行う通信インターフェースである。
【００２５】
記憶部１５０は、図１に示す情報の他、データベース管理装置１００における各種設定情報や、データベース管理に関する各種処理の実行経過または実行結果等により得られる情報、ログ情報、エラー情報等を記憶する。
【００２６】
記憶装置２００は、例えばデータベース管理装置１００により管理されるストレージ装置である。記憶装置２００は、例えば、ハードディスク（ディスク装置）、フラッシュメモリと、制御回路とを備える。記憶装置２００は、データ記憶領域２１０を備える。データ記憶領域２１０は、レコードを不揮発に保持する。
【００２７】
クライアント３００は、データベース管理装置１００に指示を送信し、応答を取得する。例えば、クライアント３００は、データベース管理装置１００にデータの読み書き、削除を行わせるためのコマンドを出力する。クライアント３００は、例えばＰＣ（Personal Computer）やタブレット端末、携帯電話等の情報処理装置である。クライアント３００は、データベース管理装置１００のユーザによって使用される情報処理装置であってもよく、更に別の装置から受信したコマンド等に基づいて、データベース管理装置１００に各種コマンドを送信する装置であってもよい。また、クライアント３００は、内部において情報処理した結果に基づいて、各種コマンドを生成してデータベース管理装置１００に送信する装置であってもよい。
【００２８】
クライアント３００は、データベース管理装置１００に対して、データの書き込みを指示するライトコマンド、データの読み出しを指示するリードコマンド、データの削除を指示する削除コマンド等を送信する。また、クライアント３００は、データベース管理装置１００から指示した内容に対する処理結果を取得する。
【００２９】
以下、データベース管理装置１００におけるデータベース管理の各種動作について説明する。図５は、データベース管理装置１００におけるレコードアクセス時の動作例を説明するための図である。本実施例において、レコードアクセスとは、レコードの書き込み処理を指すものとする。また、レコードの書き込み処理には、レコードの新規登録と更新との双方が含まれる。
【００３０】
図５において、クライアント３００は、レコードの書き込み指示に対応するコマンド（書き込みコマンド）をデータベース管理装置１００に出力する（１）。レコード管理部１１０は、レコード管理情報１５０Ａに書き込み対象のレコードに関する情報を登録する（２）。また、レコード管理部１１０は、記憶装置２００のデータ記憶領域２１０に書き込み指示されたレコードの書き込み命令を出力する（３）。なお、上記（２）と（３）の順序は逆であってもよく、同時であってもよい。
【００３１】
また、レコード管理部１１０は、書き込んだレコードに関する情報およびインデックスの登録指示（または更新指示）をインデックス管理部１２０に出力する（４）。レコードに関する情報とは、書き込んだレコードに関連付けられたレコードＩＤ、書き込んだレコードが属するページＩＤ、およびＴＴＬ値であるが、例えばレコード管理情報１５０Ａに記憶された管理情報のうち、書き込んだレコードが属するページＩＤに関連付けられた全レコードの管理情報でもよい。
【００３２】
インデックス管理部１２０は、レコード管理部１１０により得られる情報に基づいて、第１インデックス１５０Ｂおよび第２インデックス１５０Ｃを生成（新規作成または更新）する（５）、（６）。
【００３３】
また、インデックス管理部１２０は、書き込んだレコードに対する第１インデックス１５０Ｂおよび第２インデックス１５０Ｃの生成が終了すると、データの書き込み処理が完了したことを示す情報をクライアント３００に出力する（７）。
【００３４】
次に、データベース管理装置１００におけるガベージコレクション処理の実行時の動作について、図を用いて説明する。図６は、データベース管理装置１００におけるガベージコレクション処理の動作例を説明するための図である。
【００３５】
無効レコード削除部１３０は、定期的に、ガベージコレクション処理による無効レコードの削除処理を行う。無効レコード削除部１３０は、削除処理を実行するタイミングで第１インデックス１５０Ｂを参照し（８）、ページＩＤごとに設定される代表ＴＴＬ値と、現在時刻とを比較する。比較の結果、現在時刻が代表ＴＴＬ値を超えている場合、無効レコード削除部１３０は、その代表ＴＴＬ値を持つページＩＤを、無効レコードを削除する対象のページとして抽出する。
【００３６】
なお、無効レコード削除部１３０は、削除処理の時間を調整するため、１回の削除処理で削除対象とするページの最大数を制限してもよい。その場合、無効レコード削除部１３０は、現在時刻と代表ＴＴＬ値とを比較し、代表ＴＴＬ値からの経過時間が大きいページ順に、最大数を超えない数のページＩＤを抽出する。
【００３７】
次に、無効レコード削除部１３０は、レコード管理情報１５０Ａを参照し、削除対象のページに記憶された各レコードのＴＴＬ値と現在時刻とを比較し、現在時刻よりも前のＴＴＬ値が設定されたレコードの管理情報を削除する（９）。また、無効レコード削除部１３０は、レコード管理情報１５０Ａに対して上述の削除処理を行うとともに、記憶装置２００に記憶された対象レコードを削除する（１０）。なお、上記（９）および（１０）では、レコード管理情報１５０Ａを参照して削除対象のレコードが抽出された場合に、記憶装置２００に記憶された対象レコードを削除した後に、レコード管理情報１５０Ａの管理情報を削除してもよく、またその逆でもよい。
【００３８】
次に、無効レコード削除部１３０は、インデックス管理部１２０に第１インデックス１５０Ｂおよび第２インデックス１５０Ｃを更新する指示を出力する（１１）。なお、無効レコード削除部１３０は、第１インデックス１５０Ｂおよび第２インデックス１５０Ｃの更新指示とともに、どのページＩＤのどのレコードが削除されたかを示す情報等をインデックス管理部１２０に出力する。
【００３９】
インデックス管理部１２０は、第２インデックス１５０Ｃに記憶された情報を参照し、削除対象となったページＩＤに対する削除前の代表ＴＴＬ値や付加情報を用いて、第１インデックス１５０Ｂを更新する（１２）、また、インデックス管理部１２０は、第１インデックス１５０Ｂを生成する際に用いた情報等に基づいて、付加情報を更新し、更新した付加情報を含む第２インデックス１５０Ｃを生成する（１３）。
【００４０】
上述した処理により、ガベージコレクション処理により無効レコードを削除する場合に、レコード管理情報１５０Ａの各レコードを全スキャンするのではなく、ページ単位で大まかに削除の必要性を判定し、無効レコードがページ内にそれほど多くない場合には、無効レコードの物理的な削除を遅延させることができる。これにより、無効レコードの削除に関する処理負荷を軽減することができる。
【００４１】
また、第１インデックス１５０Ｂおよび第２インデックス１５０Ｃを用いてページごとにインデックス情報を管理することで、インデックスのデータ量を軽減させることができる。
【００４２】
次に、上述した代表ＴＴＬ値の設定について、具体的に説明する。
（代表ＴＴＬ値を設定する第１の実施例）
図７は、代表ＴＴＬ値を設定する第１の実施例を示す図である。第１の実施例では、ページ内の各データのそれぞれに割り当てられたＴＴＬ値のうち一部または全部に対して統計処理を行った値に基づいて、ページごとに代表ＴＴＬ値を設定する。例えば、第１の実施例では、同一のページに属するそれぞれのレコードに割り当てられたＴＴＬ値に対する割合を基準に、代表ＴＴＬ値Ｔ（Ｐ）を設定する。図７において、横軸を時刻とし、Ｔｍｉｎは、同一ページ内に含まれる各レコードのＴＴＬ値の最小値を示し、Ｔｍａｘは、同一ページ内に含まれる各レコードのＴＴＬ値の最大値を示す。
【００４３】
第１の実施例において、割合に対する閾値ａを０≦ａ≦１とする。レコード管理部１１０は、各ページ内における全レコードのうち、無効レコードの割合がａを超えたときに、削除対象のページとして抽出されるように、代表ＴＴＬ値Ｔ（Ｐ）とする。この閾値は、クライアント３００から指定されてもよく、インデックス管理部１２０に予め設定されていてもよい。
【００４４】
例えば、上述した閾値ａ＝０．３とした場合、図７に示すように、そのページ内に含まれる無効レコード数が全レコード数の３０％を超えないページについては、無効レコードの削除処理が実行されず、無効レコード数が全レコード数の３０％を超えるページについては、無効レコードの削除処理が実行されるように代表ＴＴＬ値Ｔ（Ｐ）を設定する。この場合、インデックス管理部１２０は、例えば、ページ内の全レコードをＴＴＬ値でソートし、ＴＴＬ値の小さい（時刻の早い）方から数えて全レコード数の３０％を超えた最初のレコードのＴＴＬ値を代表ＴＴＬ値Ｔ（Ｐ）に設定する。
【００４５】
また、インデックス管理部１２０は、ページ内のＴｍａｘとＴｍｉｎとの差分を算出し、その差分値の３０％の値と、代表ＴＴＬ値未満のレコード数Ｃ１および代表ＴＴＬ値以上のレコード数Ｃ２の割合とを乗じた値を、Ｔｍｉｎに加算することで、代表ＴＴＬ値Ｔ（Ｐ）を計算してもよい（Ｔ（Ｐ）＝０．３×（Ｃ２／Ｃ１）×（Ｔｍａｘ−Ｔｍｉｎ）＋Ｔｍｉｎ）。
【００４６】
なお、閾値ａ＝０とした場合、代表ＴＴＬ値Ｔ（Ｐ）は、図７に示すＴｍｉｎと一致する。したがって、ガベージコレクション処理による無効レコードの削除を実行する周期が速くなり、ガベージコレクション処理が厳密になるが、削除処理における処理負荷は高くなる。
【００４７】
また、閾値ａ＝１とした場合、代表ＴＴＬ値Ｔ（Ｐ）は、図７に示すＴｍａｘと一致する。この場合、ページ中の全レコードが無効レコードになるまで削除操作を遅延させることができるため、ガベージコレクション処理による負荷は最大限軽減できるが、それまで無効レコードがページ内に残ったままとなる。
【００４８】
ここで、第１の実施例において、１レコードごとに３レコードまで書き込んだ場合の代表ＴＴＬ値Ｔ（Ｐ）の設定例について説明する。例えば、第１の実施例において、あるページに最初のレコードＲ１が書き込まれた場合、インデックス管理部１２０は、Ｔｍｉｎ＝０とし、ＴｍａｘをレコードＲ１のＴＴＬ値（Ｔ（Ｒ１））とする。また、インデックス管理部１２０は、代表ＴＴＬ値Ｔ（Ｐ）＝Ｔ（Ｒ１）とする。
【００４９】
次に、同一ページに２番目のレコードＲ２が書き込まれた場合、インデックス管理部１２０は、ＴｍｉｎをレコードＲ１およびＲ２のＴＴＬ値のうち最も早い方に設定する（Ｔｍｉｎ＝ｍｉｎ（Ｔ（Ｒ１），Ｔ（Ｒ２））。また、インデックス管理部１２０は、ＴｍａｘをレコードＲ１およびＲ２のＴＴＬ値のうち最も遅い方に設定する（Ｔｍａｘ＝ｍａｘ（Ｔ（Ｒ１），Ｔ（Ｒ２））。
【００５０】
また、インデックス管理部１２０は、代表ＴＴＬ値未満のレコード数Ｃ１を１とし、代表ＴＴＬ値以上のレコード数Ｃ２を１として、上述した計算式「Ｔ（Ｐ）＝ａ×（Ｃ２／Ｃ１）×（Ｔｍａｘ−Ｔｍｉｎ）＋Ｔｍｉｎ」から代表ＴＴＬ値Ｔ（Ｐ）を計算する。また、インデックス管理部１２０は、上述したレコードＲ２の書き込み時に使用した情報を付加情報として第２インデックス１５０Ｃに保存する。このときの付加情報は、Ｔｍｉｎ、Ｔｍａｘ、Ｃ１、およびＣ２である。これにより、インデックス管理部１２０は、ページ内で代表ＴＴＬ値Ｔ（Ｐ）を更新する場合に、対象のページ内の全レコードをスキャンせずに、迅速にＴｍｉｎ、Ｔｍａｘ、Ｃ１、Ｃ２等を取得することができる。
【００５１】
更に、同一ページに３番目のレコードＲ３を書き込む場合、インデックス管理部１２０は、レコードＲ３のＴＴＬ値Ｔ（Ｒ３）と、第２インデックス１５０Ｃから取得したＴｍｉｎ、Ｔｍａｘとを比較して、新たなＴｍｉｎとＴｍａｘを決定するとともに、Ｃ１およびＣ２のいずれかを更新する。また、インデックス管理部１２０は、レコードＲ３を登録したページの代表ＴＴＬ値Ｔ（Ｐ）を、上述した計算式を用いて再計算する。以下、レコードが書き込まれるごとに同様の処理を行う。
【００５２】
このように、第１の実施例では、ページ内における全レコードのＴＴＬ値の割合（閾値ａ）に基づいて、代表ＴＴＬ値Ｔ（Ｐ）を設定することができる。したがって、例えば記憶装置２００の空き容量等に応じて閾値ａを動的に変化させることで、適切なタイミングでガベージコレクション処理を実施することができるため、処理負荷を軽減することができる。
【００５３】
（代表ＴＴＬ値を設定する第２の実施例）
次に、代表ＴＴＬ値を設定する第２の実施例について説明する。図８は、代表ＴＴＬ値を設定する第２の実施例を示す図である。第２の実施例では、同一のページに属するそれぞれのレコードに割り当てられたＴＴＬ値から最大値と最小値とを取得し、取得した最大値および最小値の一方または双方に対する割合に基づいて、代表ＴＴＬ値を設定する。例えば、インデックス管理部１２０は、図８に示すように、割合を示す閾値ａを０≦ａ≦１とし、ＴＴＬ値の最小値から最大値までの区間を「ａ：１−ａ」で内分した時刻を代表ＴＴＬ値Ｔ（Ｐ）として設定する。
【００５４】
ここで、第２の実施例において、１レコードごとに３レコードまで書き込んだ場合の代表ＴＴＬ値Ｔ（Ｐ）の設定例について説明する。例えば、第１の実施例において、あるページに最初のレコードＲ１が書き込まれた場合、インデックス管理部１２０は、Ｔｍｉｎ＝０とし、ＴｍａｘをレコードＲ１のＴＴＬ値（Ｔ（Ｒ１））とする。また、インデックス管理部１２０は、代表ＴＴＬ値Ｔ（Ｐ）＝Ｔ（Ｒ１）とする。
【００５５】
次に、同一ページに２番目のレコードＲ２が書き込まれた場合、インデックス管理部１２０は、ＴｍｉｎをレコードＲ１およびＲ２のＴＴＬ値のうち最も早い方に設定する（Ｔｍｉｎ＝ｍｉｎ（Ｔ（Ｒ１），Ｔ（Ｒ２））。また、インデックス管理部１２０は、ＴｍａｘをレコードＲ１およびＲ２のＴＴＬ値のうち最も遅い方に設定する（Ｔｍａｘ＝ｍａｘ（Ｔ（Ｒ１），Ｔ（Ｒ２））。
【００５６】
また、第２の実施例において、インデックス管理部１２０は、ページ内のＴｍａｘとＴｍｉｎとの差分を算出し、その差分値に閾値ａを乗じた値を、Ｔｍｉｎに加算することで代表ＴＴＬ値Ｔ（Ｐ）を計算する（Ｔ（Ｐ）＝ａ×（Ｔｍａｘ−Ｔｍｉｎ）＋Ｔｍｉｎ）。また、インデックス管理部１２０は、上述したレコードＲ２の書き込み時に使用した情報を付加情報Ｄして第２インデックス１５０Ｃに保存する。このときの付加情報は、ＴｍｉｎおよびＴｍａｘである。
【００５７】
更に、同一ページに３番目のレコードＲ３を書き込む場合、インデックス管理部１２０は、レコードＲ３のＴＴＬ値Ｔ（Ｒ３）と、第２インデックス１５０Ｃから取得したＴｍｉｎ、Ｔｍａｘとを比較して、新たなＴｍｉｎとＴｍａｘとを決定する。また、インデックス管理部１２０は、レコードＲ３を登録したページの代表ＴＴＬ値Ｔ（Ｐ）を上述した計算式を用いて再計算する。以下、レコードが書き込まれるごとに同様の処理を行う。なお、インデックス管理部１２０は、代表ＴＴＬ値Ｔ（Ｐ）の計算において、上述したＴＴＬ値の最小値または最大値のうち、いずれかの値を任意に設定してもよい。
【００５８】
このように、第２の実施例では、ページ内における全レコードのＴＴＬ値の最大値と最小値とのうち一方または双方に基づいて、代表ＴＴＬ値Ｔ（Ｐ）を設定することで、ページ内の無効レコードを適切なタイミングで削除することができる。したがって、適切なタイミングでガベージコレクション処理を実施することができるため、処理負荷を軽減することができる。
【００５９】
（代表ＴＴＬ値を設定する第３の実施例）
次に、代表ＴＴＬ値を設定する第３の実施例について説明する。図９は、代表ＴＴＬ値を設定する第３の実施例を示す図である。第３の実施例では、同一のページに属するそれぞれのレコードのサイズ（レコード長）に基づいて代表ＴＴＬ値Ｔ（Ｐ）を設定する。例えば、インデックス管理部１２０は、そのページにおける各レコードのレコード長とＴＴＬ値との積の総和Ｓ（Ｐ）、および各レコードのレコード長の総和Ｌ（Ｐ）を計算し、代表ＴＴＬ値Ｔ（Ｐ）をＳ（Ｐ）／Ｌ（Ｐ）として設定する。また、第３の実施例における付加情報Ｄ（Ｐ）は、Ｌ（Ｐ）とする。
【００６０】
例えば、第３の実施例において、レコード長Ｌ（Ｒ）、ＴＴＬ値Ｔ（Ｒ）のレコードを追加する場合、インデックス管理部１２０は、新しいページ代表有効期限Ｔ（Ｐ’）を、「Ｔ（Ｐ’）＝Ｓ（Ｐ’）／Ｌ（Ｐ’）＝（Ｔ（Ｐ）×Ｄ（Ｐ）＋Ｔ（Ｒ）×Ｌ（Ｒ））／（Ｄ（Ｐ）＋Ｌ（Ｒ））」として計算する。ここでの付加情報Ｄ（Ｐ）は、Ｌ（Ｐ）と等価であるため、そのページ内の全てのレコードのレコード長の総和を保持している。なお、上記の計算式において、初回のレコード追加時は、Ｄ（Ｐ）＝０として計算される。
【００６１】
ここで、第３の実施例において、１レコードごとに３レコードまで書き込んだ場合の代表ＴＴＬ値Ｔ（Ｐ）の設定例について説明する。第１の実施例において、あるページに最初のレコードＲ１（レコード長Ｌ（Ｒ１））が書き込まれた場合、インデックス管理部１２０は、代表ＴＴＬ値Ｔ（Ｐ）をレコードＲ１のＴＴＬ値Ｔ（Ｒ１）とする。また、インデックス管理部１２０は、上述したレコードＲ１の書き込み時に使用した情報を付加情報Ｄ（Ｐ）として第２インデックス１５０Ｃに保存する。このときの付加情報Ｄ（Ｐ）は、Ｌ（Ｒ１）である。
【００６２】
次に、同一ページに、２番目のレコードＲ２（レコード長Ｌ（Ｒ２）（例えば、Ｌ（Ｒ２）＞Ｌ（Ｒ１）））が書き込まれた場合、インデックス管理部１２０は、代表ＴＴＬ値Ｔ（Ｐ）、これまで追加したレコード長の総和Ｄ（Ｐ）、レコードＲ２のＴＴＬ値Ｔ（Ｒ２）、およびレコード長Ｌ（Ｒ２）を用いて、計算した値Ｔ（Ｐ’）で代表ＴＴＬ値Ｔ（Ｐ）を再設定する（Ｔ（Ｐ’）＝（Ｔ（Ｐ）×Ｄ（Ｐ）＋Ｔ（Ｒ２）×Ｌ（Ｒ２））／（Ｄ（Ｐ）＋Ｌ（Ｒ２）））。なお、付加情報Ｄ（Ｐ）は、例えば第２インデックス１５０Ｃから取得される。また、レコードＲ２の書き込み後の付加情報Ｄ（Ｐ）は、「Ｄ（Ｐ）＝Ｄ（Ｐ）＋Ｌ（Ｒ２）」として設定される。すなわち、図９に示すように、再設定されたページ有効期限Ｔ（Ｐ’）は、Ｔ（Ｐ）とＴ（Ｒ２）をＬ（Ｒ２）：Ｌ（Ｐ）に内分する値として設定される。
【００６３】
更に、同一ページに新しいレコードＲ３（レコード長Ｌ（Ｒ３））が書き込まれた場合、インデックス管理部１２０は、代表ＴＴＬ値Ｔ（Ｐ）、これまで追加したレコード長の総和Ｄ（Ｐ）、レコードＲ３のＴＴＬ値Ｔ（Ｒ３）、およびレコード長Ｌ（Ｒ３）を用いて、上述した計算式によって同様にＴ（Ｐ’）を計算し、計算した値で代表ＴＴＬ値Ｔ（Ｐ）を再設定する。以下、レコードが書き込まれるごとに同様の処理を行う。
【００６４】
なお、第３の実施例においては、例えば、ユーザ等により指定可能な係数（重み）を用いて計算してもよい。例えば、インデックス管理部１２０は、係数βを設定し、設定した計数βをレコードのＴＴＬ値Ｔ（Ｒ）に付加して代表ＴＴＬ値Ｔ（Ｐ）を計算してもよい（β×Ｔ（Ｒ））。この場合、インデックス管理部１２０は、新しいページ代表有効期限Ｔ（Ｐ’）を「Ｔ（Ｐ’）＝（Ｔ（Ｐ）×Ｄ（Ｐ）＋β×Ｔ（Ｒ）×Ｌ（Ｒ））／（Ｄ（Ｐ）＋Ｌ（Ｒ））」として計算する。
【００６５】
これにより、インデックス管理部１２０は、レコードサイズと、有効期限とのうち、いずれかの値を優先させることができる。例えば、上述の例において、係数βを、β＞１とした場合には有効期限を優先させることができ、β＜１の場合にはレコード長を優先させることができる。
【００６６】
このように、第３の実施例では、ページ内における各レコードのレコードサイズに基づいて、代表ＴＴＬ値Ｔ（Ｐ）を設定することで、例えばレコードサイズが大きいレコードが多いページを優先して、ガベージコレクション処理を実施することができる。
【００６７】
なお、本実施形態における代表ＴＴＬ値の設定例は、上述した第１〜第３の実施例に限定されるものではなく、例えば各実施例のうち、全部または一部を他の実施例と組み合わせてもよい。また、インデックス管理部１２０は、同一のページに属するそれぞれのレコードのうち、ランダムに選択したレコードのＴＴＬ値を代表ＴＴＬ値に設定してもよい。また、インデックス管理部１２０は、クライアント３００からの指示やデータの種類、用途等に応じて各実施例を動的に変更させてもよい。上述した各実施例では、インデックス管理部１２０が代表ＴＴＬ値の設定を行うが、これに代えてレコード管理部１１０が行ってもよい。
【００６８】
次に、ガベージコレクション処理における無効レコードの削除の具体例について、図を用いて説明する。図１０は、削除対象ページの抽出例を説明するための図である。なお、図１０（Ａ）は、レコード管理情報１５０Ａで管理される記憶装置２００に記憶されたレコードの一例を示す。図１０（Ａ）の例では、各ページ（ＩＤ（Ｐ））に記憶されたレコードが示されている。また、図１０（Ｂ）は、第１インデックス１５０Ｂを示し、図１０（Ｃ）は、第２インデックス１５０Ｃを示す。
【００６９】
なお、以下の例では、便宜上、レコード管理情報１５０Ａ内にある複数のページのうち、ページＩＤ（Ｐ）＝１〜３のそれぞれに含まれるレコード例を示すが、レコード数については、これに限定されるものではない。また、代表ＴＴＬ値の設定については、上述した第１の実施例における設定手法を用いるものとし、無効レコードの割合の閾値ａ＝０．３とする。また、現在の時刻を「１／２０  ２２：３０：００」として説明する。
【００７０】
図１０（Ａ）の例では、ページＩＤ（Ｐ）＝１として、Ｒｅｃｏｒｄ１−１〜Ｒｅｃｏｒｄ１−６が示されているが、レコード数については、これに限定されない。ここで、Ｒｅｃｏｒｄ１−１〜Ｒｅｃｏｒｄ１−４は、無効レコードであり、Ｒｅｃｏｒｄ１−５およびＲｅｃｏｒｄ１−６は、有効期限を徒過していないレコード（有効レコード）であるとする。
【００７１】
インデックス管理部１２０は、第１の実施例における設定手法により、Ｒｅｃｏｒｄ１−５に設定されたＴＴＬ値を、代表ＴＴＬ値Ｔ（Ｐ）に設定したとする。この場合、インデックス管理部１２０は、Ｒｅｃｏｒｄ１−５に設定されたＴＴＬ値を、ページＩＤ（ＩＤ（Ｐ））と対応付けて第１インデックス１５０Ｂに出力する。また、インデックス管理部１２０は、上述した代表ＴＴＬ値Ｔ（Ｐ）と、ページＩＤ（ＩＤ（Ｐ））と、代表ＴＴＬ値の設定時に用いた情報を含む付加情報Ｄ（Ｐ）とを対応付けて第２インデックス１５０Ｃに出力する。
【００７２】
また、ページＩＤ（Ｐ）＝２において、Ｒｅｃｏｒｄ２−１〜Ｒｅｃｏｒｄ２−３は、無効レコードであり、Ｒｅｃｏｒｄ２−４〜Ｒｅｃｏｒｄ２−６は、有効レコードであるとする。また、インデックス管理部１２０は、第１の実施例における設定手法により、Ｒｅｃｏｒｄ２−３に設定されたＴＴＬ値を、代表ＴＴＬ値Ｔ（Ｐ）に設定したとする。この場合、インデックス管理部１２０は、Ｒｅｃｏｒｄ２−３に設定されたＴＴＬ値を、ページＩＤ（ＩＤ（Ｐ））と対応付けて第１インデックス１５０Ｂに出力する。また、インデックス管理部１２０は、上述した代表ＴＴＬ値Ｔ（Ｐ）と、ページＩＤ（ＩＤ（Ｐ））と、代表ＴＴＬ値の設定時に用いた情報を含む付加情報Ｄ（Ｐ）とを対応付けて第２インデックス１５０Ｃに出力する。
【００７３】
また、ページＩＤ（Ｐ）＝３において、Ｒｅｃｏｒｄ３−１〜Ｒｅｃｏｒｄ３−５は、無効レコードであり、Ｒｅｃｏｒｄ３−６は、有効レコードであるとする。また、インデックス管理部１２０は、第１の実施例における設定手法により、Ｒｅｃｏｒｄ３−５に設定されたＴＴＬ値を、代表ＴＴＬ値Ｔ（Ｐ）に設定したとする。この場合、インデックス管理部１２０は、Ｒｅｃｏｒｄ３−５に設定されたＴＴＬ値を、ページＩＤ（ＩＤ（Ｐ））と対応付けて第１インデックス１５０Ｂに出力する。また、インデックス管理部１２０は、上述した代表ＴＴＬ値Ｔ（Ｐ）と、ページＩＤ（ＩＤ（Ｐ））と、代表ＴＴＬ値の設定時に用いた情報を含む付加情報Ｄ（Ｐ）とを対応付けて第２インデックス１５０Ｃに出力する。
【００７４】
第１インデックス１５０Ｂには、上述した各ページを代表する代表ＴＴＬ値（Ｔ（Ｐ））と、ページＩＤ（ＩＤ（Ｐ））とが対応付けられて保存される。また、第１インデックス１５０Ｂは、例えば代表ＴＴＬ値ごとに昇順にソートされる。
【００７５】
また、第２インデックス１５０Ｃには、ページＩＤ（ＩＤ（Ｐ））を基準に、代表ＴＴＬ値Ｔ（Ｐ）と、付加情報Ｄ（Ｐ）とが対応付けられて保存される。付加情報Ａ１〜Ａ３の内容としては、例えば上述したＴｍｉｎ、Ｔｍａｘ、Ｃ１、Ｃ２であるが、これに限定されるものではない。また、第２インデックス１５０Ｃは、例えばページＩＤ（Ｐ）ごとに昇順にソートされる。
【００７６】
無効レコード削除部１３０は、上述した第１インデックス１５０Ｂを用いて削除対象のページを抽出し、抽出したページ内に存在する有効期限を徒過したレコードの削除を行う。例えば、図１０（Ｂ）の例の場合、現在時刻「１／２０  ２２：３０：００」より前の代表ＴＴＬ値を有するページＩＤは、ＩＤ（Ｐ）＝２および３となる。したがって、無効レコード削除部１３０は、ＩＤ（Ｐ）＝２および３に含まれるレコードから無効レコードを削除する。
【００７７】
図１１は、削除処理実行後の各ページの様子とインデックスの更新例を示す図である。図１１の例では、上述した図１０の例のうち、ＩＤ（Ｐ）＝２および３に対して無効レコードを削除した各ページの様子と、無効レコードの削除後に、第１インデックス１５０Ｂおよび第２インデックス１５０Ｃの再生成を行った例を示す。
【００７８】
図１１（Ａ）において、ＩＤ（Ｐ）＝２には、Ｒｅｃｏｒｄ２−４〜Ｒｅｃｏｒｄ２−６が、有効レコードとして存在する。この場合、インデックス管理部１２０は、上述した第１の実施例に示す設定手法により、Ｒｅｃｏｒｄ２−５に設定されたＴＴＬ値を代表ＴＴＬ値Ｔ（Ｐ）として設定し、ページＩＤ（ＩＤ（Ｐ））とともに第１インデックス１５０Ｂに出力する。また、インデックス管理部１２０は、上述した代表ＴＴＬ値Ｔ（Ｐ）と、ページＩＤ（ＩＤ（Ｐ））と、付加情報Ｄ（Ｐ）とを、第２インデックス１５０Ｃに出力する。
【００７９】
また、ＩＤ（Ｐ）＝３には、Ｒｅｃｏｒｄ３−６が、有効レコードとして存在する。この場合、ページ内のレコードが１つしか存在しないため、インデックス管理部１２０は、Ｒｅｃｏｒｄ３−６に設定されたＴＴＬ値を代表ＴＴＬ値Ｔ（Ｐ）として、ページＩＤ（ＩＤ（Ｐ））とともに第１インデックス１５０Ｂに出力する。また、インデックス管理部１２０は、上述した代表ＴＴＬ値と、ページＩＤと、付加情報Ｄ（Ｐ）とを、第２インデックス１５０Ｃに出力する。
【００８０】
無効レコード削除部１３０は、新たに生成した第１インデックス１５０Ｂおよび第２インデックス１５０Ｃに基づいて、所定のタイミングで無効レコードの削除を行うページを抽出し、抽出したページに対して有効期限切れのレコードの削除を行う。
【００８１】
また、図１２は、ページにレコードが追加された場合のインデックスの生成例を示す図である。図１２では、図１０に示す各ページのうち、ページＩＤ（Ｐ）＝１に対して新規に１つのレコード（Ｒｅｃｏｒｄ１−７）を追加した例を示す。
【００８２】
この場合、インデックス管理部１２０は、レコードの追加されたページＩＤ（Ｐ）＝１に対し、代表ＴＴＬ値の再計算を行い、計算された代表ＴＴＬ値に基づいて、第１インデックス１５０Ｂおよび第２インデックス１５０Ｃを更新する。なお、ＩＤ（Ｐ）＝２および３については、図１０と同じ内容であるため、第１インデックス１５０Ｂおよび第２インデックス１５０Ｃに含まれる対象のデータについては更新されず、ＩＤ（Ｐ）＝１に対応するデータに対して更新が行われる。
【００８３】
例えば、インデックス管理部１２０は、上述した第１の実施例の設定手法により、新たに追加したレコード（Ｒｅｃｏｒｄ１−７）のＴＴＬ値を代表ＴＴＬ値として設定したとする。この場合、インデックス管理部１２０は、第１インデックス１５０Ｂおよび第２インデックス１５０ＣにおけるＩＤ（Ｐ）＝１における管理情報を更新する。これにより、無効レコード削除部１３０は、更新された第１インデックス１５０Ｂを用いて無効レコードの削除を行うページを抽出することができ、抽出したページに含まれる無効レコードを削除することができる。なお、図１２の例では、現在時刻を「１／２０  ２２：３０：００」とした場合、削除対象のページは、ＩＤ（Ｐ）＝１〜３となる。
【００８４】
次に、データベース管理装置１００の各種処理内容について、フローチャートを用いて具体的に説明する。図１３は、データベース管理装置１００におけるレコード書き込み処理（新規登録）の一例を示すフローチャートである。図１３の例において、レコード管理部１１０は、クライアント３００からレコードの書き込み指示を受け付ける（ステップＳ１００）。
【００８５】
次に、レコード管理部１１０は、レコードに関する管理情報を記憶部１５０に記憶されたレコード管理情報１５０Ａに書き込む（ステップＳ１０２）。なお、ステップＳ１０２の処理では、レコード管理部１１０は、そのレコードを記憶したテーブルおよびページの情報をレコード管理情報１５０Ａに書き込む。管理情報には、上述したようにページＩＤと、レコードＩＤと、必要に応じてＴＴＬ値とを含む。
【００８６】
次に、レコード管理部１１０は、レコードを記憶装置２００に書き込む（ステップＳ１０４）。ステップＳ１０４では、レコード管理部１１０は、レコード管理情報１５０ＡのページＩＤやレコードＩＤに対応して割り当てられたデータ記憶領域２１０の領域にレコードを書き込む。なお、レコード管理部１１０は、記憶装置２００に対してレコードを書き込ませるコマンドを発行する。上述したステップＳ１０２およびステップＳ１０４の処理は、逆の順序で行ってもよく、同時に行ってもよい。
【００８７】
次に、レコード管理部１１０は、レコードの書き込みに成功したか否かを判定する（ステップＳ１０６）。レコードの書き込みに成功した場合、レコード管理部１１０は、書き込まれたレコードにＴＴＬ値が設定されているか否かを判定する（ステップＳ１０８）。ＴＴＬ値が設定されている場合、レコード管理部１１０は、書き込んだレコードに割り当てたページＩＤと、レコードＩＤと、ＴＴＬ値とを、インデックス生成指示とともにインデックス管理部１２０に通知し、インデックス管理部１２０におけるインデックス生成処理を実行する（ステップＳ１１０）、インデックス生成処理の詳細については、後述する。
【００８８】
ステップＳ１０８の処理において、ＴＴＬ値が設定されていない場合、またはステップＳ１１０の処理後、レコード管理部１１０は、レコードの書き込みが成功したことを示す情報をクライアント３００に出力する（ステップＳ１１２）。また、上述したステップＳ１０６の処理において、レコードの書き込みに成功しなかった場合、レコード管理部１１０は、書き込みが失敗した原因に対応するエラー情報をクライアント３００に出力する（ステップＳ１１４）。書き込みが失敗した原因としては、例えば記憶装置２００の空き容量が不足している場合があるが、これに限定されるものではない。
【００８９】
図１４は、インデックス生成処理の一例を示すフローチャートである。図１４の例において、インデックス管理部１２０は、インデックス生成指示を受け付ける（ステップＳ２００）。インデックス管理部１２０は、インデックス生成指示とともに受け付けたページＩＤが記憶部１５０に記憶された第１インデックス１５０Ｂに存在するか否かを判定する（ステップＳ２０２）。
【００９０】
ページＩＤが第１インデックス１５０Ｂに存在する場合、第１インデックス１５０Ｂの対象ページに対応するインデックスを更新する（ステップＳ２０４）。なお、ステップＳ２０４の処理では、記憶部１５０に記憶された第２インデックス１５０Ｃの付加情報を用いてインデックスを更新してもよい。また、第１インデックス１５０Ｂを更新した後、第２インデックス１５０Ｃを更新してもよい。
【００９１】
また、ページＩＤが第１インデックス１５０Ｂに存在しない場合、第１インデックス１５０Ｂに、該当ページＩＤに対するインデックスを新規作成する（ステップＳ２０６）。作成された第１インデックス１５０Ｂは、記憶部１５０に記憶される。なお、ステップＳ２０６の処理では、第１インデックス１５０Ｂを新規作成した後、第２インデックス１５０Ｃを新規作成してもよい。この場合、作成された第２インデックス１５０Ｃも、記憶部１５０に記憶される。
【００９２】
次に、データベース管理装置１００におけるレコード書き込み処理（更新）の一例について、フローチャートを用いて説明する。図１５は、データベース管理装置１００におけるレコード書き込み処理（更新）の一例を示すフローチャートである。なお、以下の説明では、上述した書き込み処理（新規登録）と区別するため、更新に関する書き込み指示を更新指示として説明する。
【００９３】
図１５の例において、レコード管理部１１０は、レコードの更新指示を受け付けると、（ステップＳ３００）、記憶部１５０に記憶されたレコード管理情報１５０Ａから対象レコードの管理情報を抽出し、抽出した管理情報を更新する（ステップＳ３０２）。なお、ステップＳ３０２の処理では、例えばＴＴＬ値が更新された場合には、レコード内のＴＴＬ値を更新する。また、レコード管理部１１０は、記憶装置２００に記憶されたレコードを更新する。（ステップＳ３０４）。なお、上述したステップＳ３０２およびステップＳ３０４の処理は、逆の順序で行ってもよく、同時に行ってもよい。
【００９４】
次に、レコード管理部１１０は、レコードの更新に成功したか否かを判定する（ステップＳ３０６）。レコードの更新に成功した場合、レコード管理部１１０は、更新したレコードにＴＴＬ値が設定されていたか否かを判定する（ステップＳ３０８）。ＴＴＬ値が設定されていた場合、レコード管理部１１０は、そのレコードが属するページＩＤ、レコードＩＤ、およびＴＴＬ値を、インデックス管理部１２０に出力し、上述したインデックス生成処理を行う（ステップＳ３１０）。
【００９５】
ステップＳ３０８の処理において、更新したレコードにＴＴＬ値が設定されていない場合、またはステップＳ３１０の処理後、レコード管理部１１０は、レコードの更新が成功したことを示す情報をクライアント３００に出力する（ステップＳ３１２）。また、上述したステップＳ３０６の処理において、削除が成功しなかった場合、レコード管理部１１０は、削除が失敗した原因に対応するエラー情報をクライアント３００に出力する（ステップＳ３１４）。更新が失敗した原因としては、例えば、記憶装置２００が排他制御されていてアクセスできない場合があるが、これに限定されるものではない。
【００９６】
次に、データベース管理装置１００におけるレコード読み出し処理についてフローチャートを用いて説明する。図１６は、データベース管理装置１００におけるレコード読み出し処理の一例を示すフローチャートである。
【００９７】
図１６の例において、レコード管理部１１０は、クライアント３００からのレコードの読み出し指示を受け付けると（ステップＳ４００）、記憶部１５０に記憶されたレコード管理情報１５０Ａを参照し、対象レコードの管理情報を取得する（ステップＳ４０２）。
【００９８】
次に、レコード管理部１１０は、対象レコードの管理情報の取得に成功したか否かを判定する（ステップＳ４０４）。管理情報の取得に成功した場合、レコード管理部１１０は、その対象レコードのＴＴＬ値を取得し（ステップＳ４０６）、現在時刻がＴＴＬ値を超えているか否かを判定する（ステップＳ４０８）。
【００９９】
現在時刻がＴＴＬ値を超えている場合、そのレコードは有効期限を徒過しているため、レコード管理部１１０は、レコードが存在しない旨のエラー情報をクライアント３００に出力する（ステップＳ４１０）。また、現在時刻がＴＴＬ値を超えていない場合、有効レコードであるため、レコード管理部１１０は、記憶装置２００から対象レコードを取得し、取得した対象レコードをクライアント３００に出力する（ステップＳ４１２）。
【０１００】
また、ステップＳ４０４の処理において、管理情報の取得に成功しなかった場合、失敗した原因に基づくエラー情報をクライアント３００に出力する（ステップＳ４１４）。管理情報の取得が失敗した原因としては、例えばレコード管理情報１５０Ａに対象レコードの管理情報が存在していない場合があるが、これに限定されるものではない。
【０１０１】
次に、データベース管理装置１００におけるレコード削除処理の一例についてフローチャートを用いて説明する。図１７は、データベース管理装置１００におけるレコード削除処理の一例を示すフローチャートである。なお、図１７の例は、例えばガベージコレクション処理における周期的なレコードの削除ではなく、クライアント３００からの削除指示に基づいて、対応するレコードを削除する処理である。この処理において、削除されるレコードは、有効レコードでも無効レコードでもよい。
【０１０２】
図１７の例において、レコード管理部１１０は、レコードの削除指示を受け付けると（ステップＳ５００）、記憶部１５０に記憶されたレコード管理情報１５０Ａを参照し、対象レコードの管理情報を削除する（ステップＳ５０２）。また、レコード管理部１１０は、対象レコードを記憶装置２００から削除する（ステップＳ５０４）。なお、上述したステップＳ５０２およびステップＳ５０４の処理は、逆の順序で行ってもよく、同時に行ってもよい。
【０１０３】
次に、レコード管理部１１０は、レコードの削除に成功したか否かを判定する（ステップＳ５０６）。レコードの削除に成功した場合、レコード管理部１１０は、削除したレコードにＴＴＬ値が設定されていたか否かを判定する（ステップＳ５０８）。ＴＴＬ値が設定されていた場合、そのレコードが属するページＩＤ、レコードＩＤ、およびＴＴＬ値を、インデックス管理部１２０に出力し、上述したインデックス生成処理を行う（ステップＳ５１０）。
【０１０４】
ステップＳ５０８の処理において、ＴＴＬ値が設定されていない場合、またはステップＳ５１０の処理後、レコード管理部１１０は、レコードの削除が成功したことを示す情報をクライアント３００に出力する（ステップＳ５１２）。また、上述したステップＳ５０６の処理において、削除が成功しなかった場合、レコード管理部１１０は、削除が失敗した原因に対応するエラー情報をクライアント３００に出力する（ステップＳ５１４）。削除が失敗した原因としては、例えば対象レコードがすでに削除されている場合があるが、これに限定されるものではない。
【０１０５】
次に、データベース管理装置１００における無効レコード削除処理についてフローチャートを用いて説明する。図１８は、データベース管理装置１００における無効レコード削除処理の一例を示すフローチャートである。図１８では、ガベージコレクション処理のように、周期的に行われる無効レコードの削除処理の一例を示す。
【０１０６】
図１８の例において、無効レコード削除部１３０は、第１インデックス１５０Ｂにエントリが存在するか否かを判定する（ステップＳ６００）。なお、エントリとは、第１インデックス１５０Ｂに含まれる「代表ＴＴＬ値」と「ページＩＤ」との組を含む情報である。第１インデックス１５０Ｂにエントリが存在する場合、無効レコード削除部１３０は、第１インデックス１５０Ｂの中からエントリを１つ取得し（ステップＳ６０２）、取得したエントリの代表ＴＴＬ値を取得する（ステップＳ６０４）。
【０１０７】
次に、無効レコード削除部１３０は、現在時刻が代表ＴＴＬ値を超えているか否かを判定する（ステップＳ６０６）。現在時刻が代表ＴＴＬ値を超えている場合、無効レコード削除部１３０は、レコード管理情報１５０Ａを参照し、そのエントリに対応するページＩＤに属する全レコードをスキャンし、無効レコードを削除する（ステップＳ６０８）。また、無効レコード削除部１３０は、記憶装置２００に記憶された対象レコードを削除する（ステップＳ６１０）。なお、上述したステップＳ６０８およびステップＳ６１０の処理は、逆の順序で行ってもよく、同時に行ってもよい。
【０１０８】
次に、無効レコード削除部１３０は、削除されたレコードが属していたページＩＤ、そのページＩＤに属するレコードのレコードＩＤおよびＴＴＬ値を、インデックス管理部１２０に出力し、インデックス管理部１２０により、インデックスを更新させる（ステップＳ６１２）。ステップＳ６１２の処理では、例えば上述したインデックス生成処理と同様に、第１インデックス１５０Ｂおよび第２インデックス１５０Ｃを更新する。
【０１０９】
ステップＳ６０６の処理において、現在時刻が代表ＴＴＬ値を超えていない場合、または、ステップＳ６１２の処理後、無効レコード削除部１３０は、第１インデックス１５０Ｂ内の全てのエントリに対して処理を行ったか否かを判定する（ステップＳ６１４）。
【０１１０】
全てのエントリに対して処理されていない場合、無効レコード削除部１３０は、ステップＳ６０２の処理に戻り、まだ処理されていない他のエントリを１つ取得して、以降の処理を行う。また、無効レコード削除部１３０は、第１インデックス１５０Ｂにおいて、スエントリが存在しない場合、また、ステップＳ６１４の処理において、第１インデックス１５０Ｂ内の全てのエントリに対して処理された場合、本フローチャートの処理を終了する。また、ステップＳ６００において、第１インデックス１５０Ｂにエントリが存在しない場合にも、本フローチャートの処理を終了する。また、図１８の例において、１回の削除処理で削除可能なレコードの最大数が設定される場合、レコードの削除数が最大数に達した時点で、無効レコードの削除処理を終了してもよい。これにより、無効レコード削除部１３０は、無効レコードの削除処理に要する時間を調整することができる。
【０１１１】
以上説明した少なくとも一つの実施形態によれば、記憶装置２００に対してレコードの書き込みまたは読み出しを行うレコード管理部１１０と、レコード管理部１１０が扱うレコードに対してそれぞれ割り当てられた有効期限に基づいて、レコードをグループ化したデータグループの代表有効期限を決定するインデックス管理部１２０と、インデックス管理部１２０により決定された代表有効期限に基づいて、削除対象のデータグループを抽出し、抽出した削除対象のデータグループに含まれるデータのうち有効期限を徒過したデータを削除する無効レコード削除部１３０とを持つことにより、無効レコードの削除に関する処理負荷を軽減することができる。
【０１１２】
具体的には、少なくとも一つの実施形態によれば、無効レコードがデータグループ内にそれほど多くない場合（閾値以下の場合）には、無効レコードの物理的な削除を遅延させることができる。また、少なくとも一つの実施形態によれば、ページ等のデータグループ単位でインデックスのエントリを管理するため、インデックスのデータ量を軽減することができる。また、少なくとも一つの実施形態によれば、ページ内にレコードが有効期限順に整列されていない場合でも、スキャン対象のページを限定することができ、効率的に無効レコードを削除することができる。
【０１１３】
なお、上述したデータベース管理システム１は、複数の分散化されたデータベース管理装置１００で構成された場合でも、上述した各種処理と同様の処理を行うことができ、それによって同様の効果を得ることができる。
【０１１４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１１５】
１…データベース管理システム、１００…データベース管理装置、１１０…レコード管理部（データ処理部）、１２０…インデックス管理部（代表有効期限決定部）、１３０…無効レコード削除部（削除部）、１４０…通信部、１５０…記憶部、２００…記憶装置、２１０…データ記憶領域、３００…クライアント
【図１】
2018005552.tif 000003
【図２】
2018005552.tif 000004
【図３】
2018005552.tif 000005
【図４】
2018005552.tif 000006
【図５】
2018005552.tif 000007
【図６】
2018005552.tif 000008
【図７】
2018005552.tif 000009
【図８】
2018005552.tif 000010
【図９】
2018005552.tif 000011
【図１０】
2018005552.tif 000012
【図１１】
2018005552.tif 000013
【図１２】
2018005552.tif 000014
【図１３】
2018005552.tif 000015
【図１４】
2018005552.tif 000016
【図１５】
2018005552.tif 000017
【図１６】
2018005552.tif 000018
【図１７】
2018005552.tif 000019
【図１８】
2018005552.tif 000020