JP5655538B2 - データ管理装置及びデータ管理方法 - Google Patents

データ管理装置及びデータ管理方法 Download PDF

Info

Publication number
JP5655538B2
JP5655538B2 JP2010279255A JP2010279255A JP5655538B2 JP 5655538 B2 JP5655538 B2 JP 5655538B2 JP 2010279255 A JP2010279255 A JP 2010279255A JP 2010279255 A JP2010279255 A JP 2010279255A JP 5655538 B2 JP5655538 B2 JP 5655538B2
Authority
JP
Japan
Prior art keywords
record
area
update request
update
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010279255A
Other languages
English (en)
Other versions
JP2012128640A (ja
Inventor
田村 孝之
孝之 田村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2010279255A priority Critical patent/JP5655538B2/ja
Publication of JP2012128640A publication Critical patent/JP2012128640A/ja
Application granted granted Critical
Publication of JP5655538B2 publication Critical patent/JP5655538B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、更新要求に応じて記憶部のデータを更新、検索するデータ管理装置及びデータ管理方法に関するものである。
多数のレコードを管理するデータ管理装置においては、主記憶部に比べて低速な二次記憶部に対するアクセスの効率化が重要である。各レコードに対する外部からの更新要求を、二次記憶上のデータに反映するためには、二次記憶から更新前のデータを読み出し、更新を反映し、再び二次記憶に書き込む必要がある。
これに対し、更新要求を直ちに外部記憶装置(二次記憶部)上のデータに反映せずにメモリ(主記憶部)に蓄えておき、レコードの検索要求があった時には、外部記憶装置から更新前のデータを読み出し、メモリ上の更新要求をその時点で反映させて更新後のデータを作成・応答する方式が知られている(例えば、特許文献1参照)。当該方式では、メモリの容量が許す限り、外部記憶装置へのアクセスなしに更新要求を受け付けることができるため、高い更新スループットを実現することが可能である。
現在の主要な外部記憶装置は磁気ディスク装置である。この磁気ディスク装置には、連続なアドレスに対するアクセス(シーケンシャルアクセス)の速度が200MB/sまでであるのに対して、不連続なアドレスに対するアクセス(ランダムアクセス)の速度は数MB/sと著しく低い特性がある。
そこで、この外部記憶装置(二次記憶部)の性能特性を利用して外部記憶装置へのアクセス自体を高速化するシステムが開示されている(特許文献2参照)。
当該システムでは、システム自体が決定した更新時刻に基づいて管理するデータの各レコードを外部記憶装置上に配置し、更新時刻に基づいて更新対象レコードを読出すことでシーケンシャルアクセスとなり、外部記憶装置へのアクセスを高速化している。
特開10−31602号公報 特開2009−223507号公報
従来のデータ管理装置では、特許文献1に記載のように、二次記憶装置へのアクセスを回避することで高速化を図っている。しかし、更新要求の発生頻度が高く、メモリが不足する場合には、メモリ上に蓄積された更新要求を外部記憶装置上のデータに反映するための外部記憶装置へのアクセスが不可避となり、その効果が損なわれてしまう。
一方、特許文献2に記載の方式は、システム自身が各レコードの更新時刻を決定することで、外部記憶装置へのアクセスをシーケンシャルにすることができ高速化が可能となるが、単独では外部からの要求に基づく更新処理に適さない。
また、特許文献1と特許文献2の方式を組み合わせ、メモリに蓄積した更新要求をシステムが決定したタイミングで外部記憶装置に反映することで、外部からの更新要求を受け付けることが可能になる。しかし、外部からの更新要求が頻繁に発生するような場合には、外部記憶装置に反映されていない更新要求が主記憶に蓄積され、主記憶が不足すると、直ちに外部記憶装置への更新要求の反映が必要になる。そうなると、ランダムアクセスによる外部記憶装置への書き込みが発生して、外部記憶装置へのアクセスの高速化の効果が損なわれてしまう。
この発明は、上記のような課題を解決するためになされたもので、外部からの更新要求を受け付けるデータ管理装置において、外部記憶装置へのアクセスをシーケンシャルにすることにより、データの更新または検索を高速化することを目的とする。
この発明に係るデータ管理装置は、外部から受け付けたデータの更新内容と該データを特定するキーを含む更新要求を記憶する主記憶装置内の一時領域と、前記更新要求によって更新されるデータと該データを特定するキーを含むレコードを記憶する外部記憶装置内の格納領域と、前記格納領域に格納されているレコードのキーと一致するキーを持つ前記更新要求を記憶する外部記憶装置内の退避領域と、新たな更新要求を前記一時領域に記憶する際に前記一時領域が不足した時、前記一時領域の更新要求に基づいて更新されるレコードが前記格納領域にある場合は、該レコードが記憶されている前記格納領域に対応する前記退避領域へ前記一時領域の更新要求を記憶して、前記一時領域から前記記憶した更新要求を削除し、前記一時領域の更新要求に基づいて更新されるレコードが前記格納領域にない場合は、前記一時領域の更新要求をレコードにして前記格納領域に記憶して、前記一時領域から前記記憶した更新要求を削除する一時領域消去部と、所定時間単位ごとに動作し、前記格納領域のレコードのキーと一致するキーを持つ前記一時領域または前記退避領域の少なくともいずれか一方に格納されている更新要求に基づいて該レコードを更新し、前記更新した更新要求を削除する更新要求反映部とを備えたものである。
この発明は、外部からの更新要求を記憶する一時領域が不足した時に、データを記憶する外部記憶装置内の格納領域に対応する外部記憶装置内の退避領域に一時領域の更新要求を記憶して、一時領域の更新要求を削除することにより、一時領域の空き領域を確保するので、データの更新または検索を高速化することができる。
この発明の実施の形態1におけるデータ管理装置1の構成図である。 この発明の実施の形態1における更新要求メッセージ1aの形式を示す図である。 この発明の実施の形態1における更新要求1の形式を示す図である。 この発明の実施の形態1における退避領域3の形式を示す図である。 この発明の実施の形態1における格納領域5に格納されるレコード4の形式を示す図である。 この発明の実施の形態1におけるレコード索引6の形式を示す図である。 この発明の実施の形態1における領域索引8の形式を示す図である。 この発明の実施の形態1における更新要求受付部9の動作を示すフロー図である。 この発明の実施の形態1における一時領域消去部10の動作を示すフロー図である。 この発明の実施の形態1における更新要求反映部11の動作を示すフロー図である。 この発明の実施の形態1における検索処理部15の動作を示すフロー図である。
実施の形態1.
図1はこの発明の実施の形態に係るデータ管理装置の構成図である。
図1において、データ管理装置Aは、外部から受け取るデータの更新内容である更新要求メッセージ1a、更新要求メッセージ1aに受付時刻などの情報を付加した更新要求1、更新要求1を一時的に格納する主記憶装置内の一時領域2、一時領域2が不足した時に一時領域2の更新要求1を退避させる外部記憶装置内の複数の退避領域3a〜3c(それぞれ時刻t〜t+nに対応)、更新要求1に次回更新時刻等の情報を付加した更新要求1ごとの情報であるレコード4、複数のレコード4を外部記憶装置内に格納し次回更新時刻で識別される複数の格納領域5a〜5c(それぞれ時刻t〜t+nに対応)、更新要求1の更新対象レコードを特定するキーと更新要求1を最初に受け付けて格納領域5a〜5cのいずれかに登録した登録順の組を格納したレコード索引6、更新要求1を格納領域5a〜5cのいずれかに格納した最終の登録順を記憶する最終登録順7、格納領域5a〜5cのいずれかに格納される各レコード4の登録順の値が示す配列に次回更新時刻で識別される格納領域5a〜5cのいずれかを識別する領域識別子を記憶する領域索引8、更新要求メッセージ1aを受け付けて受付時刻などの情報を付加し更新要求1として一時領域2に格納する更新要求受付部9、一時領域2の空き領域を作る一時領域消去部10、所定時間ごとに対応する次回更新時刻で識別される格納領域5a〜5cのいずれかのレコード4をバッファに読み込み、一時領域2または所定時間に対応する次回更新時刻で識別される退避領域3a〜3cのいずれかに格納されている更新要求1の更新内容を取得してレコード4の内容を更新する更新要求反映部11、更新要求反映部11によって更新されるレコード4が格納されている格納領域5a〜5cのいずれかと対応する退避領域3a〜3cのいずれかの更新要求1が読み込まれる読み込みバッファ12、更新要求反映部11によって更新されるレコード4が格納されている格納領域5a〜5cのいずれかのレコード4が読み込まれる読込バッファ13、更新要反映部11がデータ更新を行う時間単位に格納領域5a〜5cと1対1に対応し、格納領域5a〜5c毎に書き込みをまとめて行う可変容量の書込バッファ14b〜14c(それぞれ時刻t+1〜t+nに対応)、データ管理装置Aの利用者から検索要求15を受け取ると格納領域5a〜5cと書込バッファ14b〜14cを検索してレコード4を抽出し、一時領域2と退避領域3a〜3cの更新情報である更新要求1を反映させたレコード4を検索応答16として応答する検索処理部17から構成される。
また、データ管理装置Aは一般的なコンピュータを用い、退避領域3a〜3c、格納領域5a〜5c、及びレコード索引6を磁気ディスク装置で、一時領域2、最終登録順7、領域索引8、読込バッファ12及び13、及び書込バッファ14b〜14cをランダムアクセスメモリで、更新要求受付部9、一時領域消去部10、更新要求反映部11、及び検索処理部15をランダムアクセスメモリに格納されプロセッサで実行されるコンピュータプログラムとして、それぞれ実現することができる。
また、退避領域3a〜3c、格納領域5a〜5c、レコード索引6は、LinuxやWindows(登録商標)等の一般的なオペレーティングシステムが提供するファイルとして実現することができる。
さらに、更新要求受付部9および検索処理部17はLAN等の通信回線を介して要求元と更新要求メッセージ1aや検索要求15および検索応答16の授受を行うことができる。
図2は、更新要求受付部9がデータ管理装置Aの外部から受け取る更新要求メッセージ1aの形式を示したものである。
更新要求メッセージ1aは、更新する対象のレコード4(更新対象レコード)を特定するキー101aとレコード4の更新内容である属性更新情報102aからなる。
また、図3は、一時領域2に格納される更新要求1の形式を示したものである。
更新要求1はキー101、属性更新情報102、受付時刻103、最終受付時刻104、及び受付回数105からなる。
そして、更新要求1のそれぞれの値は、更新要求受付部9が更新要求メッセージ1aを受け付けた際に付与される。キー101に当該更新要求メッセージ1aのキー101a、属性更新情報102に更新要求メッセージ1aの属性更新情報102a、受付時刻103と最終受付時刻104に現在時刻、及び受付回数105に1がそれぞれ付与される。
更新要求1が格納されている一時領域2は、公知の赤黒木(参考文献:ロバート・セジウィック著、野下ほか訳、アルゴリズムC++、ISBN 978−4764902220など)等、ランダムアクセスメモリ上の検索構造を用い、キー101に基づく探索及びキー101の昇順アクセスを効率良く実現できるように構成する。
図4は、退避領域3a〜3cのそれぞれの形式を示す図である。
退避領域3a〜3cは、複数の更新要求1を先頭から順(時系列)に格納したものとなっている。
退避領域3a〜3cのそれぞれに新たに更新要求1を追加格納する際には、末尾に必要な記憶領域が割り当てられ、更新要求1の内容が書き込まれる。このような動作は、退避領域3a〜3cのそれぞれをファイルとして実現し、逐次的に更新要求1を書き込むことで実現される。
また、次回更新時刻により識別される退避領域3a〜3cは、同じ次回更新時刻により識別される格納領域5a〜5cに対応する。
図5は、格納領域5a〜5cに格納されるレコード4の形式を示したものである。
レコード4はキー401、属性情報402、次回更新時刻403、登録順404、平均更新周期405、最終更新時刻406、更新回数407、及び作成時刻408からなる。
登録順404には、レコード索引6に格納されている登録順と同じで、更新要求1が最初にレコード4として格納領域に登録された時の最終登録順7が格納されている。
そして、次回更新時刻403が同じレコード4は、次回更新時刻403により識別される格納領域5a〜5c毎に記憶されている。この次回更新時刻403により識別される格納領域5a〜5cを識別する値が、後述する領域索引8に領域識別子801として格納されている。
また、格納領域5a〜5cは、図4の退避領域3a〜3cと同様、複数のレコード4を先頭から順に格納した形式を持つ。
ここで、格納領域5a〜5cのキー401と属性情報402に関するデータの登録と更新について述べる。
まず、データ管理装置Aにおけるデータの登録(更新要求1を格納領域5a〜5cのいずれかのレコード4として格納する際に、キー401と属性情報402に登録するデータ)は、実施の形態1では、Webページ毎に当該Webページへのハイパーリンクを含むWebページの集合を管理する用途を例にして述べるため、以下のようになる。
Webページの集合を管理する場合、Webページを収集するつど、このWebページの参照元Webページの集合が更新されるように、収集したWebページに含まれるハイパーリンク毎に作成された更新要求メッセージ1aがデータ管理装置Aに送付される。この時、更新要求メッセージ1aのキー101aにハイパーリンク先URL、更新要求メッセージ1aの属性更新情報102aに参照元WebページのURLが格納される。
そして、データ管理装置Aでは、送付されたハイパーリンク先URL(キー101a)を次回更新時刻が同じ格納領域5a〜5cのいずれかのキー401に登録し、参照元WebページのURL(属性更新情報102a)を属性情報402に登録する。
このようにハイパーリンク先URLをキーとして、リンク元ページのURLを管理するデータの管理を、大規模なWeb情報の収集と並行して実施すると高い更新負荷となる。しかし、このデータ管理装置Aでのデータの管理によれば、高い更新負荷に追随し、高い更新性能を維持することができる。
次に、データ管理装置Aにおけるデータの更新は、更新要求メッセージ1aのキー101aと同じ値のキー401を持つレコード4の属性情報402に更新要求メッセージ1aの属性更新情報102aを反映することで行われる。
一般的に、格納領域5a〜5cのレコード4の属性情報402に更新要求メッセージ1aの属性更新情報102aを反映する方法には、データ管理装置Aの用途に応じて例えば次の様な方法が考えられる。
(1)単純に格納領域5a〜5cのレコード4の各キーに対応する最新の属性情報を保持することが目的の場合、属性情報402を属性更新情報102aで上書きする。
(2)格納領域5a〜5cのレコード4のキー401毎の属性情報402の集合を保持することが目的の場合、格納領域5a〜5cのレコード4の属性情報402の値に更新要求メッセージ1aの属性更新情報102aの値を連結する。
(3)格納領域5a〜5cのレコード4のキー401毎の属性情報402の統計値を保持することが目的の場合、格納領域5a〜5cのレコード4の属性情報402の値と更新要求メッセージ1aの属性更新情報102aの値の間で何らかの演算(例えば加算)を行う。
本実施の形態1では、(2)の方法となる。
図6は、レコード索引6の形式を示したものである。
レコード索引6は、キー601と登録順602の組を複数格納したものである。各組はキー601の昇順に格納される。
更新要求1によりデータ管理装置Aに新たなキー101が追加される都度、当該キー101と、最終登録順7から採番した登録順602の組がレコード索引6に格納される。
この時、レコード索引6に格納される最終登録順7から採番した登録順602は、キー101と同じキー401を持つ格納領域5a〜5cのレコード4の登録順404と同じである。
図7は、領域索引8の形式を示したものである。
領域索引8は、レコード索引6の登録順602(更新要求1がレコード4として格納領域5a〜5cに登録された順)に、格納領域5a〜5cのいずれかを識別する領域識別子801が格納されている。
領域識別子801は、図1の更新要求反映部11が退避領域3a〜3c及び格納領域5a〜5cを識別する値であり、実施の形態1でのその値は、更新要求反映部11が処理する所定時間単位の時刻(次回更新時刻)である。
領域索引8は、更新要求反映部11が格納領域5a〜5cのいずれかを更新する度に次回更新時刻403を更新し、新たに領域識別子801を設定するので、頻繁かつランダムに更新される。そのため、コンピュータのランダムアクセスメモリを用いて実現することが最適であり、必要な容量を削減するため、領域識別子801は小さな整数で表現することが求められる。
一方、領域索引8の内容はデータ管理装置Aが停止している期間も保持される必要がある。そのため、停止時にはランダムアクセスメモリから磁気ディスク装置に退避されるものとする。
同様に、図1の最終登録順7の値も通常はランダムアクセスメモリに保持し、停止時に磁気ディスク装置に退避することが望ましい。
次に、動作についてフローチャートを用いて説明する。
図8は、更新要求受付部9の動作を示すフローチャートである。
まず、ステップS91で、受け取った更新要求メッセージ1aのキー101aと同一のキー101を持つ更新要求1を一時領域2から検索する。
キー101を持つ更新要求1が一時領域2に存在する場合は、ステップS95に進み、存在しない場合はステップS92に進む。
ステップS92では、新たな更新要求1を一時領域2に書き込むための空き領域が存在するかどうか確認する。
空き領域が存在する場合は、ステップS94に進み、空き領域が存在しない場合は、ステップS93に進む。
ステップS93では、一時領域消去部10を呼び出し、一時領域2の内容を退避領域3a〜3cに格納して一時領域2の空き領域を回復させる。なお、一時領域消去部10の詳細な動作は後述する。
ステップS94では、受け取った更新要求メッセージ1aのキー101aを更新要求1のキー101に、更新要求メッセージ1aの属性更新情報102aを更新要求1の属性更新情報102に、現在時刻を更新要求1の受付時刻103及び最終受付時刻104に、更新要求1の受付回数105に1をそれぞれ設定する。
そして、この様に設定した新たな更新要求1を一時領域に格納し、終了する。
即ち、ステップS94では、更新要求メッセージ1aの内容を新たな更新要求1として一時領域2に格納する。
一方、ステップS95では、ステップS91で受け取った更新要求メッセージ1aのキー101aと同一のキー101を持つ一時領域2の更新要求1に、受け取った更新要求メッセージ1aのマージ処理を行う。
具体的には、まず、更新要求1の属性更新情報102に更新要求メッセージ1aの属性更新情報102aを、用途に応じて上書き(置換)、連結、集計等して併合する。
さらに、更新要求1の最終受付時刻104に現在時刻を設定し、受付回数105に1を加える。これにより、一時領域2の更新要求1は過去に受け取った更新要求メッセージ1aと新たに受け取った更新要求メッセージ1aを合わせた情報を持つことになる。
図9は、一時領域消去部10の動作を示すフローチャートである。
一時領域消去部10は、更新要求受付部9が更新要求1を一時領域2に書き込む際に、書き込むための空き領域がない場合に、一時領域2に空き領域を作るために以下の処理を行う。
(1)格納領域5a〜5cに、一時領域2のキー101と同じキー401のレコード4を持つ場合
(1−1)一時領域2と既存のレコード索引6と領域索引8から新規レコード索引6
を作成する。
(1−2)一時領域2の更新要求1を退避領域3a〜3cに書き出す。
(2)格納領域5a〜5cに、一時領域2のキー101と同じキー401のレコード4がない場合
(2−1)一時領域2の更新要求1をレコード4の形式にし、格納領域5a〜5cに書き出す。
(2−2)最終登録順7と領域索引8の更新を行う。
これらの処理を行って一時領域2の更新要求1を削除することで、一時領域の空きを作成する。
(2−1)の実際の処理では、一時領域2の更新要求1をレコード4の形式にして書込バッファ14b〜14cに書き出し、書込バッファ14b〜14cの総容量が所定値を超えると書込バッファ14b〜14cのレコード4が格納領域5a〜5cにまとめて書き出される。
以下、一時領域消去部10の処理の詳細を述べる。
始めに、ステップS101において、新規レコード索引6として空のレコード索引を作成する。
続いて、ステップS102で、一時領域2の要素を示すポインタ変数pが一時領域2の先頭要素を指すように、また、レコード索引6の要素を示すポインタ変数qが既存のレコード索引6の先頭要素を指すように設定する。
尚、一時領域2は、キー101の昇順に要素(更新要求1)を取り出すことができるよう構成されているものとする。
次に、ステップS103で、一時領域2の要素を示すポインタ変数pが指す更新要求1のキー101(p.key)と、既存のレコード索引6の要素を示すポインタ変数qが指すキー601(q.key)の比較を行う。
そして、p.key<q.keyの場合(更新要求1のキーが既存のレコード索引6に存在しない場合)またはqが有効範囲外の場合(既存のレコード索引6が空の場合、または既存のレコード索引6の要素を示すポインタ変数qが既存のレコード索引6の末尾に達した場合)は、ステップS104に進む。
また、p.key=q.keyの場合(更新要求1のキーが既存のレコード索引6に存在する場合)は、ステップS110に進む。
また、p.key>q.keyの場合(一時領域2に存在しないキーが既存のレコード索引6に存在する場合)、またはpが有効範囲外(一時領域2の要素を示すポインタ変数pが既に一時領域2の末尾に達した場合)は、ステップS114に進む。
次に、ステップS104以降の概略処理を説明する。
ステップS104以降の処理は、更新要求1のキーが既存のレコード索引6に存在しない場合、または既存のレコード索引6の要素を示すポインタ変数qが既存のレコード索引6の末尾に達した場合の処理である。そのため、一時領域2の更新要求1のキー101を新たに新規レコード索引6に追記し、一時領域2の更新要求1を格納する格納領域5a〜5cのいずれかを識別する領域識別子801を領域索引8に追記する。更に、一時領域2の更新要求1をレコード形式にして次回更新時刻以降の格納領域5a〜5cのいずれかに書込バッファ14b〜14cのいずれかを介して格納し、格納領域5a〜5cのいずれかに格納した一時領域2の更新要求1を削除して、一時領域2の空き領域を作る処理を行う。
以下ステップS104以降の処理を詳細に説明する。
ステップS104で、最終登録順7に1を加えて更新する。
続いて、ステップS105では、一時領域2の要素を示すポインタ変数pが指す更新要求1のキー101(p.key)と、更新後の最終登録順7の値を組にして、新規レコード索引6の末尾に追記する。
次に、新たなレコード4の格納領域5a〜5cへの格納位置(格納領域5a〜5cのいずれかの領域識別子801)を領域索引8に設定する処理をステップS106とステップS107で行う。
まず、ステップS106で、現在時刻から所定時間後の時刻(現在時刻以降に更新要求反映部11が動作する予定時刻のいずれか1つの時刻である次回更新時刻)により識別される格納領域5a〜5cのいずれかを識別する領域識別子801を一時的に変数rとして記憶する。
続いて、ステップS107で、更新後の最終登録順7の登録順の値をnとすると、領域索引8の先頭から第n番目の要素(領域識別子801)に先の変数rの値を設定する。
即ち、最終登録順7に対応する領域索引8の要素に、現在時刻から所定時間後の時刻により識別される格納領域5a〜5cのいずれかの領域識別子801を設定する。
また、ステップS108では、一時領域2の要素を示すポインタ変数pが指す更新要求1をレコード形式にして、変数rに対応する書込バッファ14b〜14cのいずれかに追記し、一時領域2の要素を示すポインタ変数pが指す更新要求1を一時領域2から削除し、一時領域2の空き領域を確保する。
書込バッファ14b〜14cのデータ形式は、格納領域5a〜5cと同じであり、各書込バッファ14b〜14cは、次回更新時刻により識別される。
書込バッファ14b〜14cのいずれかに追記する具体的な内容は、一時領域2の要素を示すポインタ変数pが指す更新要求1のキー101(p.key)、属性更新情報102、受付時刻103、最終受付時刻104、受付回数105から1引いた値を、書込バッファ14b〜14cのいずれかのキー401、属性情報402、作成時刻408、最終更新時刻406、更新回数407に設定し(更新回数=受付回数−1)、最終登録順7の値を登録順404に、現在時刻に上記所定時間を加えた時刻を次回更新時刻403に設定する。
平均更新周期405は、更新回数407が0より大きければ、
(最終更新時刻406−作成時刻408)/更新回数407
とし、そうでなければ0とする。
更新要求1をレコード形式にして書込バッファ14b〜14cのいずれかに追記する際に、新たなレコード4を書込む容量を確保できなくなると、各書込バッファ14b〜14cのいずれかの内容を、それぞれの書込ッファ14b〜14cに対応する格納領域5b〜5cのいずれかの末尾にまとめて書き込む処理を行う。
即ち、新たなレコード4を書込もうとした書込バッファ14b〜14cの総容量が所定値を超えた場合に、次回更新時刻により識別される各書込バッファ14b〜14cの内容を同じ次回更新時刻により識別される各格納領域5b〜5cの末尾にまとめて書き込まれる。
このように、各書込バッファ14b〜14cに対応する各格納領域5b〜5cに書き込むことで各書込バッファ14b〜14cを空にする。
続いてステップS109で一時領域2の要素を示すポインタ変数pを1要素分進め、ステップS116に進む。
次に、ステップS110以降の処理の説明に戻る。
ステップS110以降の処理は、更新要求1のキー101と同じキー601が既存のレコード索引6に存在する(格納領域5a〜5cにキー101と同じキー401を持つレコードが存在する)時の処理である。そのため、既存のレコード索引6の内容を新規レコード索引に追記して、更新要求1の内容を退避領域3a〜3cに退避させ、一時領域2の更新要求1を削除して、一時領域2の空き領域を作る処理を行う。
以下ステップS110以降の処理を詳細に説明する。
ステップS110では、既存のレコード索引6の要素を示すポインタ変数qが指すレコード索引6の内容(キー601と登録順602の組)を新規レコード索引6の末尾に追記する。
次に、ステップS111で、既存のレコード索引6の要素を示すポインタ変数qが指す登録順602の値をnとし、領域索引8の先頭から第n番目の要素(領域識別子801)を変数rに設定する。この変数rは、更新要求1のキー101と同じキー401のレコード4が存在する格納領域5a〜5cのいずれかを識別する領域識別子801を示す。
続いて、ステップS112で、変数rに対応する退避領域3a〜3cのいずれかに、一時領域2の要素を示すポインタ変数pが指す更新要求1を追記し、退避領域3a〜3cのいずれかに追記した一時領域2の要素を示すポインタ変数pが指す更新要求1を一時領域2から削除し、一時領域2の空き領域を確保する。
続いてステップS113、で一時領域2の要素を示すポインタ変数p及び既存のレコード索引6の要素を示すポインタ変数qをそれぞれ1要素分進め、ステップS116に進む。
次に、ステップS114以降の処理の説明に戻る。
ステップS114以降の処理は、一時領域2に存在しないキーが既存のレコード索引6に存在する場合、または一時領域2の要素を示すポインタ変数pが既に一時領域2の末尾に達した場合の処理であり、既存のレコード索引6の内容を新規レコード索引6に追記する処理を行う。
詳細には、既存のレコード索引6の要素を示すポインタ変数qが指すレコード索引6の内容(キー601と登録順602の組)を新規レコード索引6の末尾に追記する。
ステップS114以降の処理では、一時領域2に関しての処理は行わない。
続いてステップS115で、qを1要素分進め、ステップS116に進む。
ステップS116は、ステップS109またはステップS113またはステップS115の次に処理され、pが一時領域2の末尾に達し、且つ、qが既存のレコード索引6の末尾に達しているか否かを判断する。
条件が成立しない場合(pまたはqが末尾に達していない場合)は、未処理のデータがあるため、ステップS103に戻る。
ここで、ステップS109を経由してステップS103に戻った場合は、ポインタ変数pのみが1要素分進んだ一時領域2の要素を指し、ステップS115を経由してステップS103に戻った場合は、ポインタ変数qのみが1要素分進んだ既存のレコード索引6の要素を指している。
また、ステップS113を経由してステップS103に戻った場合には、ポインタ変数pとポインタ変数qどちらも1要素分進んだ一時領域2の要素、1要素分進んだ既存のレコード索引6の要素を指している。
ステップS103以降の処理は前述と同様である。
一方、ステップS116で、条件が成立する場合(pとqが末尾に達した場合)は、ステップS117に進み、既存の(元の)レコード索引6を削除して、新規レコード索引6をレコード索引6とし、終了する。
図10は、更新要求反映部11の動作を示すフローチャートである。
更新要求反映部11では、所定時間単位ごとに対応する次回更新時刻で識別される格納領域5b〜5cのいずれかと退避領域3a〜3cのいずれかを読込バッファに読み込み、格納領域5b〜5cのいずれかのレコード4に一時領域2または退避領域3a〜3cのいずれかの更新要求1を反映して書込バッファ14b〜14cのいずれかに追記する。反映した更新要求1は一時領域2または退避領域3a〜3cから削除する。
一時領域2の更新要求1が反映された書込バッファ14b〜14cのいずれかのレコード4は、書込バッファ14b〜14cの総容量が所定値を超えた場合に、まとめて格納領域5b〜5cに書き込まれる。
以下、更新要求反映部11の処理の詳細を述べる。
更新要求反映部11は、所定時間単位ごとに動作し、例えば1時間ごとに実行されるプログラムにより実現される。
更新要求反映部11が所定時間単位ごとに起動する時の現在時刻をtとする。
始めに、ステップS121で、次回更新時刻がtの格納領域t(格納領域5a)のレコード4をまとめて読込バッファ13に読込み、各レコード4をキー401の順にソートし、その先頭アドレスをポインタ変数sに設定する。
続いてステップS122で、ポインタ変数sが示す格納領域5aに対応する退避領域3a(退避領域t)の更新要求1を読込バッファ12に読込んで、各更新要求1をキー101及び受付時刻103の順にソートし、読込バッファ12の先頭アドレスをポインタ変数uに設定する。
ソート条件に受付時刻103を含めているのは、一時領域消去部10で一時領域2から退避領域3aへの書込みが複数回起こった場合に、同一キー101を持つ複数の更新要求1が存在する可能性があるためであり、受付時刻103の順に処理することが目的である。
次にステップS123で、格納領域5aの読込バッファ13を示すポインタ変数sが指すレコード4のキー401(s.key)と、退避領域3aの読込バッファ12を示すポインタ変数uが指す更新要求1のキー101(u.key)を比較する。
両者が等しければステップS124に進み、両者が等しくない、またはポインタ変数uが読込バッファ12の末尾に達した場合には、ステップS125に進む。
ステップS124では、格納領域5aの読込バッファ13を示すポインタ変数sが指すレコード4の内容に退避領域3aの読み込みバッファ14を示すポインタ変数uが指す更新要求1を反映して更新する。
具体的には、格納領域5aのレコード4の属性情報402に退避領域3aの更新要求1の属性更新情報102を反映し、最終更新時刻406に最終受付時刻104を設定し、更新回数407に受付回数105の値を加える。
レコード4の属性情報402に更新要求1の属性更新情報102を反映する方法は、図5の格納領域5a〜5cのレコード4の形式の説明で示したデータの更新と同様である。
その後、さらにポインタ変数uを1要素分進め、ステップS123に戻る。
ステップS125では、格納領域5aの読込バッファ13を示すポインタ変数sが指すレコード4のキー401(s.key)が一時領域2に存在するかどうかを検索する。存在する場合はステップS126に進み、そうでない場合はステップS127に進む。
ステップS126では、格納領域5aの読み込みバッファ13のポインタ変数sが指すレコード4の属性情報402に一時領域2の更新要求1の属性更新情報102を反映して更新する。その方法は、ステップS124と同様(図5の格納領域5a〜5cのレコード4の形式の説明で示したデータの更新と同様)である。
その後、反映した当該更新要求1は一時領域2から削除する。
一時領域2には、同一キー101を持つ更新要求1は複数存在しないため、繰り返しは行わず、ステップS127に進む。
ステップS127では、格納領域5aの読込バッファ13を示すポインタ変数sが指すレコード4の平均更新周期405の値に、
(最終更新時刻406−作成時刻408)/更新回数407
を設定する。
ただし、更新回数407が0の場合(対応する更新要求1が存在しなかった場合)には、平均更新周期405は、所定時間(例えば、図9のステップS106で示した現在時刻から所定時間後の時刻に対応する格納領域5a〜5cのいずれかの領域識別子801を設定する時の所定時間)とする。
さらに、現在時刻に平均更新周期405の値を加えた値(現在時刻に所定時間を加えた値)をt’とし、次回更新時刻403に設定する。
次に、ステップS128で、領域索引8の要素に、更新後の格納領域5aの領域識別子801を設定する。詳細には、格納領域5aの読込バッファ13を示すポインタ変数sが指すレコード4の登録順404に対応する領域索引8の要素に、次回更新時刻t’に対応する領域識別子801の値を設定する。
ステップS129では、格納領域5aの読込バッファ13を示すポインタ変数sが指すレコード4をt’に対応する書込バッファ14b〜14cのいずれかの末尾に追加し、ポインタ変数sを1要素分進める。
なお、書込バッファ14b〜14cに十分な容量がない場合は、図9のステップS108と同様、各書込バッファ14b〜14cの内容を各格納領域5b〜5cに書込みを行う。
即ち、書込バッファ14b〜14cの総容量が所定値を超えた場合に、次回更新時刻により識別される各書込バッファ14b〜14cの内容が同じ次回更新時刻により識別される各各格納領域5b〜5cにまとめて書き込まれる。
このように、各書込バッファ14b〜14cの内容を各格納領域5a〜5cに書き込むことで各書込バッファ14b〜14cを空にする。
続いてステップS130では、格納領域5aの読込バッファ13を示すポインタ変数sが読込バッファ13の末尾に達したか否かを判定し、末尾に達していない場合はステップS123に戻って処理を繰り返す。
末尾に達した場合は、ステップS131に進み、tに対応する次回更新時刻の格納領域5a及び該格納領域5aに対応する退避領域3aを削除して終了する。
図11は、検索処理部17の動作を示すフローチャートである。
検索処理部17は、データ管理装置Aの利用者端末や外部プログラムまたはコンピュータなどから検索要求15を受け取って動作を開始する。
始めにステップS141において、検索要求15の検索キー(Qとする)が、レコード索引6中に存在するか否かを判定する。
検索キーQがレコード索引6に存在しない場合は、ステップS147に進み、更に検索キーQに等しいキー101を持つ更新要求1が一時領域2に存在するか否かを判定する。検索キーQが一時領域2にも存在しない場合は、ステップS148に進み、検索失敗通知を要求元に応答して動作を終了する。
検索キーQがレコード索引6に存在する場合は、ステップS142において、レコード索引6からキー601が検索キーQに等しい組の登録順602を取得しwとする。
続いてステップS143で、領域索引8の先頭から第w番目に対応する要素を取得し、その要素の領域識別子がxであるとする。
さらに、ステップS144で、領域識別子xに対応する書込バッファ14b〜14cのいずれか及び格納領域5a〜5cのいずれかを先頭から順次走査し、検索キーQに等しいキー401のレコード4を取得してそのコピーを作成する。
次に、ステップS145で、領域識別子xに対応する退避領域3a〜3cのいずれかを先頭から走査するとともに、一時領域2を検索する。
検索キーQに等しいキー101の更新要求1が存在する場合は、受付時刻103の昇順に、各更新要求1の内容(属性更新情報102aなど)を上記レコード4のコピーに反映させ、上記レコード4のコピーの内容(属性情報402など)を更新する。
続いてステップS146において、更新後のレコード4の属性情報402を検索応答16として要求元に応答して動作を終了する。
また、ステップS147で、検索キーQに等しいキー101を持つ更新要求1が一時領域2に存在する場合は、ステップS149に進み、当該更新要求1に基づいてレコード4を作成し、ステップS146に進む。
なお、この発明の実施の形態では、更新要求1の履歴として、最初に更新要求1を受け付けた時刻(作成時刻)と最終更新時刻、及びその間の更新回数を用い、全期間を対象とする平均更新周期を求めている。
一方、レコード4の更新頻度が時間とともに変化することも多く、過去の情報を全て保持していると、傾向の変化に追随できないこともある。そこで、更新要求の履歴として、N個以下の範囲で、最近の更新時刻を保持しておき、それらの値からレコード4の最近の平均更新周期を求めることも考えられる。
また、この発明の実施の形態では、この発明の実施の形態では、更新要求1のキーがレコード索引6に存在しない場合に、現在時刻から所定時間後の時刻を次回更新時刻として、次回更新時刻で識別される格納領域5a〜5cのいずれかに対応する書込バッファ14b〜14cのいずれかに更新要求1をレコード形式にして追記するとしているが、現在時刻以降の時刻を乱数で設定した時刻を次回更新時刻として、次回更新時刻で識別される格納領域5a〜5cのいずれかに対応する次回更新時刻で識別される書込バッファ14b〜14cのいずれかに追記することもできる。
即ち、現在時刻以降に更新要求反映部11が動作するいずれか1つの時刻の次回更新時刻の書込ッファ14b〜14cに追記することができる。
また、この発明の実施の形態において、昇順にして処理をしているところは、降順にして処理をしてもよく、その場合には、ステップS103等のp.keyとq.keyの大小関係も合わせて逆転するなど降順に合わせて処理を行うことで可能となる。
また、本発明において、格納領域5a〜5c及び退避領域3a〜3cを分割する時間単位を固定ではなく可変とすることで、短周期から長周期までの広い範囲で更新される様々なレコード4を効率よく管理することが可能になる。
また、この発明の実施の形態1では、図11に示したように、検索処理部17は一時領域2を最後に検索し、レコード4の古い内容に更新を加えるものとしている。しかし、用途によってはレコード4の属性情報402に対し、更新要求1の属性更新情報102を単純に上書きすることでレコードの更新が達成されることもある。このような場合には、検索処理部17は一時領域2を最初に検索し、一致するキーが存在する場合には直ちにその内容に基づいて最新のレコード4の内容を応答することができる。
これにより、高頻度に更新されるレコード4に対し、検索も高速に実現することが可能になる。
また、この発明の実施の形態1では、ハイパーリンク先URLをキーとして、属性更新情報に参照元WebページのURLが格納されている例を示したが、参照元WebページのURLをキーとして、属性更新情報102にハイパーリンク先URLが格納される場合であってもよい。
特許文献2では、システム自身が決定した更新時刻に、外部の情報源に更新要求1の属性更新情報102を取得しに行き、データの更新を行っていた。しかし、外部からの更新要求を処理する方法について、単発の要求がまれに発生することにしか対応できなかった。
本発明のデータ管理装置によれば、外部からの更新要求1を複数受け付け、蓄積された複数の更新要求1の属性更新情報102を高速にまとめて処理することが可能である。
また、この発明の実施の形態1では、データ管理装置Aの具体的な用途として、Webページの被参照リンク(バックリンク)を管理することを例に挙げた。
別の重要な応用としては、全文検索のための転置リストの逐次更新が挙げられる。
この場合、キーはWebページ等文書に含まれる単語であり、属性情報は当該単語が出現する文書の識別情報となる。
従来のデータ管理装置(特許文献1)では、追加された文書に関する転置リストを小索引として本体索引と分離して管理することでスループットの向上を図っていた。しかし、小索引が増えるといずれは本体索引とマージする必要が生じ、その際に大きな遅延が発生することを避けられなかった。
本発明のデータ管理装置によれば、必要最小限のマージ処理を常時実行することにより、全体のスループットを高めるとともに、スループットの変動を避け、安定した性能を提供することが可能になる。
以上のようにこの発明の実施形態によれば、受け付けた更新要求1を高速・小容量の一時領域2に記憶させるとともに、一時領域2の容量が不足した際には、退避領域3へ時系列に追記することにより更新要求1の書込みを行う。そのため、一時領域2上の更新要求1を直ちにレコード4に反映する従来のデータ管理装置で起こる磁気ディスク装置上へのランダムアクセスを回避し、非常に高いスループットで更新要求を受け付けることができる。
また、複数の退避領域3a〜3cのそれぞれは同じ次回更新時刻で識別される格納領域5a〜5cと対応し、同時刻にシーケンシャルに読み出されて処理されるので、実際のレコード4の更新まで含めたスループットも非常に高い。
各レコード4が処理される時刻は、レコード4毎の過去の更新履歴から算出した平均更新周期に基づいて予測したものであり、レコード4に対応する更新要求が到着している可能性が高く、データ全体を一括して更新する従来手法に比べて、不要な磁気ディスクアクセスの回避により、高い性能を実現できる。
一方、レコード4に更新要求1を反映する前に、新たな更新要求1が到着した場合は、一時領域2上で更新要求1の併合を行うので、一時領域2を効率的に使用するとともに、レコード4への更新反映処理を効率化することができる。
また、格納領域5a〜5cへの書込みを直ちに行わず、それぞれに対応する可変容量の書込バッファ14b〜14cにレコード4を蓄え、全ての書込バッファ14b〜14cの総容量が所定値を超えた場合に、まとめて格納領域5a〜5cへの書込みを行う。そのため、格納領域5a〜5cごとに固定容量の書込バッファ14b〜14cを設けた場合と比較し、格納領域5a〜5cごとの書込み量の偏りを吸収し、磁気ディスク装置への書込みアクセスを高速化することができる。
さらに、レコード4のキーとレコード4が格納または退避されている領域との対応を把握するために、領域索引8とレコード索引6の組合せを用いる。そのため、レコード4の更新に合わせて更新される領域索引8をRAM上に配置して高速にアクセスするとともに、更新要求1の退避領域3a〜3cへの書込みや検索等、比較的低頻度な事象に際して必要になる情報も矛盾なく管理することができる。
実施の形態2.
この発明の実施の形態2にかかるデータ管理装置Aでは、各レコードの格納領域5a〜5cを、次回更新時刻ではなく、レコード4のキー401にハッシュ関数を適用した値に基づいて複数の格納領域5a〜5cに静的(固定的)に決定する。
実施の形態2では、図1において、レコード索引6、最終登録順7、領域索引8を除き、書込バッファ14b〜14cを単一のものとした構成を取る。
退避領域3a〜3cは、格納領域5a〜5cと同様に複数設けられ、格納領域5a〜5cと1対1に対応する。
また、動作について、更新要求受付部9は実施の形態1と同様である。
一時領域消去部10については、一時領域2の領域が不足した場合に、一時領域2の更新要求1のキー101にハッシュ関数を適用し、適用した値(ハッシュ値)に基づいて記憶されている退避領域3a〜3cのいずれかに一時領域2の更新要求1を時系列に記憶して、一時領域2の空き領域を確保する。
実施の形態2では、レコード索引6を持たないため、一時領域2の更新要求1のキー101が格納領域5a〜5cに存在するか否かを判定するには、キー101に対応する格納領域5a〜5cを走査する必要がある。それを避けるために、一時領域2の領域が不足した場合に、一時領域消去部10では、全ての更新要求1を退避領域3a〜3cのいずれかに格納する。
次回更新時刻、登録順、レコード索引、領域索引に関する処理は不要である。
また、更新要求反映部11は、定期的に格納領域5a〜5cの先頭からレコード4を読込バッファ13に読み出し、各格納領域5a〜5cのレコード4に退避領域3a〜3cの更新要求1を反映する。その後、一時領域2の更新要求1を反映して、単一の書込バッファ14を介して、元の格納領域5a〜5cの領域に順に更新したレコード4を格納する。
その際、格納領域5a〜5cに存在しないキー101を持つ退避領域3a〜3cの更新要求1は、形式を変換して新たなレコード4とする。
また、検索処理部17は、検索要求15の検索キーQにハッシュ関数を適用した値に基づいて書込バッファ14b〜14c及び格納領域5a〜5cの順で検索し、対応するレコード4(最初に検出したもの)に退避領域3a〜3c及び一時領域2の更新要求1を受付時刻の昇順に全て反映し、更新後のレコード4の属性情報402を検索応答16として返す。
検索キーQに対応するレコード4が見つからない場合は、退避領域3a〜3c及び一時領域2を検索し、検索キーQに等しいキー101を持つ更新要求1の内で最も小さな受付時刻を持つものをコピーしてレコード4の形式に変換し、残りの更新要求1を受付時刻の昇順に全て反映し、更新後のレコード4の属性情報402を検索応答16として返す。
この発明の実施の形態2によれば、格納領域の先頭から更新のないレコードも含めて読み出すため、不要な磁気ディスクアクセスが発生してしまうものの、ランダムアクセスは避けられるため、レコードの更新頻度に応じて十分な高速化効果が得られる。
また、全レコードを一括して更新する従来手法に比べ、スループットが低下する期間を短縮・分散し、性能の安定化を実現することができる。
実施形態3.
この発明の実施の形態3にかかるデータ管理装置Aでは、実施の形態1における退避領域3a〜3cを格納領域5a〜5cで兼用する。
即ち、一時領域2に空きがない場合に、一時領域消去部が、一時領域2の更新要求1を格納領域5a〜5cのいずれかに記憶し、一時領域2に空きを確保すること以外は実施の形態1と同様である。
動作について、更新要求受付部9は実施の形態1と同様である。
一時領域消去部10は、一時領域2の領域が不足した場合に、一時領域2の更新要求1を更新要求1のキー101が対応する退避領域3a〜3cのいずれかに追記する代わりに、更新要求1のキー101に対応する格納領域5a〜5cのいずれかの末尾に書き込む。この時の格納領域5a〜5cのいずれかは、レコード索引6及び領域索引8から特定する。書き込む更新要求1は、レコード形式に変換せず、更新要求1の形式のままで追記される。
格納領域5a〜5cの中では、レコード形式と更新要求の形式の複数の形式が混在することになるため、更新情報1及びレコード4は形式を識別する情報を含み、相互に区別可能とする。その他の動作は、実施の形態1と同様である。
また、更新要求反映部11は、所定時間単位ごとに対応する次回更新時刻の格納領域5a〜5cのいずれかを格納領域5aとすると、格納領域5aから更新情報1とレコード4を分離し、退避領域3aを別に設けていた実施の形態1と同様の処理を行う。
これは、例えば、格納領域5aの内容をキー順にソートし、同一キーに対応する更新情報1とレコード4を連続して読込バッファ12と読み込みバッファ13に読み込むことで実現できる。
具体的な処理を実施の形態1の図10の動作フローで示すと、S121及びS122の動作が次の様な処理に置き換わる。
所定時間単位ごとに対応する次回更新時刻の格納領域5a(格納領域t)のデータを全て読込バッファ13に読み込み、キー順にソートする。
次に、図10のS123の処理の前に新しいステップS122’が追加され、ここでは、読込バッファ13の先頭からキーの変わり目を特定する。そして、そのキーの変わり目を特定した読込バッファ13のアドレスをポインタ変数yに設定し、キーの変わり目までに検出したレコード4(1つ)と更新要求1(0以上)を処理対象とする。
この時、検出したレコード4と更新要求1から、データの形式を識別する情報によってレコード4を特定し、ポインタ変数rに設定する。
一方、キーの変わり目までに見つけた更新要求1は、読み込みバッファ12にコピーして受付時刻順にソートし、その先頭のアドレスをポインタ変数pに設定する。レコード4と対応する更新要求1が見つからない場合は、ポインタ変数pを有効範囲外とする。
S123〜S128の処理は、実施の形態1と同様であり、S129では、「sを1要素分進める」を「rにyを設定する」とする。
また、S130からの戻り先をS122’とする。S124からの戻り先は、S123のままである。
また、検索処理部17は、検索要求15の検索キーQがレコード索引6に存在するかどうかをみて、存在すればレコード索引6及び領域索引8から検索キーQに対応する領域識別子xを取得し、領域識別子xに対応する書込バッファ14b〜14cのいずれか及び格納領域5a〜5cのいずれかの順に検索キーQと一致する最初のレコード4を検索する。
そして、そのレコード4に対して、格納領域5a〜5cのいずれかまたは一時領域2の更新要求1を受付時刻の昇順に全て反映して、レコード4の属性情報402を検索応答16として返す。
検索キーQに対応するレコード4が見つからない場合は、一時領域2を検索し、検索キーQに等しいキー101を持つ更新要求1が存在すれば、その属性更新情報102を検索応答16として返す。
この発明の実施形態によれば、作成される領域の数を半減させることにより、磁気ディスク装置上の記憶領域割当ての効率やアクセス性能を向上させることができる。
A データ管理装置、1a 更新要求メッセージ、1 更新要求、2 一時領域、3a 退避領域t、3b 退避領域t+1、3c 退避領域t+n、4 レコード、5a 格納領域t、5b 格納領域t+1、5c 格納領域t+n、6 レコード索引、7 最終登録順、8 領域索引、9 更新要求受付部、10 一時領域消去部、11 更新要求反映部、12 読み込みバッファ、13 読み込みバッファ、14b 書込バッファt+1、14c 書込バッファt+n、15 検索要求、16 検索応答、17 検索処理部、101a キー、102a 属性更新情報、101 キー、102 属性更新情報、103 受付時刻、104 最終受付時刻、105 受付回数、401 キー、402 属性情報、403 次回更新時刻、404 登録順、405 平均更新周期、406 最終更新時刻、407 更新回数、408 作成時刻、601 キー、602 登録順、801 領域識別子。

Claims (9)

  1. 外部から受け付けたデータの更新内容と該データを特定するキーを含む更新要求を記憶する主記憶装置内の一時領域と、
    前記更新要求によって更新されるデータと該データを特定するキーを含むレコードを記憶する外部記憶装置内の格納領域と、
    前記格納領域に格納されているレコードのキーと一致するキーを持つ前記更新要求を記憶する外部記憶装置内の退避領域と、
    新たな更新要求を前記一時領域に記憶する際に前記一時領域が不足した時、前記一時領域の更新要求に基づいて更新されるレコードが前記格納領域にある場合は、該レコードが記憶されている前記格納領域に対応する前記退避領域へ前記一時領域の更新要求を記憶して、前記一時領域から前記記憶した更新要求を削除し、前記一時領域の更新要求に基づいて更新されるレコードが前記格納領域にない場合は、前記一時領域の更新要求をレコードにして前記格納領域に記憶して、前記一時領域から前記記憶した更新要求を削除する一時領域消去部と、
    所定時間単位ごとに動作し、前記格納領域のレコードのキーと一致するキーを持つ前記一時領域または前記退避領域の少なくともいずれか一方に格納されている前記更新要求に基づいて該レコードを更新し、前記更新した更新要求を削除する更新要求反映部と、
    を備えたことを特徴とするデータ管理装置。
  2. 前記キーを含む検索要求を受け付け、該キーで特定される前記レコードを最新の内容で応答する検索処理部を更に備え、
    前記検索処理部は、前記検索要求のキーと一致する前記格納領域のレコードを検索して該レコードを取得し、該レコードとキーが一致する一時領域または退避領域の更新要求を反映して前記レコードを最新の内容にすることを特徴とする請求項1に記載のデータ管理装置。
  3. 前記レコードは、現在時刻以降に前記更新要求反映部が動作する時刻を次回更新時刻として含み、
    前記次回更新時刻により識別される複数の前記格納領域と、前記次回更新時刻により識別される前記格納領域に対応して前記次回更新時刻により識別される複数の前記退避領域とを備え、
    前記一時領域消去部は、前記一時領域の更新要求に基づいて更新されるレコードが前記格納領域にある場合は、該レコードが記憶されている前記次回更新時刻により識別される前記格納領域に対応する前記次回更新時刻により識別される前記退避領域へ前記一時領域の更新要求を記憶し、前記一時領域から前記記憶した更新要求を削除し、前記一時領域の更新要求に基づいて更新されるレコードが前記格納領域にない場合は、前記次回更新時刻を設定し、前記設定した次回更新時刻により識別される前記格納領域に前記一時領域の更新要求をレコードにして記憶し、前記一時領域から前記記憶した更新要求を削除し、
    前記更新要求反映部は、前記次回更新時刻により識別される前記格納領域単位にレコードの更新処理を行い、該レコードの更新は、更新前のレコードを記憶する第1の前記次回更新時刻により識別される第1の前記格納領域に対応して第1の前記次回更新時刻により識別される第1の前記退避領域に記憶されている更新要求に基づいて該レコードを更新し、次に該レコードのキーと一致するキーを持つ前記一時領域の更新要求に基づいて前記格納領域のレコードを更新し、該更新したレコードを第2の次回更新時刻により識別される第2の前記格納領域に記憶し、前記第1の次回更新時刻により識別される第1の前記格納領域のレコードが全て更新されると、前記第1の前記格納領域のレコードと前記第1の前記退避領域の更新要求を削除することを特徴とする請求項1または請求項2記載のデータ管理装置。
  4. 前記更新要求は、前記更新要求を受け付けた受付時刻を含み、
    前記レコードは、該レコードのキーと一致するキーを持つ前記更新要求の受付時刻の履歴情報を含み、
    前記更新要求反映部は、現在時刻に前記受付時刻の履歴情報に基づいて算出した平均更新周期を加えて前記次回更新時刻とし、前記レコードを前記退避領域の更新要求で更新する際に前記更新要求の受付時刻順に更新し、更新する際に前記レコードに該次回更新時刻を記憶することを特徴とする請求項3に記載のデータ管理装置。
  5. 前記格納領域のレコードに対応する更新要求を最初に受け付けた順の登録順と該レコードのキーとを対応付けて記憶するレコード索引と、
    前記次回更新時刻により識別される複数の前記格納領域から前記レコードが記憶される前記格納領域を識別する領域識別子を前記登録順が示す配列に記憶する領域索引を更に備え、
    前記レコードは前記登録順を含み、
    前記一時領域消去部は、前記一時領域の更新要求のキーが前記レコード索引に存在する場合は、前記領域索引の領域識別子を参照して、前記キーで特定されるレコードを記憶する前記格納領域の前記領域識別子を求め、前記領域識別子で識別される格納領域に対応する前記次回更新時刻により識別される前記退避領域に前記一時領域の更新要求を記憶して、前記一時領域から前記記憶した更新要求を削除し、前記一時領域の更新要求のキーが前記レコード索引に存在しない場合は、前記一時領域の更新要求をレコードにして前記次回更新時刻により識別される前記格納領域に記憶し、前記更新要求のキーと記憶した新しい登録順を対応付けて前記レコード索引に追加し、記憶した前記次回更新時刻により識別される前記格納領域の前記領域識別子を前記領域索引に追加し、前記一時領域から前記記憶した更新要求を削除し、
    前記更新要求反映部は、更新したレコードを記憶する前記第2の次回更新時刻により識別される前記格納領域の領域識別子を前記領域索引の前記新しい登録順が示す配列に記憶することを特徴とする請求項3または請求項4に記載のデータ管理装置。
  6. 前記次回更新時刻により識別される格納領域に対応して、前記次回更新時刻により識別される格納領域に記憶されるレコードを記憶する前記次回更新時刻により識別される複数の書込ッファを更に備え、
    前記一時領域消去部は、前記一時領域の更新要求に基づいて更新されるレコードが前記格納領域にない場合は、前記次回更新時刻により識別される前記格納領域に対応する前記次回更新時刻により識別される前記書込バッファに前記一時領域の更新要求をレコードにして記憶し、前記一時領域から前記記憶した更新要求を削除し、前記書込バッファの容量が所定値になると前記次回更新時刻により識別される前記書込ッファのレコードを対応する前記次回更新時刻により識別される前記格納領域に記憶し、前記書込ッファから前記記憶したレコードを削除し、
    前記更新要求反映部は、前記第2の次回更新時刻により識別される前記格納領域に対応する前記第2の次回更新時刻により識別される前記書込ッファに更新したレコードを追記し、前記書込ッファの容量が所定値になると前記次回更新時刻により識別される前記書込ッファのレコードを該書込ッファに対応する前記次回更新時刻により識別される前記格納領域に記憶することを特徴とする請求項3〜5のいずれか一項に記載のデータ管理装置。
  7. 前記レコードは、前記レコードのキーに任意のハッシュ関数を適用した値に基づいて前記格納領域に記憶し、
    前記一時領域消去部は、前記一時領域の前記更新要求のキーにハッシュ関数を適用した値に基づいて前記退避領域に該更新要求を記憶して、前記一時領域から前記記憶した更新要求を削除し、
    前記更新要求反映部は、所定時間単位に前記格納領域の先頭から前記レコードを読出し、該レコードのキーと一致するキーを持つ前記一時領域または前記退避領域の少なくともいずれか一方に格納される更新要求に基づいて該レコードを更新し、前記格納領域に存在しないレコードのキーを持つ前記退避領域の前記更新要求をレコードにして前記格納領域に記憶することを特徴とする請求項1または請求項2に記載のデータ管理装置。
  8. 外部から受け付けたデータの更新内容と該データを特定するキーを含む更新要求を記憶する主記憶装置内の一時領域と、
    前記キーで特定されるレコードまたは前記更新要求はそれぞれのデータの形式を識別する情報であるデータ形式を含み、前記レコードまたは更新要求の少なくともいずれか一方を記憶する外部記憶装置内の格納領域と、
    新たな更新要求を前記一時領域に記憶する際に前記一時領域が不足した時、前記一時領域の更新要求のキーと一致するキーを持つレコードまたは更新要求が記憶されている格納領域に、前記一時領域の更新要求を記憶し、前記一時領域から前記記憶した更新要求を削除する一時領域消去部と、
    所定時間単位に前記格納領域の先頭から同一キーの前記レコードと前記更新要求を検出し、前記データ形式に基づいて前記レコードと前記更新要求に分離して、前記分離したレコードのキーと一致するキーを持つ前記一時領域の更新要求または前記分離した更新要求の少なくともいずれか一方に基づいて該レコードを更新し、前記更新した更新要求を削除する更新要求反映部と、
    を備えることを特徴とするデータ管理装置。
  9. データを特定するキーを含むレコードが外部記憶装置内の格納領域に記憶され、外部から受け付けるデータの更新内容に基づいて前記レコードを更新するデータ管理装置のデータ管理方法において、
    前記データ管理装置の更新要求受付部が、外部から受け付けたデータの更新内容と該データを特定するキーを含み、主記憶装置内の一時領域に記憶する更新要求を受け付ける更新要求受付ステップと、
    前記データ管理装置の一時領域消去部が、新たな更新要求を前記一時領域に記憶する際に前記一時領域が不足した時、前記更新要求に基づいて更新されるレコードが前記格納領域にある場合は、該レコードが格納されている前記格納領域に対応する退避領域へ前記一時領域の更新要求を記憶して、前記一時領域から前記記憶した更新要求を削除し、前記一時領域の更新要求によって更新されるレコードが前記格納領域にない場合は、前記一時領域の更新要求をレコードにして前記格納領域に記憶して、前記一時領域から前記記憶した更新要求を削除する一時領域消去ステップと、
    前記データ管理装置の更新要求反映部が、所定時間単位ごとに動作し、前記格納領域のレコードのキーと一致するキーを持つ前記一時領域または退避領域の少なくともいずれか一方に格納される前記更新要求に基づいて該レコードを更新し、前記更新した更新要求を削除する更新要求反映ステップと、
    を備えたことを特徴とするデータ管理方法。
JP2010279255A 2010-12-15 2010-12-15 データ管理装置及びデータ管理方法 Expired - Fee Related JP5655538B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010279255A JP5655538B2 (ja) 2010-12-15 2010-12-15 データ管理装置及びデータ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010279255A JP5655538B2 (ja) 2010-12-15 2010-12-15 データ管理装置及びデータ管理方法

Publications (2)

Publication Number Publication Date
JP2012128640A JP2012128640A (ja) 2012-07-05
JP5655538B2 true JP5655538B2 (ja) 2015-01-21

Family

ID=46645590

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010279255A Expired - Fee Related JP5655538B2 (ja) 2010-12-15 2010-12-15 データ管理装置及びデータ管理方法

Country Status (1)

Country Link
JP (1) JP5655538B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649403B (zh) 2015-11-04 2020-07-28 深圳市腾讯计算机系统有限公司 文件存储中的索引实现方法和系统
US11762913B2 (en) * 2019-12-31 2023-09-19 Micron Technology, Inc. Cursor seek operations using deleted record spans
KR102216841B1 (ko) * 2020-05-19 2021-02-18 (주)이스트소프트 유동적인 메모리 사용을 기반으로 하는 고속 압축 해제를 위한 장치, 이를 위한 방법 및 이 방법을 수행하기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록매체

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05151046A (ja) * 1991-11-30 1993-06-18 Nec Corp フアイル入出力情報測定装置
JP5448428B2 (ja) * 2008-11-27 2014-03-19 三菱電機株式会社 データ管理システム及びデータ管理方法及びデータ管理プログラム

Also Published As

Publication number Publication date
JP2012128640A (ja) 2012-07-05

Similar Documents

Publication Publication Date Title
CN111226205B (zh) Kvs树数据库
TWI719281B (zh) 用於串流選擇之系統、機器可讀媒體、及機器實施之方法
TWI702503B (zh) 實施用於維護操作之合併樹修改之系統、方法及電腦可讀媒體
CN110268394B (zh) 用于存储和操作键值数据的方法、系统及机器可读存储媒体
US20200175070A1 (en) Low ram space, high-throughput persistent key-value store using secondary memory
TWI702506B (zh) 用於合併樹廢棄項目指標之系統、機器可讀媒體及機器實施之方法
KR101708261B1 (ko) 개별 액세스 가능한 데이터 유닛의 스토리지 관리
US8489553B2 (en) Managing storage of individually accessible data units
US8099421B2 (en) File system, and method for storing and searching for file by the same
EP1866776B1 (en) Method for detecting the presence of subblocks in a reduced-redundancy storage system
US20040205044A1 (en) Method for storing inverted index, method for on-line updating the same and inverted index mechanism
CA2791261C (en) Managing storage of individually accessible data units
US10509769B1 (en) Method to efficiently track I/O access history
CN102819586A (zh) 一种基于高速缓存的url分类方法和设备
CN111061752B (zh) 数据处理方法、装置及电子设备
CN112262379B (zh) 存储数据项并且标识存储的数据项
CN114780530A (zh) 基于lsm树键值分离的时序数据存储方法及系统
CN113553476A (zh) 一种利用哈希减少写停顿的键值存储方法
JP5655538B2 (ja) データ管理装置及びデータ管理方法
CN117573032A (zh) 一种基于RocksDB数据库写放大的优化方法
WO2011137684A1 (zh) 基于嵌入式系统的信息记录的检索方法和装置
WO2023141987A1 (zh) 文件读取方法和装置
JP5247192B2 (ja) 周期更新データ管理システム
CN118689413A (zh) 数据的删除方法和装置、存储介质及电子设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130930

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140307

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20140326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140415

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140530

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141028

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141110

R151 Written notification of patent or utility model registration

Ref document number: 5655538

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees