(57)【特許請求の範囲】
【請求項１】
複数の任意データがグループとして記憶されるバッファメモリと、
グループを記憶するための記憶領域の範囲として複数の範囲を有する第１の記憶機器と、
前記第１の記憶機器が有する記憶領域の範囲毎に、当該範囲に記憶された複数のグループを特定するグループ特定情報と、当該範囲に記憶されたグループに含まれる複数の任意データを特定する任意データ特定情報と、グループが記憶されていない範囲を空範囲として特定するグループ有無情報とを含む範囲エントリを記憶する第２の記憶機器と、
任意データの値の検索条件と前記任意データ特定情報の検索条件とを含んだ検索要求データが入力される入力機器と、
前記検索要求データに含まれる任意データ特定情報の検索条件に合う範囲エントリであり且つグループ有無情報が空範囲でないことを示す範囲エントリを検索して選択する範囲管理制御部と、
前記範囲管理制御部が選択した範囲エントリのグループ特定情報が示すグループを前記第１の記憶機器から取得し、取得したグループを前記バッファメモリに記憶する入出力制御部と、
前記バッファメモリに記憶されたグループから前記検索要求データに含まれる任意データの値の検索条件に合う任意データを検索して出力するデータ処理部と
を備えたことを特徴とするデータ管理装置。
【請求項２】
複数の任意データがグループとして記憶されるバッファメモリと、
グループを記憶するための記憶領域の範囲として複数の範囲を有する第１の記憶機器と、
前記第１の記憶機器が有する記憶領域の範囲毎に、当該範囲に記憶された複数のグループを特定するグループ特定情報と、当該範囲に記憶されたグループに含まれる複数の任意データを特定する任意データ特定情報と、グループを追加中の処理中範囲とグループの追加が終了した確定範囲とを特定する追加可否情報とを含む範囲エントリを記憶する第２の記憶機器と、
任意データが入力される入力機器と、
前記入力機器に入力された任意データを含む新たなグループを前記バッファメモリに生成するデータ処理部と、
前記データ処理部が新たなグループを生成した際、前記追加可否情報に基づいて処理中範囲の範囲エントリを検索して選択し、処理中範囲の範囲エントリのグループ特定情報を処理中範囲に記憶されているグループと前記新たなグループとを特定する情報に更新すると共に処理中範囲の範囲エントリの任意データ特定情報を処理中範囲に記憶されているグループに含まれる任意データと前記新たなグループに含まれる任意データとを特定する情報に更新する範囲管理制御部と、
前記バッファメモリから前記新たなグループを取得し、取得した前記新たなグループを処理中範囲の記憶領域であって処理中範囲に記憶されているグループと連続する記憶領域に記憶する入出力制御部と
を備えたことを特徴とするデータ管理装置。
【請求項３】
前記第２の記憶機器はグループが記憶されていない範囲を空範囲として特定するグループ有無情報を前記範囲エントリに含んで記憶し、
前記範囲管理制御部は、前記データ処理部が新たなグループを生成した際、前記追加可否情報に基づいて処理中範囲の範囲エントリを検索して選択し、処理中範囲の範囲エントリに空範囲でないことを示すグループ有無情報を設定する
ことを特徴とする請求項２記載のデータ管理装置。
【請求項４】
前記第２の記憶機器は当該範囲にグループを最後に追加した最終追加時刻を前記範囲エントリに含んで記憶し、
前記範囲管理制御部は前記データ処理部が新たなグループを生成した際の時刻を処理中範囲の範囲エントリの最終追加時刻に設定する
ことを特徴とする請求項２〜請求項３いずれかに記載のデータ管理装置。
【請求項５】
複数の任意データがグループとして記憶されるバッファメモリと、
グループを追加して記憶するための記憶領域の範囲として１つの処理中範囲を有する更新領域と、グループを記憶するための記憶領域の範囲であってグループを追加して記憶しない記憶領域の範囲を確定範囲として複数有する参照領域とを有する第１の記憶機器と、
前記第１の記憶機器が有する記憶領域の範囲毎に、当該範囲が処理中範囲と確定範囲とのいずれの範囲であるかを特定する追加可否情報とを含む範囲エントリを記憶する第２の記憶機器と、
範囲の追加を要求する範囲追加要求データが入力される入力機器と、
前記入力機器に範囲追加要求データが入力された際、前記追加可否情報に基づいて処理中範囲の範囲エントリを検索して選択し、選択した範囲エントリの追加可否情報を確定範囲に変更し、処理中範囲を示す追加可否情報を設定した範囲エントリを新たに追加して前記第２の記憶機器に記憶する範囲管理制御部と、
前記入力機器に範囲追加要求データが入力された際、前記更新領域の処理中範囲に記憶されているグループを前記バッファメモリに記憶し、前記バッファメモリに記憶したグループを前記参照領域の確定範囲のうちグループが記憶されていない確定範囲に記憶し、前記更新領域に記憶されているグループを削除する入出力制御部と
を備えたことを特徴とするデータ管理装置。
【請求項６】
前記データ管理装置は、さらに、
前記入力機器に範囲追加要求データが入力された際、前記更新領域に記憶された複数のグループをマージして１つのグループを生成するデータ処理部を備え、
前記入出力制御部は前記データ処理部が生成したグループを前記参照領域に追加記憶する
ことを特徴とする請求項５記載のデータ管理装置。
【請求項７】
前記第２の記憶機器は当該範囲が確定範囲になった確定範囲時刻を前記範囲エントリに含んで記憶し、
前記範囲管理制御部は、前記入力機器に範囲追加要求データが入力された際の時刻を処理中範囲の範囲エントリの確定範囲時刻に設定する
ことを特徴とする請求項５〜請求項６いずれかに記載のデータ管理装置。
【請求項８】
複数の任意データがグループとして記憶されるバッファメモリと、
グループを記憶するための記憶領域の範囲として複数の範囲を有する第１の記憶機器と、
前記第１の記憶機器が有する記憶領域の範囲毎に、当該範囲を識別する範囲識別情報と、グループが記憶されていない範囲を空範囲として特定するグループ有無情報とを含む範囲エントリを記憶する第２の記憶機器と、
削除する範囲を識別する識別情報を含む範囲削除要求データが入力される入力機器と、
前記入力機器に入力された範囲削除要求データに含まれる識別情報と一致する範囲識別情報を含んだ範囲エントリを検索して選択し、選択した範囲エントリに空範囲を示すグループ有無情報を設定する範囲管理制御部と
を備えたことを特徴とするデータ管理装置。
【請求項９】
複数の任意データをグループとして記憶されるバッファメモリと、
グループを記憶するための記憶領域の範囲として複数の範囲を有する第１の記憶機器と、
前記第１の記憶機器が有する記憶領域の範囲毎に、当該範囲に記憶された複数のグループを特定するグループ特定情報と、当該範囲を識別する範囲識別情報とを含む範囲エントリを範囲毎に記憶する第２の記憶機器と、
第３の記憶機器と、
バックアップする範囲を識別する識別情報を含むバックアップ要求データが入力される入力機器と、
前記入力機器に入力されたバックアップ要求データに含まれる識別情報と一致する範囲識別情報を含んだ範囲エントリを検索して選択する範囲管理制御部と、
前記範囲管理制御部が選択した範囲エントリのグループ特定情報が示すグループを前記第１の記憶機器から取得し、取得したグループを前記バッファメモリに記憶する入出力制御部と、
前記バッファメモリに記憶されたグループを含むバックアップファイルを生成し、生成したバックアップファイルを前記第３の記憶機器に記憶するデータ処理部と
を備えたことを特徴とするデータ管理装置。
【請求項１０】
前記第２の記憶機器はグループが記憶されていない範囲を空範囲として特定するグループ有無情報を前記範囲エントリに含んで記憶し、
前記データ処理部は前記範囲管理制御部が選択した範囲エントリのグループ有無情報を含めて前記バックアップファイルを生成する
ことを特徴とする請求項９記載のデータ管理装置。
【請求項１１】
前記範囲管理制御部は、前記第３の記憶機器に記憶されたバックアップファイルを前記第１の記憶機器にリストアするリストア要求データが前記入力機器に入力された際、バックアップファイルに含まれるグループ有無情報を当該範囲エントリに設定し、
前記入出力制御部は、前記入力機器にリストア要求データが入力された際、バックアップファイルに含まれるグループを前記第１の記憶機器に記憶する
ことを特徴とする請求項１０記載のデータ管理装置。
【請求項１２】
前記データ処理部は、バックアップした範囲を識別する識別情報を含むバックアップファイルを生成し、
前記範囲管理制御部は、バックアップファイルのリストアを要求するリストア要求データが前記入力機器に入力された際、バックアップファイルに含まれる識別情報と一致する範囲識別情報を含んだ範囲エントリを検索して選択し、
前記入出力制御部は、前記範囲管理制御部が選択した範囲エントリのグループ有無情報が空範囲を示す場合にバックアップファイルに含まれるグループを前記第１の記憶機器に記憶するリストア処理を行い、前記範囲管理制御部が選択した範囲エントリのグループ有無情報が空範囲を示さない場合にリストア処理を行わない
ことを特徴とする請求項１１記載のデータ管理装置。
【請求項１３】
前記第２の記憶機器は、当該範囲に記憶されている複数の任意データそれぞれを識別する番号の内で最小番号と最大番号とを特定する任意データ特定情報を含む範囲エントリを記憶する
ことを特徴とする請求項１〜請求項１２いずれかに記載のデータ管理装置。
【請求項１４】
前記第２の記憶機器は、当該範囲に記憶されている複数の任意データそれぞれに含むタイムスタンプの内で最小タイムスタンプと最大タイムスタンプとを特定する任意データ特定情報を含む範囲エントリを記憶する
ことを特徴とする請求項１〜請求項１３いずれかに記載のデータ管理装置。
【請求項１５】
複数の任意データがグループとして記憶されるバッファメモリと、グループを記憶するための記憶領域の範囲として複数の範囲を有する第１の記憶機器と、前記第１の記憶機器が有する記憶領域の範囲毎に当該範囲に記憶された複数のグループを特定するグループ特定情報と当該範囲に記憶されたグループに含まれる複数の任意データを特定する任意データ特定情報とグループが記憶されていない範囲を空範囲として特定するグループ有無情報とを含む範囲エントリを記憶する第２の記憶機器と、任意データの値の検索条件と前記任意データ特定情報の検索条件とを含んだ検索要求データが入力される入力機器と、範囲管理制御部と、入出力制御部と、データ処理部とを備えるデータ管理装置のデータ管理方法であって、
前記範囲管理制御部は、前記検索要求データに含まれる任意データ特定情報の検索条件に合う範囲エントリであり且つグループ有無情報が空範囲でないことを示す範囲エントリをＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いて検索して選択し、
前記入出力制御部は、前記範囲管理制御部が選択した範囲エントリのグループ特定情報が示すグループを前記第１の記憶機器から取得し、取得したグループを前記バッファメモリに記憶し、
前記データ処理部は、前記バッファメモリに記憶されたグループから前記検索要求データに含まれる任意データの値の検索条件に合う任意データをＣＰＵを用いて検索して出力する
ことを特徴とするデータ管理装置のデータ管理方法。
【請求項１６】
請求項１５記載のデータ管理方法をコンピュータに実行させることを特徴とするデータ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースに追加される行（レコード）を任意の時点で区切った領域の範囲管理方法に係り、高速なデータアクセスやロード、および効率的なデータ管理を実現するデータベースなどにおけるデータ管理装置、データ管理装置のデータ管理方法およびデータ管理プログラムに関するものである。
【背景技術】
【０００２】
データベースは蓄積保存されるデータ量が増加するにしたがって、データベースへのアクセス効率が低下し検索や参照に多くの時間を要するようになる。この対策として、検索に利用するキーに索引を設ける方法が一般的に採られるが、データの追加・削除・更新が頻繁に行われたり、検索により取り出されるデータ量が多くなると、再度、アクセス効率が低下してしまうという課題があった。
【０００３】
この課題を解決するデータ管理方法として、索引を設けず、データベースのデータ格納領域をセグメントという領域単位に分け、時間情報を持ったブックマーク情報を作成して一連のセグメント群を管理する方法が採られている（特許文献１）。
【特許文献１】特開平１０−２６０８７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１のデータ管理方法では、データを一定時間分まとめてセグメントに保存し、一度保存したデータは変更することができない。このため、一定時間内に到達するデータが疎らになると小データを次々にセグメントに保存することになるが、データの再編成はできないため各小データに対するアクセス効率が低下してしまう。また、データ格納領域の利用効率も低下することになる。さらに、時間以外のキーで検索しようとする場合、全セグメントを検索する必要があるため高速なデータアクセスはできない。
【０００５】
この発明は、上記の課題などの従来技術の課題を除くためになされたものであって、その目的とするところは、例えば、到達するデータが疎らであっても最適なデータ編成を可能にすることである。
【課題を解決するための手段】
【０００６】
本発明のデータ管理装置は、記憶領域を有する第１の記憶機器と、所定のサイズを有するバッファメモリと、前記バッファメモリのサイズに適合する複数の任意データを１グループとして中央処理装置を用いてデータ処理するデータ処理部と、前記第１の記憶機器に対してグループ単位で任意データを入出力する入出力制御部と、前記第１の記憶機器の連続する記憶領域に記憶された複数のグループを１範囲として当該範囲に属するグループを特定するグループ特定情報と当該範囲に属するグループに含まれる任意データを特定する任意データ特定情報と当該範囲を識別する範囲識別情報とを含む範囲エントリを範囲毎に記憶する第２の記憶機器と、前記第２の記憶機器に記憶された範囲エントリの管理処理を中央処理装置を用いて行う範囲管理制御部とを備えたことを特徴とする。
【発明の効果】
【０００７】
本発明によれば、データ格納領域を連続する範囲で管理することによって、高速なデータアクセス、ロード、削除やバックアップなど範囲単位の操作による効率的なデータ管理を可能とするデータ管理装置を提供することができる。このデータ管理装置により、例えば、到達するデータが疎らであっても最適なデータ編成を可能にすることができる。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
図１は、実施の形態１におけるデータ管理システム９００の外観を示す図である。
図１において、データ管理システム９００は、システムユニット９１０、表示装置９０１、キーボード（Ｋ／Ｂ）９０２、マウス９０３、コンパクトディスク装置（ＣＤＤ）９０５、プリンタ装置９０６、スキャナ装置９０７を備え、これらはケーブルで接続されている。
さらに、データ管理システム９００は、ＦＡＸ機９３２、電話器９３１とケーブルで接続され、また、ローカルエリアネットワーク（ＬＡＮ）９４２、ウェブサーバ９４１を介してインターネット９４０に接続されている。
表示装置９０１、Ｋ／Ｂ９０２およびマウス９０３は端末装置２を構成する。また、システムユニット９１０はデータ管理処理を行うデータ管理装置１である。
【０００９】
図２は、実施の形態１におけるデータ管理システム９００のハードウェア構成図である。
図２において、データ管理システム９００は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１１を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、表示装置９０１、Ｋ／Ｂ９０２、マウス９０３、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）９０４、磁気ディスク装置９２０、ＣＤＤ９０５、プリンタ装置９０６、スキャナ装置９０７と接続されている。
表示装置９０１には液晶ディスプレイ、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイなどがある。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０、光ディスク装置は、不揮発性メモリの一例である。これらは、記憶機器、記憶装置あるいは記憶部の一例である。
また、磁気ディスク装置９２０はデータベースにおける各レコードデータを記憶する記憶機器の一例である。また、ＲＡＭ９１４は、磁気ディスク装置９２０よりデータアクセスが高速であり、ＣＰＵ９１１と磁気ディスク装置９２０との間で入出力するデータを記憶して磁気ディスク装置９２０に記憶されたデータに対するＣＰＵ９１１のアクセス効率を向上するバッファメモリの一例である。
通信ボード９１５は、ＦＡＸ機９３２、電話器９３１、ＬＡＮ９４２等に接続されている。
例えば、通信ボード９１５、Ｋ／Ｂ９０２、スキャナ装置９０７、ＦＤＤ９０４などは、入力機器、入力装置あるいは入力部の一例である。
また、例えば、通信ボード９１５、表示装置９０１などは、出力機器、出力装置あるいは出力部の一例である。
端末装置２は利用者が使用する端末であり、利用者に入力機器から処理要求を入力させ、データ管理装置１から入力した処理結果を出力機器に出力（表示、印刷、音声出力など）する。
【００１０】
ここで、通信ボード９１５は、ＬＡＮ９４２に限らず、直接、インターネット９４０、或いはＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）に接続されていても構わない。直接、インターネット９４０、或いはＩＳＤＮ等のＷＡＮに接続されている場合、データ管理システム９００は、インターネット９４０、或いはＩＳＤＮ等のＷＡＮに接続され、ウェブサーバ９４１は不用となる。
磁気ディスク装置９２０には、オペレーティングシステム（ＯＳ）９２１、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３は、ＣＰＵ９１１、ＯＳ９２１、ウィンドウシステム９２２により実行される。
【００１１】
上記プログラム群９２３には、実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、実施の形態の説明において、「〜情報」、「〜要求」、「〜命令」として説明するデータ、「〜部」として説明する機能を実行時の判定結果や演算結果を示すデータ、「〜部」として説明する機能を実行するプログラム間で受け渡しするデータなどが「〜ファイル」として記憶されている。また、データ管理装置１が記憶管理するデータ（例えば、レコードデータ）やデータ管理処理に使用する管理情報（例えば、後述する範囲管理テーブル５）やバックアップファイル（例えば、後述するアーカイブファイル３００）がファイル群９２４に「〜ファイル」として記憶されている。
また、実施の形態の説明において、フローチャートや構成図の矢印の部分は主としてデータの入出力を示し、そのデータの入出力のためにデータは、磁気ディスク装置９２０、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  ｃａｒｔｒｉｄｇｅ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、その他の記憶媒体に記憶される。あるいは、信号線やその他の伝送媒体により伝送される。
【００１２】
また、実施の形態の説明において「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
【００１３】
また、実施の形態を実施するプログラムは、磁気ディスク装置９２０、ＦＤ、光ディスク、ＣＤ、ＭＤ、ＤＶＤ、その他の記憶媒体による記憶装置を用いて記憶されても構わない。
【００１４】
図３は、実施の形態１によるデータ管理システム９００の構成図である。
図３において、データ管理システム９００はデータ管理装置１と端末装置２とを備える。データのロード、検索、バックアップ／リストア、削除や以下に述べる範囲の追加、削除等の端末装置２からの処理要求はデータ管理装置１がＣＰＵ９１１を用いて処理する。以下、端末装置２からデータ管理装置１にロードされるデータの最小単位を「行」と呼ぶことにする。この「行（任意データの一例）」は、例えば、データベースにおけるレコードに対応する。以下、データ管理装置１をデータベースとして説明する。データ管理システム９００は、一度に複数の行を端末装置２からデータ管理装置１のデータベースにロード可能であり、また、必要な行を検索によりデータ管理装置１から抽出することが可能である。
【００１５】
データ管理装置１は、実施の形態１によるデータ管理装置であって、データ処理部３、範囲管理制御部４、データアクセス制御部６（入出力制御部の一例）、データ格納領域部７（第１の記憶機器の一例）、バッファメモリ９５１を備えるものである。また、範囲管理テーブル５を記憶する記憶機器（第２の記憶機器）とアーカイブファイル３００（バックアップファイルの一例）を記憶する記憶機器（第３の記憶機器）とを備える。範囲管理テーブル５およびアーカイブファイル３００はデータ格納領域部７と同じ記憶機器に記憶してもよいし、別の記憶機器に記憶してもよい。データ格納領域部７は記憶データを更新する更新領域８と記憶データを更新しない参照領域９とを有する。データ格納領域部７は更新領域８を磁気ディスク装置９２０の連続領域に割り付けると共に、参照領域９を更新領域８とは別に磁気ディスク装置９２０の連続領域に割り付ける。また、データ格納領域部７は更新領域８と参照領域９とを磁気ディスク装置９２０の連続領域に割り付けてもよい。これにより、磁気ディスク装置９２０に対して磁気ディスク面の連続する場所にアクセスすることで所望の行にアクセスすることができ、ディスクヘッドのシークに無駄のないデータアクセスが可能となる。なお、データ格納領域部７は半導体メモリなど他の記憶媒体であっても実現は可能である。
ここで、範囲管理テーブル５は範囲に対する管理情報を有するテーブルである。データ管理装置１のバッファメモリ９５１のサイズ（以下、バッファサイズとする）に適合する複数の行を１グループとし、更新領域８または参照領域９において連続する領域に記憶された複数のグループが１範囲である。以下、１範囲に対する管理情報（範囲エントリの一例）を「エントリ」と呼ぶ。
【００１６】
データ管理装置１の各構成部はＣＰＵ９１１を用いて以下のような処理を行う。
データ処理部３は、端末装置２から処理要求を入力し、処理要求に応じて範囲管理制御部４にデータ管理命令を出力する。このとき、データ処理部３は、バッファメモリ９５１に記憶された行を処理し、処理結果を端末装置２に出力する。
範囲管理制御部４は、データ処理部３からデータ管理命令を入力し、データ管理命令に対応して、範囲管理テーブル５に対するエントリの変更・追加・削除・初期設定などのデータ管理処理を行うと共にデータアクセス制御部６にデータアクセス命令を出力する。
データアクセス制御部６は、範囲管理制御部４からデータアクセス命令を入力し、データアクセス命令に応じたグループの取得・追加・削除などのデータアクセス処理をデータ格納領域部７に対して行う。このとき、データアクセス制御部６は、データ格納領域部７から取得した行をバッファメモリ９５１に記憶し、または、バッファメモリ９５１に記憶された行をデータ格納領域部７に追加記憶する。
【００１７】
図４は、データ管理装置１で実現する「範囲」の概念図である。
図４においてデータベース３０は３つの範囲３０ａ〜３０ｃを持つ。それぞれの範囲には範囲を区別する番号として範囲ＩＤ（範囲識別情報の一例）を割り当てる。データベース３０の生成時に１つの範囲を定義し、範囲の追加処理により順番に範囲を追加することができる。
【００１８】
図５は、図４で示すデータベース３０に対して、範囲を追加した場合の概念図である。
データベース３０に追加する行は、最後に追加された最新の範囲である「現在の範囲」にロードする。図４においては範囲３０ｃ、図５においては範囲３０ｄが、現在の範囲である。データ管理装置１は、この範囲を単位としてデータのバックアップ／リストア、削除を行うことが可能である。
【００１９】
図６は、範囲管理テーブル５に保持する範囲管理情報を示した例である。
範囲管理テーブル５はデータベースの生成日付１０、データベースへのテーブル最終書込み時刻１１、データベースが保持する範囲数１２、範囲のキー数１３を持つ。また、各エントリにおいて、個々の範囲の属性として、範囲ＩＤ１４、開始グループ番号１５、グループ数１６、確定状態１７、ロード状態１８、確定時刻１９、エントリ最終書込み時刻２０、最小行番号２１（最小番号の一例）、最大行番号２２（最大番号の一例）、最小タイムスタンプ２３（最小追加時刻の一例）、最大タイムスタンプ２４（最大追加時刻の一例）を持つ。図６においては、行番号（最小行番号２１、最大行番号２２）とタイムスタンプ（最小タイムスタンプ２３、最大タイムスタンプ２４）が範囲のキーであるが、キーの数、キーにするデータ項目は自由に設定することが可能である。
範囲管理制御部４が範囲管理テーブル５の各範囲管理情報を設定する。特に、各エントリに対して、検索、変更、追加、削除、初期設定などの管理処理を行う。
【００２０】
次に、各エントリが有する個々の範囲の属性について説明する。
範囲ＩＤ１４（範囲識別情報の一例）は、範囲管理制御部４が範囲の追加処理時に追加した範囲に対して設定するユニークな識別情報であり、例えば、１ずつ増やした番号を設定する。
開始グループ番号１５（グループ特定情報の一例）は、データ処理部３が１つ以上の行をまとめたデータ単位（グループ）の開始番号である。データ処理部３は１つ以上の行をバッファサイズにまとめて１グループとし、グループに対して生成順に連番を振る。
グループ数１６（グループ特定情報の一例）は、開始グループ番号１５から連続する番号を持つ当該範囲に属するグループの数である。
開始グループ番号１５とグループ数１６とは当該エントリが示す範囲に属するグループを特定する情報である。
確定状態１７（追加可否情報の一例）は当該範囲に対しグループのロードが可能であるか否かを示す。
ロード状態１８（グループ有無情報の一例）は当該範囲が空（グループ無し）であるかロード済みであるかを示す。
確定時刻１９（確定範囲時刻の一例）は当該範囲に対しグループのロードが可能でなくなった時刻（当該エントリの確定状態１７に“ＦＩＸＥＤ”を設定した時刻）である。
エントリ最終書込み時刻２０（最終追加時刻の一例）は、データベースの生成、ロード、範囲の削除、またはバックアップのリストアが最後に行われた時刻である。
最小行番号２１（任意データ特定情報の一例）、最大行番号２２（任意データ特定情報の一例）は、それぞれ当該範囲に含まれる行の番号の最小値、最大値である。
最小タイムスタンプ２３（任意データ特定情報の一例）、最大タイムスタンプ２４（任意データ特定情報の一例）はそれぞれ当該範囲に属する行のタイムスタンプ（行を当該範囲に追加した時刻）の最小値、最大値である。
最小行番号２１、最大行番号２２、最小タイムスタンプ２３および最大タイムスタンプ２４は当該エントリが示す範囲に属する行を特定する情報である。当該エントリが示す範囲に属する行を特定できる情報であれば、行番号とタイムスタンプのいずれか一つであってもよいし、行番号およびタイムスタンプでなくてもよい。以下、最小行番号２１と最大行番号２２とを「範囲のキー＃１」とし、最小タイムスタンプ２３と最大タイムスタンプ２４とを「範囲のキー＃２」とする。
【００２１】
さらに、確定状態１７について詳しく説明する。確定状態１７には「現在」（ＣＵＲＲＥＮＴ）と「確定」（ＦＩＸＥＤ）との状態がある。確定状態がＣＵＲＲＥＮＴとなっている範囲を「現在の範囲（処理中範囲）」、確定状態がＦＩＸＥＤとなっている範囲を「確定した範囲（確定範囲）」と呼ぶ。現在の範囲はデータベースに１つだけ存在し、現在の範囲以外の全ての範囲は確定した範囲である。新規に生成されたデータベースには１個の現在の範囲が含まれ、確定した範囲は含まれない。つまり、データ管理装置１に新規にデータベースを生成する際、範囲管理制御部４は範囲管理テーブル５に現在の範囲のエントリを１つ生成し、確定した範囲のエントリは生成しない。また、データ処理部３が端末装置２から範囲の追加要求を入力すると、範囲管理制御部４は範囲管理テーブル５に新しい現在の範囲のエントリを生成し、それまでの現在の範囲のエントリの確定状態１７をＣＵＲＲＥＮＴからＦＩＸＥＤに変更し確定した範囲として設定する。範囲管理制御部４は新しい現在の範囲のエントリにはそれまでの現在の範囲の範囲ＩＤに１を加えた範囲ＩＤを割り当てる。範囲管理制御部４はこの範囲の追加以外の操作によって確定状態１７を変更することはしない。ここで、現在の範囲に対してはデータのロードを可能とし、確定した範囲に対してデータのロード（グループの追加）はしない。つまり、データ管理システム９００の利用者は、端末装置２からデータ管理装置１にロード要求を行うことで、現在の範囲に対してデータのロードを行うことはできるが確定した範囲に対してデータのロードを行うことはできない。
【００２２】
さらに、ロード状態１８について詳しく説明する。データ管理装置１のデータベースにおいて、範囲を単位としてデータのバックアップ、削除、リストアを行うことができる。ロード状態には「空」（ＥＭＰＴＹ）と「ロード済み」（ＬＯＡＤＥＤ）がある。ロード状態がＥＭＰＴＹとなっている範囲を「空の範囲」、ロード状態がＬＯＡＤＥＤとなっている範囲を「ロード済みの範囲」と呼ぶ。データ処理部３がロード要求を入力した際、現在の範囲が空の範囲であれば、範囲管理制御部４は当該エントリのロード状態１８をＥＭＰＴＹからＬＯＡＤＥＤの状態に変更する。また、データ処理部３がロード済みの範囲に対する削除要求を入力した際、範囲管理制御部４は当該エントリのロード状態１８をＬＯＡＤＥＤからＥＭＰＴＹの状態に変更する。また、データ処理部３は検索要求を入力した際に空の範囲内のデータを検索対象にせず、空の範囲内のデータの参照もしない。また、データ処理部３がバックアップのリストア要求を入力した際、範囲管理制御部４はバックアップ時に保存されたロード状態１８を復元する。データ管理装置１に新規にデータベースを生成する際、範囲管理制御部４はロード状態１８がＥＭＰＴＹである１個の空の範囲のエントリを生成する。
【００２３】
図７は、範囲の操作処理に対する確定状態１７およびロード状態１８の変化について示した範囲の状態遷移図である。
範囲の操作処理とは、端末装置２から入力した処理要求に対応してデータ管理装置１が実行する処理であり、ロード、範囲の削除、範囲の追加、範囲指定のバックアップ、リストアを示す。範囲に対する操作の際に、範囲管理制御部４は範囲管理テーブル５の当該エントリの範囲の状態（確定状態１７、ロード状態１８）を、図中の矢印で示すように、ＳＴ１、ＳＴ２、ＳＴ３、ＳＴ４のいずれかの状態に設定する。
例えば、状態ＳＴ１（確定状態１７：ＣＵＲＲＥＮＴ，ロード状態１８：ＥＭＰＴＹ）の範囲に対して、ロードあるいはリストアの操作を実行する際、範囲管理制御部４は当該範囲のエントリに対して状態ＳＴ２（確定状態１７：ＣＵＲＲＥＮＴ，ロード状態１８：ＬＯＡＤＥＤ）に変更する。範囲の追加の操作をさらに実行する際は、範囲管理制御部４は状態ＳＴ２であった当該範囲のエントリの状態を状態ＳＴ４（確定状態１７：ＦＩＸＥＤ，ロード状態１８：ＬＯＡＤＥＤ）に変更する。なお、範囲の追加により範囲管理制御部４が新規に作成した範囲のエントリの状態は状態ＳＴ１である。状態ＳＴ３は確定状態１７がＦＩＸＥＤでロード状態１８がＥＭＰＴＹである。
【００２４】
データ管理装置１は図に示されていない範囲の操作を行わない。
つまり、データ管理装置１は、空である現在の範囲（状態ＳＴ１）に対してバックアップ、リストア、ロード、範囲の追加の各処理を行う。このとき、範囲管理制御部４は、範囲管理テーブル５の当該範囲のエントリの状態に対して、バックアップまたは空の範囲のリストアの際には状態を変更せず、ロードまたは空でない範囲のリストアの際には状態ＳＴ２に変更し、範囲の追加の際には状態ＳＴ３に変更する。
また、データ管理装置１は、空でない現在の範囲（状態ＳＴ２）に対してロード、バックアップ、範囲の追加、範囲の削除の各処理を行う。このとき、範囲管理制御部４は、範囲管理テーブル５の当該範囲のエントリの状態に対して、ロードまたはバックアップの際には状態を変更せず、範囲の追加の際には状態ＳＴ４に変更し、範囲の削除の際には状態ＳＴ１に変更する。
また、データ管理装置１は、空でない確定範囲（状態ＳＴ４）に対してバックアップ、範囲の削除の各処理を行う。このとき、範囲管理制御部４は、範囲管理テーブル５の当該範囲のエントリの状態に対して、バックアップの際には状態を変更せず、範囲の削除の際には状態ＳＴ３に変更する。
また、データ管理装置１は、空である確定範囲（状態ＳＴ３）に対してバックアップ、リストアの各処理を行う。このとき、範囲管理制御部４は、範囲管理テーブル５の当該範囲のエントリの状態に対して、バックアップまたは空の範囲のリストアの際には状態を変更せず、空でない範囲のリストアの際には状態ＳＴ４に変更する。
【００２５】
図７に示すように、範囲管理制御部４は、バックアップ時の状態に復元するリストアの際、ロード状態１８の変更は行うが、確定状態１７の変更は行わない。なお、データ管理装置１はロード状態１８がＥＭＰＴＹの時に限り当該範囲に対するリストア処理を実行する。
但し、データ管理装置１が各状態において他の処理を実行しても構わない。例えば、ロードされた行の上書きを許可し、ロード状態１８がＬＯＡＤＥＤの時にもリストア処理を実行してもよい。
【００２６】
次に、データ管理装置１におけるロード処理の動作について説明する。
データ処理部３は、端末装置２からロード要求として入力された行に対して、任意のデータ処理を実行し、複数の行をまとめたデータの固まりであるグループを作成する。
図８は、データ処理の結果生成されるグループの一例である。
この例では、グループ１００は、５つの行１０１ａ〜１０１ｅによって構成される。グループに含まれる行は１つであっても良い。また、グループ内でのデータ配置は自由である。例えば、行が複数のフィールドから構成されている場合、フィールドごとにまとめたブロックをさらにまとめたてグループとしてもよい。あるいは、グループ内のデータに対して圧縮や暗号化などのデータ処理をしてまとめたものであってもよい。
【００２７】
また、データ処理部３は、グループの作成においてグループ単位のキー情報を取り出す。
キー情報とは、例えば、キーの最小値と最大値のことである。なお、キーはデータベースの定義として予め設定され記憶機器に記憶されているものとする。
グループ単位のキー情報は、行においてキー属性が設定されたフィールドと同じでも違っても構わない。
図９は、１つの行が行番号１０２ａ、タイムスタンプ１０２ｂ、カラー１０２ｃの３つのフィールドを有する場合のグループ１００の例である。
図９において、キーとして定義されているフィールドが行番号１０２ａとタイムスタンプ１０２ｂである場合、グループ１００のキー情報は、行番号１０２ａが最小値“１”、最大値“５”、タイムスタンプ１０２ｂが最小値“２００５／１０／１３  １２：０１”、最大値“２００５／１０／２０  １１：５４”である。
【００２８】
範囲管理制御部４は、データ処理部３よりグループとそのキー情報を入力して範囲管理テーブル５を更新し、データアクセス制御部６を介してデータ格納領域部７へのグループの書込みを行う。データアクセス制御部６は、範囲管理制御部４を介してグループをデータ格納領域部７に保存する。
【００２９】
図１０は、データ管理装置１におけるロード処理の動作を示すフローチャートである。
データ処理部３が端末装置２からロード要求を入力した際にデータ管理装置１が実行するロード処理について、図１０に基づいて以下に説明する。
【００３０】
まず、データ処理部３は、グループのキー情報（最小値、最大値）を特定するための変数（以下、キー情報変数とする）を初期化する。ここでは、一例として、キー情報は行番号とタイムスタンプの２つとし、最小値には通常取りえない十分に大きな値（例えば、十進数で全ての桁が９）を設定し、最大値には０またはナル値を設定する（ステップＳ１００）。
次に、データ処理部３はロードする行を端末装置２から入力する（ステップＳ１０１）。
次に、データ処理部３は行入力の終了の判定を行う（ステップＳ１０２）。
判定の結果、行入力の終了でない場合、データ処理部３は、入力した行の行番号とタイムスタンプそれぞれのフィールドの値をキー情報変数の値と比較して、入力した行のフィールドの値がキー情報変数の最小値より小さい場合、キー情報変数の最小値をフィールドの値に置き換え、入力した行のフィールドの値がキー情報変数の最大値より大きい場合、キー情報変数の最大値をフィールドの値に置き換える。なお、個々のフィールドの行内での位置は予めデータベースの定義情報を参照して既知であるものとする（ステップＳ１０３）。
次に、データ処理部３は入力した行をグループへ追加する。このとき、データ処理部３は入力したグループをバッファメモリ９５１に追加記憶する（ステップＳ１０４）。
次に、データ処理部３は１つのグループとして更新領域８に追加記憶する条件（以下、グループ条件とする）を満たしているかの判定を行う。グループ条件としては、グループに追加した行数が予め設定した行数を満たしている、あるいは、グループに追加した行の長さの積算値が予め設定したグループのサイズを満たしている、などの設定とする。１グループのサイズはバッファサイズ以内でバッファサイズに近いバッファサイズに適合したサイズが好ましい（ステップＳ１０５）。
グループ条件を満たしていない場合、データ処理部３は処理をステップＳ１０１に移す。
【００３１】
グループ条件を満たしている場合、データ処理部３は範囲管理制御部４に対してグループの書き出しを命令するデータ管理命令を出力する。データ管理命令にはキー情報変数が含まれる。範囲管理制御部４はデータアクセス制御部６に対してデータ格納領域部７の更新領域８へのグループの書き出しを命令するデータアクセス命令を出力し、データアクセス制御部６はデータ処理部３が生成したグループをバッファメモリ９５１からデータ格納領域部７の更新領域８に追加で書き出し保存する。また、データアクセス制御部６は更新領域８に書き出したグループが記憶されたバッファメモリ９５１の領域を開放する（ステップＳ１０６）。
【００３２】
次に、範囲管理制御部４は範囲管理テーブル５の更新を行う。このとき、範囲管理制御部４は確定状態１７がＣＵＲＲＥＮＴであるエントリを範囲管理テーブル５において検索して選択する。そして、選択したエントリのテーブル最終書込み時刻１１と選択したエントリのグループ特定情報（開始グループ番号１５、グループ数１６）と行特定情報（最小行番号２１、最大行番号２２、最小タイムスタンプ２３、最大タイムスタンプ２４）とを更新する。また、ロード状態１８がＥＭＰＴＹの場合には、図７の範囲の状態遷移図に従って、ロード状態１８をＬＯＡＤＥＤに変更する。グループ数１６は、ロード状態１８がＬＯＡＤＥＤの場合には、現在のグループ数１６に１を加算した値を設定し、ロード状態１８がＥＭＰＴＹの場合には１つ前の範囲のエントリの開始グループ番号１５とグループ数１６を加算した値を設定する。そして、エントリ最終書込み時刻２０には現在の時刻を設定する。また、キー情報変数が示すグループの行番号の最小値が範囲管理テーブル５の最小行番号２１より小さい場合、最小行番号２１をキー情報変数の行番号の最小値で置き換え、キー情報変数が示すグループの行番号の最大値が範囲管理テーブル５の最大行番号２２より大きい場合、最大行番号２２をキー情報変数の行番号の最大値で置き換える。同様に、キー情報変数が示すグループのタイムスタンプの最小値、最大値を最小タイムスタンプ２３、最大タイムスタンプ２４と比較して置き換える（ステップＳ１０７）。
【００３３】
次に、データ処理部３はステップＳ１０２で行入力の終了（新たに行が入力されないこと）を検出しているかの判定を行う（ステップＳ１０７）。
判定の結果、行入力の終了を検出している場合、データ処理部３はロード処理を終了する。
行入力の終了を検出していない場合、データ処理部３はステップ１０１に処理を移す。
ステップＳ１０２で行の終了と判定した場合、データ処理部３はグループの書き残しがあるかの判定を行う（ステップＳ１０９）。
データ処理部３は、グループの書き残しがある場合にはステップＳ１０６に処理を移し、グループの書き残しがない場合にはロード処理を終了する。
【００３４】
以上のロード処理の動作の結果、データ格納領域部７の更新領域８にグループが格納される。
図１１は、データ管理装置１が３つのグループ１００ａ〜１００ｃを更新領域８に格納した例である。
【００３５】
次に、データ管理装置１における範囲の追加処理の動作概要を説明する。
データ処理部３は、端末装置２から範囲の追加要求（範囲追加要求データの一例）を受付け、範囲の追加を命令するデータ管理命令を出力して範囲管理制御部４を呼び出す。範囲管理制御部４は更新領域８内のグループを参照領域９に移動させるデータアクセス命令を出力してデータアクセス制御部６を呼び出す。データアクセス制御部６はデータ格納領域部７の更新領域８にあるグループを参照領域９に移動し、範囲管理制御部４は範囲管理テーブル５を更新する。
【００３６】
図１２は、データ管理装置１における範囲の追加処理の動作を示すフローチャートである。
データ処理部３が端末装置２から範囲の追加要求を入力した際にデータ管理装置１が実行する範囲の追加処理について、図１２に基づいて以下に説明する。
【００３７】
まず、データ処理部３は範囲の追加を命令するデータ管理命令を出力して範囲管理制御部４を呼び出し、範囲管理制御部４は確定状態１７がＣＵＲＲＥＮＴであるエントリを範囲管理テーブル５において検索して選択する。そして、範囲管理制御部４は選択したエントリの開始グループ番号１５とグループ数１６を取得してデータ処理部３に出力する（ステップＳ２００）。
次に、データ処理部３は、処理したグループの数をカウントするための変数であるカウンタＮを０に初期化する（ステップＳ２０１）。
次に、データ処理部３はカウンタＮが範囲管理制御部４から入力したグループ数１６より小さいかどうかを判定する（ステップＳ２０２）。
カウンタＮがグループ数１６より小さい場合、データ処理部３は範囲管理制御部４から入力した開始グループ番号１５にカウンタＮを加えたグループ番号のグループを更新領域８から参照領域９に移動させるデータ管理命令を範囲管理制御部４に出力する。範囲管理制御部４は入力したデータ管理命令に対応する当該グループの移動を命令するデータアクセス命令をデータアクセス制御部６に出力する。そして、データアクセス制御部６はデータ格納領域部７の更新領域８から当該グループを読み出しバッファメモリ９５１に書き出す（ステップＳ２０３）。
次に、データ処理部３はバッファメモリ９５１に記憶されたグループをデータ格納領域部７の参照領域９に書き出させるデータ管理命令を範囲管理制御部４に出力する。範囲管理制御部４はデータ管理命令に相当するデータアクセス命令をデータアクセス制御部６に出力し、データアクセス制御部６はバッファメモリ９５１に記憶されたグループを参照領域９に書き出し、参照領域９に書き出したグループが記憶されたバッファメモリ９５１の領域を開放する（ステップＳ２０４）。
次に、データ処理部３はカウンタＮに１を加える（ステップＳ２０５）。
データ管理装置１は以上の処理をカウンタＮがグループ数１６以上になるまで繰り返す。
ステップＳ２０２でカウンタＮがグループ数１６以上であると判定した場合、データ処理部３は更新領域８にあるグループの削除を命令するデータ管理命令を範囲管理制御部４に出力する。そして、範囲管理制御部４は更新領域８にあるグループの削除を命令するデータアクセス命令をデータアクセス制御部６に出力し、データアクセス制御部６は更新領域８に記憶されているグループを削除する（ステップＳ２０６）。
【００３８】
以上により、行の追加が可能な更新領域８にあるグループを参照だけが可能な参照領域９へ移動したことになる。
図１３は、更新領域８にある３つのグループ１００ａ〜１００ｃを参照領域９に移動したイメージを示す。
【００３９】
最後に、データ処理部３はエントリの追加を要求するデータ管理命令を範囲管理制御部４に出力し、範囲管理制御部４は範囲管理テーブル５を更新する。このとき、範囲管理制御部４はステップＳ２００で検索したエントリに対して、図７の状態遷移図に従い確定状態１７をＣＵＲＲＥＮＴからＦＩＸＥＤに変更すると共に、確定時刻１９には現在の時刻を設定する。また、範囲管理制御部４は新たな範囲のエントリを追加し、範囲ＩＤ１４に一つ前の範囲の範囲ＩＤ１４に１を加えた値を設定し、開始グループ番号１５に１つ前の範囲の開始グループ番号１５とグループ数１６を足した値を設定し、グループ数１６に０を設定し、確定状態１７にＣＵＲＲＥＮＴを設定し、ロード状態１８にＥＭＰＴＹを設定し、エントリ最終書込み時刻２０に現在の時刻を設定し、追加したエントリのその他の項目にはナル値を設定する。さらに、範囲管理制御部４は、テーブル最終書込み時刻１１に現在の時刻を設定し、範囲数１２に１を加えた値を設定する（ステップＳ２０７）。
【００４０】
図１４は、図６に示す範囲管理テーブル５の状態にあるデータベースに対して、範囲の追加を行った直後の範囲管理テーブル５の例である。
【００４１】
次に、データ管理装置１における範囲の削除処理の動作概要を説明する。
データ管理装置１は、範囲の削除処理により、対象となる範囲の領域をデータ格納領域部７から開放することができる。
図１５は、範囲の削除の概念図であり、範囲３０ｂを削除した場合を示す。
まず、データ処理部３は、端末装置２から範囲ＩＤ指定で範囲の削除要求（範囲削除要求データの一例）を受付け、範囲ＩＤに対応する範囲の削除を命令するデータ管理命令を出力して範囲管理制御部４を呼び出す。範囲管理制御部４は、データ管理要求が示す範囲ＩＤに範囲ＩＤ１４が一致するエントリを検索して選択し、選択したエントリのグループ特定情報（開始グループ番号１５、グループ数１６）を範囲管理テーブル５から取得する。そして、選択したエントリが示す範囲に属するグループの削除を命令するデータアクセス命令を出力してデータアクセス制御部６を呼び出し、データアクセス制御部６は指定された範囲ＩＤに対応する範囲に属するグループをデータ格納領域部７から削除する。また、範囲管理制御部４は範囲管理テーブル５を更新する。
【００４２】
図１６は、データ管理装置１における範囲の削除処理の動作を示すフローチャートである。
データ処理部３が端末装置２から範囲ＩＤ指定で範囲の削除要求を入力した際にデータ管理装置１が実行する範囲の削除処理について、図１６に基づいて以下に説明する。
【００４３】
まず、データ処理部３は範囲ＩＤに対応する範囲の削除を命令するデータ管理命令を出力して範囲管理制御部４を呼び出し、範囲管理制御部４はデータ管理命令が示す範囲ＩＤに範囲ＩＤ１４が一致するエントリを範囲管理テーブル５において検索して選択する。そして、範囲管理制御部４は選択したエントリの開始グループ番号１５とグループ数１６を取得してデータ処理部３に出力する（ステップＳ３００）。
次に、データ処理部３は、処理したグループの数をカウントするための変数であるカウンタＮを０に初期化する（ステップＳ３０１）。
次に、データ処理部３はカウンタＮが範囲管理制御部４から入力したグループ数１６より小さいかどうかを判定する（ステップＳ３０２）。
カウンタＮがグループ数１６より小さい場合、データ処理部３は範囲管理制御部４から入力した開始グループ番号１５にカウンタＮを加えたグループ番号に対応するグループの削除を命令するデータ管理命令を範囲管理制御部４に出力する。範囲管理制御部４は入力したデータ管理命令に対応する当該グループの削除を命令するデータアクセス命令をデータアクセス制御部６に出力する。そして、データアクセス制御部６はデータ格納領域部７において当該グループが記憶された領域を開放する（ステップＳ３０４）。
次に、データ処理部３はカウンタＮに１を加える（ステップＳ３０５）。
データ管理装置１は以上の処理をカウンタＮがグループ数１６以上になるまで繰り返す。
ステップＳ３０２でカウンタＮがグループ数１６以上であると判定した場合、データ処理部３はエントリの削除を命令するデータ管理命令を範囲管理制御部４に出力し、範囲管理制御部４はステップＳ３００で検索したエントリに対して、図７の状態遷移図に従い、ロード状態１８をＬＯＡＤＥＤからＥＭＰＴＹに変更する。ただし、ロード状態１８がすでにＥＭＰＴＹの場合にはロード状態１８を変えない。また、範囲管理制御部４はテーブル最終書込み時刻１１とエントリ最終書込み時刻２０とに現在の時刻を設定する（ステップＳ３０６）。
【００４４】
図１７は、図６に示す範囲管理テーブル５の状態にあるデータベースに対して、範囲ＩＤ１４が“２”の範囲を削除した直後の範囲管理テーブル５の例である。
【００４５】
次に、データ管理装置１における検索処理の動作概要を説明する。
データ処理部３は、端末装置２から検索要求を受付け、検索要求を解析し、範囲管理制御部４に要求し検索対象となるグループを取得する。そして、データ処理部３は取得した各グループに含まれる各行に対する照合処理を実行して結果を端末装置２に出力する。範囲管理制御部４はデータ処理部３から検索要求の解析結果として受け取った範囲のキー情報で範囲管理テーブル５を参照して検索対象範囲のエントリを読み出し、当該エントリのグループ特定情報で検索対象のグループを特定する。そして、範囲管理制御部４はデータアクセス制御部６に要求し検索対象の範囲に属する全てのグループをデータ格納領域部７から読み出す。
【００４６】
図１８は、データ管理装置１における検索処理の動作を示すフローチャートである。
データ処理部３が端末装置２から検索条件を示す検索要求（検索要求データの一例）を入力した際にデータ管理装置１が実行する検索処理について、図１８に基づいて以下に説明する。
【００４７】
まず、データ処理部３は、検索条件を示す検索問合せ文を検索要求として端末装置２から入力する（ステップＳ４００）。
次に、データ処理部３は検索問合せ文が示す検索条件から範囲のキーになる条件を抽出する。範囲のキーの情報はデータベース定義時に予め設定されているものとする（ステップＳ４０１）。
【００４８】
図６における範囲管理テーブル５の例では、行番号とタイムスタンプの２つを範囲のキーとして定義している。
この範囲のキーを前提とした検索問い合わせ文の例を図１９に示す。
図１９に示す検索問い合わせ文は、行番号が“３０００”より大きく、且つ、タイムスタンプが“２００４／０４／１６  ００：００”以上“２００４／０６／１５  ２３：５９”以下で、且つ、カラーが“ＲＥＤ”を検索条件にすることを意味する。ここで、範囲のキーの条件として抽出される情報は、行番号が“３０００”より大きく、且つ、タイムスタンプが“２００４／０４／１６  ００：００”以上“２００４／０６／１５  ２３：５９”以下という情報である。
【００４９】
次に、データ処理部３は検索問い合わせ文が示す検索条件に範囲のキーになる条件があるか否かの判定を行う（ステップＳ４０２）。
範囲のキーになる条件がある場合、データ処理部３は範囲のキーに対応する範囲のグループ特定情報を要求するデータ管理命令を範囲管理制御部４に出力する。範囲管理制御部４は範囲管理テーブル５を検索してロード状態１８がＬＯＡＤＥＤで、且つ、範囲のキーに行特定情報（最小行番号２１、最大行番号２２、最小タイムスタンプ２３、最大タイムスタンプ２４）が対応する範囲のエントリを選択し、選択したエントリのグループ特定情報（開始グループ番号１５、グループ数１６）をデータ処理部３に出力する。データ処理部３は範囲管理制御部４が出力した開始グループ番号１５とグループ数１６とを検索対象グループの情報として入力する（ステップＳ４０３）。
図６と図１９の条件を前提とした場合、範囲ＩＤ１４が４、５および６の範囲が検索対象範囲であり、検索対象範囲に属するグループが検索対象グループである。
範囲のキーになる条件がない場合、データ処理部３はロード状態１８がＬＯＡＤＥＤであるエントリのグループ特定情報を要求するデータ管理命令を範囲管理制御部４に出力する。範囲管理制御部４は範囲管理テーブル５を検索してロード状態１８がＬＯＡＤＥＤである範囲のエントリを選択し、選択したエントリのグループ特定情報（開始グループ番号１５、グループ数１６）をデータ処理部３に出力する。データ処理部３は範囲管理制御部４が出力した開始グループ番号１５とグループ数１６とを検索対象グループの情報として入力する（ステップＳ４０４）。
【００５０】
次に、データ処理部３は、検索対象グループに含まれる１グループの読み出しを命令するデータ管理命令を範囲管理制御部４に出力する。範囲管理制御部４はデータ管理命令に対応する当該グループの読み出しを命令するデータアクセス命令をデータアクセス制御部６に出力する。データアクセス制御部６は検索対象である当該グループをデータ格納領域部７から読み出してバッファメモリ９５１に記憶する（ステップＳ４０５）。
【００５１】
次に、データ処理部３は検索対象グループに含まれる全グループの読み出しが終了したか否かを判定する（ステップＳ４０６）。
読み出し終了である場合、データ処理部３は検索処理を終了する。
読み出し終了でない場合、データ処理部３はバッファメモリ９５１に記憶されたグループに対して行単位の照合処理を行い検索条件に該当する行の情報を検索結果として端末装置２に出力する。図１９を例にした場合、データ処理部３はバッファメモリ９５１に記憶されたグループに含まれる各行を検索し、行の“カラー”フィールドが“ＲＥＤ”である行を選択する照合処理を行う。また、データ処理部３は、検索結果を端末装置２に出力後、照合処理したグループが記憶されたバッファメモリ９５１の領域を開放する（ステップＳ４０７）。
【００５２】
次に、データ管理装置１におけるバックアップ処理の動作概要を説明する。
データ管理装置１では、バックアップの種類として、フルバックアップ、差分バックアップ、増分バックアップに加え、範囲指定によるバックアップを実現する。フルバックアップは全データのバックアップであり、差分バックアップはフルバックアップ後に追加・変更されたデータのバックアップであり、増分バックアップはフルバックアップ以外のバックアップ（差分バックアップまたは増分バックアップ）後に追加・変更されたデータのバックアップである。また、範囲指定バックアップは指定された範囲のバックアップである。
データ処理部３は、端末装置２からバックアップ要求（バックアップ要求データの一例）を受付け、データベースの定義情報やデータ格納領域部７に格納されたデータを範囲管理制御部４を介して取得し、取得したデータをまとめたアーカイブファイル３００を生成し記憶機器に記憶する。範囲管理制御部４はデータ処理部３からのバックアップ命令に従い、範囲管理テーブル５の情報を取得すると共にデータアクセス制御部６にバックアップ対象のグループを要求する。
【００５３】
図２０は、データ管理装置１がバックアップ処理において生成するアーカイブファイル３００のデータ構造を示した図である。
３００はアーカイブファイルを示す。
３０１はバックアップの種類、アーカイブファイル３００の生成日付、範囲情報（開始範囲ＩＤ、範囲数）などのアーカイブファイル３００のヘッダ情報（アーカイブヘッダ情報）である。
３０２はデータベース定義情報であり、データベースのフィールド情報やキー情報などを含む。
３０３は範囲管理テーブル５の情報である。
３０４はデータ格納領域部７からバックアップして生成したアーカイブファイル３００に含まれるグループに関する情報（グループデータ情報）である。
【００５４】
図２０はバックアップ対象のグループ数が４の場合における例である。
グループデータ情報３０４はグループデータヘッダ情報３１３とグループ３１２ａ〜３１２ｄとを備える。
グループデータヘッダ情報３１３は、開始グループ番号３０５、グループ数３０６、更新領域内グループ数３０７、個別グループ情報３０８ａ〜３０８ｄを備える。
さらに、個別グループ情報３０８ａ〜３０８ｄは、それぞれ、アーカイブファイル３００内でのグループの位置を示すオフセット３０９、グループのサイズ３１０、空のグループか否かを示すフラグ３１１を備える。
個別グループ情報３０８ａのオフセット３０９（ＯＦＦＳＥＴ＃１）はグループ３１２ａ（グループ＃１）の位置を示し、個別グループ情報３０８ｂのオフセット３０９（ＯＦＦＳＥＴ＃２）はグループ３１２ｂ（グループ＃２）の位置を示し、個別グループ情報３０８ｃのオフセット３０９（ＯＦＦＳＥＴ＃３）はグループ３１２ｃ（グループ＃３）の位置を示し、個別グループ情報３０８ｄのオフセット３０９（ＯＦＦＳＥＴ＃４）はグループ３１２ｄ（グループ＃４）の位置を示す。
【００５５】
図２１は、データ管理装置１が差分バックアップまたは増分バックアップで使用するバックアップ開始位置を管理するためのテーブル（バックアップ開始位置テーブル）である。
４００はバックアップ開始位置テーブルの構造を示す。
４０１は差分バックアップにおけるバックアップ対象の開始位置を示すグループ番号（差分バックアップ開始グループ番号）である。
４０２は増分バックアップにおけるバックアップ対象の開始位置を示すグループ番号（増分バックアップ開始グループ番号）である。
差分バックアップ開始グループ番号４０１には、データ処理部３により、フルバックアップ直後における最後のグループ番号に１を加えた値が設定される。
増分バックアップ開始グループ番号４０２には、データ処理部３により、差分バックアップ、増分バックアップの直後における最後のグループ番号に１を加えた値が設定される。
【００５６】
図２２は、データ管理装置１におけるバックアップ処理の動作を示すフローチャートである。
データ処理部３が端末装置２からバックアップ要求を入力した際にデータ管理装置１が実行するバックアップ処理について、図２２に基づいて以下に説明する。
【００５７】
まず、データ処理部３はバックアップの種類が指定されたバックアップ要求を端末装置２から受け取る。バックアップの種類には、範囲指定バックアップ、フルバックアップ、差分バックアップ、増分バックアップがある（ステップＳ５００）。
次に、データ処理部３はアーカイブファイル３００に設定する情報を要求するデータ管理命令を範囲管理制御部４に出力し、範囲管理制御部４は範囲管理テーブル５から取得した情報をデータ処理部３に出力する。このとき、範囲管理制御部４は、アーカイブファイル３００のグループデータヘッダ情報３１３に設定する開始グループ番号３０５、グループ数３０６、更新領域内グループ数３０７と、範囲管理テーブル情報３０３に設定する情報と、アーカイブヘッダ情報３０１に設定する開始範囲ＩＤ、範囲数とに関する情報を範囲管理テーブル５から取得する（ステップＳ５０１）。
次に、データ処理部３は、アーカイブヘッダ情報３０１、データベース定義情報３０２、範囲管理テーブル情報３０３、グループデータヘッダ情報３１３を作成し、アーカイブファイル３００に順番に書き出す。このとき、データ処理部３は、ステップＳ５００で入力したバックアップ要求とステップＳ５０１で範囲管理制御部４から取得した範囲管理テーブル５の情報とに基づいてアーカイブヘッダ情報３０１を生成し、データベース作成時に定義された情報に基づいてデータベース定義情報３０２を生成し、ステップＳ５０１で範囲管理制御部４から取得した範囲管理テーブル５の情報に基づいて範囲管理テーブル情報３０３を生成する。また、データ処理部３は、ステップＳ５０１で範囲管理制御部４から取得した範囲管理テーブル５の情報に基づいてグループデータヘッダ情報３１３を生成する。データ処理部３は、グループデータヘッダ情報３１３のうち、個別グループ情報３０８ａ〜３０８ｄには予め定めた初期値を設定する。範囲管理テーブル情報３０３には、例えば、ロード状態１８（グループ有無情報の一例）などが含まれる（ステップ５０２）。
【００５８】
次に、データ処理部３は、処理したグループの数をカウントするための変数であるカウンタＮを０に初期化する（ステップＳ５０３）。
次に、データ処理部３はカウンタＮがアーカイブファイル３００のグループデータヘッダ情報３１３に設定したグループ数３０６より小さいかどうかを判定する（ステップＳ５０４）。
カウンタＮがグループ数３０６より小さい場合、データ処理部３は、アーカイブファイル３００のグループデータヘッダ情報３１３に設定した開始グループ番号３０５にカウンタＮを加えた値をバックアップ対象グループの番号を示す変数であるグループ番号ＧＮに設定する（ステップＳ５０５）。
次に、データ処理部３は、範囲管理テーブル情報３０３に含まれるロード状態１８に基づいて、グループ番号ＧＮが示すグループが空のグループでないか否かの判定を行う。このとき、データ処理部３はロード状態１８がＥＭＰＴＹである場合に当該グループが空であると判定する（ステップＳ５０６）。
グループ番号ＧＮのグループが空であると判定した場合、データ処理部３はステップＳ５０９に処理を移す。
グループ番号ＧＮのグループが空でないと判定した場合、データ処理部３はグループ番号ＧＮに対応するグループを要求するデータ管理命令を範囲管理制御部４に出力し、範囲管理制御部４はデータ管理命令に対応するグループを要求するデータアクセス命令をデータアクセス制御部６に出力する。データアクセス制御部６はグループ番号ＧＮのグループをデータ格納領域部７から読み出してバッファメモリ９５１に記憶する（ステップＳ５０７）。
次に、データ処理部３はバッファメモリ９５１に記憶されたグループ番号ＧＮに対応するグループをアーカイブファイル３００に追加で書き出す。また、データ処理部３はグループ番号ＧＮに対応するグループが記憶されたバッファメモリ９５１の領域を開放する（ステップＳ５０８）。
また、データ処理部３はステップＳ５０２でアーカイブファイル３００に出力したグループデータヘッダ情報３１３をグループ番号ＧＮに対応するグループに関して更新する。具体的には、個別グループ情報であるアーカイブファイル３００内でのオフセット３０９、グループのサイズ３１０、空のグループか否かを示すフラグ３１１を設定する（ステップＳ５０９）。
次に、データ処理部３はカウンタＮに１を加える（ステップＳ５１０）。
データ管理装置１は以上の処理をカウンタＮがグループ数３０６以上になるまで繰り返す。
ステップＳ５０４でカウンタＮがグループ数３０６以上であると判定した場合、データ処理部３はバックアップ開始位置テーブル４００を更新しバックアップ処理を終了する。バックアップ開始位置テーブル４００を更新する際、データ処理部３は、フルバックアップの場合には、最後にアーカイブファイル３００に追加したグループのグループ番号に１を加えた値（グループ番号ＧＮ＋１）を差分バックアップ開始グループ番号４０１に設定する。また、データ処理部３は、差分バックアップまたは増分バックアップの場合には、最後にアーカイブファイル３００に追加したグループのグループ番号に１を加えた値（グループ番号ＧＮ＋１）を増分バックアップ開始グループ番号４０２に設定する（ステップＳ５１１）。
【００５９】
図２３は、ステップＳ５０１についてバックアップの種類に分けて動作の詳細を説明したフローチャートである。
まず、データ処理部３はバックアップ要求が示すバックアップの種類を判定する。範囲指定バックアップの要求にはバックアップする範囲を示す範囲ＩＤが含まれる（ステップＳ６００）。
範囲指定バックアップの場合、データ処理部３は、範囲管理制御部４が範囲管理テーブル５を検索して選択した範囲ＩＤ１４がバックアップ要求に含まれる範囲ＩＤと一致するエントリについて、開始グループ番号１５とグループ数１６とを取得する。ステップＳ５０２において、データ処理部３は、範囲管理テーブル５から取得した開始グループ番号１５とグループ数１６とを、アーカイブファイル３００のグループデータヘッダ情報３１３の開始グループ番号３０５とグループ数３０６とに設定する（ステップＳ６０１）。
フルバックアップの場合、データ処理部３は、範囲管理テーブル５の情報に基づいて、全範囲を対象とする開始グループ番号とグループ数とを算出する。ここで算出する開始グループ番号は範囲管理テーブル５の全エントリにおける最小の開始グループ番号１５であり、グループ数は全エントリのグループ数１６の合計値である。ステップＳ５０２において、データ処理部３は算出した開始グループ番号とグループ数とをアーカイブファイル３００のグループデータヘッダ情報３１３の開始グループ番号３０５とグループ数３０６とに設定する。データ処理部３は範囲管理テーブル５の情報を範囲管理制御部４を介して取得する（ステップＳ６０２）。
差分バックアップの場合、データ処理部３は、バックアップ開始位置テーブル４００を参照して差分バックアップ開始グループ番号４０１を取得し、範囲管理テーブル５の情報に基づいて差分バックアップ開始グループ番号４０１以降のグループ数を算出する。ここで算出するグループ数は範囲管理テーブル５の全エントリにおける最大の開始グループ番号１５に最大の開始グループ番号１５を有する当該エントリのグループ数１６を加算した値から差分バックアップ開始グループ番号４０１を減算した値に１加算した値である。ステップＳ５０２において、データ処理部３は、アーカイブファイル３００に対して、差分バックアップ開始グループ番号４０１をグループデータヘッダ情報３１３の開始グループ番号３０５に設定し、算出したグループ数をグループデータヘッダ情報３１３のグループ数３０６に設定する。データ処理部３は範囲管理テーブル５の情報を範囲管理制御部４を介して取得する（ステップＳ６０３）。
増分バックアップの場合、データ処理部３は、バックアップ開始位置テーブル４００を参照して増分バックアップ開始グループ番号４０２を取得し、範囲管理テーブル５に基づいて増分バックアップ開始グループ番号４０２以降のグループ数を算出する。ここで算出するグループ数は範囲管理テーブル５の全エントリにおける最大の開始グループ番号１５に最大の開始グループ番号１５を有する当該エントリのグループ数１６を加算した値から増分バックアップ開始グループ番号４０２を減算した値に１加算した値である。ステップＳ５０２において、データ処理部３は、アーカイブファイル３００に対して、増分バックアップ開始グループ番号４０２をグループデータヘッダ情報３１３の開始グループ番号３０５に設定し、算出したグループ数をグループデータヘッダ情報３１３のグループ数３０６に設定する。データ処理部３は範囲管理テーブル５の情報を範囲管理制御部４を介して取得する（ステップＳ６０４）。
【００６０】
ステップＳ６０１〜ステップＳ６０４の処理において、バックアップの種類に応じて取得または算出し、アーカイブファイル３００のグループデータヘッダ情報３１３に設定する開始グループ番号とグループ数とに対して、データ処理部３は、開始グループ番号からグループ数分の各グループにおいて範囲管理テーブル５の確定状態１７がＣＵＲＲＥＮＴであるエントリが示す範囲に属するグループの数を算出し、算出したグループ数をＳ５０２でアーカイブファイル３００のグループデータヘッダ情報３１３に設定する更新領域内グループ数３０７とする。また、データ処理部３は、バックアップの種類に応じて取得または算出した開始グループ番号とグループ数とに対応するグループが属する各範囲の範囲ＩＤと範囲数とを範囲管理テーブルに基づいて算出する。ステップＳ５０２において、データ処理部３は算出した範囲ＩＤと範囲数とをアーカイブファイル３００のアーカイブヘッダ情報３０１の開始範囲ＩＤと範囲数とに設定する。データ処理部３は範囲管理テーブル５の情報を範囲管理制御部４を介して取得する（ステップＳ６０５）。
【００６１】
次に、データ管理装置１におけるリストア処理の動作概要を説明する。
データ管理装置１は、端末装置２からのリストア要求に対して、バックアップ処理時に生成したアーカイブファイル３００を入力として範囲管理制御部４およびデータアクセス制御部６を介してリストア処理を実行する。データ処理部３が入力したリストア要求に対応して、範囲管理制御部４は範囲管理テーブル５を更新し、データアクセス制御部６はリストア対象のグループをデータ格納領域部７に書き込む。
【００６２】
図２４は、データ管理装置１におけるリストア処理の動作を示すフローチャートである。
データ処理部３が端末装置２からリストア要求を入力した際にデータ管理装置１が実行する範囲の削除処理について、図２４に基づいて以下に説明する。
【００６３】
まず、データ処理部３はリストア要求を端末装置２から受け取る（ステップＳ７００）。
次に、データ処理部３は、データ管理装置１の記憶機器からアーカイブファイル３００を取得し、アーカイブヘッダ情報３０１に含まれるバックアップ種類に従い、リストア条件を満足しているか否かのチェックを行う。チェック条件は、例えば、範囲指定バックアップにより生成されたアーカイブファイル３００をリストアする場合、リストア対象の範囲を示すエントリのロード状態１８が図７の状態遷移図に従いＥＭＰＴＹであること、アーカイブファイル３００内のデータベース定義情報３０２と範囲管理テーブル情報３０３とが現在リストアしようとしているデータベースのデータベース定義情報と範囲管理テーブル情報３０３とに対して矛盾がないことなどである。なお、上書きモードでアーカイブファイル３００のリストアをする場合、リストア対象の範囲を示すエントリのロード状態１８がＥＭＰＴＹである必要はない。データ処理部３は範囲管理制御部４を介して範囲管理テーブル５の情報を取得する（ステップＳ７０１）。
リストア条件を満足していないと判定した場合、データ処理部３はリストア処理を終了する。
リストア条件を満足していると判定した場合、データ処理部３は、アーカイブファイル３００を参照して、グループ数３０６から更新領域内グループ数３０７を引いた値を変数である参照領域内グループ数ＲＮに設定する（ステップＳ７０２）。
次に、データ処理部３は処理したグループの数をカウントするため変数であるカウンタＮを０に初期化する（ステップＳ７０３）。
次に、データ処理部３はカウンタＮがグループ数３０６より小さいかどうかを判定する（ステップＳ７０４）。
カウンタＮがグループ数３０６より小さい場合、データ処理部３は、開始グループ番号３０５にカウンタＮを加えた値を変数であるグループ番号ＧＮに設定する（ステップＳ７０５）。
次に、データ処理部３は、アーカイブファイル３００を参照して、グループ番号ＧＮに対応する個別グループ情報のフラグ３１１が空を示すかの判断をする（ステップＳ７０６）。
当該フラグ３１１が空を示さないと判定した場合、データ処理部３は、グループ番号ＧＮに対応するグループをアーカイブファイル３００から読み出しバッファメモリ９５１に記憶する（ステップＳ７０７）。
当該フラグ３１１が空を示すと判定した場合、データ処理部３は、個別グループ情報のサイズ３１０を設定情報として持つ仮想的な空のグループを作成する（ステップＳ７０８）。
次に、データ処理部３はカウンタＮが参照領域内グループ数ＲＮより小さいか否かを判定する（ステップＳ７０９）。
カウンタＮが参照領域内グループ数ＲＮより小さい場合、データ処理部３は、リストア対象グループをデータ格納領域部７の参照領域９に書き出させるデータ管理命令を範囲管理制御部４に出力し、範囲管理制御部４はデータ管理命令に相当するデータアクセス命令をデータアクセス制御部６に出力し、データアクセス制御部６はバッファメモリ９５１に記憶されたグループを参照領域９に書き出す。また、データアクセス制御部６は参照領域９に書き出したグループが記憶されたバッファメモリ９５１の領域を開放する（ステップＳ７１０）。
カウンタＮが参照領域内グループ数ＲＮ以上である場合、データ処理部３は、リストア対象グループをデータ格納領域部７の更新領域８に書き出させるデータ管理命令を範囲管理制御部４に出力し、範囲管理制御部４はデータ管理命令にデータアクセス命令をデータアクセス制御部６に出力し、データアクセス制御部６はバッファメモリ９５１に記憶されたグループを更新領域８に書き出す。また、データアクセス制御部６は更新領域８に書き出したグループが記憶されたバッファメモリ９５１の領域を開放する（ステップＳ７１１）。
次に、データ処理部３はカウンタＮに１を加えてステップＳ７０４に処理を移す。
ステップＳ７０４において、カウンタＮがグループ数３０６以上であると判定した場合、データ処理部３は範囲管理テーブル５のリストアを命令するデータ管理命令を範囲管理制御部４に出力し、範囲管理制御部４は範囲管理テーブル５を更新し、データ管理装置１はリストア処理を終了する（ステップＳ７１３）。
【００６４】
図２５は、ステップＳ７１３における範囲管理テーブル５の更新の動作を示したフローチャートである。
まず、データ処理部３はアーカイブファイル３００のアーカイブヘッダ情報３０１のバックアップ種類を参照し、範囲指定バックアップのリストアか否かを判定する（ステップＳ８００）。
範囲指定バックアップのリストアである場合、データ処理部３は範囲管理テーブル５の１範囲のリストアを命令するデータ管理命令を範囲管理制御部４に出力する。範囲管理制御部４は範囲管理テーブル５においてリストア対象の範囲のエントリのロード状態１８を、図７の状態遷移図に従って、ＬＯＡＤＥＤに変更する（ステップＳ８０１）。
範囲指定バックアップのリストアでない場合、データ処理部３は範囲管理テーブル５の全範囲のリストアを命令するデータ管理命令を範囲管理制御部４に出力し、範囲管理制御部４はアーカイブファイル３００の範囲管理テーブル情報３０３で範囲管理テーブル５の情報を置き換える（ステップＳ８０２）。
【００６５】
実施の形態におけるバッファメモリはバッファメモリより高速なキャッシュメモリであってもよい。
データベースに代表されるデータ管理装置１ではデータアクセスの高速化が望まれる。そこで、実施の形態におけるデータ管理装置１は、バッファメモリ（またはキャッシュメモリ）を介してＣＰＵ９１１と磁気ディスク装置９２０との間で個別のデータ（行）を入出力しデータアクセスの効率を向上することでデータアクセスを高速化している。また、行をバッファサイズ（またはキャッシュサイズ）でまとめたデータ（グループ）を単位として管理しグループ単位で行をアクセスしているため、バッファサイズ（またはキャッシュサイズ）に適合するサイズ分の行を入出力することが容易であり、データアクセスの効率をさらに向上している。また、データ管理装置１はグループを任意にまとめたデータ（範囲）を記憶領域（参照領域９または更新領域８）の連続する領域に記憶することで、連続するグループにアクセスする際に磁気ディスク装置９２０がヘッダおよび磁気ディスクを移動するデータアクセス時間を短縮ている。
このため、実施の形態におけるデータ管理装置１は、追記型のデータベースとして特に有用であり、例えば、時・日・週・月などの時間単位を範囲とすることで任意の時間単位に発生したデータを高速に処理することができる。
【００６６】
上記のように実施の形態１では、複数の行をまとめたグループを単位にデータ格納領域部７にデータを連続的に配置して格納する方法を採っている。入出力単位がグループ単位であること、アクセスするグループが連続的に配置されていることから高速なデータアクセスが可能となる。
また、範囲管理テーブル５に範囲ごとのキー情報（最小値、最大値）を持つことが可能であり、検索においてこのキー情報を利用してデータを読み出す前にアクセス対象の範囲のデータを絞り込むことができ、効率的なデータアクセスが可能となる。
また、範囲管理テーブル５にロード状態１８を持ち、空の範囲を検索対象から除外することができ、効率的なデータアクセスが可能となる。
また、データロードにおいては、データの追加が許可された更新領域８に対してグループ単位で連続的に追加していくだけでよく、索引も持たないため、高速なロードが可能である。
また、範囲の追加は、定められた時間単位でなく、ユーザによって任意の時点で可能である。
また、範囲管理テーブル５によりデータ格納領域部７に配置された連続した領域として範囲を管理しているため、一括した処理が可能で範囲の削除に時間がかからない。
また、バックアップにおいては、範囲指定のバックアップの実現に加え、範囲管理テーブル５のロード状態１８を参照して空の範囲に対するバックアップ処理をスキップすることで読み出し範囲を限定できるために効率的にバックアップを行うことが可能である。
また、リストアにおいては、範囲指定のリストアの実現に加え、アーカイブファイル３００に含まれる範囲管理テーブル５から削除された範囲も削除されたものとして忠実に復元することが可能である。
【００６７】
上記実施の形態１において以下のようなデータ管理装置１について説明した。
データベースのデータ格納領域として、データの追加を許可する更新領域とデータの参照だけを許可する参照領域をもち、更新領域のデータは参照領域に追加され、参照領域へ追加されたデータは更新領域から削除されるデータ格納手段（データ格納領域部７）を備えたデータ管理装置１。
【００６８】
複数の行（レコード）を対象に所定のデータ処理を行うデータ処理手段（データ処理部３）と、前記データ処理の結果複数の行をまとめたグループを単位としてデータ格納領域上の範囲を管理する範囲管理テーブルを備え、データ格納領域に順番に追加される前記範囲を管理・制御する範囲管理制御手段（範囲管理制御部４）と、前記グループを格納するデータ格納領域上の前記グループへのアクセスを制御するデータアクセス制御手段（データアクセス制御部６）とを備えたデータ管理装置１。
【００６９】
前記範囲管理制御手段は、前記グループの追加が許可された現在の前記範囲の状態（ＣＵＲＲＥＮＴ）と前記グループの追加が許可されない確定した前記範囲の状態（ＦＩＸＥＤ）のいずれかの前記範囲の状態（確定状態１７）を前記範囲管理テーブルに保持し、前記範囲を管理することを特徴とするデータ管理装置１。
【００７０】
前記範囲管理制御手段は、前記範囲の状態を現在の前記範囲の状態から確定した前記範囲の状態に変更するとき、前記更新領域に格納されている前記グループを前記参照領域に移動させることを特徴とするデータ管理装置１。
【００７１】
前記範囲管理制御手段は、前記範囲の状態を前記現在の範囲の状態から前記確定した範囲の状態に変更するとき、前記更新領域に格納されている複数の前記グループを所定の条件（例えば、バッファサイズ）に従って併合して前記参照領域に移動させることを特徴とするデータ管理装置１。
【００７２】
前記範囲管理制御手段は、前記グループが追加されたことを示すロード済みの前記範囲の状態と前記グループが追加されていない空の前記範囲の状態のいずれかの前記範囲の状態を前記範囲管理テーブルに保持し、前記グループの追加において前記現在の範囲の状態を前記ロード済みの範囲の状態に設定することを特徴とする請求項１乃至４のいずれか１つのデータ管理装置。
【００７３】
前記範囲管理制御手段は、前記グループが追加されたことを示すロード済みの前記範囲の状態（ＬＯＡＤＥＤ）と前記グループが追加されていない空の前記範囲の状態（ＥＭＰＴＹ）のいずれかの前記範囲の状態（ロード状態１８）を前記範囲管理テーブルに保持し、前記範囲の削除において前記空の範囲の状態に設定することを特徴とするデータ管理装置１。
【００７４】
前記範囲管理制御手段は、前記グループが追加されたことを示すロード済みの前記範囲の状態と前記グループが追加されていない空の前記範囲の状態のいずれかの前記範囲の状態、および前記範囲に含まれる行に関連づく所定のキーの範囲情報（最小行番号２１、最大行番号２２、最小タイムスタンプ２３、最大タイムスタンプ２４）を前記範囲管理テーブルに保持し、検索においてデータ処理手段は前記空の範囲あるいは検索条件が前記キーの範囲情報との比較で偽となる範囲の前記グループを検索対象から外して検索処理を行うことを特徴とするデータ管理装置１。
【００７５】
前記範囲管理制御手段は、前記グループが追加されたことを示すロード済みの前記範囲の状態と前記グループが追加されていない空の前記範囲の状態のいずれかの前記範囲の状態を前記範囲管理テーブルに保持し、前記データ処理手段は前記範囲を指定したバックアップを行うことを特徴とするデータ管理装置１。
【００７６】
前記範囲を指定したバックアップのリストアにおいて、バックアップ時と同じ前記範囲の情報をもつ場合に限りリストアを実行することを特徴とするデータ管理装置１。
【００７７】
前記範囲管理制御手段は、前記グループが追加されたことを示すロード済みの前記範囲の状態と前記グループが追加されていない空の前記範囲の状態のいずれかの前記範囲の状態を前記範囲管理テーブルに保持し、バックアップにおいて前記データ処理手段は前記空の範囲の情報を保持したアーカイブファイルを生成することを特徴とするデータ管理装置１。
【００７８】
バックアップのリストアにおいて、前記データ処理手段は前記空の範囲の情報を復元することを特徴とするデータ管理装置１。
【００７９】
前記範囲管理テーブルは、現在の前記範囲の状態から確定した前記範囲の状態に変更するときの時刻の情報（確定時刻１９）を保持し、前記データ処理手段、前記範囲管理制御手段を実行することを特徴とするデータ管理装置１。
【００８０】
前記範囲管理テーブルは、前記範囲に対して前記グループが追加された最終追加時刻の情報（エントリ最終書込み時刻２０）を保持し、前記データ処理手段、前記範囲管理制御手段を実行することを特徴とするデータ管理装置１。
【００８１】
前記範囲管理テーブルは、前記範囲に含まれる行の最小行番号と最大行番号の情報を保持し、前記データ処理手段、前記範囲管理制御手段により検索を実行することを特徴とするデータ管理装置１。
【００８２】
前記範囲管理テーブルは、前記範囲に含まれる行の最小タイムスタンプと最大タイムスタンプの情報を保持し、前記データ処理手段、前記範囲管理制御手段により検索を実行することを特徴とするデータ管理装置１。
【００８３】
実施の形態２．
上記実施の形態１によるデータ管理装置１は、データ格納領域部７の更新領域８にあるグループを参照領域９に移動することで範囲の追加を行うものであった。
これに対して実施の形態２では、更新領域８にあるグループをマージ処理して生成した新しいグループを参照領域９に移動することを特徴とするデータ管理装置１について説明する。
【００８４】
図２６は、グループのマージ処理を示す概念図である。
図２６は、データ処理部３が実行するグループのマージ処理により、グループ１００ａ〜１００ｃが新たなグループ１０００ａに、グループ１００ｄ〜１００ｇが新たなグループ１０００ｂになることを示す。
マージ対象とするグループについて、グループのマージ条件をデータ管理装置１の記憶機器にあらかじめ保持し任意に設定できるものとする。なお、以降の説明において、グループをマージ後の新たなグループをマージグループと呼ぶことにする。
【００８５】
実施の形態２によるデータ管理システム９００の構成図および範囲管理テーブル５の例を示す図は、上記実施の形態１と同様とする（図３、図６）。但し、実施の形態２におけるデータ管理装置１はバッファメモリ９５１と同じバッファサイズを持つマージ用のバッファメモリを備える。
【００８６】
図２７は、実施の形態２による範囲の追加処理における動作を示すフローチャートである。
実施の形態２によるデータ管理装置１における範囲の追加処理の動作について、図２７に基づいて以下に説明する。
【００８７】
データ処理部３は、端末装置２から範囲の追加要求を入力した際、現在の範囲のグループ特定情報を要求するデータ管理命令を範囲管理制御部４に出力する。範囲管理制御部４は、確定状態１７がＣＵＲＲＥＮＴである現在の範囲のエントリを範囲管理テーブル５において検索して選択し、選択したエントリの開始グループ番号１５とグループ数１６とを取得してデータ処理部３に出力する（ステップＳ９００）。
次に、データ処理部３は処理したグループの数をカウントする変数であるカウンタＮを０に初期化する（ステップＳ９０１）。
次に、データ処理部３はマージしたグループの数をカウントする変数であるカウンタＭを０に初期化する（ステップＳ９０２）。
次に、データ処理部３はカウンタＮが範囲管理制御部４から入力したグループ数１６より小さいかどうかを判定する（ステップＳ９０３）。
カウンタＮがグループ数１６より小さい場合、データ処理部３は範囲管理制御部４から入力した開始グループ番号１５にカウンタＮを加えたグループ番号に対応するグループを要求するデータ管理命令を範囲管理制御部４に出力する。範囲管理制御部４はデータ管理命令に相当するデータアクセス命令をデータアクセス制御部６に出力する。データアクセス制御部６はデータアクセス命令に対応する当該グループをデータ格納領域部７の更新領域８から読み出しバッファメモリ９５１に記憶する（ステップＳ９０４）。
次に、データ処理部３は、参照領域９に書き出していないマージグループがある場合、そのマージグループにバッファメモリ９５１に記憶されたグループをマージして新たなマージグループとする。このとき、データ処理部３はマージグループをマージ用のバッファメモリに記憶する。また、データ処理部３はマージしたグループが記憶されたバッファメモリ９５１の領域を開放する（ステップＳ９０５）。
次に、データ処理部３はカウンタＮに１を加える（ステップＳ９０６）。
次に、データ処理部３はマージグループがマージ完了条件を満たしているか否かの判定を行う。マージ完了条件は、マージ対象の最大グループ数やマージグループの最大サイズなど任意の条件を予め設定することが可能である。マージグループのサイズがバッファメモリ９５１に適合するとよい（ステップＳ９０７）。
マージ完了条件を満たしていないと判定した場合、データ処理部３はステップＳ９０３に処理を移す。
マージ完了条件を満たしていると判定した場合、データ処理部３はマージグループをデータ格納領域部７の参照領域９に書き出させるデータ管理命令を範囲管理制御部４に出力する。範囲管理制御部４はデータ管理命令に相当するデータアクセス命令をデータアクセス制御部６に出力し、データアクセス制御部６はマージ用バッファメモリに記憶されたマージグループを参照領域９に書き出す。また、データアクセス制御部６は参照領域９に書き出したグループが記憶されたマージ用バッファメモリの領域を開放する（ステップＳ９０８）。
次に、データ処理部３はカウンタＭに１を加えてステップＳ９０３に処理を移す（ステップ９０９）。
データ管理装置１は以上の処理をカウンタＮがグループ数１６以上になるまで繰り返す。
ステップＳ９０３でカウンタＮがグループ数１６以上であると判定した場合、データ処理部３はマージグループの書き残しがあるかの判定を行う（ステップＳ９１０）。
マージグループの書き残しがあると判定した場合、データ処理部３はステップＳ９０８およびステップ９０９と同様にしてマージグループを参照領域９に書き出し（ステップＳ９１１）、カウンタＭに１を加算する（ステップＳ９１２）。
マージグループの書き残しがないと判定した場合、データ処理部３はステップＳ９１３に処理を移す。
次に、データ処理部３は更新領域８にあるグループの削除を命令するデータ管理命令を範囲管理制御部４に出力し、範囲管理制御部４はデータ管理命令に相当するデータアクセス命令をデータアクセス制御部６に出力し、データアクセス制御部６は更新領域８に記憶されているグループを削除する（ステップＳ９１３）。
以上により、更新領域８にあるグループをマージして参照領域９へ移動したことになる。
【００８８】
最後に、データ処理部３はマージグループ数がカウンタＭである場合のマージ後の範囲管理テーブル５の更新を命令するデータ管理命令を範囲管理制御部４に出力し、範囲管理制御部４は範囲管理テーブル５の更新を行う。このとき、範囲管理制御部４は、確定状態１７がＣＵＲＲＥＮＴであるエントリを検索して範囲管理テーブル５から選択する。範囲管理制御部４は選択したエントリのグループ数１６にマージグループの数であるカウンタＭを設定し、確定状態１７をＣＵＲＲＥＮＴからＦＩＸＥＤに変更し、確定時刻１９には現在の時刻を設定する。また、範囲管理制御部４は、新たな範囲のエントリを追加し、範囲ＩＤ１４に一つ前のエントリの範囲ＩＤに１を加えた値を設定し、開始グループ番号１５に１つ前のエントリの開始グループ番号１５とグループ数１６とを足した値を設定し、グループ数１６に０を設定し、確定状態１７にＣＵＲＲＥＮＴを設定し、ロード状態１８にＥＭＰＴＹを設定し、エントリ最終書込み時刻２０は現在の時刻を設定し、エントリのその他の項目にナル値を設定する。さらに、範囲管理制御部４はテーブル最終書込み時刻１１に現在の時刻を設定し、範囲数１２に１を加えた値を設定する（ステップＳ９１４）。
【００８９】
なお、前記グループのマージ処理は、範囲の追加処理の実行時だけでなく、行の追加（ロード）の途中で更新領域８にあるグループが所定のサイズ（例えば、バッファサイズ）あるいは件数を越えたときに実施してもよい。
【００９０】
実施の形態２では、範囲の追加の際に更新領域８にあるグループを参照領域９に移動する際に、更新領域８のグループをマージして新たなグループを生成する点が実施の形態１とは異なる。
これにより、行のロード頻度が低く更新領域８に追加されるグループのサイズが小さくなってアクセス効率を低下させる場合においても、前記マージ処理により入出力効率を向上するのに適切なグループのサイズ（例えば、バッファサイズ）に保つことができ、アクセス効率を向上させることが可能となる。
【００９１】
上記実施の形態２において以下のようなデータ管理装置１について説明した。
範囲管理制御手段（範囲管理制御部４）は、範囲の追加において現在の範囲（ＣＵＲＲＥＮＴ）の状態から確定した範囲の状態（ＦＩＸＥＤ）に範囲の状態（確定状態１７）を変更し、新たに追加した範囲を現在の範囲に設定し、現在の範囲を常に１つだけ持つことを特徴とするデータ管理装置１。
【図面の簡単な説明】
【００９２】
【図１】実施の形態１におけるデータ管理システム９００の外観を示す図。
【図２】実施の形態１におけるデータ管理システム９００のハードウェア構成図。
【図３】実施の形態１によるデータ管理システム９００の構成図。
【図４】実施の形態１におけるデータ管理装置１で実現する「範囲」の概念図。
【図５】図４で示すデータベース３０に対して範囲を追加した場合の概念図。
【図６】実施の形態１における範囲管理テーブル５に保持する範囲管理情報を示した例。
【図７】実施の形態１における範囲の操作処理に対する確定状態１７およびロード状態１８の変化について示した範囲の状態遷移図。
【図８】実施の形態１におけるデータ処理の結果として生成されるグループの一例。
【図９】実施の形態１における１つの行が行番号１０２ａ、タイムスタンプ１０２ｂ、カラー１０２ｃの３つのフィールドを有する場合のグループ１００の例。
【図１０】実施の形態１のデータ管理装置１におけるロード処理の動作を示すフローチャート。
【図１１】実施の形態１におけるデータ管理装置１が３つのグループ１００ａ〜１００ｃを更新領域８に格納した例。
【図１２】実施の形態１のデータ管理装置１における範囲の追加処理の動作を示すフローチャート。
【図１３】実施の形態１における更新領域８にある３つのグループ１００ａ〜１００ｃを参照領域９に移動したイメージ。
【図１４】図６に示す範囲管理テーブル５の状態にあるデータベースに対して範囲の追加を行った直後の範囲管理テーブル５の例。
【図１５】実施の形態１における範囲３０ｂを削除した場合の概念図。
【図１６】実施の形態１のデータ管理装置１における範囲の削除処理の動作を示すフローチャート。
【図１７】図６に示す範囲管理テーブル５の状態にあるデータベースに対して範囲ＩＤ１４が“２”の範囲を削除した直後の範囲管理テーブル５の例。
【図１８】実施の形態１のデータ管理装置１における検索処理の動作を示すフローチャート。
【図１９】実施の形態１における検索問い合わせ文の例。
【図２０】実施の形態１におけるデータ管理装置１がバックアップ処理において生成するアーカイブファイル３００のデータ構造を示した図。
【図２１】実施の形態１におけるデータ管理装置１が差分バックアップまたは増分バックアップで使用するバックアップ開始位置を管理するためのテーブルを示す図。
【図２２】実施の形態１のデータ管理装置１におけるバックアップ処理の動作を示すフローチャート。
【図２３】ステップＳ５０１についてバックアップの種類に分けて動作の詳細を説明したフローチャート。
【図２４】実施の形態１のデータ管理装置１におけるリストア処理の動作を示すフローチャート。
【図２５】ステップＳ７１３における範囲管理テーブル５の更新の動作を示したフローチャート。
【図２６】実施の形態２におけるグループのマージ処理を示す概念図。
【図２７】実施の形態２による範囲の追加処理における動作を示すフローチャート。
【符号の説明】
【００９３】
１  データ管理装置、２  端末装置、３  データ処理部、４  範囲管理制御部、５  範囲管理テーブル、６  データアクセス制御部、７  データ格納領域部、８  更新領域、９  参照領域、１０  生成日付、１１  テーブル最終書込み時刻、１２  範囲数、１３  範囲のキー数、１４  範囲ＩＤ、１５  開始グループ番号、１６  グループ数、１７  確定状態、１８  ロード状態、１９  確定時刻、２０  最終書込み時刻、２１  最小行番号、２２  最大行番号、２３  最小タイムスタンプ、２４  最大タイムスタンプ、３０  データベース、３０ａ，３０ｂ，３０ｃ，３０ｄ  範囲、１００  グループ、１０１  行、１０２ａ  行番号、１０２ｂ  タイムスタンプ、１０２ｃ  カラー、２００  検索問い合わせ文、３００  アーカイブファイル、３０１  アーカイブヘッダ情報、３０２  データベース定義情報、３０３  範囲管理テーブル情報、３０４  グループデータ情報、３０５  開始グループ番号、３０６  グループ数、３０７  更新領域内グループ数、３０８  個別グループ情報、３０９  オフセット、３１０  サイズ、３１１  フラグ、３１２  グループ、４００  バックアップ開始位置テーブル、４０１  差分バックアップ開始グループ番号、４０２  増分バックアップ開始グループ番号、９００  データ管理システム、９０１  表示装置、９０２  Ｋ／Ｂ、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９１０  システムユニット、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、９３１  電話器、９３２  ＦＡＸ機、９４０  インターネット、９４１  ウェブサーバ、９４２  ＬＡＮ、９５１  バッファメモリ、１０００  グループ。
【図１】
0004813155.tif 000002
【図２】
0004813155.tif 000003
【図３】
0004813155.tif 000004
【図４】
0004813155.tif 000005
【図５】
0004813155.tif 000006
【図６】
0004813155.tif 000007
【図７】
0004813155.tif 000008
【図８】
0004813155.tif 000009
【図９】
0004813155.tif 000010
【図１０】
0004813155.tif 000011
【図１１】
0004813155.tif 000012
【図１２】
0004813155.tif 000013
【図１３】
0004813155.tif 000014
【図１４】
0004813155.tif 000015
【図１５】
0004813155.tif 000016
【図１６】
0004813155.tif 000017
【図１７】
0004813155.tif 000018
【図１８】
0004813155.tif 000019
【図１９】
0004813155.tif 000020
【図２０】
0004813155.tif 000021
【図２１】
0004813155.tif 000022
【図２２】
0004813155.tif 000023
【図２３】
0004813155.tif 000024
【図２４】
0004813155.tif 000025
【図２５】
0004813155.tif 000026
【図２６】
0004813155.tif 000027
【図２７】
0004813155.tif 000028