JP2011165000A - データ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラム - Google Patents

データ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラム Download PDF

Info

Publication number
JP2011165000A
JP2011165000A JP2010028077A JP2010028077A JP2011165000A JP 2011165000 A JP2011165000 A JP 2011165000A JP 2010028077 A JP2010028077 A JP 2010028077A JP 2010028077 A JP2010028077 A JP 2010028077A JP 2011165000 A JP2011165000 A JP 2011165000A
Authority
JP
Japan
Prior art keywords
key value
record
logical block
data
offset
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.)
Granted
Application number
JP2010028077A
Other languages
English (en)
Other versions
JP5354606B2 (ja
Inventor
Takahiro Yamazaki
敬広 山崎
Takeshi Inoue
武 井上
Hiroshi Sato
浩史 佐藤
Noriyuki Takahashi
紀之 高橋
Hiroyuki Morikawa
博之 森川
Masateru Minami
正輝 南
Ka Tsukasa
化 司
Toshiki Hayashi
敏樹 林
Junichiro Takagi
潤一郎 高木
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.)
Nippon Telegraph and Telephone Corp
University of Tokyo NUC
Original Assignee
Nippon Telegraph and Telephone Corp
University of Tokyo NUC
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 Nippon Telegraph and Telephone Corp, University of Tokyo NUC filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2010028077A priority Critical patent/JP5354606B2/ja
Publication of JP2011165000A publication Critical patent/JP2011165000A/ja
Application granted granted Critical
Publication of JP5354606B2 publication Critical patent/JP5354606B2/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)

Abstract

【課題】 sparse indexの書き込み性能を維持したまま、入力データ順序の逆転にも対応したデータ構造によりデータを蓄積すると共に、蓄積されたデータを探索キーにより検索することを可能にする。
【解決手段】 データを蓄積する際には、sparse indexに基づく構造のデータに加えて、データファイルの各論理ブロックに1対1で対応したデータであって、当該論理ブロックの範囲内のキー値が別の論理ブロックにある場合に、その別のブロックへのオフセットを論理ブロック単位で示すオフセットデータを保存する。また、検索する際には、索引ファイルに基づき対象となる論理ブロックを探索しても所望のキー値を持つレコードが見つからない場合に、オフセットデータが示すオフセットだけ当該論理ブロックより後ろの論理ブロックを読み込み、その論理ブロックを対象として探索を行う。
【選択図】 図1

Description

