JPH0844537A - コンピュータシステムにおいてデータをソートし格納するための方法およびデータ記憶媒体 - Google Patents

コンピュータシステムにおいてデータをソートし格納するための方法およびデータ記憶媒体

Info

Publication number
JPH0844537A
JPH0844537A JP7132916A JP13291695A JPH0844537A JP H0844537 A JPH0844537 A JP H0844537A JP 7132916 A JP7132916 A JP 7132916A JP 13291695 A JP13291695 A JP 13291695A JP H0844537 A JPH0844537 A JP H0844537A
Authority
JP
Japan
Prior art keywords
data record
data
node
nodes
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.)
Pending
Application number
JP7132916A
Other languages
English (en)
Inventor
James H Troisi
ジェイムズ・エイチ・トロイシ
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.)
Tandem Computers Inc
Original Assignee
Tandem Computers Inc
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 Tandem Computers Inc filed Critical Tandem Computers Inc
Publication of JPH0844537A publication Critical patent/JPH0844537A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/22Indexing scheme relating to groups G06F7/22 - G06F7/36
    • G06F2207/222Binary data tree
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting

Abstract

(57)【要約】 【目的】 データベースのデータ記録を効率的にソート
できるようにする。 【構成】 コンピュータシステムにおいて、不揮発性メ
モリに格納されたデータ記録は、揮発性メモリに読み込
まれ、トーナメントタイプのソート処理によって処理さ
れる。このタイプのソートでは、ソートツリーのサイズ
が、前記ソートすべきデータ記録の数の関数として、前
記揮発性メモリ内において動的に再構成される。このソ
ート処理によって占められるメモリスペースはソートツ
リーの再構成によって減少され、ソート速度が高速化さ
れる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、コンピュータシステ
ムにおいてデータをソート(sort;分類若しくは整列)
し、ソートしたデータを格納(store)し、再生取り出
し(retrieve)する方法に関する。特に、この発明は、
コンピュータシステムの揮発性メモリにおいて、初期化
されたソートツリー(sort tree)を使用して、データ
をソートし、格納することに関する。
【0002】
【従来の技術】大きなデータベースを処理することは、
コンピュータシステムの多くの用途うちの重要部分であ
る。例えば、金融業から小売業に至る広い範囲におい
て、大きなデータベースを効率的に処理することは、こ
れらの産業に使用されるコンピュータシステムに関する
主要な要件である。このようなデータベースは、しばし
ば、効率的な処理またはサーチのために、所望の順序に
ソートする必要がある多数のデータ記録を含む。例え
ば、このようなデータ記録は、会社の従業員に関する情
報、または、金融機関の預金者に関する情報を含む場合
がある。
【0003】典型的には、このようなデータ記録は、コ
ンピュータシステムに関連するディスクドライブのよう
な、大容量の不揮発性記憶媒体に格納される。しかしな
がら、新たなデータ記録が追加されるのに伴い、あるい
は、格納用のデータベースまたはデータベース部分集合
の作成時において、前記記録を所望の順序にソートする
ことが行われる。このソート処理は、典型的には不揮発
性メモリに比べて容量が制限された、前記コンピュータ
システムの揮発性ワーキングメモリにおいて行われる。
前記揮発性ワーキングメモリの容量は、データ記録のソ
ート処理以外の各種タスクのために必要になる。
【0004】故に、コンピュータシステムの揮発性メモ
リにおいて、できるだけ高速で且つ効率的な方法で、デ
ータ記録をソートすることが望ましい。さらに、前記コ
ンピュータシステムの動作速度に対して比較的遅い入力
/出力動作の故に、不揮発性記憶媒体と揮発性メモリと
の間における入力/出力量を最少化することが望まし
い。
【0005】当該技術において使用されてきた1つの効
率的なソート技術は、いわゆる、トーナメントソートで
ある。この方法は、例えば、1973年にAddison‐Wesley
Publishing Companyによって発行された"The Art of Co
mputer Programmingの第3巻、Sorting and Searching",
Section 5.4.1の251〜266ページに記載されている。こ
こに記載されたデータ記録ソート方法において、階層ツ
リー構造に構成された多数のノード(node; 節)を有す
るソートツリー(sort tree)は、先ず、コンピュータ
システムのワーキングメモリにおいて作成される。ソー
トすべきデータ記録は、前記ソートツリーの底部の外部
ノードすなわち、リーフノードに挿入され、そして、ソ
ートされた順位におけるツリーの最上位に“勝者”が現
れるまで、前記データ記録は、トーナメント方式で、前
記ソートツリーを上る方向に比較される。
【0006】
【発明が解決しようとする課題】しかしながら、ソート
すべきデータ記録をソートツリーに導入する前に、前記
ソートツリーは、先ず初期化されなければならない。こ
の初期化処理は、実際のデータ値との比較において常に
敗者となる所定の値を前記ソートツリーに導入する処理
を含む。例えば、このような初期値は、上昇方向または
下降方向のソートを行えるよう、負の無限大値(−∞)
または正の無限大値(+∞)であってよい。これらの初
期値は、ソートすべき実際のデータ記録が正しい順序で
前記ソートツリーを通り抜けることを保証する。さら
に、前記ソートツリーの初期化は、前記ソートツリーの
内部ノードについて“敗者属性”が決定される、ことを
必要とする。すなわち、前記ソートツリーにロードされ
た初期値はすべて同じ名目値を有するので、始めに、す
なわち、ソートツリーの初期化の際に、前記ソートツリ
ーを上昇する初期的な敗者および勝者を任意に決定する
必要がある。
【0007】上述のように初期化されたソートツリーを
利用するトーナメントソートは、理論的には、効率的で
高速の所望のソート特性を有するが、ソートすべき記録
の数が予め分っていないとき、重大な非効率性をもたら
すことになる。例えば、数が分らない(未知数の)デー
タ記録を1回のソートでソートすることを所望する場
合、コンピュータシステムの揮発性メモリに最大限収容
可能なソートツリーを選択してよい。しかし、このよう
に大きなソートツリーは、該ツリーを初期化するため
に、コンピュータシステムにおける相当な時間オーバー
ヘッドを必要とすることになる。さらに、初期化の後に
最初にソートされたデータ記録がソートツリーから読み
出される前においては、すべての初期値が、実際のデー
タ記録に対する“勝者”であるので、とりあえず、読み
出される必要がある。故に、実際にソートされたデータ
記録に至るまですべての初期値を読み出すためには、初
期値に対応する数の比較ステップが必要になる。また、
それに引き続いてソートされた各データ記録を、前記ソ
ートツリーの高さ全体にわたって比較しなければならな
い。Nが外部ノードの数とした場合、前記ソートツリー
の高さはlog Nである。実際にソートすべきデータ記録
が比較的少数である場合、大きなソートツリーの作成に
は、相当量のコンピュータ時間が無駄となり、前記揮発
メモリの不必要に大きな部分が使用されることになる。
【0008】比較的小さなソートツリーが選択される場
合、これに対応して少数組のソートすべきデータ記録
が、略最適な方法でソートされることになる。しかし、
前記ソートツリーのサイズを超えるデータ記録組は、2
または3回以上の個別のソートを行った後に併合ソート
を行うことについての非効率性に遭遇することになる。
より詳しくは、前記ソートツリーを通り抜ける別々の実
行時において、主要な不揮発性メモリまたはスクラッチ
ファイルに対してデータ記録を読み書きすることについ
て、望ましくない入力/出力オーバーヘッドが必要にな
る。さらに、この小さなソートツリーを多数回初期化し
た後に1または2回以上の併合ソートを行うことは、不
可避的に、1回のソートに比べて、より多くのコンピュ
ータ時間を浪費することになる。
【0009】従って、未知数のデータ記録のソートを行
う際、前記コンピュータシステムのユーザは、“Catch
−22”に遭遇することになる。大きすぎまたは小さすぎ
るツリーサイズを選択した場合、非効率性、および、本
来的にはソートに専用可能なコンピュータ時間の浪費を
伴うことになる。大きなデータベースの場合、また、多
数のソートが必要な場合、このような時間の浪費、およ
び、ワーキングメモリの非効率的な利用は、大変重大な
問題である。
【0010】従って、未知数のデータベース記録をソー
トするための改良された方法に対する要求がある。すな
わち、利用可能な揮発性メモリの使用を最適化し、不揮
発性メモリと揮発性メモリとの間におけるデータ転送に
行うための入力/出力オーバーヘッドを最少化すること
ができる方法が、必要である。
【0011】この発明は上述の点に鑑みてなされたもの
で、データベースのデータ記録を極めて効率的にソート
できるようにする方法を提供することを目的とする。ま
た、この発明は、データベースのデータ記録を極めて効
率的にソートできるようにするデータ記憶媒体を提供す
ることを目的とする。
【0012】
【課題を解決するための手段】上記目的を達成するた
め、この発明の第1の観点に従う方法は、CPUと、該
CPUによってアクセス可能な不揮発性メモリと、前記
CPUに関連して設けられた揮発性ワーキングメモリと
を備えていて、前記不揮発性メモリに複数のデータ記録
が格納されているコンピュータシステムにおいて、デー
タをソートし格納するための方法であって、前記不揮発
性メモリから前記データ記録を読み出し、前記揮発性ワ
ーキングメモリに格納する工程と、前記揮発性ワーキン
グメモリに格納された各データ記録に対して、メモリポ
インタとキー値とを含む独自のデータ記録識別子をそれ
ぞれ割り当てる工程と、前記揮発性ワーキングメモリに
おいてソートツリーを初期化する工程であって、該ソー
トツリーが前記揮発性ワーキングメモリにおけるそれぞ
れの記憶位置に割り当てられた複数のノードを含み、該
ノードが階層構造状に配置された複数の外部ノードと複
数の内部ノードと1つのルートノードとを含んでおり、
この初期化する工程が、前記外部ノードに初期値を関連
づけることと、前記内部ノードの各々に対して前記外部
ノードの1つを関連づける敗者属性を割り当て、残りの
1つの前記外部ノードに前記ルートノードを関連づける
こととを含んでいることと、前記データ記録識別子を初
期化された前記ソートツリーの前記外部ノードに順次導
入する工程であって、1番目の前記データ記録識別子を
前記ルートノードに関連付けられた外部ノードに導入
し、その後の前記データ記録識別子を連続的に隣接した
前記外部ノードに導入する工程と、最後の前記データ記
録識別子が前記ソートツリーに導入された後、データ記
録識別子を含まない1つもしくは複数の前記外部ノード
または内部ノードを削除するために、前記ソートツリー
を再定義する工程と、前記ルートノードに至るまで前記
ソートツリー全体にわたって前記キー値を比較し、前記
ルートノードから前記データ記録識別子を抽出し、関連
したメモリポインタを含む前記データ記録識別子を、そ
の抽出順によって決定される順序で前記揮発性ワーキン
グメモリに格納することによって、前記データ記録識別
子をソートする工程と、ソートされた前記メモリポイン
タに従って前記揮発性ワーキングメモリから前記データ
記録を読み出し、該読み出したデータ記録を、ソートさ
れた前記キー値の順序で前記不揮発性メモリに格納する
工程とを備える。
【0013】この発明の第2の観点に従う方法は、CP
Uと、該CPUによってアクセス可能な不揮発性メモリ
と、前記CPUに関連した揮発性ワーキングメモリとを
備えていて、前記不揮発性メモリに複数のデータ記録が
格納されたコンピュータシステムにおいて、データをソ
ートし格納する方法であって、前記不揮発性メモリから
前記データ記録を読み出し、前記揮発性ワーキングメモ
リに格納する工程と、前記揮発性ワーキングメモリに格
納された各データ記録に固有のデータ記録識別子を割り
当てる工程と、前記揮発性ワーキングメモリにおいてソ
ートツリーを初期化する工程であって、該ソートツリー
が前記揮発性ワーキングメモリにおけるそれぞれの記憶
位置に割り当てられた複数のノードを含み、該ノードが
階層構造状に配置された複数の外部ノードと複数の内部
ノードと1つのルートノードとを含んでおり、この初期
化する工程が、前記外部ノードに第1の所定値を関連づ
けることと、前記内部ノードの各々に対して前記外部ノ
ードの1つを関連づける敗者属性を割り当て、残りの1
つの前記外部ノードに前記ルートノードを関連づけるこ
ととを含んでいることと、前記データ記録識別子を初期
化された前記ソートツリーの前記外部ノードに順次導入
する工程であって、1番目の前記データ記録識別子を前
記ルートノードに関連付けられた外部ノードに導入し、
その後の前記データ記録識別子を連続的に隣接した複数
の前記外部ノードに導入するものであり、前記データ記
録識別子を前記ソートツリーに導入する際、前記第1の
所定値を該ソートツリーから順次除去する工程と、最後
の前記データ記録識別子が前記ソートツリーに導入され
た後、データ記録識別子を含まない前記内部ノードの一
部を削除し、残りのすべての第1の所定値を除去し第2
の所定値で置き換えることによって、前記ソートツリー
を再定義する工程と、前記ルートノードに至るまで前記
ソートツリー全体にわたって前記データ記録を比較し、
前記ルートノードから前記データ記録識別子を抽出し、
抽出した前記データ記録識別子を、その抽出順によって
決定される順序で前記揮発性ワーキングメモリに格納す
ることによって、前記データ記録識別子をソートする工
程と、前記揮発性ワーキングメモリから前記データ記録
を読み出し、該読み出したデータ記録を、ソートされた
前記識別子の順序で、前記不揮発性メモリに格納する工
程とを備える。
【0014】さらに、この発明に係るデータ記憶媒体
は、CPUと、揮発性ワーキングメモリと、複数のデー
タ記録を格納した不揮発性メモリと、コードを読み出す
手段とを備えたコンピュータシステムに使用される、機
械読出し可能なコードを記録したデータ記憶媒体であっ
て、前記不揮発性メモリから前記データ記録を読み出
し、該データ記録を前記揮発性ワーキングメモリに格納
するよう、前記CPUに対して指示する手段と、前記揮
発性ワーキングメモリに格納された各データ記録に固有
のデータ記録識別子を割り当てるよう、前記CPUに対
して指示する手段と、前記揮発性ワーキングメモリにお
いてソートツリーを作成し初期化するよう、前記CPU
に対して指示する手段であって、前記ソートツリーが前
記揮発性ワーキングメモリにおけるそれぞれの記憶位置
に割り当てられた複数のノードを含み、前記ノードが複
数の外部ノードと複数の内部ノードと1つのルートノー
ドとを含んでおり、該手段が、データ記録が追加される
のに伴って前記ソートツリーにノードを追加するよう
に、前記データ記録識別子を前記ソートツリーに登録す
ることと組合わせて前記ツリーを作成し初期化するよう
前記CPUに対して指示するものであることと、前記ル
ートノードに至るまで前記ソートツリー全体にわたって
前記データ記録を比較することによって、前記データ記
録識別子をソートするよう、前記CPUに対して指示す
る手段と、前記揮発性ワーキングメモリから前記データ
記録を読み出し、該読み出したデータ記録をソートされ
た前記識別子の順序で、前記不揮発性メモリに格納する
よう、前記CPUに対して指示する手段とを具備する。
【0015】
【作用】この発明は、揮発性メモリの使用を最適化し、
未知数または可変数のデータベースをソートするための
時間を最短化するための方法を提供するものである。こ
の発明に従えば、ソートすべきデータ記録は揮発性メモ
リに読み込まれ、ソートキーと揮発性メモリにおける特
定の記憶位置を示すポインタとを含むデータ記録識別子
が、各データ記録ごとに作成される。階層的に配置され
た内部ノードおよび外部ノードを有するソートツリーが
前記揮発性メモリにおいて作成され、所定の順序付けら
れた方法で初期化される。前記ソートツリーの名目的な
サイズは、ユーザによって決定されてもよいし、予め決
定されていてもよい。例えば、前記揮発性メモリにおけ
る利用可能なスペース上の制限に見合う最大サイズのソ
ートツリーを形成することができる。前記キーおよびポ
インタを含む前記データ記録識別子は複数の前記外部ノ
ードにランダムに与えられるのではなく、例えば該複数
の外部ノードを順次横切るような順序で、前記ソートツ
リーに導入される。前記ソートツリーの効果的なサイズ
を最適化するために、前記データ記録識別子を前記ソー
トツリーに導入している時またはその後で、前記ソート
ツリーが動的に変更される。すべての前記データ記録識
別子が導入すなわち入力され、前記ソートツリーが動的
に再構成された後、前記ツリーに沿って前記キーが比較
され、前記キーおよびポインタが前記揮発性メモリ内に
おいてソートされた順に変更される。そして、前記ソー
トされたポインタを使用することによって、前記データ
記録が、ソート順に、前記揮発性メモリから不揮発性メ
モリに読み出される。
【0016】前記ソートツリーは最適化された効果的な
サイズに動的に再構成されるので、前記ソートツリーの
最大名目サイズを選択することは、個別の実行時にソー
トを行うことおよびこれらの実行結果を併合することに
付随する非効率性を最少化できるとともに、前記ソート
ツリーが初期化されるのに必要なソート動作回数を最少
化できるという利点を有する。さらに、入力/出力オー
バーヘッドは、異なるソートツリーにわたる異なる実行
時に、前記不揮発性メモリに対してデータを読み書きし
なければならない回数を最少化することによって、減少
することができる。
【0017】好ましい実施例において、前記ソートツリ
ーは、前記データ記録識別子が読み込まれながら作成さ
れるのに伴って、動的に再構成される。すなわち、前記
ソートツリーは、初期の該ツリーに導入されるデータ記
録識別子を受け入れる必要に応じて、成長させられる。
前記ソートツリーは、常に該ツリーにおける可能限り下
方に設定される移動可能なルートノードを使用する。デ
ータ記録が追加される場合、前記ルートノードは上方に
移動される。動的に作成され、初期化されたソートツリ
ーが完成し、すべてのデータ記録識別子がロードされ終
わると、前記データ記録のキー値が、所定の比較規則を
使用してソートされる。この比較規則によると、前記ソ
ートツリー階層構造における低レベルにあるキー値は、
比較時に、同等値のキー値を飛び超えて進む。
【0018】他の実施例において、ソートツリーは完全
に初期化され、その後、データ記録識別子が、上述した
順序付けされた方法で、前記ソートツリーの外部ノード
に読み込まれる。すべてのデータ値がロードされると、
前記ソートツリーはより最適なサイズに動的に減少され
る。1つの好ましい減少処理は、使用されない外部ノー
ド、および、これに対応する内部ノードを除去すること
によって、前記ソートツリーを動的に切り取る、つま
り、“剪定”することである。その後、データソート
は、上記比較規則を使用して、前記減少されたツリーに
おいて進行する。他の実施例において、使用されないす
べてのノードが所定の敗者値に対応する値、すなわち、
すべての比較において敗者となる値に変更される。その
後、動的に変更された敗者値に関連するノードは、これ
らの値が非各自に進行しないので、前記ソートツリーの
休止状態の背景となる。これは、前記ソートツリーのサ
イズを効果的に減少する。この方式は、ソートの一貫性
が前記ツリーから使用されないすべてのノードを剪定す
ることを阻止することになる、前記剪定方式と組合わせ
てもよい。初期化後に前記ソートツリーのサイズを減少
することによって、初期値を除去し、前記ツリーからソ
ート済のデータ識別子を除去するために必要な比較回数
が減少される。こうして、この発明は、ソートツリーの
サイズが自動的に減少可能な、揮発性および不揮発性メ
モリを使用したデータベース記録をソートし、格納する
方法を提供する。
【0019】
【実施例】以下、添付図面を参照してこの発明の実施例
を詳細に説明する。この発明に従うと、データはデータ
処理システムに格納される。図1に示すような、データ
処理システム10を使用してよい。使用されてよい典型
的なデータ処理システムとしては、メインフレームコン
ピュータ、ワークステーションまたはパーソナルコンピ
ュータがある。また、データ記録を共用する、ネットワ
ークで接続される多数のシステムが、使用されてよい。
さらに、前記データ処理システムは、フォールトトレラ
ント(耐故障)方式で動作する多数のサブシステムを含
んでよく、あるいは、特定のソートタスクの一部が異な
るプロセッサに割り当てられる並列処理環境で動作する
ようなサブシステムを含んでよい。さらに、前記データ
処理システムは、各種のオペレーティングシステムおよ
びプログラム言語を利用する場合、この発明を効果的に
使用できる。
【0020】図1に示すように、典型的なデータ処理シ
ステム10は、中央処理ユニット20(CPU)を備え
ている。該CPU20は、バス30を介して、揮発性メ
モリ(RAMメモリ)40、不揮発性メモリ50(例え
ば、ディスクドライブ、CD―ROM、磁気テープ
等)、キーボードのような入力手段60、および、フロ
ッピーディスクドライブ、CD―ROMドライブ、CD
―WORMドライブまたはテープドライブのような着脱
自在の媒体ドライブ65に接続されている。
【0021】ここでは、データベースに含まれるデータ
をソートすることが所望されている。前記データベース
は、前記RAMメモリ40および不揮発性メモリ50の
いずれかに格納されてよいが、この実施例の場合、不揮
発性メモリ50に格納されいる。これは、実用上の必要
性に基づいている。多くのコンピュータシステムで処理
される大きなデータベースは、大容量の記憶装置を必要
とするものである。典型的には、これらのデータベース
は、大容量の不揮発性記憶システムに格納される。しか
し、ある用途においては、データベース記録を揮発性メ
モリに格納することが所望されることがある。各種の、
すなわち、各種カテゴリーのデータベース記録および情
報は、格納された後、ソートされることがある。例え
ば、金融業における用途では、データベースは、名前、
住所および口座番号を格納する。この場合、各データ記
録は、関連するデータ項目を有する。例えば、クレジッ
トカード口座番号XXは、これに関連した名前NNおよ
び住所AAを有する。ソートの基礎となるデータ項目
を、ソートキーと呼ぶ。こうして、クレジットカード番
号等の前記データタイプに基づく昇順に前記記録をソー
トすることが所望の場合、クレジットカード番号を、ソ
ートキーと呼ぶ。さらに、各クレジットカード番号に関
連した名前および住所のような、関連データ項目を記録
することが所望の場合がある。
【0022】ソートを始めるために、不揮発性メモリ5
0から揮発性メモリ40に、データ記録が読み出され
る。好ましくは、前記揮発性メモリ40内の1セグメン
トが、そのソート処理に割り当てられる。そして、ソー
トキー(例えば、口座番号)が選択され、キーの値やポ
インタを含むデータ記録識別子が、各データ記録ごとに
作成される。前記ポインタは、前記関連したデータ記録
を格納する前記揮発性メモリにおける論理メモリアドレ
スを含んでいる。
【0023】ソートツリーは、前記揮発性メモリ40に
割り当てられたセグメントにおいても作成される。前記
ソートツリーは、階層的に配置された外部ノード70
と、内部ノード80と、ルートノード85とを有する。
図2には、このようなソートツリー90の一例が示され
ている。該ソートツリーが作成される際、メモリ40内
の一位置が各ノードに割り当てられる。
【0024】揮発性メモリ40において割り当てられた
セグメントの範囲内で、いずれのサイズのソートツリー
が選択されてよい。好ましい実施例においては、前記R
AMメモリ40における利用可能なスペースのうちので
きるだけ多くの部分が専有されるよう、最大限のソート
ツリーサイズが選択される。これは、該ソートツリーの
ために割り当てられたセグメントにおけるすべての利用
可能なメモリ部分を自動的に割り当てることによって、
ユーザ入力無しに行うことができる。代案として、ユー
ザは、ソートすべきデータ記録の考えられる最大数を推
定することに基づいて、ソートツリーサイズを選択して
よい。
【0025】前記ソートツリーは、特定の順序で、該ツ
リーを初期値でうめて行くことによって開始される。こ
れらの初期値は、ソートされている最中のキー値との比
較において常に勝者となるよう設定された値である。例
えば、数が上昇する方向へのソートを所望する場合、適
当な初期値は負の無限大値(−∞)である。該無限大値
(−∞)は、これと比較されるいずれのキー値より小さ
な値であり、従って、上昇方向へのソートにおける勝者
となる。
【0026】好ましくは、前記ソートツリーは、図15
乃至図22に示した“付録(Appendices)”に付記した
疑似ソースコードに表されたソート順序に従ってうめら
れる。図15及び図16に示す付録1.1は、以下に述
べる第1の実施例に対応する疑似ソースコードである。
該付録1.1は、前記疑似ソースコードにおけるステッ
プを示す図12のフロー図に対応している。図17及び
図18に示す付録1.2は、以下に述べる第2の実施例
に対応する疑似ソースコードである。該付録1.2は、
前記疑似ソースコードにおけるステップを示す図13の
フロー図に対応している。図19及び図20に示す付録
1.3は、以下に述べる第3の実施例に対応する疑似ソ
ースコードである。該付録1.3は、前記疑似ソースコ
ードにおけるステップを示す図14のフロー図に対応し
ている。各付録1.1〜1.3は、図21及び図22に
示した付録1.4におけるコンピュータルーチンに関係
している。
【0027】前記付録におけるコードは、特定のコンピ
ュータ言語に限られるものではなく、C言語、C++言
語、アセンブラ、コボルまたはフォートランのような、
任意のコンピュータ言語で書かれていてよい。コンパイ
ルされたまたは二進のコードを含む前記コードは、前記
揮発性メモリ50、または、着脱可能な媒体ドライブ6
5に着脱可能にセットされる媒体に格納されてよい。同
様に、前記コンパイルされたまたは二進のコードは、図
11の(a),(b),(c)にそれぞれ示すように、
フロッピーディスク、磁気テープまたは光ディスクのよ
うな持ち運び可能な媒体に格納されるのが好ましい。当
業者に知られているように、前記コードは、磁束反転の
形で、前記持ち運び可能な媒体に記録されてよく、ま
た、光ディスクである場合、該媒体の光学的反射度の変
化の形で記憶されてよい。
【0028】図3には、9つの外部ノードを有するソー
トツリーが示されている。図3において、各前記外部ノ
ード70の上方左角に隣接した箇所には、ノード番号が
付されている。このような番号付けは、後続の図におい
ても同様になされている。前記9つの外部ノードは、左
から右に向って上昇する順番で番号付けされており、番
号“0”が付された1番目のノードの“0”で始まり、
番号“8”が付された9番目のノードで終わる。前記ノ
ードは、図において、左から右方向に番号が大きくなる
よう順次番号付けされているが、この番号付けの方法は
任意でよく、例えば、右から左方向に番号が大きくなる
よう順次番号付けされてよい。前記外部ノードは、順序
通りにロードされるのが好ましい。すなわち、最も左側
のノードが最初にロードされ、その後、直ぐ前のノード
がロードされた後に次のノードがロードされなければな
らない。これは、図3における左から右方向にロードす
ることによって、または、前記付録の示された技術に従
って実現されてよい。各前記外部ノード70には、勝者
の値、すなわち、図示例においては、−∞が与えられて
いる。もちろん、他のソートにおいては、他の値を勝者
の値としてもよい。例えば、下降方向へのソートにあっ
ては、+∞が勝者の値とされる。いずれにせよ、各ソー
トにおいて、“0”のRUN値は、“1”のRUN値に対する勝
者と考えられる。
【0029】各前記内部ノード80には、敗者の属性お
よびRUN値が与えられる。図において、前記敗者の属性
およびRUN値は、コロン(“:”)によって別々に示され
ている。しかし、該敗者の属性およびRUN値は、その他
任意の方法で示されてもよい。例えば、内部ノード4に
は、“2”の敗者の属性、および、“0”のRUN値が与え
られている。前記敗者の属性は、同じ番号の外部ノード
に対応している。こうして、“2”の敗者の属性は、外
部ノード2に対応する。図示例において、前記内方ノー
ド80の敗者の属性は、入力値すなわちデータ値が左か
ら右方向にうめられるよう、設定される。
【0030】データ値は、前記ソートツリーの外部ノー
ドに読み込まれる。前記不揮発性メモリ50に格納され
たデータ記録は、CPU20およびデータバス30を介
してアクセスされる。好ましくは、前記データ記録は、
必要に応じてRAMメモリ40に転送され、前記外部ノ
ードに読み込まれる。さらに、好ましくは、各データ
は、データ値またはデータ識別子を有し、また、前記不
揮発性メモリ50のデータベースに格納された関連デー
タを示すポインタを有する。
【0031】データ値の比較は、典型的なトーナメント
方式で行われる。すなわち、より下方のノードにおける
比較の勝者は、上方のノードの現在値と比較される。す
なわち、前記ソートツリー階層構造における下方レベル
のデータ値は、比較時に、同等な値のデータを飛び超え
るよう配列される。同様に、勝者側のデータ値は、比較
時に、敗者側の値を飛び超えるよう配列される。例え
ば、上昇方向へのソートにおいて、あるデータ値は、無
限大値+∞より数的に小さく、従って、上昇方向へのソ
ートにおける勝者であるので、前記無限大値+∞を飛び
超えることになる。ソートツリーのデータ処理動作を最
適化するための第1の好ましい実施例において、データ
値は、上述したように初期化されたソートツリーに読み
込まれる。
【0032】図12は、データをロードするためのステ
ップを示す図である。また、図4は、データ値が入力さ
れたソートツリーを示す図である。ここには、8つの外
部ノードを有するソートツリーが示されている。該ツリ
ーの入力データ値“aa”、“cc”および“bb”が、外部
ノード0、1、2にそれぞれ与えられている。
【0033】例えば該ソートツリーにすべてのデータア
イテムを入力することによって、データアイテムの合計
数が決定されると、該ツリーは、使用されていないノー
ドを除去するために剪定される。典型的には、最後のデ
ータアイテムに達した直後に、入力データストリームに
おけるエンド・オブ・ファイル(EOF)が検出される。
前記入力データストリームの終りが検出されると、剪定
処理が開始される。すなわち、“0”のRUN値を含む(RU
N 0に対応する)内部ノードのみからなるサブツリー
が、剪定される。図4の例においては、内部ノード1、
3、6、7がRUN0の初期値を示している。剪定を行うた
めに、実際の値(すなわち、RUN 1)を示している該ツ
リーにおける最上位のノードが、前記ツリーのルートノ
ードを示すよう再定義される。図4において、最上位の
ノードは内部ノード2である。
【0034】剪定後のソートツリーは、ルートノード
と、実際の値を示す内部ノード(図4においては、内部
ノード0、2、4および5)と、これに対応する外部ノ
ード(図4においては、外部ノード0〜3)とからな
る。図4に示した例を剪定したソートツリーは、図5に
示されている。前記階層構造における最上位の内部ノー
ドは、実際値を示している最上位の内部ノードであるの
で、ルートノードを示している。図5において、内部ノ
ード2が、前記階層構造における最上位の内部ノードで
ある。その後、ソート処理は、この新たなツリー構造に
よって続行される。
【0035】前記第1の実施例と組合わせて使用される
のに適した、ソートツリーの効率を最適化するための第
2の実施例において、すべてのデータ値は、上述のよう
に初期化されたソートツリーに読み込まれる。図13
は、前記データをロードするためのステップを示してい
る。このソートは、エンド・オブ・ファイル(EOF)が
検出されるまで行われる。その際、RUN 0の初期値(す
なわち、上述の例では−∞)は迂回され、これにより、
より高速でデータ値にアクセスできる。これは、すべて
のRUN 0の初期値をRUN 2の敗者値に置き換えることによ
って行われる。1つの実施例において、前記ソートツリ
ーのすべてのノードが、RUN 0の初期値に対応するか否
かを判定するために検査される。その後、RUN 2が与え
られる。前記RUN 2の敗者値は、敗者になるよう選択さ
れている。すなわち、RUN 2の敗者値は、読み込まれる
データ値との各比較において敗者となるようになってい
る。1つの可能性は、最初に検出されたEOFに割り当て
られた値に対応するRUN 2の敗者値を選択することであ
る。例えば、上昇方向へのソートにおいて、+∞が敗者
値となり、従って、+∞がすべてのRUN 2の敗者値と交
換される。実際上、未使用の外部ノードが、該ソートツ
リーの休止状態の背景となる。この発明の比較規則に従
って、これらは、各比較動作において、各データ値によ
って迂回される。
【0036】図6および図7は、この実施例を示す。図
6は、4つのデータ値が入力された、8つの外部ノード
を有するソートツリーを示す。データ値“aa”、“c
c”、“bb”“dd”が、外部ノード0、1、2、3にそ
れぞれ与えられている。すべてのデータアイテムが該ソ
ートツリーに入力されると、典型的には、エンド・オブ
・ファイル(EOF)インジケータが検出され、該EOF値
(敗者)が次の外部ノード(すなわち、図6のノード
4)に入力されてよい。図示された上昇方向へのソート
における敗者値は、+∞となる。この最初のEOF値が検
出されると、すべてのRUN0の初期値が、RUN 2の敗者値
に変更される。すなわち、図7に示したソートツリー
が、図6のソートツリーから発生される。各利用可能な
外部ノード(ノード番号4、5、6、7)において、敗
者値はRUN 0の初期値にとって代る。図7の例におい
て、敗者値は+∞である。さらに、RUN 0の初期値によ
ってうめられる各内方ノードは、RUN 2の敗者値を示す
よう変更される。図7において、これは、ルートノード
および内部ノード3、6、7に示されている。例えば、
内部ノード6において、その値は“5:0”から“5:2”に
変更されている。この場合、入力ストリームが尽きた
後、トーナメントの主要ループが実行される際、ノード
4に格納された新たなRUN 2の値がノード1において値
“aa”に対して比較される。該“aa”は+∞と比較され
るので、ノード1が勝者となる。この発明の比較規則の
下では、前記“aa”は上昇方向へのソートにおいて勝
ち、該ソートツリーの左側から値が除去される。実際、
これは、RUN 2の敗者値のみによって占められた該ソー
トツリーの右側を不能化する。その結果、RUN 1のデー
タ値によって占められた左側のみからなる、効果的に剪
定されたソートツリーが形成される。
【0037】第3の好ましい実施例において、ソートツ
リーは、そのソート中、最小サイズに維持される。該ソ
ートツリーのうちデータをソートするために実際に使用
される部分のみが、該ツリーのルートノードおよび最も
左にある枝全体、すなわち、該ツリーのルートノードか
ら最も左側にある外部ノードに至る枝と共に、初期化さ
れる。こうして、RUN 0の初期値によって初期化された
ソートツリーから開始される代りに、該ソートツリーは
部分的に初期化されて開始される。先ず、該ツリーの最
も左にある枝全体が初期化され、次に、この枝の最下位
の内部モードが、ルートノードを指し示すよう設定され
る。図8に示すように、ソートツリー全体を初期化する
代りに、内部ノード0、1、2、4、8、および、これ
らが示す外部ノードのみが、勝者の値によって初期化さ
れる。ルートノード85は、該枝における最下位の内部
ノード、つまり、内部ノード8の上方に設定される。
【0038】その後、データアイテムが入力される。初
期化された部分がうめられるのに従い、必要に応じて、
さらに他の枝が初期化されてよい。好ましくは、実際の
値が外部ノードに挿入された直後、新たな値を入力する
ために該ツリーを拡張することを所望する場合、該ツリ
ーは、新たなノードがルートノードを指し示すよう再構
築される。現在のツリーに空の初期化済の外部ノードが
ただ1つしか残されていない場合、該ツリーが拡張され
る。新たなルートノードによって定義される拡張された
ツリーに必要な外部ノードおよび内部ノードが初期化さ
れ、前記ルートノードを示す現在のノードの上方のノー
ドが、前記ルートノードを指し示すよう設定される。図
14は、データをロードし、どのノードがルートノード
を設定(すなわち、更新)するためのステップを示す図
である。
【0039】新たなノードがルートノードを指し示す必
要があるか否かを判定するための好ましい方法は、前記
ルートノードを指し示す内部ノードの上方のノードの敗
者値を確認することに基づいている。この敗者値は、現
在のソートツリーがうめられた後にデータアイテムを受
け取るために使用される外部ノードの番号に対応する。
例えば、図3において、現在のソートツリーが内部ノー
ド4から下降する場合、該内部ノード4の上方のノード
はノード2である。該ノード2の敗者値は“3”であ
る。こうして、現在のソートツリーがうめられたときに
データアイテムを受け取るために使用される外部ノード
の番号は3であり、該外部ノード3は内部ノード2の敗
者値に対応する。前記外部ノード3は前記現在のソート
ツリー(これは内部ノード4から下降している)の外に
あるので、該外部ノード3を包囲する他の枝が初期化さ
れることになる。すなわち、最上位の内部ノードは、内
部ノード2に移ることになる。前記外部ノード3から内
部ノード2に上昇するすべてのノードが初期化される。
こうして、内部ノード5および外部ノード3が初期化さ
れることになる。この処理は、すべてのデータ値が入力
されるまで繰り返される。
【0040】ノードを初期化するための好ましい方法
は、2つのインジケータを使用することである。第1の
インジケータは、最後にうめられた外部ノードの上方の
内部ノードを示し、第2のインジケータは、次にうめら
れる外部ノードの上方の内部ノードを示す。前記第2の
インジケータのレベルが第1のインジケータのレベルよ
り高い場合、前記第1のインジケータが上昇される。前
記第2のインジケータによって示されるノードが前記第
1のインジケータと同一である場合、初期化処理は停止
する。該初期化処理が続行される場合、前記第2のイン
ジケータによって示される内部ノードが初期化され、そ
して、両前記インジケータが、階層構造の次のレベルに
上昇される。一方、両前記インジケータが異なる内部ノ
ードを示す場合、前記初期化比較処理が繰り返される。
ある時点において、両前記インジケータは同一のノード
を示し、この初期化処理が完了する。
【0041】図9は、図8に示したソートツリーに対す
る2番目のデータアイテムの入力動作を示す図である。
初期化されていないノードは空ブロックで示されてい
る。すなわち、内部ノード8、4、2、1、0は、対応
する外部ノード0、1、2、3、5と共に初期化され
る。値“aa”は外部ノード0に入力され、bbは外部ノー
ド1に入力される。新たな値はRUN 1の値を内部ノード
4の上方に移動させるので、新たな値を入力するために
は、他の枝を初期化する必要がある。現在、ルートノー
ドは、実数を示す最上位の内部ノード、すなわち、ノー
ド番号4によって示される。外部ノード2がうめられる
と、その初期化された枝にはそれ以上利用可能なスペー
スは存在しない。
【0042】初期化された枝におけるすべてのノードが
うめられると、ルートノードを示すノードが変更され、
初期化が行われる。前記ルートノードを指し示すノード
の上方のノードが、該ルートノードを指し示すよう設定
される。図9において、変更が必要なノードは、内部ノ
ード2およびこれに対応する外部ノード3に対応する。
図10はこの段階を示している。図10において、初期
化されたノードは値を有し、初期化されていないノード
は空である。すなわち、前記内部ノード2から下降する
枝が初期化され、このノードが前記ルートノードを指し
示すことになる。また、図10において、3番目のデー
タ値が入力されている。外部ノード2は値“cc”で占め
されており、内部ノード4が初期化される。
【0043】この実施例の場合、1番目のRUN 0の初期
値を除去するための1回だけの比較が必要である。すな
わち、1番目のRUN 1の値が外部ノード0に入力される
と、該外部ノード0のRUN 0の初期値が取り出される。
これは、図8および9に示されている。図8において、
外部ノード0のRUN 0の初期値(0:0)が、ルートノード
85に入力されている。図9において、この値が除去さ
れる。
【0044】この発明に関わる前記各実施例を組合わせ
てもよい。様々なデータソートにおいて、前記各実施例
を組合わせることによって、より高速のソートが可能に
なる。例えば、前記第3の実施例が、前記第2の実施例
と組み合わされてよい。こうして、最後のデータアイテ
ムが読み込まれ、ソートツリーが構築されたとき、すべ
てのRUN 0の初期値が、上述のようにRUN 2の敗者値に変
更される。
【0045】前記第1の実施例は、第2の実施例と共に
使用される場合に、いっそう最適化されることができ
る。例えば、最後のデータアイテムが読み込まれ、前記
第1の実施例において上述したように、ソートツリーが
減少されると、該減少されたソートツリーには、RUN 0
の初期値が依然として残存する。前記第2の実施例に従
うと、すべての残存したRUN 0の初期値がRUN 2の敗者値
に変更されるであろう。
【0046】上述したデータソートが完了した後、ソー
トされたデータは、ソートされたデータ値の順に、前記
揮発性メモリ40から不揮発性メモリ50に読み出され
てよい。代案として、各データ値がルートノードから再
生されのに伴って、前記揮発性メモリ40から不揮発性
メモリ50に読み出されてよい。以上のようにして、デ
ータベースのデータを動的にソートするための装置およ
び方法が提供される。本発明は上記実施例に示されたも
のに限定されることなく、特許請求の範囲に示された範
囲内で、その他の実施態様を採用してよい。
【0047】
【発明の効果】以上のような構成により、この発明は、
データベースのデータ記録を極めて効率的にソートでき
る、という優れた効果を奏する。
【図面の簡単な説明】
【図1】この発明に係る一実施例のシステムブロック
図。
【図2】この発明に係るソートツリーの一例を示す図。
【図3】この発明に従って初期化された9つの外部ノー
ドを含むソートツリーの一例を示す図。
【図4】この発明に従って挿入された3つのデータ記録
識別子を含む8つの外部ノードを含むソートツリーの一
例を示す図。
【図5】この発明に従って図4のソートツリーを剪定し
た状態のソートツリーの一例を示す図。
【図6】この発明に従って挿入された4つのデータ記録
識別子を有する8つの外部ノードを含むソートツリーの
一例を示す図。
【図7】この発明に従って挿入された4つのデータ記録
識別子およびRUN 2の値を有する8つの外部ノードを含
むソートツリーの一例を示す図。
【図8】この発明に従って初期化された左側の枝を有す
る8つの外部ノードを含むソートツリーの一例を示す
図。
【図9】この発明に従って初期化された左側の枝と、こ
の発明に従って入力された2つのデータ記録識別子と有
するソートツリーの一部を示す図。
【図10】この発明に従って初期化された内部ノード
と、この発明に従って入力された3つのデータ記録識別
子を有するソートツリーの一例を示す図。
【図11】(a)はこの発明に従って実施コードが書き
込まれた持ち運び可能なフロッピーデイスクを例示し、
(b)はこの発明に従って実施コードが書き込まれた持
ち運び可能なコンピュータテープを例示し、(c)はこ
の発明に従って実施コードが書き込まれた持ち運び可能
な光ディスクを例示する図。
【図12】この発明に係る付録1.1に関するフロー
図。
【図13】この発明に係る付録1.2に関するフロー
図。
【図14】この発明に係る付録1.3に関するフロー
図。
【図15】付録1.1として例示する第1の実施例に対
応する疑似ソースコードの一部を示す図。
【図16】付録1.1として例示する上記疑似ソースコ
ードの残りの部分を示す図。
【図17】付録1.2として例示する第2の実施例に対
応する疑似ソースコードの一部を示す図。
【図18】付録1.2として例示する上記疑似ソースコ
ードの残りの部分を示す図。
【図19】付録1.3として例示する第3の実施例に対
応する疑似ソースコードの一部を示す図。
【図20】付録1.3として例示する上記疑似ソースコ
ードの残りの部分を示す図。
【図21】上記付録1.1乃至1.3に関連するコンピ
ュータルーチンの一部を例示する図。
【図22】上記付録1.1乃至1.3に関連するコンピ
ュータルーチンの残りの部分を示す図。
【符号の説明】 10 CPU 40 RAMメモリ 50 不揮発性メモリ 70 外部ノード 80 内部ノード
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成7年6月14日
【手続補正1】
【補正対象書類名】図面
【補正対象項目名】図11
【補正方法】変更
【補正内容】
【図11】

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】 中央処理ユニット(以下CPUという)
    と、該CPUによってアクセス可能な不揮発性メモリ
    と、前記CPUに関連して設けられた揮発性ワーキング
    メモリとを備えていて、前記不揮発性メモリに複数のデ
    ータ記録が格納されているコンピュータシステムにおい
    て、データをソートし格納するための方法であって、 前記不揮発性メモリから前記データ記録を読み出し、前
    記揮発性ワーキングメモリに格納する工程と、 前記揮発性ワーキングメモリに格納された各データ記録
    に対して、メモリポインタとキー値とを含む独自のデー
    タ記録識別子をそれぞれ割り当てる工程と、 前記揮発性ワーキングメモリにおいてソートツリーを初
    期化する工程であって、該ソートツリーが前記揮発性ワ
    ーキングメモリにおけるそれぞれの記憶位置に割り当て
    られた複数のノードを含み、該ノードが階層構造状に配
    置された複数の外部ノードと複数の内部ノードと1つの
    ルートノードとを含んでおり、この初期化する工程が、
    前記外部ノードに初期値を関連づけることと、前記内部
    ノードの各々に対して前記外部ノードの1つを関連づけ
    る敗者属性を割り当て、残りの1つの前記外部ノードに
    前記ルートノードを関連づけることとを含んでいること
    と、 前記データ記録識別子を初期化された前記ソートツリー
    の前記外部ノードに順次導入する工程であって、1番目
    の前記データ記録識別子を前記ルートノードに関連付け
    られた外部ノードに導入し、その後の前記データ記録識
    別子を連続的に隣接した前記外部ノードに導入する工程
    と、 最後の前記データ記録識別子が前記ソートツリーに導入
    された後、データ記録識別子を含まない1つもしくは複
    数の前記外部ノードまたは内部ノードを削除するため
    に、前記ソートツリーを再定義する工程と、 前記ルートノードに至るまで前記ソートツリー全体にわ
    たって前記キー値を比較し、前記ルートノードから前記
    データ記録識別子を抽出し、関連したメモリポインタを
    含む前記データ記録識別子を、その抽出順によって決定
    される順序で前記揮発性ワーキングメモリに格納するこ
    とによって、前記データ記録識別子をソートする工程
    と、 ソートされた前記メモリポインタに従って前記揮発性ワ
    ーキングメモリから前記データ記録を読み出し、該読み
    出したデータ記録を、ソートされた前記キー値の順序で
    前記不揮発性メモリに格納する工程とを備える方法。
  2. 【請求項2】 前記データ記録識別子が、前記ソートツ
    リーを左から右に横切る方向に、該ソートツリーの複数
    の外部ノードに順次導入される請求項1に記載の方法。
  3. 【請求項3】 前記ソートツリーを再定義する工程が、 データ記録識別子を含むすべての前記ノードに直接接続
    される、該ソートツリーにおける最下位の内部ノードを
    決定することと、 前記ルートノードを示すよう前記最下位の内部ノードを
    再定義することと、 再定義された前記ノードに直接接続されないすべての前
    記ノードを除去することによって、前記ソートツリーを
    切り取ることとを含む請求項1に記載の方法。
  4. 【請求項4】 前記初期値が−∞であり、前記ソートす
    る工程が、昇順にソートする請求項1に記載の方法。
  5. 【請求項5】 前記初期値が+∞であり、前記ソートす
    る工程が、降順にソートする請求項1に記載の方法。
  6. 【請求項6】 Nが前記外部ノードの数であるとした場
    合、前記初期化されたソートツリーがN個のノードの高
    さを有し、さらに、Xが前記ソートツリーに入力された
    データ記録の数によって決定されるものであるとした場
    合、前記再定義する工程が、前記ソートツリーの高さを
    N−X個のノードに減少するものである請求項1に記載
    の方法。
  7. 【請求項7】 前記初期化されたソートツリーの高さが
    予め決定されている請求項6に記載の方法。
  8. 【請求項8】 前記敗者属性を割り当てる工程が、前記
    ソートツリーを上昇する順序において、敗者の前記外部
    ノードを前記内部ノードに割り当てることからなる請求
    項1に記載の方法。
  9. 【請求項9】 前記初期化する工程が、対称形のソート
    ツリーを形成するよう前記外部ノードをバランスさせる
    ことからなる請求項1に記載の方法。
  10. 【請求項10】 中央処理ユニット(以下CPUとい
    う)と、該CPUによってアクセス可能な不揮発性メモ
    リと、前記CPUに関連した揮発性ワーキングメモリと
    を備えていて、前記不揮発性メモリに複数のデータ記録
    が格納されたコンピュータシステムにおいて、データを
    ソートし格納する方法であって、 前記不揮発性メモリから前記データ記録を読み出し、前
    記揮発性ワーキングメモリに格納する工程と、 前記揮発性ワーキングメモリに格納された各データ記録
    に固有のデータ記録識別子を割り当てる工程と、 前記揮発性ワーキングメモリにおいてソートツリーを初
    期化する工程であって、該ソートツリーが前記揮発性ワ
    ーキングメモリにおけるそれぞれの記憶位置に割り当て
    られた複数のノードを含み、該ノードが階層構造状に配
    置された複数の外部ノードと複数の内部ノードと1つの
    ルートノードとを含んでおり、この初期化する工程が、
    前記外部ノードに第1の所定値を関連づけることと、前
    記内部ノードの各々に対して前記外部ノードの1つを関
    連づける敗者属性を割り当て、残りの1つの前記外部ノ
    ードに前記ルートノードを関連づけることとを含んでい
    ることと、 前記データ記録識別子を初期化された前記ソートツリー
    の前記外部ノードに順次導入する工程であって、1番目
    の前記データ記録識別子を前記ルートノードに関連付け
    られた外部ノードに導入し、その後の前記データ記録識
    別子を連続的に隣接した複数の前記外部ノードに導入す
    るものであり、前記データ記録識別子を前記ソートツリ
    ーに導入する際、前記第1の所定値を該ソートツリーか
    ら順次除去する工程と、 最後の前記データ記録識別子が前記ソートツリーに導入
    された後、データ記録識別子を含まない前記内部ノード
    の一部を削除し、残りのすべての第1の所定値を除去し
    第2の所定値で置き換えることによって、前記ソートツ
    リーを再定義する工程と、 前記ルートノードに至るまで前記ソートツリー全体にわ
    たって前記データ記録を比較し、前記ルートノードから
    前記データ記録識別子を抽出し、抽出した前記データ記
    録識別子を、その抽出順によって決定される順序で前記
    揮発性ワーキングメモリに格納することによって、前記
    データ記録識別子をソートする工程と、 前記揮発性ワーキングメモリから前記データ記録を読み
    出し、該読み出したデータ記録を、ソートされた前記識
    別子の順序で、前記不揮発性メモリに格納する工程とを
    備えた方法。
  11. 【請求項11】 前記データ記録識別子が、ソートす
    べき前記データ記録の特性を示すソートキーと、各前記
    データ記録ごとの、前記揮発性メモリにおける固有の記
    憶位置を示すポインタとを含み、前記ソートする工程
    が、前記ソートキーの値を比較することに基づいてソー
    トすることからなる請求項10に記載の方法。
  12. 【請求項12】 前記第1の所定値が−∞であり、前記
    第2の所定値が+∞であり、前記ソートする工程が昇順
    にソートする請求項10に記載の方法。
  13. 【請求項13】 前記第1の所定値が+∞であり、前記
    第2の所定値が−∞であり、前記ソートする工程が降順
    にソートする請求項10に記載の方法。
  14. 【請求項14】 前記第1の所定値が、前記データ記録
    識別子との比較において勝者となるよう選択されている
    請求項10に記載の方法。
  15. 【請求項15】 前記第1の所定値が、前記データ記録
    識別子との比較において敗者となるよう選択されている
    請求項10に記載の方法。
  16. 【請求項16】 前記敗者属性を割り当てる工程が、前
    記ソートツリーを昇順に、敗者側の前記外部ノードを前
    記内部ノードに割り当てることからなる請求項10に記
    載の方法。
  17. 【請求項17】 中央処理ユニット(以下CPUとい
    う)と、該CPUによってアクセス可能な不揮発性メモ
    リと、前記CPUに関連した揮発性ワーキングメモリと
    を備えていて、前記不揮発性メモリに複数のデータ記録
    が格納されたコンピュータシステムにおいて、データを
    ソートし格納する方法であって、 前記不揮発性メモリから前記データ記録を読み出し、前
    記揮発性ワーキングメモリに格納する工程と、 前記揮発性ワーキングメモリに格納された各データ記録
    に固有のデータ記録識別子を割り当てる工程と、 前記揮発性ワーキングメモリにおいてソートツリーを作
    成し初期化する工程であって、該ソートツリーが前記揮
    発性ワーキングメモリにおけるそれぞれの記憶位置に割
    り当てられた複数のノードを含み、該ノードが階層構造
    状に配置された複数の外部ノードと複数の内部ノードと
    1つのルートノードとを含んでおり、前記初期化する工
    程が、データ記録が追加されるのに伴って前記ソートツ
    リーにノードを追加するように、前記ソートツリーに対
    して前記データ記録識別子を登録することと組合わせて
    実行されることと、 前記ルートノードに至るまで前記ソートツリー全体にわ
    たって前記データ記録を比較することによって、前記デ
    ータ記録識別子をソートする工程と、 前記揮発性ワーキングメモリから前記データ記録を読み
    出し、該読み出したデータ記録を、ソートされた前記識
    別子の順序で、前記不揮発性メモリに格納する工程とと
    を備える方法。
  18. 【請求項18】 前記データ記録識別子が、ソートす
    べき前記データ記録の特性を示すソートキーと、各前記
    データ記録ごとの、前記揮発性メモリにおける固有の記
    憶位置を示すポインタとを含み、前記ソートする工程
    が、前記ソートキーの値を比較することに基づいてソー
    トすることからなる請求項17に記載の方法。
  19. 【請求項19】 前記ソートツリーを作成し初期化する
    工程が、 前記外部ノードを順次初期化し、前記データ記録を前記
    外部ノードに順序導入する工程であって、1番目の前記
    データ記録識別子を1番目に作成された前記外部ノード
    に導入し、その後の前記データ記録識別子を連続して作
    成された複数の前記外部ノードに導入する工程と、 前記複数の外部ノードの直ぐ上の内部ノードを初期化す
    る工程と、 初期値を前記内部ノードに関連づける工程と、 前記外部ノードが追加されるのに伴って再定義される前
    記ルートノードを指示するノードを割り当てる工程とを
    含む請求項17に記載の方法。
  20. 【請求項20】 初期化された前記ソートツリーの高さ
    が前記初期化する工程によって決定される請求項17に
    記載の方法。
  21. 【請求項21】 中央処理ユニット(以下CPUとい
    う)と、揮発性ワーキングメモリと、複数のデータ記録
    を格納した不揮発性メモリと、コードを読み出す手段と
    を備えたコンピュータシステムに使用される、機械読出
    し可能なコードを記録したデータ記憶媒体であって、 前記不揮発性メモリから前記データ記録を読み出し、該
    データ記録を前記揮発性ワーキングメモリに格納するよ
    う、前記CPUに対して指示する手段と、 前記揮発性ワーキングメモリに格納された各データ記録
    に固有のデータ記録識別子を割り当てるよう、前記CP
    Uに対して指示する手段と、 前記揮発性ワーキングメモリにおいてソートツリーを作
    成し初期化するよう、前記CPUに対して指示する手段
    であって、前記ソートツリーが前記揮発性ワーキングメ
    モリにおけるそれぞれの記憶位置に割り当てられた複数
    のノードを含み、前記ノードが複数の外部ノードと複数
    の内部ノードと1つのルートノードとを含んでおり、該
    手段が、データ記録が追加されるのに伴って前記ソート
    ツリーにノードを追加するように、前記データ記録識別
    子を前記ソートツリーに登録することと組合わせて前記
    ツリーを作成し初期化するよう前記CPUに対して指示
    するものであることと、 前記ルートノードに至るまで前記ソートツリー全体にわ
    たって前記データ記録を比較することによって、前記デ
    ータ記録識別子をソートするよう、前記CPUに対して
    指示する手段と、 前記揮発性ワーキングメモリから前記データ記録を読み
    出し、該読み出したデータ記録をソートされた前記識別
    子の順序で、前記不揮発性メモリに格納するよう、前記
    CPUに対して指示する手段とを具備したデータ記憶媒
    体。
  22. 【請求項22】 前記コードが磁束反転の形で形成され
    ている請求項21に記載のデータ記憶媒体。
  23. 【請求項23】 前記コードが前記媒体の光学的反射度
    の変化の形で形成されている請求項21に記載のデータ
    記憶媒体。
