(57)【特許請求の範囲】
【請求項１】
外部から受け付けたデータの更新内容と該データを特定するキーを含む更新要求を記憶する主記憶装置内の一時領域と、
前記更新要求によって更新されるデータと該データを特定するキーを含むレコードを記憶する外部記憶装置内の格納領域と、
前記格納領域に格納されているレコードのキーと一致するキーを持つ前記更新要求を記憶する外部記憶装置内の退避領域と、
新たな更新要求を前記一時領域に記憶する際に前記一時領域が不足した時、前記一時領域の更新要求に基づいて更新されるレコードが前記格納領域にある場合は、該レコードが記憶されている前記格納領域に対応する前記退避領域へ前記一時領域の更新要求を記憶して、前記一時領域から前記記憶した更新要求を削除し、前記一時領域の更新要求に基づいて更新されるレコードが前記格納領域にない場合は、前記一時領域の更新要求をレコードにして前記格納領域に記憶して、前記一時領域から前記記憶した更新要求を削除する一時領域消去部と、
所定時間単位ごとに動作し、前記格納領域のレコードのキーと一致するキーを持つ前記一時領域または前記退避領域の少なくともいずれか一方に格納されている前記更新要求に基づいて該レコードを更新し、前記更新した更新要求を削除する更新要求反映部と、
を備えたことを特徴とするデータ管理装置。
【請求項２】
前記キーを含む検索要求を受け付け、該キーで特定される前記レコードを最新の内容で応答する検索処理部を更に備え、
前記検索処理部は、前記検索要求のキーと一致する前記格納領域のレコードを検索して該レコードを取得し、該レコードとキーが一致する一時領域または退避領域の更新要求を反映して前記レコードを最新の内容にすることを特徴とする請求項１に記載のデータ管理装置。
【請求項３】
前記レコードは、現在時刻以降に前記更新要求反映部が動作する時刻を次回更新時刻として含み、
前記次回更新時刻により識別される複数の前記格納領域と、前記次回更新時刻により識別される前記格納領域に対応して前記次回更新時刻により識別される複数の前記退避領域とを備え、
前記一時領域消去部は、前記一時領域の更新要求に基づいて更新されるレコードが前記格納領域にある場合は、該レコードが記憶されている前記次回更新時刻により識別される前記格納領域に対応する前記次回更新時刻により識別される前記退避領域へ前記一時領域の更新要求を記憶し、前記一時領域から前記記憶した更新要求を削除し、前記一時領域の更新要求に基づいて更新されるレコードが前記格納領域にない場合は、前記次回更新時刻を設定し、前記設定した次回更新時刻により識別される前記格納領域に前記一時領域の更新要求をレコードにして記憶し、前記一時領域から前記記憶した更新要求を削除し、
前記更新要求反映部は、前記次回更新時刻により識別される前記格納領域単位にレコードの更新処理を行い、該レコードの更新は、更新前のレコードを記憶する第１の前記次回更新時刻により識別される第１の前記格納領域に対応して第１の前記次回更新時刻により識別される第１の前記退避領域に記憶されている更新要求に基づいて該レコードを更新し、次に該レコードのキーと一致するキーを持つ前記一時領域の更新要求に基づいて前記格納領域のレコードを更新し、該更新したレコードを第２の次回更新時刻により識別される第２の前記格納領域に記憶し、前記第１の次回更新時刻により識別される第１の前記格納領域のレコードが全て更新されると、前記第１の前記格納領域のレコードと前記第１の前記退避領域の更新要求を削除することを特徴とする請求項１または請求項２に記載のデータ管理装置。
【請求項４】
前記更新要求は、前記更新要求を受け付けた受付時刻を含み、
前記レコードは、該レコードのキーと一致するキーを持つ前記更新要求の受付時刻の履歴情報を含み、
前記更新要求反映部は、現在時刻に前記受付時刻の履歴情報に基づいて算出した平均更新周期を加えて前記次回更新時刻とし、前記レコードを前記退避領域の更新要求で更新する際に前記更新要求の受付時刻順に更新し、更新する際に前記レコードに該次回更新時刻を記憶することを特徴とする請求項３に記載のデータ管理装置。
【請求項５】
前記格納領域のレコードに対応する更新要求を最初に受け付けた順の登録順と該レコードのキーとを対応付けて記憶するレコード索引と、
前記次回更新時刻により識別される複数の前記格納領域から前記レコードが記憶される前記格納領域を識別する領域識別子を前記登録順が示す配列に記憶する領域索引を更に備え、
前記レコードは前記登録順を含み、
前記一時領域消去部は、前記一時領域の更新要求のキーが前記レコード索引に存在する場合は、前記領域索引の領域識別子を参照して、前記キーで特定されるレコードを記憶する前記格納領域の前記領域識別子を求め、前記領域識別子で識別される格納領域に対応する前記次回更新時刻により識別される前記退避領域に前記一時領域の更新要求を記憶して、前記一時領域から前記記憶した更新要求を削除し、前記一時領域の更新要求のキーが前記レコード索引に存在しない場合は、前記一時領域の更新要求をレコードにして前記次回更新時刻により識別される前記格納領域に記憶し、前記更新要求のキーと記憶した新しい登録順を対応付けて前記レコード索引に追加し、記憶した前記次回更新時刻により識別される前記格納領域の前記領域識別子を前記領域索引に追加し、前記一時領域から前記記憶した更新要求を削除し、
前記更新要求反映部は、更新したレコードを記憶する前記第２の次回更新時刻により識別される前記格納領域の領域識別子を前記領域索引の前記新しい登録順が示す配列に記憶することを特徴とする請求項３または請求項４に記載のデータ管理装置。
【請求項６】
前記次回更新時刻により識別される格納領域に対応して、前記次回更新時刻により識別される格納領域に記憶されるレコードを記憶する前記次回更新時刻により識別される複数の書込バッファを更に備え、
前記一時領域消去部は、前記一時領域の更新要求に基づいて更新されるレコードが前記格納領域にない場合は、前記次回更新時刻により識別される前記格納領域に対応する前記次回更新時刻により識別される前記書込バッファに前記一時領域の更新要求をレコードにして記憶し、前記一時領域から前記記憶した更新要求を削除し、前記書込バッファの容量が所定値になると前記次回更新時刻により識別される前記書込バッファのレコードを対応する前記次回更新時刻により識別される前記格納領域に記憶し、前記書込バッファから前記記憶したレコードを削除し、
前記更新要求反映部は、前記第２の次回更新時刻により識別される前記格納領域に対応する前記第２の次回更新時刻により識別される前記書込バッファに更新したレコードを追記し、前記書込バッファの容量が所定値になると前記次回更新時刻により識別される前記書込バッファのレコードを該書込バッファに対応する前記次回更新時刻により識別される前記格納領域に記憶することを特徴とする請求項３〜５のいずれか一項に記載のデータ管理装置。
【請求項７】
前記レコードは、前記レコードのキーに任意のハッシュ関数を適用した値に基づいて前記格納領域に記憶し、
前記一時領域消去部は、前記一時領域の前記更新要求のキーにハッシュ関数を適用した値に基づいて前記退避領域に該更新要求を記憶して、前記一時領域から前記記憶した更新要求を削除し、
前記更新要求反映部は、所定時間単位に前記格納領域の先頭から前記レコードを読出し、該レコードのキーと一致するキーを持つ前記一時領域または前記退避領域の少なくともいずれか一方に格納される更新要求に基づいて該レコードを更新し、前記格納領域に存在しないレコードのキーを持つ前記退避領域の前記更新要求をレコードにして前記格納領域に記憶することを特徴とする請求項１または請求項２に記載のデータ管理装置。
【請求項８】
外部から受け付けたデータの更新内容と該データを特定するキーを含む更新要求を記憶する主記憶装置内の一時領域と、
前記キーで特定されるレコードまたは前記更新要求はそれぞれのデータの形式を識別する情報であるデータ形式を含み、前記レコードまたは更新要求の少なくともいずれか一方を記憶する外部記憶装置内の格納領域と、
新たな更新要求を前記一時領域に記憶する際に前記一時領域が不足した時、前記一時領域の更新要求のキーと一致するキーを持つレコードまたは更新要求が記憶されている格納領域に、前記一時領域の更新要求を記憶し、前記一時領域から前記記憶した更新要求を削除する一時領域消去部と、
所定時間単位に前記格納領域の先頭から同一キーの前記レコードと前記更新要求を検出し、前記データ形式に基づいて前記レコードと前記更新要求に分離して、前記分離したレコードのキーと一致するキーを持つ前記一時領域の更新要求または前記分離した更新要求の少なくともいずれか一方に基づいて該レコードを更新し、前記更新した更新要求を削除する更新要求反映部と、
を備えることを特徴とするデータ管理装置。
【請求項９】
データを特定するキーを含むレコードが外部記憶装置内の格納領域に記憶され、外部から受け付けるデータの更新内容に基づいて前記レコードを更新するデータ管理装置のデータ管理方法において、
前記データ管理装置の更新要求受付部が、外部から受け付けたデータの更新内容と該データを特定するキーを含み、主記憶装置内の一時領域に記憶する更新要求を受け付ける更新要求受付ステップと、
前記データ管理装置の一時領域消去部が、新たな更新要求を前記一時領域に記憶する際に前記一時領域が不足した時、前記更新要求に基づいて更新されるレコードが前記格納領域にある場合は、該レコードが格納されている前記格納領域に対応する退避領域へ前記一時領域の更新要求を記憶して、前記一時領域から前記記憶した更新要求を削除し、前記一時領域の更新要求によって更新されるレコードが前記格納領域にない場合は、前記一時領域の更新要求をレコードにして前記格納領域に記憶して、前記一時領域から前記記憶した更新要求を削除する一時領域消去ステップと、
前記データ管理装置の更新要求反映部が、所定時間単位ごとに動作し、前記格納領域のレコードのキーと一致するキーを持つ前記一時領域または退避領域の少なくともいずれか一方に格納される前記更新要求に基づいて該レコードを更新し、前記更新した更新要求を削除する更新要求反映ステップと、
を備えたことを特徴とするデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、更新要求に応じて記憶部のデータを更新、検索するデータ管理装置及びデータ管理方法に関するものである。
【背景技術】
【０００２】
多数のレコードを管理するデータ管理装置においては、主記憶部に比べて低速な二次記憶部に対するアクセスの効率化が重要である。各レコードに対する外部からの更新要求を、二次記憶上のデータに反映するためには、二次記憶から更新前のデータを読み出し、更新を反映し、再び二次記憶に書き込む必要がある。
【０００３】
これに対し、更新要求を直ちに外部記憶装置（二次記憶部）上のデータに反映せずにメモリ（主記憶部）に蓄えておき、レコードの検索要求があった時には、外部記憶装置から更新前のデータを読み出し、メモリ上の更新要求をその時点で反映させて更新後のデータを作成・応答する方式が知られている（例えば、特許文献１参照）。当該方式では、メモリの容量が許す限り、外部記憶装置へのアクセスなしに更新要求を受け付けることができるため、高い更新スループットを実現することが可能である。
【０００４】
現在の主要な外部記憶装置は磁気ディスク装置である。この磁気ディスク装置には、連続なアドレスに対するアクセス（シーケンシャルアクセス）の速度が２００ＭＢ／ｓまでであるのに対して、不連続なアドレスに対するアクセス（ランダムアクセス）の速度は数ＭＢ／ｓと著しく低い特性がある。
【０００５】
そこで、この外部記憶装置（二次記憶部）の性能特性を利用して外部記憶装置へのアクセス自体を高速化するシステムが開示されている（特許文献２参照）。
当該システムでは、システム自体が決定した更新時刻に基づいて管理するデータの各レコードを外部記憶装置上に配置し、更新時刻に基づいて更新対象レコードを読出すことでシーケンシャルアクセスとなり、外部記憶装置へのアクセスを高速化している。
【０００６】
【特許文献１】特開１０−３１６０２号公報
【特許文献２】特開２００９−２２３５０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来のデータ管理装置では、特許文献１に記載のように、二次記憶装置へのアクセスを回避することで高速化を図っている。しかし、更新要求の発生頻度が高く、メモリが不足する場合には、メモリ上に蓄積された更新要求を外部記憶装置上のデータに反映するための外部記憶装置へのアクセスが不可避となり、その効果が損なわれてしまう。
一方、特許文献２に記載の方式は、システム自身が各レコードの更新時刻を決定することで、外部記憶装置へのアクセスをシーケンシャルにすることができ高速化が可能となるが、単独では外部からの要求に基づく更新処理に適さない。
【０００８】
また、特許文献１と特許文献２の方式を組み合わせ、メモリに蓄積した更新要求をシステムが決定したタイミングで外部記憶装置に反映することで、外部からの更新要求を受け付けることが可能になる。しかし、外部からの更新要求が頻繁に発生するような場合には、外部記憶装置に反映されていない更新要求が主記憶に蓄積され、主記憶が不足すると、直ちに外部記憶装置への更新要求の反映が必要になる。そうなると、ランダムアクセスによる外部記憶装置への書き込みが発生して、外部記憶装置へのアクセスの高速化の効果が損なわれてしまう。
【０００９】
この発明は、上記のような課題を解決するためになされたもので、外部からの更新要求を受け付けるデータ管理装置において、外部記憶装置へのアクセスをシーケンシャルにすることにより、データの更新または検索を高速化することを目的とする。
【課題を解決するための手段】
【００１０】
この発明に係るデータ管理装置は、外部から受け付けたデータの更新内容と該データを特定するキーを含む更新要求を記憶する主記憶装置内の一時領域と、前記更新要求によって更新されるデータと該データを特定するキーを含むレコードを記憶する外部記憶装置内の格納領域と、前記格納領域に格納されているレコードのキーと一致するキーを持つ前記更新要求を記憶する外部記憶装置内の退避領域と、新たな更新要求を前記一時領域に記憶する際に前記一時領域が不足した時、前記一時領域の更新要求に基づいて更新されるレコードが前記格納領域にある場合は、該レコードが記憶されている前記格納領域に対応する前記退避領域へ前記一時領域の更新要求を記憶して、前記一時領域から前記記憶した更新要求を削除し、前記一時領域の更新要求に基づいて更新されるレコードが前記格納領域にない場合は、前記一時領域の更新要求をレコードにして前記格納領域に記憶して、前記一時領域から前記記憶した更新要求を削除する一時領域消去部と、所定時間単位ごとに動作し、前記格納領域のレコードのキーと一致するキーを持つ前記一時領域または前記退避領域の少なくともいずれか一方に格納されている更新要求に基づいて該レコードを更新し、前記更新した更新要求を削除する更新要求反映部とを備えたものである。
【発明の効果】
【００１１】
この発明は、外部からの更新要求を記憶する一時領域が不足した時に、データを記憶する外部記憶装置内の格納領域に対応する外部記憶装置内の退避領域に一時領域の更新要求を記憶して、一時領域の更新要求を削除することにより、一時領域の空き領域を確保するので、データの更新または検索を高速化することができる。
【図面の簡単な説明】
【００１２】
【図１】この発明の実施の形態１におけるデータ管理装置１の構成図である。
【図２】この発明の実施の形態１における更新要求メッセージ１ａの形式を示す図である。
【図３】この発明の実施の形態１における更新要求１の形式を示す図である。
【図４】この発明の実施の形態１における退避領域３の形式を示す図である。
【図５】この発明の実施の形態１における格納領域５に格納されるレコード４の形式を示す図である。
【図６】この発明の実施の形態１におけるレコード索引６の形式を示す図である。
【図７】この発明の実施の形態１における領域索引８の形式を示す図である。
【図８】この発明の実施の形態１における更新要求受付部９の動作を示すフロー図である。
【図９】この発明の実施の形態１における一時領域消去部１０の動作を示すフロー図である。
【図１０】この発明の実施の形態１における更新要求反映部１１の動作を示すフロー図である。
【図１１】この発明の実施の形態１における検索処理部１５の動作を示すフロー図である。
【発明を実施するための形態】
【００１３】
実施の形態１．
図１はこの発明の実施の形態に係るデータ管理装置の構成図である。
図１において、データ管理装置Ａは、外部から受け取るデータの更新内容である更新要求メッセージ１ａ、更新要求メッセージ１ａに受付時刻などの情報を付加した更新要求１、更新要求１を一時的に格納する主記憶装置内の一時領域２、一時領域２が不足した時に一時領域２の更新要求１を退避させる外部記憶装置内の複数の退避領域３ａ〜３ｃ（それぞれ時刻ｔ〜ｔ＋ｎに対応）、更新要求１に次回更新時刻等の情報を付加した更新要求１ごとの情報であるレコード４、複数のレコード４を外部記憶装置内に格納し次回更新時刻で識別される複数の格納領域５ａ〜５ｃ（それぞれ時刻ｔ〜ｔ＋ｎに対応）、更新要求１の更新対象レコードを特定するキーと更新要求１を最初に受け付けて格納領域５ａ〜５ｃのいずれかに登録した登録順の組を格納したレコード索引６、更新要求１を格納領域５ａ〜５ｃのいずれかに格納した最終の登録順を記憶する最終登録順７、格納領域５ａ〜５ｃのいずれかに格納される各レコード４の登録順の値が示す配列に次回更新時刻で識別される格納領域５ａ〜５ｃのいずれかを識別する領域識別子を記憶する領域索引８、更新要求メッセージ１ａを受け付けて受付時刻などの情報を付加し更新要求１として一時領域２に格納する更新要求受付部９、一時領域２の空き領域を作る一時領域消去部１０、所定時間ごとに対応する次回更新時刻で識別される格納領域５ａ〜５ｃのいずれかのレコード４をバッファに読み込み、一時領域２または所定時間に対応する次回更新時刻で識別される退避領域３ａ〜３ｃのいずれかに格納されている更新要求１の更新内容を取得してレコード４の内容を更新する更新要求反映部１１、更新要求反映部１１によって更新されるレコード４が格納されている格納領域５ａ〜５ｃのいずれかと対応する退避領域３ａ〜３ｃのいずれかの更新要求１が読み込まれる読み込みバッファ１２、更新要求反映部１１によって更新されるレコード４が格納されている格納領域５ａ〜５ｃのいずれかのレコード４が読み込まれる読込バッファ１３、更新要反映部１１がデータ更新を行う時間単位に格納領域５ａ〜５ｃと１対１に対応し、格納領域５ａ〜５ｃ毎に書き込みをまとめて行う可変容量の書込バッファ１４ｂ〜１４ｃ（それぞれ時刻ｔ＋１〜ｔ＋ｎに対応）、データ管理装置Ａの利用者から検索要求１５を受け取ると格納領域５ａ〜５ｃと書込バッファ１４ｂ〜１４ｃを検索してレコード４を抽出し、一時領域２と退避領域３ａ〜３ｃの更新情報である更新要求１を反映させたレコード４を検索応答１６として応答する検索処理部１７から構成される。
【００１４】
また、データ管理装置Ａは一般的なコンピュータを用い、退避領域３ａ〜３ｃ、格納領域５ａ〜５ｃ、及びレコード索引６を磁気ディスク装置で、一時領域２、最終登録順７、領域索引８、読込バッファ１２及び１３、及び書込バッファ１４ｂ〜１４ｃをランダムアクセスメモリで、更新要求受付部９、一時領域消去部１０、更新要求反映部１１、及び検索処理部１５をランダムアクセスメモリに格納されプロセッサで実行されるコンピュータプログラムとして、それぞれ実現することができる。
【００１５】
また、退避領域３ａ〜３ｃ、格納領域５ａ〜５ｃ、レコード索引６は、ＬｉｎｕｘやＷｉｎｄｏｗｓ（登録商標）等の一般的なオペレーティングシステムが提供するファイルとして実現することができる。
さらに、更新要求受付部９および検索処理部１７はＬＡＮ等の通信回線を介して要求元と更新要求メッセージ１ａや検索要求１５および検索応答１６の授受を行うことができる。
【００１６】
図２は、更新要求受付部９がデータ管理装置Ａの外部から受け取る更新要求メッセージ１ａの形式を示したものである。
更新要求メッセージ１ａは、更新する対象のレコード４（更新対象レコード）を特定するキー１０１ａとレコード４の更新内容である属性更新情報１０２ａからなる。
【００１７】
また、図３は、一時領域２に格納される更新要求１の形式を示したものである。
更新要求１はキー１０１、属性更新情報１０２、受付時刻１０３、最終受付時刻１０４、及び受付回数１０５からなる。
そして、更新要求１のそれぞれの値は、更新要求受付部９が更新要求メッセージ１ａを受け付けた際に付与される。キー１０１に当該更新要求メッセージ１ａのキー１０１ａ、属性更新情報１０２に更新要求メッセージ１ａの属性更新情報１０２ａ、受付時刻１０３と最終受付時刻１０４に現在時刻、及び受付回数１０５に１がそれぞれ付与される。
【００１８】
更新要求１が格納されている一時領域２は、公知の赤黒木（参考文献：ロバート・セジウィック著、野下ほか訳、アルゴリズムＣ＋＋、ＩＳＢＮ  ９７８−４７６４９０２２２０など）等、ランダムアクセスメモリ上の検索構造を用い、キー１０１に基づく探索及びキー１０１の昇順アクセスを効率良く実現できるように構成する。
【００１９】
図４は、退避領域３ａ〜３ｃのそれぞれの形式を示す図である。
退避領域３ａ〜３ｃは、複数の更新要求１を先頭から順（時系列）に格納したものとなっている。
退避領域３ａ〜３ｃのそれぞれに新たに更新要求１を追加格納する際には、末尾に必要な記憶領域が割り当てられ、更新要求１の内容が書き込まれる。このような動作は、退避領域３ａ〜３ｃのそれぞれをファイルとして実現し、逐次的に更新要求１を書き込むことで実現される。
また、次回更新時刻により識別される退避領域３ａ〜３ｃは、同じ次回更新時刻により識別される格納領域５ａ〜５ｃに対応する。
【００２０】
図５は、格納領域５ａ〜５ｃに格納されるレコード４の形式を示したものである。
レコード４はキー４０１、属性情報４０２、次回更新時刻４０３、登録順４０４、平均更新周期４０５、最終更新時刻４０６、更新回数４０７、及び作成時刻４０８からなる。
登録順４０４には、レコード索引６に格納されている登録順と同じで、更新要求１が最初にレコード４として格納領域に登録された時の最終登録順７が格納されている。
【００２１】
そして、次回更新時刻４０３が同じレコード４は、次回更新時刻４０３により識別される格納領域５ａ〜５ｃ毎に記憶されている。この次回更新時刻４０３により識別される格納領域５ａ〜５ｃを識別する値が、後述する領域索引８に領域識別子８０１として格納されている。
また、格納領域５ａ〜５ｃは、図４の退避領域３ａ〜３ｃと同様、複数のレコード４を先頭から順に格納した形式を持つ。
【００２２】
ここで、格納領域５ａ〜５ｃのキー４０１と属性情報４０２に関するデータの登録と更新について述べる。
まず、データ管理装置Ａにおけるデータの登録（更新要求１を格納領域５ａ〜５ｃのいずれかのレコード４として格納する際に、キー４０１と属性情報４０２に登録するデータ）は、実施の形態１では、Ｗｅｂページ毎に当該Ｗｅｂページへのハイパーリンクを含むＷｅｂページの集合を管理する用途を例にして述べるため、以下のようになる。
【００２３】
Ｗｅｂページの集合を管理する場合、Ｗｅｂページを収集するつど、このＷｅｂページの参照元Ｗｅｂページの集合が更新されるように、収集したＷｅｂページに含まれるハイパーリンク毎に作成された更新要求メッセージ１ａがデータ管理装置Ａに送付される。この時、更新要求メッセージ１ａのキー１０１ａにハイパーリンク先ＵＲＬ、更新要求メッセージ１ａの属性更新情報１０２ａに参照元ＷｅｂページのＵＲＬが格納される。
【００２４】
そして、データ管理装置Ａでは、送付されたハイパーリンク先ＵＲＬ（キー１０１ａ）を次回更新時刻が同じ格納領域５ａ〜５ｃのいずれかのキー４０１に登録し、参照元ＷｅｂページのＵＲＬ（属性更新情報１０２ａ）を属性情報４０２に登録する。
このようにハイパーリンク先ＵＲＬをキーとして、リンク元ページのＵＲＬを管理するデータの管理を、大規模なＷｅｂ情報の収集と並行して実施すると高い更新負荷となる。しかし、このデータ管理装置Ａでのデータの管理によれば、高い更新負荷に追随し、高い更新性能を維持することができる。
【００２５】
次に、データ管理装置Ａにおけるデータの更新は、更新要求メッセージ１ａのキー１０１ａと同じ値のキー４０１を持つレコード４の属性情報４０２に更新要求メッセージ１ａの属性更新情報１０２ａを反映することで行われる。
一般的に、格納領域５ａ〜５ｃのレコード４の属性情報４０２に更新要求メッセージ１ａの属性更新情報１０２ａを反映する方法には、データ管理装置Ａの用途に応じて例えば次の様な方法が考えられる。
【００２６】
（１）単純に格納領域５ａ〜５ｃのレコード４の各キーに対応する最新の属性情報を保持することが目的の場合、属性情報４０２を属性更新情報１０２ａで上書きする。
（２）格納領域５ａ〜５ｃのレコード４のキー４０１毎の属性情報４０２の集合を保持することが目的の場合、格納領域５ａ〜５ｃのレコード４の属性情報４０２の値に更新要求メッセージ１ａの属性更新情報１０２ａの値を連結する。
（３）格納領域５ａ〜５ｃのレコード４のキー４０１毎の属性情報４０２の統計値を保持することが目的の場合、格納領域５ａ〜５ｃのレコード４の属性情報４０２の値と更新要求メッセージ１ａの属性更新情報１０２ａの値の間で何らかの演算（例えば加算）を行う。
本実施の形態１では、（２）の方法となる。
【００２７】
図６は、レコード索引６の形式を示したものである。
レコード索引６は、キー６０１と登録順６０２の組を複数格納したものである。各組はキー６０１の昇順に格納される。
更新要求１によりデータ管理装置Ａに新たなキー１０１が追加される都度、当該キー１０１と、最終登録順７から採番した登録順６０２の組がレコード索引６に格納される。
この時、レコード索引６に格納される最終登録順７から採番した登録順６０２は、キー１０１と同じキー４０１を持つ格納領域５ａ〜５ｃのレコード４の登録順４０４と同じである。
【００２８】
図７は、領域索引８の形式を示したものである。
領域索引８は、レコード索引６の登録順６０２（更新要求１がレコード４として格納領域５ａ〜５ｃに登録された順）に、格納領域５ａ〜５ｃのいずれかを識別する領域識別子８０１が格納されている。
領域識別子８０１は、図１の更新要求反映部１１が退避領域３ａ〜３ｃ及び格納領域５ａ〜５ｃを識別する値であり、実施の形態１でのその値は、更新要求反映部１１が処理する所定時間単位の時刻（次回更新時刻）である。
【００２９】
領域索引８は、更新要求反映部１１が格納領域５ａ〜５ｃのいずれかを更新する度に次回更新時刻４０３を更新し、新たに領域識別子８０１を設定するので、頻繁かつランダムに更新される。そのため、コンピュータのランダムアクセスメモリを用いて実現することが最適であり、必要な容量を削減するため、領域識別子８０１は小さな整数で表現することが求められる。
一方、領域索引８の内容はデータ管理装置Ａが停止している期間も保持される必要がある。そのため、停止時にはランダムアクセスメモリから磁気ディスク装置に退避されるものとする。
同様に、図１の最終登録順７の値も通常はランダムアクセスメモリに保持し、停止時に磁気ディスク装置に退避することが望ましい。
【００３０】
次に、動作についてフローチャートを用いて説明する。
図８は、更新要求受付部９の動作を示すフローチャートである。
まず、ステップＳ９１で、受け取った更新要求メッセージ１ａのキー１０１ａと同一のキー１０１を持つ更新要求１を一時領域２から検索する。
キー１０１を持つ更新要求１が一時領域２に存在する場合は、ステップＳ９５に進み、存在しない場合はステップＳ９２に進む。
【００３１】
ステップＳ９２では、新たな更新要求１を一時領域２に書き込むための空き領域が存在するかどうか確認する。
空き領域が存在する場合は、ステップＳ９４に進み、空き領域が存在しない場合は、ステップＳ９３に進む。
【００３２】
ステップＳ９３では、一時領域消去部１０を呼び出し、一時領域２の内容を退避領域３ａ〜３ｃに格納して一時領域２の空き領域を回復させる。なお、一時領域消去部１０の詳細な動作は後述する。
【００３３】
ステップＳ９４では、受け取った更新要求メッセージ１ａのキー１０１ａを更新要求１のキー１０１に、更新要求メッセージ１ａの属性更新情報１０２ａを更新要求１の属性更新情報１０２に、現在時刻を更新要求１の受付時刻１０３及び最終受付時刻１０４に、更新要求１の受付回数１０５に１をそれぞれ設定する。
そして、この様に設定した新たな更新要求１を一時領域に格納し、終了する。
即ち、ステップＳ９４では、更新要求メッセージ１ａの内容を新たな更新要求１として一時領域２に格納する。
【００３４】
一方、ステップＳ９５では、ステップＳ９１で受け取った更新要求メッセージ１ａのキー１０１ａと同一のキー１０１を持つ一時領域２の更新要求１に、受け取った更新要求メッセージ１ａのマージ処理を行う。
具体的には、まず、更新要求１の属性更新情報１０２に更新要求メッセージ１ａの属性更新情報１０２ａを、用途に応じて上書き（置換）、連結、集計等して併合する。
さらに、更新要求１の最終受付時刻１０４に現在時刻を設定し、受付回数１０５に１を加える。これにより、一時領域２の更新要求１は過去に受け取った更新要求メッセージ１ａと新たに受け取った更新要求メッセージ１ａを合わせた情報を持つことになる。
【００３５】
図９は、一時領域消去部１０の動作を示すフローチャートである。
一時領域消去部１０は、更新要求受付部９が更新要求１を一時領域２に書き込む際に、書き込むための空き領域がない場合に、一時領域２に空き領域を作るために以下の処理を行う。
（１）格納領域５ａ〜５ｃに、一時領域２のキー１０１と同じキー４０１のレコード４を持つ場合
（１−１）一時領域２と既存のレコード索引６と領域索引８から新規レコード索引６
を作成する。
（１−２）一時領域２の更新要求１を退避領域３ａ〜３ｃに書き出す。
（２）格納領域５ａ〜５ｃに、一時領域２のキー１０１と同じキー４０１のレコード４がない場合
（２−１）一時領域２の更新要求１をレコード４の形式にし、格納領域５ａ〜５ｃに書き出す。
（２−２）最終登録順７と領域索引８の更新を行う。
【００３６】
これらの処理を行って一時領域２の更新要求１を削除することで、一時領域の空きを作成する。
（２−１）の実際の処理では、一時領域２の更新要求１をレコード４の形式にして書込バッファ１４ｂ〜１４ｃに書き出し、書込バッファ１４ｂ〜１４ｃの総容量が所定値を超えると書込バッファ１４ｂ〜１４ｃのレコード４が格納領域５ａ〜５ｃにまとめて書き出される。
【００３７】
以下、一時領域消去部１０の処理の詳細を述べる。
始めに、ステップＳ１０１において、新規レコード索引６として空のレコード索引を作成する。
続いて、ステップＳ１０２で、一時領域２の要素を示すポインタ変数ｐが一時領域２の先頭要素を指すように、また、レコード索引６の要素を示すポインタ変数ｑが既存のレコード索引６の先頭要素を指すように設定する。
尚、一時領域２は、キー１０１の昇順に要素（更新要求１）を取り出すことができるよう構成されているものとする。
【００３８】
次に、ステップＳ１０３で、一時領域２の要素を示すポインタ変数ｐが指す更新要求１のキー１０１（ｐ．ｋｅｙ）と、既存のレコード索引６の要素を示すポインタ変数ｑが指すキー６０１（ｑ．ｋｅｙ）の比較を行う。
そして、ｐ．ｋｅｙ＜ｑ．ｋｅｙの場合（更新要求１のキーが既存のレコード索引６に存在しない場合）またはｑが有効範囲外の場合（既存のレコード索引６が空の場合、または既存のレコード索引６の要素を示すポインタ変数ｑが既存のレコード索引６の末尾に達した場合）は、ステップＳ１０４に進む。
【００３９】
また、ｐ．ｋｅｙ＝ｑ．ｋｅｙの場合（更新要求１のキーが既存のレコード索引６に存在する場合）は、ステップＳ１１０に進む。
また、ｐ．ｋｅｙ＞ｑ．ｋｅｙの場合（一時領域２に存在しないキーが既存のレコード索引６に存在する場合）、またはｐが有効範囲外（一時領域２の要素を示すポインタ変数ｐが既に一時領域２の末尾に達した場合）は、ステップＳ１１４に進む。
【００４０】
次に、ステップＳ１０４以降の概略処理を説明する。
ステップＳ１０４以降の処理は、更新要求１のキーが既存のレコード索引６に存在しない場合、または既存のレコード索引６の要素を示すポインタ変数ｑが既存のレコード索引６の末尾に達した場合の処理である。そのため、一時領域２の更新要求１のキー１０１を新たに新規レコード索引６に追記し、一時領域２の更新要求１を格納する格納領域５ａ〜５ｃのいずれかを識別する領域識別子８０１を領域索引８に追記する。更に、一時領域２の更新要求１をレコード形式にして次回更新時刻以降の格納領域５ａ〜５ｃのいずれかに書込バッファ１４ｂ〜１４ｃのいずれかを介して格納し、格納領域５ａ〜５ｃのいずれかに格納した一時領域２の更新要求１を削除して、一時領域２の空き領域を作る処理を行う。
【００４１】
以下ステップＳ１０４以降の処理を詳細に説明する。
ステップＳ１０４で、最終登録順７に１を加えて更新する。
続いて、ステップＳ１０５では、一時領域２の要素を示すポインタ変数ｐが指す更新要求１のキー１０１（ｐ．ｋｅｙ）と、更新後の最終登録順７の値を組にして、新規レコード索引６の末尾に追記する。
次に、新たなレコード４の格納領域５ａ〜５ｃへの格納位置（格納領域５ａ〜５ｃのいずれかの領域識別子８０１）を領域索引８に設定する処理をステップＳ１０６とステップＳ１０７で行う。
【００４２】
まず、ステップＳ１０６で、現在時刻から所定時間後の時刻（現在時刻以降に更新要求反映部１１が動作する予定時刻のいずれか１つの時刻である次回更新時刻）により識別される格納領域５ａ〜５ｃのいずれかを識別する領域識別子８０１を一時的に変数ｒとして記憶する。
【００４３】
続いて、ステップＳ１０７で、更新後の最終登録順７の登録順の値をｎとすると、領域索引８の先頭から第ｎ番目の要素（領域識別子８０１）に先の変数ｒの値を設定する。
即ち、最終登録順７に対応する領域索引８の要素に、現在時刻から所定時間後の時刻により識別される格納領域５ａ〜５ｃのいずれかの領域識別子８０１を設定する。
【００４４】
また、ステップＳ１０８では、一時領域２の要素を示すポインタ変数ｐが指す更新要求１をレコード形式にして、変数ｒに対応する書込バッファ１４ｂ〜１４ｃのいずれかに追記し、一時領域２の要素を示すポインタ変数ｐが指す更新要求１を一時領域２から削除し、一時領域２の空き領域を確保する。
【００４５】
書込バッファ１４ｂ〜１４ｃのデータ形式は、格納領域５ａ〜５ｃと同じであり、各書込バッファ１４ｂ〜１４ｃは、次回更新時刻により識別される。
書込バッファ１４ｂ〜１４ｃのいずれかに追記する具体的な内容は、一時領域２の要素を示すポインタ変数ｐが指す更新要求１のキー１０１（ｐ．ｋｅｙ）、属性更新情報１０２、受付時刻１０３、最終受付時刻１０４、受付回数１０５から１引いた値を、書込バッファ１４ｂ〜１４ｃのいずれかのキー４０１、属性情報４０２、作成時刻４０８、最終更新時刻４０６、更新回数４０７に設定し（更新回数＝受付回数−１）、最終登録順７の値を登録順４０４に、現在時刻に上記所定時間を加えた時刻を次回更新時刻４０３に設定する。
【００４６】
平均更新周期４０５は、更新回数４０７が０より大きければ、
（最終更新時刻４０６−作成時刻４０８）／更新回数４０７
とし、そうでなければ０とする。
更新要求１をレコード形式にして書込バッファ１４ｂ〜１４ｃのいずれかに追記する際に、新たなレコード４を書込む容量を確保できなくなると、各書込バッファ１４ｂ〜１４ｃのいずれかの内容を、それぞれの書込バッファ１４ｂ〜１４ｃに対応する格納領域５ｂ〜５ｃのいずれかの末尾にまとめて書き込む処理を行う。
【００４７】
即ち、新たなレコード４を書込もうとした書込バッファ１４ｂ〜１４ｃの総容量が所定値を超えた場合に、次回更新時刻により識別される各書込バッファ１４ｂ〜１４ｃの内容を同じ次回更新時刻により識別される各格納領域５ｂ〜５ｃの末尾にまとめて書き込まれる。
このように、各書込バッファ１４ｂ〜１４ｃに対応する各格納領域５ｂ〜５ｃに書き込むことで各書込バッファ１４ｂ〜１４ｃを空にする。
続いてステップＳ１０９で一時領域２の要素を示すポインタ変数ｐを１要素分進め、ステップＳ１１６に進む。
【００４８】
次に、ステップＳ１１０以降の処理の説明に戻る。
ステップＳ１１０以降の処理は、更新要求１のキー１０１と同じキー６０１が既存のレコード索引６に存在する（格納領域５ａ〜５ｃにキー１０１と同じキー４０１を持つレコードが存在する）時の処理である。そのため、既存のレコード索引６の内容を新規レコード索引に追記して、更新要求１の内容を退避領域３ａ〜３ｃに退避させ、一時領域２の更新要求１を削除して、一時領域２の空き領域を作る処理を行う。
【００４９】
以下ステップＳ１１０以降の処理を詳細に説明する。
ステップＳ１１０では、既存のレコード索引６の要素を示すポインタ変数ｑが指すレコード索引６の内容（キー６０１と登録順６０２の組）を新規レコード索引６の末尾に追記する。
次に、ステップＳ１１１で、既存のレコード索引６の要素を示すポインタ変数ｑが指す登録順６０２の値をｎとし、領域索引８の先頭から第ｎ番目の要素（領域識別子８０１）を変数ｒに設定する。この変数ｒは、更新要求１のキー１０１と同じキー４０１のレコード４が存在する格納領域５ａ〜５ｃのいずれかを識別する領域識別子８０１を示す。
【００５０】
続いて、ステップＳ１１２で、変数ｒに対応する退避領域３ａ〜３ｃのいずれかに、一時領域２の要素を示すポインタ変数ｐが指す更新要求１を追記し、退避領域３ａ〜３ｃのいずれかに追記した一時領域２の要素を示すポインタ変数ｐが指す更新要求１を一時領域２から削除し、一時領域２の空き領域を確保する。
続いてステップＳ１１３、で一時領域２の要素を示すポインタ変数ｐ及び既存のレコード索引６の要素を示すポインタ変数ｑをそれぞれ１要素分進め、ステップＳ１１６に進む。
【００５１】
次に、ステップＳ１１４以降の処理の説明に戻る。
ステップＳ１１４以降の処理は、一時領域２に存在しないキーが既存のレコード索引６に存在する場合、または一時領域２の要素を示すポインタ変数ｐが既に一時領域２の末尾に達した場合の処理であり、既存のレコード索引６の内容を新規レコード索引６に追記する処理を行う。
【００５２】
詳細には、既存のレコード索引６の要素を示すポインタ変数ｑが指すレコード索引６の内容（キー６０１と登録順６０２の組）を新規レコード索引６の末尾に追記する。
ステップＳ１１４以降の処理では、一時領域２に関しての処理は行わない。
続いてステップＳ１１５で、ｑを１要素分進め、ステップＳ１１６に進む。
【００５３】
ステップＳ１１６は、ステップＳ１０９またはステップＳ１１３またはステップＳ１１５の次に処理され、ｐが一時領域２の末尾に達し、且つ、ｑが既存のレコード索引６の末尾に達しているか否かを判断する。
条件が成立しない場合（ｐまたはｑが末尾に達していない場合）は、未処理のデータがあるため、ステップＳ１０３に戻る。
【００５４】
ここで、ステップＳ１０９を経由してステップＳ１０３に戻った場合は、ポインタ変数ｐのみが１要素分進んだ一時領域２の要素を指し、ステップＳ１１５を経由してステップＳ１０３に戻った場合は、ポインタ変数ｑのみが１要素分進んだ既存のレコード索引６の要素を指している。
また、ステップＳ１１３を経由してステップＳ１０３に戻った場合には、ポインタ変数ｐとポインタ変数ｑどちらも１要素分進んだ一時領域２の要素、１要素分進んだ既存のレコード索引６の要素を指している。
ステップＳ１０３以降の処理は前述と同様である。
【００５５】
一方、ステップＳ１１６で、条件が成立する場合（ｐとｑが末尾に達した場合）は、ステップＳ１１７に進み、既存の（元の）レコード索引６を削除して、新規レコード索引６をレコード索引６とし、終了する。
【００５６】
図１０は、更新要求反映部１１の動作を示すフローチャートである。
更新要求反映部１１では、所定時間単位ごとに対応する次回更新時刻で識別される格納領域５ｂ〜５ｃのいずれかと退避領域３ａ〜３ｃのいずれかを読込バッファに読み込み、格納領域５ｂ〜５ｃのいずれかのレコード４に一時領域２または退避領域３ａ〜３ｃのいずれかの更新要求１を反映して書込バッファ１４ｂ〜１４ｃのいずれかに追記する。反映した更新要求１は一時領域２または退避領域３ａ〜３ｃから削除する。
一時領域２の更新要求１が反映された書込バッファ１４ｂ〜１４ｃのいずれかのレコード４は、書込バッファ１４ｂ〜１４ｃの総容量が所定値を超えた場合に、まとめて格納領域５ｂ〜５ｃに書き込まれる。
【００５７】
以下、更新要求反映部１１の処理の詳細を述べる。
更新要求反映部１１は、所定時間単位ごとに動作し、例えば１時間ごとに実行されるプログラムにより実現される。
更新要求反映部１１が所定時間単位ごとに起動する時の現在時刻をｔとする。
始めに、ステップＳ１２１で、次回更新時刻がｔの格納領域ｔ（格納領域５ａ）のレコード４をまとめて読込バッファ１３に読込み、各レコード４をキー４０１の順にソートし、その先頭アドレスをポインタ変数ｓに設定する。
【００５８】
続いてステップＳ１２２で、ポインタ変数ｓが示す格納領域５ａに対応する退避領域３ａ（退避領域ｔ）の更新要求１を読込バッファ１２に読込んで、各更新要求１をキー１０１及び受付時刻１０３の順にソートし、読込バッファ１２の先頭アドレスをポインタ変数ｕに設定する。
ソート条件に受付時刻１０３を含めているのは、一時領域消去部１０で一時領域２から退避領域３ａへの書込みが複数回起こった場合に、同一キー１０１を持つ複数の更新要求１が存在する可能性があるためであり、受付時刻１０３の順に処理することが目的である。
【００５９】
次にステップＳ１２３で、格納領域５ａの読込バッファ１３を示すポインタ変数ｓが指すレコード４のキー４０１（ｓ．ｋｅｙ）と、退避領域３ａの読込バッファ１２を示すポインタ変数ｕが指す更新要求１のキー１０１（ｕ．ｋｅｙ）を比較する。
両者が等しければステップＳ１２４に進み、両者が等しくない、またはポインタ変数ｕが読込バッファ１２の末尾に達した場合には、ステップＳ１２５に進む。
【００６０】
ステップＳ１２４では、格納領域５ａの読込バッファ１３を示すポインタ変数ｓが指すレコード４の内容に退避領域３ａの読み込みバッファ１４を示すポインタ変数ｕが指す更新要求１を反映して更新する。
具体的には、格納領域５ａのレコード４の属性情報４０２に退避領域３ａの更新要求１の属性更新情報１０２を反映し、最終更新時刻４０６に最終受付時刻１０４を設定し、更新回数４０７に受付回数１０５の値を加える。
レコード４の属性情報４０２に更新要求１の属性更新情報１０２を反映する方法は、図５の格納領域５ａ〜５ｃのレコード４の形式の説明で示したデータの更新と同様である。
その後、さらにポインタ変数ｕを１要素分進め、ステップＳ１２３に戻る。
【００６１】
ステップＳ１２５では、格納領域５ａの読込バッファ１３を示すポインタ変数ｓが指すレコード４のキー４０１（ｓ．ｋｅｙ）が一時領域２に存在するかどうかを検索する。存在する場合はステップＳ１２６に進み、そうでない場合はステップＳ１２７に進む。
【００６２】
ステップＳ１２６では、格納領域５ａの読み込みバッファ１３のポインタ変数ｓが指すレコード４の属性情報４０２に一時領域２の更新要求１の属性更新情報１０２を反映して更新する。その方法は、ステップＳ１２４と同様（図５の格納領域５ａ〜５ｃのレコード４の形式の説明で示したデータの更新と同様）である。
その後、反映した当該更新要求１は一時領域２から削除する。
一時領域２には、同一キー１０１を持つ更新要求１は複数存在しないため、繰り返しは行わず、ステップＳ１２７に進む。
【００６３】
ステップＳ１２７では、格納領域５ａの読込バッファ１３を示すポインタ変数ｓが指すレコード４の平均更新周期４０５の値に、
（最終更新時刻４０６−作成時刻４０８）／更新回数４０７
を設定する。
ただし、更新回数４０７が０の場合（対応する更新要求１が存在しなかった場合）には、平均更新周期４０５は、所定時間（例えば、図９のステップＳ１０６で示した現在時刻から所定時間後の時刻に対応する格納領域５ａ〜５ｃのいずれかの領域識別子８０１を設定する時の所定時間）とする。
さらに、現在時刻に平均更新周期４０５の値を加えた値（現在時刻に所定時間を加えた値）をｔ’とし、次回更新時刻４０３に設定する。
【００６４】
次に、ステップＳ１２８で、領域索引８の要素に、更新後の格納領域５ａの領域識別子８０１を設定する。詳細には、格納領域５ａの読込バッファ１３を示すポインタ変数ｓが指すレコード４の登録順４０４に対応する領域索引８の要素に、次回更新時刻ｔ’に対応する領域識別子８０１の値を設定する。
【００６５】
ステップＳ１２９では、格納領域５ａの読込バッファ１３を示すポインタ変数ｓが指すレコード４をｔ’に対応する書込バッファ１４ｂ〜１４ｃのいずれかの末尾に追加し、ポインタ変数ｓを１要素分進める。
なお、書込バッファ１４ｂ〜１４ｃに十分な容量がない場合は、図９のステップＳ１０８と同様、各書込バッファ１４ｂ〜１４ｃの内容を各格納領域５ｂ〜５ｃに書込みを行う。
【００６６】
即ち、書込バッファ１４ｂ〜１４ｃの総容量が所定値を超えた場合に、次回更新時刻により識別される各書込バッファ１４ｂ〜１４ｃの内容が同じ次回更新時刻により識別される各各格納領域５ｂ〜５ｃにまとめて書き込まれる。
このように、各書込バッファ１４ｂ〜１４ｃの内容を各格納領域５ａ〜５ｃに書き込むことで各書込バッファ１４ｂ〜１４ｃを空にする。
【００６７】
続いてステップＳ１３０では、格納領域５ａの読込バッファ１３を示すポインタ変数ｓが読込バッファ１３の末尾に達したか否かを判定し、末尾に達していない場合はステップＳ１２３に戻って処理を繰り返す。
末尾に達した場合は、ステップＳ１３１に進み、ｔに対応する次回更新時刻の格納領域５ａ及び該格納領域５ａに対応する退避領域３ａを削除して終了する。
【００６８】
図１１は、検索処理部１７の動作を示すフローチャートである。
検索処理部１７は、データ管理装置Ａの利用者端末や外部プログラムまたはコンピュータなどから検索要求１５を受け取って動作を開始する。
始めにステップＳ１４１において、検索要求１５の検索キー（Ｑとする）が、レコード索引６中に存在するか否かを判定する。
【００６９】
検索キーＱがレコード索引６に存在しない場合は、ステップＳ１４７に進み、更に検索キーＱに等しいキー１０１を持つ更新要求１が一時領域２に存在するか否かを判定する。検索キーＱが一時領域２にも存在しない場合は、ステップＳ１４８に進み、検索失敗通知を要求元に応答して動作を終了する。
検索キーＱがレコード索引６に存在する場合は、ステップＳ１４２において、レコード索引６からキー６０１が検索キーＱに等しい組の登録順６０２を取得しｗとする。
続いてステップＳ１４３で、領域索引８の先頭から第ｗ番目に対応する要素を取得し、その要素の領域識別子がｘであるとする。
【００７０】
さらに、ステップＳ１４４で、領域識別子ｘに対応する書込バッファ１４ｂ〜１４ｃのいずれか及び格納領域５ａ〜５ｃのいずれかを先頭から順次走査し、検索キーＱに等しいキー４０１のレコード４を取得してそのコピーを作成する。
【００７１】
次に、ステップＳ１４５で、領域識別子ｘに対応する退避領域３ａ〜３ｃのいずれかを先頭から走査するとともに、一時領域２を検索する。
検索キーＱに等しいキー１０１の更新要求１が存在する場合は、受付時刻１０３の昇順に、各更新要求１の内容（属性更新情報１０２ａなど）を上記レコード４のコピーに反映させ、上記レコード４のコピーの内容（属性情報４０２など）を更新する。
続いてステップＳ１４６において、更新後のレコード４の属性情報４０２を検索応答１６として要求元に応答して動作を終了する。
【００７２】
また、ステップＳ１４７で、検索キーＱに等しいキー１０１を持つ更新要求１が一時領域２に存在する場合は、ステップＳ１４９に進み、当該更新要求１に基づいてレコード４を作成し、ステップＳ１４６に進む。
【００７３】
なお、この発明の実施の形態では、更新要求１の履歴として、最初に更新要求１を受け付けた時刻（作成時刻）と最終更新時刻、及びその間の更新回数を用い、全期間を対象とする平均更新周期を求めている。
一方、レコード４の更新頻度が時間とともに変化することも多く、過去の情報を全て保持していると、傾向の変化に追随できないこともある。そこで、更新要求の履歴として、Ｎ個以下の範囲で、最近の更新時刻を保持しておき、それらの値からレコード４の最近の平均更新周期を求めることも考えられる。
【００７４】
また、この発明の実施の形態では、この発明の実施の形態では、更新要求１のキーがレコード索引６に存在しない場合に、現在時刻から所定時間後の時刻を次回更新時刻として、次回更新時刻で識別される格納領域５ａ〜５ｃのいずれかに対応する書込バッファ１４ｂ〜１４ｃのいずれかに更新要求１をレコード形式にして追記するとしているが、現在時刻以降の時刻を乱数で設定した時刻を次回更新時刻として、次回更新時刻で識別される格納領域５ａ〜５ｃのいずれかに対応する次回更新時刻で識別される書込バッファ１４ｂ〜１４ｃのいずれかに追記することもできる。
即ち、現在時刻以降に更新要求反映部１１が動作するいずれか１つの時刻の次回更新時刻の書込バッファ１４ｂ〜１４ｃに追記することができる。
【００７５】
また、この発明の実施の形態において、昇順にして処理をしているところは、降順にして処理をしてもよく、その場合には、ステップＳ１０３等のｐ．ｋｅｙとｑ．ｋｅｙの大小関係も合わせて逆転するなど降順に合わせて処理を行うことで可能となる。
【００７６】
また、本発明において、格納領域５ａ〜５ｃ及び退避領域３a〜３ｃを分割する時間単位を固定ではなく可変とすることで、短周期から長周期までの広い範囲で更新される様々なレコード４を効率よく管理することが可能になる。
【００７７】
また、この発明の実施の形態１では、図１１に示したように、検索処理部１７は一時領域２を最後に検索し、レコード４の古い内容に更新を加えるものとしている。しかし、用途によってはレコード４の属性情報４０２に対し、更新要求１の属性更新情報１０２を単純に上書きすることでレコードの更新が達成されることもある。このような場合には、検索処理部１７は一時領域２を最初に検索し、一致するキーが存在する場合には直ちにその内容に基づいて最新のレコード４の内容を応答することができる。
これにより、高頻度に更新されるレコード４に対し、検索も高速に実現することが可能になる。
【００７８】
また、この発明の実施の形態１では、ハイパーリンク先ＵＲＬをキーとして、属性更新情報に参照元ＷｅｂページのＵＲＬが格納されている例を示したが、参照元ＷｅｂページのＵＲＬをキーとして、属性更新情報１０２にハイパーリンク先ＵＲＬが格納される場合であってもよい。
特許文献２では、システム自身が決定した更新時刻に、外部の情報源に更新要求１の属性更新情報１０２を取得しに行き、データの更新を行っていた。しかし、外部からの更新要求を処理する方法について、単発の要求がまれに発生することにしか対応できなかった。
本発明のデータ管理装置によれば、外部からの更新要求１を複数受け付け、蓄積された複数の更新要求１の属性更新情報１０２を高速にまとめて処理することが可能である。
【００７９】
また、この発明の実施の形態１では、データ管理装置Ａの具体的な用途として、Ｗｅｂページの被参照リンク（バックリンク）を管理することを例に挙げた。
別の重要な応用としては、全文検索のための転置リストの逐次更新が挙げられる。
この場合、キーはＷｅｂページ等文書に含まれる単語であり、属性情報は当該単語が出現する文書の識別情報となる。
従来のデータ管理装置（特許文献１）では、追加された文書に関する転置リストを小索引として本体索引と分離して管理することでスループットの向上を図っていた。しかし、小索引が増えるといずれは本体索引とマージする必要が生じ、その際に大きな遅延が発生することを避けられなかった。
本発明のデータ管理装置によれば、必要最小限のマージ処理を常時実行することにより、全体のスループットを高めるとともに、スループットの変動を避け、安定した性能を提供することが可能になる。
【００８０】
以上のようにこの発明の実施形態によれば、受け付けた更新要求１を高速・小容量の一時領域２に記憶させるとともに、一時領域２の容量が不足した際には、退避領域３へ時系列に追記することにより更新要求１の書込みを行う。そのため、一時領域２上の更新要求１を直ちにレコード４に反映する従来のデータ管理装置で起こる磁気ディスク装置上へのランダムアクセスを回避し、非常に高いスループットで更新要求を受け付けることができる。
【００８１】
また、複数の退避領域３ａ〜３ｃのそれぞれは同じ次回更新時刻で識別される格納領域５ａ〜５ｃと対応し、同時刻にシーケンシャルに読み出されて処理されるので、実際のレコード４の更新まで含めたスループットも非常に高い。
各レコード４が処理される時刻は、レコード４毎の過去の更新履歴から算出した平均更新周期に基づいて予測したものであり、レコード４に対応する更新要求が到着している可能性が高く、データ全体を一括して更新する従来手法に比べて、不要な磁気ディスクアクセスの回避により、高い性能を実現できる。
【００８２】
一方、レコード４に更新要求１を反映する前に、新たな更新要求１が到着した場合は、一時領域２上で更新要求１の併合を行うので、一時領域２を効率的に使用するとともに、レコード４への更新反映処理を効率化することができる。
【００８３】
また、格納領域５ａ〜５ｃへの書込みを直ちに行わず、それぞれに対応する可変容量の書込バッファ１４ｂ〜１４ｃにレコード４を蓄え、全ての書込バッファ１４ｂ〜１４ｃの総容量が所定値を超えた場合に、まとめて格納領域５ａ〜５ｃへの書込みを行う。そのため、格納領域５ａ〜５ｃごとに固定容量の書込バッファ１４ｂ〜１４ｃを設けた場合と比較し、格納領域５ａ〜５ｃごとの書込み量の偏りを吸収し、磁気ディスク装置への書込みアクセスを高速化することができる。
【００８４】
さらに、レコード４のキーとレコード４が格納または退避されている領域との対応を把握するために、領域索引８とレコード索引６の組合せを用いる。そのため、レコード４の更新に合わせて更新される領域索引８をＲＡＭ上に配置して高速にアクセスするとともに、更新要求１の退避領域３ａ〜３ｃへの書込みや検索等、比較的低頻度な事象に際して必要になる情報も矛盾なく管理することができる。
【００８５】
実施の形態２．
この発明の実施の形態２にかかるデータ管理装置Ａでは、各レコードの格納領域５ａ〜５ｃを、次回更新時刻ではなく、レコード４のキー４０１にハッシュ関数を適用した値に基づいて複数の格納領域５ａ〜５ｃに静的（固定的）に決定する。
実施の形態２では、図１において、レコード索引６、最終登録順７、領域索引８を除き、書込バッファ１４ｂ〜１４ｃを単一のものとした構成を取る。
退避領域３ａ〜３ｃは、格納領域５ａ〜５ｃと同様に複数設けられ、格納領域５ａ〜５ｃと１対１に対応する。
【００８６】
また、動作について、更新要求受付部９は実施の形態１と同様である。
一時領域消去部１０については、一時領域２の領域が不足した場合に、一時領域２の更新要求１のキー１０１にハッシュ関数を適用し、適用した値（ハッシュ値）に基づいて記憶されている退避領域３ａ〜３ｃのいずれかに一時領域２の更新要求１を時系列に記憶して、一時領域２の空き領域を確保する。
【００８７】
実施の形態２では、レコード索引６を持たないため、一時領域２の更新要求１のキー１０１が格納領域５ａ〜５ｃに存在するか否かを判定するには、キー１０１に対応する格納領域５ａ〜５ｃを走査する必要がある。それを避けるために、一時領域２の領域が不足した場合に、一時領域消去部１０では、全ての更新要求１を退避領域３ａ〜３ｃのいずれかに格納する。
次回更新時刻、登録順、レコード索引、領域索引に関する処理は不要である。
【００８８】
また、更新要求反映部１１は、定期的に格納領域５ａ〜５ｃの先頭からレコード４を読込バッファ１３に読み出し、各格納領域５ａ〜５ｃのレコード４に退避領域３ａ〜３ｃの更新要求１を反映する。その後、一時領域２の更新要求１を反映して、単一の書込バッファ１４を介して、元の格納領域５ａ〜５ｃの領域に順に更新したレコード４を格納する。
その際、格納領域５ａ〜５ｃに存在しないキー１０１を持つ退避領域３ａ〜３ｃの更新要求１は、形式を変換して新たなレコード４とする。
【００８９】
また、検索処理部１７は、検索要求１５の検索キーＱにハッシュ関数を適用した値に基づいて書込バッファ１４ｂ〜１４ｃ及び格納領域５ａ〜５ｃの順で検索し、対応するレコード４（最初に検出したもの）に退避領域３ａ〜３ｃ及び一時領域２の更新要求１を受付時刻の昇順に全て反映し、更新後のレコード４の属性情報４０２を検索応答１６として返す。
【００９０】
検索キーＱに対応するレコード４が見つからない場合は、退避領域３ａ〜３ｃ及び一時領域２を検索し、検索キーＱに等しいキー１０１を持つ更新要求１の内で最も小さな受付時刻を持つものをコピーしてレコード４の形式に変換し、残りの更新要求１を受付時刻の昇順に全て反映し、更新後のレコード４の属性情報４０２を検索応答１６として返す。
【００９１】
この発明の実施の形態２によれば、格納領域の先頭から更新のないレコードも含めて読み出すため、不要な磁気ディスクアクセスが発生してしまうものの、ランダムアクセスは避けられるため、レコードの更新頻度に応じて十分な高速化効果が得られる。
また、全レコードを一括して更新する従来手法に比べ、スループットが低下する期間を短縮・分散し、性能の安定化を実現することができる。
【００９２】
実施形態３．
この発明の実施の形態３にかかるデータ管理装置Ａでは、実施の形態１における退避領域３ａ〜３ｃを格納領域５ａ〜５ｃで兼用する。
即ち、一時領域２に空きがない場合に、一時領域消去部が、一時領域２の更新要求１を格納領域５ａ〜５ｃのいずれかに記憶し、一時領域２に空きを確保すること以外は実施の形態１と同様である。
【００９３】
動作について、更新要求受付部９は実施の形態１と同様である。
一時領域消去部１０は、一時領域２の領域が不足した場合に、一時領域２の更新要求１を更新要求１のキー１０１が対応する退避領域３ａ〜３ｃのいずれかに追記する代わりに、更新要求１のキー１０１に対応する格納領域５ａ〜５ｃのいずれかの末尾に書き込む。この時の格納領域５ａ〜５ｃのいずれかは、レコード索引６及び領域索引８から特定する。書き込む更新要求１は、レコード形式に変換せず、更新要求１の形式のままで追記される。
【００９４】
格納領域５ａ〜５ｃの中では、レコード形式と更新要求の形式の複数の形式が混在することになるため、更新情報１及びレコード４は形式を識別する情報を含み、相互に区別可能とする。その他の動作は、実施の形態１と同様である。
また、更新要求反映部１１は、所定時間単位ごとに対応する次回更新時刻の格納領域５ａ〜５ｃのいずれかを格納領域５ａとすると、格納領域５ａから更新情報１とレコード４を分離し、退避領域３ａを別に設けていた実施の形態１と同様の処理を行う。
【００９５】
これは、例えば、格納領域５ａの内容をキー順にソートし、同一キーに対応する更新情報１とレコード４を連続して読込バッファ１２と読み込みバッファ１３に読み込むことで実現できる。
具体的な処理を実施の形態１の図１０の動作フローで示すと、Ｓ１２１及びＳ１２２の動作が次の様な処理に置き換わる。
所定時間単位ごとに対応する次回更新時刻の格納領域５ａ（格納領域ｔ）のデータを全て読込バッファ１３に読み込み、キー順にソートする。
【００９６】
次に、図１０のＳ１２３の処理の前に新しいステップＳ１２２’が追加され、ここでは、読込バッファ１３の先頭からキーの変わり目を特定する。そして、そのキーの変わり目を特定した読込バッファ１３のアドレスをポインタ変数ｙに設定し、キーの変わり目までに検出したレコード４（１つ）と更新要求１（０以上）を処理対象とする。
【００９７】
この時、検出したレコード４と更新要求１から、データの形式を識別する情報によってレコード４を特定し、ポインタ変数ｒに設定する。
一方、キーの変わり目までに見つけた更新要求１は、読み込みバッファ１２にコピーして受付時刻順にソートし、その先頭のアドレスをポインタ変数ｐに設定する。レコード４と対応する更新要求１が見つからない場合は、ポインタ変数ｐを有効範囲外とする。
【００９８】
Ｓ１２３〜Ｓ１２８の処理は、実施の形態１と同様であり、Ｓ１２９では、「ｓを１要素分進める」を「ｒにｙを設定する」とする。
また、Ｓ１３０からの戻り先をＳ１２２’とする。Ｓ１２４からの戻り先は、Ｓ１２３のままである。
【００９９】
また、検索処理部１７は、検索要求１５の検索キーＱがレコード索引６に存在するかどうかをみて、存在すればレコード索引６及び領域索引８から検索キーＱに対応する領域識別子ｘを取得し、領域識別子ｘに対応する書込バッファ１４ｂ〜１４ｃのいずれか及び格納領域５ａ〜５ｃのいずれかの順に検索キーＱと一致する最初のレコード４を検索する。
そして、そのレコード４に対して、格納領域５ａ〜５ｃのいずれかまたは一時領域２の更新要求１を受付時刻の昇順に全て反映して、レコード４の属性情報４０２を検索応答１６として返す。
【０１００】
検索キーＱに対応するレコード４が見つからない場合は、一時領域２を検索し、検索キーＱに等しいキー１０１を持つ更新要求１が存在すれば、その属性更新情報１０２を検索応答１６として返す。
【０１０１】
この発明の実施形態によれば、作成される領域の数を半減させることにより、磁気ディスク装置上の記憶領域割当ての効率やアクセス性能を向上させることができる。
【符号の説明】
【０１０２】
Ａ  データ管理装置、１ａ  更新要求メッセージ、１  更新要求、２  一時領域、３ａ  退避領域ｔ、３ｂ  退避領域ｔ＋１、３ｃ  退避領域ｔ＋ｎ、４  レコード、５ａ  格納領域ｔ、５ｂ  格納領域ｔ＋１、５ｃ  格納領域ｔ＋ｎ、６  レコード索引、７  最終登録順、８  領域索引、９  更新要求受付部、１０  一時領域消去部、１１  更新要求反映部、１２  読み込みバッファ、１３  読み込みバッファ、１４ｂ  書込バッファｔ＋１、１４ｃ  書込バッファｔ＋ｎ、１５  検索要求、１６  検索応答、１７  検索処理部、１０１ａ  キー、１０２ａ  属性更新情報、１０１  キー、１０２  属性更新情報、１０３  受付時刻、１０４  最終受付時刻、１０５  受付回数、４０１  キー、４０２  属性情報、４０３  次回更新時刻、４０４  登録順、４０５  平均更新周期、４０６  最終更新時刻、４０７  更新回数、４０８  作成時刻、６０１  キー、６０２  登録順、８０１  領域識別子。
【図１】
0005655538.tif 000002
【図２】
0005655538.tif 000003
【図３】
0005655538.tif 000004
【図４】
0005655538.tif 000005
【図５】
0005655538.tif 000006
【図６】
0005655538.tif 000007
【図７】
0005655538.tif 000008
【図８】
0005655538.tif 000009
【図９】
0005655538.tif 000010
【図１０】
0005655538.tif 000011
【図１１】
0005655538.tif 000012