本発明は、データ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラムに係り、特に、二次記憶装置にデータを蓄積、及び、二次記憶装置のデータを検索するためのデータ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラムに関する。
詳しくは、コンピュータ上で二次記憶装置に論理ブロック単位で逐次データ蓄積を行うデータ蓄積装置及び方法及びプログラム、及び蓄積されたデータを検索条件に基づいて検索するデータ検索装置及び方法及びプログラムに関する。
従来の二次記憶装置へのデータ蓄積方法では、レコードといういくつかの情報を1つに纏めたデータをデータ格納する際の最小単位として扱っている。また、二次記憶装置への最小アクセス単位として物理ブロックがあり、これをシステム上で仮想的に扱えるようにしたものを論理ブロックと呼ぶ。ファイルは複数の論理ブロックから成り立ち、論理ブロックは複数のレコードを含むことが多い。
また、特定のレコードを効率的に検索するために、索引が用いられている。索引はレコードが持つ任意の属性の値について作成することができる。このときこの索引を作成する任意の属性の値のことを「キー値」と呼ぶ。この索引付けの方法のうち、範囲検索を行える方法として、dense indexとsparse indexがある(例えば、非特許文献1参照)。Dense indexはデータの入力順に左右されず、入力された全てのレコードについて索引を作成する。これに対し、sparse indexでは、データの入力順を利用して、入力されたレコードのうち一部のレコードについてのみ索引を作成する。索引が作成されないレコードに関しては、入力順がキー値についてソートされているという前提の元で探索を行う。このため、sparse indexはデータの入力順がキー値についてソートされているときに限り使うことのできる方法である。
Abraham Silberschatz, Henry F. Korth, S. Sudarshan, "Database System concepts fifth Edition", pp. 483-485, McGraw-Hill (2006).
センサネットワークを通じて集められる大量の時系列センサデータなどを時刻をキー値として範囲検索可能な形でリアルタイムに二次記憶装置へ蓄積しようとする場合、データ書き込みの高速性が求められる。しかしながら、従来の索引付け方法のうち、dense indexを用いる場合、入力される各レコード毎に索引を作成する必要があるため、データ書き込み時のコストがsparse indexに比べて高く、データの書き込み速度がデータの発生に追いつかない。一方で、sparse indexを用いるためには、入力されるデータがキー値(この場合、時刻)についてソートされた状態で入力される必要がある。しかし、センサネットワークを通じて集められる大量の時系列データはネットワークの遅延などによって入力されるデータの時刻データが逆転することが考えられる。このため、時刻をキー値とすると、キー値によってソートされていないデータとなるため、sparse indexを用いることができない。
本発明は、上記の点に鑑みなされたもので、sparse indexの書き込み性能を維持したまま、入力データ順序の逆転にも対応したデータ構造によりデータを蓄積するデータ蓄積装置及び方法及びプログラム、及び、蓄積されたデータを検索するためのデータ検索装置及び方法及びプログラムを提供することを目的とする。
図1は、本発明の原理構成図である。
本発明(請求項1)は、コンピュータ上で二次記憶装置130に論理ブロック単位で逐次データ蓄積を行う場合に、データの順序の逆転が起こっても高速な書き込みと完全一致検索及び範囲検索を行うためのデータ蓄積装置であって、
インタフェース110を介して入力されたレコードを論理ブロック分だけ蓄積するバッファメモリ120と、
バッファメモリ120に蓄積されたレコードを読み出し、該レコードを二次記憶装置130に蓄積する際に、該レコードのデータがsparse indexに基づく構造であり、該二次記憶装置130の各論理ブロックに1対1で対応し、該論理ブロックの範囲内のキー値が別の論理ブロックにある場合に、該別の論理ブロックへのオフセットを論理ブロック単位で示すオフセットデータを該二次記憶装置130に書き込むシステム制御手段100を有する。
また、本発明(請求項2)は、請求項1のデータ蓄積装置において、
二次記憶装置130は、
入力されるレコードを論理ブロック毎に格納するデータファイルと、
データファイルの各論理ブロックのレコードのキー値に対する索引を格納した索引ファイルと、
を有し、
データファイルの各論理ブロックは、
実データを格納するレコード部と、特定の論理ブロックへのオフセットを論理ブロック単位で表す固定長のビット列からなるヘッダ部から構成され、
論理ブロックは扱うキー値の範囲を持ち、
システム制御手段100は、
論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックのヘッダ部のビット列のオフセットと等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すようにデータファイルに書き込む手段を含む。
また、本発明(請求項3)は、請求項2のデータ蓄積装置において、
システム制御手段100は、
バッファメモリ120のレコードをキー値に基づいて昇順にソートするソート手段と、
バッファメモリ120のレコードをデータファイルのレコード部に書き込み、データファイルのオフセットデータの初期値として、全ビットを「0」にしたビット列をヘッダ部に書き込む初期化手段と、
索引ファイルを参照して、索引内の最大のキー値を探索し、その値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、索引ファイルに書き込む索引ファイル生成手段と、
バッファメモリ120の先頭のレコードのキー値が下限値Lであれば、索引ファイルにおいて参照中のレコードのキー値以上で最も値が小さいキー値を探索し、該キー値が指すレコードを含む論理ブロックをデータファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成手段と、
読み込んだ論理ブロックのヘッダ部分のオフセットを表すビット列bを読み込み、ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成手段と、
ビット列cを、読み込んだ論理ブロックのヘッダ部にオフセットデータとしてデータファイルに上書きする書き込み手段と、
バッファメモリ120から次のレコードを読み出して、該レコードのキー値が下限値L以下である場合は、第1のビット列生成手段、第2のビット列生成手段、書き込み手段を、該バッファメモリに次のレコードがなくなるまで繰り返す手段と、を有する。
また、本発明(請求項4)は、請求項1のデータ蓄積装置において、
二次記憶装置130は、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックを格納するデータファイルと、
データファイルの各論理ブロックのレコードのキー値に対する索引を格納する索引ファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列はデータファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、
を有し、
各論理ブロックは扱うキー値の範囲を持ち、
システム制御手段100は、
論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックに対応したオフセットファイルのビット列のオフセット数と等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すようにオフセットファイルに書き込む手段を含む。
また、本発明(請求項5)は、請求項4のデータ蓄積装置において、
システム制御手段100は、
バッファメモリ120のレコードをキー値に基づいて昇順にソートするソート手段と、
バッファメモリ120のレコードをデータファイルのレコード部に書き込む手段と、
索引ファイルを参照して索引内の最大のキー値を探索し、該キー値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、索引ファイルに書き込む索引ファイル生成手段と、
書き込んだ論理ブロック内で最大のキー値をキー値とし、初期値として全ビットを「0」にしたビット列をオフセットデータとしてオフセットファイルに書き込む手段と、
バッファメモリ120の先頭のレコードのキー値が下限値Lであれば、索引ファイルのキー値が指すレコードを含む論理ブロックをデータファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成手段と、
索引ファイルのキー値に基づいて読み込んだデータファイルの論理ブロックに対応したオフセットデータをオフセットファイルから探索し、探索したオフセットデータのビット列bを読み込み、ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成手段と、
ビット列cを、オフセットファイルの読み込んだオフセットデータに上書きする書き込み手段と、
バッファメモリ120から次のレコードを読み出して、該レコードのキー値が下限値L以下である場合は、第1のビット列生成手段、第2のビット列生成手段、書き込み手段を、該バッファメモリ120に次のレコードがなくなるまで繰り返す手段と、を有する。
図2は、本発明の原理を説明するための図である。
本発明(請求項6)は、コンピュータ上で二次記憶装置に論理ブロック単位で逐次データ蓄積を行う場合に、データの順序の逆転が起こっても高速な書き込みと完全一致検索及び範囲検索を行うためのデータ蓄積方法であって、
二次記憶装置と、
インタフェースを介して入力されたレコードを論理ブロック分だけ蓄積するバッファメモリと、を有する装置において、
バッファメモリに蓄積されたレコードを読み出し(ステップ1)、該レコードを二次記憶装置に蓄積する際に、該レコードのデータがsparse indexに基づく構造であり、二次記憶装置の各論理ブロックに1対1で対応し(ステップ2)、該論理ブロックの範囲内のキー値が別の論理ブロックにある場合に(ステップ3)、該別の論理ブロックへのオフセットを論理ブロック単位で示すオフセットデータを該二次記憶装置に書き込む(ステップ4)制御ステップを行う。
また、本発明(請求項7)は、請求項6のデータ蓄積方法において、
二次記憶装置は、
入力されるレコードを論理ブロック毎に格納するデータファイルと、
データファイルの各論理ブロックのレコードのキー値に対する索引ファイルを有し、
データファイルの各論理ブロックは、
実データを格納するレコード部と、特定の論理ブロックへのオフセットを論理ブロック単位で表す固定長のビット列からなるヘッダ部から構成され、
論理ブロックは扱うキー値の範囲を持ち、
制御ステップにおいて、
論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックのヘッダ部のビット列のオフセットと等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すようにデータファイルに書き込む。
また、本発明(請求項8)は、請求項7のデータ蓄積方法において、
制御ステップにおいて、
バッファメモリのレコードをキー値に基づいて昇順にソートするソートステップと、
バッファメモリのレコードをデータファイルのレコード部に書き込み、データファイルのオフセットデータの初期値として全ビットを「0」にしたビット列をヘッダ部に書き込む初期化ステップと、
索引ファイルを参照して、索引内の最大のキー値を探索し、その値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、索引ファイルに書き込む索引ファイル生成ステップと、
バッファメモリの先頭のレコードのキー値が下限値Lであれば、索引ファイルにおいて参照中のレコードのキー値以上で最も値が小さいキー値を探索し、該キー値が指すレコードを含む論理ブロックをデータファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成ステップと、
読み込んだ論理ブロックのヘッダ部分のオフセットを表すビット列bを読み込み、ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成ステップと、
ビット列cを、読み込んだ論理ブロックのヘッダ部にオフセットデータとしてデータファイルに上書きする書き込みステップと、
バッファメモリから次のレコードを読み出して、該レコードのキー値が下限値L以下である場合は、第1のビット列生成ステップ、第2のビット列生成ステップ、書き込みステップを、該バッファメモリに次のレコードがなくなるまで繰り返す。
また、本発明(請求項9)は、請求項6のデータ蓄積方法において、
二次記憶装置は、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックを格納するデータファイルと、
データファイルの各論理ブロックのレコードのキー値に対する索引を格納する索引ファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列はデータファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、
を有し、
各論理ブロックは扱うキー値の範囲を持ち、
制御ステップにおいて、
論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックに対応したオフセットファイルのビット列のオフセット数と等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すようにオフセットファイルに書き込む。
また、本発明(請求項10)は、請求項9のデータ蓄積方法において、
制御ステップにおいて、
バッファメモリのレコードをキー値に基づいて昇順にソートするソートステップと、
バッファメモリのレコードをデータファイルのレコード部に書き込むステップと、
索引ファイルを参照して索引内の最大のキー値を探索し、該キー値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、索引ファイルに書き込む索引ファイル生成ステップと、
書き込んだ論理ブロック内で最大のキー値をキー値とし、初期値として全ビットを「0」にしたビット列をオフセットデータとしてレコードをオフセットファイルに書き込むステップと、
バッファメモリの先頭のレコードのキー値が下限値Lであれば、索引ファイルのキー値ガ指すレコードを含む論理ブロックをデータファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成ステップと、
索引ファイルのキー値に基づいて読み込んだデータファイルの論理ブロックに対応したオフセットデータをオフセットファイルから探索し、探索したオフセットデータのビット列bを読み込み、ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成ステップと、
ビット列cを、オフセットファイルの読み込んだオフセットデータに上書きする書き込みステップと、
バッファメモリから次のレコードを読み出して、該レコードのキー値が下限値L以下である場合は、第1のビット列生成ステップ、第2のビット列生成ステップ、書き込みステップを、該バッファメモリに次のレコードがなくなるまで繰り返す。
本発明(請求項11)は、請求項1乃至5のデータ蓄積装置により二次記憶装置のデータファイルに蓄積されたデータを検索するためのデータ検索装置であって、
二次記憶装置は、少なくとも、
入力されるレコードを論理ブロック毎に格納するデータファイルと、
データファイルの各論理ブロックのレコードのキー値に対する索引ファイルと、を有し、
完全一致検索または範囲検索を行うための検索条件としてキー値が入力されると、
キー値から二次記憶装置の索引ファイルを検索し、得られた索引に基づいて所望のキー値を持つレコードを検索しても見つからない場合に、索引に対応する論理ブロックのオフセットデータを参照し、得られたオフセット分だけ該論理ブロックより後ろの論理ブロックを読み込み、読み込まれた論理ブロックを対象として、キー値による検索を行う検索手段を有する。
また、本発明(請求項12)は、請求項11のデータ検索装置において、
検索条件として、探索キーが入力されると、索引ファイルから探索キー値以上で最も値の小さいキー値を探索し、該キー値が指し示すレコードを含むデータファイルの論理ブロックを読み込む手段と、
読み込んだ論理ブロック内のレコード部から二分探索を用いて探索キーを持つレコードを検索し、探索キーを持つレコードが見つかった場合は、該レコードを出力する手段と、
見つからなかった場合は、論理ブロックのヘッダにあるオフセットデータのビット列を参照し、まだチェックしていないビットの内ビットが1となっているビット番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、読み込んだ論理ブロックから二分探索を用いて探索キーを持つレコードを探索する手段と、を有する。
また、本発明(請求項13)は、請求項11のデータ検索装置において、
下限キー値以上、上限キー値未満という検索条件が与えられると、索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックをデータファイルから読み込む手段と、
読み込んだ論理ブロックのヘッダ部のオフセットを示すビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的にアドレス集合U記憶手段に格納する手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値未満である場合に、次のレコードを参照する手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値未満である場合に、その参照しているレコードから該論理ブロックの末尾のレコードまでのすべてのレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、さらに次の論理ブロックが存在する場合には次の論理ブロックを読み込む手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以下である場合に、その参照しているレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照する手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以上である場合に、アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部のすべてのレコードのキー値について、下限キー値以上、上限キー値未満であるかを判定し、該キー値が下限キー値以上、上限キー値未満であれば、該キー値を持つレコードを、検索条件を満たすレコード集合R記憶手段に格納する手段と、
レコード集合R記憶手段に格納されているレコードを検索結果として出力する手段と、
を有する。
また、本発明(請求項14)は、請求項11のデータ検索装置において、
二次記憶装置は、
索引ファイルと、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列はデータファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
入力された検索条件のキー値以上で最も値の小さいキー値を索引ファイルから検索し、その値が指すレコードをデータファイルの論理ブロックから読み込む手段と、
読み込んだ論理ブロック内のレコード部から二分探索を用いて、検索条件のキー値を持つレコードを検索する二分探索手段と、
二分探索手段において、レコードが見つかった場合は当該レコードを出力し、見つからない場合は、該索引ファイルから検索されたキー値を用いてオフセットファイルから論理ブロックに対応したオフセットデータを検索し、該オフセットデータのビット列でまだチェックしていない「1」となっているビットの番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、二分探索手段を行う処理をビット列が持つビットが「1」となっている全ての桁について行う手段と、を有する。
また、本発明(請求項15)は、請求項11のデータ検索装置において、
二次記憶装置は、
索引ファイルと、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列はデータファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
下限キー値以上、上限キー値未満という検索条件が与えられると、索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックをデータファイルから読み込む手段と、
読み込んだ論理ブロックの末尾のレコードを参照し、該レコードのキー値を元に、該論理ブロックに対応するオフセットデータをオフセットファイルから検索する手段と、
検索したオフセットデータのビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的に記憶手段のアドレス集合U記憶手段に格納する手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値未満である場合に、次のレコードを参照する手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値未満であれば、参照しているレコードから末尾までのレコードを、検索条件を満たすレコード集合R記憶手段に格納し、さらに、次の論理ブロックが存在する場合には次の論理ブロックを読み込む手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以下である場合に、その参照しているレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照する手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以上である場合に、アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部の全てのレコードのキー値について、下限キー値以上、上限キー値未満であるかを判定し、該キー値が下限キー値以上、上限キー値未満であれば、該キー値を持つレコードを、検索条件を満たすレコード集合R記憶手段に格納する手段と、
レコード集合R記憶手段に格納されているレコードを検索結果として出力する手段と、を有する。
本発明(請求項16)は、請求項6乃至10のデータ蓄積方法により二次記憶装置のデータファイルに蓄積されたデータを検索するためのデータ検索方法であって、
二次記憶装置は、少なくとも、
入力されるレコードを論理ブロック毎に格納するデータファイルと、
データファイルの各論理ブロックのレコードのキー値に対する索引ファイルと、を有し、
完全一致検索または範囲検索を行うための検索条件としてキー値が入力されると、
キー値から二次記憶装置の索引ファイルを検索し、得られた索引に基づいて所望のキー値を持つレコードを検索しても見つからない場合に、索引に対応する論理ブロックに対応するオフセットデータを参照し、得られたオフセット分だけ該論理ブロックより後ろの論理ブロックを読み込み、読み込まれた論理ブロックを対象として、キー値による検索を行う。
また、本発明(請求項17)は、請求項16のデータ検索方法において、
検索条件として、探索キーが入力されると、索引ファイルから探索キー値以上で最も値の小さいキー値を探索し、該キー値が指し示すレコードを含むデータファイルの論理ブロックを読み込むステップと、
読み込んだ論理ブロック内のレコード部から二分探索を用いて探索キーを持つレコードを検索し、探索キーを持つレコードが見つかった場合は、該レコードを出力するステップと、
見つからなかった場合は、論理ブロックのヘッダにあるオフセットデータのビット列を参照し、まだチェックしていないビットの内ビットが1となっているビット番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、読み込んだ論理ブロックから二分探索を用いて探索キーを持つレコードを探索するステップと、を行う。
また、本発明(請求項18)は、請求項16のデータ検索方法において、
下限キー値以上、上限キー値未満という検索条件が与えられると、索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックをデータファイルから読み込むステップと、
読み込んだ論理ブロックのヘッダ部のオフセットを示すビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的にアドレス集合U記憶手段に格納するステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値未満である場合に、次のレコードを参照するステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値未満である場合に、その参照しているレコードから該論理ブロックの末尾のレコードまでのすべてのレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、さらに次の論理ブロックが存在する場合には次の論理ブロックを読み込むステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以下である場合に、その参照しているレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照するステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以上である場合に、アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部のすべてのレコードのキー値について、下限キー値以上、上限キー値未満であるかを判定し、該キー値が下限キー値以上、上限キー値未満であれば、該キー値を持つレコードを、検索条件を満たすレコード集合R記憶手段に格納するステップと、
レコード集合R記憶手段に格納されているレコードを検索結果として出力するステップと、を行う。
また、本発明(請求項19)は、請求項16のデータ検索方法において、
二次記憶装置は、
索引ファイルと、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列はデータファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
入力された検索条件のキー値以上で最も値の小さいキー値を索引ファイルから検索し、その値が指すレコードをデータファイルの論理ブロックから読み込むステップと、
読み込んだ論理ブロック内のレコード部から二分探索を用いて、検索条件のキー値を持つレコードを検索する二分探索ステップと、
二分探索手段において、レコードが見つかった場合は当該レコードを出力し、見つからない場合は、該索引ファイルから検索されたキー値を用いてオフセットファイルから論理ブロックに対応したオフセットデータを検索し、該オフセットデータのビット列でまだチェックしていない「1」となっているビットの番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、二分探索ステップを行う処理をビット列が持つビットが「1」となっている全ての桁について行うステップと、を行う。
また、本発明(請求項20)は、請求項16のデータ検索方法において、
二次記憶装置は、
索引ファイルと、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列はデータファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
下限キー値以上、上限キー値未満という検索条件が与えられると、索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックをデータファイルから読み込むステップと、
読み込んだ論理ブロックの末尾のレコードを参照し、該レコードのキー値を元に、該論理ブロックに対応するオフセットデータをオフセットファイルから検索するステップと、
検索したオフセットデータのビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的にアドレス集合U記憶手段に格納するステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値未満である場合に、次のレコードを参照するステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値未満であれば、参照しているレコードから末尾までのレコードを、検索条件を満たすレコード集合R記憶手段に格納し、さらに、次の論理ブロックが存在する場合には次の論理ブロックを読み込むステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以下である場合に、その参照しているレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照するステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以上である場合に、アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部の全てのレコードのキー値について、下限キー値以上、上限キー値未満であるかを判定し、該キー値が下限キー値以上、上限キー値未満であれば、該キー値を持つレコードを、検索条件を満たすレコード集合R記憶手段に格納するステップと、
レコード集合R記憶手段に格納されているレコードを検索結果として出力するステップと、を行う。
本発明(請求項21)は、請求項1乃至5のいずれかに記載のデータ蓄積装置を構成する各手段としてコンピュータを機能させるためのデータ蓄積プログラムである。
本発明(請求項22)は、請求項11乃至15のいずれかに記載のデータ検索装置を構成する各手段としてコンピュータを機能させるためのデータ検索プログラムである。
上記のように本発明によれば、以下のような効果がある。
何らかの原因で順序が逆転したデータに関しても、オフセットデータを参照することで検索可能となるため、完全にソートされていないデータに対しても、sparse indexと同様の速度での高速なデータ書き込みと、完全一致検索及び範囲検索を行うことが可能となる。
本発明の原理構成図である。 本発明の原理を説明するための図である。 本発明の第1の実施の形態におけるデータ蓄積装置の構成図である。 本発明の第1の実施の形態におけるデータファイルのデータ構造を示す図である。 本発明の第1の実施の形態におけるデータ追加処理を示すフローチャート(その1)である。 本発明の第1の実施の形態におけるデータ追加処理を示すフローチャート(その2)である。 本発明の第1の実施の形態におけるキー値による完全一致検索処理のフローチャートである。 本発明の第1の実施の形態におけるキー値による範囲検索処理のフローチャート(その1)である。 本発明の第1の実施の形態におけるキー値による範囲検索処理のフローチャート(その2)である。 本発明の第2の実施の形態におけるデータ蓄積装置の構成図である。 本発明の第2の実施の形態におけるデータ構造を示す図である。 本発明の第2の実施の形態におけるデータ追加処理のフローチャート(その1)である。 本発明の第2の実施の形態におけるデータ追加処理のフローチャート(その2)である。 本発明の第2の実施の形態におけるキー値による完全一致検索処理のフローチャートである。 本発明の第2の実施の形態におけるキー値による範囲検索処理のフローチャート(その1)である。 本発明の第2の実施の形態におけるキー値による範囲検索処理のフローチャート(その2)である。
以下、図面と共に本発明の実施の形態を説明する。
本発明のデータ構造では、sparse indexと同様の形態を採りながら、新たな「オフセットデータ」というデータを付け加えるものとする。
[第1の実施の形態]
本実施の形態は、オフセットデータをビット列長hのビット列とし、二次記憶装置内のデータファイルの各論理ブロックのヘッダ部に書き込む方法である。また、このとき、オフセットデータのビット列によるオフセット数の表現方法は、ビット列のビット番号を用いて行う。このため、ビット列長hは表現できるオフセット数に影響する。ビット列長hの場合、表現できるオフセット数の最大値はhとなる。このため、順序逆転によってあるレコードがhよりも大きい論理ブロック数分遅れて入力された場合、このレコードを指し示すことはできない。よって、入力するデータの順序逆転が起こり得る範囲に併せてビット列長hを適宜設定する必要がある。
図3は、本発明の第1の実施の形態におけるデータ蓄積装置の構成を示す。
同図に示すデータ蓄積装置は、システム制御部100、インタフェース110、バッファメモリ120、二次記憶装置130から構成される。なお、同図では、データ蓄積装置として記載しているが、システム制御部100は後述するように、データ検索時には検索機能を有する。
インタフェース110はバッファメモリ120と、バッファメモリ120はインタフェース110と二次記憶装置130との間でそれぞれデータのやり取りを行う。二次記憶装置130内には、索引ファイル131とデータファイル132の2つのファイルが存在する。このときデータファイル132はオフセットデータを含む。
システム制御部100は、インタフェース110に対して入力データが書き込み要求なのか読み出し要求なのかを解析する入力データ解析部101と、バッファメモリ120に対して入出力されるデータをバッファするためのメモリの管理を行うメモリ管理部102と、二次記憶装置130に対する入力データのファイルへの書き込みなどのファイル操作を行うファイル操作部103を有する。
図4は、本発明の第1の実施の形態におけるデータファイルのデータ構造を示す。
データファイル132の各論理ブロックはレコード部とヘッダ部から構成され、レコード部は入力されたレコード、ヘッダ部にはオフセットデータを持つ。同図のデータファイル132の最初の論理ブロックではヘッダ部のオフセットデータのビット列の1桁目が「1」となっているため、1つ後ろの論理ブロックに最初の論理ブロックが扱う範囲のキー値のレコードがあることがわかる。なお、ヘッダ部のオフセットデータのビット列が「0」の場合は論理ブロックが扱う範囲のキー値のレコードがないことを示す。
<データ追加処理>
図5、図6は、本発明の第1の実施の形態におけるデータ追加処理を示すフローチャートである。
データ追加(蓄積)処理では、システム制御部100の入力データ解析部101が書き込み要求であると判定すると、入力されたデータ(入力レコード)をメモリ管理部102を介してバッファメモリ120上に蓄積する(ステップ101)。このとき、メモリ管理部102は、入力レコードが論理ブロックサイズ分だけ蓄積されるまで入力レコードをバッファメモリ120に蓄積し続ける。
入力レコードがバッファメモリ120内に論理ブロックサイズ分だけ蓄積されたならば(ステップ102、Yes)、メモリ管理部102は、バッファメモリ120内のレコードをキー値について昇順にソートする(ステップ103)。
その後、ファイル操作部103は、バッファメモリ120内のレコードを読み出し、当該レコードと、オフセットデータの初期値として全ビットを「0」にしたビット列とを、それぞれ論理ブロックのレコード部、ヘッダ部として二次記憶装置130のデータファイル132に書き込む(ステップ104)。このとき、書き込んだ論理ブロックのアドレスをメモリ(図示せず)に格納しておくものとする。
次に、ファイル操作部103は、索引ファイル131を参照して索引ファイル131内の最大のキー値を探し、その値をステップ104で書き込んだ論理ブロックで扱うキー値の下限値Lとして一時的にメモリ(図示せず)に記憶する(ステップ105)。
その後、ファイル操作部103は、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、索引ファイル131を更新する(ステップ106)。
さらに、ファイル操作部103は、バッファメモリ120内のレコードを参照し、先頭のレコードから順にレコードのキー値が、メモリ(図示せず)内の下限値L以下となるレコードを探す(ステップ107)。参照したレコードが下限値Lよりも大きい場合(ステップ108、No)は、そこで探索を終了し、書き込み処理を終了する。また、参照したレコードが下限値L以下の場合(ステップ108、Yes)、索引ファイル131を調べ、そのキー値以上で最も値が小さいキー値を探す(ステップ109)。
ここで、探索したキー値が指し示す論理ブロックが、バッファメモリ120内の他のレコードが参照された際に読み込まれており、オフセットデータの更新が行われていたのであれば(ステップ110、Yes)、その論理ブロックの更新処理は取りやめ、バッファメモリ120上で次のレコードがあれば(ステップ118、Yes)、次のレコードを参照し、同様の処理を行う(ステップ119)。次のレコードがなければ(ステップ118、No)、そこで探索終了とし、書き込み処理を終了する。
一方、探索したキー値が指す論理ブロックが、バッファメモリ120内の他のレコードが参照された際に、まだ読み込まれておらず、データファイル132のオフセットデータの更新がまだ行われていないのであれば(ステップ110,No)、探索した索引のキー値を更新済みとして一時的にメモリ(図示せず)に格納し(ステップ111)、当該索引のキー値が指し示す論理ブロックを読み込み、その論理ブロックのアドレスをメモリ(図示せず)に格納する(ステップ112)。
次に、ファイル操作部103は、メモリ(図示せず)に格納されているステップ112で読み込んだ論理ブロックと、ステップ104で書き込んだ論理ブロックとのアドレスを比較し、ブロック数がいくつ離れているかを算出し、これをオフセットXとする(ステップ113)。このオフセットXを用いてX番目のビットのみを「1」としたビット列長hのビット列aを生成する(ステップ114)。次に、読み込んだ論理ブロックのヘッダ部分のオフセットを表すビット列bを読み込み(ステップ115)、ビット列aとbの論理和をとったビット列cを生成する(ステップ116)。ビット列cを読み込んだページの新しいオフセットデータとしてヘッダ部分に上書き書き込みし、データファイル132に反映させる。(ステップ117)。
バッファメモリ120上の次のレコードがあれば(ステップ118、Yes)、それを参照し、同様の処理を行う。次のレコードがなければ(ステップ118、No)、データ追加処理を終了する。
<データ完全一致検索処理>
図7は、本発明の第1の実施の形態におけるキー値による完全一致検索処理のフローチャートである。
まず、探索したいキー値がインタフェース110を介して入力される(ステップ201)。ファイル操作部103は、二次記憶装置130の索引ファイル131から探索キー値以上で最も値が小さいキー値を探し、その値が指すレコードを含む論理ブロックを読み込む(ステップ202)。次に、読み込んだ論理ブロック内のレコード部から二分探索を用いて探索キー値を持つレコードを探す(ステップ203)。
このとき、探索キー値を持つレコードが見つかったのであれば(ステップ204、Yes)、探索キー値を持つレコードを出力して終了する(ステップ211)。探索キー値が見つからなかった場合は(ステップ204、No)、別の論理ブロックにあるレコードを調べるため、読み込んだ論理ブロックのヘッダ部にあるオフセットデータのビット列を参照する(ステップ205)。その後、ビット列からビットが「1」となっている全てのビットについて、そのビット番号XをオフセットXとし、この論理ブロックからXブロック後ろの論理ブロックを読み込む(ステップ206)。読み込んだ論理ブロック内のレコード部から二分探索を用いて探索キーの値を持つレコードを探し(ステップ207)、レコードが見つかれば(ステップ208、Yes)それを出力して終了する。ビット列が持つ「1」となっているビットが指す全ての論理ブロックを参照し(ステップ209、Yes)、レコードが見つからなければ(ステップ208、No)、「探索キー値を持つレコードは無し」と出力し(ステップ210)、終了する。
<データの範囲検索処理>
図8、図9は、本発明の第1の実施の形態におけるキー値によるデータの範囲検索処理のフローチャートである。
まず、入力として下限キー値以上、上限キー値未満という検索条件が与えられると(ステップ301)、これらの下限キー値、上限キー値をメモリ(図示せず)に格納する。ファイル操作部103は、索引ファイル131から下限キー値以上で最も値が小さいキー値を探して、その値が指すレコードを含む論理ブロックをデータファイル132から読み込む(ステップ302)。このとき、読み込んだ論理ブロックのヘッダ部のオフセットを示すビット列を参照し、「1」となっているビットがあればそれが指す論理ブロックのアドレスを一時的にメモリ(図示せず)のアドレスの集合Uに記憶する(ステップ303)。
次に、ファイル操作部103は、論理ブロックのレコード部の先頭のレコードから順番にレコードのキー値が下限キー値以上かどうか調べていく(ステップ304)。下限キー値以上のレコードが見つかったら(ステップ305、Yes)、まず論理ブロック内で最大のキー値を持つ末尾のレコードを参照し、そのキー値が上限キー値以上かどうかを調べる(ステップ307)。このとき、上限キー値以上でなければ(ステップ307、No)、この論理ブロックの現在参照しているレコードから末尾のレコードまでの全てのレコードは検索条件を満たすとして、メモリ(図示せず)上の検索条件を満たすレコード集合R記憶手段に追加する(ステップ308)。
その後、ファイル操作部103は、データファイル132内に次の論理ブロックがあれば(ステップ309,Yes)、それを読み込み、同様の処理を行う(ステップ310)。
一方、論理ブロックがなければ(ステップ309、No)、データファイル132上の末尾の論理ブロックまで読み込んだこととなる。このとき、各論理ブロックのオフセットデータはその論理ブロックよりも後ろのブロックを指し示すものであるので、末尾の論理ブロックまで読み込んだ時点でアドレス集合Uが指し示す全ての論理ブロックについても、末尾の論理ブロックまで順に論理ブロックを読み込んでいく過程で探索が行われていることになる。よって、そこで、検索終了となり、メモリ(図示せず)に格納されているレコード集合Rを出力して終了する(ステップ323)。
末尾のレコードのキー値が上限キー値以上だった場合は(ステップ307、Yes)、参照しているレコードから末尾のレコードまで順番にキー値が上限値未満かどうかの比較を行っていく。もし、参照しているレコードのキー値が上限キー未満であれば(ステップ311、Yes)、そのレコードをメモリ(図示せず)上の検索条件を満たすレコード集合R記憶手段に追加する(ステップ312)。条件キー値未満でないレコードを見つけたら(ステップ311、No)、次はオフセットデータが指している論理ブロックのレコードについて検索を行う。
メモリ(図示せず)に格納されたアドレス集合Uが持つ全てのアドレスが参照されていないのならば(ステップ314、No)、まだ参照していないアドレスを参照し(ステップ315)、該アドレスが指す論理ブロックが探索済みであれば(ステップ316、Yes)、Uが持つ他のアドレスの論理ブロックを参照するため、ステップ314に移行する。
一方、該アドレスが指す論理ブロックがまだ探索済みでなければ(ステップ316、No)、該論理ブロックのレコード先頭のレコードを参照する(ステップ317)。参照しているレコードのキー値が下限キー値未満である場合は(ステップ318、No)、次のレコードを参照し(ステップ319)、ステップ318に移行する。参照しているレコードのキー値が下限キー値以上の場合は(ステップ318、Yes)、参照しているレコードのキー値が上限キー値未満かどうか判定し、上限キー値未満でなければ(ステップ320、No)、該論理ブロックの探索は終了したとして、他の論理ブロックのアドレスを参照するために、ステップ314に移行する。上限キー値未満であれば(ステップ320、Yes)、参照しているレコードを検索条件を満たすレコードとしてレコード集合Rに追加し(ステップ321)、次のレコードを参照し(ステップ322)、ステップ320に移行する。
アドレス集合Uが持つすべてのアドレスが指す論理ブロックの探索が終わったら(ステップ314、Yes)、検索終了となり、メモリ(図示せず)に格納されているレコード集合Rを出力して終了する(ステップ323)。
上記の図5〜図9に示したように、sparse indexを用いた索引付け方法であっても、オフセットデータを用いたデータ構造を利用してデータ書き込みを行うことで、順序逆転が起こるようなデータに対する完全一致検索及び範囲検索処理を可能としている。
[第2の実施の形態]
前述の第1の実施の形態では、オフセットデータをデータファイルに格納する場合を示したが、本実施の形態では、オフセットデータをデータファイルとは別のファイルであるオフセットファイルに格納する場合について説明する。
図10は、本発明の第2の実施の形態におけるデータ蓄積装置の構成を示す。
同図に示すデータ蓄積装置は、図3に示す装置構成とは二次記憶装置内のファイル構成が異なり、本実施の形態では、索引ファイル231、データファイル232、及びオフセットデータを含むオフセットファイル233から構成される。他の構成については、図3の構成と同様である。なお、同図では、データ蓄積装置として説明するが、システム制御部200は後述するように、データ検索時には検索機能を有する。
図11は、本発明の第2の実施の形態におけるデータ構成を示す。
データファイル232の各論理ブロックは入力されたレコードのみから構成される。
オフセットファイル233の各レコードは、データファイル232の各論理ブロックに対応しており、キー値とビット列長hのオフセットデータから構成される。オフセットファイルのキー値はデータファイル232の論理ブロックとオフセットファイル233のオフセットデータとを1対1で対応付けるために用いる。オフセットデータのビット列によるオフセット数の表示方法は、第1の実施の形態と同様にビット列のビット番号を用いて行う。
<データ追加処理>
図12、13は、本発明の第2の実施の形態におけるデータ追加処理のフローチャートである。
データ追加処理では、システム制御部200の入力データ解析部201が書き込み要求であると判定すると、メモリ管理部202を介してバッファメモリ120上に蓄積する(ステップ401)。このとき、入力レコードが論理ブロックサイズ分だけ蓄積されるまで入力レコードをバッファメモリ120に蓄積し続ける。
入力レコードがバッファメモリ120内に論理ブロックサイズ分だけ蓄積されたならば(ステップ402、Yes)、メモリ管理部202は、バッファメモリ120内のレコードをキー値について昇順にソートする(ステップ403)。その後、ファイル操作部203は、バッファメモリ120内のレコードを読み出し、当該レコードを二次記憶装置230のデータファイル232に書き込み、当該論理ブロックのアドレスをメモリ(図示せず)に格納する(ステップ404)。
次に、ファイル操作部203は、索引ファイル231を参照して当該索引ファイル231内の最大のキー値を探し、その値をステップ404で書き込んだ論理ブロックで扱うキー値の下限値Lとして一時的にメモリ(図示せず)に記憶する(ステップ405)。その後、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、索引ファイル231を更新する(ステップ406)。
さらに、ファイル操作部203は、データファイル232に書き込んだ論理ブロック内で最大のキー値をキー値、初期値として全ビットを「0」にしたビット列をオフセットデータとしてそのレコードをオフセットファイル233に書き込む(ステップ407)。
ファイル操作部203は、バッファメモリ120内の先頭のレコードを参照し(ステップ408)、参照中のレコードのキー値が、ステップ405でメモリ(図示せず)に格納されている下限値L以下であるかを判定し、Lより大きければ(ステップ409、No)、処理を終了し、L以下であれば(ステップ409、Yes)、索引ファイル231において参照中のレコードのキー値以上で最も値が小さいキー値を探す(ステップ410)。
ファイル操作部203は、探索したキー値が更新済みであるかを判定し、更新済みであれば(ステップ411、Yes)、バッファメモリ120上に次のレコードが存在するかを判定し、存在する場合は(ステップ420、Yes)、バッファメモリ120上の次のレコードを参照し(ステップ421)、ステップ409の処理に移行する。一方、更新済みでない場合は(ステップ411、No)、探索した索引キー値を更新済みとして一時的にメモリ(図示せず)に記憶する(ステップ412)。索引のキー値が指すレコードを含む論理ブロックをデータファイル232から読み込み、当該論理ブロックのアドレスをメモリ(図示せず)に格納する(ステップ413)。
次に、メモリ(図示せず)から、読み込んだ論理ブロックのアドレスと書き込んだ論理ブロックのアドレスを取得し、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスを比較し、ブロック数がいくつ離れているかを算出し、その値をオフセットXとし(ステップ414)、X番目のビットのみ「1」とした桁数hのビット列aを生成する(ステップ415)。
ファイル操作部203は、索引のキー値に基づいてデータファイル232から読み込んだ論理ブロックに対応したオフセットデータをオフセットファイル233から探索して取得し(ステップ416)、探索したオフセットデータのビット列bを読み込む(ステップ417)。ステップ415で生成されたビット列aとステップ417で読み込まれたビット列bのORをとったビット列cを生成する(ステップ418)。当該ビット列cを、読み込んだオフセットデータファイル233のオフセットデータ上に上書きする(ステップ419)。
バッファメモリ120上に次のレコードが存在する場合は(ステップ420、Yes)、バッファメモリ120上の次のレコードを参照し、ステップ408に移行する(ステップ421)。次のレコードが存在しない場合は(ステップ420、No)、処理を終了する。
本実施の形態のデータ追加処理において、第1の実施の形態における図5のデータ追加処理との違いは、オフセットファイル233にキー値、オフセットデータというレコードの形でデータを書き込むこと(ステップ404)と、データファイル232の論理ブロックに対応したオフセットデータを参照するために、データファイル232の論理ブロックのキー値を元にオフセットファイル233からオフセットデータを探索する必要があることである(ステップ416)。
<データ完全一致検索処理>
図14は、本発明の第2の実施の形態におけるキー値による完全一致検索処理のフローチャートである。
まず、探索したい探索キーのキー値がインタフェース110を介して入力される(ステップ501)。ファイル操作部203は、二次記憶装置230の索引ファイル231から探索キー値以上で最も値が小さいキー値を探し、その値をメモリ(図示せず)に一時的に格納し、その値が指すレコードを含む論理ブロックをデータファイル232から読み込む(ステップ502)。次に、二分探索を用いて読み込んだ論理ブロック内のレコード部から探索キー値を持つレコードを探す(ステップ503)。
このとき、探索キー値を持つレコードが見つかったのであれば(ステップ504、Yes)、探索キー値を持つレコードを出力して終了する(ステップ512)。探索キー値が見つからなかった場合は(ステップ504、No)、ステップ502でメモリ(図示せず)に格納されている索引ファイル231のキー値に基づいてオフセットファイル233から読み込んだ論理ブロックに対応したオフセットデータを探索し(ステップ505)、探索したオフセットデータのビット列を参照する(ステップ506)。このとき、ビット列においてまだチェックしていない「1」となっているビットの番号XをオフセットXとし、Xブロック後ろの論理ブロックをデータファイル232から読み込む(ステップ507)。
データファイル232から読み込んだ論理ブロック内のレコード部から二分探索を用いて探索キー値を持つレコードを探し(ステップ508)、探索キー値を持つレコードが見つかった場合は(ステップ509、Yes)、探索キー値を持つレコードを出力する(ステップ512)。一方、レコードが見つからない場合は(ステップ509、No)、ビット列が持つビットが「1」となっている全ての桁を参照したかを判定し、全ての桁を参照していれば(ステップ510、Yes)、探索キーを持つレコードが無いことを出力して終了する(ステップ511)。すべての桁を参照していない場合は(ステップ510、No)、ステップ507に移行する。
本実施の形態のデータの完全一致検索処理において、第1の実施の形態における図7のキー値によるデータの完全一致検索処理との違いは、図5と図12との違いと同様に、オフセットデータを参照する際にキー値を用いてオフセットファイル233からオフセットデータを探索する(ステップ505)必要があることである。
<範囲検索処理>
図15、16は、本発明の第2の実施の形態におけるキー値による範囲検索処理のフローチャートである。
まず、入力として下限キー値以上、上限キー値未満という検索条件が与えられると、下限キー値、上限キー値をメモリ(図示せず)に格納し(ステップ601)、ファイル操作部203は、索引ファイル231から下限キー値以上で最も値が小さいキー値を探して、その値が指すレコードを含む論理ブロックをデータファイル232から読み込む(ステップ602)。このとき、読み込んだ論理ブロックの末尾のレコードを参照し、そのレコードのキー値を元に論理ブロックに対応したオフセットデータをオフセットファイル233から探索する(ステップ603)。
探索したオフセットデータのビット列を参照し、「1」となっているビットがあれば、それが指す論理ブロックのアドレスを一時的にメモリ(図示せず)のアドレスの集合Uに記憶する(ステップ604)。
次に、ファイル操作部203は、データファイル232から読み込んだ論理ブロックのレコード部の先頭のレコードを参照し(ステップ605)、当該参照しているレコードのキー値が下限キー値未満である場合は(ステップ606、No)、次のレコードを参照し(ステップ607)、同様の処理を行う(ステップ606)。一方、当該参照しているレコードのキー値が下限キー値以上であり(ステップ606、Yes)、論理ブロック末尾のレコードのキー値が上限キー値未満の場合は(ステップ608、No)、参照しているレコードから末尾までのレコードを、メモリ(図示せず)上の検索条件を満たすレコード集合Rに追加する(ステップ609)。次の論理ブロックが存在する場合は(ステップ610、Yes)、次の論理ブロックをデータファイル232から読み込んでステップ603に移行する(ステップ611)。
一方、ステップ608において、論理ブロックの末尾のレコードのキー値が上限値以上である場合は(ステップ608、Yes)、参照しているレコードのキー値が上限キー値未満であるかを判定し、そうである場合は(ステップ612、Yes)、参照しているレコードをメモリ(図示せず)上の検索条件を満たすレコード集合Rに追加し(ステップ613)、次のレコードを参照し(ステップ614)、ステップ612に移行する。
ステップ612において参照しているレコードのキー値が上限値以上である場合は(ステップ612、No)、アドレスの集合Uが持つすべてのアドレスを参照したかを判定し、参照した場合は(ステップ615、Yes)、レコード集合Rの内容を出力して終了する(ステップ624)。アドレスの集合Uにまだ参照していないアドレスがある場合は(ステップ615、No)、まだ、参照していないUが持つ論理ブロックのアドレスを参照し(ステップ616)、参照したアドレスの論理ブロックが既に探索済みであるかを判定する。
参照したアドレスの論理ブロックがすでに探索済みの場合は(ステップ617、Yes)、Uが持つ他のアドレスの論理ブロックを参照するため、ステップ615に移行する。
一方、参照したアドレスの論理ブロックがまだ探索されていない場合は(ステップ617、No)、論理ブロックをデータファイル232から読み込みレコード部の先頭のレコードを参照する(ステップ618)。参照しているレコードのキー値が下限キー値未満である場合は(ステップ619、No)、次のレコードを参照し(ステップ620)、ステップ619に移行する。参照しているレコードのキー値が下限キー値以上の場合は(ステップ619、Yes)、参照しているレコードのキー値が上限キー値未満かどうか判定し、上限キー値未満で無ければ(ステップ621、No)、該論理ブロックの探索は終了したとして、他の論理ブロックのアドレスを参照するために、ステップ615に移行する。上限キー値未満であれば(ステップ621、Yes)、参照しているレコードを検索条件を満たすレコードとしてレコード集合Rに追加し(ステップ622)、次のレコードを参照し(ステップ623)、ステップ621に移行する。
本実施の形態の範囲検索処理において、第1の実施の形態における図8、図9との違いは、図8と図14の違いと同様に、オフセットデータを参照する際にキー値を用いてオフセットファイル233からオフセットデータを探索する必要があることである。
第2の実施の形態の第1の実施の形態に対するメリットは、データファイル232の論理ブロックのレコード部を参照する際に、ヘッダ部を読み飛ばす必要がないことと、オフセットファイル233にはオフセットデータが纏めて格納されているため、オフセットデータをまとめてメモリ上に置いておくことができ、これによりオフセットデータの更新による二次記憶装置230へのアクセス回数を減らすことができることである。
なお、第2の実施の形態においては、データ追加処理時に、「論理ブロック内での最大のキー値をキー値、初期値として全ビットを「0」にしたビット列をオフセットデータとしてレコードをオフセットファイル233に書き込む」処理を省略することも可能である。
この場合、後から入力されたレコードに順序逆転があり、オフセットとしてビットを1にする必要が生じた場合にのみオフセットファイルを更新すればよいため、二次記憶装置230へのアクセス回数をより減らすことができる。また、オフセットファイルのサイズも小さくなるため、オフセットデータの探索効率の向上も見込める。
なお、上記のデータ蓄積装置(データ検索装置)の各構成要素をプログラムとして構築し、データ蓄積装置(データ検索装置)として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
また、構築されたプログラムをハードディスクや、フレキシブルディスク・CD−ROM等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
100 システム制御手段、システム制御部
101 入力データ解析部
102 メモリ管理部
103 ファイル操作部
110 インタフェース
120 バッファメモリ
130 二次記憶装置
131 索引ファイル
132 データファイル(オフセットデータを含む)
200 システム制御部
201 入力データ解析部
202 メモリ管理部
203 ファイル操作部
230 二次記憶装置
231 索引ファイル
232 データファイル
233 オフセットファイル

Claims (22)

  1. コンピュータ上で二次記憶装置に論理ブロック単位で逐次データ蓄積を行う場合に、データの順序の逆転が起こっても高速な書き込みと完全一致検索及び範囲検索を行うためのデータ蓄積装置であって、
    インタフェースを介して入力されたレコードを論理ブロック分だけ蓄積するバッファメモリと、
    前記バッファメモリに蓄積されたレコードを読み出し、該レコードを前記二次記憶装置に蓄積する際に、該レコードのデータがsparse indexに基づく構造であり、該二次記憶装置の各論理ブロックに1対1で対応し、該論理ブロックの範囲内のキー値が別の論理ブロックにある場合に、該別の論理ブロックへのオフセットを論理ブロック単位で示すオフセットデータを該二次記憶装置に書き込むシステム制御手段を有する
    ことを特徴とするデータ蓄積装置。
  2. 前記二次記憶装置は、
    入力されるレコードを論理ブロック毎に格納するデータファイルと、
    前記データファイルの各論理ブロックのレコードのキー値に対する索引を格納した索引ファイルと、
    を有し、
    前記データファイルの各論理ブロックは、
    実データを格納するレコード部と、特定の論理ブロックへのオフセットを論理ブロック単位で表す固定長のビット列からなるヘッダ部から構成され、
    前記論理ブロックは扱うキー値の範囲を持ち、
    前記システム制御手段は、
    前記論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックのヘッダ部のビット列のオフセットと等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すように前記データファイルに書き込む手段を含む
    請求項1記載のデータ蓄積装置。
  3. 前記システム制御手段は、
    前記バッファメモリのレコードをキー値に基づいて昇順にソートするソート手段と、
    前記バッファメモリのレコードを前記データファイルの前記レコード部に書き込み、前記データファイルのオフセットデータの初期値として、全ビットを「0」にしたビット列を前記ヘッダ部に書き込む初期化手段と、
    前記索引ファイルを参照して、索引内の最大のキー値を探索し、その値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、前記索引ファイルに書き込む索引ファイル生成手段と、
    前記バッファメモリの先頭のレコードのキー値が前記下限値Lであれば、前記索引ファイルにおいて参照中のレコードのキー値以上で最も値が小さいキー値を探索し、該キー値が指すレコードを含む論理ブロックを前記データファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成手段と、
    前記読み込んだ論理ブロックのヘッダ部分のオフセットを表すビット列bを読み込み、前記ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成手段と、
    前記ビット列cを、読み込んだ論理ブロックのヘッダ部にオフセットデータとして前記データファイルに上書きする書き込み手段と、
    前記バッファメモリから次のレコードを読み出して、該レコードのキー値が前記下限値L以下である場合は、前記第1のビット列生成手段、前記第2のビット列生成手段、前記書き込み手段を、該バッファメモリに次のレコードがなくなるまで繰り返す手段と、
    を有する請求項2記載のデータ蓄積装置。
  4. 前記二次記憶装置は、
    入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックを格納するデータファイルと、
    前記データファイルの各論理ブロックのレコードのキー値に対する索引を格納する索引ファイルと、
    複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列は前記データファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、
    を有し、
    前記各論理ブロックは扱うキー値の範囲を持ち、
    前記システム制御手段は、
    前記論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックに対応したオフセットファイルのビット列の前記オフセット数と等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すように前記オフセットファイルに書き込む手段を含む
    請求項1記載のデータ蓄積装置。
  5. 前記システム制御手段は、
    前記バッファメモリのレコードをキー値に基づいて昇順にソートするソート手段と、
    前記バッファメモリのレコードを前記データファイルの前記レコード部に書き込む手段と、
    前記索引ファイルを参照して索引内の最大のキー値を探索し、該キー値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、前記索引ファイルに書き込む索引ファイル生成手段と、
    前記書き込んだ論理ブロック内で最大のキー値をキー値とし、初期値として全ビットを「0」にしたビット列をオフセットデータとしてオフセットファイルに書き込む手段と、
    前記バッファメモリの先頭のレコードのキー値が前記下限値Lであれば、前記索引ファイルのキー値が指すレコードを含む論理ブロックを前記データファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成手段と、
    前記索引ファイルのキー値に基づいて読み込んだ前記データファイルの論理ブロックに対応したオフセットデータを前記オフセットファイルから探索し、探索したオフセットデータのビット列bを読み込み、前記ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成手段と、
    前記ビット列cを、前記オフセットファイルの読み込んだオフセットデータに上書きする書き込み手段と、
    前記バッファメモリから次のレコードを読み出して、該レコードのキー値が前記下限値L以下である場合は、前記第1のビット列生成手段、前記第2のビット列生成手段、前記書き込み手段を、該バッファメモリに次のレコードがなくなるまで繰り返す手段と、
    を有する請求項4記載のデータ蓄積装置。
  6. コンピュータ上で二次記憶装置に論理ブロック単位で逐次データ蓄積を行う場合に、データの順序の逆転が起こっても高速な書き込みと完全一致検索及び範囲検索を行うためのデータ蓄積方法であって、
    前記二次記憶装置と、
    インタフェースを介して入力されたレコードを論理ブロック分だけ蓄積するバッファメモリと、を有する装置において、
    前記バッファメモリに蓄積されたレコードを読み出し、該レコードを前記二次記憶装置に蓄積する際に、該レコードのデータがsparse indexに基づく構造であり、前記二次記憶装置の各論理ブロックに1対1で対応し、該論理ブロックの範囲内のキー値が別の論理ブロックにある場合に、該別の論理ブロックへのオフセットを論理ブロック単位で示すオフセットデータを該二次記憶装置に書き込む制御ステップを行う
    ことを特徴とするデータ蓄積方法。
  7. 前記二次記憶装置は、
    入力されるレコードを論理ブロック毎に格納するデータファイルと、
    前記データファイルの各論理ブロックのレコードのキー値に対する索引ファイルを有し、
    前記データファイルの各論理ブロックは、
    実データを格納するレコード部と、特定の論理ブロックへのオフセットを論理ブロック単位で表す固定長のビット列からなるヘッダ部から構成され、
    前記論理ブロックは扱うキー値の範囲を持ち、
    前記制御ステップにおいて、
    前記論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックのヘッダ部のビット列のオフセットと等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すように前記データファイルに書き込む
    請求項6記載のデータ蓄積方法。
  8. 前記制御ステップにおいて、
    前記バッファメモリのレコードをキー値に基づいて昇順にソートするソートステップと、
    前記バッファメモリのレコードを前記データファイルの前記レコード部に書き込み、前記データファイルのオフセットデータの初期値として全ビットを「0」にしたビット列を前記ヘッダ部に書き込む初期化ステップと、
    前記索引ファイルを参照して、索引内の最大のキー値を探索し、その値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、前記索引ファイルに書き込む索引ファイル生成ステップと、
    前記バッファメモリの先頭のレコードのキー値が前記下限値Lであれば、前記索引ファイルにおいて参照中のレコードのキー値以上で最も値が小さいキー値を探索し、該キー値が指すレコードを含む論理ブロックを前記データファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成ステップと、
    前記読み込んだ論理ブロックのヘッダ部分のオフセットを表すビット列bを読み込み、前記ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成ステップと、
    前記ビット列cを、読み込んだ論理ブロックのヘッダ部にオフセットデータとして前記データファイルに上書きする書き込みステップと、
    前記バッファメモリから次のレコードを読み出して、該レコードのキー値が前記下限値L以下である場合は、前記第1のビット列生成ステップ、前記第2のビット列生成ステップ、前記書き込みステップを、該バッファメモリに次のレコードがなくなるまで繰り返す、
    請求項7記載のデータ蓄積方法。
  9. 前記二次記憶装置は、
    入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックを格納するデータファイルと、
    前記データファイルの各論理ブロックのレコードのキー値に対する索引を格納する索引ファイルと、
    複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列は前記データファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、
    を有し、
    前記各論理ブロックは扱うキー値の範囲を持ち、
    前記制御ステップにおいて、
    前記論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックに対応したオフセットファイルのビット列の前記オフセット数と等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すように前記オフセットファイルに書き込む
    請求項6記載のデータ蓄積方法。
  10. 前記制御ステップにおいて、
    前記バッファメモリのレコードをキー値に基づいて昇順にソートするソートステップと、
    前記バッファメモリのレコードを前記データファイルの前記レコード部に書き込むステップと、
    前記索引ファイルを参照して索引内の最大のキー値を探索し、該キー値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、前記索引ファイルに書き込む索引ファイル生成ステップと、
    前記書き込んだ論理ブロック内で最大のキー値をキー値とし、初期値として全ビットを「0」にしたビット列をオフセットデータとしてレコードをオフセットファイルに書き込むステップと、
    前記バッファメモリの先頭のレコードのキー値が前記下限値Lであれば、前記索引ファイルのキー値ガ指すレコードを含む論理ブロックを前記データファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成ステップと、
    前記索引ファイルのキー値に基づいて読み込んだ前記データファイルの論理ブロックに対応したオフセットデータを前記オフセットファイルから探索し、探索したオフセットデータのビット列bを読み込み、前記ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成ステップと、
    前記ビット列cを、前記オフセットファイルの読み込んだオフセットデータに上書きする書き込みステップと、
    前記バッファメモリから次のレコードを読み出して、該レコードのキー値が前記下限値L以下である場合は、前記第1のビット列生成ステップ、前記第2のビット列生成ステップ、前記書き込みステップを、該バッファメモリに次のレコードがなくなるまで繰り返す、
    請求項9記載のデータ蓄積方法。
  11. 請求項1乃至5のデータ蓄積装置により二次記憶装置のデータファイルに蓄積されたデータを検索するためのデータ検索装置であって、
    前記二次記憶装置は、少なくとも、
    入力されるレコードを論理ブロック毎に格納するデータファイルと、
    前記データファイルの各論理ブロックのレコードのキー値に対する索引ファイルと、を有し、
    完全一致検索または範囲検索を行うための検索条件としてキー値が入力されると、
    前記キー値から前記二次記憶装置の前記索引ファイルを検索し、得られた索引に基づいて所望のキー値を持つレコードを検索しても見つからない場合に、索引に対応する論理ブロックのオフセットデータを参照し、得られたオフセット分だけ該論理ブロックより後ろの論理ブロックを読み込み、読み込まれた論理ブロックを対象として、前記キー値による検索を行う検索手段を有する
    ことを特徴とするデータ検索装置。
  12. 前記検索条件として、探索キーが入力されると、前記索引ファイルから探索キー値以上で最も値の小さいキー値を探索し、該キー値が指し示すレコードを含むデータファイルの論理ブロックを読み込む手段と、
    読み込んだ前記論理ブロック内のレコード部から二分探索を用いて探索キーを持つレコードを検索し、前記探索キーを持つレコードが見つかった場合は、該レコードを出力する手段と、
    見つからなかった場合は、前記論理ブロックのヘッダにあるオフセットデータのビット列を参照し、まだチェックしていないビットの内ビットが1となっているビット番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、読み込んだ論理ブロックから二分探索を用いて探索キーを持つレコードを探索する手段と、
    を有する
    請求項11記載のデータ検索装置。
  13. 下限キー値以上、上限キー値未満という検索条件が与えられると、前記索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックを前記データファイルから読み込む手段と、
    読み込んだ前記論理ブロックのヘッダ部のオフセットを示すビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的にアドレス集合U記憶手段に格納する手段と、
    読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値未満である場合に、次のレコードを参照する手段と、
    読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードから該論理ブロックの末尾のレコードまでのすべてのレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、さらに次の論理ブロックが存在する場合には次の論理ブロックを読み込む手段と、
    読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードを、前記検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照する手段と、
    読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値以上である場合に、前記アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部のすべてのレコードのキー値について、前記下限キー値以上、前記上限キー値未満であるかを判定し、該キー値が前記下限キー値以上、前記上限キー値未満であれば、該キー値を持つレコードを、前記検索条件を満たすレコード集合R記憶手段に格納する手段と、
    前記レコード集合R記憶手段に格納されているレコードを検索結果として出力する手段と、
    を有する請求項11記載のデータ検索装置。
  14. 前記二次記憶装置において、
    前記索引ファイルと、
    入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
    複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列は前記データファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
    入力された検索条件のキー値以上で最も値の小さいキー値を前記索引ファイルから検索し、その値が指すレコードを前記データファイルの論理ブロックから読み込む手段と、
    読み込んだ論理ブロック内のレコード部から二分探索を用いて、検索条件のキー値を持つレコードを検索する二分探索手段と、
    前記二分探索手段において、レコードが見つかった場合は当該レコードを出力し、見つからない場合は、該索引ファイルから検索されたキー値を用いて前記オフセットファイルから論理ブロックに対応したオフセットデータを検索し、該オフセットデータのビット列でまだチェックしていない「1」となっているビットの番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、前記二分探索手段を行う処理をビット列が持つビットが「1」となっている全ての桁について行う手段と、
    を有する請求項11記載のデータ検索装置。
  15. 前記二次記憶装置において、
    前記索引ファイルと、
    入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
    複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列は前記データファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
    下限キー値以上、上限キー値未満という検索条件が与えられると、前記索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックを前記データファイルから読み込む手段と、
    読み込んだ前記論理ブロックの末尾のレコードを参照し、該レコードのキー値を元に、該論理ブロックに対応するオフセットデータを前記オフセットファイルから検索する手段と、
    検索したオフセットデータのビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的に記憶手段のアドレス集合U記憶手段に格納する手段と、
    読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値未満である場合に、次のレコードを参照する手段と、
    読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードから該論理ブロックの末尾のレコードまでの全てのレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、さらに次の論理ブロックが存在する場合には次の論理ブロックを読み込む手段と、
    読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照する手段と、
    読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値以上である場合に、前記アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部の全てのレコードのキー値について、前記下限キー値以上、前記上限キー値未満であるかを判定し、該キー値が前記下限キー値以上、前記上限キー値未満であれば、該キー値を持つレコードを、前記検索条件を満たすレコード集合R記憶手段に格納する手段と、
    前記レコード集合R記憶手段に格納されているレコードを検索結果として出力する手段と、
    を有する請求項11記載のデータ検索装置。
  16. 請求項6乃至10のデータ蓄積方法により、二次記憶装置のデータファイルに蓄積されたデータを検索するためのデータ検索方法であって、
    前記二次記憶装置は、少なくとも、
    入力されるレコードを論理ブロック毎に格納するデータファイルと、
    前記データファイルの各論理ブロックのレコードのキー値に対する索引ファイルと、を有し、
    完全一致検索または範囲検索を行うための検索条件としてキー値が入力されると、
    前記キー値から前記二次記憶装置の前記索引ファイルを検索し、得られた索引に基づいて所望のキー値を持つレコードを検索しても見つからない場合に、索引に対応する論理ブロックに対応するオフセットデータを参照し、得られたオフセット分だけ該論理ブロックより後ろの論理ブロックを読み込み、読み込まれた論理ブロックを対象として、前記キー値による検索を行う
    ことを特徴とするデータ検索方法。
  17. 前記検索条件として、探索キーが入力されると、前記索引ファイルから探索キー値以上で最も値の小さいキー値を探索し、該キー値が指し示すレコードを含むデータファイルの論理ブロックを読み込むステップと、
    読み込んだ前記論理ブロック内のレコード部から二分探索を用いて探索キーを持つレコードを検索し、前記探索キーを持つレコードが見つかった場合は、該レコードを出力するステップと、
    見つからなかった場合は、前記論理ブロックのヘッダにあるオフセットデータのビット列を参照し、まだチェックしていないビットの内ビットが1となっているビット番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、読み込んだ論理ブロックから二分探索を用いて探索キーを持つレコードを探索するステップと、
    を行う請求項16記載のデータ検索方法。
  18. 下限キー値以上、上限キー値未満という検索条件が与えられると、前記索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックを前記データファイルから読み込むステップと、
    読み込んだ前記論理ブロックのヘッダ部のオフセットを示すビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的にアドレス集合U記憶手段に格納するステップと、
    読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値未満である場合に、次のレコードを参照するステップと、
    読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードから該論理ブロックの末尾のレコードまでのすべてのレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、さらに次の論理ブロックが存在する場合には次の論理ブロックを読み込むステップと、
    読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードを、前記検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照するステップと、
    読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値以上である場合に、前記アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部のすべてのレコードのキー値について、前記下限キー値以上、前記上限キー値未満であるかを判定し、該キー値が前記下限キー値以上、前記上限キー値未満であれば、該キー値を持つレコードを、前記検索条件を満たすレコード集合R記憶手段に格納するステップと、
    前記レコード集合R記憶手段に格納されているレコードを検索結果として出力するステップと、
    を行う請求項16記載のデータ検索方法。
  19. 前記二次記憶装置において、
    前記索引ファイルと、
    入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
    複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列は前記データファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
    入力された検索条件のキー値以上で最も値の小さいキー値を前記索引ファイルから検索し、その値が指すレコードを前記データファイルの論理ブロックから読み込むステップと、
    読み込んだ論理ブロック内のレコード部から二分探索を用いて、検索条件のキー値を持つレコードを検索する二分探索ステップと、
    前記二分探索手段において、レコードが見つかった場合は当該レコードを出力し、見つからない場合は、該索引ファイルから検索されたキー値を用いて前記オフセットファイルから論理ブロックに対応したオフセットデータを検索し、該オフセットデータのビット列でまだチェックしていない「1」となっているビットの番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、前記二分探索ステップを行う処理をビット列が持つビットが「1」となっている全ての桁について行うステップと、
    を行う請求項16記載のデータ検索方法。
  20. 前記二次記憶装置において、
    前記索引ファイルと、
    入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
    複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列は前記データファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
    下限キー値以上、上限キー値未満という検索条件が与えられると、前記索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックを前記データファイルから読み込むステップと、
    読み込んだ前記論理ブロックの末尾のレコードを参照し、該レコードのキー値を元に、該論理ブロックに対応するオフセットデータを前記オフセットファイルから検索するステップと、
    検索したオフセットデータのビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的にアドレス集合U記憶手段に格納するステップと、
    読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値未満である場合に、次のレコードを参照するステップと、
    読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードから該論理ブロックの末尾のレコードのまでの全てのレコードを、検索条件を満たすレコード集合R記憶手段に格納し、さらに、次の論理ブロックが存在する場合には次の論理ブロックを読み込むステップと、
    読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードを、前記検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照するステップと、
    読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値以上である場合に、前記アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部の全てのレコードのキー値について、前記下限キー値以上、前記上限キー値未満であるかを判定し、該キー値が前記下限キー値以上、前記上限キー値未満であれば、該キー値を持つレコードを、前記検索条件を満たすレコード集合R記憶手段に格納するステップと、
    前記レコード集合R記憶手段に格納されているレコードを検索結果として出力するステップと、
    を行う請求項16記載のデータ検索方法。
  21. 請求項1乃至5のいずれかに記載のデータ蓄積装置を構成する各手段としてコンピュータを機能させるためのデータ蓄積プログラム。
  22. 請求項11乃至15のいずれかに記載のデータ検索装置を構成する各手段としてコンピュータを機能させるためのデータ検索プログラム。