JP7132916A 1994-05-02 1995-05-02 コンピュータシステムにおいてデータをソートし格納するための方法およびデータ記憶媒体 Pending JPH0844537A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/236,513 US5619693A (en) 1994-05-02 1994-05-02 Method for sorting and storing data employing dynamic sort tree reconfiguration in volatile memory
US08/236,513 1994-05-02

Publications (1)

Publication Number Publication Date
JPH0844537A true JPH0844537A (ja) 1996-02-16

Family

ID=22889831

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7132916A Pending JPH0844537A (ja) 1994-05-02 1995-05-02 コンピュータシステムにおいてデータをソートし格納するための方法およびデータ記憶媒体

Country Status (2)

Country Link
US (2) US5619693A (ja)
JP (1) JPH0844537A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001038967A1 (fr) * 1999-11-22 2001-05-31 Turbo Data Laboratories, Inc. Systeme de traitement de l'information
CN110347336A (zh) * 2019-06-10 2019-10-18 华中科技大学 一种基于nvm与ssd混合存储结构的键值存储系统

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619693A (en) * 1994-05-02 1997-04-08 Tandem Computers Incorporated Method for sorting and storing data employing dynamic sort tree reconfiguration in volatile memory
US5852826A (en) * 1996-01-26 1998-12-22 Sequent Computer Systems, Inc. Parallel merge sort method and apparatus
JPH1032495A (ja) * 1996-07-18 1998-02-03 Sony Corp データ処理装置および方法
US5842197A (en) * 1996-08-29 1998-11-24 Oracle Corporation Selecting a qualified data repository to create an index
US5978795A (en) * 1997-01-14 1999-11-02 Microsoft Corporation Temporally ordered binary search method and system
US5873074A (en) * 1997-04-18 1999-02-16 Informix Software, Inc. Applying distinct hash-join distributions of operators to both even and uneven database records
US6282541B1 (en) * 1997-07-28 2001-08-28 International Business Machines Corporation Efficient groupby aggregation in tournament tree sort
JP3344559B2 (ja) * 1998-06-19 2002-11-11 三菱電機株式会社 マージソート処理装置
US6952741B1 (en) 1999-06-30 2005-10-04 Computer Sciences Corporation System and method for synchronizing copies of data in a computer system
US6925468B1 (en) * 1999-10-29 2005-08-02 Computer Sciences Corporation Configuring systems for generating business transaction reports using processing relationships among entities of an organization
US7353196B1 (en) 1999-10-29 2008-04-01 Computer Sciences Corporation Configuring dynamic database packageset switching for use in processing business transactions
US7546304B1 (en) 1999-10-29 2009-06-09 Computer Sciences Corporation Configuring keys for use in processing business data
US7571171B1 (en) 1999-10-29 2009-08-04 Computer Sciences Corporation Smart trigger for use in processing business transactions
US7693844B1 (en) 1999-10-29 2010-04-06 Computer Sciences Corporation Configuring processing relationships among entities of an organization
US7363264B1 (en) 1999-10-29 2008-04-22 Computer Sciences Corporation Processing business transactions using dynamic database packageset switching
US7526487B1 (en) 1999-10-29 2009-04-28 Computer Sciences Corporation Business transaction processing systems and methods
EP1148426A1 (en) * 2000-04-17 2001-10-24 Gladitz, Wilhelm A method for constructing objects in a computing environment
US20030061191A1 (en) * 2001-09-21 2003-03-27 International Business Machines Corporation Replacement selection with duplicate key handling
US7451168B1 (en) 2003-06-30 2008-11-11 Data Domain, Inc. Incremental garbage collection of data in a secondary storage
US7424498B1 (en) 2003-06-30 2008-09-09 Data Domain, Inc. Probabilistic summary data structure based encoding for garbage collection
US20050108063A1 (en) * 2003-11-05 2005-05-19 Madill Robert P.Jr. Systems and methods for assessing the potential for fraud in business transactions
US7483906B2 (en) * 2004-04-14 2009-01-27 Microsoft Corporation Method and system for renaming consecutive keys in a B-tree
US20060059021A1 (en) * 2004-09-15 2006-03-16 Jim Yulman Independent adjuster advisor
US8234309B2 (en) 2005-01-31 2012-07-31 International Business Machines Corporation Method for automatically modifying a tree structure
US8478775B2 (en) * 2008-10-05 2013-07-02 Microsoft Corporation Efficient large-scale filtering and/or sorting for querying of column based data encoded structures
US8533423B2 (en) * 2010-12-22 2013-09-10 International Business Machines Corporation Systems and methods for performing parallel multi-level data computations
US9495418B2 (en) 2013-08-07 2016-11-15 International Business Machines Corporation Scalable acceleration of database query operations
US9830354B2 (en) 2013-08-07 2017-11-28 International Business Machines Corporation Accelerating multiple query processing operations
US9619499B2 (en) * 2013-08-07 2017-04-11 International Business Machines Corporation Hardware implementation of a tournament tree sort algorithm
US9251218B2 (en) 2013-08-07 2016-02-02 International Business Machines Corporation Tunable hardware sort engine for performing composite sorting algorithms
US10310813B2 (en) 2014-12-29 2019-06-04 International Business Machines Corporation Hardware implementation of a tournament tree sort algorithm using an external memory
US11354094B2 (en) 2017-11-30 2022-06-07 International Business Machines Corporation Hierarchical sort/merge structure using a request pipe
US10936283B2 (en) * 2017-11-30 2021-03-02 International Business Machines Corporation Buffer size optimization in a hierarchical structure
US10896022B2 (en) 2017-11-30 2021-01-19 International Business Machines Corporation Sorting using pipelined compare units
US11048475B2 (en) 2017-11-30 2021-06-29 International Business Machines Corporation Multi-cycle key compares for keys and records of variable length
CN108647302B (zh) * 2018-05-09 2022-03-25 联想(北京)有限公司 一种数据库排序方法及电子设备
US10691412B2 (en) 2018-08-31 2020-06-23 International Business Machines Corporation Parallel sort accelerator sharing first level processor cache
US10725738B2 (en) 2018-08-31 2020-07-28 International Business Machines Corporation Adaptive sort accelerator sharing first level processor cache
US10579332B1 (en) 2018-08-31 2020-03-03 International Business Machines Corporation Hardware sort accelerator sharing first level processor cache

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4575798A (en) * 1983-06-03 1986-03-11 International Business Machines Corporation External sorting using key value distribution and range formation
US5146571A (en) * 1988-03-28 1992-09-08 Emc Corporation Remapping defects in a storage system through the use of a tree structure
JPH02130647A (ja) * 1988-11-11 1990-05-18 Toshiba Corp 索引木構造の更新方式
US5121493A (en) * 1990-01-19 1992-06-09 Amalgamated Software Of North America, Inc. Data sorting method
US5287494A (en) * 1990-10-18 1994-02-15 International Business Machines Corporation Sorting/merging tree for determining a next tournament champion in each cycle by simultaneously comparing records in a path of the previous tournament champion
US5560006A (en) * 1991-05-15 1996-09-24 Automated Technology Associates, Inc. Entity-relation database
US5355478A (en) * 1991-12-23 1994-10-11 International Business Machines Corporation Method for avoiding cache misses during external tournament tree replacement sorting procedures
US5440734A (en) * 1993-09-14 1995-08-08 International Business Machines Corporation System for MSD radix sort bin storage management
US5487164A (en) * 1993-09-14 1996-01-23 International Business Machines Corporation Distribution-based replacement selection sorting system
US5619693A (en) * 1994-05-02 1997-04-08 Tandem Computers Incorporated Method for sorting and storing data employing dynamic sort tree reconfiguration in volatile memory
US5487166A (en) * 1994-09-19 1996-01-23 Amdahl Corporation Computer with two-dimensional merge tournament sort using offset-value coding
US5859981A (en) * 1995-07-12 1999-01-12 Super P.C., L.L.C. Method for deadlock-free message passing in MIMD systems using routers and buffers

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001038967A1 (fr) * 1999-11-22 2001-05-31 Turbo Data Laboratories, Inc. Systeme de traitement de l'information
US6886082B1 (en) 1999-11-22 2005-04-26 Turbo Data Laboratories, Inc. Information processing system
CN110347336A (zh) * 2019-06-10 2019-10-18 华中科技大学 一种基于nvm与ssd混合存储结构的键值存储系统

