JPH048814B2 - - Google Patents

Info

Publication number
JPH048814B2
JPH048814B2 JP10768084A JP10768084A JPH048814B2 JP H048814 B2 JPH048814 B2 JP H048814B2 JP 10768084 A JP10768084 A JP 10768084A JP 10768084 A JP10768084 A JP 10768084A JP H048814 B2 JPH048814 B2 JP H048814B2
Authority
JP
Japan
Prior art keywords
range
records
keys
key
classification
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
Application number
JP10768084A
Other languages
English (en)
Other versions
JPS6134626A (ja
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 filed Critical
Priority to JP10768084A priority Critical patent/JPS6134626A/ja
Publication of JPS6134626A publication Critical patent/JPS6134626A/ja
Publication of JPH048814B2 publication Critical patent/JPH048814B2/ja
Granted legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明は、極めて長大なフアイルを外部で分類
するための、コンピユータで実施可能な分布法に
関するものである。
[従来技術] 分類(ソート)とは、項目をある「順序」に配
列する方法である。対象となるものは、各々が関
連したキー値を有している記録である。分類の目
的は、キー値を非減少順に入力したレコードの順
列を決定することである。分類作業の特徴は、再
配列が行なわれる態様、ならびにこれが全体とし
て、分類を行なうCPUにとつて局所である内部
メモリ内で、すなわちデータがCPUのランダ
ム・アクセス内部(メイワ)メモリに整然と適合
する個所で行なわれるのかどうかによつて決ま
る。
「分布(デイトリビユーシヨン)分類」とは、
レコードを隣接した範囲に分け、ひとつの範囲の
全てのレコードが、次の範囲のレコードのキーよ
りも小さい値のキーを持つているようにすること
である。一方、「組合せ(マージ)分類」とは、
2つ以上の大きさ順配列のリストを組み合わせ、
組み合わされたリストの配列も大きさ順になるよ
うにすることである。2ウエイ・マージ・ソート
は典型例であつて、この場合、対になつた項目が
比較され、各対が順序付けられ、ついでこれらの
対が組み合わされ、結果として得られる4重数が
順序付けられ、4重数がソート済みの8重数に組
み合わされ、これが組合せができなくなるまで続
けられる。
「外部分類」とは、1次すなわち内部メモリの
容量を越えたデータのフアイルに適用される分類
技法であつて、分類処理中にDASD(直接アクセ
ス記憶装置)、テープ及びドラムのような2次記
憶装置に依存する。外部分類の一型式である組合
せ分類において、フアイルの各部は、内部メモリ
に読み込まれ、内部で順序付けられ、ついで外部
装置すなわち2次記憶装置に再度書き込まれる。
「交換−選択」という技法では、順序付けられて
いない「入力フアイル」から、1つまたはそれ以
上の順序付けられたリスト(文字列)を含んでい
る中間フアイルが作成される。交換−選択では、
さまざまな長さの順序付けられた文字列が作成さ
れるが、その平均長さは内部メモリの容量の2倍
となる。米国特許第2983904号を参照されたい。
「最小組合せハフマン・ツリー」を形成すること
により、文字列の順序付けられた文字列への最適
な組合せを行なうことができる。最小組合せツリ
ーは、文字列の長さを表すターミナル節点(ノー
ド)によつて構成されており、かつ組合せツリー
の値ができるだけ小さくなるように、配列され
る。
デイスク装置に格納されているデータに使用さ
れるほとんどの外部分類法は、組合せをベースと
するものである。上記のごとく、これらには交換
−選択を用いて初期格納文字列を幾つか生成し、
ついで文字列が1つだけになるまで、組合せを繰
り返す必要がある。米国特許第4210961号
“Sorting System”には、典型的な組合せベース
の外部分類法が記載されている。
一方、連想記憶装置が、分類及び探索の両適用
業務に使用されている。Chang et al、
“Associative Search Bubble Devices for
Content Addressable Memorise”、18、IBM
Technical Disclosure Bulletin、pp.598−602、
July 1975には、言葉及びビツトごとに内容アド
レス可能なメモリとして磁気バブル・メモリ装置
を挙げている。また、米国特許第4168535号
“Non‐Volatile Bubble Domain Memory
System”には、複数の小/大ループ・ビツト・
ストレージ・アレイが記載されている。同様に、
Dorty et al、“Magnetic Bubble Memory
Architectures for Supporting Associative
Searching of Relational Databases”29、
IEEE Transactions on Compiters,pp.957−
970,November 1980は、磁気バルブ・メモリの
パラレル・アーキテクチヤを実質的に拡張し、リ
レーシヨナル・データベースにおける連想探索を
サポートするものである。C.S.Lin、“Sorting
With Associative Secondary Storage
Devices” Proceedings of AFIPS、Nationl
Computer Conference 1977、pp.691−695には、
キーのヒストグラムを用いた分布分類と、ヘツ
ド・パー・トラツク・デイスクにおける連想探索
を実行するための、コンピユータで実施可能な方
法が記載されている。この方法を操作できるの
は、キー値が平均して分布している場合だけであ
る。
[発明が解決しようとする問題点] 上記のような従来の外部分類法は組合せ(マー
ジ)を基本とするものであつて、交換−選択を用
い初期格納文字列を幾つか生成した後、文字列が
唯1つになるまで組合せ(マージ)を繰返す必要
があつた。このため分類に長時間を要し、又長大
なフアイルには適用困難であつた。
[問題点を解決するための手段] 本発明の目的は、2次記憶装置によつて連想ア
クセスされる極めて長大なフアイルに適用でき、
分類機能の稼動時間を大幅に削減する、外部分類
法を考案するところにある。
上記の目的は、分布分類を実行することによつ
て実現される。再配列されるデータは、連想2次
記憶装置でアクセスできる、キーを付けて格納さ
れたレコードを包含している。本発明の方法は、
所定数のキーのランダム・サンプリングとサンプ
リングされたキーの内部分類を利用するものであ
り、キー値の範囲内のキーのヒストグラムを作成
し、密度の低い隣接した範囲を組み合わせること
によつて、レコードの同一サイズで各々がCPU
のメイン・メモリを適合している区画を単一のパ
スに形成し、キーがある範囲内にある全てのレコ
ードを連想検索し、検索されたレコードを内部で
分類するものである。
本方法は、キーの順序や、キー値の分布に関係
なく、極めて高速に適用できるものである。サン
プリングされたキーの内部分類の後、格納された
順序でキーを指示(ポイント)する順次ポイン
タ・リストが構成される。これに関連して、キー
のヒストグラムとキーの範囲を作成してレコード
の区画を形成することは、各キーに対してポイン
タ・リストで内部メモリの2進探索を行ない、キ
ーに関連した範囲を確認することが含まれてい
る。本分布法を有利に最適化できるのは、連想記
憶装置に関してであつて、従来の単なるDASDに
関してではない。
[実施例] 本発明の方法は、少なくとも1つのCPUを包
含しておりその各々が内部メモリ、入出力チヤネ
ル、制御装置、直接アクセス記憶装置、及びこれ
らに接続されたその他の入出力装置を持つコンピ
ユータ・システムで実行可能である。かかるシス
テムは、“Data Processing System”なる名称
の米国特許第3400371号に記載されている。該明
細書記載のシステムは、資源として、コンピユー
タ・システムまたはこのシステムで稼働するオペ
レーテイング・システムのいずれかの、処理の実
行に必要とされる機構の全てを包含している。典
型的な資源は、内部メモリ、入出力装置、CPU、
データ・セツト、及び制御または処理プログラム
を含んでいる。
機能のセツトとしての「分類」を、任意の実行
適用業務処理、またはデータベース管理システム
によつて呼び出すことができる。実行機能が、フ
アイル名で分類を呼び出すのが、典型的なもので
ある。オペレーテイング・システムがフアイルの
位置を確認し、これが内部メモリに適合しない場
合には、「外部分類」機能が呼び出される。
本発明の方法には、連想2次記憶装置が必要で
ある。この装置は、ロジツク・パー・トラツク機
能を有する大形DASD、または磁気バブル・メモ
リ(MBM)のいずれかによつて達成される。本
方法を、3つのフエーズ、すなわち(1)サンプル・
フエーズ、(2)範囲(バケツト)形成フエーズ、及
び(3)内部分類フエーズを参照して説明する。サン
プル・フエーズにおいては、所定数のキー値がラ
ンダムにサンプリングされ、サンプリングされた
キーが内部で分類される。範囲形成フエーズにお
いては、フアイルの単一パスで、分類されたサン
プルによる定義に従つて、各範囲に幾つのレコー
ドが属しているかのカウントが取られる。このヒ
ストグラムを使用して、隣接する範囲が組み合わ
され、各範囲がほぼ内部メモリに適合するレコー
ド数を含んでいるような、大きな範囲が形成され
る。最後に、増加キー値順の各範囲に対する内部
分類フエーズにおいては、その範囲内にキー値が
ある全てのレコードを内部メモリで検索するため
に、フアイルの連想探索が行なわれる。次いで、
レコードが内部分類され、出力フアイルに付加さ
れる。
時間/空間効率を改善する修正を加えた方法の
分析、連想2次記憶装置としての磁気バブル・メ
モリの使用、及び内部分類フエーズの有効性の改
善についても、詳細に説明する。
本明細書においては、まず各レコードがRバイ
トの固定長を有しており、一方、キー・フイール
ドがK<Rバイトからなるものと、想定する。
CPUはMバイトの内部メモリ・サイズを有して
おり、分類されるフアイルはNレコードからなる
ものとする。さらに、内部で分類できるレコード
数Fは、ほぼM/Rであるものとする。最後に、
サンプリングされたキーの数Sは、ほぼM/Kで
あるとする。
サンプル・フエーズ S個(ただし、SはほぼM/Kである)のキー
のサンプルは、ランダム・サンプリング法を用い
て取られる。必要な内部メモリの量Mの決定も行
なうSの値の選択は、本方法の中核をなすもので
あり、これについて以下で説明する。内部メモリ
に格納されるこのサンプルは、AVLまたはRBツ
リーのような平衡ツリーを使用して、格納され
る。D.E.Knuth、“The Art of Computer
Programming”、Volume3:“Sorting and
Searching”、Addison‐Wesley、1973を参照さ
れたい。平衡ツリーによる分類によつて、分類時
間がサンプリングと部分的に重複してもよいこと
になる。完全を期すため、「ツリー」はサイクル
を持たない連結グラフであることが望ましい。さ
らに、「有向ツリー」はサイクル及び代替経路を
何ら含まない有向グラフである。有向ツリーは、
子孫のセツトが他の全ての節点(ノード)からな
つている「一意の節点(ルート)」を有している。
本発明において、平衡ツリーの各節点には、キー
のための記憶スペース、ならびに分類のための2
つのポインタが必要である。ちなみに、租先子孫
という述語が、節点の関係を述べるのに使用され
ている。それゆえ、左側の子孫のキー値が、親の
キー値以下である、ということができる。同様に
して、右側の子孫のキー値は、親のキー値以上と
なる。キー及びポインタの平衡ツリー構成の例
を、第1図に示す。サンプル・フエーズの最後の
部分では、昇順のツリーのキーに向けられるポイ
ンタの順次リストを作成するために、平衡ツリー
の順を追つた横断が必要である。第1図の平衡ツ
リーに対応したポインタのリストを第2図に示
す。
上述の通り、このステツプには、S個のキーの
ランダム・サンプリングとサンプリングされたキ
ーの内部分類が含まれている。磁気バブル・メモ
リの形の連想記憶装置においては、各レコードは
MBMのランダム・アレイに格納される。第3図
にアレイを示すが、これについて以下で説明す
る。サンプリングは、レコードがMBMに書き込
まれている間に行なわれる。入力フアイルのレコ
ードがMBMに既に常駐している場合には、これ
らはランダム・アレイに格納されているものとみ
なされる。常駐していない場合には、これらをア
レイ内でランダムに暗号化しなければならない。
かかる装置におけるサンプリングは、次のよう
にして行なわれる。
まず、各アレイからサンプルとして選択される
レコード数が、多項分布に基づいてランダムに選
ばれる。独立多項ランダム変数の生成方法は、
D.E.Knuth、“The Art of Computer
Progromming”、Volume 2:“Seminumerical
Algorisms”、Additioson‐Wesley、2nd
edition、1980に記載されている。次いで、順序
ランダム・サンプリング法を使用して、各アレイ
から所望数のキーを選択する。これに関しては、
J.S.Vitter、“Faster Method for Random
Sampling”、Technical Report CS−82−21、
Brown University、August 1982を参照された
い。サンプリングされたキー値は、ついで内部メ
モリに読み込まれ、上述のように、平衡ツリーに
挿入される。
範囲(バケツト)形成フエーズ このフエーズは、計算サブフエーズと結合サブ
フエーズとに分けられる。サンプル・フエーズで
分類されたサンプリングされたキー値は、フアイ
ルをS+1の範囲の区画に分けるのに役立つ、こ
の場合、分類されたキー値は、X1,X2……,XS
と表される。また、X0は−∞にセツトされ、
XS+1は+∞にセツトされる。1からS+1まで
の閉区間の各値iに対し、i番目の範囲は、キー
値が半閉区間Xi-1ないしXiにあるレコードのセツ
トになるうるように定義される。
各範囲は標準偏差が約N/Sの平均N/Sのレ
コードを含んでいる。Sの値は、内部メモリに入
れることのできるレコード数FよりもN/Sがは
るかに小さくなるように選択される。これについ
ては、以下で検討する。
キーの格納順序を、サンプル・フエーズの最期
の段階で作成された順次ポインタ・リストによつ
て表わすことができる。
重要なのは、計数サブフエーズが各キーを連想
記憶装置で処理すること、及びフイボナツチ探索
または等2進探索のいずれかを、ポインタ・リス
トに行なつて、小さい範囲のどれがキーを含んで
いるかを確認するとからなつていることである。
この範囲のカウントは、1ずつ増加させられる。
平衡ツリーのポインタ・フイールドがもはや必要
ないのであるから、範囲の上限を画定するキーの
ポインタ・フイールドのツリーに範囲のカウント
を格納できる。別の記憶位置を必蓉とする最高順
位の範囲のカウントの場合を除き、これがあては
まる。
計数サブシステムのステツプの順序を、第1表
のパスカル疑似コードを参照して説明する。
第表 範囲形成フエーズの係数サブフエーズ {Initialize the Counts} for i:=1 to S+1 do P[i].
count:=0; {Process each key and increment its
range count} for each in the file do begin Perform a binary search on the pointer
list P in order to find the value i such
that P[i−1].key<“key value”P[i]

key; if P[i].count<V then P[i].count:
=P[i].count+1 end; この場合、サンプル・フエーズの最期の段階で
作成されたポインタ・リストはPで表される。P
の各要素は、キー・フイールドとカウント・フイ
ールドを有するレコードのアドレスである。1と
S+1との間の各iに対して、P[i]キーは格
納された順序のi番目のサンプリングされたキー
である。値がP[S+1]のキーは、+∞であると
みなされ、キーが取り得る最大よりも大きな任意
の数である。各iに対する、P[i]に格納でき
る最同値Vは、Fよりも大きく、これは内部分類
フエーズ中に内部メモリに適合できるレコード数
である。
係数サブフエーズの目的は、1とS+1との間
の各iに対するP[i]カウントの値を、レコー
ド数が多くてもVである場合には、キー値が区間
{P[i−1]キー<キー値≦P[i]キー}にあ
るレコード数に、それ以外の場合には、値Vにセ
ツトすることである。
結合サブフエーズにおいて、隣接する範囲がま
とめられ、より大きな範囲が形成される。各グル
ーピングは、できるだけ多くの小さい範囲を結合
し、結果として得られる結合された範囲が多くて
もF個のレコードを含むようにする。結果として
得られる各範囲は、ほとんどの場合、ほぼFに等
しくなる。ちなみに、F個を越えるレコードを含
んでいるレコードを、「オーバーフロー範囲」と
呼ぶ。その後、オーバーフロー範の平均値と標準
偏差が1未満であることが、確立される。また、
範囲に対する区画を画定するキーが、内部メモリ
にスペースがなければ、公知のデイスクまたはテ
ープに順次出力される。オーバーフロー範囲の場
合、カウントまたは特別なマーカが、範囲の上限
を画定するとキーと共に出力される。
結合サブフエーズを実行する方法を、第表の
パスカル言語疑似コード順序を参照して説明す
る。
第表 範囲形成フエーズの結合サブフエーズ {initialize} Output Key value−∞; i:=1; P[S+2].count:=F+1; while iS+1 do begin{Form Next combined range} sum:P[i].count; if sum>F then{Process overflow
range} Output a special marker、sum,and
P[i].Key else begin{Process non‐overflow
range} while sum+P[i+1].countF do begin sum:sum+P[i+1].count; i:=i+1 end; Output P[i].Key end; i:i+1 end; このパスカル類似の順序において、1とSとの
間の各iに対する値P[i]は、格納された順序
のサンプリングされたキー値である。P[0]キ
ー:=−∞及びP[S+1]キー=+∞とみなさ
れるが、これらはキーが取り得るあらゆる値より
も小さく、また大きい数である。各iに対するP
[i]カウントに格納できる最大数を、Vで表す。
1とS+1との間のiに対する値P[i]のカウ
ントは、Vの最大数、及びキー値が{P[i−1]
キー<キー値≦P[i]キー}にあるレコード数
である。Vの値はFよりも大きく、これは内部分
類フエーズ中に内部メモリに適合できるレコード
数である。プログラミングを簡単にするために、
特別なカウント・フイールドP[S+2]カウン
トがあるものとする。
結合フエーズの出力は、結合された範囲の終点
を画定するキー値のリストである。
レコードが固定長ではなく、可変長である場合
には、本方法を次のようにして、変更することが
できる。係数サブフエーズにおいて、各範囲に対
するカウントは、この範囲内のレコード数ではな
く、この範囲内のレコードが占める全スペースを
カウントする。結合サブフエーズにおいては、で
きるだけ多くの隣接範囲が結合され、結果として
得られる範囲の各々のレコードが内部メモリに適
合できるようにする。
内部分類フエーズ このフエーズにおいては、範囲を画定するキー
が順次処理される。各範囲に対し、その内部のレ
コードが連想探索によつて検索され、分類され、
次いで出力フアイルに付加される。範囲がオーバ
ーフロー範囲になければ、そのレコードの全ては
内部メモリに適合するので、内部で分類すること
ができる。この場合、範囲内のレコードの分類
に、交換選択を使用するが、これは各範囲を再初
期化する必要がないからである。範囲内のレコー
ドが2次記憶装置から検索されれば、次の範囲の
レコードの検索が始まる。これは、最初の範囲の
全てのキー値が2番目の範囲の全てのキー値以下
であること、ならびに範囲内のレコードが交換選
択ツリーに適合できることに依存するものであ
る。範囲がオーバーフロー範囲であるというまれ
な場合には、本発明方法を再帰的に適用するか、
あるいは公知の分類組合せを用いるかのいずれか
によつて、範囲の分類を行なうことができる。上
記のように、かかるオーバーフロー範囲の数は、
ほとんど常に1未満である。
サンプル・サイズS及び内部メモリ・サイズMの
選択 サンプリングされたキーの数Sは、平均数及び
オーバーフロー範囲の数の標準偏差が1未満でな
ければならないという目的に従つて、必要な内部
メモリの量を最小限のものにするように、選択さ
れる。M及びSの値は、次の式によつて関連付け
られる。
(1) S=(M−2B)/(K+3P) M及びSの値を、2つの変数M及びr(ただし、
r=E(S+1)(N+1)である)の2つの式を
解くことによつて、計算できる。上記の目的を達
成できることを保証する最初の式は、次のとおり
である。
(2) r−1nr=1n((N+1)(R+P)/M−2(
B+B′)) ただし、B及びB′は入出力バツフアのサイズ
であり、Pはポインタ・フイールド当りのバイト
数である。2番目の式は、次のとおりである。
(3)(M−2B+K+3P)(M−2(B+B′))=r(
N+1)(R+P)(K+3P) この式はサンプリングされたキーSを内部に格
納できることを保証するものである。これら2つ
の式を解いて得られるMの概算値は、次のとおり
である。
(4)M[1n(NR/K)+1n(1n(NR/K)/2)NRK
/2]1/2+2B′ 上記で計算したMの値よりも多く内部メモリが
利用できる、たとえばkMバイトの内部メモリを
利用できるのであれば、分類の総時間は、大体係
数kだけ減少する。
磁気バブル・メモリに実施した連想2次記憶装置 連想2次記憶装置は、次の形式(プログラム言
語)の連想探索または範囲照会と呼ばれる照会を
処理する。
Given values a and b,retrieve all
records such that a “key value”≦b この照会は、本方法の内部分類フエーズ中に、
各範囲に対し1回行なわれる。これは実行時間の
大幅な削減をもたらす。データベース適用業務に
おける連想2次記憶装置への磁気バブル・メモリ
の使用法の詳細は、前出のChan、Doty及びLin
の参照文献に記載されている。
第3図は、数レベルの階層を形成する複数個の
カートを包含する磁気バブル・メモリ(MBM)
2次記憶装置を示すものである。最高レベルにお
いて、メモリは数百メガバイトの容量を有する幾
つかのボツクスからなつている。ボツクスをボー
ドに区分できるが、このボードは数個のチツプを
含む数個のモジユールを含んでいる。キーとなる
記憶装置をアレイと呼ぶ。第3図は幾つかのアレ
ス15,17,19を示す。各アレイは複数の磁
気バブル・ループ21,23,25,27を有す
る。各アレイは大きな記憶容量を持つことが望ま
れる。アレイにはRAMバツフア3が組合わされ
ている。バツフア3は幾つかの磁気バブル・アレ
イに対して読み又は書きバツフアとして働らく。
約2000ビツトのRAMが各1メガビツトのアレイ
に使用される。アレイ15または17または19
から、RAMバツフア3へ各レコードを転送する
ことによつて、連想探索が行なわれる。RAM3
に結合しているマイクロプロセツサ33は、パス
2からバス1へ、キー値が範囲紹介を満たす全て
のレコードを選択し、転送する。アレイ15を、
たとえば、RAM3に結合しているパス30及び
32は、1メガバイト/秒の速度で駆動される。
以下で説明するように、アレイ15がデータを、
この速度でループからRSRへ放出できると仮定
すると、アレイの全ての内容を、1秒で探索でき
ることになる。全てのアレイを平行して探索でき
るので、連想探索当りの全時間が1秒となり、有
利である。
典型的な1メガビツトのアレイ15は、最大
1000個の同期した小ループ21,23,25,2
7からなつている。各ループは、変動磁場に応じ
てループを回転する1000ビツトを表すようにコー
デイングされた磁気バブルを含んでいる。この場
合、レコードは小ループに格納される。すなわ
ち、レコードのビツトは、ループの同一相対位置
に、それぞれ1ビツト/ループで格納さる。1000
ビツトを越えるビツトを含んでいるレコードは、
これらを幾つかのアレイに拡張するか、あるいは
隣接する1000ビツト・セクシヨンに区分するかし
て、格納される。いずれの場合においても、セク
シヨン中の各ビツトは、同一相対位置の別個の小
ループに格納される。
必要に応じ、レコードが幾つかのアレイに拡張
されると仮定すると、レコードの全てのビツト
は、同期して、ループ内の同一点に同時に到達す
ることになる。小ループの各読取りアクセスは、
非破壊性のものとみなされる。読取りは、各ビツ
トを複写し、複写ビツトを1000ループ読取りバツ
フアにロードすることによつて、行なわれる。読
取りシフト・レジスタRSR29が空で、利用で
きる場合、ビツトをRSRにロードできる。次い
て、ビツトは順次、読取りヘツド9によつてシフ
トされる。書込み操作は、書込みシフト・レジス
タWSR31を使用して、同様な方法で行なわれ
る。
小ループの循環に必要な時間は、1000ビツトを
読取りヘツドによつてRSRへ移動するのにかか
る時間に等しい。これは約0.001秒である。シフ
トがRSRで完了すると、1000ループ読取りバツ
フアには、次のレコードをロードする時間ができ
る。それゆえ、フアイル全体を、1000×0.001=
1秒でRSRにロードし、読み取ることができる。
これは1メガビツトをアレイ15からRAM3に
転送するのにかかる時間に対応している。連想探
索当りの時間は、従つて、1秒となる。
15及び17のような2つのアレイが、単一の
読取りパス30を共有している場合には、連想探
索時間は、1秒ではなく、2秒となる。1〜2秒
程度の連想探索が、分頼性能には極めて適切なも
のであることがわかつた。以下で説明するマーキ
ング技術を使用して、有効連想探索時間を数分の
一秒まで短縮することができる。
性能を最適化する修正 実行時間、及び本発明の外部分布分類法を支援
するのに必要な内部メモリの大きさの両面での経
済性を達成できる。本方法は大まかに3つのステ
ツプを行なうものである。これらのステツプと
は、(1)S個のキーのランダム・サンプリング及び
S個のサンプリングされたキーの内部分類、(2)
各々が内部CPUメモリに適合でき、キー値の範
囲を構成できるレコードの等サイズの区画を単一
パスに形成すること、(3)キーが範囲内にあるレコ
ードの全ての連想検索を行ない、これらのレコー
ドを内部で分類することである。
キーの一様分布を想定する ランダム・サンプリング及びサンプリングされ
たキーの内部分類ステツプにおいて、キーが一様
に分布している場合に生じる高速分割によつて、
速度を上げることができる。これは、内部メモリ
の所定部分に、次の処理を行なうことによつて達
成される。まず、キーが取ることのできる256k
の不範囲を、ほぼcNR/Mの等しいサイズの区
間に分割する。ただし、cはc>1の定数であ
る。各キーが処理されると、該当する区間のカウ
ンタが増加させられる。各キーの最初の数バイト
が一様に近い区画をもたらすのであれば、範囲形
成フエーズのフアイルへのパスを省略し、一様な
区間のカウントで置き換えることができる。
内部分類を援助するマーキング技術 キー値が範囲内にある全てのレコードを連想検
索し、これらのレコードを内部で分類するステツ
プにおいて、上記した探索には、1〜2秒が必要
であつた。しかしながら、磁気バブル・メモリ連
想記憶をCPUに結合している経路は、Mバイト
(内部メモリへの1回のロード)の転送にかかる
時間を上記のほんの数分の1に減らすことができ
る。フアイル内のNR/Mのレコードごとにほぼ
1つのレコードが、所定の範囲に属することがわ
かつている。従つて、所定の範囲内のレコードの
全体的な検索のほとんどには、範囲照会を満たさ
ないレコードの処理が含まれる。レコードのほと
んどを検索することを回避することにより、検索
の速度を上げることができる。MBMに格納され
ており、かつ「マーク・ビツト」として使用され
るレコード当り1個の特別ビツトを使用すること
が、有利である。レコードには、マークを付けて
も、付けなくでもよい。連想記憶アーキテクチヤ
を変更し、マークの付けられたレコードだけが大
ループから読取りシフト・レジスタ29に転送さ
れるようにしなければならない。キー値の所定範
囲内のキーを得るための照会のプログラム言語
は、次の形を取る。
Given values a and b retrieve all
marked records in the semi‐closed range a
“key value”≦b。
説明のため、フアイルをK個のほぼ等しいサイ
ズの領域に分割するK−1個の順序付けられたキ
ー値があるものと想定する。K−1個の順序付け
られたキー値は、範囲形成フエーズの結合サブフ
エーズ中に得られる。内部分類フエーズを、K個
の連続したサブフエーズに分けることができる。
この場合、i番目のサブフエーズは、K−1個の
隣接キー値によつて形成されたi番目の領域内に
ある書く各範囲の検索及び分類を含んでいる。i
番目のサブフエースの始まりで、i番目の領域の
全てのレコードにマークが付けられ、その他の全
てのレコードにマークが付れられていなければ、
1回でほぼN/K個のレコードにマークが付けら
れ、従つて各範囲検索で処理されるレコードの数
は、係数Kだけ減少する事になる。K回の処理ス
テツプの各々では、1回の完全な連想探索が必要
となる。総処理時間は、無視できるものである。
各連想探索中に、範囲照会を満たす全てのレコ
ードのマークの付いたビツトがオフにされるので
あれば、さらに改良を行なうことができる。それ
ゆえ、各サブフエーズの始めで、ほぼN/Kのレ
コードにマークが付けられるが、マークの付けら
れたレコードの数は、サブフエーズの終りでゼロ
になるまで、直線的に減少することになる。これ
を第4図に示す。しかしながら、各連想探索で処
理されるレコードの平均数は、約N/(2K)と
なる。
なお、範囲照会を、2つの比較ではなく、1つ
の比較しか要求しない下記の照会に書き換えるこ
とができる。
Given values b,retrieve and unmark all
marked records such that “key value”≦
b。
この形式の照会は、範囲{a “key value”
≦b}が処理されている間に、a以下のキー値を
有するキー値からマークが取り除かれるのである
から、以前の照会と等価である。
[発明の効果] 本発明の好ましい実施例を説明したが、各種の
改変を本発明の原理に従つて行ない得ることを理
解されたい。例えば、経験上、RAM3が余分の
マークの付いたビツトのための、あるいはアドレ
スの待ち行列を形成するための余分の記憶域を有
していることが好ましいことがわかつている。さ
らに、入力フアイルの各論理レコードが、幾つか
の物理レコードにおよぶように、MBMに極めて
小さい論理レコードを置くか、あるいは各物理レ
コードが複数の論理レコードを含むように、極め
て大きい物理レコードを置くかのいずれかによつ
て、MBM連想記憶の記憶域の利用度を最大限の
ものにできる。上記のマーキング技術は、物理レ
コードのサイズが、論理レコードのサイズに比較
して小さい場合に、より効率がよくなる。
連想探索当りの時間、及び格納されている各範
囲に対する最終出力時間が十分短いものであれ
ば、内部分類フエーズの稼動時間は、CPU時間
によつて支配され、入出力時間によつては支配さ
れない。この場合、内部メモリにほぼ2倍のスペ
ースを割り振り、これを2つに分割することによ
つて、内部分類フエーズをはるかに高速にでき
る。内部メモリの容量は、M′=2(M−2(B+
B′))に増加する。ただし、Mは以前の内部メモ
リの容量である。
各範囲の内部範囲が、動的なものではなく、静
的なものなのであるから、交換選択の代りに、交
換選択のほぼ2倍の速度であるクイツクソートや
ラデイツクスのような静的内部分類法を使用でき
ることに留意されたい。内部分類フエーズに対す
るCPU時間は約50パーセント削減される。
現在、大規模なデータベースがDASDにランダ
ム・アクセス方式で格納されており、これは探索
時間を速くするために、ハツシユ及び索引手法を
使用している。上述のMBM技術により、データ
ベースをMBMに格納でき、より高速なランダ
ム・アクセスの利点を利用できる。同じハツシユ
及び索引手法を使用できる。この方式のデータベ
ース・システムは、DASDに格納されているデー
タベース・システムよりもはるかに高速でトラン
ザクシヨンを処理することができる。
さらに、MBMに格納されているデータベース
は一般のリレーシヨナル・データベース照会を、
連想探索を行なうことにより、秒単位で、迅速に
実行できる。これはデータベースがDASDに格納
されている場合には、達成できなかつたことであ
る。換言すれば、MBMをランダム・アクセス装
置、あるいは連想装置のいずれかとして、現在の
トランザクシヨンまたは照会にいずれか効率のよ
い方を使用できる。分類法は、リレーシヨナル・
データベースの一般的な操作のひとつとして検討
できるものである。
【図面の簡単な説明】
第1図は、サンプル・フエーズ中に作成された
必要なポインタを含む、分類されサンプリングさ
れたキーの平衡ツリーの図である。第2図は、サ
ンプル・フエーズ中に作成されたポインタ・リス
トの図である。第3図は、本発明方法の連想探索
を実行するための典型的な連想記憶カードの図で
ある。第4図は、実施されるマーキング技術の図
である。 3……RAMバツフア、5……エラー・コー
ド・テスト、9……読取り、11……書込み、1
5,17,19……アレイ。

Claims (1)

  1. 【特許請求の範囲】 1 利用可能な内部メモリを有するCPUにより、
    連想2次記憶装置からアクセスされるキー付きの
    レコードを含んだデータを再配列するため外部分
    布分類を実行する方法であつて、 S個のキーのランダム・サンプリングを行い、
    サンプリングされたキーをCPU内で内部分類す
    るステツプと、 キーのヒストグラムとキー値の範囲を得ること
    によつて、単一パスに等しいサイズの区画を形成
    し、各区画がCPUの内部メモリに適合するよう
    に隣接する密度の小さい範囲を結合して大きい範
    囲を形成するステツプと、 キーが区画の範囲内にあるすべてのレコードを
    連想検索し、該レコードを内部分類するステツプ
    と、 より成る外部分布分類を実行する方法。
JP10768084A 1984-05-29 1984-05-29 外部分布分類を実行する方法 Granted JPS6134626A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10768084A JPS6134626A (ja) 1984-05-29 1984-05-29 外部分布分類を実行する方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10768084A JPS6134626A (ja) 1984-05-29 1984-05-29 外部分布分類を実行する方法

Publications (2)

Publication Number Publication Date
JPS6134626A JPS6134626A (ja) 1986-02-18
JPH048814B2 true JPH048814B2 (ja) 1992-02-18

Family

ID=14465247

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10768084A Granted JPS6134626A (ja) 1984-05-29 1984-05-29 外部分布分類を実行する方法

Country Status (1)

Country Link
JP (1) JPS6134626A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02296603A (ja) * 1989-05-08 1990-12-07 Q P Corp 充填機の充填ノズル移動装置
JPH05241786A (ja) * 1992-02-26 1993-09-21 Dainippon Screen Mfg Co Ltd ソート処理装置
JP3061486B2 (ja) * 1992-09-18 2000-07-10 株式会社ピーエフユー データソート処理システム

Also Published As

Publication number Publication date
JPS6134626A (ja) 1986-02-18

Similar Documents

Publication Publication Date Title
US4575798A (en) External sorting using key value distribution and range formation
US5487164A (en) Distribution-based replacement selection sorting system
Litwin Linear Hashing: a new tool for file and table addressing.
Lehman et al. A study of index structures for main memory database management systems
Gonnet et al. New Indices for Text: Pat Trees and Pat Arrays.
Naor et al. Anti-persistence: History independent data structures
US5121493A (en) Data sorting method
Gotlieb Computing joins of relations
Stone Parallel querying of large databases: A case study
US6415375B2 (en) Information storage and retrieval system
EP0676081A1 (en) Pattern search and refresh logic in dynamic memory
JP2001331509A (ja) リレーショナルデータベース処理装置、リレーショナルデータベースの処理方法及びリレーショナルデータベースの処理プログラムを記録したコンピュータ読み取り可能な記録媒体
Larson et al. A file structure supporting traversal recursion
Lee et al. A Partitioned Signature File Structure for Multiattribute and Text Retrieval.
Lindstrom et al. The design and analysis of bucketsort for bubble memory secondary storage
Ahuja et al. An associative/parallel processor for partial match retrieval using superimposed codes
JPH048814B2 (ja)
Burkhard Partial match retrieval
Li et al. Partition based path join algorithms for XML data
Karasalo et al. The Design of Cantor-A New System for Data Analysis.
Pagh Basic external memory data structures
Martínez Palau Two-way replacement selection
EA005269B1 (ru) Способ организации и хранения данных в базе данных и база данных
Dewitt et al. Exploiting parallelism for the performance enhancement of non-numeric applications
Ribeiro et al. Distributed parallel generation of pat arrays