JP2010028077A 2010-02-10 2010-02-10 データ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラム Expired - Fee Related JP5354606B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010028077A JP5354606B2 (ja) 2010-02-10 2010-02-10 データ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010028077A JP5354606B2 (ja) 2010-02-10 2010-02-10 データ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2011165000A true JP2011165000A (ja) 2011-08-25
JP5354606B2 JP5354606B2 (ja) 2013-11-27

Family

ID=44595599

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010028077A Expired - Fee Related JP5354606B2 (ja) 2010-02-10 2010-02-10 データ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラム

Country Status (1)

Country Link
JP (1) JP5354606B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111241108A (zh) * 2020-01-16 2020-06-05 北京百度网讯科技有限公司 基于键值对kv系统的索引方法、装置、电子设备和介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08185273A (ja) * 1994-12-29 1996-07-16 Sharp Corp Isamファイル情報処理装置
JPH10260876A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd データベースのデータ構造及びデータベースのデータ処理方法
JP2007519088A (ja) * 2003-11-25 2007-07-12 ネットワーク・アプライアンス・インコーポレイテッド 複数読み出しストリームのための適応先読み技術
JP2009266007A (ja) * 2008-04-25 2009-11-12 Hitachi Ltd ストリームデータ処理方法及び計算機システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08185273A (ja) * 1994-12-29 1996-07-16 Sharp Corp Isamファイル情報処理装置
JPH10260876A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd データベースのデータ構造及びデータベースのデータ処理方法
JP2007519088A (ja) * 2003-11-25 2007-07-12 ネットワーク・アプライアンス・インコーポレイテッド 複数読み出しストリームのための適応先読み技術
JP2009266007A (ja) * 2008-04-25 2009-11-12 Hitachi Ltd ストリームデータ処理方法及び計算機システム

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
島川 博光 外2名: ""時間制約と一貫性制約を満たす実時間データ獲得システムRTDS"", 情報処理学会研究報告, vol. 第96巻,第68号, JPN6013023250, 26 July 1996 (1996-07-26), JP, pages 153 - 158, ISSN: 0002606995 *
浪平 博人: ""C言語で学ぶデータ構造&アルゴリズム"", インターフェース, vol. 第16巻,第4号, JPN6013023248, 1 April 1990 (1990-04-01), JP, pages 195 - 209, ISSN: 0002531507 *
酒井 浩 外2名: ""時系列データの保持方法に関する一提案"", 電子情報通信学会技術研究報告, vol. 第97巻,第416号, JPN6013023249, 3 December 1997 (1997-12-03), JP, pages 25 - 30, ISSN: 0002606994 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111241108A (zh) * 2020-01-16 2020-06-05 北京百度网讯科技有限公司 基于键值对kv系统的索引方法、装置、电子设备和介质
CN111241108B (zh) * 2020-01-16 2023-12-26 北京百度网讯科技有限公司 基于键值对kv系统的索引方法、装置、电子设备和介质