Also Published As

Publication number Publication date
US6385612B1 (en) 2002-05-07
US5619693A (en) 1997-04-08

Similar Documents

Publication Publication Date Title
JPH0844537A (ja) コンピュータシステムにおいてデータをソートし格納するための方法およびデータ記憶媒体
US5222235A (en) Databases system for permitting concurrent indexing and reloading of data by early simulating the reload process to determine final locations of the data
EP2450809B1 (en) Method for extracting information from a database
US4817036A (en) Computer system and method for data base indexing and information retrieval
US7558802B2 (en) Information retrieving system
US5117495A (en) Method of sorting data records
US7246124B2 (en) Methods of encoding and combining integer lists in a computer system, and computer software product for implementing such methods
EP0339901A2 (en) Improved version management tool
JPS6254329A (ja) フアイル装置へのデ−タの登録方法および検索方法
EA006562B1 (ru) Способ кодирования ключей в базе данных и база данных
EP0487331A2 (en) Directory management system
US6675171B2 (en) Memory based on a digital trie structure
AU2004225060A1 (en) A computer implemented compact 0-complete tree dynamic storage structure and method of processing stored data
US5398335A (en) Virtually updating data records by assigning the update fractional addresses to maintain an ordinal relationship without renumbering original records
JP3515810B2 (ja) ソート処理方法および装置
RU2285276C2 (ru) Способ и устройство сортировки на основе в-дерева для больших объемов сейсмических данных
JPH02297284A (ja) 文書処理システム
EP2003577A2 (en) Methods of encoding and combining integers lists in a computer system, computer system and software product for implementing such methods
JPH0823865B2 (ja) デ−タ検索方法および装置
JPS6127771B2 (ja)
US5479657A (en) System and method for sorting count information by summing frequencies of usage and using the sums to determine write addresses
CN115374127B (zh) 数据存储方法及装置
JP2001331353A (ja) データベースへのデータ入力システム及びそのプログラムを記憶した記録媒体
JP3578501B2 (ja) 文書検索方法及び装置
JP3064307B2 (ja) エキスパートシステム構築方法