JP2011165000A - データ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラム - Google Patents
データ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラム Download PDFInfo
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【解決手段】 データを蓄積する際には、sparse indexに基づく構造のデータに加えて、データファイルの各論理ブロックに1対1で対応したデータであって、当該論理ブロックの範囲内のキー値が別の論理ブロックにある場合に、その別のブロックへのオフセットを論理ブロック単位で示すオフセットデータを保存する。また、検索する際には、索引ファイルに基づき対象となる論理ブロックを探索しても所望のキー値を持つレコードが見つからない場合に、オフセットデータが示すオフセットだけ当該論理ブロックより後ろの論理ブロックを読み込み、その論理ブロックを対象として探索を行う。
【選択図】 図1
Description
インタフェース110を介して入力されたレコードを論理ブロック分だけ蓄積するバッファメモリ120と、
バッファメモリ120に蓄積されたレコードを読み出し、該レコードを二次記憶装置130に蓄積する際に、該レコードのデータがsparse indexに基づく構造であり、該二次記憶装置130の各論理ブロックに1対1で対応し、該論理ブロックの範囲内のキー値が別の論理ブロックにある場合に、該別の論理ブロックへのオフセットを論理ブロック単位で示すオフセットデータを該二次記憶装置130に書き込むシステム制御手段100を有する。
二次記憶装置130は、
入力されるレコードを論理ブロック毎に格納するデータファイルと、
データファイルの各論理ブロックのレコードのキー値に対する索引を格納した索引ファイルと、
を有し、
データファイルの各論理ブロックは、
実データを格納するレコード部と、特定の論理ブロックへのオフセットを論理ブロック単位で表す固定長のビット列からなるヘッダ部から構成され、
論理ブロックは扱うキー値の範囲を持ち、
システム制御手段100は、
論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックのヘッダ部のビット列のオフセットと等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すようにデータファイルに書き込む手段を含む。
システム制御手段100は、
バッファメモリ120のレコードをキー値に基づいて昇順にソートするソート手段と、
バッファメモリ120のレコードをデータファイルのレコード部に書き込み、データファイルのオフセットデータの初期値として、全ビットを「0」にしたビット列をヘッダ部に書き込む初期化手段と、
索引ファイルを参照して、索引内の最大のキー値を探索し、その値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、索引ファイルに書き込む索引ファイル生成手段と、
バッファメモリ120の先頭のレコードのキー値が下限値Lであれば、索引ファイルにおいて参照中のレコードのキー値以上で最も値が小さいキー値を探索し、該キー値が指すレコードを含む論理ブロックをデータファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成手段と、
読み込んだ論理ブロックのヘッダ部分のオフセットを表すビット列bを読み込み、ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成手段と、
ビット列cを、読み込んだ論理ブロックのヘッダ部にオフセットデータとしてデータファイルに上書きする書き込み手段と、
バッファメモリ120から次のレコードを読み出して、該レコードのキー値が下限値L以下である場合は、第1のビット列生成手段、第2のビット列生成手段、書き込み手段を、該バッファメモリに次のレコードがなくなるまで繰り返す手段と、を有する。
二次記憶装置130は、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックを格納するデータファイルと、
データファイルの各論理ブロックのレコードのキー値に対する索引を格納する索引ファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列はデータファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、
を有し、
各論理ブロックは扱うキー値の範囲を持ち、
システム制御手段100は、
論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックに対応したオフセットファイルのビット列のオフセット数と等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すようにオフセットファイルに書き込む手段を含む。
システム制御手段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に次のレコードがなくなるまで繰り返す手段と、を有する。
二次記憶装置と、
インタフェースを介して入力されたレコードを論理ブロック分だけ蓄積するバッファメモリと、を有する装置において、
バッファメモリに蓄積されたレコードを読み出し(ステップ1)、該レコードを二次記憶装置に蓄積する際に、該レコードのデータがsparse indexに基づく構造であり、二次記憶装置の各論理ブロックに1対1で対応し(ステップ2)、該論理ブロックの範囲内のキー値が別の論理ブロックにある場合に(ステップ3)、該別の論理ブロックへのオフセットを論理ブロック単位で示すオフセットデータを該二次記憶装置に書き込む(ステップ4)制御ステップを行う。
二次記憶装置は、
入力されるレコードを論理ブロック毎に格納するデータファイルと、
データファイルの各論理ブロックのレコードのキー値に対する索引ファイルを有し、
データファイルの各論理ブロックは、
実データを格納するレコード部と、特定の論理ブロックへのオフセットを論理ブロック単位で表す固定長のビット列からなるヘッダ部から構成され、
論理ブロックは扱うキー値の範囲を持ち、
制御ステップにおいて、
論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックのヘッダ部のビット列のオフセットと等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すようにデータファイルに書き込む。
制御ステップにおいて、
バッファメモリのレコードをキー値に基づいて昇順にソートするソートステップと、
バッファメモリのレコードをデータファイルのレコード部に書き込み、データファイルのオフセットデータの初期値として全ビットを「0」にしたビット列をヘッダ部に書き込む初期化ステップと、
索引ファイルを参照して、索引内の最大のキー値を探索し、その値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、索引ファイルに書き込む索引ファイル生成ステップと、
バッファメモリの先頭のレコードのキー値が下限値Lであれば、索引ファイルにおいて参照中のレコードのキー値以上で最も値が小さいキー値を探索し、該キー値が指すレコードを含む論理ブロックをデータファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成ステップと、
読み込んだ論理ブロックのヘッダ部分のオフセットを表すビット列bを読み込み、ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成ステップと、
ビット列cを、読み込んだ論理ブロックのヘッダ部にオフセットデータとしてデータファイルに上書きする書き込みステップと、
バッファメモリから次のレコードを読み出して、該レコードのキー値が下限値L以下である場合は、第1のビット列生成ステップ、第2のビット列生成ステップ、書き込みステップを、該バッファメモリに次のレコードがなくなるまで繰り返す。
二次記憶装置は、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックを格納するデータファイルと、
データファイルの各論理ブロックのレコードのキー値に対する索引を格納する索引ファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列はデータファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、
を有し、
各論理ブロックは扱うキー値の範囲を持ち、
制御ステップにおいて、
論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックに対応したオフセットファイルのビット列のオフセット数と等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すようにオフセットファイルに書き込む。
制御ステップにおいて、
バッファメモリのレコードをキー値に基づいて昇順にソートするソートステップと、
バッファメモリのレコードをデータファイルのレコード部に書き込むステップと、
索引ファイルを参照して索引内の最大のキー値を探索し、該キー値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、索引ファイルに書き込む索引ファイル生成ステップと、
書き込んだ論理ブロック内で最大のキー値をキー値とし、初期値として全ビットを「0」にしたビット列をオフセットデータとしてレコードをオフセットファイルに書き込むステップと、
バッファメモリの先頭のレコードのキー値が下限値Lであれば、索引ファイルのキー値ガ指すレコードを含む論理ブロックをデータファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成ステップと、
索引ファイルのキー値に基づいて読み込んだデータファイルの論理ブロックに対応したオフセットデータをオフセットファイルから探索し、探索したオフセットデータのビット列bを読み込み、ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成ステップと、
ビット列cを、オフセットファイルの読み込んだオフセットデータに上書きする書き込みステップと、
バッファメモリから次のレコードを読み出して、該レコードのキー値が下限値L以下である場合は、第1のビット列生成ステップ、第2のビット列生成ステップ、書き込みステップを、該バッファメモリに次のレコードがなくなるまで繰り返す。
二次記憶装置は、少なくとも、
入力されるレコードを論理ブロック毎に格納するデータファイルと、
データファイルの各論理ブロックのレコードのキー値に対する索引ファイルと、を有し、
完全一致検索または範囲検索を行うための検索条件としてキー値が入力されると、
キー値から二次記憶装置の索引ファイルを検索し、得られた索引に基づいて所望のキー値を持つレコードを検索しても見つからない場合に、索引に対応する論理ブロックのオフセットデータを参照し、得られたオフセット分だけ該論理ブロックより後ろの論理ブロックを読み込み、読み込まれた論理ブロックを対象として、キー値による検索を行う検索手段を有する。
検索条件として、探索キーが入力されると、索引ファイルから探索キー値以上で最も値の小さいキー値を探索し、該キー値が指し示すレコードを含むデータファイルの論理ブロックを読み込む手段と、
読み込んだ論理ブロック内のレコード部から二分探索を用いて探索キーを持つレコードを検索し、探索キーを持つレコードが見つかった場合は、該レコードを出力する手段と、
見つからなかった場合は、論理ブロックのヘッダにあるオフセットデータのビット列を参照し、まだチェックしていないビットの内ビットが1となっているビット番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、読み込んだ論理ブロックから二分探索を用いて探索キーを持つレコードを探索する手段と、を有する。
下限キー値以上、上限キー値未満という検索条件が与えられると、索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックをデータファイルから読み込む手段と、
読み込んだ論理ブロックのヘッダ部のオフセットを示すビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的にアドレス集合U記憶手段に格納する手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値未満である場合に、次のレコードを参照する手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値未満である場合に、その参照しているレコードから該論理ブロックの末尾のレコードまでのすべてのレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、さらに次の論理ブロックが存在する場合には次の論理ブロックを読み込む手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以下である場合に、その参照しているレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照する手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以上である場合に、アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部のすべてのレコードのキー値について、下限キー値以上、上限キー値未満であるかを判定し、該キー値が下限キー値以上、上限キー値未満であれば、該キー値を持つレコードを、検索条件を満たすレコード集合R記憶手段に格納する手段と、
レコード集合R記憶手段に格納されているレコードを検索結果として出力する手段と、
を有する。
二次記憶装置は、
索引ファイルと、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列はデータファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
入力された検索条件のキー値以上で最も値の小さいキー値を索引ファイルから検索し、その値が指すレコードをデータファイルの論理ブロックから読み込む手段と、
読み込んだ論理ブロック内のレコード部から二分探索を用いて、検索条件のキー値を持つレコードを検索する二分探索手段と、
二分探索手段において、レコードが見つかった場合は当該レコードを出力し、見つからない場合は、該索引ファイルから検索されたキー値を用いてオフセットファイルから論理ブロックに対応したオフセットデータを検索し、該オフセットデータのビット列でまだチェックしていない「1」となっているビットの番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、二分探索手段を行う処理をビット列が持つビットが「1」となっている全ての桁について行う手段と、を有する。
二次記憶装置は、
索引ファイルと、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列はデータファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
下限キー値以上、上限キー値未満という検索条件が与えられると、索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックをデータファイルから読み込む手段と、
読み込んだ論理ブロックの末尾のレコードを参照し、該レコードのキー値を元に、該論理ブロックに対応するオフセットデータをオフセットファイルから検索する手段と、
検索したオフセットデータのビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的に記憶手段のアドレス集合U記憶手段に格納する手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値未満である場合に、次のレコードを参照する手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値未満であれば、参照しているレコードから末尾までのレコードを、検索条件を満たすレコード集合R記憶手段に格納し、さらに、次の論理ブロックが存在する場合には次の論理ブロックを読み込む手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以下である場合に、その参照しているレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照する手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以上である場合に、アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部の全てのレコードのキー値について、下限キー値以上、上限キー値未満であるかを判定し、該キー値が下限キー値以上、上限キー値未満であれば、該キー値を持つレコードを、検索条件を満たすレコード集合R記憶手段に格納する手段と、
レコード集合R記憶手段に格納されているレコードを検索結果として出力する手段と、を有する。
二次記憶装置は、少なくとも、
入力されるレコードを論理ブロック毎に格納するデータファイルと、
データファイルの各論理ブロックのレコードのキー値に対する索引ファイルと、を有し、
完全一致検索または範囲検索を行うための検索条件としてキー値が入力されると、
キー値から二次記憶装置の索引ファイルを検索し、得られた索引に基づいて所望のキー値を持つレコードを検索しても見つからない場合に、索引に対応する論理ブロックに対応するオフセットデータを参照し、得られたオフセット分だけ該論理ブロックより後ろの論理ブロックを読み込み、読み込まれた論理ブロックを対象として、キー値による検索を行う。
検索条件として、探索キーが入力されると、索引ファイルから探索キー値以上で最も値の小さいキー値を探索し、該キー値が指し示すレコードを含むデータファイルの論理ブロックを読み込むステップと、
読み込んだ論理ブロック内のレコード部から二分探索を用いて探索キーを持つレコードを検索し、探索キーを持つレコードが見つかった場合は、該レコードを出力するステップと、
見つからなかった場合は、論理ブロックのヘッダにあるオフセットデータのビット列を参照し、まだチェックしていないビットの内ビットが1となっているビット番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、読み込んだ論理ブロックから二分探索を用いて探索キーを持つレコードを探索するステップと、を行う。
下限キー値以上、上限キー値未満という検索条件が与えられると、索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックをデータファイルから読み込むステップと、
読み込んだ論理ブロックのヘッダ部のオフセットを示すビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的にアドレス集合U記憶手段に格納するステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値未満である場合に、次のレコードを参照するステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値未満である場合に、その参照しているレコードから該論理ブロックの末尾のレコードまでのすべてのレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、さらに次の論理ブロックが存在する場合には次の論理ブロックを読み込むステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以下である場合に、その参照しているレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照するステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以上である場合に、アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部のすべてのレコードのキー値について、下限キー値以上、上限キー値未満であるかを判定し、該キー値が下限キー値以上、上限キー値未満であれば、該キー値を持つレコードを、検索条件を満たすレコード集合R記憶手段に格納するステップと、
レコード集合R記憶手段に格納されているレコードを検索結果として出力するステップと、を行う。
二次記憶装置は、
索引ファイルと、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列はデータファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
入力された検索条件のキー値以上で最も値の小さいキー値を索引ファイルから検索し、その値が指すレコードをデータファイルの論理ブロックから読み込むステップと、
読み込んだ論理ブロック内のレコード部から二分探索を用いて、検索条件のキー値を持つレコードを検索する二分探索ステップと、
二分探索手段において、レコードが見つかった場合は当該レコードを出力し、見つからない場合は、該索引ファイルから検索されたキー値を用いてオフセットファイルから論理ブロックに対応したオフセットデータを検索し、該オフセットデータのビット列でまだチェックしていない「1」となっているビットの番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、二分探索ステップを行う処理をビット列が持つビットが「1」となっている全ての桁について行うステップと、を行う。
二次記憶装置は、
索引ファイルと、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列はデータファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
下限キー値以上、上限キー値未満という検索条件が与えられると、索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックをデータファイルから読み込むステップと、
読み込んだ論理ブロックの末尾のレコードを参照し、該レコードのキー値を元に、該論理ブロックに対応するオフセットデータをオフセットファイルから検索するステップと、
検索したオフセットデータのビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的にアドレス集合U記憶手段に格納するステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値未満である場合に、次のレコードを参照するステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値未満であれば、参照しているレコードから末尾までのレコードを、検索条件を満たすレコード集合R記憶手段に格納し、さらに、次の論理ブロックが存在する場合には次の論理ブロックを読み込むステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以下である場合に、その参照しているレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照するステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が上限キー値以上であり、かつ、参照しているレコードのキー値が上限キー値以上である場合に、アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部の全てのレコードのキー値について、下限キー値以上、上限キー値未満であるかを判定し、該キー値が下限キー値以上、上限キー値未満であれば、該キー値を持つレコードを、検索条件を満たすレコード集合R記憶手段に格納するステップと、
レコード集合R記憶手段に格納されているレコードを検索結果として出力するステップと、を行う。
本実施の形態は、オフセットデータをビット列長hのビット列とし、二次記憶装置内のデータファイルの各論理ブロックのヘッダ部に書き込む方法である。また、このとき、オフセットデータのビット列によるオフセット数の表現方法は、ビット列のビット番号を用いて行う。このため、ビット列長hは表現できるオフセット数に影響する。ビット列長hの場合、表現できるオフセット数の最大値はhとなる。このため、順序逆転によってあるレコードがhよりも大きい論理ブロック数分遅れて入力された場合、このレコードを指し示すことはできない。よって、入力するデータの順序逆転が起こり得る範囲に併せてビット列長hを適宜設定する必要がある。
図5、図6は、本発明の第1の実施の形態におけるデータ追加処理を示すフローチャートである。
図7は、本発明の第1の実施の形態におけるキー値による完全一致検索処理のフローチャートである。
図8、図9は、本発明の第1の実施の形態におけるキー値によるデータの範囲検索処理のフローチャートである。
前述の第1の実施の形態では、オフセットデータをデータファイルに格納する場合を示したが、本実施の形態では、オフセットデータをデータファイルとは別のファイルであるオフセットファイルに格納する場合について説明する。
図12、13は、本発明の第2の実施の形態におけるデータ追加処理のフローチャートである。
図14は、本発明の第2の実施の形態におけるキー値による完全一致検索処理のフローチャートである。
図15、16は、本発明の第2の実施の形態におけるキー値による範囲検索処理のフローチャートである。
101 入力データ解析部
102 メモリ管理部
103 ファイル操作部
110 インタフェース
120 バッファメモリ
130 二次記憶装置
131 索引ファイル
132 データファイル(オフセットデータを含む)
200 システム制御部
201 入力データ解析部
202 メモリ管理部
203 ファイル操作部
230 二次記憶装置
231 索引ファイル
232 データファイル
233 オフセットファイル
Claims (22)
- コンピュータ上で二次記憶装置に論理ブロック単位で逐次データ蓄積を行う場合に、データの順序の逆転が起こっても高速な書き込みと完全一致検索及び範囲検索を行うためのデータ蓄積装置であって、
インタフェースを介して入力されたレコードを論理ブロック分だけ蓄積するバッファメモリと、
前記バッファメモリに蓄積されたレコードを読み出し、該レコードを前記二次記憶装置に蓄積する際に、該レコードのデータがsparse indexに基づく構造であり、該二次記憶装置の各論理ブロックに1対1で対応し、該論理ブロックの範囲内のキー値が別の論理ブロックにある場合に、該別の論理ブロックへのオフセットを論理ブロック単位で示すオフセットデータを該二次記憶装置に書き込むシステム制御手段を有する
ことを特徴とするデータ蓄積装置。 - 前記二次記憶装置は、
入力されるレコードを論理ブロック毎に格納するデータファイルと、
前記データファイルの各論理ブロックのレコードのキー値に対する索引を格納した索引ファイルと、
を有し、
前記データファイルの各論理ブロックは、
実データを格納するレコード部と、特定の論理ブロックへのオフセットを論理ブロック単位で表す固定長のビット列からなるヘッダ部から構成され、
前記論理ブロックは扱うキー値の範囲を持ち、
前記システム制御手段は、
前記論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックのヘッダ部のビット列のオフセットと等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すように前記データファイルに書き込む手段を含む
請求項1記載のデータ蓄積装置。 - 前記システム制御手段は、
前記バッファメモリのレコードをキー値に基づいて昇順にソートするソート手段と、
前記バッファメモリのレコードを前記データファイルの前記レコード部に書き込み、前記データファイルのオフセットデータの初期値として、全ビットを「0」にしたビット列を前記ヘッダ部に書き込む初期化手段と、
前記索引ファイルを参照して、索引内の最大のキー値を探索し、その値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、前記索引ファイルに書き込む索引ファイル生成手段と、
前記バッファメモリの先頭のレコードのキー値が前記下限値Lであれば、前記索引ファイルにおいて参照中のレコードのキー値以上で最も値が小さいキー値を探索し、該キー値が指すレコードを含む論理ブロックを前記データファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成手段と、
前記読み込んだ論理ブロックのヘッダ部分のオフセットを表すビット列bを読み込み、前記ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成手段と、
前記ビット列cを、読み込んだ論理ブロックのヘッダ部にオフセットデータとして前記データファイルに上書きする書き込み手段と、
前記バッファメモリから次のレコードを読み出して、該レコードのキー値が前記下限値L以下である場合は、前記第1のビット列生成手段、前記第2のビット列生成手段、前記書き込み手段を、該バッファメモリに次のレコードがなくなるまで繰り返す手段と、
を有する請求項2記載のデータ蓄積装置。 - 前記二次記憶装置は、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックを格納するデータファイルと、
前記データファイルの各論理ブロックのレコードのキー値に対する索引を格納する索引ファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列は前記データファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、
を有し、
前記各論理ブロックは扱うキー値の範囲を持ち、
前記システム制御手段は、
前記論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックに対応したオフセットファイルのビット列の前記オフセット数と等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すように前記オフセットファイルに書き込む手段を含む
請求項1記載のデータ蓄積装置。 - 前記システム制御手段は、
前記バッファメモリのレコードをキー値に基づいて昇順にソートするソート手段と、
前記バッファメモリのレコードを前記データファイルの前記レコード部に書き込む手段と、
前記索引ファイルを参照して索引内の最大のキー値を探索し、該キー値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、前記索引ファイルに書き込む索引ファイル生成手段と、
前記書き込んだ論理ブロック内で最大のキー値をキー値とし、初期値として全ビットを「0」にしたビット列をオフセットデータとしてオフセットファイルに書き込む手段と、
前記バッファメモリの先頭のレコードのキー値が前記下限値Lであれば、前記索引ファイルのキー値が指すレコードを含む論理ブロックを前記データファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成手段と、
前記索引ファイルのキー値に基づいて読み込んだ前記データファイルの論理ブロックに対応したオフセットデータを前記オフセットファイルから探索し、探索したオフセットデータのビット列bを読み込み、前記ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成手段と、
前記ビット列cを、前記オフセットファイルの読み込んだオフセットデータに上書きする書き込み手段と、
前記バッファメモリから次のレコードを読み出して、該レコードのキー値が前記下限値L以下である場合は、前記第1のビット列生成手段、前記第2のビット列生成手段、前記書き込み手段を、該バッファメモリに次のレコードがなくなるまで繰り返す手段と、
を有する請求項4記載のデータ蓄積装置。 - コンピュータ上で二次記憶装置に論理ブロック単位で逐次データ蓄積を行う場合に、データの順序の逆転が起こっても高速な書き込みと完全一致検索及び範囲検索を行うためのデータ蓄積方法であって、
前記二次記憶装置と、
インタフェースを介して入力されたレコードを論理ブロック分だけ蓄積するバッファメモリと、を有する装置において、
前記バッファメモリに蓄積されたレコードを読み出し、該レコードを前記二次記憶装置に蓄積する際に、該レコードのデータがsparse indexに基づく構造であり、前記二次記憶装置の各論理ブロックに1対1で対応し、該論理ブロックの範囲内のキー値が別の論理ブロックにある場合に、該別の論理ブロックへのオフセットを論理ブロック単位で示すオフセットデータを該二次記憶装置に書き込む制御ステップを行う
ことを特徴とするデータ蓄積方法。 - 前記二次記憶装置は、
入力されるレコードを論理ブロック毎に格納するデータファイルと、
前記データファイルの各論理ブロックのレコードのキー値に対する索引ファイルを有し、
前記データファイルの各論理ブロックは、
実データを格納するレコード部と、特定の論理ブロックへのオフセットを論理ブロック単位で表す固定長のビット列からなるヘッダ部から構成され、
前記論理ブロックは扱うキー値の範囲を持ち、
前記制御ステップにおいて、
前記論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックのヘッダ部のビット列のオフセットと等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すように前記データファイルに書き込む
請求項6記載のデータ蓄積方法。 - 前記制御ステップにおいて、
前記バッファメモリのレコードをキー値に基づいて昇順にソートするソートステップと、
前記バッファメモリのレコードを前記データファイルの前記レコード部に書き込み、前記データファイルのオフセットデータの初期値として全ビットを「0」にしたビット列を前記ヘッダ部に書き込む初期化ステップと、
前記索引ファイルを参照して、索引内の最大のキー値を探索し、その値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、前記索引ファイルに書き込む索引ファイル生成ステップと、
前記バッファメモリの先頭のレコードのキー値が前記下限値Lであれば、前記索引ファイルにおいて参照中のレコードのキー値以上で最も値が小さいキー値を探索し、該キー値が指すレコードを含む論理ブロックを前記データファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成ステップと、
前記読み込んだ論理ブロックのヘッダ部分のオフセットを表すビット列bを読み込み、前記ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成ステップと、
前記ビット列cを、読み込んだ論理ブロックのヘッダ部にオフセットデータとして前記データファイルに上書きする書き込みステップと、
前記バッファメモリから次のレコードを読み出して、該レコードのキー値が前記下限値L以下である場合は、前記第1のビット列生成ステップ、前記第2のビット列生成ステップ、前記書き込みステップを、該バッファメモリに次のレコードがなくなるまで繰り返す、
請求項7記載のデータ蓄積方法。 - 前記二次記憶装置は、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックを格納するデータファイルと、
前記データファイルの各論理ブロックのレコードのキー値に対する索引を格納する索引ファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列は前記データファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、
を有し、
前記各論理ブロックは扱うキー値の範囲を持ち、
前記制御ステップにおいて、
前記論理ブロックが扱うキー値が他の論理ブロックに格納された場合、該キー値が格納された論理ブロックと該キー値を含むキー値の範囲を持つブロックとのオフセット数を論理ブロック単位で求め、該キー値を範囲に持つ論理ブロックに対応したオフセットファイルのビット列の前記オフセット数と等しいビット番号のビットを「1」にすることで、該論理ブロックが扱う範囲のキー値がビット列の「1」となったビットのビット番号が示すオフセット数だけ離れた論理ブロックにも格納されていることを示すように前記オフセットファイルに書き込む
請求項6記載のデータ蓄積方法。 - 前記制御ステップにおいて、
前記バッファメモリのレコードをキー値に基づいて昇順にソートするソートステップと、
前記バッファメモリのレコードを前記データファイルの前記レコード部に書き込むステップと、
前記索引ファイルを参照して索引内の最大のキー値を探索し、該キー値を書き込んだ論理ブロックで扱うキー値の下限値Lとし、書き込んだ論理ブロック内で最大のキー値を持つ末尾のレコードに対して索引を作成し、前記索引ファイルに書き込む索引ファイル生成ステップと、
前記書き込んだ論理ブロック内で最大のキー値をキー値とし、初期値として全ビットを「0」にしたビット列をオフセットデータとしてレコードをオフセットファイルに書き込むステップと、
前記バッファメモリの先頭のレコードのキー値が前記下限値Lであれば、前記索引ファイルのキー値ガ指すレコードを含む論理ブロックを前記データファイルから読み込み、読み込んだ論理ブロックと書き込んだ論理ブロックのアドレスの距離をオフセットXとし、X番目のビットのみを「1」とした桁数hのビット列aを生成する第1のビット列生成ステップと、
前記索引ファイルのキー値に基づいて読み込んだ前記データファイルの論理ブロックに対応したオフセットデータを前記オフセットファイルから探索し、探索したオフセットデータのビット列bを読み込み、前記ビット列aと該ビット列bのOR条件で結合したビット列cを生成する第2のビット列生成ステップと、
前記ビット列cを、前記オフセットファイルの読み込んだオフセットデータに上書きする書き込みステップと、
前記バッファメモリから次のレコードを読み出して、該レコードのキー値が前記下限値L以下である場合は、前記第1のビット列生成ステップ、前記第2のビット列生成ステップ、前記書き込みステップを、該バッファメモリに次のレコードがなくなるまで繰り返す、
請求項9記載のデータ蓄積方法。 - 請求項1乃至5のデータ蓄積装置により二次記憶装置のデータファイルに蓄積されたデータを検索するためのデータ検索装置であって、
前記二次記憶装置は、少なくとも、
入力されるレコードを論理ブロック毎に格納するデータファイルと、
前記データファイルの各論理ブロックのレコードのキー値に対する索引ファイルと、を有し、
完全一致検索または範囲検索を行うための検索条件としてキー値が入力されると、
前記キー値から前記二次記憶装置の前記索引ファイルを検索し、得られた索引に基づいて所望のキー値を持つレコードを検索しても見つからない場合に、索引に対応する論理ブロックのオフセットデータを参照し、得られたオフセット分だけ該論理ブロックより後ろの論理ブロックを読み込み、読み込まれた論理ブロックを対象として、前記キー値による検索を行う検索手段を有する
ことを特徴とするデータ検索装置。 - 前記検索条件として、探索キーが入力されると、前記索引ファイルから探索キー値以上で最も値の小さいキー値を探索し、該キー値が指し示すレコードを含むデータファイルの論理ブロックを読み込む手段と、
読み込んだ前記論理ブロック内のレコード部から二分探索を用いて探索キーを持つレコードを検索し、前記探索キーを持つレコードが見つかった場合は、該レコードを出力する手段と、
見つからなかった場合は、前記論理ブロックのヘッダにあるオフセットデータのビット列を参照し、まだチェックしていないビットの内ビットが1となっているビット番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、読み込んだ論理ブロックから二分探索を用いて探索キーを持つレコードを探索する手段と、
を有する
請求項11記載のデータ検索装置。 - 下限キー値以上、上限キー値未満という検索条件が与えられると、前記索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックを前記データファイルから読み込む手段と、
読み込んだ前記論理ブロックのヘッダ部のオフセットを示すビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的にアドレス集合U記憶手段に格納する手段と、
読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値未満である場合に、次のレコードを参照する手段と、
読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードから該論理ブロックの末尾のレコードまでのすべてのレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、さらに次の論理ブロックが存在する場合には次の論理ブロックを読み込む手段と、
読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードを、前記検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照する手段と、
読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値以上である場合に、前記アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部のすべてのレコードのキー値について、前記下限キー値以上、前記上限キー値未満であるかを判定し、該キー値が前記下限キー値以上、前記上限キー値未満であれば、該キー値を持つレコードを、前記検索条件を満たすレコード集合R記憶手段に格納する手段と、
前記レコード集合R記憶手段に格納されているレコードを検索結果として出力する手段と、
を有する請求項11記載のデータ検索装置。 - 前記二次記憶装置において、
前記索引ファイルと、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列は前記データファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
入力された検索条件のキー値以上で最も値の小さいキー値を前記索引ファイルから検索し、その値が指すレコードを前記データファイルの論理ブロックから読み込む手段と、
読み込んだ論理ブロック内のレコード部から二分探索を用いて、検索条件のキー値を持つレコードを検索する二分探索手段と、
前記二分探索手段において、レコードが見つかった場合は当該レコードを出力し、見つからない場合は、該索引ファイルから検索されたキー値を用いて前記オフセットファイルから論理ブロックに対応したオフセットデータを検索し、該オフセットデータのビット列でまだチェックしていない「1」となっているビットの番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、前記二分探索手段を行う処理をビット列が持つビットが「1」となっている全ての桁について行う手段と、
を有する請求項11記載のデータ検索装置。 - 前記二次記憶装置において、
前記索引ファイルと、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列は前記データファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
下限キー値以上、上限キー値未満という検索条件が与えられると、前記索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックを前記データファイルから読み込む手段と、
読み込んだ前記論理ブロックの末尾のレコードを参照し、該レコードのキー値を元に、該論理ブロックに対応するオフセットデータを前記オフセットファイルから検索する手段と、
検索したオフセットデータのビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的に記憶手段のアドレス集合U記憶手段に格納する手段と、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値未満である場合に、次のレコードを参照する手段と、
読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードから該論理ブロックの末尾のレコードまでの全てのレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、さらに次の論理ブロックが存在する場合には次の論理ブロックを読み込む手段と、
読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照する手段と、
読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値以上である場合に、前記アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部の全てのレコードのキー値について、前記下限キー値以上、前記上限キー値未満であるかを判定し、該キー値が前記下限キー値以上、前記上限キー値未満であれば、該キー値を持つレコードを、前記検索条件を満たすレコード集合R記憶手段に格納する手段と、
前記レコード集合R記憶手段に格納されているレコードを検索結果として出力する手段と、
を有する請求項11記載のデータ検索装置。 - 請求項6乃至10のデータ蓄積方法により、二次記憶装置のデータファイルに蓄積されたデータを検索するためのデータ検索方法であって、
前記二次記憶装置は、少なくとも、
入力されるレコードを論理ブロック毎に格納するデータファイルと、
前記データファイルの各論理ブロックのレコードのキー値に対する索引ファイルと、を有し、
完全一致検索または範囲検索を行うための検索条件としてキー値が入力されると、
前記キー値から前記二次記憶装置の前記索引ファイルを検索し、得られた索引に基づいて所望のキー値を持つレコードを検索しても見つからない場合に、索引に対応する論理ブロックに対応するオフセットデータを参照し、得られたオフセット分だけ該論理ブロックより後ろの論理ブロックを読み込み、読み込まれた論理ブロックを対象として、前記キー値による検索を行う
ことを特徴とするデータ検索方法。 - 前記検索条件として、探索キーが入力されると、前記索引ファイルから探索キー値以上で最も値の小さいキー値を探索し、該キー値が指し示すレコードを含むデータファイルの論理ブロックを読み込むステップと、
読み込んだ前記論理ブロック内のレコード部から二分探索を用いて探索キーを持つレコードを検索し、前記探索キーを持つレコードが見つかった場合は、該レコードを出力するステップと、
見つからなかった場合は、前記論理ブロックのヘッダにあるオフセットデータのビット列を参照し、まだチェックしていないビットの内ビットが1となっているビット番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、読み込んだ論理ブロックから二分探索を用いて探索キーを持つレコードを探索するステップと、
を行う請求項16記載のデータ検索方法。 - 下限キー値以上、上限キー値未満という検索条件が与えられると、前記索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックを前記データファイルから読み込むステップと、
読み込んだ前記論理ブロックのヘッダ部のオフセットを示すビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的にアドレス集合U記憶手段に格納するステップと、
読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値未満である場合に、次のレコードを参照するステップと、
読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードから該論理ブロックの末尾のレコードまでのすべてのレコードを、検索条件を満たすレコード集合R記憶手段に追加格納し、さらに次の論理ブロックが存在する場合には次の論理ブロックを読み込むステップと、
読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードを、前記検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照するステップと、
読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値以上である場合に、前記アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部のすべてのレコードのキー値について、前記下限キー値以上、前記上限キー値未満であるかを判定し、該キー値が前記下限キー値以上、前記上限キー値未満であれば、該キー値を持つレコードを、前記検索条件を満たすレコード集合R記憶手段に格納するステップと、
前記レコード集合R記憶手段に格納されているレコードを検索結果として出力するステップと、
を行う請求項16記載のデータ検索方法。 - 前記二次記憶装置において、
前記索引ファイルと、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列は前記データファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
入力された検索条件のキー値以上で最も値の小さいキー値を前記索引ファイルから検索し、その値が指すレコードを前記データファイルの論理ブロックから読み込むステップと、
読み込んだ論理ブロック内のレコード部から二分探索を用いて、検索条件のキー値を持つレコードを検索する二分探索ステップと、
前記二分探索手段において、レコードが見つかった場合は当該レコードを出力し、見つからない場合は、該索引ファイルから検索されたキー値を用いて前記オフセットファイルから論理ブロックに対応したオフセットデータを検索し、該オフセットデータのビット列でまだチェックしていない「1」となっているビットの番号XをオフセットXとし、Xブロック後ろの論理ブロックを読み込み、前記二分探索ステップを行う処理をビット列が持つビットが「1」となっている全ての桁について行うステップと、
を行う請求項16記載のデータ検索方法。 - 前記二次記憶装置において、
前記索引ファイルと、
入力されたレコード毎にキー値と実データを格納するレコード部を有する論理ブロックのみを格納するデータファイルと、
複数の固定長のビット列からなり、各ビット列はそれぞれある論理ブロックに1対1で対応し、かつ、各ビット列は前記データファイルの特定の論理ブロックへのオフセットを論理ブロック単位で表すオフセットファイルと、を有し、
下限キー値以上、上限キー値未満という検索条件が与えられると、前記索引ファイルから該下限キー値以上で最も値が小さいキー値を探し、該キー値が指し示すレコードを含む論理ブロックを前記データファイルから読み込むステップと、
読み込んだ前記論理ブロックの末尾のレコードを参照し、該レコードのキー値を元に、該論理ブロックに対応するオフセットデータを前記オフセットファイルから検索するステップと、
検索したオフセットデータのビット列を参照し、「1」となっているビットがあれば、該ビットが指す論理ブロックのアドレスを一時的にアドレス集合U記憶手段に格納するステップと、
読み込んだ論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値未満である場合に、次のレコードを参照するステップと、
読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードから該論理ブロックの末尾のレコードのまでの全てのレコードを、検索条件を満たすレコード集合R記憶手段に格納し、さらに、次の論理ブロックが存在する場合には次の論理ブロックを読み込むステップと、
読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値未満である場合に、その参照しているレコードを、前記検索条件を満たすレコード集合R記憶手段に追加格納し、次のレコードを参照するステップと、
読み込んだ前記論理ブロックのレコード部の参照しているレコードのキー値が前記下限キー値以上で、かつ、該論理ブロックの末尾のレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値以上であり、かつ、参照しているレコードのキー値が前記上限キー値以上である場合に、前記アドレス集合U記憶手段が持つ各アドレスを参照し、各アドレスが指し示す論理ブロックを読み込み、該論理ブロックのレコード部の全てのレコードのキー値について、前記下限キー値以上、前記上限キー値未満であるかを判定し、該キー値が前記下限キー値以上、前記上限キー値未満であれば、該キー値を持つレコードを、前記検索条件を満たすレコード集合R記憶手段に格納するステップと、
前記レコード集合R記憶手段に格納されているレコードを検索結果として出力するステップと、
を行う請求項16記載のデータ検索方法。 - 請求項1乃至5のいずれかに記載のデータ蓄積装置を構成する各手段としてコンピュータを機能させるためのデータ蓄積プログラム。
- 請求項11乃至15のいずれかに記載のデータ検索装置を構成する各手段としてコンピュータを機能させるためのデータ検索プログラム。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111241108A (zh) * | 2020-01-16 | 2020-06-05 | 北京百度网讯科技有限公司 | 基于键值对kv系统的索引方法、装置、电子设备和介质 |
Citations (4)
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 | ストリームデータ処理方法及び計算機システム |
-
2010
- 2010-02-10 JP JP2010028077A patent/JP5354606B2/ja not_active Expired - Fee Related
Patent Citations (4)
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)
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)
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 |