Also Published As

Publication number Publication date
JP5354606B2 (ja) 2013-11-27

Similar Documents

Publication Publication Date Title
TWI719281B (zh) 用於串流選擇之系統、機器可讀媒體、及機器實施之方法
TWI702506B (zh) 用於合併樹廢棄項目指標之系統、機器可讀媒體及機器實施之方法
TWI702503B (zh) 實施用於維護操作之合併樹修改之系統、方法及電腦可讀媒體
JP6362316B2 (ja) バッファ・プールをメモリ常駐型データのための常在インメモリ・ストレージとして用いた、ハイブリッド・テーブル実装のための方法、システム、およびコンピュータ・プログラム製品
JP5524144B2 (ja) key−valueストア方式を有するメモリシステム
JP5996088B2 (ja) 暗号ハッシュ・データベース
CN100458779C (zh) 扩展索引的方法
JP4669067B2 (ja) 動的フラグメントマッピング
TW201841122A (zh) 鍵值儲存樹
JP6050503B2 (ja) 階層キャッシュを用いたメールのインデックス化および検索
CN104156380A (zh) 一种分布式存储器哈希索引方法及系统
KR20150122533A (ko) 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치
WO2013075306A1 (zh) 数据访问方法和装置
JP2008269503A5 (ja)
JP2023543004A (ja) ヒルベルト曲線に基づくr木インデックスのマージ更新方法、装置及び媒体
KR20140038441A (ko) 압축 매치 열거 기법
JP3251138B2 (ja) ハッシュ方式
JP5646775B2 (ja) key−valueストア方式を有するメモリシステム
JP6258436B2 (ja) メモリシステムのローカルコントローラ
EP3940572A1 (en) Data generalization device, data generalization method, and program
JP3515810B2 (ja) ソート処理方法および装置
CN110515897B (zh) Lsm存储系统读性能的优化方法及系统
JP5354606B2 (ja) データ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラム
JP6006740B2 (ja) インデックス管理装置
JP5833212B2 (ja) key−valueストア方式を有するメモリシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120221

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20121029

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121029

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130722

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: 20130813

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130821

R150 Certificate of patent or registration of utility model

Ref document number: 5354606

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees