(57)【特許請求の範囲】
【請求項１】
プロセッサとメモリを備えた計算機が、前記計算機に接続された記憶装置に格納されたデータベースを管理するデータベース管理方法であって、
前記計算機が、前記データベースに挿入したデータの格納位置を格納位置管理情報に格納する第１のステップと、
前記計算機が、前記データベースにデータを挿入したときの情報を前記格納位置に関連づけて管理点情報に格納する第２のステップと、
前記計算機が、前記データベースのデータを削除する要求として前記管理点情報の要素を含む削除要求を受け付ける第３のステップと、
前記計算機が、前記削除要求に含まれる前記要素から前記管理点情報を検索し、管理点情報を特定する第４のステップと、
前記計算機が、前記特定した管理点情報から削除対象のデータの格納位置を取得する第５のステップと、
前記計算機が、前記取得した格納位置を含む前記格納位置管理情報を抽出する第６のステップと、
前記計算機が、前記抽出した格納位置管理情報を初期化する第７のステップと、
前記計算機が、前記特定した管理点情報を削除する第８のステップと、
を含み、
前記第２のステップは、
前記データベースにデータを挿入したときの開始日時と、前記格納位置のうち挿入開始位置と、前記格納位置のうち挿入終了位置と、前記データベースを識別する情報と、を新たな管理点情報として格納することを特徴とするデータベースの管理方法。
【請求項２】
請求項１に記載のデータベース管理方法であって、
前記管理点情報は、
前記格納位置のうち挿入開始位置と、前記格納位置のうち挿入終了位置と、を列情報として格納することを特徴とするデータベースの管理方法。
【請求項３】
プロセッサとメモリを備えた計算機が、前記計算機に接続された記憶装置に格納されたデータベースを管理するデータベース管理方法であって、
前記計算機が、前記データベースに挿入したデータの格納位置を格納位置管理情報に格納する第１のステップと、
前記計算機が、前記データベースにデータを挿入したときの情報を前記格納位置に関連づけて管理点情報に格納する第２のステップと、
前記計算機が、前記データベースのデータを削除する要求として前記管理点情報の要素を含む削除要求を受け付ける第３のステップと、
前記計算機が、前記削除要求に含まれる前記要素から前記管理点情報を検索し、管理点情報を特定する第４のステップと、
前記計算機が、前記特定した管理点情報から削除対象のデータの格納位置を取得する第５のステップと、
前記計算機が、前記取得した格納位置を含む前記格納位置管理情報を抽出する第６のステップと、
前記計算機が、前記抽出した格納位置管理情報を初期化する第７のステップと、
前記計算機が、前記特定した管理点情報を削除する第８のステップと、
を含み、
前記第２のステップは、
前記データベースにデータを挿入したときの開始日時と、前記データベースにデータを挿入したときの終了日時と、前記格納位置のうち挿入開始位置と、前記格納位置のうち挿入終了位置と、前記データベースを識別する情報と、を新たな管理点情報として格納することを特徴とするデータベースの管理方法。
【請求項４】
請求項３に記載のデータベース管理方法であって、
前記第３のステップは、
前記削除要求が前記管理点情報の要素として前記開始日時と終了日時の少なくとも一方を含むことを特徴とするデータベース管理方法。
【請求項５】
プロセッサとメモリを備えた計算機に接続された記憶装置にデータベースを格納し、前記計算機のデータベース管理部で前記データベースを管理するデータベース管理装置であって、
前記データベース管理部は、
前記データベースに挿入したデータの格納位置を格納位置管理情報に格納するデータ挿入部と、
前記データベースにデータを挿入したときの情報を前記格納位置に関連づけて管理点情報に格納する管理点管理部と、
前記データベースのデータを削除する要求として前記管理点情報の要素を含む削除要求を受け付けるデータ操作受付部と、を備え、
前記管理点管理部は、
前記削除要求に含まれる前記要素から前記管理点情報を検索し、管理点情報を特定し、当該特定した管理点情報から削除対象のデータの格納位置を取得し、前記取得した格納位置を含む前記格納位置管理情報を抽出し、当該抽出した格納位置管理情報を初期化して、前記データベースにデータを挿入したときには、前記データベースにデータを挿入したときの開始日時と、前記格納位置のうち挿入開始位置と、前記格納位置のうち挿入終了位置と、前記データベースを識別する情報と、を新たな管理点情報として格納することを特徴とするデータベースの管理装置。
【請求項６】
プロセッサとメモリを備えた計算機に接続された記憶装置にデータベースを格納し、前記計算機のデータベース管理部で前記データベースを管理するデータベース管理装置であって、
前記データベース管理部は、
前記データベースに挿入したデータの格納位置を格納位置管理情報に格納するデータ挿入部と、
前記データベースにデータを挿入したときの情報を前記格納位置に関連づけて管理点情報に格納する管理点管理部と、
前記データベースのデータを削除する要求として前記管理点情報の要素を含む削除要求を受け付けるデータ操作受付部と、を備え、
前記管理点管理部は、
前記削除要求に含まれる前記要素から前記管理点情報を検索し、管理点情報を特定し、当該特定した管理点情報から削除対象のデータの格納位置を取得し、前記取得した格納位置を含む前記格納位置管理情報を抽出し、当該抽出した格納位置管理情報を初期化して、前記データベースにデータを挿入したときには、前記データベースにデータを挿入したときの開始日時と、前記データベースにデータを挿入したときの終了日時と、前記格納位置のうち挿入開始位置と、前記格納位置のうち挿入終了位置と、前記データベースを識別する情報と、を新たな管理点情報として格納することを特徴とするデータベースの管理装置。
【請求項７】
プロセッサとメモリを備えた計算機でデータベースを管理するプログラムであって、
前記データベースに挿入したデータの格納位置を格納位置管理情報に格納する第１の手順と、
前記データベースにデータを挿入したときの情報を前記格納位置に関連づけて管理点情報に格納する第２の手順と、
前記データベースのデータを削除する要求として前記管理点情報の要素を含む削除要求を受け付ける第３の手順と、
前記削除要求に含まれる前記要素から前記管理点情報を検索し、管理点情報を特定する第４の手順と、
前記特定した管理点情報から削除対象のデータの格納位置を取得する第５の手順と、
前記取得した格納位置を含む前記格納位置管理情報を抽出する第６の手順と、
前記抽出した格納位置管理情報を初期化する第７の手順と、
前記特定した管理点情報を削除する第８の手順と、
を前記計算機に実行させ、
前記第２の手順は、
前記データベースにデータを挿入したときの開始日時と、前記格納位置のうち挿入開始位置と、前記格納位置のうち挿入終了位置と、前記データベースを識別する情報と、を新たな管理点情報として格納することを特徴とするプログラム。
【請求項８】
プロセッサとメモリを備えた計算機でデータベースを管理するプログラムであって、
前記データベースに挿入したデータの格納位置を格納位置管理情報に格納する第１の手順と、
前記データベースにデータを挿入したときの情報を前記格納位置に関連づけて管理点情報に格納する第２の手順と、
前記データベースのデータを削除する要求として前記管理点情報の要素を含む削除要求を受け付ける第３の手順と、
前記削除要求に含まれる前記要素から前記管理点情報を検索し、管理点情報を特定する第４の手順と、
前記特定した管理点情報から削除対象のデータの格納位置を取得する第５の手順と、
前記取得した格納位置を含む前記格納位置管理情報を抽出する第６の手順と、
前記抽出した格納位置管理情報を初期化する第７の手順と、
前記特定した管理点情報を削除する第８の手順と、
を前記計算機に実行させ、
前記第２の手順は、
前記データベースにデータを挿入したときの開始日時と、前記データベースにデータを挿入したときの終了日時と、前記格納位置のうち挿入開始位置と、前記格納位置のうち挿入終了位置と、前記データベースを識別する情報と、を新たな管理点情報として格納することを特徴とすることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースにデータを登録し、データベース上のデータを削除するデータベースの管理方法及び装置の改良に関する。
【背景技術】
【０００２】
近年のデータベースでは、データをペタ・バイト（以下、ＰＢyte）単位で取り扱う大規模なデータベースに対するニーズが高まりつつある。このような大規模データベースにおいては、数ギガ・バイト（以下、ＧＢｙｔｅ）単位のデータを追加または削除するような運用が想定される。例えば、小売店における日々の売上データを追加し、古くなった売上データは削除する、といったような運用が挙げられる。このような場合、データ削除時には、削除したいデータをユーザが条件に指定して削除処理を行う。
【０００３】
従来のデータ削除方法として、データ一括挿入処理時に当該一括挿入処理にて挿入したデータレコード群の情報を管理する一括レコード型データを生成し、データ削除時には、一括レコード型データを条件に指定することで、条件に合致する一括レコード型データで管理しているデータレコード群の情報を削除する手法が知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−０６５９０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来例では、データの削除処理を行う前に、削除したいデータを管理している一括レコード型データのＩＤを確認する作業を必要とする。ここで、一括レコード型データでは、利用者に対してデータのＩＤが明示的に通知していないので、利用者は、いずれのＩＤにどのようなデータが格納されているかを確認する必要がある。このため、上述のような大規模なデータベースでは、ＩＤの数が膨大であり利用者がデータの格納場所であるＩＤを特定するのに多大な労力を要するという問題があった。
【０００６】
そこで本発明は、上記問題点に鑑みてなされたもので、データベースの利用者がデータの格納場所を意識することなく所望のデータを容易に削除可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、プロセッサとメモリを備えた計算機が、前記計算機に接続された記憶装置に格納されたデータベースを管理するデータベース管理方法であって、前記計算機が、前記データベースに挿入したデータの格納位置を格納位置管理情報に格納する第１のステップと、前記計算機が、前記データベースにデータを挿入したときの情報を前記格納位置に関連づけて管理点情報に格納する第２のステップと、前記計算機が、前記データベースのデータを削除する要求として前記管理点情報の要素を含む削除要求を受け付ける第３のステップと、前記計算機が、前記削除要求に含まれる前記要素から前記管理点情報を検索し、管理点情報を特定する第４のステップと、前記計算機が、前記特定した管理点情報から削除対象のデータの格納位置を取得する第５のステップと、前記計算機が、前記取得した格納位置を含む前記格納位置管理情報を抽出する第６のステップと、前記計算機が、前記抽出した格納位置管理情報を初期化する第７のステップと、前記計算機が、前記特定した管理点情報を削除する第８のステップと、を含み、前記第２のステップは、前記データベースにデータを挿入したときの開始日時と、前記格納位置のうち挿入開始位置と、前記格納位置のうち挿入終了位置と、前記データベースを識別する情報と、を新たな管理点情報として格納する。
【発明の効果】
【０００８】
したがって、本発明は、データ挿入処理時にデータ格納領域管理用の管理点情報を生成し、データベースの利用者が理解可能な管理点情報の要素と、データの挿入位置を一意で対応させる。データベースのデータを削除する際にはデータベースの利用者が理解可能な管理情報の要素を削除条件として指定することで、格納位置を意識させずにデータの高速な一括削除を実現できる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態を示し、データベースを提供する計算機システムの一例を示すブロック図である。
【図２】本発明の実施形態を示し、データベースにデータを一括して挿入する処理の概要を示す流れ図である。
【図３】本発明の実施形態を示し、データベースにデータを一括して削除する処理の概要を示す流れ図である。
【図４】本発明の実施形態を示し、データベースにデータを一括して削除する指令の一例を示す説明図である。
【図５】本発明の実施形態を示し、データベースを管理する管理点管理表の一例を示す説明図である。
【図６】本発明の実施形態を示し、データベースのセグメント情報を管理するセグメント情報管理テーブルの一例を示す説明図である。
【図７】本発明の実施形態を示し、データベースの表情報を管理する表情報管理テーブルの一例を示す説明図である。
【図８】本発明の実施形態を示し、データベース管理装置が行うデータベースの一括挿入処理の概要を示すフローチャートである。
【図９】本発明の実施形態を示し、図８のステップＳ８０２で行われる必要セグメント数計算処理の一例を示すフローチャートである。
【図１０】本発明の実施形態を示し、図８のステップＳ８０３で行われるデータ挿入セグメント確保処理の一例を示すフローチャートである。
【図１１】本発明の実施形態を示し、図８のステップＳ８０４で行われる管理点レコード生成処理の一例を示すフローチャートである。
【図１２】本発明の実施形態を示し、図８のステップＳ８０５で行われるデータ挿入処理の一例を示すフローチャートである。
【図１３】本発明の実施形態を示し、図８のステップＳ８０７で行われる管理点レコード更新処理の一例を示すフローチャートである。
【図１４】本発明の実施形態を示し、データベース管理装置が行うデータベースの一括削除処理の一例を示すフローチャートである。
【図１５】本発明の実施形態を示し、図１４のステップＳ１４０３で行われる管理点レコード検索処理の一例を示すフローチャートである。
【図１６】本発明の実施形態を示し、図１４のステップＳ１４０５で行われるセグメント情報管理テーブル初期化処理の一例を示すフローチャートである。
【図１７】本発明の実施形態を示し、図１４のステップＳ１４０６で行われる表情報管理テーブル更新処理の一例を示すフローチャートである。
【図１８】本発明の変形例を示し、図１４のステップＳ１４０７で行われる管理点レコード削除処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００１１】
図１は、本発明の実施形態を示し、データベースを提供する計算機システムの一例を示すブロック図である。計算機システムは、データベース管理システム３１３０を実行するデータベース管理装置３１００と、データベース３００を格納する外部記憶装置（またはストレージ装置）３２００と、データベース管理システム３１３０にアクセスを要求するクライアント計算機３０００と、データベース管理装置３１００と外部記憶装置３２００及びクライアント計算機３０００を接続するネットワーク３３００を主体にして構成される。
【００１２】
データベース管理装置３１００は、演算処理を行うプロセッサ３１１０と、データやプログラムを格納するメモリ３１２０とを備えてデータベース３００をクライアント計算機３０００に提供するデータベース管理システム３１３０を実行する。データベース管理装置３１００は、外部記憶装置３２００からデータベース管理システム３１３０のプログラムをメモリ３１２０へ読み込んで、プロセッサ３１１０が当該プログラムを実行する。
【００１３】
ネットワーク３３００を介してデータベース管理装置３１００からアクセスされる外部記憶装置３２００は、データベース３００及び当該データベースの関連情報を格納する。
【００１４】
データベース３００は、表３２２０とインデックス３２３０から構成される。本実施形態では、データベース３００は、レコード型のデータベースで構成される。
【００１５】
データベース関連情報としては、表３２２０へ挿入するデータを有するデータ一括挿入ファイル３２１０と、データベース３００に対する操作を管理する管理点管理表５１００と、データベース３００を操作するときに利用するセグメント情報管理テーブル６１００と表情報管理テーブル７１００とを含む。なお、セグメントは、データベース３００におけるデータ格納領域の単位であり、データベース３００は複数のセグメントを有し、各セグメント内にデータレコードを格納し、各セグメントはデータベース管理システム３１３０が付与した一意のＩＤを有する。セグメント情報管理テーブル６１００はセグメントの情報に基づいてデータの格納位置を管理する。データベース管理システム３１２０は、表情報管理テーブル７１００とセグメント情報管理テーブル６１００を、データの格納位置管理情報として利用する。
【００１６】
データ一括挿入ファイル３２１０は、データベース３００の利用者（管理者やユーザなど）が操作するクライアント計算機３０００が外部記憶装置３２００に格納したデータである。
【００１７】
管理点管理表５１００は、データ一括挿入処理においてデータを挿入したセグメントの範囲とデータ挿入対象表とデータ一括挿入処理の開始時刻及び終了時刻を管理する情報であり、データベース管理システム３１３０の管理点管理表処理部３１３４によって制御される。一回のデータ一括挿入処理で、ひとつのレコード（管理点レコード）が管理点管理表５１００に追加される。
【００１８】
セグメント情報管理テーブル６１００は、データベース３００のセグメントの状態を記憶するテーブルで、データベース管理システム３１３０によって管理される。
【００１９】
表情報管理テーブル６１００は、データベース３００の表３２２０の状態を記憶するテーブルで、データベース管理システム３１３０によって管理される。
【００２０】
データベース管理装置３１００は、データベース３００を管理するデータベース管理システム３１３０を実行する。データベース管理システム３１３０は、クライアント計算機３０００から受け付けたデータ一括挿入要求やデータ一括削除要求を処理する。なお、データベース管理システム３１３０は、クライアント計算機３０００からのアクセス要求を受け付けて、外部記憶装置３２００のデータベース３００にアクセスする処理も行うが、この処理は公知または周知の処理を行えばよいので、本実施形態では説明を省略する。
【００２１】
データベース管理システム３１３０は、クライアント計算機３０００からデータ一括挿入処理要求またはデータ一括削除処理要求を受け付けるデータ操作要求受付部３１３１と、外部記憶装置３２００の各情報管理テーブルのデータを管理する情報管理テーブル管理部３１３２と、データ一括挿入処理の際に表３２２０へのデータ挿入処理を行う表データ挿入部３１３３と、管理点管理表５１００に対する処理を管理する管理点管理表処理部３１３４とを主体にして構成される。
【００２２】
管理点管理表処理部３１３４は、後述するように管理点レコード検索処理３１３５と、管理点レコード生成処理３１３６と、管理点レコード削除処理３１３７と、管理点レコード更新処理３１３８を含む。
【００２３】
メモリ３１２０には、データベース管理システム３１３０に加えて、データ一括挿入処理またはデータ一括削除処理の際に使用するデータが格納される。これらのデータは、例えば、データ一括挿入処理の際に全データの格納に必要なセグメントの個数を格納する総セグメント数３１４０と、データ一括挿入処理の際にデータを格納するセグメント範囲、またはデータ一括削除処理にて削除対象のデータが格納されたセグメントの範囲を格納するセグメント範囲３１５０と、データ一括挿入処理の際にデータ挿入の対象となる表３２２０を特定する表名３１６０と、現在の日時を保持するカレントタイムスタンプ３１７０と、最後にデータを格納したセグメントＩＤを保持する保持セグメント（保持ＳＥＧ）３１８０を含む。なお、セグメント範囲３１５０は、先頭セグメントのＩＤを格納する開始セグメントＩＤ３１５１と、最終セグメントのＩＤを格納する終了セグメントＩＤ３１５２とを含む。
【００２４】
図２は、データベース３００にデータを一括して挿入する処理（データ一括挿入処理）の概要を示す流れ図である。
【００２５】
データベース管理システム３１３０のデータ操作要求受付部３１３１は、クライアント計算機３０００からデータ一括挿入の処理要求１０００を受け付ける。このデータ一括挿入要求には、外部記憶装置３２００に格納されたデータ一括挿入ファイル３２１０を特定する情報（例えば、ファイル名）が含まれる。データ操作要求受付部３１３１は、データ一括挿入の処理要求１０００を受け付けると、表データ挿入部３１３３を起動する。
【００２６】
データベース管理システム３１３０の表データ挿入部３１３３は、現在の日時をカレントタイムスタンプ３１７０から取得して開始日時とする（Ｓ８０１）。次に、表データ挿入部３１３３は、データ一括挿入ファイル３２１０を読み込んで、挿入するデータの格納に必要なセグメントの個数を演算して（Ｓ８０２）、総セグメント数３１４０に格納する。
【００２７】
データベース管理システム３１３０の表データ挿入部３１３３は、総セグメント数３１４０の値となるセグメントをデータベース３００に確保して、メモリ３１２０上のセグメント範囲３１５０に設定した開始セグメントＩＤ３１５１と終了セグメントＩＤ３１５２を格納する（Ｓ８０３）。
【００２８】
次に、データベース管理システム３１３０は、管理点管理表処理部３１３４の管理点レコード生成処理３１３６を起動して、管理点管理表５１００に新たなレコード（管理点レコード）を作成する（Ｓ８０４）。そして、管理点管理表処理部３１３４の管理点レコード生成処理３１３６が、上記ステップＳ８０４で生成したレコード（管理点レコード）の開始日時をＳ＿ＴＩＭＥ５１１へ格納し、データ一括挿入の開始セグメントＩＤ３１５１を開始セグメントＳ＿ＳＥＧ５１３へ格納し、終了セグメントＩＤ３１５２を終了セグメントＦ＿ＳＥＧ５１４に格納し、データ一括挿入を実施した表３２２０の名称をＴＡＢＬＥ５１５に格納する。
【００２９】
次に、データベース管理システム３１３の表データ挿入部３１３３は、データ一括挿入処理要求１０００で指定されたデータ一括挿入ファイル３２１０のデータを、データベース３００の表３２２０に確保した上記開始セグメントＩＤ３１５１から終了セグメントＩＤ３１５２へ加える。データ一括の一括挿入が完了すると、データベース管理システム３１３０は、カレントタイムスタンプ３１７０から現在の日時を取得して終了日時とする。最後に管理点管理表処理部３１３４の管理点レコード更新部３１３８が、上記ステップＳ８０４で生成したレコード（管理点レコード）の終了日時をＦ＿ＴＩＭＥ５１２へ格納して、管理点管理表５１００の新たなレコードを更新する。
【００３０】
以上のように、データ一括挿入処理では、新たな管理点レコードが管理点管理表５１００に加えられて、データ一括挿入の開始日時Ｓ＿ＴＩＭＥ５１１及び終了日時Ｆ＿ＴＩＭＥ５１２と、一括挿入したデータの位置が開始セグメントＳ＿ＳＥＧ５１３と終了セグメントＦ＿ＳＥＧ５１４に格納され、表の名称がＴＡＢＬＥ５１５に格納される。
【００３１】
ここで、管理点管理表５１００は、表名（ＴＡＢＬＥ）５１５とデータ一括挿入の開始日時Ｓ＿ＴＩＭＥ５１１及び終了日時Ｆ＿ＴＩＭＥ５１２と、データの挿入位置を示す開始セグメントＳ＿ＳＥＧ５１３及び終了セグメントＦ＿ＳＥＧ５１４を一意で対応付けて管理するのである。これにより、後日、管理者やユーザがデータの一括削除を行う際に、データ一括挿入の開始日時及び終了日時を検索条件として指定することで、データの格納位置を容易に知ることができる。
【００３２】
図３は、データベース３００からデータを一括して削除する処理（データ一括削除処理）の概要を示す流れ図である。
【００３３】
データベース管理システム３１３０のデータ操作要求受付部３１３１は、クライアント計算機３０００からデータ一括削除の処理要求２０００を受け付ける。このデータ一括削除要求２０００には、図４で示すデータ一括削除要求４１００のように、削除対象のテーブル名４１１と、削除対象とする管理点管理表５１００のデータ一括挿入の開始日時（Ｓ＿ＴＩＭＥ）の範囲４１２が指定される。なお、図４は、クライアント計算機３０００から送信されるデータ一括削除要求４１００の一例を示す。データ一括削除要求には、管理点管理表５１００が挿入されたデータを管理する要素である表名と挿入の開始日時（または開始日時の範囲）及び終了日時（または開始日時の範囲）が含まれる。
【００３４】
データベース管理システム３１３０は、管理点管理表処理部３１３４の管理点レコード検索処理３１３５を起動して、データ一括削除要求４１００で指定されたデータを管理点管理表５１００から検索する（Ｓ１２０２）。
【００３５】
ここで、データ一括削除要求４１００は、表の名称（ＴＡＢＬＥ４１１）とデータ一括挿入の開始日時（Ｓ＿ＴＩＭＥ）の範囲４１２という管理者やユーザが容易に理解可能な情報を用いる点が本発明の特徴である。
【００３６】
管理点レコード検索処理３１３５（Ｓ１２０２）では、管理点管理表処理部３１３４が、表名４１１と、データ一括挿入の開始日時（Ｓ＿ＴＩＭＥ）の範囲４１２の検索条件に該当する管理点管理表５１００のレコードを抽出する。そして、管理点管理表処理部３１３４は抽出した管理点管理表５１００のレコードの開始セグメントＳ＿ＳＥＧ５１３と終了セグメントＦ＿ＳＥＧ５１４をセグメント範囲３１５０として取得し、セグメント範囲３１５０の開始セグメントＩＤ３１５１と終了セグメントＩＤ３１５２に格納する。この処理によって、管理者やユーザが指定した表名（ＴＡＢＬＥ４１１）とデータ一括挿入の開始日時の範囲４１２から削除するデータの位置を特定する。
【００３７】
次に、データベース管理システム３１３０は、情報管理テーブル管理部３１３２が、セグメント範囲３１５０に格納されたセグメントＩＤについて、セグメント情報管理テーブル６１００のレコードを初期化してデータを削除する。この初期化は、後述するように、セグメント情報管理テーブル６１００のテーブル名（ＴＡＢＬＥ＿ＮＡＭＥ）、次セグメントＩＤ（ＮＥＸＴＳＥＧ＿ＩＤ）、直前セグメントＩＤ（ＰＲＥＶＳＥＧ＿ＩＤ）と残量（ＲＥＳＴ）を初期値（例えば、０）で更新する（Ｓ１２０４）。
【００３８】
次に、情報管理テーブル管理部３１３２が、表情報管理テーブル７１００を初期化する（Ｓ１２０５）。情報管理テーブル管理部３１３２は、表情報管理テーブル７１００のＳＥＧＭＥＮＴのうち、セグメント範囲３１５０の開始セグメントＩＤ３１５１から終了セグメントＩＤ３１５２の値を削除する。
【００３９】
次に、データベース管理システム３１３０は、管理点管理表処理部３１３４が検索処理Ｓ１２０２で抽出した管理点管理表５１００のレコードを、管理点レコード削除処理３１３７を実行して削除する。
【００４０】
以上のように、データ一括削除処理では、クライアント計算機３０００から表名とデータ一括挿入の開始日時Ｓ＿ＴＩＭＥをキーとして、管理者やユーザが容易に理解可能な情報でデータを指定して、データベース３００から削除するデータを特定することが可能となる。つまり、データベース３００の管理者は、削除対象の表の名称と、データ一括挿入処理の日時を取得すれば、削除対象のデータの所在を特定することができ、前記従来例に比してデータの削除に要する労力を大幅に低減することができる。
【００４１】
そして、データ一括削除では、セグメント情報管理テーブル６１００と表情報管理テーブル７１００の対象セグメントについて初期化し、管理点管理表５１００の該当レコードを削除するだけであるので、極めて高速に大量のデータを一括して削除することが可能となる。
【００４２】
なお、データ一括削除処理が完了した後にも、データ一括挿入処理でデータベース３００に追加したデータ自体は外部記憶装置３２００に残るが、表情報管理テーブル７１００のセグメント情報及びセグメント情報管理テーブル６１００を初期化することで、データベース管理システム３１３０はアクセスすることはできない。データ一括削除処理後にデータベース３００に残ったデータについては、再編成処理などを適宜実行することで記憶領域を解放することができる。
【００４３】
図５は、管理点管理表５１００の一例を示す説明図である。管理点管理表５１００は管理点管理表処理部３１３４がメモリ３１２０上または外部記憶装置３２００のデータベース３００上に生成して管理する。
【００４４】
管理点管理表５１００は、データの一括挿入を開始した日時を格納するＳ＿ＴＩＭＥ５１１と、データの一括挿入が終了した日時を格納するＦ＿ＴＩＭＥ５１２と、データの一括挿入を開始したセグメントのＩＤを格納するＳ＿ＳＥＧ５１３と、データの一括挿入が終了したセグメントのＩＤを格納するＦ＿ＳＥＧ５１４と、データの一括挿入処理の対象となった表の名称（または、識別子）を格納するＴＡＢＬＥ５１５から一つのレコードが構成される。なお、Ｓ＿ＳＥＧ５１３及びＦ＿ＳＥＧ５１４は１レコードに対して複数の要素を保持することができる（繰り返し列）。図５の行５１６は、データ一括挿入の処理開始Ｓ＿ＴＩＭＥ５１１が２００９年１月０２日の６時０分１６秒で、データ一括挿入の終了開始Ｆ＿ＴＩＭＥ５１２が２００９年１月０２日の８時５分１６秒で、開始セグメントＩＤＳ＿ＳＥＧ５１３が「４５０１」で、終了セグメントＩＤＦ＿ＳＥＧ５１４が「５０００」で、対象となった表が「Ｔ１」であることを示す。
【００４５】
図６は、セグメント情報管理テーブル６１００の一例を示す説明図である。セグメント情報管理テーブル６１００は、セグメントの識別子を格納するセグメントＩＤ（ＳＥＧＭＥＮＴ＿ＩＤ）６１１と、当該セグメントが格納するテーブルの名称を格納するテーブル名（ＴＡＢＬＥ＿ＮＡＭＥ）６１２と、当該セグメントの次のセグメントの識別子を格納するＮＥＸＴＳＥＧ＿ＩＤ６１３と、当該セグメントの前のセグメントの識別子を格納するＰＲＥＶＳＥＧ＿ＩＤ６１４と、当該セグメントに格納可能なデータ量（ページ数）を格納するＲＥＳＴ６１５とから一つのエントリが構成される。このセグメント情報管理テーブル６１００は、各セグメントごとに上記１テーブルが生成される。
【００４６】
図７は、表情報管理テーブル７１００の一例を示す説明図である。表情報管理テーブル７１００は、表の名称を格納するテーブル名（ＴＡＢＬＥ＿ＮＡＭＥ）７１１と、当該表の識別子を格納するＴＡＢＬＥ＿ＩＤ７１２と、当該表が使用するセグメントの範囲を格納するＳＥＧＭＥＮＴ７１３とから１テーブルが構成される。ＳＥＧＭＥＮＴ７１３には、表３２２０が使用する複数のセグメントの範囲を格納することができ、図示の例では、セグメントＩＤ＝１−２０００と４５０１−５０００を使用している例を示す。この表情報管理テーブル７１００は、各表ごとに上記１テーブルが生成される。
【００４７】
図８は、データベース管理装置が行うデータベースの一括挿入処理の概要を示すフローチャートである。この処理は、データベース管理装置３１００のデータ操作要求受付部３１３１がクライアント計算機３０００から挿入対象のテーブル名と、挿入対象のデータ一括挿入ファイル３２１０の名称を受け付けたときに開始される。
【００４８】
ステップＳ８０１では、データベース管理システム３１３０の表データ挿入部３１３３が、現在の日時をカレントタイムスタンプ３１７０から取得する。ステップＳ８０２では、表データ挿入部３１３３が、指定されたデータ一括挿入ファイル３２１０のレコード数や容量を参照して、指定された表３２２０にデータ一括挿入ファイル３２１０を追加するのに必要なセグメントの数を後述するように演算する。そして、表データ挿入部３１３３は、求めたセグメント数をメモリ３１２０上の総セグメント数３１４０へ格納する。
【００４９】
そして、ステップＳ８０３では、表データ挿入部３１３３が外部記憶装置３２００のデータベース３００の領域に、挿入するデータを格納するセグメントを確保する。表データ挿入部３１３３は、確保したセグメントの先頭のセグメントの識別子をセグメント範囲３１５０の開始セグメントＩＤ３１５１に格納し、最後のセグメントの識別子を終了セグメントＩＤ３１５２に格納する。
【００５０】
ステップＳ８０４では、管理点管理表処理部３１３４の管理点レコード生成処理３１３６が、管理点管理表５１００に新たなレコードを追加して、データの一括挿入を開始した日時を格納するＳ＿ＴＩＭＥ５１１に、ステップＳ８０１で取得したカレントタイムスタンプ３１７０の値を設定し、データの一括挿入を開始したセグメントのＩＤを格納するＳ＿ＳＥＧ５１３に、Ｓ８０３で取得した開始セグメントＩＤ３１５１の値を設定し、データの一括挿入を開始したセグメントのＩＤを格納するＦ＿ＳＥＧ５１４に、Ｓ８０３で取得した終了セグメントＩＤ３１５２の値を設定する。
【００５１】
ステップＳ８０５では、表データ挿入部３１３３が、管理者などがクライアント計算機３０００から外部記憶装置３２００に書き込んだデータ一括挿入ファイル３２１０を読み込んで、ステップＳ８０３で確保したセグメントにデータを追加する。
【００５２】
ステップＳ８０６では、表データ挿入部３１３３が、カレントタイムスタンプ３１７０を取得して、ステップＳ８０７で管理点管理表処理部３１３４の管理点レコード更新処理３１３８が、管理点管理表５１００のデータの一括挿入が終了した日時を格納するＦ＿ＴＩＭＥ５１２に格納し、上記ステップＳ８０４で追加した管理点管理表５１００のレコードを更新する。
【００５３】
上記の処理によって、管理者などが用意したデータ一括挿入ファイル３２１０を表３２２０で一括して追加し、管理者が追加したレコードを識別する情報としてデータ一括挿入の開始日時と終了日時を管理点管理表５１００に記録する。
【００５４】
図９は図８のステップＳ８０２で実行される必要セグメント数計算処理の一例を示すフローチャートである。
【００５５】
ステップＳ９０１では、表データ挿入部３１３３がクライアント計算機３０００から指示されたデータ一括挿入ファイル３２１０を読み込んで、挿入するデータの１件当たりのデータ長と、挿入するデータの件数を取得し、クライアント計算機３０００から指示された挿入対象の表３２２０の名称を取得する。
【００５６】
ステップＳ９０２では、表データ挿入部３１３３がデータベース３００の１セグメントあたりのデータ長（例えば、固定値）と、ステップＳ９０１で取得した挿入データの１件当たりのデータ長から、次式により、
Ｘ＝ＴＲＵＮＣ（１セグメントあたりのデータ長÷挿入データの１件当たりのデータ長）
………（１）
データベース３００の１セグメントに格納可能なデータ一括挿入ファイル３２１０のデータ数Ｘを求める。なお、上記（１）式でＴＲＵＮＣは、小数点以下を切り捨てる関数である。
【００５７】
ステップＳ９０３では、表データ挿入部３１３３が、ステップＳ９０１で取得した挿入するデータの件数と、ステップＳ９０２で求めた１セグメントに格納可能なデータ一括挿入ファイル３２１０のデータ数Ｘから、次式により、
Ｙ＝ＲＯＵＮＤＵＰ（挿入データ件数／Ｘ）  ………（２）
データ一括挿入処理必要なセグメントの数Ｙを求める。なお、上記（２）式でＲＯＵＮＤＵＰは、小数点以下を切り上げる関数である。そして、表データ挿入部３１３３は、データ一括挿入処理必要なセグメントの数Ｙを、総セグメント数として保持する。
【００５８】
図１０は、図８のステップＳ８０３で行われるデータ挿入セグメント確保処理の一例を示すフローチャートである。
【００５９】
表データ挿入部３１３３は、ステップＳ１００１で、セグメント情報管理テーブル６１００を読み込んで、セグメントＩＤ（６１１）＝「１」の情報を参照する。ステップＳ１００２では、表データ挿入部３１３３が、現在参照しているセグメント情報管理テーブル６１００のＮＥＸＴＳＥＧ＿ＩＤ６１３が０で、かつＰＲＥＶＳＥＧ＿ＩＤＴ６１４が０であるか否かを判定する。この判定は、ＮＥＸＴＳＥＧ＿ＩＤ６１３＝０、かつＰＲＥＶＳＥＧ＿ＩＤ６１４＝０か否かを判定し、初期化されて使用されていないセグメントであるか否かを判定している。
【００６０】
表データ挿入部３１３３は、初期化されていればデータを格納可能なセグメントであると判定してステップＳ１００４へ進む。一方、初期化されていないセグメントであれば、使用中のセグメントＩＤであるのでステップＳ１００３に進む。ステップＳ１００３では、表データ挿入部３１３３は、現在参照しているセグメントＩＤ（６１１）に１を加算して次のセグメントＩＤ（６１１）へ移動する。そして、ステップＳ１０１４で次のセグメントＩＤ（６１１）の値が最後のセグメントＩＤを超えていれば、全てのセグメントＩＤについて判定を行ったので処理を終了する。一方、ステップＳ１０１４で次のセグメントＩＤ（６１１）が最後のセグメントＩＤ以下であれば、ステップＳ１００２へ戻って上記判定を繰り返す。
【００６１】
次に、ステップＳ１００４では、表データ挿入部３１３３が保持しているデータ挿入開始セグメントＩＤとデータ挿入終了セグメントＩＤの個数が等しいか否かを判定する。個数が異なる場合には、ステップＳ１００５へ進み、個数が等しい場合にはステップＳ１０１５へ進む。
【００６２】
ステップＳ１００５では、表データ挿入部３１３３が現在参照しているセグメント情報管理テーブル６１００のセグメントＩＤ６１１を、データ挿入開始セグメントＩＤとして保持する。
【００６３】
ステップＳ１０１５では、表データ挿入部３１３３が、データ挿入対象表に既にデータが格納されているか否かを判定する。既にデータが格納されている場合はＳ１００６へ進み、データが格納されていない場合には、Ｓ１０１６へ進む。
【００６４】
ステップＳ１０１６で、情報管理テーブル管理部３１３２が、現在参照しているセグメントＩＤのセグメント情報管理テーブル６１００のＴＡＢＬＥ＿ＮＡＭＥ６１２に、上記ステップＳ９０１で取得した挿入対象の表名を設定し、ＰＲＥＶＳＥＧ＿ＩＤ６１４に０を設定する。そして、表データ挿入部３１３３が、上記図８のステップＳ８０２で求めた総セグメント数から１を減じる。
【００６５】
ステップＳ１００６では、保持セグメント３１８０で保持したセグメントＩＤ（前回値）のＮＥＸＴＳＥＧ＿ＩＤ６１３を、表データ挿入部３１３３が現在参照しているセグメント情報管理テーブル６１００のセグメントＩＤ６１１で更新する。
【００６６】
次に、ステップＳ１００７では、表データ挿入部３１３３が、現在参照しているセグメントＩＤのセグメント情報管理テーブル６１００のＴＡＢＬＥ＿ＮＡＭＥ６１２に、上記ステップＳ９０１で取得した挿入対象の表名を設定し、ＰＲＥＶＳＥＧ＿ＩＤ６１４に保持セグメント３１８０で保持した前回のＳＥＧＭＥＮＴ＿ＩＤ６１１を設定し、ＲＥＳＴ６１５に当該セグメントの領域長を設定し、当該セグメントＩＤのセグメント情報管理テーブル６１００を更新する。
【００６７】
ステップＳ１００８では、上記図８のステップＳ８０２で求めた総セグメント数から１を減じる。つまり、表データ挿入部３１３３は上記ステップＳ１００７でひとつのセグメントをデータ一括挿入のために確保したので、残りの総セグメント数を１つ差し引く。
【００６８】
次に、ステップＳ１００９では、表データ挿入部３１３３が、現在参照しているセグメントＩＤがＰＲＥＶＳＥＧ＿ＩＤ６１４に１を加えた値に等しいか否かを判定する。セグメントＩＤがＰＲＥＶＳＥＧ＿ＩＤ＋１と等しければステップＳ１０１１へ進み、等しくなければステップＳ１０１０へ進む。
【００６９】
ステップＳ１０１０では、現在参照しているセグメントＩＤのセグメント情報管理テーブル６１００のＰＲＥＶＳＥＧ＿ＩＤ６１４をデータ挿入終了セグメントＩＤとして表データ挿入部３１３３が保持する。
【００７０】
ステップＳ１０１１では、表データ挿入部３１３３が、ステップＳ１００８でデクリメントした総セグメント数が０になったか否かを判定する。総セグメント数が０であればステップＳ１０１３へ進み、総セグメント数が０でなければステップＳ１０１２へ進む。
【００７１】
ステップＳ１０１２では、表データ挿入部３１３３が、現在参照しているセグメントＩＤを保持セグメント３１８０に保持してステップＳ１００３で次のセグメントＩＤに移行して上記処理を繰り返す。
【００７２】
一方、ステップＳ１０１３では、表データ挿入部３１３３が、現在参照しているセグメントＩＤをデータ挿入終了セグメントＩＤとして表データ挿入部３１３３が保持セグメント３１８０に保持して処理を終了する。
【００７３】
以上の処理によって、セグメントＩＤ＝１から順に、使用されていないセグメントが総セグメント数に達するまで、挿入対象の表名がＴＡＢＬＥ＿ＮＡＭＥ６１２に格納され、前後のセグメントＩＤが、ＰＲＥＶＳＥＧ＿ＩＤ６１４とＮＥＸＴＳＥＧ＿ＩＤ６１３に格納されていく。そして、表データ挿入部３１３３は、データ一括挿入の開始セグメントＩＤと終了セグメントＩＤを保持する。
【００７４】
図１１は、図８のステップＳ８０４で行われる管理点レコード生成処理の一例を示すフローチャートである。ステップＳ１１０１では、管理点管理表処理部３１３４の管理点レコード生成処理３１３６が、管理点管理表５１００に新たなレコードを追加して、上記ステップＳ８０１で取得したカレントタイムスタンプ３１７０を、データ一括挿入の開始日時Ｓ＿ＴＩＭＥ５１１に格納する。以下の処理も、新たに追加したレコードに対して行う。
【００７５】
ステップＳ１１０２では、管理点管理表処理部３１３４の管理点レコード生成処理３１３６がデータ一括挿入ファイル３２１０から挿入対象の表の名称を取得し、追加したレコードのＴＡＢＬＥ５１５に格納する。
【００７６】
ステップＳ１１０３では、管理点管理表処理部３１３４の管理点レコード生成処理３１３６が上記図１０のステップＳ１００５で取得したデータ挿入開始セグメントＩＤを、管理点管理表５１００の開始セグメントＳ＿ＳＥＧ５１３へ格納する。
【００７７】
ステップＳ１１０４では、管理点管理表処理部３１３４の管理点レコード生成処理３１３６が上記図１０のステップＳ１０１０で取得したデータ挿入終了セグメントＩＤを、管理点管理表５１００の終了セグメントＦ＿ＳＥＧ５１４へ格納する。
【００７８】
ステップＳ１１０５では、図１０のデータ挿入セグメント確保処理で確保した全てのデータ挿入開始セグメントＩＤを管理点管理表５１００の新たなレコードに登録したか否かを管理点管理表処理部３１３４の管理点レコード生成処理３１３６が判定する。全てのデータ挿入開始セグメントＩＤについて登録が完了していればステップＳ１１０７へ進み、全てのデータ挿入開始セグメントＩＤについて登録が完了していなければステップＳ１１０６へ進む。
【００７９】
ステップＳ１１０６では、管理点管理表処理部３１３４の管理点レコード生成処理３１３６が、新たに追加したレコードの開始セグメントＳ＿ＳＥＧ５１３と終了セグメントＦ＿ＳＥＧ５１４に新たな格納要素（繰り返し列）を追加してステップＳ１１０３へ戻る。そして、管理点管理表処理部３１３４の管理点レコード生成処理３１３６は、追加された格納要素にデータ挿入開始セグメントＩＤとデータ挿入終了セグメントＩＤを格納していく。本実施形態の管理点管理表５１００では、ひとつのレコードで開始セグメントＳ＿ＳＥＧ５１３と終了セグメントＦ＿ＳＥＧ５１４に複数の格納要素（繰り返し列）を設ける例を示すが、複数のレコードに分割してもよい。
【００８０】
一方、ステップＳ１１０７では、上記追加したレコードを管理点管理表５１００に登録して処理を終了する。
【００８１】
図１２は、図８のステップＳ８０５で行われるデータ挿入処理の一例を示すフローチャートである。ステップＳ１２０１では、表データ挿入部３１３３が上記図１１の処理で管理点管理表５１００に追加したレコードのＴＡＢＬＥ５１５の表３２２０をデータベース３００で選択し、開始セグメントＳ＿ＳＥＧ５１３の値を読み込んで、該当するセグメントＩＤを選択する。
【００８２】
ステップＳ１２０２では、表データ挿入部３１３３が、ステップＳ１２０１で選択したセグメントＩＤのセグメント情報管理テーブル６１００を読み込んで、ＲＥＳＴ６１５の値が挿入するデータの１件のデータ長以上であるか否かを判定する。すなわち、現在選択しているセグメントに格納可能なデータ量（空き容量）が、これから格納するデータ一括挿入ファイル３２１０の１レコード分以上あるか否かを判定する。現在選択しているセグメントに１レコードが格納可能であればステップＳ１２０４へ進み、格納できない場合はステップＳ１２０３へ進む。
【００８３】
ステップＳ１２０３では、表データ挿入部３１３３が、現在選択しているセグメントＩＤのセグメント情報管理テーブル６１００のＮＥＸＴＳＥＧ＿ＩＤ６１３を読み込んで、次のセグメントＩＤへ移動する。
【００８４】
ステップＳ１２０４では、表データ挿入部３１３３が、現在選択しているセグメントにデータ一括挿入ファイル３２１０の１レコードを挿入する。
【００８５】
ステップＳ１２０５では、表データ挿入部３１３３が、現在選択しているセグメントＩＤのセグメント情報管理テーブル６１００のＲＥＳＴの値から、ステップＳ１２０４で挿入したレコード長を差し引いて更新する。
【００８６】
そして、ステップＳ１２０６では、表データ挿入部３１３３が、データ一括挿入ファイル３２１０の挿入データ件数から１を差し引いて更新する。
【００８７】
ステップＳ１２０７では、表データ挿入部３１３３が挿入データ件数が０になったか否かを判定する。挿入データ件数が０であれば処理を終了し、挿入データ件数が０でなければステップＳ１２０２へ戻って上記処理を繰り返す。
【００８８】
上記図１２の処理によって、確保されたセグメントにデータ一括挿入ファイル３２１０のレコードが挿入される。
【００８９】
図１３は、図８のステップＳ８０７で行われる管理点レコード更新処理の一例を示すフローチャートである。表データ挿入部３１３３は、図１１の処理で追加した管理点管理表５１００のレコードについて、図８のステップＳ８０６で取得したカレントタイムスタンプ３１７０の値をデータ挿入の終了日時Ｆ＿ＴＩＭＥ５１２に格納して処理を終了する。
【００９０】
上記図８〜図１３の処理により、データ一括挿入ファイル３２１０のレコードが対象の表３２２０に一括して挿入され、管理点管理表５１００にデータ一括挿入の開始日時、終了日時及び格納位置（セグメントＩＤ）が記録される。
【００９１】
図１４は、データベース管理装置が行うデータベースの一括削除処理の一例を示すフローチャートである。図１４の処理は、データ操作要求受付部３１３１がクライアント計算機３０００から図４に示したようなデータ一括削除要求４１００を受け付けると、データ操作要求受付部３１３１は管理点管理表処理部３１３４を起動して図１４の処理を実行させる。
【００９２】
ステップＳ１４０１では、管理点管理表処理部３１３４が、受信したデータ一括削除要求４１００からデータの一括削除の対象となる表名４１１と、削除の条件としてデータ一括挿入の日時の範囲４１２を取得して保持する。図４の例では、削除対象表が「Ｔ１」で、削除の条件がデータ一括挿入の日時が「２００９年１月２日０時０分０秒」から「２００９年１月２日２３時５９分５９秒」までとなっている。
【００９３】
ステップＳ１４０２では、管理点管理表処理部３１３４が、管理点管理表５１００の先頭レコードに検索用のカーソルＣ１を設定し、先頭のレコードを選択する。
【００９４】
ステップＳ１４０３では、後述の管理点管理表処理部３１３４の管理点レコード検索処理３１３５により、カーソルＣ１で選択した管理点管理表５１００のレコードを削除対象表と削除の条件で検索する。検索の結果、選択した管理点管理表５１００のレコードが削除の条件と削除の対象表を満たしていれば、管理点管理表処理部３１３４の管理点レコード検索処理３１３５は検索結果として「Ｙ」を保持し、一方、削除の条件または削除の対象表を満たしていなければ「Ｎ」を保持する。
【００９５】
ステップＳ１４０４では、上記ステップＳ１４０３の検索結果が「Ｙ」または「Ｎ」の何れであるかを判定し、「Ｙ」であればステップＳ１４０５へ進み、「Ｎ」であればステップＳ１４０９に進む。
【００９６】
ステップＳ１４０５では、情報管理テーブル管理部３１３２が削除の条件と削除の対象表に合致するセグメント情報管理テーブル６１００をレコードを後述するように初期化する。セグメント情報管理テーブル６１００のレコードを初期化することで、削除対象データをデータベース管理システム３１２０からアクセス不能にすることで、データ自体はデータベース３００の表３２２０に残留するものの、論理的に削除するものである。
【００９７】
ステップＳ１４０６では、情報管理テーブル管理部３１３２が削除の条件と削除の対象表に合致する表情報管理テーブル７１００を後述するように初期化する。
【００９８】
ステップＳ１４０７では、管理点管理表処理部３１３４の管理点レコード削除処理３１３７により、ステップＳ１４０３の検索結果で「Ｙ」となった管理点管理表５１００のレコードを削除する。
【００９９】
ステップＳ１４０８では、管理点管理表処理部３１３４が、管理点管理表５１００の全てのレコードについて検索が完了したか否かを判定する。管理点管理表５１００の全てのレコードについて検索が完了していなければステップＳ１４０９に進んでカーソルＣ１を次のレコードに設定し、管理点管理表５１００の全てのレコードについて検索が完了していれば処理を終了する。
【０１００】
上記処理により、データベース管理装置３１００が受信したデータ一括削除要求４１００に含まれる削除の対象となる表名４１１と、削除の条件としてのデータ一括挿入の日時の範囲４１２の検索条件に含まれる管理点管理表５１００のレコードから、削除の対象となるセグメントＩＤを抽出してセグメント情報管理テーブル６１００を初期化し、また、削除の対象となる表情報管理テーブル７１００を更新することで、データの一括削除を実施する。
【０１０１】
図１５は、図１４のステップＳ１４０３で行われる管理点レコード検索処理の一例を示すフローチャートである。ステップＳ１５０１では、管理点管理表処理部３１３４が、カーソルＣ１が設定されている管理点管理表５１００のレコードの内容を取得し、データ一括挿入の開始日時Ｓ＿ＴＩＭＥ５１１（または終了日時Ｆ＿ＴＩＭＥ５１２）と、表の名称ＴＡＢＬＥ５１５を保持する。
【０１０２】
ステップＳ１５０２では、管理点管理表処理部３１３４の管理点レコード削除処理３１３７は上記保持した開始日時Ｓ＿ＴＩＭＥ５１１（または終了日時Ｆ＿ＴＩＭＥ５１２）が、図１４のステップＳ１４０１で保持した検索条件としてのデータ一括挿入の日時の範囲４１２に含まれるか否かを判定する。選択したレコードの開始日時Ｓ＿ＴＩＭＥ５１１（または終了日時Ｆ＿ＴＩＭＥ５１２）が検索条件に含まれる場合にはステップＳ１５０３へ進み、選択したレコードの開始日時Ｓ＿ＴＩＭＥ５１１（または終了日時Ｆ＿ＴＩＭＥ５１２）が検索条件に含まれない場合にはステップＳ１５０６へ進む。
【０１０３】
ステップＳ１５０３では、管理点管理表処理部３１３４の管理点レコード削除処理３１３７が、上記ステップＳ１５０１で保持した表の名称ＴＡＢＬＥ５１５が、図１４のステップＳ１４０１で保持した検索条件としての表名４１１に一致するか否かを判定する。選択したレコードの表の名称ＴＡＢＬＥ５１５が検索条件の表名４１１に一致する場合にはステップＳ１５０４へ進み、選択したレコードの表の名称ＴＡＢＬＥ５１５が検索条件の表名４１１に一致しない場合にはステップＳ１５０６へ進む。
【０１０４】
ステップＳ１５０４では、選択したレコードの開始日時Ｓ＿ＴＩＭＥ５１１と表の名称ＴＡＢＬＥ５１５が検索条件を満足しているので、管理点管理表処理部３１３４の管理点レコード削除処理３１３７は現在の管理点管理表５１００のレコードから開始セグメントＳ＿ＳＥＧ５１３と終了セグメントＦ＿ＳＥＧ５１４を取得して一致削除対象のデータの所在を特定する。なお、管理点管理表処理部３１３４は、取得した開始セグメントＳ＿ＳＥＧ５１３と終了セグメントＦ＿ＳＥＧ５１４をセグメント範囲３１５０の開始セグメントＩＤ３１５１と終了セグメントＩＤ３１５２へ格納することで保持することができる。
【０１０５】
ステップＳ１５０５では、選択したレコードの開始日時Ｓ＿ＴＩＭＥ５１１（または終了日時Ｆ＿ＴＩＭＥ５１２）と表の名称ＴＡＢＬＥ５１５が検索条件を満足しているので、検索結果として「Ｙ」を設定して処理を終了する。
【０１０６】
ステップＳ１５０６では、選択したレコードの開始日時Ｓ＿ＴＩＭＥ５１１（または終了日時Ｆ＿ＴＩＭＥ５１２）または表の名称ＴＡＢＬＥ５１５が検索条件に一致しないので、検索結果として「Ｎ」を設定して処理を終了する。
【０１０７】
図１６は、図１４のステップＳ１４０５で行われるセグメント情報管理テーブル初期化処理の一例を示すフローチャートである。
【０１０８】
ステップＳ１６０１では、図１５のステップＳ１５０４で取得した開始セグメントＳ＿ＳＥＧ５１３をセグメントＩＤに持つセグメント情報管理テーブル６１００のレコードを選択する。
【０１０９】
ステップＳ１６０２では、情報管理テーブル管理部３１３２が上記選択されたセグメント情報管理テーブル６１００のレコードから直前のセグメントＩＤを格納するＰＲＥＶＳＥＧ＿ＩＤ６１４の値を取得する。
【０１１０】
ステップＳ１６０３では、情報管理テーブル管理部３１３２が上記選択されたセグメント情報管理テーブル６１００のレコードから次のセグメントＩＤを格納するＮＥＸＴＳＥＧ＿ＩＤ６１３の値を取得する。
【０１１１】
ステップＳ１６０４では、情報管理テーブル管理部３１３２が上記選択されたセグメント情報管理テーブル６１００のレコードについて、セグメントＩＤ（ＳＥＧＭＥＮＴ＿ＩＤ）６１１以外の要素を初期化する。すなわち、情報管理テーブル管理部３１３２は、セグメント情報管理テーブル６１００のテーブル名（ＴＡＢＬＥ＿ＮＡＭＥ）６１２、次セグメントＩＤ（ＮＥＸＴＳＥＧ＿ＩＤ）６１３、直前セグメントＩＤ（ＰＲＥＶＳＥＧ＿ＩＤ）６１４と残ページ数（ＲＥＳＴ）６１５を初期値（例えば、０）で更新する。
【０１１２】
ステップＳ１６０５では、情報管理テーブル管理部３１３２が現在のセグメント情報管理テーブル６１００のセグメントＩＤ６１１が、上記ステップＳ１５０４で保持した終了セグメントＦ＿ＳＥＧ５１４に等しいか否かを判定する。現在のセグメントＩＤ６１１が、データ一括挿入時の終了セグメントＦ＿ＳＥＧ５１４に等しい場合にはステップＳ１６０７へ進み、等しくない場合にはステップＳ１６０６へ進む。ここで、現在のセグメントＩＤ６１１が、データ一括挿入時の終了セグメントＦ＿ＳＥＧ５１４に等しい場合は、データ一括削除の対象の最後のセグメントである。一方、現在のセグメントＩＤ６１１が、データ一括挿入時の終了セグメントＦ＿ＳＥＧ５１４に等しくない場合は、データ一括削除のセグメントが他にも存在するので、ステップＳ１６０６へ進む。ステップＳ１６０６では、情報管理テーブル管理部３１３２はステップＳ１６０３で取得したＮＥＸＴＳＥＧ＿ＩＤ６１３をセグメントＩＤとするセグメント情報管理テーブル６１００のレコードに移動してから、上記ステップＳ１６０３以降の処理を繰り返す。
【０１１３】
ステップＳ１６０７では、情報管理テーブル管理部３１３２が、現在の管理点管理表５１００のレコードの開始セグメントＳ＿ＳＥＧ５１３と終了セグメントＦ＿ＳＥＧ５１４が繰り返し列であるか否かを判定する。ここで、開始セグメントＳ＿ＳＥＧ５１３と終了セグメントＦ＿ＳＥＧ５１４が繰り返し列である場合は、データ一括削除の対象のセグメントが残っている可能性がある。一方、開始セグメントＳ＿ＳＥＧ５１３と終了セグメントＦ＿ＳＥＧ５１４が繰り返し列でない場合は、本セグメントがデータ一括削除の対象の最後のセグメントである。現在の管理点管理表５１００のレコードの開始セグメントＳ＿ＳＥＧ５１３と終了セグメントＦ＿ＳＥＧ５１４が繰り返し列の場合にはステップＳ１６０８へ進み、繰り返し列でなければステップＳ１６１０へ進む。
【０１１４】
ステップＳ１６０８では、情報管理テーブル管理部３１３２は、現在選択している管理点管理表５１００のレコードの終了セグメントＦ＿ＳＥＧ５１４が繰り返し列の最後の要素であるか否かを判定する。ここで、終了セグメントＦ＿ＳＥＧ５１４が繰り返し列の最後の要素である場合は、本セグメントがデータ一括削除の対象の最後のセグメントである。一方、終了セグメントＦ＿ＳＥＧ５１４が繰り返し列の最後の要素でない場合は、削除対象のセグメントがまだ残っている。最後の要素であればステップＳ１６１０へ進み、最後の要素でなければステップＳ１６０９へ進んで、繰り返し列の次の終了セグメントＦ＿ＳＥＧ５１４を取得してステップＳ１６０６からステップＳ１６０３へ戻って上記処理を繰り返す。
【０１１５】
ステップＳ１６１０では、情報管理テーブル管理部３１３２が上記ステップＳ１６０２で保持した直前のセグメントＩＤ（ＰＲＥＶＳＥＧ＿ＩＤ）６１４をＳＥＧＭＥＮＴ＿ＩＤ６１１とするセグメント情報管理テーブル６１００のレコードで、ＮＥＸＴＳＥＧ＿ＩＤ６１３の値を、上記ステップＳ１６０３で取得したＮＥＸＴＳＥＧ＿ＩＤ６１３で更新する。
【０１１６】
ステップＳ１６１０では、情報管理テーブル管理部３１３２が上記ステップＳ１６０３で取得した次のセグメントＩＤ（ＮＥＸＴＳＥＧ＿ＩＤ）６１３をＳＥＧＭＥＮＴ＿ＩＤ６１１とするセグメント情報管理テーブル６１００のレコードで、ＰＲＥＶＳＥＧ＿ＩＤ６１４の値を、上記ステップＳ１６０２で取得したＰＲＥＶＳＥＧ＿ＩＤ６１４の値で更新する。
【０１１７】
上記処理を繰り返すことで、削除対象のセグメント情報管理テーブル６１００のレコードを初期化し、初期化したセグメントＩＤの直前のセグメントＩＤと直後のセグメントＩＤを関連づけてセグメントＩＤの連鎖（参照関係）を保持する。
【０１１８】
図１７は、図１４のステップＳ１４０６で行われる表情報管理テーブル更新処理の一例を示すフローチャートである。ステップＳ１７０１では、情報管理テーブル管理部３１３２は、上記図１５のステップＳ１５０１で取得した表の名称ＴＡＢＬＥ５１５をＴＡＢＬＥ＿ＮＡＭＥ７１１に有する表情報管理テーブル７１００のレコードを選択する。
【０１１９】
ステップＳ１７０２では、情報管理テーブル管理部３１３２は、現在選択している表情報管理テーブル７１００のレコードのＳＥＧＭＥＮＴ７１３から、上記図１５のステップＳ１５０４で取得した開始セグメントＳ＿ＳＥＧ５１３の値と、終了セグメントＦ＿ＳＥＧ５１４の値からなる範囲を削除する。
【０１２０】
上記処理により、表情報管理テーブル７１００からは、データ一括削除によってセグメント情報管理テーブル６１００から削除されたセグメントＩＤの範囲が削除される。セグメントＩＤの削除によって、表３２２０にはレコードが残ってはいるもののデータベース管理システム３１３０からアクセスすることはできず、実質的に削除したこととなる。
【０１２１】
図１８は、本発明の変形例を示し、管理点管理表５１００をデータベース３００内に格納した場合の、管理点管理表５１００のレコード削除処理の一例を示すフローチャートである。
【０１２２】
管理点管理表５１００を図１に示すデータベース３００内に格納した場合、図１４のステップＳ１４０７で行われる管理点管理表５１００のレコード削除処理でセグメント情報管理テーブル６１００を更新する必要がある。
【０１２３】
ステップＳ１８０１では、管理点管理表処理部３１３４の管理点レコード削除処理３１３７により、現在カーソルＣ１によって選択されている管理点管理表５１００のレコードを格納しているセグメント情報管理テーブル６１００のレコードを選択する。
【０１２４】
ステップＳ１８０２では、管理点管理表処理部３１３４がステップＳ１８０１で選択したセグメント情報管理テーブル６１００のレコードのセグメントＩＤ内で、削除対象の管理点管理表５１００のレコード（図中、管理点レコード）を格納している領域を解放する。
【０１２５】
ステップＳ１８０３では、管理点管理表処理部３１３４がステップＳ１８０１で選択したセグメント情報管理テーブル６１００のレコードで、残量ＲＥＳＴ６１５に削除した管理点管理表５１００のレコードのデータ長を加算して更新する。
【０１２６】
ステップＳ１８０４では、管理点管理表処理部３１３４がステップＳ１８０１で選択したセグメント情報管理テーブル６１００のレコードのセグメントＩＤ６１１に格納されているデータの有無を判定する。格納されているデータがない場合にはステップＳ１８０５へ進み、格納されているデータが存在する場合には処理を終了する。
【０１２７】
ステップＳ１８０５では、管理点管理表処理部３１３４が、ＴＡＢＬＥ＿ＮＡＭＥ７１１が管理点管理表５１００の表情報管理テーブル７１００のレコードを選択する。
【０１２８】
ステップＳ１８０６では、管理点管理表処理部３１３４が、上記ステップＳ１８０１で選択したセグメント情報管理テーブル６１００のレコードのセグメントＩＤ６１１を、現在の表情報管理テーブル７１００のレコードのＳＥＧＭＥＮＴ７１３から削除して処理を終了する。
【０１２９】
なお、上記実施形態では、管理者やユーザが明示的に削除対象のデータを指定する情報として、表名５１５とデータ一括挿入の開始日時Ｓ＿ＴＩＭＥ５１１（または終了日時）を用いる例を示したが、明示的な情報としてはデータ一括挿入の操作の名称を設定するようにしてもよい。
【０１３０】
また、上記実施形態では、データベース３００を外部記憶装置３２００に格納する例を示したが、データベース管理者装置３１００の内部の記憶装置にデータベース３００を格納してもよい。
【０１３１】
以上のように、本発明では、データの一括挿入処理時にデータ格納領域管理用の情報を管理点管理表５１００のレコードとして生成し、データベース管理システム３１３０がデータ一括挿入の日時とデータの格納位置（セグメントＩＤ）を管理する。管理点管理表５１００は、管理者やユーザが明示的に理解可能な情報（日時等）と一括挿入したデータ格納領域の範囲を１：１で対応づけておく。つまり、管理点管理表５１００では、データ一括挿入の開始日時Ｓ＿ＴＩＭＥ５１１（または終了日時Ｆ＿ＴＩＭＥ５１２）と、データ一括挿入の開始セグメントＳ＿ＳＥＧ５１３と終了セグメントＦ＿ＳＥＧ５１４が一意で対応している。したがって、データを一括して削除する際には、管理者やユーザが明示的に分かる情報としてデータ一括挿入の日時の範囲４１２を削除条件（データ一括削除要求４１００）として指定することで、データベース３００上のデータの格納位置（またはエリア）を管理者やユーザに意識させることなくデータの削除を容易に行うことが可能となる。
【産業上の利用可能性】
【０１３２】
以上のように、本発明はデータ一括型のデータベースを提供する計算機システムに適用することができ、特に、データ一括型のデータベースを管理する管理装置に適用することができる。
【符号の説明】
【０１３３】
３００  データベース
３２２０  表
３２３０  インデクス
３１００  データベース管理装置
３１３０  データベース管理システム
３１３２  情報管理テーブル管理部
３１３３  表データ挿入部
３１３４  管理点管理表処理部
３２００  外部記憶装置
３２１０  データ一括挿入ファイル
５１００  管理点管理表
６１００  セグメント情報管理テーブル
７１００  表情報管理テーブル
【図１】
0005534461.tif 000002
【図２】
0005534461.tif 000003
【図３】
0005534461.tif 000004
【図４】
0005534461.tif 000005
【図５】
0005534461.tif 000006
【図６】
0005534461.tif 000007
【図７】
0005534461.tif 000008
【図８】
0005534461.tif 000009
【図９】
0005534461.tif 000010
【図１０】
0005534461.tif 000011
【図１１】
0005534461.tif 000012
【図１２】
0005534461.tif 000013
【図１３】
0005534461.tif 000014
【図１４】
0005534461.tif 000015
【図１５】
0005534461.tif 000016
【図１６】
0005534461.tif 000017
【図１７】
0005534461.tif 000018
【図１８】
0005534461.tif 000019