JP5165662B2 - ビット列キー分類・分配装置、分類・分配方法及びプログラム - Google Patents
ビット列キー分類・分配装置、分類・分配方法及びプログラム Download PDFInfo
- Publication number
- JP5165662B2 JP5165662B2 JP2009246868A JP2009246868A JP5165662B2 JP 5165662 B2 JP5165662 B2 JP 5165662B2 JP 2009246868 A JP2009246868 A JP 2009246868A JP 2009246868 A JP2009246868 A JP 2009246868A JP 5165662 B2 JP5165662 B2 JP 5165662B2
- Authority
- JP
- Japan
- Prior art keywords
- key
- classification
- node
- link
- tree
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
一方、データベースに関連した処理として、下記特許文献1及び下記特許文献2に記載されているように、データベース中のレコードのマージソートが行われている。このマージソートもビット列データのマージソートに帰着される。
特許文献2には、マージソートの後段の処理について図1に示す処理が開示されている。
そして、図1に示すように、各ブロックから最小値を取り出し、各ブロックの最小値によるデータ列を生成することによりマージソートを実現している。
ところで、図1に示すように、従来のデータをN個のブロックに分類する手法では、各ブロックに分類されるデータの範囲に重複がある。したがって、各ブロックのサイズをキャッシュメモリに収まるものとすることにより、各ブロック内のソートを高速に実行できるとしても、後段の各ブロック内のデータをマージソートする処理では、ソート対象データ全体のソートを行うため、キャッシュメモリを用いた高速な処理とすることはできない。
また、下記特許文献4には、カップルドノードツリーの任意の部分木の最小値や最大値を検索する手法や、カップルドノードツリーの任意の部分木から昇順あるいは降順でインデックスキーを取り出す手法が開示されている。
以下、図2A及び図2Bを参照して、本発明の背景技術の一つとして、カップルドノードツリーについて説明する。
符号410aで示すのが図2Bに例示するカップルドノードツリー400のルートノードである。図示の例では、ルートノード410aは配列番号420に配置されたノード対401aの代表ノードとしている。ツリー構造としては、ルートノード410aの下にノード対401bが、その下層にノード対401cとノード対401fが配置され、ノード対401fの下層にはノード対401hとノード対401gが配置されている。ノード対401cの下にはノード対401dが、さらにその下にはノード対401eが配置されている。
ノード対401fのノード410f、411fのノード種別460f、461fはともに0であり双方ともブランチノードである。それぞれの弁別ビット位置430f、431fには5、3が格納されている。ノード410fの代表ノード番号にはノード対401gの代表ノード410gの格納された配列要素の配列番号420fが格納され、ノード411fの代表ノード番号にはノード対401hの代表ノードであるノード[0]410hの格納された配列要素の配列番号421fが格納されている。
しかしながら、上述のマージソートの後段の処理の前提となる、ブロック内のインデックスキーが複数であるインデックスキーの分類手法は開示されていない。
本発明の一つの態様によれば、分類ツリーのリーフノードは、キー記憶手段に記憶されている分類キーの位置情報を取得するために用いるキーアクセス情報を含む。そして、キーアクセス情報を用いてキーの位置情報を取得するためのキー位置検索表を生成する。
分類ツリーの段数nは、2の(n−1)乗がブロックの個数Nと等しいかそれより大きい最小の値に制限される。例えばN=8であれば、n=4となる。
、“1110”が存在する。
一方、インデックスキーのうち、ビット位置0のビット値143aの値が1のものは、点線の矢印の組151aが示すように、第2段の弁別ビット位置による分類141cでさらに分類される。
図4には、ビット列キー分類・分配装置300がネットワーク347を介してビット列キーソート装置340a、340b、・・・、340mに接続されたシステムが例として記載されている。ビット列キー分類・分配装置300による分類済みのビット列キーの分配先がビット列キーソート装置であるのは1つの例であり、集計処理等の他のアプリケーションにも適用可能である。
また、分配先の装置も、ネットワークを介して接続されたものに限らず、例えばマルチプロセッサシステムの中央処理装置とすることもできる。
また、ビット列ソート装置340a、340b、・・・、340mにおける各装置の接続方法やデータ格納装置の構成についても同様である。
図5に例示する分類ツリー200は、図2Bに例示するインデックスキーの記憶領域311に記憶されたインデックスキーを4つのブロックに分類するためのものである。
図5に示すインデックスキーの管理領域320には、キー分類表321とキーリンク表322が格納されている。キー分類表321とキーリンク表で、先に述べたキー位置検索表の例を構成しており、キー分類表321のエントリを指す分類参照ポインタは、先に述べたキーアクセス情報の例である。
図5のインデックスキーの管理領域320に記載された370h等の符号は、図2Bのインデックスキーの記憶領域311に記載された270h等の符号で示すインデックスキー“101011”等に対応している。
ノード対201fの代表ノードであるノード[0]210fとそれと対をなすノード[1]211fのノード種別260f、261fはともに1であり双方ともリーフノードである。ノード210f、211fの分類参照ポインタ250f、251fには、それぞれ分類参照ポインタ280g、280hが格納されている。
最小値キー312a、最大値キー312b、キーの出力先312eに格納される値の記載については省略されている。最小値キー312aと最大値キー312bの値は分類ツリー200が生成される途中で書き込まれ、更新されるが、キーの出力先312eは、分類ツリーの生成が終了した後に書き込まれる。なお、キーの出力先については、キー分類表とは別に、分類対象のキーを分類するブロック対応に設定しておくこともできる。
なお、以下の説明において、リーフノードにインデックスキーを対応付けることを、インデックスキーをリーフノードのキーリンク表に連結するということがある。また、インデックスキーが対応付けられたリーフノードを、そのインデックスキーと連結するリーフノードということがある。
また、探索経路カウンタのカウント値が記載されている。探索経路カウンタのカウント値は、分類ツリーに分類キーを挿入するときに、分類ツリーの段数の制限を満足しながら、分類キーと連結するリーフノードを含むノード対を分類ツリーに挿入することができるかの判断に用いられる。
探索経路カウンタのカウント値は、例えば初期値を0としてカウントアップし、図6Aに示すように、ルートノードにおいて値1を取るものとする。なお、初期値を分類ツリーの最大段数としてカウントダウンし、カウント値が0か判定をすることにより、同じく、分類ツリーの段数の制限を満足しながら、分類キーと連結するリーフノードを含むノード対を分類ツリーに挿入することができるかの判断を行えることは明らかである。
一方、図6Eに示すように、図6Dに示すノード210bの内容が、図6Eのノード211cにコピーされている。
以上説明した流れにより、図5に示す分類ツリー200が生成される。
ステップS703では、インデックスキーの記憶領域より、キー参照ポインタの指すキーを読み出し、分類キーに設定する。そしてステップS704において、分類キーにより分類ツリーを生成する。ステップS704の分類ツリーの生成処理の詳細については、後に図8、図9A〜図9Cを参照して説明する。
なお、先発明ではリーフノードと連結するインデックスキーは1つであるのに対して、本発明ではリーフノードのキーリンク表に連結するインデックスキーは複数でありえるので、ステップS714において、リーフノードのキーリンク表に連結するインデックスキーを順次取り出す点で本質的に異なる。
図8は、本発明の一実施の形態における分類キーにより分類ツリーを生成する全体の処理フロー例を説明する図である。 図8に示す処理の前提として、図7Aに示すステップS703において、分類キーが一時記憶領域に設定されている。
例えば、最初に処理される分類キーが、図2Bに例示する分類キー271dで、図5に示すキー分類表321の最初に用いるエントリを指す分類ポインタが280d、キーリンク表322の最初に用いるエントリを指すキー管理ポインタが371dであるとすると、分類ポインタ280dの指すキー分類表321の最小値キー312aと最大値キー312bに分類キー271dが、先頭リンク312cと末尾リンク312dにキー管理ポインタ371dが、それぞれ書き込まれ、キー管理ポインタ371dの指すキーリンク表322のキー参照ポインタ313aに図2Bに示す参照ポインタ481dが、書き込まれる。
上述の最初に処理される分類キーがキー271dとすると、図6Aに示すリーフノード210bが、最初に生成されるルートノードとなる。なお、図5に示すキー分類表には分類参照ポインタ280dの指すエントリは記載されていないが、分類キーを順次挿入していく過程において、当初用いられていたキー分類表のエントリが他のエントリと結合されて用いられなくなる場合がある。
また、先に述べたステップS915において、分類キーは最小値キーより小さいと判定されると、ステップS919において、インデックスキーに最小値を設定してステップS920に進む。
ステップS933の処理の詳細は、後に図10を参照して説明する。
なお、リーフノードの直近上位のブランチノードの弁別ビット位置までの上位のビット値は、同一のブロックに分類されるどのキーでも一致し、リーフノードの直近上位のブランチノードの弁別ビット位置までに異なるビット値のあるキーは、他のブロックに分類されることから、ステップS934において分類キーをリーフノードに連結しても、各ブロックに分類された分類キーの値の範囲に重複が生じることはない。
ステップS934の処理の詳細は、後に図11を参照して説明する。
ステップS935の詳細は、後に図12を参照して説明する。
ステップS936の処理の詳細は、先にステップS933について述べたように、次に図10を参照して説明する。
なお、上述の図11に例示する処理フローは、図9Bに示すステップS917と図9Cに示すステップS934の処理に共通のものとしているが、図9Bに示すステップS917の処理は分類キーの値が最小値キーの値と最大値キーの値の範囲内であることを前提としているので、図9Bに示すステップS917の処理としては、ステップS1101〜ステップS1105の処理とすることもできる。
ステップS1208の処理の詳細は、後に図14を参照して説明する。
そこで、本発明に係るビット列キー分類装置とビット列キー分配装置の機能構成例について、以下に説明する。
図16に示すように、ビット列キー分類装置500は、分類ツリー最大段数取得手段510、分類ツリー生成手段520、キー記憶手段550を含んで構成され、分類ツリー最大段数取得手段510で取得した最大段数の制限の中で、キー記憶手段550に記憶された分類対象のビット列キーを分類キーとして読み出し、分類ツリー530とキー位置検索表540を生成することにより、分類対象のビット列キーを分類する。
キー位置検索表540は、キー分類表321とキーリンク表322とすることができる。
101 ノード
102 ノード種別
103 弁別ビット位置
104 代表ノード番号
110 キー列
130a 分類済みキー列
140 弁別ビット位置による分類(段数2の分類)
118a 参照ポインタ
200 分類ツリー
210a ルートノード
220 ルートノードの配列番号
280g 分類参照ポインタ
300 ビット列キー分類・分配装置
301 データ処理装置
302 中央処理装置
303 キャッシュメモリ
304 バス
305 主記憶装置
306 外部記憶装置
307 通信装置
308 データ格納装置
309 配列
310 探索経路スタック
311 インデックスキーの記憶領域
320 インデックスキーの管理領域
321 キー分類表
322 キーリンク表
340a ビット列キーソート装置
347 ネットワーク
400 カップルドノードツリー
500 ビット列キー分類装置
520 分類ツリー生成手段
530 分類ツリー
540 キー位置検索表
550 キー記憶手段
600 ビット列キー分配装置
610 リーフノード取り出し手段
620 分類キー出力手段
Claims (22)
- ビット列からなる分類対象のキーを分類キーとして選択し、該分類キーの値に基づいて複数のブロックに分類するビット列キー分類装置において、
前記分類対象のキーを記憶するキー記憶手段と、
ルートノードと、隣接した記憶領域に配置されるブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるツリーであって、前記ルートノードは、ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、ツリーのノードが2つ以上のときは前記ブランチノードであり、前記ブランチノードは、前記分類キーの弁別ビット位置とリンク先のノード対の一方のノードである代表ノードの位置を示す位置情報を含み、前記リーフノードは前記キー記憶手段に記憶されている前記分類キーの位置情報を取得するために用いるキーアクセス情報を含み、
前記ツリーの任意のノードを検索開始ノードとし、前記ブランチノードにおいて、該ブランチノードに含まれる弁別ビット位置の前記分類キーのビット値に応じてリンク先のノード対の代表ノードかあるいはそれと隣接した記憶領域に配置されたノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに格納されたキーアクセス情報を、前記検索開始ノードをルートノードとする前記ツリーの任意の部分木の前記分類キーによる検索結果とするように構成された分類ツリーを生成する分類ツリー生成手段と、
前記分類対象のキーを分類する複数のブロックの数に応じた前記分類ツリーの最大段数を取得する分類ツリー最大段数取得手段と、
を備え、
前記分類ツリー生成手段は、
前記キー記憶手段から1つのキーを分類キーとして選択して該分類キーの位置情報を取得し、該取得した分類キーの位置情報を取得するために用いる前記キーアクセス情報を含むリーフノードをルートノードとする前記分類ツリーを生成するとともに、前記キーアクセス情報を用いて前記分類キーの位置情報を取得するための情報を格納するキー位置検索表を生成するルートノード生成手段と、
前記キー記憶手段からさらに順次分類対象のキーを分類キーとして選択して該分類キーの位置情報を取得し、前記分類ツリー最大段数取得手段で取得した分類ツリーの最大段数の範囲で、該取得した分類キーの位置情報を取得するために用いる前記キーアクセス情報を含むリーフノードを前記分類ツリーに挿入するとともに、前記キー位置検索表に、前記分類ツリーに挿入されるリーフノードの含まれるキーアクセス情報を用いて前記分類キーの位置情報を取得するための情報を追加して新たなキー位置検索表を生成するか、あるいは、前記キー位置検索表の、既存のリーフノードに含まれるキーアクセス情報を用いて分類キーの位置情報を取得する情報に、前記分類キーとして選択された分類対象のキーの位置情報を取得する情報を追加することにより新たなキー位置検索表を生成する分類キー挿入手段と、を含み、
前記分類対象のキーの全てを前記分類キーとして選択して前記分類ツリーを生成するとともに、該分類ツリーの各リーフノードに含まれるキーアクセス情報を用いて前記分類キーの位置情報を取得する情報を格納する前記キー位置検索表を生成することにより、前記分類対象のキーの全てを、前記各リーフノードに対応する複数のブロックに分類することを特徴とするビット列キー分類装置。 - 請求項1記載のビット列キー分類装置において、
前記キー位置検索表は、前記複数のブロックに対応するエントリを有するキー分類表と、前記分類対象のキーに対応するエントリを有するキーリンク表から構成され、
前記キー分類表のエントリは、前記キーリンク表のエントリを指すキー管理ポインタが格納される領域である先頭リンクと末尾リンクを含み、
前記キーリンク表のエントリは、前記対応する分類対象のキーが記憶された前記キー記憶手段の位置情報を指すキー参照ポインタを格納する領域と、前記キー管理ポインタを格納する領域であるリンクを含むものであり、
前記キーアクセス情報は、前記キー分類表のエントリを指す分類参照ポインタであることを特徴とするビット列キー分類装置。 - 請求項2記載のビット列キー分類装置において、
前記キー分類表のエントリは、さらに、前記対応するブロックに分類されているキーの最小値を格納する領域である最小値キーと前記対応するブロックに分類されているキーの最大値を格納する領域である最大値キーを含み、
前記ルートノード生成手段は、前記キー記憶手段から1つのキーを分類キーとして選択して読出し、該分類キーの位置情報を取得するとともに、前記キー分類表の空エントリを指す分類参照ポインタを取得し、該分類参照ポインタ含むリーフノードをルートノードとする前記分類ツリーを生成し、さらに、前記キーリンク表の空エントリを指すキー管理ポインタを取得し、該キー管理ポインタを前記取得したキー分類表のエントリの前記先頭リンクと前記末尾リンクに格納し、前記最小値キーと最大値キーに前記読み出した分類キーを格納するとともに、前記取得した位置情報を前記取得したキーリンク表のエントリのキー参照ポインタに格納するものであり、
前記分類キー挿入手段は、前記キー記憶手段からさらに順次分類対象のキーを分類キーとして選択して読み出し、該分類キーの位置情報を取得するとともに、前記ルートノードを検索開始ノードとして前記分類キーによる検索結果である分類参照ポインタを求める検索手段と、
前記キーリンク表の空エントリを指すキー管理ポインタを取得し、該キー管理ポインタの指すキーリンク表のキー参照ポインタに前記検索手段が取得した位置情報を格納するとともに、前記分類参照ポインタの指す前記キー分類表のエントリの末尾リンクの指すキーリンク表のリンクに、前記キー管理ポインタを格納することにより、前記分類参照ポインタを用いて分類キーの位置情報を取得するための情報を前記キー分類表とキーリンク表に追加する第1の分類キー連結手段と
前記キーリンク表の空エントリを指すキー管理ポインタを取得し、該キー管理ポインタの指すキーリンク表のキー参照ポインタに前記検索手段が取得した位置情報を格納するとともに、前記分類参照ポインタの指す前記キー分類表のエントリの末尾リンクの指すキーリンク表のリンクに、前記キー管理ポインタを格納することにより、前記分類参照ポインタを用いて分類キーの位置情報を取得するための情報を前記キー分類表とキーリンク表に追加するとともに、前記分類キーが該分類参照ポインタの指すキー分類表の最小値キーより小さければ、該最小値キーに該分類キーを書き込み、一方、前記分類キーが前記分類参照ポインタの指すキー分類表の最大値キーより大きければ、該最大値キーに該分類キーを書き込む第2の分類キー連結手段と、
前記検索手段が求めた分類参照ポインタの指す前記キー分類表のエントリの最小値キーあるいは最大値キーの一方を検索結果キーとし、該検索結果キーと前記分類キーの間でビット列比較を行い、該ビット列比較で異なるビット値となる先頭のビット位置である差分ビット位置を求め、前記検索手段が前記分類参照ポインタを求めたときのリンク経路のブランチノードの弁別ビット位置と前記差分ビット位置との相対的位置関係により、前記分類キーの位置情報を取得するために用いる分類参照ポインタを含むリーフノードと該リーフノードと対をなすノードからなるノード対を前記分類ツリーに挿入したときに該ノード対のリンク元となるノードの位置情報を該ノード対の挿入位置として決定するノード対挿入位置決定手段と、
前記分類キーの位置情報を取得するために用いる分類参照ポインタを含むリーフノードと対をなすノードの内容を、前記挿入位置のノードの内容とし、該挿入位置のノードのノード種別にはブランチノードを示すものを書き込み、弁別ビット位置には前記差分ビット位置を書き込み、代表ノード番号には、前記ノード対挿入位置決定手段で挿入位置を求めたノード対の代表ノードの位置情報を書き込むことで該ノード対を挿入するノード対挿入手段と、
前記ノード対挿入位置決定手段が決定したノード対の挿入位置に該ノード対を挿入したときに、該挿入位置のノードより下位のリーフノードの段数が前記最大段数を越さないかチェックを行い、前記最大段数を超すリーフノードがあれば、そのリーフノードを含むノード対の直近上位のノードである親ノードをリーフノードとし、前記ノード対を構成するリーフノードそれぞれの分類参照ポインタと、該分類参照ポインタの指す前記キー分類表のデータに基づいて、前記リーフノードとした親ノードの分類参照ポインタを決定するとともに、該分類参照ポインタの指すキー分類表のデータとキーリンク表のデータを更新し、前記ノード対を削除することを、前記挿入位置のノードより下位の全てのリーフノードに対して行うことにより、ノード対を挿入しても前記最大段数を超えないことを保証する処理を行うノード対連結手段と、を含み、
前記読み出された分類キーの値が、前記検索手段が求めた分類参照ポインタの指す前記キー分類表のエントリの最小値キーの値と最大値キーの値の間の範囲のものである場合に、
前記第1の分類キー連結手段が、前記分類参照ポインタを用いて分類キーの位置情報を取得するための情報を前記キー分類表とキーリンク表に追加し、
前記読み出された分類キーの値が、前記検索手段が求めた分類参照ポインタの指す前記キー分類表のエントリの最小値キーの値と最大値キーの値の間の範囲外のものである場合に、
前記ノード対挿入位置決定手段が、前記ノード対のリンク元となるノードの位置情報を該ノード対の挿入位置として決定し、
該決定された挿入位置のノードがリーフノードであって、該リーフノードの段数が前記最大段数のとき、前記第2の分類キー連結手段が、前記分類参照ポインタを用いて分類キーの位置情報を取得するための情報を前記キー分類表とキーリンク表に追加するとともに、前記分類キーが該分類参照ポインタの指すキー分類表の最小値キーより小さければ、該最小値キーに該分類キーを書き込み、一方、前記分類キーが前記分類参照ポインタの指すキー分類表の最大値キーより大きければ、該最大値キーに該分類キーを書き込み、
前記決定された挿入位置のノードがリーフノードであって、該リーフノードの段数が前記最大段数ではないとき、前記ノード対挿入手段が前記ノード対を挿入し、
前記ノード対挿入位置決定手段が決定した挿入位置のノードがブランチノードのとき、前記ノード対連結手段が前記ノード対を挿入しても前記最大段数を超えないことを保証する処理を行い、前記ノード対挿入手段が前記ノード対を挿入する、
ことを特徴とするビット列キー分類装置。 - 請求項3記載のビット列キー分類装置において、前記分類ツリーは配列に配置され、前記代表ノードの位置を示す位置情報は、該代表ノードが配置された前記配列の配列要素の配列番号であることを特徴とするビット列キー分類装置。
- 請求項1記載のビット列キー分類装置により複数のブロックに分類されたキーをブロック毎に取り出して出力するビット列キー分配装置において、
前記分類ツリーから順次リーフノードを取り出すリーフノード取り出し手段と、
該取り出したリーフノードから、前記キーアクセス情報を読み出し、該キーアクセス情報を用いて前記キー位置検索表からキーの位置情報を取り出し、該キーの位置情報に基づいて該キーを前記キー記憶手段から読み出して出力先に出力する分類キー出力手段と、
を備えることを特徴とするビット列キー分配装置。 - 請求項5記載のビット列キー分配装置において、
前記キー位置検索表は、前記複数のブロックに対応するエントリを有するキー分類表と、前記分類対象のキーに対応するエントリを有するキーリンク表から構成され、
前記キー分類表のエントリは、前記キーリンク表のエントリを指すキー管理ポインタが格納される領域である先頭リンクと末尾リンクを含み、
前記キーリンク表のエントリは、前記対応する分類対象のキーが記憶された前記キー記憶手段の位置情報を指すキー参照ポインタを格納する領域と、前記キー管理ポインタを格納する領域であるリンクを含むものであり、
前記キーアクセス情報は、前記キー分類表のエントリを指す分類参照ポインタであることを特徴とするビット列キー分配装置。 - 請求項6記載のビット列キー分配装置において、前記分類ツリーは配列に配置され、前記代表ノードの位置を示す位置情報は、該代表ノードが配置された前記配列の配列要素の配列番号であることを特徴とするビット列キー分配装置。
- 分類対象のキーを記憶するキー記憶手段を備えたビット列分類装置が、ビット列からなる分類対象のキーを分類キーとして選択し、該分類キーの値に基づいて複数のブロックに分類するビット列キー分類方法において、
前記分類対象のキーを分類する複数のブロックの数に応じた後記分類ツリーの最大段数を取得する分類ツリー最大段数取得ステップと、
ルートノードと、隣接した記憶領域に配置されるブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるツリーであって、前記ルートノードは、ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、ツリーのノードが2つ以上のときは前記ブランチノードであり、前記ブランチノードは、前記分類キーの弁別ビット位置とリンク先のノード対の一方のノードである代表ノードの位置を示す位置情報を含み、前記リーフノードは前記キー記憶手段に記憶されている前記分類キーの位置情報を取得するために用いるキーアクセス情報を含み、
前記ツリーの任意のノードを検索開始ノードとし、前記ブランチノードにおいて、該ブランチノードに含まれる弁別ビット位置の前記分類キーのビット値に応じてリンク先のノード対の代表ノードかあるいはそれと隣接した記憶領域に配置されたノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに格納されたキーアクセス情報を、前記検索開始ノードをルートノードとする前記ツリーの任意の部分木の前記分類キーによる検索結果とするように構成された分類ツリーを生成する分類ツリー生成ステップと、
を備え、
前記分類ツリー生成ステップは、
前記キー記憶手段から1つのキーを分類キーとして選択して該分類キーの位置情報を取得し、該取得した分類キーの位置情報を取得するために用いる前記キーアクセス情報を含むリーフノードをルートノードとする前記分類ツリーを生成するとともに、前記キーアクセス情報を用いて前記分類キーの位置情報を取得するための情報を格納するキー位置検索表を生成するルートノード生成ステップと、
前記キー記憶手段からさらに順次分類対象のキーを分類キーとして選択して該分類キーの位置情報を取得し、前記分類ツリー最大段数取得ステップで取得した分類ツリーの最大段数の範囲で、該取得した分類キーの位置情報を取得するために用いる前記キーアクセス情報を含むリーフノードを前記分類ツリーに挿入するとともに、前記キー位置検索表に、前記分類ツリーに挿入されるリーフノードの含まれるキーアクセス情報を用いて前記分類キーの位置情報を取得するための情報を追加して新たなキー位置検索表を生成するか、あるいは、前記キー位置検索表の、既存のリーフノードに含まれるキーアクセス情報を用いて分類キーの位置情報を取得する情報に、前記分類キーとして選択された分類対象のキーの位置情報を取得する情報を追加することにより新たなキー位置検索表を生成する分類キー挿入ステップと、を含み、
前記分類対象のキーの全てを前記分類キーとして選択して前記分類ツリーを生成するとともに、該分類ツリーの各リーフノードに含まれるキーアクセス情報を用いて前記分類キーの位置情報を取得する情報を格納する前記キー位置検索表を生成することにより、前記分類対象のキーの全てを、前記各リーフノードに対応する複数のブロックに分類することを特徴とするビット列キー分類方法。
- 請求項8記載のビット列キー分類方法において、
前記キー位置検索表は、前記複数のブロックに対応するエントリを有するキー分類表と、前記分類対象のキーに対応するエントリを有するキーリンク表から構成され、
前記キー分類表のエントリは、前記キーリンク表のエントリを指すキー管理ポインタが格納される領域である先頭リンクと末尾リンクを含み、
前記キーリンク表のエントリは、前記対応する分類対象のキーが記憶された前記キー記憶手段の位置情報を指すキー参照ポインタを格納する領域と、前記キー管理ポインタを格納する領域であるリンクを含むものであり、
前記キーアクセス情報は、前記キー分類表のエントリを指す分類参照ポインタであることを特徴とするビット列キー分類方法。 - 請求項9記載のビット列キー分類方法において、
前記キー分類表のエントリは、さらに、前記対応するブロックに分類されているキーの最小値を格納する領域である最小値キーと前記対応するブロックに分類されているキーの最大値を格納する領域である最大値キーを含み、
前記ルートノード生成ステップは、前記キー記憶手段から1つのキーを分類キーとして選択して読出し、該分類キーの位置情報を取得するとともに、前記キー分類表の空エントリを指す分類参照ポインタを取得し、該分類参照ポインタ含むリーフノードをルートノードとする前記分類ツリーを生成し、さらに、前記キーリンク表の空エントリを指すキー管理ポインタを取得し、該キー管理ポインタを前記取得したキー分類表のエントリの前記先頭リンクと前記末尾リンクに格納し、前記最小値キーと最大値キーに前記読み出した分類キーを格納するとともに、前記取得した位置情報を前記取得したキーリンク表のエントリのキー参照ポインタに格納するものであり、
前記分類キー挿入ステップは、前記キー記憶手段からさらに順次分類対象のキーを分類キーとして選択して読み出し、該分類キーの位置情報を取得するとともに、前記ルートノードを検索開始ノードとして前記分類キーによる検索結果である分類参照ポインタを求める検索ステップと、
前記キーリンク表の空エントリを指すキー管理ポインタを取得し、該キー管理ポインタの指すキーリンク表のキー参照ポインタに前記検索ステップにおいて取得した位置情報を格納するとともに、前記分類参照ポインタの指す前記キー分類表のエントリの末尾リンクの指すキーリンク表のリンクに、前記キー管理ポインタを格納することにより、前記分類参照ポインタを用いて分類キーの位置情報を取得するための情報を前記キー分類表とキーリンク表に追加する第1の分類キー連結ステップと
前記キーリンク表の空エントリを指すキー管理ポインタを取得し、該キー管理ポインタの指すキーリンク表のキー参照ポインタに前記検索ステップにおいて取得した位置情報を格納するとともに、前記分類参照ポインタの指す前記キー分類表のエントリの末尾リンクの指すキーリンク表のリンクに、前記キー管理ポインタを格納することにより、前記分類参照ポインタを用いて分類キーの位置情報を取得するための情報を前記キー分類表とキーリンク表に追加するとともに、前記分類キーが該分類参照ポインタの指すキー分類表の最小値キーより小さければ、該最小値キーに該分類キーを書き込み、一方、前記分類キーが前記分類参照ポインタの指すキー分類表の最大値キーより大きければ、該最大値キーに該分類キーを書き込む第2の分類キー連結ステップと、
前記検索ステップにおいて求めた分類参照ポインタの指す前記キー分類表のエントリの最小値キーあるいは最大値キーの一方を検索結果キーとし、該検索結果キーと前記分類キーの間でビット列比較を行い、該ビット列比較で異なるビット値となる先頭のビット位置である差分ビット位置を求め、前記検索ステップにおいて前記分類参照ポインタを求めたときのリンク経路のブランチノードの弁別ビット位置と前記差分ビット位置との相対的位置関係により、前記分類キーの位置情報を取得するために用いる分類参照ポインタを含むリーフノードと該リーフノードと対をなすノードからなるノード対を前記分類ツリーに挿入したときに該ノード対のリンク元となるノードの位置情報を該ノード対の挿入位置として決定するノード対挿入位置決定ステップと、
前記分類キーの位置情報を取得するために用いる分類参照ポインタを含むリーフノードと対をなすノードの内容を、前記挿入位置のノードの内容とし、該挿入位置のノードのノード種別にはブランチノードを示すものを書き込み、弁別ビット位置には前記差分ビット位置を書き込み、代表ノード番号には、前記ノード対挿入位置決定ステップにおいて挿入位置を求めたノード対の代表ノードの位置情報を書き込むことで該ノード対を挿入するノード対挿入ステップと、
前記ノード対挿入位置決定ステップにおいて決定したノード対の挿入位置に該ノード対を挿入したときに、該挿入位置のノードより下位のリーフノードの段数が前記最大段数を越さないかチェックを行い、前記最大段数を超すリーフノードがあれば、そのリーフノードを含むノード対の直近上位のノードである親ノードをリーフノードとし、前記ノード対を構成するリーフノードそれぞれの分類参照ポインタと、該分類参照ポインタの指す前記キー分類表のデータに基づいて、前記リーフノードとした親ノードの分類参照ポインタを決定するとともに、該分類参照ポインタの指すキー分類表のデータとキーリンク表のデータを更新し、前記ノード対を削除することを、前記挿入位置のノードより下位の全てのリーフノードに対して行うことにより、ノード対を挿入しても前記最大段数を超えないことを保証する処理を行うノード対連結ステップと、を含み、
前記読み出された分類キーの値が、前記検索ステップにおいて求めた分類参照ポインタの指す前記キー分類表のエントリの最小値キーの値と最大値キーの値の間の範囲のものである場合に、
前記第1の分類キー連結ステップにおいて、前記分類参照ポインタを用いて分類キーの位置情報を取得するための情報を前記キー分類表とキーリンク表に追加し、
前記読み出された分類キーの値が、前記検索ステップにおいて求めた分類参照ポインタの指す前記キー分類表のエントリの最小値キーの値と最大値キーの値の間の範囲外のものである場合に、
前記ノード対挿入位置決定ステップにおいて、前記ノード対のリンク元となるノードの位置情報を該ノード対の挿入位置として決定し、
該決定された挿入位置のノードがリーフノードであって、該リーフノードの段数が前記最大段数のとき、前記第2の分類キー連結ステップにおいて、前記分類参照ポインタを用いて分類キーの位置情報を取得するための情報を前記キー分類表とキーリンク表に追加するとともに、前記分類キーが該分類参照ポインタの指すキー分類表の最小値キーより小さければ、該最小値キーに該分類キーを書き込み、一方、前記分類キーが前記分類参照ポインタの指すキー分類表の最大値キーより大きければ、該最大値キーに該分類キーを書き込み、
前記決定された挿入位置のノードがリーフノードであって、該リーフノードの段数が前記最大段数ではないとき、前記ノード対挿入ステップにおいて前記ノード対を挿入し、
前記ノード対挿入位置決定ステップにおいて決定した挿入位置のノードがブランチノードのとき、前記ノード対連結ステップにおいて前記ノード対を挿入しても前記最大段数を超えないことを保証する処理を行い、前記ノード対挿入ステップにおいて前記ノード対を挿入する、
ことを特徴とするビット列キー分類方法。 - 請求項10記載のビット列キー分類方法において、前記分類ツリーは配列に配置され、前記代表ノードの位置を示す位置情報は、該代表ノードが配置された前記配列の配列要素の配列番号であることを特徴とするビット列キー分類方法。
- ビット列キー分配装置が、請求項1記載のビット列キー分類装置により複数のブロックに分類されたキーをブロック毎に取り出して出力するビット列キー分配方法において、
前記分類ツリーから順次リーフノードを取り出すリーフノード取り出しステップと、
該取り出したリーフノードから、前記キーアクセス情報を読み出し、該キーアクセス情報を用いて前記キー位置検索表からキーの位置情報を取り出し、該キーの位置情報に基づいて該キーを前記キー記憶手段から読み出して出力先に出力する分類キー出力ステップと、
を備えることを特徴とするビット列キー分配方法。 - 請求項12記載のビット列キー分配方法において、
前記キー位置検索表は、前記複数のブロックに対応するエントリを有するキー分類表と、前記分類対象のキーに対応するエントリを有するキーリンク表から構成され、
前記キー分類表のエントリは、前記キーリンク表のエントリを指すキー管理ポインタが格納される領域である先頭リンクと末尾リンクを含み、
前記キーリンク表のエントリは、前記対応する分類対象のキーが記憶された前記キー記憶手段の位置情報を指すキー参照ポインタを格納する領域と、前記キー管理ポインタを格納する領域であるリンクを含むものであり、
前記キーアクセス情報は、前記キー分類表のエントリを指す分類参照ポインタであることを特徴とするビット列キー分配方法。 - 請求項13記載のビット列キー分配方法において、前記分類ツリーは配列に配置され、前記代表ノードの位置を示す位置情報は、該代表ノードが配置された前記配列の配列要素の配列番号であることを特徴とするビット列キー分配方法。
- 請求項8〜請求項11のいずれか1項記載のビット列キー分類方法をコンピュータに実行させることを特徴とするプログラム。
- 請求項8〜請求項11のいずれか1項記載のビット列キー分類方法をコンピュータに実行させるプログラムを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
- 請求項12〜請求項14のいずれか1項記載のビット列キー分配方法をコンピュータに実行させることを特徴とするプログラム。
- 請求項12〜請求項14のいずれか1項記載のビット列キー分配方法をコンピュータに実行させるプログラムを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
- キー記憶手段に記憶され、複数のブロックに分類されたビット列キーを出力先に出力するビット列キー分配装置に用いられるデータ構造において、
ルートノードと、隣接した記憶領域に配置されるブランチノードとリーフノードまたはブランチノード同士またはリーフノード同士のノード対、からなるツリーであって、前記ルートノードは、ツリーの始点を表すノードであって、該ツリーのノードが1つのときは前記リーフノード、ツリーのノードが2つ以上のときは前記ブランチノードであり、前記ブランチノードは、前記分類キーの弁別ビット位置とリンク先のノード対の一方のノードである代表ノードの位置を示す位置情報を含み、前記リーフノードは前記キー記憶手段に記憶されている前記分類キーの位置情報を取得するために用いるキーアクセス情報を含み、
前記ツリーの任意のノードを検索開始ノードとし、前記ブランチノードにおいて、該ブランチノードに含まれる弁別ビット位置の前記分類キーのビット値に応じてリンク先のノード対の代表ノードかあるいはそれと隣接した記憶領域に配置されたノードにリンクすることを順次前記リーフノードに至るまで繰り返すことにより、前記リーフノードに格納されたキーアクセス情報を、前記検索開始ノードをルートノードとする前記ツリーの任意の部分木の前記分類キーによる検索結果とするように構成された分類ツリーと、
前記キーアクセス情報を用いて前記キーの位置情報を取得するための情報を格納するキー位置検索表と、
を備え、
前記ビット列キー分配装置が、前記分類ツリーと前記キー位置検索表により、請求項12記載のビット列キー分配方法を実行し、複数のブロックに分類されたビット列キーの出力先への出力を可能とすることを特徴とするデータ構造。 - 請求項19記載のデータ構造において、
前記キー位置検索表は、前記複数のブロックに対応するエントリを有するキー分類表と、前記分類対象のキーに対応するエントリを有するキーリンク表から構成され、前記キー分類表のエントリは、前記キーリンク表のエントリを指すキー管理ポインタが格納される領域である先頭リンクと末尾リンクを含み、前記キーリンク表のエントリは、前記対応する分類対象のキーが記憶された前記キー記憶手段の位置情報を指すキー参照ポインタを格納する領域と、前記キー管理ポインタを格納する領域であるリンクを含み、
前記分類ツリーのリーフノードに含まれる前記キーアクセス情報は、前記キー分類表のエントリを指す分類参照ポインタであり、
前記ビット列キー分配装置が、前記分類ツリー、前記キー分類表及びキーリンク表により、請求項13記載のビット列キー分配方法を実行し、複数のブロックに分類されたビット列キーの出力先への出力を可能とすることを特徴とするデータ構造。 - 請求項20記載のデータ構造において、
前記分類ツリーは配列に配置され、前記代表ノードの位置を示す位置情報は、該代表ノードが配置された前記配列の配列要素の配列番号であり、
前記ビット列キー分配装置が、前記分類ツリー、前記キー分類表及びキーリンク表により、請求項14記載のビット列キー分配方法を実行し、複数のブロックに分類されたビット列キーの出力先への出力を可能とすることを特徴とするデータ構造。 - 請求項19〜請求項21のいずれか1項記載のデータ構造を記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009246868A JP5165662B2 (ja) | 2009-10-27 | 2009-10-27 | ビット列キー分類・分配装置、分類・分配方法及びプログラム |
PCT/JP2010/006305 WO2011052181A1 (ja) | 2009-10-27 | 2010-10-25 | ビット列キー分類・分配装置、分類・分配方法及びプログラム |
US13/456,955 US20120209855A1 (en) | 2009-10-27 | 2012-04-26 | Bit-string key classification/distribution apparatus, classification/distribution method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009246868A JP5165662B2 (ja) | 2009-10-27 | 2009-10-27 | ビット列キー分類・分配装置、分類・分配方法及びプログラム |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2011095849A JP2011095849A (ja) | 2011-05-12 |
JP2011095849A5 JP2011095849A5 (ja) | 2012-12-13 |
JP5165662B2 true JP5165662B2 (ja) | 2013-03-21 |
Family
ID=43921616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009246868A Expired - Fee Related JP5165662B2 (ja) | 2009-10-27 | 2009-10-27 | ビット列キー分類・分配装置、分類・分配方法及びプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20120209855A1 (ja) |
JP (1) | JP5165662B2 (ja) |
WO (1) | WO2011052181A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104021261A (zh) * | 2013-02-28 | 2014-09-03 | 国际商业机器公司 | 医疗领域数据处理方法和装置 |
JP6016215B2 (ja) | 2013-12-20 | 2016-10-26 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | トライ木構造を有するレコード群を高い効率でマージソートする方法、装置及びコンピュータプログラム |
JP6253514B2 (ja) * | 2014-05-27 | 2017-12-27 | ルネサスエレクトロニクス株式会社 | プロセッサ |
US10114559B2 (en) | 2016-08-12 | 2018-10-30 | International Business Machines Corporation | Generating node access information for a transaction accessing nodes of a data set index |
US9990281B1 (en) * | 2016-11-29 | 2018-06-05 | Sap Se | Multi-level memory mapping |
CN107451486B (zh) * | 2017-06-30 | 2021-05-18 | 华为技术有限公司 | 一种文件***的权限设置方法及装置 |
WO2019160133A1 (ja) * | 2018-02-19 | 2019-08-22 | 日本電信電話株式会社 | 情報管理装置、情報管理方法及び情報管理プログラム |
CN110233946B (zh) * | 2019-06-17 | 2021-09-21 | 腾讯科技(深圳)有限公司 | 执行外呼业务方法、电子设备及计算机可读存储介质 |
JP7237782B2 (ja) * | 2019-09-13 | 2023-03-13 | キオクシア株式会社 | ストレージシステム及びその制御方法 |
CN113903410B (zh) * | 2021-12-08 | 2022-03-11 | 成都健数科技有限公司 | 一种化合物检索方法及*** |
CN117997537B (zh) * | 2024-04-03 | 2024-06-11 | 四川杰通瑞联科技有限公司 | 具有通用性的数据加密和解密的方法及存储装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005208709A (ja) * | 2004-01-20 | 2005-08-04 | Fuji Xerox Co Ltd | データ分類処理装置、およびデータ分類処理方法、並びにコンピュータ・プログラム |
JP4782490B2 (ja) * | 2005-06-29 | 2011-09-28 | 富士通株式会社 | データ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法 |
JP4271214B2 (ja) * | 2006-07-07 | 2009-06-03 | 株式会社エスグランツ | ビット列検索装置、検索方法及びプログラム |
JP4439013B2 (ja) * | 2007-04-25 | 2010-03-24 | 株式会社エスグランツ | ビット列検索方法及び検索プログラム |
-
2009
- 2009-10-27 JP JP2009246868A patent/JP5165662B2/ja not_active Expired - Fee Related
-
2010
- 2010-10-25 WO PCT/JP2010/006305 patent/WO2011052181A1/ja active Application Filing
-
2012
- 2012-04-26 US US13/456,955 patent/US20120209855A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JP2011095849A (ja) | 2011-05-12 |
WO2011052181A1 (ja) | 2011-05-05 |
US20120209855A1 (en) | 2012-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5165662B2 (ja) | ビット列キー分類・分配装置、分類・分配方法及びプログラム | |
JP4379894B2 (ja) | カップルドノードツリーの分割/結合方法及びプログラム | |
JP4402120B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4527753B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
CN101535993B (zh) | 比特序列检索装置及检索方法 | |
JP5473893B2 (ja) | コード列検索装置、検索方法及びプログラム | |
JP4502223B2 (ja) | ビット列のマージソート装置、方法及びプログラム | |
JP4514768B2 (ja) | カップルドノードツリーの退避/復元装置、退避/復元方法及びプログラム | |
JP2008015872A (ja) | ビット列検索装置、検索方法及びプログラム | |
JP5241738B2 (ja) | 表からツリー構造データを構築する方法及び装置 | |
JP2011095849A5 (ja) | ||
JP4439013B2 (ja) | ビット列検索方法及び検索プログラム | |
JP4527807B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
US8166043B2 (en) | Bit strings search apparatus, search method, and program | |
JP4417431B2 (ja) | カップルドノードツリーの分割/結合方法及びプログラム | |
JP3427679B2 (ja) | 単語検索装置及び単語検索プログラムを記録したコンピュータ読取り可能な記録媒体 | |
JP2011018296A (ja) | カップルドノードツリーのインデックスキー挿入/削除方法 | |
JP5434500B2 (ja) | 木構造処理装置及びプログラム | |
WO2007066414A1 (ja) | プログラム、データ抽出装置、及び方法 | |
JP5220057B2 (ja) | ビット列検索装置、検索方法及びプログラム | |
JP4813575B2 (ja) | ビット列検索装置 | |
JP2017004128A (ja) | 情報処理装置、システム、及びプログラム | |
JPH01144120A (ja) | 階層化ネットワークルート探索装置 | |
JP2009199577A (ja) | ビット列検索装置、検索方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20121010 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121023 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20121023 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20121023 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20121120 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121127 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121128 |
|
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: 20121218 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121219 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151228 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |