(57)【要約】      （修正有）【課題】長い時間を要する詰め処理が不要であり、しかも検索処理が迅速であるデータベースシステムを提供する。【解決手段】記憶制御手段２０５は、第一記憶領域２０１の記憶しようとする場所にデータが記憶されていなければ、当該記憶すべきデータを当該場所に記憶し、記録しようとする場所にデータが記録されている場合には、当該場所に記憶されているデータを第二記憶領域２０３に移動した後、当該場所に記憶すべきデータを記憶する。削除制御手段２０７は、データを削除する指令を受け取ると、第一記憶領域２０１または第二記憶領域２０３から当該データを削除する。詰処理手段２０９は、第二記憶領域２０３の順次方式にて追加記憶可能なデータ数が所定値より小さくなると、第二記録領域２０３においてデータが削除された場所を詰めて、追加記憶可能なデータ数を増加させる。【選択図】図２
2010128765.tif 000002
【特許請求の範囲】
【請求項１】
循環方式にて記録可能な第一記憶領域および順次方式にて記録可能な第二記憶領域を有する記録部と、
記憶すべきデータを受け取ると、前記第一記憶領域の記憶しようとする場所にデータが記憶されていなければ、当該記憶すべきデータを当該場所に記憶し、前記第一記憶領域の記録しようとする場所にデータが記録されている場合には、当該場所に記憶されているデータを第二記憶領域に移動した後、当該場所に記憶すべきデータを記憶する記憶制御手段と、
データを削除する指令を受け取ると、第一記憶領域または第二記憶領域から当該データを削除する削除制御手段と、
第二記憶領域の順次方式にて追加記憶可能なデータ数が所定値より小さくなると、第二記録領域においてデータが削除された場所を詰めて、追加記憶可能なデータ数を増加させる詰処理手段と、
を備えたデータベース装置。
【請求項２】
請求項１のデータベース装置において、
検索条件を含む検索指令を受け取ると、前記第一記憶領域および前記第二記憶領域に記憶されているデータを検索する検索処理手段をさらに備えていることを特徴とするデータベース装置。
【請求項３】
請求項２のデータベース装置において、
前記検索処理手段は、以下のa)b)c)に分けて検索処理を行うことを特徴とするデータベース装置：
a)前記第一記憶領域の記憶しようとする場所を指し示す記憶ポインタより後の場所から第一記憶領域の最後の場所までのデータについて検索を行う
b)前記第一記憶領域の最初の場所から、記憶ポインタまでのデータについて検索を行う
c)前記第二記憶領域のデータについて検索を行う。
【請求項４】
請求項１〜３のいずれかのデータベース装置において、
前記第二記憶領域において削除されるデータ数が、所定時間内に所定個数を超える場合には、前記第一記憶領域の記憶容量を大きくする記憶容量制御手段をさらに備えることを特徴とするデータベース装置。
【請求項５】
請求項１〜４のいずれかのデータベース装置において、
前記第一記憶領域から前記第二記憶領域に移動されるデータ数が、所定時間内に所定個数を超える場合または、移動されるデータ数の経時変化に基づいて算出された所定時間内の移動されるデータ数が所定個数を超えた場合には、前記第一記憶領域の記憶容量を大きくする記憶容量制御手段をさらに備えることを特徴とするデータベース装置。
【請求項６】
コンピュータによって以下の機能を実現するためのデータベースプログラムであって、
記憶すべきデータを受け取ると、循環方式にて記憶を行う第一記憶領域の記憶しようとする場所にデータが記憶されていなければ、当該記憶すべきデータを当該場所に記憶し、前記第一記憶領域の記録しようとする場所にデータが記録されている場合には、当該場所に記憶されているデータを順次方式にて記憶を行う第二記憶領域に移動した後、当該場所に記憶すべきデータを記憶する記憶制御手段と、
データを削除する指令を受け取ると、第一記憶領域または第二記憶領域から当該データを削除する削除制御手段と、
第二記憶領域の順次方式にて追加記憶可能なデータ数が所定値より小さくなると、第二記憶領域においてデータが削除された場所を詰めて、追加記憶可能なデータ数を増加させる詰処理手段と、
をコンピュータによって実現するためのデータベースプログラム。
【請求項７】
コンピュータによってデータ管理を行う方法であって、
コンピュータは、記憶すべきデータを受け取ると、循環方式にて記憶を行う第一記憶領域の記憶しようとする場所にデータが記憶されていなければ、当該記憶すべきデータを当該場所に記憶し、前記第一記憶領域の記録しようとする場所にデータが記録されている場合には、当該場所に記憶されているデータを順次方式にて記憶を行う第二記憶領域に移動した後、当該場所に記憶すべきデータを記憶し、
データを削除する指令を受け取ると、第一記憶領域または第二記憶領域から当該データを削除し、
第二記憶領域の順次方式にて追加記憶可能なデータ数が所定値より小さくなると、第二記録領域においてデータが削除された場所を詰めて、追加記憶可能なデータ数を増加させるデータ管理方法。
【発明の詳細な説明】
【背景技術】
【０００１】
刻々と発生するデータをリレーショナルデータベース（ＲＤＢ）にて管理する際に、当該データの量が大きければ、予め設定された記憶領域を超えるおそれがある。たとえば、物流で使用する複数のトラック位置情報や、ＩＣタグによる製造ラインでの多数の物品の監視情報を記憶する場合には、このような問題が生じやすい。
【０００２】
これを解決するには単純に記憶領域を大きくすればよいが、記憶容量が無限に必要となってしまう。そこで、一般に、以下の二つの方法がとられている。
【０００３】
一つ目は、記憶領域に記憶されたデータの内には不要となって削除されたデータがあるので（図１参照）、削除された部分を詰めることにより、空き領域を確保する方法である（詰め処理という）。図１でいうと、データ４を３行目に、データ６を４行目に、データ７を５行目にというように移動させる。これにより、記憶領域の最後に、削除したデータと同じ数のレコードを確保することができる。このような手法は、特許文献１に開示されている。
【０００４】
二つ目は、上記のような詰め処理を行わず、データが削除されたレコード領域に新たなデータを記録して行くというものである。
【０００５】
【特許文献１】特開平１１−１１０２６６。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載されるような一つ目の方法においては、大量のデータを頻繁に書き込み・削除するシステムでは、詰め処理のために長い時間が必要であるため、稼働中に詰め処理を行うことができなかった。このため、２４時間稼働などの連続稼働システムにおいては用いることができないという問題があった。
【０００７】
一方、二つ目の方法は、詰め処理を行わないので上記のような問題は生じない。しかし、データの時間的順序が揃わなくなるため、検索を行った場合の検索結果を時刻順に得たい場合には、別途、ソート処理が必要であった。このため、結果として検索処理が遅くなるという問題があった。
【０００８】
この発明は、上記のような問題点を解決して、長い時間を要する詰め処理が不要であり、しかも検索処理が迅速であるデータベースシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
この発明に係るデータベース装置の独立したいくつかの側面を以下に示す。
【００１０】
(1)この発明に係るデータベース装置は、循環方式にて記録可能な第一記憶領域および順次方式にて記録可能な第二記憶領域を有する記録部と、記憶すべきデータを受け取ると、前記第一記憶領域の記憶しようとする場所にデータが記憶されていなければ、当該記憶すべきデータを当該場所に記憶し、前記第一記憶領域の記録しようとする場所にデータが記録されている場合には、当該場所に記憶されているデータを第二記憶領域に移動した後、当該場所に記憶すべきデータを記憶する記憶制御手段と、データを削除する指令を受け取ると、第一記憶領域または第二記憶領域から当該データを削除する削除制御手段と、第二記憶領域の順次方式にて追加記憶可能なデータ数が所定値より小さくなると、第二記録領域においてデータが削除された場所を詰めて、追加記憶可能なデータ数を増加させる詰処理手段とを備えている。
【００１１】
したがって、第一記憶領域への記憶が一巡すると、データが削除された場所も含めて、第一記憶領域の先頭から順に時間順にデータが記憶され、第一記憶領域の記憶場所を有効に使用できるとともに、循環方式の第一記憶領域におけるデータの時間的順序が維持される。さらに、上記処理において、第一記憶領域に残っていたデータは、第二記憶領域に時間的順序が維持されて移動されることになる。このようにして、第一記憶領域の詰め処理を行わなくとも、第一記憶領域、第二記憶領域に時間的順序が維持されてデータが記憶され、迅速な検索処理を行うことのできるデータベース装置を提供することができる。
【００１２】
(2)この発明に係るデータベース装置は、検索条件を含む検索指令を受け取ると、前記第一記憶領域および前記第二記憶領域に記憶されているデータを検索する検索処理手段をさらに備えていることを特徴としている。
【００１３】
したがって、データはデータベースに記憶された時間順に記憶領域上に並んでいることから、迅速な検索処理を実行することができる。
【００１４】
(3)この発明に係るデータベース装置は、検索処理手段が、以下のa)b)c)に分けて検索処理を行うことを特徴としている：
a)前記第一記憶領域の記憶しようとする場所を指し示す記憶ポインタより後の場所から第一記憶領域の最後の場所までのデータについて検索を行う。b)前記第一記憶領域の最初の場所から、記憶ポインタまでのデータについて検索を行う。c)前記第二記憶領域のデータについて検索を行う。
【００１５】
したがって、各検索領域において時間的順序が維持されているため、時刻順のソートが容易であり、検索を迅速に実行する事ができる。
【００１６】
(4)この発明に係るデータベース装置は、第二記憶領域において削除されるデータ数が、所定時間内に所定個数を超える場合には、前記第一記憶領域の記憶容量を大きくする記憶容量制御手段をさらに備えることを特徴としている。
【００１７】
したがって、第二記憶領域でのデータ削除を少なくし、第二記憶領域での処理が頻繁にならないように、第一記憶領域の記憶容量を自動的に制御することができる。
【００１８】
(5)この発明に係るデータベース装置は、第一記憶領域から第二記憶領域に移動されるデータ数が、所定時間内に所定個数を超える場合または、移動されるデータ数の経時変化に基づいて算出された所定時間内の移動されるデータ数が所定個数を超えた場合には、前記第一記憶領域の記憶容量を大きくする記憶容量制御手段をさらに備えることを特徴としている。
【００１９】
したがって、第一記憶領域から第二記憶領域への移動データ数が大きくなってデータ移動の処理負荷が大きくなりすぎないように、第一記憶領域の記憶容量を自動的に制御することができる。
【００２０】
［請求項と実施形態の対応関係］
この発明において、「循環方式にて記録可能な第一記憶領域」は、データベース制御装置３０５の主テーブル（リングテーブル）５０７５が該当する。「順次方式にて記録可能な第二記憶領域」は、データベース制御装置３０５の副テーブル（リニアテーブル）５０７７が該当する。
【００２１】
「記憶制御手段」は、図７のステップＳ７０１〜Ｓ７０３の処理機能が該当する。「削除制御手段」は、図８ａまたは図８ｂに示した処理機能が該当する。「詰処理手段」は、「１．５  データベースプログラムの処理」の(2.6)に示した処理機能が該当する。「検索処理手段」は、図９ａおよび図９ｂに示した処理機能が該当する。
【００２２】
「a)前記第一記憶領域の記憶しようとする場所を指し示す記憶ポインタより後の場所から第一記憶領域の最後の場所までのデータについて検索を行う」ことは、図１７の領域Ｂを検索することが該当する。「b)前記第一記憶領域の最初の場所から、記憶ポインタまでのデータについて検索を行う」ことは、図１７の領域Ａを検索することが該当する。「c)前記第二記憶領域のデータについて検索を行う」ことは、図１７の領域Ｃを検索することが該当する。
【００２３】
「第二記憶領域において削除されるデータ数が、所定時間内に所定個数を超える場合」とは、図１８のステップＳ１８１１に該当する場合または、第四の実施形態の(6)に示すように出庫時に削除されるデータ数が所定時間内に所定個数を超える場合が該当する。「第一記憶領域の記憶容量を大きくする記憶容量制御手段」は、同ステップＳ１８１３の処理機能が該当する。
【００２４】
「第一記憶領域から第二記憶領域に移動されるデータ数が、所定時間内に所定個数を超える場合または、移動されるデータ数の経時変化に基づいて算出された所定時間内の移動されるデータ数が所定個数を超えた場合」とは、図１９のステップＳ１９０３に該当する場合が該当する。「第一記憶領域の記憶容量を大きくする記憶容量制御手段」は、同ステップＳ１９０５の処理機能が該当する。
【００２５】
この発明において、「…手段」とは、プログラムによって実現されるＣＰＵの機能を含む概念である。ここで、「プログラム」とは、ＣＰＵにより直接実行可能なプログラムだけでなく、ソース形式のプログラム、圧縮処理がされたプログラム、暗号化されたプログラム等を含む概念である。
【発明を実施するための最良の形態】
【００２６】
１．  第一の実施形態
１．１  全体構成
図２に、この発明に係るデータベース装置の一実施形態による全体構成図を示す。図２において、データベース装置１は、第一記憶領域２０１および第二記憶領域２０３を有する記録部２００、記憶制御手段２０５、削除制御手段２０７および詰処理手段２０９を備える。
【００２７】
第一記憶領域２０１は、最終レコードまでデータを記録し終えると再び先頭レコードに戻ってデータを記録する循環方式を採用したデータベースであり、図１５に示す主テーブル（リングテーブル）がこれに対応する。
【００２８】
第二記憶領域２０３は、先頭レコードから最終レコードにかけて順に検索して削除されていない最終レコードの次にデータを記録する順次方式を採用したデータベースであり、図１５に示す副テーブル（リニアテーブル）がこれに対応する。
【００２９】
記憶制御手段２０５は、記憶すべきデータを受け取ると、第一記憶領域２０１において記憶すべき場所をポインタによって特定し、この場所に何らかのデータが記憶されていなければ、記憶すべきデータを記憶する。
【００３０】
一方、ポインタによって特定した記録すべき場所にデータがすでに記録されていれば、この場所に記憶されているデータを第二記憶領域２０３に移動させる。その後、第一記憶領域２０１において記憶すべき場所には、何らデータが記憶されていないため、記憶すべきデータを記憶することができる。例えば、図１５の主テーブル（リングテーブル）において、ポインタ位置のレコード１５３に記録されたデータを副テーブル（リニアテーブル）に移動させる。これにより、レコード１５３は図１６の主テーブルに示すように空きレコードになる。このため、レコード１５３に新たなデータを記録することができる。
【００３１】
この場合、第一記憶領域２０１である主テーブルは循環方式で記録されるため、データは必ずレコード順に記録されていくことになる。したがって、第一記憶領域２０１において詰め処理を行う必要がない。
【００３２】
このようにしてデータ記録処理を繰り返すと、ポインタより上側の領域に記録されたレコード群が最も最近に記録されたレコードの集まりであり、ポインタ以下の領域に記録されたレコード群がその前に記録されたレコードの集まりとなる。また、第二記憶領域２０３である副テーブルにおいても、データは先頭レコードから順に記録される。
【００３３】
よって、図１７に示すように、第一記憶領域２０１である主テーブルでは、ポインタＰ１を境にして領域Ａおよび領域Ｂに分かれてデータが記録され、領域Ａおよび領域Ｂの内部では各レコードがデータ発生順に記録される。また、第二記憶領域２０３である副テーブルでは、主テーブルから移動されたデータが記録され、主テーブルのデータはデータ発生順に記録されていたことから、移動後の副テーブル（領域Ｃ）においてもデータ発生順に記録されることになる。つまり、領域Ｃでは、領域Ｂよりも古いデータがデータ発生順に記録される。
【００３４】
これにより、第一記憶領域２０１および第二記憶領域２０３においては、時間的順序が維持されてデータが記憶され、検索後にソートする必要がなくなり検索処理の高速化を図ることができる。
【００３５】
削除制御手段２０７は、データを削除する指令を受け取ると、第一記憶領域２０１または第二記憶領域２０３から当該データを削除する処理を実行する。例えば、図１５の主テーブルまたは副テーブルにおいて、データ保存期限を過ぎたデータをバッチ処理で削除する。
【００３６】
詰処理手段２０９は、第二記憶領域２０３の順次方式にて追加記憶可能なデータ数が所定値より小さくなると、第二記録領域２０３においてデータが削除された場所を詰めて、追加記憶可能なデータ数を増加させる処理を実行する。この場合、第一記憶領域２０１は詰処理の対象とならないため、詰処理が稼働中のシステムに与える影響を低減することができる。
【００３７】
１．２  システム構成
本実施形態では、工場等の工程間資材置場において入出庫される部品を管理するために、データベース装置１を用いたシステムの例を図３を用いて説明する。なお、入出庫される部品には、各部品を識別するためのＲＦＩＤタグが付されているものとする。
【００３８】
工程間資材置場３０の入庫ゲート側には、入庫する部品のＲＦＩＤタグ情報を読み取るための入庫用読み取り器３０１が設けられ、同じく出庫ゲート側には、出庫する部品のＲＦＩＤタグ情報を読み取るための出庫用読み取り器３０２が設けられている。入庫用読み取り器３０１および出庫用読み取り器３０２は、サーバ装置３０３に接続されているため、サーバ装置３０３は、工程間資材置場において入庫または出庫される部品に関するＲＦＩＤタグ情報を取得可能である。
【００３９】
また、サーバ装置３０３は、ネットワーク等を介してデータベース３０５１を備えるデータベース制御装置３０５に接続されている。データベース３０５１は、サーバ装置３０３が取得したＲＦＩＤタグ情報を記録するためのものである。
【００４０】
さらに、サーバ装置３０３は、複数のクライアント装置３０７に接続されている。各クライアント装置３０７は、サーバ装置３０３を介してデータベース３０５１に記録されているＲＦＩＤタグ情報を検索するためのものである。
【００４１】
図３に示した工程間資材置場３０に部品が入庫された場合、入庫用読み取り器３０１は、部品に付されたＲＦＩＤタグ情報を読み取り、サーバ装置３０３に送信する。これを受けてサーバ装置３０３は、入庫部品のＲＦＩＤタグ情報をデータベース制御装置３０５（図１のデータベース装置１に相当する。）に送信する。これを受けてデータベース制御装置３０５は、入庫部品のＲＦＩＤタグ情報をデータベース３０５１に記録する。
【００４２】
また、図３に示した工程間資材置場３０から部品が出庫された場合、出庫用読み取り器３０２は、部品に付されたＲＦＩＤタグ情報を読み取り、サーバ装置３０３に送信する。これを受けてサーバ装置３０３は、出庫部品のＲＦＩＤタグ情報をデータベース制御装置３０５に送信する。これを受けてデータベース制御装置３０５は、出庫部品のＲＦＩＤタグ情報をデータベース３０５１に記録する。
【００４３】
１．３  サーバ装置のハードウェア構成
図３に示したサーバ装置３０３のハードウェア構成の一例を図４に示す。この実施形態では、サーバ装置３０３はコンピュータ装置であり、ディスプレイ４０１、ＣＰＵ４０３、メモリ４０５、ハードディスク４０７、キーボード／マウス４０９、ＣＤ−ＲＯＭドライブ４１１を備え、インタフェースを介して入庫用読み取り器３０１および出庫用読み取り器３０２に接続されている。
【００４４】
ハードディスク４０７には、ＯＳ（オペレーティングシステム）４０７１の他、本発明にかかるデータ処理を行うためのデータ処理プログラム４０７３が記録されている。このプログラムは、ＣＤ−ＲＯＭドライブ４１１等を介してＣＤ−ＲＯＭ４１１１に記録されたデータを読み出してインストールされたものである。なお、上記インストールは、通信回路等を用いてインターネット等からダウンロードしたデータを使用して行うようにしてもよい。
【００４５】
入庫用読み取り器３０１および出庫用読み取り器３０２は、上述したように、工程間資材置場３０に入出庫する部品に付されているＲＦＩＤタグを読み取るためのものである。
【００４６】
１．４  データベース制御装置のハードウェアおよびデータテーブル構成
図３に示したデータベース制御装置３０５のハードウェア構成の一例を図５に示す。この実施形態では、データベース制御装置３０５はコンピュータ装置であり、ディスプレイ５０１、ＣＰＵ５０３、メモリ５０５、ハードディスク５０７、キーボード／マウス５０９およびＣＤ−ＲＯＭドライブ５１１を備えている。
【００４７】
ハードディスク４０７には、ＯＳ（オペレーティングシステム）５０７１の他、本発明にかかるデータベース制御処理を行うためのデータベースプログラム５０７３、主テーブル５０７５および副テーブル５０７７が記録されている。このプログラムは、ＣＤ−ＲＯＭドライブ５１１等を介してＣＤ−ＲＯＭ５１１１に記録されたデータを読み出してインストールされたものである。なお、上記インストールは、通信回路等を用いてインターネット等からダウンロードしたデータを使用して行うようにしてもよい。
【００４８】
図１１に、主テーブル５０７５および副テーブル５０７７の例を示す。図１１の主テーブル（リングテーブル）に示す主テーブル５０７５には、ＲＦＩＤタグを識別するためのＩＤ１１０１、工程間資材置場に部品が入庫された時刻を表す持込時間１１０３、工程間資材置場から部品が出庫された時刻を表す搬出時間１１０５および、ＩＤ１１０１にかかるデータレコードを主テーブル５０７５に保存しておくべき期限を表すデータ保存期限１１０７が記録される。
【００４９】
ここで、主テーブル５０７５は、先頭レコード１１０から末尾レコード１１ｎにかけて順次記録してゆき、末尾レコード１１ｎに記録した後は、再度先頭レコード１１０に戻って記録する循環方式で記録するものである。
【００５０】
また、図１１のＢに示す副テーブル５０７７は、上記主テーブル５０７５と同様の構造である。
【００５１】
１．５  データベースプログラムの処理
(1)  処理の概要
工程間資材置場３０において入出庫される部品のＲＦＩＤタグ情報を記録する処理について、図６を用いて説明する。この処理において、サーバ装置３０３のＣＰＵ４０３はデータ処理プログラム４０７３を実行し、データベース制御装置３０５のＣＰＵ５０３はデータベースプログラムを実行する。
【００５２】
サーバ装置３０３のＣＰＵ４０３は、入庫用読み取り器３０１から入庫部品のＲＦＩＤタグ情報を取得すると、ＲＦＩＤタグ情報の状態データを保存するための処理を行う（ステップＳ６０１）。例えば、ＲＦＩＤタグ情報に含まれるＩＤおよび当該ＩＤを入庫データとして保存させる命令をデータベース制御装置３０５に対して送信する。
【００５３】
これを受けてデータベース制御装置３０５のＣＰＵ５０３は、状態データに応じた消去期限をＩＤに付加する（ステップＳ６２１）。例えば、図１１の主テーブルにおけるレコード１１０に示すように入庫データのＩＤ「12916925」に対してデータ保存期限「2008.10.24 11:31」を付加する。
【００５４】
次に、ＣＰＵ５０３は、ポインタが示す初段のリングテーブルを対象にしてデータ保存処理を行う（ステップＳ６２３）。例えば、図１１の主テーブルにおけるレコード１１０を主テーブルの先頭レコードに記録する。この場合、システム日付から取得した現在時刻を持込時間「2008.9.24 11:31」として、レコード１１０に記録する。
【００５５】
(2)  処理の詳細
図７のフローチャートを使用して、上記ステップＳ６２３の処理の詳細について説明する。
【００５６】
(2.1)  記録処理
ＣＰＵ５０３は、リングテーブルである主テーブルのポインタが示す先のレコードに何らかの情報（データレコード）が記録されているか否かを判断する（ステップＳ７０１）。
【００５７】
そして、ポインタが示す先のレコードに情報が記録されていなければ、ＣＰＵ５０３は、このポインタ位置のレコードに情報（データレコード）を記録する（ステップＳ７０３）。例えば、図１１の主テーブルにおいてポインタが示す先のレコード１１３にはいずれの情報も記録されていないため、レコード１１３に新たな情報が記録される。
【００５８】
図１２の主テーブルに示すレコード１１３は、この場合に新たに記録されるレコードの例である。レコード１１３には、ＩＤ１１０１「28756113」、持込時間１１０３「2008.9.25 09:53」、データ保存期限１１０７「2008.12.25 09:53」が記録される。ここで、入庫データのデータ保存期限は、図１０に示すようなＩＤに対応して設定された保存期限取得テーブルを用いて設定する。このテーブルには、ＩＤ１００１、部品名１００３、保存期限１００５が対応付けて記録されているため、ＩＤに対応する保存期限が取得可能である。ＩＤ１１０１「28756113」に対応する保存期限はレコード１００により「３月」であることから、持込時間１１０３「2008.9.24 15:59」に「３月」を加算して、データ保存期限１１０７「2008.12.24 15:59」が算出される。なお、出庫データのデータ保存期限は、搬出時間１１０５から「１月」としている。
【００５９】
レコードに情報を記録すると、ＣＰＵ５０３は、ポインタ位置を１つ進める（ステップＳ７０５）。例えば、図１２の主テーブルにおいて、レコード１１３の下位のレコードの位置にポインタを１つ進める。これにより、次のデータ保存命令を受けた場合に、ポインタ位置にデータレコードを記録することができる。
【００６０】
(2.2)  削除処理
レコードの記録が進むと、図１２の主テーブル（リングテーブル）に示すようになる。データベースプログラム５０７３は、主テーブル（リングテーブル）および副テーブル（リニアテーブル）においてデータ保存期限が経過したデータレコードを削除するため、図８ａおよび図８ｂに示すデータ消却処理を定期的に実行する。このデータ消却処理は、例えば、３０分に１回のバッチ処理として実行される。
【００６１】
図８ａにおいて、ＣＰＵ５０３は、主テーブル（リングテーブル）にある最初のデータレコードを処理対象として取得する（ステップＳ８０１）。例えば、図１１のレコード１１０を取得する。
【００６２】
ＣＰＵ５０３は、取得した対象レコードのデータの有効期限が現在時刻を過ぎているか否かを判断する（ステップＳ８０３）。例えば、図１１のレコード１１０のデータ保存期限は、「2008.10.24 11:31」は、現在時刻「2008.10.1 12:00」より小さいため、レコード１１０のデータ保存期限は未だ経過していないと判断する。
【００６３】
ＣＰＵ５０３は、主テーブル（リングテーブル）のすべてのデータレコードについて上記ステップＳ８０３の判断処理を繰り返す（ステップＳ８０５、Ｓ８０６）。すなわち、ステップＳ８０１の対象レコードが主テーブルの最終レコードでなければ、対象レコードの次のレコードを新たな対象レコードとして有効期限が現在時刻を過ぎているか否かを判断する。
【００６４】
ＣＰＵ５０３は、取得した対象レコードのデータの有効期限が現在時刻を過ぎていると判断すると（ステップＳ８０７、ＹＥＳ）、対象データレコードを主テーブルから削除する。例えば、図１１のレコード１１１のデータ保存期限「2008.9.31 12:01」は、現在時刻「2008.10.1 12:00」より小さいため、レコード１１１のデータ保存期限は経過していると判断する。レコード１１１が削除されると、図１２の主テーブルのレコード１１１のようになる。
【００６５】
なお、後述するように、副テーブル（リニアテーブル）には、データ保存期限を有する主テーブルのデータレコードがそのまま移動して記録されるため、図８ｂに示すように、ＣＰＵ５０３は、副テーブル（リニアテーブル）についても、図８ａと同様のデータ消却処理を実行する。
【００６６】
(2.3)  ポインタの循環処理
レコードの記録が進むと、図１２の主テーブル（リングテーブル）に示すようになるが、主テーブル（リングテーブル）は、循環方式でデータを記録するために、ポインタ位置がデータレコードの最後を超えた場合には、先頭のデータレコードを示すように変更する必要がある。この場合の処理を以下説明する。
【００６７】
図７において、ポインタを１つ進めると（ステップＳ７０５）、ＣＰＵ５０３は、現在のポインタ位置がリングテーブルより長いか否かを判断する（ステップＳ７０７）。すなわち、ポインタ位置がレコード数で示されているとすると、このレコード数がリングテーブル全体で記録可能な最大レコード数より大きいか否かを判断する。例えば、図１３に示すように、ポインタ位置を示す数値がレコード１１ｎのポインタ位置を示す数値を超えている場合には、ポインタ位置が最大レコード数より大きいことになる。
【００６８】
ポインタ位置を示す数値が主テーブル（リングテーブル）の最大レコード数よりも大きいと判断すると（ステップＳ７０７）、ＣＰＵ５０３は、ポインタがリングテーブルの先頭を示すように変更する処理を行う（ステップＳ７０８）。例えば、図１３においてレコード１１ｎのポインタ位置を示す数値よりもポインタ位置を示す数値が大きくなると、先頭レコード１１０にポインタを移動させる。
【００６９】
ポインタが先頭レコード１１０に移動した後においては、最新のレコードが１１０の位置に記録され、図１４に示すようになる。
【００７０】
(2.4)  データ移動処理
上述したステップＳ７０１において、ＣＰＵ５０３は、ポインタが示す先のレコードに情報が記録されていると判断すると、当該情報にかかるデータレコードの移動・消去処理を行う（ステップＳ７０２）。例えば、図１５の主テーブルにおいてポインタが示す先のレコード１５３には、ＩＤ「33110003」にかかるデータレコードの情報が記録されているため、このレコード１５３を副テーブル（リニアテーブル）のレコード１５０１に移動させるとともに、主テーブルからレコード１５３の情報を消去する処理が実行される。
【００７１】
この場合、副テーブルにおいては、先頭から順にデータレコードが記録されていく。つまり、先頭レコード１５０１から最終レコード１５０ｎにかけて記録される。
【００７２】
なお、ステップＳ７０２を実行後の主テーブルおよび副テーブルは、図１６に示すようになる。この場合、データ移動・消去後のポインタは、レコード１５３の位置にあるので、ステップＳ７０３においては、レコード１５３の位置に次のデータレコードが書き込まれることになる。
【００７３】
(2.5)  記録後の状態
図１７は、上記処理によりデータレコードが主テーブル（リングテーブル）および副テーブル（リニアテーブル）にある程度記録された場合の状態を模式的に表したものである。
【００７４】
この状態においては、主テーブルはポインタＰ１の位置を境界にして領域Ａおよび領域Ｂに二分し、副テーブルの領域を領域Ｃとする。この場合、領域Ａ、Ｂ、Ｃの順で時間的に新しいデータが蓄積されていることになる。また、各領域内では、持込時間または搬出時間の時間順にデータが並んでいることになる。
【００７５】
したがって、領域Ａ、Ｂ、Ｃについてデータレコードの検索処理を行った場合、検索結果を時間順に並び替える必要がない。このため、検索処理を迅速に行うことができる。持込時間または搬出時間を検索キーにする場合にも、検索処理を迅速に行うことができる。
【００７６】
(2.6)  詰め処理
上述したように、副テーブルにおいても図８ｂに示したデータ消去処理が実行され、データ保存期限が過ぎたデータレコードは削除される。この場合、副テーブルのデータレコードの一部（図１７の１７０３、１７０６）には、情報が記録されていないため、データを順に詰める処理（詰め処理）が必要となる。この場合、副テーブルに追加記憶可能なデータ数が所定値より小さくなった場合をトリガーとして、詰め処理を開始する。
【００７７】
例えば、レコード１７０４をレコード１７０３の位置に移動させ、レコード１７０５をレコード１７０４の位置に移動させることにより、空き領域を詰める処理を行う。
【００７８】
なお、副テーブル（リニアテーブル）における歯抜け状態（レコード間の記録が不連続なこと）の程度を検知して、自動的に詰め処理を実行するようにしてもよい。
【００７９】
上述したように、詰め処理のために長い時間が必要であるため、稼働中に詰め処理を行うことは容易ではないが、副テーブルへのアクセス頻度は主テーブルに比べて少ないことから、この場合連続稼働システムに対して大きな影響を与えることなく副テーブル（リニアテーブル）の詰め処理を行うことができるというメリットがある。
【００８０】
(2.7)  検索処理
図９ａおよび図９ｂを用いて、主テーブルおよび副テーブルに記録されたデータレコードを検索する場合の例を説明する。
【００８１】
図９ａのＳ９００では、サーバ装置３０３からデータベース制御装置３０５に対して、検索条件を通知する。例えば、部品名「ハンドルＢ」について検索する場合には、図１０に示したテーブルにしたがってハンドルＢに対応するＩＤ「10000001」〜「2000000」が検索条件として通知される。
【００８２】
データベース制御装置３０５のＣＰＵは、まず、副テーブルの先頭レコードから最終レコードを順に検索し、検索条件に合致するデータレコードをテンポラリ領域９０に一時保存する（ステップＳ９０１〜Ｓ９０９）。その後、主テーブルのポインタ位置から最終レコード位置までを順次検索し、同様に合致するデータレコードをテンポラリ領域９０に一時保存する（ステップＳ９１１〜９１９）。さらに、主テーブルの先頭レコードからポインタ直前のレコードまでについても同様に検索する（ステップＳ９２１〜９３０）。
【００８３】
図１７を用いてこの検索順序を説明すると、領域Ｃ、領域Ｂ、領域Ａの順で検索することになる。このような順序で検索を行うことにより、保存時間（持込時間または搬出時間）が過去のものから順にデータを検索することができる。これにより、データの検索効率を向上させることができる。
【００８４】
ＣＰＵ５０３は、すべての領域について検索処理を終えると、テンポラリ領域９０に記録している保存データを検索結果としてサーバ装置３０３に送信する（ステップＳ９３１）。例えば、ハンドルＢに対応するＩＤ「10000001」〜「2000000」のデータレコードが、検索結果として送信される。
【００８５】
２．  第二の実施形態
上記実施形態において、主テーブル（リングテーブル）から副テーブル（リニアテーブル）へのデータ移動が頻繁になり、リニアテーブルにおける詰め処理に大きな負荷がかかるようになると、効率的なデータベース管理を行うことができなくなる。そこで、本実施形態においては、データレコードの削除状況または移動状況に応じて、主テーブル（リングテーブル）のサイズ（最大レコード数）を自動的に拡張する例について説明する。
【００８６】
最大レコード数の拡張により、第一記憶領域（リングテーブル）から第二記憶領域（リニアテーブル）へのレコードの移動が少なくなり、したがって、それまで第二記憶領域（リニアテーブル）で削除されていたデータが第一記憶領域（リングテーブル）で削除されるようになるため、第二記憶領域（リニアテーブル）への書き込みも削除も頻度が減少する。その結果として、全体の処理数が減少することでシステム全体の処理速度が向上する。
【００８７】
２．１  削除状況による拡張
データ消却処理において副テーブル（リニアテーブル）からレコードが削除される回数に所定の制限を設けておき、その制限を超える場合にリングテーブルのサイズ（最大レコード数）を自動的に拡張する例について以下説明する。
【００８８】
図１８に示すデータ消却処理は、図８ａおよび図８ｂと同様に、例えば３０分に１回のように、定期的に実行される。図１８において、ＣＰＵ５０３は、削除データ数を計数するための削除データ数カウンタをゼロリセットする（ステップＳ１８００）。
【００８９】
ＣＰＵ５０３は、副テーブル（リニアテーブル）にある最初のデータレコードを処理対象として取得する（ステップＳ１８０１）。ＣＰＵ５０３は、取得した対象レコードのデータの有効期限が現在時刻を過ぎているか否かを判断する（ステップＳ１８０３）。ＣＰＵ５０３は、副テーブル（リニアテーブル）のすべてのデータレコードについて上記ステップＳ１８０３の判断処理を繰り返す（ステップＳ１８０５、Ｓ１８０６）。すなわち、ステップＳ１８０１の対象レコードが主テーブルの最終レコードでなければ、対象レコードの次のレコードを新たな対象レコードとして有効期限が現在時刻を過ぎているか否かを判断する。
【００９０】
ＣＰＵ５０３は、取得した対象レコードのデータの有効期限が現在時刻を過ぎていると判断すると（ステップＳ１８０３、ＹＥＳ）、対象データレコードを副テーブル（リニアテーブル）から削除する（ステップＳ１８０８）。副テーブルからデータレコードを削除すると、ＣＰＵ５０３は、削除データ数カウンタに１を加算する（ステップＳ１８０９）。
【００９１】
このようにして、ＣＰＵ５０３は、すべてのデータについて上記処理を繰り返し、削除データ数を計数する。すべてのデータレコードについてデータ消却処理をし終えると、計数した削除データ数ｎが所定値Ｖ１より大きいか否かを判定する（ステップＳ１８１１）。
【００９２】
削除データ数ｎがＶ１より大きい場合、リングテーブルの最大レコード数Ｓを以下の式に基づいて拡張する（ステップＳ１８１３）。
【００９３】
Ｓ  ＝  Ｓ  ×  ｎ／Ｖ１
このように、データ消却処理において削除される副テーブル（リニアテーブル）のデータの個数が所定値以上である場合に、主テーブル（リングテーブル）を拡張することにより、主テーブル（リニアテーブル）から副テーブル（リニアテーブル）へ移動するデータレコードの量を低減させることができる。これにより、図７のステップＳ７０２において実行されるデータ移動・削除処理を減らすことができ、処理効率を向上させることができる。なお、結果として、主テーブルに対して実行されるデータ消去処理において削除するデータレコードが増加する。
【００９４】
なお、上記において移動状況監視処理は３０分に１回実行されるものとしたが、これに限られず、実行間隔をより長くまたは短く設定してもよい。例えば、ｋを２以上の自然数として、Ｎ（ｋ−１）／ｋ時間経過する間に、リニアテーブルからＶ（ｋ−１）／ｋ個を超えるｎ個のレコードが削除された場合に、リングテーブルの最大レコード数を以下の式で求めるようにしてもよい。
【００９５】
Ｓ  ＝  Ｓ  ×  ｎ／Ｖ  ×  ｋ／（ｋ−１）
これにより、Ｎ時間経過した時点における削除データの個数が所定値Ｖに達する場合を制限としている場合において、事前に制限を越えるか否かを予測して最大レコード数を変更することができる。
【００９６】
２．２  移動状況による拡張
図７のステップＳ７０２において実行されるデータ移動・削除処理の回数に所定の制限を設けておき、その制限を超える場合またはその制限を超えようとしている場合にリングテーブルのサイズ（最大レコード数）を自動的に拡張する例について以下説明する。
【００９７】
図７ａは、図７のステップＳ７０２の処理後に、移動データ数カウンタに１を加算する処理（ステップＳ７０４）を追加したものである。また、図１９に示す移動状況監視処理は、図８ａおよび図８ｂと同様に、例えば３０分に１回のように定期的に実行される処理である。
【００９８】
図１９において、ＣＰＵ５０３は、移動データ数カウンタを読み込む（ステップＳ１９０１）。ここで、移動データ数カウンタは、上述した図７ａにおいて、主テーブルから副テーブルへのデータの移動・消去が発生するたびにカウントアップされるものである。
【００９９】
ＣＰＵ５０３は、移動データ数カウンタの値ｍが所定値Ｖ２よりも大きいか否かを判断する（ステップＳ１９０３）。
【０１００】
移動データ数ｍがＶ２より大きい場合、リングテーブルの最大レコード数Ｓを以下の式に基づいて拡張する（ステップＳ１９０５）。
【０１０１】
Ｓ  ＝  Ｓ  ×  ｍ／Ｖ２
このように、データ移動・削除処理において移動・削除される主テーブル（リニアテーブル）のデータ数が所定値以上である場合に、主テーブル（リングテーブル）を拡張することにより、主テーブル（リニアテーブル）から副テーブル（リニアテーブル）へ移動するデータレコードの量を低減させることができる。これにより、図７のステップＳ７０２において実行されるデータ移動・削除処理の処理負荷を減らすことができ、処理効率を向上させることができる。
【０１０２】
３．  第三の実施形態
上記実施形態では、工場等の工程間資材置場において入出庫される部品を管理する例を説明したが、各データレコードの削除時期が異なることにより、データとデータの間に削除データが発生しやすくなるようなデータベースであれば、本発明を適用して所望の効果を得ることができる。
【０１０３】
(1)  物流の中継地点での物品の入庫・出庫管理
トラック輸送などで集荷・出荷等が行われる中継点では、荷物の種類や発送先等によって入庫・出庫までの期間がそれぞれ異なる。このため、それぞれのデータレコードの消去時期が異なり、データベース・テーブルではデータレコード間に隙間が生じることになる。
【０１０４】
したがって、中継点の集荷・出荷システムに本発明のデータベース装置を適用することにより、データベースを効率的に使用することができる。
【０１０５】
(2)  複数の業者が関わるシステム
荷物の入庫・出庫を行う複数の業者ごとに、上述した主テーブルおよび副テーブルからなるデータベース装置を用意しておき、各業者における入庫・出庫情報を管理するようにしてもよい。例えば、トラックに載せた荷物が中継地点に入庫した後出庫する場合において、入庫業者と出庫業者が異なる場合がこれに該当する。
【０１０６】
この場合、それぞれの業者において発生するデータレコードを、入庫元業者用のデータベースには入庫元業者の設定した有効期限でデータを記録しておき、出庫先業者用のデータベースには出庫先業者の設定した有効期限でデータを記録することができる。これにより、１つの荷物のデータについて、それぞれ業者に応じた取扱をすることができる。
【０１０７】
なお、主テーブルおよび副テーブルのデータレコードに業者ＩＤを記録するように構成し、上記システムを１つのデータベースで管理するようにしてもよい。これにより、業者ごとかつ荷物ごとにデータ管理を行うことができる。
【０１０８】
(3)  道具の保管と使用の管理
工具棚などで頻繁に工具を出し入れして使用する状況で、工具が高価である場合や、セキュリティ上管理が重要である場合等には、各工具についての入出庫管理が必要となる。例えば、大工場の離れた場所にある複数の工程で、少数の工具を共有している場合の管理、病院等における治療器具の管理、または、電気通信関連で用いる特殊工具の持ち出し管理等がこれに該当する。
【０１０９】
これらの工具類の管理においては、持ち出し時および返却時にデータレコードを記録し、返却から所定時間が経過した場合にデータを消去する処理を行う。
【０１１０】
４．  第四の実施形態
(1)  上記実施形態においては、主テーブル（リングテーブル）のみを循環方式とし構成したが、副テーブル（リニアテーブル）も循環方式としてもよい。この場合、副テーブルのデータレコードを移動させるために、さらなる副テーブルを設けてもよい。
【０１１１】
(2)  上記実施形態においては、サーバ装置３０３とデータベース制御装置３０５を個々に構成したが（図３）、これらの装置を一体として１つの装置で構成してもよい。
【０１１２】
(3)  上記実施形態においては、読み取り器で読み取ったＲＦＩＤタグ情報をデータベースに記録するように構成したが、ＲＦＩＤタグ情報以外の情報を記録するようにしてもよい。例えば、バーコード読み取りデータや入力データを記録してもよい。
【０１１３】
(4)  上記実施形態においては、リングテーブルを拡張する場合の最大レコード数を式を用いて算出するように構成したが、あらかじめ定めたレコード数のみを拡張するようにしてもよい。
【０１１４】
(5)  上記実施形態においては、リングテーブルを拡張する場合を説明したが、リングテーブルを縮小するようにしてもよい。例えば、図１８のステップＳ１８１１において削除データ数ｎが所定値よりも小さい場合、または、図１９のステップＳ１９０３において移動データ数ｍが所定値よりも小さい場合に、リングテーブルの最大レコード数Ｓを縮小してもよい。これにより、リングテーブルの記憶領域を最適化することができ、データ量に応じたリングテーブルを使用して処理効率を向上させることができる。
【０１１５】
(6)  上記実施形態においては、工程間資材置場から部品が出庫された場合にデータ保存期限を記録しておき、その後のバッチ処理によってデータ保存期限を過ぎたレコードを削除するように構成したが、出庫時にレコードを削除するようにしてもよい。
【０１１６】
例えば、図３において、入庫用読み取り器３０１からの入庫物品情報がデータベースに記録される一方、出庫用読み取り器３０２からの出庫物品情報に相当するレコードがデータベースから削除されるような場合がこれに該当する。この場合、レコードの記録と削除が不規則に行われるが、所定時間内の記録・削除の件数を算出し、この算出結果を統計的な情報として用いることにより、より適切な記憶領域の大きさの設定を自動的に行うことができる。
【０１１７】
(7)  上記実施形態においては、図２に示す機能を実現する為に、ＣＰＵを用い、ソフトウェアによってこれを実現している。しかし、その一部もしくは全てを、ロジック回路等のハードウェアによって実現してもよい。なお、プログラムの一部の処理をさらに、オペレーティングシステム（ＯＳ）にさせるようにしてもよい。
【図面の簡単な説明】
【０１１８】
【図１】従来技術における記憶領域の例である。
【図２】この発明のデータベース装置の機能ブロック図の例である。
【図３】この発明のデータベース装置を含むシステム構成図の例である。
【図４】この発明のサーバ装置におけるハードウェア構成図の例である。
【図５】この発明のデータベース制御装置におけるハードウェア構成図の例である。
【図６】この発明の全体処理におけるフローチャートの例である。
【図７】この発明のデータ保存処理におけるフローチャートの例である。
【図７ａ】この発明のデータ保存処理におけるフローチャートの例である。
【図８ａ】この発明のデータ消却処理におけるフローチャートの例である。
【図８ｂ】この発明のデータ消却処理におけるフローチャートの例である。
【図９ａ】この発明のデータ検索処理におけるフローチャートの例である。
【図９ｂ】この発明のデータ検索処理におけるフローチャートの例である。
【図１０】この発明の保存期限取得テーブルの例である。
【図１１】この発明の主テーブルおよび副テーブルの例である。
【図１２】この発明の主テーブルおよび副テーブルの例である。
【図１３】この発明の主テーブルおよび副テーブルの例である。
【図１４】この発明の主テーブルおよび副テーブルの例である。
【図１５】この発明の主テーブルおよび副テーブルの例である。
【図１６】この発明の主テーブルおよび副テーブルの例である。
【図１７】この発明の主テーブルおよび副テーブルの検索領域についての模式図の例である。
【図１８】この発明のデータ消却処理におけるフローチャートの例である。
【図１９】この発明の稼働状況監視処理におけるフローチャートの例である。
【符号の説明】
【０１１９】
２０１    第一記憶領域
２０３    第二記憶領域
２０５    記憶制御手段
２０７    削除制御手段
２０９    詰め処理手段
【図１】
2010128765.tif 000003
【図２】
2010128765.tif 000004
【図３】
2010128765.tif 000005
【図４】
2010128765.tif 000006
【図５】
2010128765.tif 000007
【図６】
2010128765.tif 000008
【図７】
2010128765.tif 000009
【図７ａ】
2010128765.tif 000010
【図８ａ】
2010128765.tif 000011
【図８ｂ】
2010128765.tif 000012
【図９ａ】
2010128765.tif 000013
【図９ｂ】
2010128765.tif 000014
【図１０】
2010128765.tif 000015
【図１１】
2010128765.tif 000016
【図１２】
2010128765.tif 000017
【図１３】
2010128765.tif 000018
【図１４】
2010128765.tif 000019
【図１５】
2010128765.tif 000020
【図１６】
2010128765.tif 000021
【図１７】
2010128765.tif 000022
【図１８】
2010128765.tif 000023
【図１９】
2010128765.tif 000024