(57)【要約】【課題】大量のレコードを継続的に更新するデータ管理システムにおけるデータアクセスの処理の効率化を目的とする。【解決手段】第１記憶部１０１は、複数のレコード１０３を、各レコード１０３の次回更新予定時刻に応じて複数の領域１０２に分けて記憶する。更新要求処理部１０８は、単位時間ごとに、複数の領域１０２のうち、現在時刻に対応する領域１０２を処理対象領域として選択し、更新要求受付部１０７が入力を受け付けた更新要求を受信バッファ１０６から読み出す。そして、単位時間ごとに、選択した処理対象領域内の各レコード１０３について、受信バッファ１０６から読み出した更新要求に、レコード１０３と同じキーを指定した更新要求がある場合、当該レコード１０３を当該更新要求で指定された属性情報で更新し、更新したレコード１０３を当該更新要求で指定された次回更新時刻に対応する領域１０２内に書き込む。【選択図】図１
2010128812.tif 000002
【特許請求の範囲】
【請求項１】
キーで識別される複数のレコードを、各レコードが更新される予定時刻に応じて複数の領域に分けて記憶する第１記憶部と、
キーと当該キーに対応するレコードの更新内容と当該レコードを次に更新する予定時刻とを指定した更新要求の入力を受け付ける更新要求受付部と、
単位時間ごとに、前記複数の領域のうち、現在時刻に対応する領域を処理対象領域として選択し、選択した処理対象領域内の各レコードについて、前記更新要求受付部が入力を受け付けた更新要求に、レコードと同じキーを指定した更新要求がある場合、当該レコードを当該更新要求で指定された更新内容で更新し、更新したレコードを当該更新要求で指定された予定時刻に対応する領域内に書き込む更新要求処理部とを備えることを特徴とするデータ管理システム。
【請求項２】
前記更新要求処理部は、選択した処理対象領域内の各レコードについて、前記更新要求受付部が入力を受け付けた更新要求に、レコードと同じキーを指定した更新要求がない場合、当該レコードを現在時刻より所定の単位時間後の予定時刻に対応する領域内に書き込むことを特徴とする請求項１に記載のデータ管理システム。
【請求項３】
前記所定の単位時間は、１単位時間であることを特徴とする請求項２に記載のデータ管理システム。
【請求項４】
前記データ管理システムは、さらに、
キーごとに、キーに対応するレコードが記憶された領域を識別する領域識別子を記録した索引情報を記憶する第２記憶部を備え、
前記更新要求処理部は、レコードをいずれかの領域内に書き込む際に、前記索引情報に記録された、当該レコードのキーに対応する領域識別子を、当該レコードを書き込む領域の領域識別子で更新し、
前記データ管理システムは、さらに、
キーを指定した検索要求の入力を受け付け、当該検索要求で指定されたキーに対応する領域識別子を前記索引情報から読み取り、読み取った領域識別子に対応する領域から当該キーに対応するレコードを抽出する検索処理部を備えることを特徴とする請求項１から３までのいずれかに記載のデータ管理システム。
【請求項５】
各レコードには、レコードが最初に前記第１記憶部に書き込まれた順番が登録順として記録されており、
前記索引情報には、キーごとに、キーに対応するレコードの登録順を記録したレコード索引と、キーの登録順に、キーに対応する領域識別子を記録した領域索引とが含まれており、
前記更新要求処理部は、レコードをいずれかの領域内に書き込む際に、当該レコードの登録順を当該レコードから読み取り、前記領域索引にて当該登録順の位置に記録された領域識別子を、当該レコードを書き込む領域の領域識別子で更新し、
前記検索処理部は、入力を受け付けた検索要求で指定されたキーに対応する登録順を前記レコード索引から読み取り、前記領域索引にて当該登録順の位置に記録された領域識別子を読み取り、読み取った領域識別子に対応する領域から当該キーに対応するレコードを抽出することを特徴とする請求項４に記載のデータ管理システム。
【請求項６】
前記領域索引には、キーの登録順に、キーに対応する領域識別子のほか、当該領域識別子に対応する領域にて当該キーに対応するレコードが記憶された位置を示す領域オフセットが記録されており、
前記更新要求処理部は、レコードをいずれかの領域内に書き込む際に、さらに、前記領域索引にて当該レコードの登録順の位置に記録された領域オフセットを、当該レコードを書き込む領域内の位置を示す領域オフセットで更新し、
前記検索処理部は、前記領域索引にて、前記レコード索引から読み取った登録順の位置に記録された領域識別子のほか、領域オフセットを読み取り、当該領域識別子に対応する領域内の当該領域オフセットで示された位置から当該キーに対応するレコードを抽出することを特徴とする請求項５に記載のデータ管理システム。
【請求項７】
前記更新要求処理部は、単位時間ごとに、
（１）前記処理対象領域内のレコードを読込バッファに一括して読み込み、
（２）前記読込バッファ内の各レコードについて、前記更新要求受付部が入力を受け付けた更新要求に、レコードと同じキーを指定した更新要求がある場合、当該レコードを当該更新要求によって更新し、
（３）前記読込バッファ内の各レコードについて、レコードを、予定時刻に対応する複数の書込バッファのうち、当該レコードを書き込む領域と同じ予定時刻に対応する書込バッファに格納し、
（４）書込バッファごとに、書込バッファ内のレコードを当該書込バッファと同じ予定時刻に対応する領域内に一括して書き込むことを特徴とする請求項１から６までのいずれかに記載のデータ管理システム。
【請求項８】
前記更新要求処理部は、
（４´）現在時刻より１単位時間後の予定時刻に対応する書込バッファについては、当該書込バッファ内のレコードを当該書込バッファと同じ予定時刻に対応する領域内に書き込まず、当該書込バッファを新たな読込バッファとして設定することを特徴とする請求項７に記載のデータ管理システム。
【請求項９】
前記更新要求処理部は、単位時間ごとに、
（１）前記処理対象領域内のレコードを読込バッファに一括して読み込み、
（２）前記読込バッファ内の各レコードについて、前記更新要求受付部が入力を受け付けた更新要求に、レコードと同じキーを指定した更新要求がある場合、当該レコードを当該更新要求によって更新し、
（３）前記読込バッファ内の各レコードについて、レコードを書込バッファに格納し、
（４）次に更新される予定時刻が同じレコードごとに、前記書込バッファ内のレコードを予定時刻に対応する領域内に一括して書き込むことを特徴とする請求項１から６までのいずれかに記載のデータ管理システム。
【請求項１０】
前記更新要求処理部は、
（３´）前記読込バッファ内のレコードのうち、現在時刻より１単位時間後に更新される予定のレコードについては、レコードを前記書込バッファに格納せず、当該レコードを別の書込バッファに格納し、
（４´）前記別の書込バッファを新たな読込バッファとして設定することを特徴とする請求項９に記載のデータ管理システム。
【請求項１１】
第１記憶部が、キーで識別される複数のレコードを、各レコードが更新される予定時刻に応じて複数の領域に分けて記憶し、
更新要求受付部が、キーと当該キーに対応するレコードの更新内容と当該レコードを次に更新する予定時刻とを指定した更新要求の入力を受け付け、
更新要求処理部が、単位時間ごとに、前記複数の領域のうち、現在時刻に対応する領域を処理対象領域として選択し、選択した処理対象領域内の各レコードについて、前記更新要求受付部が入力を受け付けた更新要求に、レコードと同じキーを指定した更新要求がある場合、当該レコードを当該更新要求で指定された更新内容で更新し、更新したレコードを当該更新要求で指定された予定時刻に対応する領域内に書き込むことを特徴とするデータ管理方法。
【請求項１２】
キーで識別される複数のレコードを、各レコードが更新される予定時刻に応じて複数の領域に分けて記憶する第１記憶部を備えるコンピュータにより実行されるデータ管理プログラムであって、
キーと当該キーに対応するレコードの更新内容と当該レコードを次に更新する予定時刻とを指定した更新要求の入力を受け付ける更新要求受付手順と、
単位時間ごとに、前記複数の領域のうち、現在時刻に対応する領域を処理対象領域として選択し、選択した処理対象領域内の各レコードについて、前記更新要求受付手順が入力を受け付けた更新要求に、レコードと同じキーを指定した更新要求がある場合、当該レコードを当該更新要求で指定された更新内容で更新し、更新したレコードを当該更新要求で指定された予定時刻に対応する領域内に書き込む更新要求処理手順とをコンピュータに実行させることを特徴とするデータ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ管理システム及びデータ管理方法及びデータ管理プログラムに関するものである。本発明は、特に、更新予告型データ管理システムに関するものである。
【背景技術】
【０００２】
大量の情報（レコード）を管理するデータベースシステムにおいては、主記憶装置に比べて極めて低速な二次記憶装置へのアクセスを効率化する様々な工夫がなされている。また、二次記憶装置には、磁気ディスク装置に代表されるように、連続するアドレスに対するアクセス（シーケンシャルアクセス）速度（数１０ＭＢ／ｓ〜数１００ＭＢ／ｓ）に対して、不連続なアドレスに対するアクセス（ランダムアクセス）速度（数ＭＢ／ｓ）が著しく低いという特性があり、同じデータ転送量でもアクセスパターンがシーケンシャルかランダムかによって、得られる性能が著しく異なる。
【０００３】
検索キーに対して「Ｂ−ｔｒｅｅ」等の木構造索引を作成することは、キーの値に応じてレコードの格納位置を定め、探索範囲を狭めることで、検索時の二次記憶アクセスの回数を減らす工夫である。一方、レコードを追加順に記憶領域末尾に格納していくログ形式は、二次記憶装置への書き込みをシーケンシャルアクセスで実現するための工夫である。しかし、大量のレコードを継続的に更新する処理においては、これらのいずれの方法を用いても性能低下を防ぐことはできない。索引方式では、レコードがキー順に更新されるのでない限り、ランダムアクセスの発生を回避できない。一方、ログ形式では、更新前のレコードの値を取得することが困難である。
【０００４】
そこで、索引方式のランダムアクセス性を緩和するために、複数の更新要求をまとめ、処理順序をキー順に変更してから、実際のアクセスを行う方法が提案されている（例えば、特許文献１参照）。
【特許文献１】特開平１０−３１６０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のデータ管理システムは、特許文献１に記載のように、レコードをキー順に格納し、複数レコードに対するアクセス要求をキー順に並べ替えてから実際にアクセスしているので、大量のレコードが存在する場合、アクセス対象がまばらとなり、ランダムアクセスと同等の性能しか得られないという課題があった。
【０００６】
本発明は、大量のレコードを継続的に更新するデータ管理システムにおけるデータアクセスの処理の効率化を目的とする。例えば、本発明は、各レコードに対する更新要求とともに次回更新予定時刻を外部から受け取ることで、外部からの要求に従って動作しつつ、二次記憶装置に対する読み込み及び書き込みがシーケンシャルアクセスとなるようにして、大量レコードの更新処理を高速化する更新予告型データ管理システムを得ることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一の態様に係るデータ管理システムは、
キーで識別される複数のレコードを、各レコードが更新される予定時刻に応じて複数の領域に分けて記憶する第１記憶部と、
キーと当該キーに対応するレコードの更新内容と当該レコードを次に更新する予定時刻とを指定した更新要求の入力を受け付ける更新要求受付部と、
単位時間ごとに、前記複数の領域のうち、現在時刻に対応する領域を処理対象領域として選択し、選択した処理対象領域内の各レコードについて、前記更新要求受付部が入力を受け付けた更新要求に、レコードと同じキーを指定した更新要求がある場合、当該レコードを当該更新要求で指定された更新内容で更新し、更新したレコードを当該更新要求で指定された予定時刻に対応する領域内に書き込む更新要求処理部とを備えることを特徴とする。
【発明の効果】
【０００８】
本発明の一の態様によれば、データ管理システムにおいて、第１記憶部が、複数のレコードを、各レコードが更新される予定時刻に応じて複数の領域に分けて記憶し、更新要求処理部が、単位時間ごとに、前記複数の領域のうち、現在時刻に対応する領域を処理対象領域として選択し、選択した処理対象領域内の各レコードを更新要求で指定された更新内容で更新し、更新したレコードを当該更新要求で指定された予定時刻に対応する領域内に書き込むことにより、データアクセスの処理が効率化できる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施の形態について、図を用いて説明する。
【００１０】
実施の形態１．
図１は本実施の形態に係る更新予告型データ管理システム１００（データ管理システムの一例）の構成図である。
【００１１】
図１において、更新予告型データ管理システム１００は、第１記憶部１０１、読込バッファ１０４、複数の書込バッファ１０５、受信バッファ１０６、更新要求受付部１０７、更新要求処理部１０８、第２記憶部１０９、検索処理部１１２を備える。
【００１２】
第１記憶部１０１は、複数のレコード１０３を、各レコード１０３の次回更新予定時刻に応じて複数の領域１０２に分けて記憶する。例えば、次回更新予定時刻がｔ（ｔは例えば日時）のレコード１０３は、領域ｔに記憶される。次回更新予定時刻がｔ＋１（例えば単位時間が１分であればｔの１分後）のレコード１０３は、領域ｔ＋１に記憶される。次回更新予定時刻がｔ＋ｎ（例えばｎはｎ＞１となる整数）のレコード１０３は、領域ｔ＋ｎに記憶される。各レコード１０３には、キー、次回更新時刻、登録順、属性情報等のデータが記録されている。キーはレコード１０３を一意に識別する。次回更新時刻はレコード１０３が更新される予定時刻を示す。登録順はレコード１０３が最初に第１記憶部１０１に書き込まれた順番を示す。属性情報はレコード１０３に記録される任意のデータである。レコード１０３の具体例については後述する。
【００１３】
更新要求受付部１０７は、更新要求の入力を受け付け、入力された更新要求を受信バッファ１０６に格納する。更新要求は、キー、属性情報、次回更新時刻等を指定したデータである。属性情報はキーに対応するレコード１０３の更新内容を示す。次回更新時刻はキーに対応するレコード１０３を次に更新する予定時刻を示す。更新要求の具体例については後述する。
【００１４】
第２記憶部１０９は、キーごとに、領域識別子を記録した索引情報を記憶する。領域識別子はキーに対応するレコード１０３が記憶された領域１０２を識別する。例えば、キーＡの領域識別子としては、キーＡに対応するレコード１０３が記憶されている領域ｔを識別する領域識別子Ａが索引情報に記憶される。本実施の形態では、索引情報には、レコード索引１１０、領域索引１１１が含まれている。レコード索引１１０には、キーごとに、キーに対応するレコード１０３の登録順が記録されている。領域索引１１１には、キーの登録順に、キーに対応する領域識別子が記録されている。なお、領域索引１１１には、キーは記録されていない。領域索引１１１には、キーの登録順に、キーに対応する領域識別子のほか、領域オフセットが記録されていてもよい。あるキーに対応する領域識別子と領域オフセットが領域索引１１１に記録されている場合、領域オフセットは領域識別子に対応する領域１０２にて当該キーに対応するレコード１０３が記憶された位置を示す。
【００１５】
更新要求処理部１０８は、単位時間ごとに（例えば単位時間が１分であれば毎分）、複数の領域１０２のうち、現在時刻に対応する領域１０２を処理対象領域として選択する。また、更新要求処理部１０８は、単位時間ごとに、更新要求受付部１０７が入力を受け付けた更新要求を受信バッファ１０６から読み出す。そして、更新要求処理部１０８は、単位時間ごとに、選択した処理対象領域内の各レコード１０３について、受信バッファ１０６から読み出した更新要求に、レコード１０３と同じキーを指定した更新要求がある場合、当該レコード１０３を当該更新要求で指定された属性情報で更新し、更新したレコード１０３を当該更新要求で指定された次回更新時刻に対応する領域１０２内に書き込む。一方、受信バッファ１０６から読み出した更新要求に、レコード１０３と同じキーを指定した更新要求がない場合、更新要求処理部１０８は、当該レコード１０３を現在時刻より所定の単位時間（例えば１単位時間）後の次回更新時刻に対応する領域１０２内に書き込む。
【００１６】
更新要求処理部１０８は、レコード１０３をいずれかの領域１０２内に書き込む際に、第２記憶部１０９の索引情報に記録された、当該レコード１０３のキーに対応する領域識別子を、当該レコード１０３を書き込む領域１０２の領域識別子で更新する。本実施の形態では、このとき、更新要求処理部１０８は、当該レコード１０３の登録順を当該レコード１０３から読み取り、領域索引１１１にて当該登録順の位置に記録された領域識別子を、当該レコード１０３を書き込む領域の領域識別子で更新する。領域索引１１１に領域オフセットが記録されている場合、更新要求処理部１０８は、さらに、領域索引１１１にて当該レコード１０３の登録順の位置に記録された領域オフセットを、当該レコード１０３を書き込む領域１０２内の位置を示す領域オフセットで更新する。
【００１７】
例えば、現在時刻がｔのとき、更新要求処理部１０８は、領域ｔを処理対象領域として選択するとともに、更新要求受付部１０７が時刻ｔに入力を受け付けた（あるいは時刻ｔに更新を実施するように要求する）更新要求を受信バッファ１０６から読み出す。そして、更新要求処理部１０８は、領域ｔ内の各レコード１０３について更新処理を行う。以下、更新処理の具体例を記述する。
【００１８】
この例において、領域ｔ内にキーＣ、次回更新時刻Ｃ（時刻ｔを示す）、登録順Ｃ、属性情報Ｃ等を記録したレコードＣと、キーＡ、次回更新時刻Ａ（時刻ｔを示す）、登録順Ａ、属性情報Ａ等を記録したレコードＡが存在するものとする。受信バッファ１０６から読み出された更新要求には、キーＡ、属性情報Ａ´、次回更新時刻Ａ´を指定した更新要求Ａが含まれているが、キーＣを指定した更新要求は含まれていないものとする。
【００１９】
受信バッファ１０６から読み出した更新要求に、レコードＡと同じキーＡを指定した更新要求Ａがあるため、更新要求処理部１０８は、レコードＡを更新要求Ａで指定された属性情報Ａ´で更新し、更新したレコードＡを更新要求Ａで指定された次回更新時刻Ａ´に対応する領域１０２内に書き込む。このとき、更新要求処理部１０８は、第２記憶部１０９の索引情報に記録された、レコードＡのキーＡに対応する領域識別子Ａを、レコードＡを書き込む領域１０２の領域識別子で更新する。具体的な処理として、更新要求処理部１０８は、レコードＡの登録順ＡをレコードＡから読み取り、領域索引１１１にて登録順Ａの位置（例えば登録順Ａが３であれば領域索引１１１の先頭から３番目）に記録された領域識別子Ａを、レコードＡを書き込む領域１０２の領域識別子で更新する。
【００２０】
一方、受信バッファ１０６から読み出した更新要求に、レコードＣと同じキーＣを指定した更新要求がないため、更新要求処理部１０８は、レコードＣを現在時刻より１分後の次回更新時刻に対応する領域ｔ＋１内に書き込む。このとき、更新要求処理部１０８は、第２記憶部１０９の索引情報に記録された、レコードＣのキーＣに対応する領域識別子Ｃを、領域ｔ＋１の領域識別子で更新する。具体的な処理として、更新要求処理部１０８は、レコードＣの登録順ＣをレコードＣから読み取り、領域索引１１１にて登録順Ｃの位置に記録された領域識別子Ｃを、レコードＣを書き込む領域１０２の領域識別子で更新する。
【００２１】
以下のように、本実施の形態では、更新要求処理部１０８は、更新処理を行う際に読込バッファ１０４及び複数の書込バッファ１０５を用いる。更新要求処理部１０８は、単位時間ごとに（例えば単位時間が１分であれば毎分）、以下の処理を実行する。
（１）更新要求処理部１０８は、処理対象領域内のレコード１０３を読込バッファ１０４に一括して読み込む。
（２）更新要求処理部１０８は、読込バッファ１０４内の各レコード１０３について、受信バッファ１０６から読み出した更新要求に、レコード１０３と同じキーを指定した更新要求がある場合、当該レコード１０３を当該更新要求によって更新する。
（３）更新要求処理部１０８は、読込バッファ１０４内の各レコード１０３について、レコード１０３を、次回更新時刻に対応する複数の書込バッファ１０５のうち、当該レコード１０３を書き込む領域１０２と同じ次回更新時刻に対応する書込バッファ１０５に格納する。
（４）更新要求処理部１０８は、書込バッファ１０５ごとに、書込バッファ１０５内のレコード１０３を当該書込バッファ１０５と同じ次回更新時刻に対応する領域１０２内に一括して書き込む。
【００２２】
前述した更新処理の具体例では、以下の処理が実行されることになる。
（１）更新要求処理部１０８は、領域ｔ内の全てのレコード１０３を読込バッファ１０４に一括して読み込む。
（２）更新要求処理部１０８は、読込バッファ１０４内のレコードＡを更新要求Ａによって更新する。読込バッファ１０４内のレコードＣは、対応する更新要求がないため、更新されない。
（３）更新要求処理部１０８は、読込バッファ１０４内のレコードＡを、次回更新時刻Ａに対応する書込バッファ１０５に格納する。また、更新要求処理部１０８は、読込バッファ１０４内のレコードＣを、次回更新時刻ｔ＋１に対応する書込バッファｔ＋１に格納する。
（４）更新要求処理部１０８は、書込バッファ１０５ごとに、書込バッファ１０５内のレコード１０３を当該書込バッファ１０５と同じ次回更新時刻に対応する領域１０２内に一括して書き込む。
【００２３】
更新要求処理部１０８は、上記（４）において、現在時刻より１単位時間後の次回更新時刻に対応する書込バッファ１０５については、以下のような処理を実行してもよい。
（４）更新要求処理部１０８は、現在時刻より１単位時間後の次回更新時刻に対応する書込バッファ１０５内のレコード１０３を当該書込バッファ１０５と同じ次回更新時刻に対応する領域１０２内に書き込まず、当該書込バッファ１０５を新たな読込バッファ１０４として設定する。このとき、元の読込バッファ１０４は削除する。
【００２４】
検索処理部１１２は、キーを指定した検索要求の入力を受け付け、当該検索要求で指定されたキーに対応する領域識別子を第２記憶部１０９の索引情報から読み取る。そして、検索処理部１１２は、読み取った領域識別子に対応する領域１０２から当該キーに対応するレコード１０３を抽出する。本実施の形態では、このとき、検索処理部１１２は、入力を受け付けた検索要求で指定されたキーに対応する登録順をレコード索引１１０から読み取り、領域索引１１１にて当該登録順の位置に記録された領域識別子を読み取る。そして、検索処理部１１２は、読み取った領域識別子に対応する領域１０２から当該キーに対応するレコード１０３を抽出し、検索応答として出力する。領域索引１１１に領域オフセットが記録されている場合、検索処理部１１２は、さらに、領域索引１１１にて、レコード索引１１０から読み取った登録順の位置に記録された領域オフセットを読み取り、当該領域識別子に対応する領域１０２内の当該領域オフセットで示された位置から当該キーに対応するレコード１０３を抽出する。
【００２５】
前述した更新処理の具体例で更新されたレコード１０３の検索を行う場合、例えば、キーＡを指定した検索要求が入力されると、検索処理部１１２は、キーＡに対応するに登録順Ａをレコード索引１１０から読み取る。続けて、検索処理部１１２は、領域索引１１１にて登録順Ａの位置に記録された領域識別子Ａを読み取る。そして、検索処理部１１２は、領域識別子Ａに対応する領域ｔからキーＡに対応するレコードＡを抽出し、検索応答として出力する。
【００２６】
更新予告型データ管理システム１００は一般的なコンピュータを用い、第１記憶部１０１及び第２記憶部１０９を磁気ディスク装置で、読込バッファ１０４、書込バッファ１０５及び受信バッファ１０６をランダムアクセスメモリ（ＲＡＭ）で、更新要求受付部１０７、更新要求処理部１０８、及び検索処理部１１２をランダムアクセスメモリに格納されプロセッサで実行されるコンピュータプログラムとして、それぞれ実現することができる。また、領域１０２は、Ｌｉｎｕｘ（登録商標）やＷｉｎｄｏｗｓ（登録商標）等の一般的なオペレーティングシステム（ＯＳ）が提供するファイルとして実現することができる。さらに、更新要求受付部１０７及び検索処理部１１２はローカルエリアネットワーク（ＬＡＮ）等の通信回線を介して要求元と更新要求や検索要求及び検索応答の授受を行うことができる。
【００２７】
図２は、更新予告型データ管理システム１００のハードウェア構成の一例を示す図である。
【００２８】
図２において、更新予告型データ管理システム１００は、コンピュータであり、ＬＣＤ９０１（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）、キーボード９０２（Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤＤ９０５（Ｃｏｍｐａｃｔ・Ｄｉｓｃ・Ｄｒｉｖｅ）、プリンタ９０６といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。ＬＣＤ９０１の代わりに、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）、あるいは、その他の表示装置が用いられてもよい。マウス９０３の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
【００２９】
更新予告型データ管理システム１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）を備えている。ＣＰＵ９１１は、プロセッサの一例である。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、ＲＡＭ９１４、通信ボード９１５、ＬＣＤ９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ９０６、ＨＤＤ９２０（磁気ディスク装置）と接続され、これらのハードウェアデバイスを制御する。ＨＤＤ９２０の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ又はその他の記憶媒体が用いられてもよい。
【００３０】
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、ＨＤＤ９２０は、不揮発性メモリの一例である。これらは、記憶装置の一例である。通信ボード９１５、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５は、入力装置の一例である。また、通信ボード９１５、ＬＣＤ９０１、プリンタ９０６は、出力装置の一例である。
【００３１】
通信ボード９１５は、ＬＡＮ等に接続されている。通信ボード９１５は、ＬＡＮに限らず、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ・Ｐｒｏｔｏｃｏｌ・Ｖｉｒｔｕａｌ・Ｐｒｉｖａｔｅ・Ｎｅｔｗｏｒｋ）、広域ＬＡＮ、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ・Ｔｒａｎｓｆｅｒ・Ｍｏｄｅ）ネットワークといったＷＡＮ（Ｗｉｄｅ・Ａｒｅａ・Ｎｅｔｗｏｒｋ）、あるいは、インターネットに接続されていても構わない。ＬＡＮ、ＷＡＮ、インターネットは、ネットワークの一例である。
【００３２】
ＨＤＤ９２０には、オペレーティングシステム９２１、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。プログラム群９２３には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、ＣＰＵ９１１により読み出され実行される。ファイル群９２４には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ＩＤ（識別子）」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、ＲＡＭ９１４やＨＤＤ９２０等の記憶媒体に記憶される。ＲＡＭ９１４やＨＤＤ９２０等の記憶媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ９１１の処理（動作）に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったＣＰＵ９１１の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００３３】
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、ＲＡＭ９１４等のメモリ、ＦＤＤ９０４のフレキシブルディスク（ＦＤ）、ＣＤＤ９０５のコンパクトディスク（ＣＤ）、ＨＤＤ９２０の磁気ディスク、光ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）、あるいは、その他の記録媒体に記録される。また、データや信号は、バス９１２、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
【００３４】
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００３５】
図３に更新要求受付部１０７が受け取る更新要求１７０の具体例を示す。
【００３６】
１つの更新要求１７０が１つのデータ管理単位（レコード）に対して入力される。キー１７１は更新対象のレコード１０３を特定するための更新予告型データ管理システム１００中で一意な情報である。次回更新時刻１７２は次に同一のレコード１０３に対する更新要求１７０がなされる予定の時刻である。フラグ１７３は「新規」又は「更新」のいずれかの値を取り、キー１７１に対する更新要求１７０が初回であるか、２回目以降であるかを示す。属性情報１７４はキー１７１に対応付けて記憶されるデータ本体であり、アプリケーションごとに可変の内容を持つ。
【００３７】
例えば、更新要求１７０の発信元が、インターネット上の多数のＷｅｂページの内容を繰り返し収集しており、収集した内容から抽出したハイパーリンクの情報を蓄積するために更新予告型データ管理システム１００を用いているものとすると、当該ＷｅｂページのＵＲＬ（Ｕｎｉｆｏｒｍ・Ｒｅｓｏｕｒｃｅ・Ｌｏｃａｔｏｒ）文字列をキー１７１とし、収集時刻及びリンク先ＵＲＬ文字列の集合を属性情報１７４に含めることができる。また、次回更新時刻１７２は次に当該Ｗｅｂページの収集を行う予定の時刻を基に設定すればよい。あるいは、例えば、更新要求１７０の発信元が、センサ素子から測定データを繰り返し取得しており、取得した測定データを蓄積するために更新予告型データ管理システム１００を用いているものとすると、当該センサ素子の識別子をキー１７１とし、取得時刻及び測定データを属性情報１７４に含めることができる。また、次回更新時刻１７２は次に当該センサ素子から測定データを取得する予定の時刻を基に設定すればよい。
【００３８】
図４はレコード１０３に含まれる情報の具体例を示す図である。
【００３９】
キー１３１は、更新要求１７０のキー１７１に対応する。次回更新時刻１３２は、更新要求１７０の次回更新時刻１７２に対応する。登録順１３３は、当該レコード１０３が更新予告型データ管理システム１００に新規登録された順を表す整数値を取る。属性情報１３４は、更新要求１７０の属性情報１７４に基づく値を持つが、必ずしも同一である必要はない。例えば、属性情報１３４は過去に受け取った更新要求１７０の属性情報１７４を連結したものであってもよい。
【００４０】
更新予告型データ管理システム１００に登録された全てのレコード１０３は、次回更新時刻１３２の値が一定範囲にあるもの同士でまとめられ、複数の領域１０２に分割して格納される。例えば、この範囲の長さを１分とすると、ある領域１０２に格納された全てのレコード１０３の次回更新時刻１３２は、同一の時刻を持つ（秒は異なってもよい）。また、例えば、この範囲の長さを１日とすると、ある領域１０２に格納された全てのレコード１０３の次回更新時刻１３２は、同一の日付を持つ（時刻は異なってもよい）。このように、複数の領域１０２は、所定の範囲の長さを単位として表した次回更新時刻１３２により識別される。所定の単位で表した現在時刻をｔとすると、領域ｔ、領域ｔ＋１、・・・が存在する。
【００４１】
また、領域１０２内でのレコード１０３の配置は格納順とする。このため、ある領域１０２中で特定の値のキー１３１を持つレコード１０３を検索するには、領域１０２内の全レコード１０３を順に走査する必要がある。書込バッファ１０５は領域１０２と同様に所定の単位で表した次回更新時刻１３２に対応しており、現在時刻ｔに対応するものを除く、書込バッファｔ＋１、書込バッファｔ＋２、・・・が存在する。
【００４２】
図５にレコード索引１１０の具体例を示す。
【００４３】
キー２０１は、レコード１０３のキー１３１に対応する。登録順２０２は、レコード１０３の登録順１３３に対応する。レコード索引１１０は、キー２０１の値を指定して、対応する登録順２０２の値を得るために用いられる。新たな値のキー１３１を持つレコード１０３が登録された際には、適切な位置にキー２０１と登録順２０２の組を挿入する必要がある。公知のＢ−ｔｒｅｅ等のデータ構造を用いることで、効率的な検索や挿入を実現することができる。
【００４４】
図６は領域索引１１１の具体例を示す図である。
【００４５】
領域索引１１１は領域識別子２１１の配列であり、ｋ（ｋはｋ≧１となる整数）番目の要素がｋ番目に登録されたレコード１０３の格納された領域１０２を表す。この例において、領域識別子は、各領域１０２に対応する次回更新時刻を表す固定長の値であるが、必要十分な精度を用いることで記憶領域を低減することができる。例えば、ある基準日時からの経過時間（分単位）を用いると、３２ビットで約８１６６年分を表現することが可能である。このため、領域索引１１１はレコード索引１１０と同数の要素を含むが、必要とする記憶領域が小さく、全体をランダムアクセスメモリにキャッシュすることができる（上記のような表現形式により、５１２ＭＢで１億件以上を保持可能である）。
【００４６】
次に、更新要求受付部１０７、更新要求処理部１０８、及び検索処理部１１２の動作を説明する。
【００４７】
更新要求受付部１０７は、要求元から更新要求１７０を受け取って受信バッファ１０６に追加する処理を繰り返す。
【００４８】
図７のフローチャートは、更新要求処理部１０８の単位時間ごとの動作を示したものである。
【００４９】
ステップＳ１において更新要求処理部１０８は現在時刻ｔに対応する領域ｔ（図１参照）の内容を一括して読込バッファ１０４に読み込み、複数のレコード１０３をキー１３１の昇順にソートする。このとき、第１記憶部１０１からの読み込みはシーケンシャルアクセスとなる。次にステップＳ２で受信バッファ１０６の複数の更新要求１７０をキー１７１の昇順にソートする。
【００５０】
ステップＳ３で更新要求処理部１０８は読込バッファ１０４内のレコード１０３と受信バッファ１０６内の更新要求１７０を先頭から全て処理し終えたかどうかをプロセッサにより判定し、処理が完了していればステップＳ１４に進み、そうでなければステップＳ４に進む。
【００５１】
ステップＳ４では、更新要求処理部１０８は読込バッファ１０４内の未処理のレコード１０３のうち先頭のもののキー１３１の値と、受信バッファ１０６内の未処理の更新要求１７０のうち先頭のもののキー１７１の値とをプロセッサにより比較する。ただし、未処理のレコード１０３又は未処理の更新要求１７０が存在しない場合は、キー１３１，１７１の値を無限大とする。先頭のレコード１０３のキー１３１の値が先頭の更新要求１７０のキー１７１の値より小さい場合はステップＳ６に、両者が等しい場合はステップＳ５に、それ以外の場合はステップＳ９に進む。
【００５２】
ステップＳ５においては、更新要求処理部１０８は先頭の更新要求１７０の内容に基づいて先頭のレコード１０３の値を更新した後に、先頭の更新要求１７０を受信バッファ１０６から削除する。また、ｔ´を更新後の次回更新時刻１３２の値として、ステップＳ７に進む。
【００５３】
ステップＳ７では更新要求処理部１０８は先頭のレコード１０３を書込バッファｔ´を経由して領域ｔ´の末尾に追加する。これは、書込バッファｔ´に先頭のレコード１０３を追加する十分な空きがない場合には、書込バッファｔ´の内容を領域ｔ´の末尾に追加して書込バッファｔ´を空にし、元々書込バッファｔ´に十分な空きがある場合には、書込バッファｔ´の内容をそのままにし、いずれの場合においても先頭のレコード１０３を書込バッファｔ´の末尾に追加するということである。その後、先頭のレコード１０３を読込バッファ１０４から削除する。次いでステップＳ８では、領域索引１１１の先頭から登録順１３３の順番にあるエントリにｔ´を設定し、ステップＳ３に戻る。
【００５４】
ステップＳ６では、更新要求処理部１０８はｔ´＝ｔ＋１としてステップＳ７に進む。これは、元の値を領域ｔ＋１に書き込み、１単位時間後に再度更新を試みるためである。当該レコード１０３に対する更新要求１７０が、予告された次回更新時刻１３２の通りに発信されるとは限らないため、この処理が必要になる。
【００５５】
ステップＳ９では、更新要求処理部１０８は先頭の更新要求１７０のフラグ１７３の値を調べ、「新規」であればステップＳ１０に、そうでなければステップＳ１３に進む。
【００５６】
ステップＳ１０では、更新要求処理部１０８は先頭の更新要求１７０の内容と現時点でのレコード１０３の登録数に基づいて、新規のレコード１０３の内容を初期化する。即ち、キー１３１、次回更新時刻１３２、及び属性情報１３４を先頭の更新要求１７０のキー１７１、次回更新時刻１７２、及び属性情報１７４にそれぞれ設定し、登録順１３３を登録済のレコード１０３の数＋１、に設定する（登録済のレコード１０３の数は例えば第１記憶部１０１に記憶し、新規のレコード１０３の登録がある度に更新しておけばよい）。さらに、先頭の更新要求１７０を受信バッファ１０６から削除し、ｔ´を次回更新時刻１３２の値とする。続くステップＳ１１では新規のレコード１０３を書込バッファｔ´を経由して領域ｔ´の末尾に追加する。次いでステップＳ１２では、キー１３１と登録順１３３の組をレコード索引１１０に挿入するとともに、領域索引１１１の末尾に要素を１つ追加してｔ´を設定して、ステップＳ３に戻る。
【００５７】
ステップＳ１３では、更新要求処理部１０８は先頭の更新要求１７０をスキップしてステップＳ３に戻る。スキップされた更新要求１７０は、新たに受け付けられた更新要求１７０とともに、１単位時間後に再度処理される。
【００５８】
ステップＳ１４は、処理対象データがなくなった際に実行される。更新要求処理部１０８は書込バッファｔ＋１の内容を領域ｔ＋１の末尾に追加した後に、書込バッファｔ＋１を削除し、さらに領域ｔを削除して終了する。これらの処理により、不要になった記憶領域を直ちに回収して新たな領域１０２や書込バッファ１０５に利用することが可能になる。
【００５９】
このように、本実施の形態では、外部からの要求に基づく更新処理を効率的に実行できる。
【００６０】
図８は、検索処理部１１２の動作のうち、単一の検索要求に対する処理を示すフローチャートである。
【００６１】
まず、ステップＳ１２１において検索処理部１１２は要求元から検索要求として検索対象のレコード１０３を示すキーの値Ｑを受け取る。次にステップＳ１２２でレコード索引１１０を検索し、キー２０１がＱに一致する要素が存在するかどうかをプロセッサにより調べる。存在する場合はステップＳ１２３に、存在しない場合はステップＳ１２７に進む。
【００６２】
ステップＳ１２３では検索処理部１１２はレコード索引１１０からキー２０１がＱに一致する要素の登録順２０２の値Ｓを取得する。次にステップＳ１２４で、領域索引１１１のＳ番目の要素として、領域識別子の値ｂを取得する。さらにステップＳ１２５で、書込バッファｂ及び領域ｂを先頭から走査し、キー１３１がＱに一致するレコード１０３を取得する。最後にステップＳ１２６で、取得したレコード１０３を要求元に送信して終了する。
【００６３】
ステップＳ１２７では、検索処理部１１２は要求元に検索失敗通知を送信して終了する。
【００６４】
以上のように、本実施の形態によれば、複数のレコード１０３を要求元により予告された次回更新時刻１７２に基づいて格納する複数の領域１０２を有するので、同時に更新されるレコード１０３を領域１０２単位に一括して読み込むことができ、レコード１０３単位のランダムアクセスを回避し、磁気ディスク装置の性能低下を防ぐことができる。
【００６５】
また、検索処理部１１２と索引情報を備えるので、キーに基づくレコード１０３の検索を、単一の領域１０２の走査により実現することができる。さらに、索引情報はレコード索引１１０及び領域索引１１１で構成されており、領域索引１１１は稠密な整数を添え字に持つ容量の比較的小さな配列であるため、ランダムアクセスメモリにキャッシュすることが可能であり、更新要求処理部１０８によるレコード１０３の格納先の領域１０２の変更を、余分な磁気ディスク装置へのアクセスを発生させることなく実施することができる。
【００６６】
ここで、前述したように、領域索引１１１に領域識別子２１１に加え、レコード１０３の領域１０２内の格納位置を示す領域オフセットを含めることができる。これにより、領域索引１１１の容量は増加するが、検索処理部１１２が領域１０２の全体を走査してレコード１０３を検索する必要がなくなるため、検索の効率が向上するという効果がある。
【００６７】
また、更新後のレコード１０３を元の位置に書き戻すのではなく、同一の次回更新時刻１３２を持つ複数のレコード１０３を書込バッファ１０５を経由して一括して領域１０２に書き込むので、書き込み時のランダムアクセスを回避するとともに、レコード１０３ごとに更新周期が異なっていても次回以降の読み込みがシーケンシャルアクセスとなることを保証する。また、一括して読み込まれた領域１０２は直ちに再利用可能となるので、記憶領域の断片化を避けることができる。
【００６８】
ステップＳ１４では、書込バッファｔ＋１の内容を領域ｔ＋１に書き出し、書込バッファｔ＋１を削除するが、代わりに読込バッファ１０４を削除し、書込バッファｔ＋１を新たな読込バッファ１０４としてもよい。これにより、書込バッファｔ＋１のレコード１０３を領域ｔ＋１に書き込み、再度読込バッファ１０４に読み込むオーバヘッドを回避することができる。
【００６９】
また、本実施の形態では、第１記憶部１０１が磁気ディスク装置であることを想定しているが、第１記憶部１０１はフラッシュメモリとしてもよい。フラッシュメモリは純粋なランダムアクセスには適さず、ブロック単位でのアクセスが機能面や性能面から要求されるが、領域１０２をフラッシュメモリのブロックとすることでこれらの制約による性能低下を回避することができる。
【００７０】
以上説明したように、本実施の形態に係る更新予告型データ管理システムは、
更新要求受付部と、受信バッファと、第１記憶部と、更新要求処理部とを備え、
前記第１記憶部は、キーで識別される複数のレコードを、各々の次回更新時刻に基づいて異なる複数の領域に格納し、
前記更新要求受付部は、前記キーと、当該キーで識別される前記レコードに対する更新内容と、当該レコードの次回更新時刻と、からなる更新要求を受け取って前記受信バッファに蓄積し、
前記更新要求処理部は、前記複数の領域のうち、現在時刻に対応するものを処理対象領域として選択し、
前記処理対象領域内の各レコードについて、
前記キーが一致する前記受信バッファ内の前記更新要求に基づいて更新後の値を決定し、
前記次回更新時刻に対応する領域の末尾に前記レコードの更新後の値を格納するとともに、
前記レコードと前記キーが一致した前記更新要求を前記受信バッファから削除し、
前記受信バッファ内に前記キーが一致する前記更新要求が存在しない前記レコードについては、現在時刻よりも１単位だけ大きい時刻に対応する領域の末尾に前記レコードの元の値を格納し、
前記処理対象領域内の全てのレコードを処理し終えた後に、前記処理対象領域を削除することを特徴とする。
【００７１】
前記更新予告型データ管理システムは、
前記第１記憶部とは異なる第２記憶部と、検索処理部とを備え、
前記第２記憶部は、前記第１記憶部に格納された全てのレコードについて、前記キーに対応付けて前記レコードが格納された前記領域の領域識別子を格納する索引情報を有し、
前記更新要求処理部は、前記レコードの更新後又は元の値を前記次回更新時刻に対応する領域に格納する際に、前記索引情報の前記レコードのキーに対応する前記領域識別子を更新し、
前記検索処理部は、前記キーからなる検索要求を受け取り、前記キーに対応する前記領域識別子を前記索引情報から取得し、取得した前記領域識別子に対応する領域を走査して、前記キーと一致する前記レコードの値を前記検索要求の要求元に返信することを特徴とする。
【００７２】
前記更新要求は、前記キーが既知の値であるか新規の値であるかを示すフラグを含み、
前記レコードは、当該レコードが最初に前記第１記憶部に格納された登録順を表す値を含み、
前記索引情報は、前記キーに対応付けて前記レコードの前記登録順を格納するレコード索引と、前記登録順に前記レコードの前記領域識別子を格納する領域索引と、からなり、
前記更新要求処理部は、
前記フラグが新規を示す前記受信バッファ内の前記更新要求について、当該更新要求と登録順に基づいて新たなレコードを初期化して前記次回更新時刻に対応する領域の末尾に格納し、
前記更新要求を前記受信バッファから削除するとともに、
前記キーと前記登録順の組を前記レコード索引に挿入し、
前記領域索引の末尾に前記領域識別子を追加し、
前記処理対象領域内の各レコードの更新後又は元の値を前記次回更新時刻に対応する領域に格納する際に、前記領域索引の前記レコードの前記登録順に対応する前記領域識別子を更新し、
前記検索処理部は、前記検索要求の前記キーに対応する前記登録順を前記レコード索引から取得し、さらに取得した前記登録順に対応する前記領域識別子を前記領域索引から取得することを特徴とする。
【００７３】
前記領域索引は、さらに前記領域内の前記レコード格納位置を示す領域オフセットを含み、
前記更新要求処理部は、
前記領域索引への要素追加又は更新の際に、前記領域識別子とともに、前記領域オフセットを設定し、
前記検索処理部は、前記領域識別子とともに前記領域オフセットを前記領域索引から取得し、
前記領域識別子と前記領域オフセットとで指定される位置から前記レコードの値を取得することを特徴とする。
【００７４】
前記更新予告型データ管理システムは、
前記第１記憶部に接続された単一の読込バッファと、
前記第１記憶部内の複数の領域と１対１に対応する所定容量の複数の書込バッファとを備え、
前記更新要求処理部は、
前記処理対象領域からのレコードの読み込みを、前記読込バッファを介して一括して行い、
前記レコードの前記領域への書き込みを、前記領域と１対１に対応する前記書込バッファを介して一括して行い、
前記処理対象領域の全てのレコードを処理し終えた後に、
現在時刻よりも１単位だけ大きい時刻に処理対象となる次回処理対象領域に対応する書込バッファ内の全てのレコードを、前記次回処理対象領域の末尾に書き込んで、前記次回処理対象領域に対応する書込バッファを空にしてから、
前記次回処理対象領域に対応する書込バッファ及び前記処理対象領域を削除することを特徴とする。
【００７５】
前記更新要求処理部は、前記処理対象領域の全てのレコードを処理し終えた後に、
前記次回処理対象領域に対応する書込バッファを新たな読込バッファとし、
元の前記読込バッファ及び前記処理対象領域を削除することを特徴とする。
【００７６】
前記第１記憶部は、磁気ディスク装置であることを特徴とする。
【００７７】
前記第１記憶部は、フラッシュメモリであることを特徴とする。
【００７８】
前記更新要求における前記キーは、ＷｅｂページのＵＲＬであり、
前記更新要求における前記レコードに対する更新内容は、時刻と、前記時刻における前記Ｗｅｂページの内容に含まれるリンク先ＵＲＬの集合であり、
前記更新要求処理部は、
前記時刻と、前記時刻における前記Ｗｅｂページの内容に含まれるリンク先ＵＲＬの集合とを、前記レコードに追加して前記レコードの更新後の値とすることを特徴とする。
【００７９】
前記更新要求における前記キーは、センサ素子の識別子であり、
前記更新要求における前記レコードに対する更新内容は、時刻と、前記時刻における前記センサ素子の測定データであり、
前記更新要求処理部は、
前記時刻と、前記時刻における前記センサ素子の測定データとを、前記レコードに追加して前記レコードの更新後の値とすることを特徴とする。
【００８０】
実施の形態２．
本実施の形態について、主に実施の形態１との差異を説明する。
【００８１】
図９は本実施の形態に係る更新予告型データ管理システム１００の構成図である。
【００８２】
図９において、図１と同一符号を有するものは同一構成要素を表す。本実施の形態では、更新予告型データ管理システム１００は、第１の書込バッファ１０５ｘ、第２の書込バッファ１０５ｙを備える。実施の形態１と異なり、書込バッファの数は領域１０２の数と関わりなく２つである。第１の書込バッファ１０５ｘは単一の領域１０２（処理対象領域の次の領域）に対応し、第２の書込バッファ１０５ｙはそれ以外の領域１０２に書き込まれるレコード１０３を格納するものである。
【００８３】
以下のように、本実施の形態では、更新要求処理部１０８は、更新処理を行う際に読込バッファ１０４、第１の書込バッファ１０５ｘ、及び第２の書込バッファ１０５ｙを用いる。更新要求処理部１０８は、単位時間ごとに（例えば単位時間が１分であれば毎分）、以下の処理を実行する。
（１）更新要求処理部１０８は、処理対象領域内のレコード１０３を読込バッファ１０４に一括して読み込む。
（２）更新要求処理部１０８は、読込バッファ１０４内の各レコード１０３について、受信バッファ１０６から読み出した更新要求１７０に、レコード１０３と同じキー１７１を指定した更新要求１７０がある場合、当該レコード１０３を当該更新要求１７０によって更新する。
（３）更新要求処理部１０８は、読込バッファ１０４内の各レコード１０３について、レコード１０３を、第２の書込バッファ１０５ｙに格納する。ただし、更新要求処理部１０８は、読込バッファ１０４内のレコード１０３のうち、現在時刻より１単位時間後に更新される予定のレコード１０３については、レコード１０３を第２の書込バッファ１０５ｙではなく、別の書込バッファである第１の書込バッファ１０５ｘに格納する。
（４）更新要求処理部１０８は、次回更新時刻１３２が同じレコード１０３ごとに、第２の書込バッファ１０５ｙ内のレコード１０３を次回更新時刻１３２に対応する領域１０２内に一括して書き込む。また、更新要求処理部１０８は、第１の書込バッファ１０５ｘを新たな読込バッファ１０４として設定する。このとき、元の読込バッファ１０４は削除する。
【００８４】
更新要求処理部１０８は、上記（３）、（４）において、第１の書込バッファ１０５ｘを使用せず（第１の書込バッファ１０５ｘは不要となる）、以下のような処理を実行してもよい。
（３）更新要求処理部１０８は、読込バッファ１０４内の各レコード１０３（現在時刻より１単位時間後に更新される予定のレコード１０３も含む）について、レコード１０３を、第２の書込バッファ１０５ｙに格納する。
（４）更新要求処理部１０８は、次回更新時刻１３２が同じレコード１０３ごとに、第２の書込バッファ１０５ｙ内のレコード１０３を次回更新時刻１３２に対応する領域１０２内に一括して書き込む。
【００８５】
次に、更新要求処理部１０８の動作をフローチャートを用いて説明する。
【００８６】
図１０のフローチャートは、更新要求処理部１０８の動作を示したものである。
【００８７】
図１０において、図７と同一符号を有するものは同一処理を表す。本実施の形態では、実施の形態１のステップＳ７、Ｓ１１、及びＳ１４に代わり、それぞれステップＳ７０、Ｓ１１０、及びＳ１４０を実行する。
【００８８】
ステップＳ７０では、ステップＳ７と異なり、更新要求処理部１０８は第１の書込バッファ１０５ｘ及び第２の書込バッファ１０５ｙのいずれかを経由して領域ｔ´の末尾に先頭のレコード１０３の更新後又は元の値を書き込む。ここで、ｔ´＝ｔ＋１であれば第１の書込バッファ１０５ｘが用いられ、ｔ´＞ｔ＋１であれば第２の書込バッファ１０５ｙが用いられる。
【００８９】
第１の書込バッファ１０５ｘを経由する場合、第１の書込バッファ１０５ｘに先頭のレコード１０３を追加する十分な空きがなければ、更新要求処理部１０８は第１の書込バッファ１０５ｘ内の各レコード１０３を領域ｔ＋１の末尾に追加して第１の書込バッファ１０５ｘを空にしてから、先頭のレコード１０３を第１の書込バッファ１０５ｘの末尾に追加する。
【００９０】
第２の書込バッファ１０５ｙを経由する場合、第２の書込バッファ１０５ｙに先頭のレコード１０３を追加する十分な空きがなければ、更新要求処理部１０８は第２の書込バッファ１０５ｙ内の各レコード１０３を、次回更新時刻１３２の順に、次回更新時刻１３２に対応する領域１０２の末尾に追加して第２の書込バッファ１０５ｙを空にしてから、先頭のレコード１０３を第２の書込バッファ１０５ｙの末尾に追加する。
【００９１】
ステップＳ１１０においても、ステップＳ７０と同様に、更新要求処理部１０８は第１の書込バッファ１０５ｘ及び第２の書込バッファ１０５ｙのいずれかを経由して領域ｔ´の末尾に新規のレコード１０３の書き込みを行う。
【００９２】
ステップＳ１４０では、まず、更新要求処理部１０８は読込バッファ１０４と第１の書込バッファ１０５ｘの役割を交換し、時刻ｔにおける読込バッファ１０４を時刻ｔ＋１における第１の書込バッファ１０５ｘとして、時刻ｔにおける第１の書込バッファ１０５ｘを時刻ｔ＋１における読込バッファ１０４として用いるようにする。次に、更新要求処理部１０８は第２の書込バッファ１０５ｙ内の各レコード１０３を、次回更新時刻１３２の順に、次回更新時刻１３２に対応する領域１０２の末尾に追加して第２の書込バッファ１０５ｙを空にし、最後に領域ｔを削除する。
【００９３】
以上のように、本実施の形態によれば、次々回（ｔ＋２）以降に処理対象となる全ての領域１０２に書き込まれるレコード１０３を一時的に格納する第２の書込バッファ１０５ｙを備えるので、各領域１０２に書込バッファを用意した場合と比較し、書込バッファごとの使用率の違いによる記憶効率の低下を防ぎ、磁気ディスク装置への書き込み頻度を抑えることができる。また、更新要求処理部１０８は、第２の書込バッファ１０５ｙに格納されたレコード１０３を複数の領域１０２に振り分けて書き込む際に、次回更新時刻１３２ごと、即ち領域１０２ごとにレコード１０３を並べ替えて処理するステップＳ７０、Ｓ１１０及びＳ１４０を有するので、シーケンシャルアクセスに近い性能を得ることができる。さらに、次回処理対象となる領域１０２に書き込まれるレコード１０３を一時的に格納する第１の書込バッファ１０５ｘを備え、処理対象領域の切り換え時に第１の書込バッファ１０５ｘを新たな読込バッファ１０４とするステップＳ１４０を有するので、次回処理対象領域への書き込みと再読み込みによるオーバヘッドを低減することができる。
【００９４】
なお、前述したように、上記において、第１の書込バッファ１０５ｘを用いず、次回更新時刻ｔ＋１のレコード１０３も合わせて第２の書込バッファ１０５ｙに書き込んでもよい。この場合、次回処理対象領域のレコード１０３の一部に対する書き込みと読み込みを回避する効果は得られないが、領域１０２ごとに書込バッファを用意した場合の記憶効率の低下を防ぎ、磁気ディスク装置への書き込み頻度を抑える効果は維持される。
【００９５】
以上説明したように、本実施の形態に係る更新予告型データ管理システムは、実施の形態１に係るものと異なる点として、
前記第１記憶部に接続された単一の読込バッファと、
前記第１記憶部に接続された単一の書込バッファとを備え、
前記更新要求処理部は、
前記処理対象領域からのレコードの読み込みを、前記読込バッファを介して一括して行い、
前記レコードの前記領域への書き込みを、前記書込バッファに対して行い、
前記書込バッファが所定容量に達した際には、前記書込バッファ内の全てのレコードを、前記次回更新時刻の順に、前記全てのレコードの各々の次回更新時刻に対応する領域の末尾に一括して書き込み、
前記処理対象領域の全てのレコードを処理し終えた後に、
前記書込バッファ内の全てのレコードを前記次回更新時刻の順に、前記全てのレコードの各々の次回更新時刻に対応する領域の末尾に書き込んで、前記書込バッファを空にし、
前記処理対象領域を削除することを特徴とする。
【００９６】
あるいは、本実施の形態に係る更新予告型データ管理システムは、
前記第１記憶部に接続された単一の読込バッファと、
前記第１記憶部に接続された第１及び第２の書込バッファとを備え、
前記更新要求処理部は、
前記処理対象領域からのレコードの読み込みを、前記読込バッファを介して一括して行い、
前記レコードの前記領域への書き込みを、
前記次回更新時刻が現在時刻よりも１単位だけ大きな値であれば、前記第１の書込バッファに対して行い、
前記次回更新時刻が現在時刻よりも２単位以上大きな値であれば、前記第２の書込バッファに対して行い、
前記第１の書込バッファが所定容量に達した際には、前記第１の書込バッファ内の全てのレコードを、現在時刻よりも１単位だけ大きい時刻に処理対象となる次回処理対象領域の末尾に一括して書き込み、
前記第２の書込バッファが所定容量に達した際には、前記第２の書込バッファ内の全てのレコードを、前記次回更新時刻の順に、前記全てのレコードの各々の次回更新時刻に対応する領域の末尾に一括して書き込み、
前記処理対象領域の全てのレコードを処理し終えた後に、
前記読込バッファと前記第１の書込バッファの役割を交換し、
前記第２の書込バッファ内の全てのレコードを、前記次回更新時刻の順に、前記全てのレコードの各々の次回更新時刻に対応する領域の末尾に書き込んで、前記第２の書込バッファを空にし、
前記処理対象領域を削除することを特徴とする。
【００９７】
実施の形態３．
本実施の形態について、主に実施の形態１との差異を説明する。
【００９８】
本実施の形態では、更新予告型データ管理システム１００は、実施の形態１の構成要素に加え、第１記憶部１０１及び第２記憶部１０９と異なる第３記憶部を備える。
【００９９】
更新要求処理部１０８は、第３記憶部に、更新要求１７０の属性情報１７４の内容を格納し、その格納位置を示すポインタをレコード１０３の属性情報１３４に連結してレコード１０３の更新後の値とする。例えば、属性情報１７４にＷｅｂページの収集時刻と当該時刻におけるＷｅｂページの内容を含め、レコード１０３によりキー１３１のＵＲＬに対応するＷｅｂページ内容の時系列的な変化を格納しようとする場合を考える。この場合、Ｗｅｂページの内容を直接レコード１０３に格納すると、レコード１０３が肥大化してしまうが、ポインタのみをレコード１０３に格納することで、アクセスするデータ量を削減することが可能になる。
【０１００】
以上説明したように、本実施の形態に係る更新予告型データ管理システムは、実施の形態１に係るものと異なる点として、
前記第１記憶部とは異なる第３記憶部を備え、
前記更新要求における前記キーは、ＷｅｂページのＵＲＬであり、
前記更新要求における前記レコードに対する更新内容は、時刻と、前記時刻における前記Ｗｅｂページの内容であり、
前記更新要求処理部は、
前記時刻における前記Ｗｅｂページの内容を前記第３記憶部に格納するとともに、
前記時刻と、前記時刻における前記Ｗｅｂページの内容の前記第３記憶部における格納位置とを、前記レコードに追加して前記レコードの更新後の値とすることを特徴とする。
【０１０１】
以上、本発明の実施の形態について説明したが、これらのうち、２つ以上の実施の形態を組み合わせて実施しても構わない。あるいは、これらのうち、１つの実施の形態を部分的に実施しても構わない。あるいは、これらのうち、２つ以上の実施の形態を部分的に組み合わせて実施しても構わない。
【図面の簡単な説明】
【０１０２】
【図１】実施の形態１に係るデータ管理システムの構成図である。
【図２】実施の形態１に係るデータ管理システムのハードウェア構成の一例を示す図である。
【図３】実施の形態１に係る更新要求の具体例を示す図である。
【図４】実施の形態１に係るレコードの具体例を示す図である。
【図５】実施の形態１に係るレコード索引の具体例を示す図である。
【図６】実施の形態１に係る領域索引の具体例を示す図である。
【図７】実施の形態１に係る更新要求処理部の動作を示すフローチャートである。
【図８】実施の形態１に係る検索処理部の動作を示すフローチャートである。
【図９】実施の形態２に係るデータ管理システムの構成図である。
【図１０】実施の形態２に係る更新要求処理部の動作を示すフローチャートである。
【符号の説明】
【０１０３】
１００  更新予告型データ管理システム、１０１  第１記憶部、１０２  領域、１０３  レコード、１０４  読込バッファ、１０５  書込バッファ、１０５ｘ  第１の書込バッファ、１０５ｙ  第２の書込バッファ、１０６  受信バッファ、１０７  更新要求受付部、１０８  更新要求処理部、１０９  第２記憶部、１１０  レコード索引、１１１  領域索引、１１２  検索処理部、１３１  キー、１３２  次回更新時刻、１３３  登録順、１３４  属性情報、１７０  更新要求、１７１  キー、１７２  次回更新時刻、１７３  フラグ、１７４  属性情報、２０１  キー、２０２  登録順、２１１  領域識別子、９０１  ＬＣＤ、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  ＨＤＤ、９２１  オペレーティングシステム、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2010128812.tif 000003
【図２】
2010128812.tif 000004
【図３】
2010128812.tif 000005
【図４】
2010128812.tif 000006
【図５】
2010128812.tif 000007
【図６】
2010128812.tif 000008
【図７】
2010128812.tif 000009
【図８】
2010128812.tif 000010
【図９】
2010128812.tif 000011
【図１０】
2010128812.tif 000012