US5121493A
Expired / Lapsed
US
⏱️ 0.0 years remaining
Data sorting method
Assignee: Amalgamated Software of North America Inc
•
Filing: 1990-01-19
•
Granted: 1992-06-09
•
Expires: 2010-01-19
Abstract
Abstract A method for sorting data in a computer data storage system that has particular advantages in implementing a key index tree structure. The sorting method uses buffer-size substrings to sort strings of key records into a linked list structure that can be directly transformed into an index tree. The sorting method also may be used for sorting large sets of data records in place on a computer storage system.
Inventors
- 👤 David E. Ferguson
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-11-04 21:45
CPC Classifications
G; G06; G06F; G06F7/00; G06F7/22; G06F7/24; G06F2207/00; G06F2207/22; G06F2207/224; Y; Y10; Y10S; Y10S707/00; Y10S707/99931; Y10S707/99937
Claims Analysis
Total Claims: 24
Claim 1
Independent Claim
410 words
A method for logically sorting data on a storage system using a computer having (1) means for reading data from and writing data to the storage system, and (2) memory means for temporarily storing data in at least one buffer, including the steps of: a. pre-sorting the original data into a plurality of data strings each comprising a plurality of substrings, including the steps of: (1) reading part of the data from the storage system into a pre-sort buffer; (2) sorting the data in the pre-sort buffer; (3) generating substring pointer fields for the sorted data in the pre-sort buffer at intervals corresponding to a determined substring length, with each substring pointer field being set to indicate the location in the storage system of the next logical substring; (4) writing the sorted data in the pre-sort buffer to the storage system as a data string; (5) repeating steps a.(1) through a.(4) for all of the original data on the storage system, thereby generating a plurality of sorted data strings, each comprising a plurality of substrings, stored on the storage system; b. merging the data in place on the storage system into a set of logically linked, sorted substrings, including the steps of: (1) allocating in the memory means at least two input buffers and one output buffer each of a length sufficient to store a substring; (2) establishing a substring storage area tracking means for indicating available storage areas on the storage system from which substrings have been previously read; (3) reading the data from a substring from respective ones of the plurality of data strings into respective ones of the input buffers; (4) merging the data of the substrings in the input buffers into sorted order and storing the sorted data in the output buffer; (5) when the output buffer is full of sorted data, writing the data in the output buffer as a new substring to the storage system in an available storage area, determined from the substring storage area tracking means, and changing the substring pointer field corresponding to the new substring to indicate the location of the next available storage area, determined from the substring storage area tracking means; (6) repeating steps b. (3) through b. (5) for all substrings of the plurality of data strings and all new substrings until all of the data therein is merged, thereby generating a set of substrings linked in sorted logical order by means of the substring pointer fields.
Claim 2
Independent Claim
410 words
A method for logically sorting data on a storage system using a computer having (1) means for reading data from and writing data to the storage system, and (2) memory means for temporarily storing data in at least one buffer, including the steps of: a. pre-sorting the original data into a plurality of data strings each comprising a plurality of substrings, including the steps of: (1) reading part of the data from the storage system into a pre-sort buffer; (2) sorting the data in the pre-sort buffer; (3) generating substring pointer fields for the sorted data in the pre-sort buffer at intervals corresponding to a determined substring length, with each substring pointer field being set to indicate the location in the storage system of the next logical substring; (4) writing the sorted data in the pre-sort buffer to the storage system as a data string; (5) repeating steps a.(1) through a.(4) for all of the original data on the storage system, thereby generating a plurality of sorted data strings, each comprising a plurality of substrings, stored on the storage system; b. merging the data in place on the storage system into a set of logically linked, sorted substrings, including the steps of: (1) allocating in the memory means at least two input buffers and one output buffer each of a length sufficient to store a substring; (2) establishing a substring storage area tracking means for indicating available storage areas on the storage system from which substrings have been previously read; (3) reading the data from a substring from respective ones of the plurality of data strings into respective ones of the input buffers; (4) merging the data of the substrings in the input buffers into sorted order and storing the sorted data in the output buffer; (5) when the output buffer is full of sorted data, writing the data in the output buffer as a new substring to the storage system in an available storage area, determined from the substring storage area tracking means, and changing the substring pointer field corresponding to the new substring to indicate the location of the next available storage area, determined from the substring storage area tracking means; (6) repeating steps b. (3) through b. (5) for all substrings of the plurality of data strings and all new substrings until all of the data therein is merged, thereby generating a set of substrings linked in sorted logical order by means of the substring pointer fields.
Claim 3
Dependent Claim
39 words
The method of claim 1 for logically sorting data on a storage system, wherein the number of input buffers is N, where N is greater than or equal to 2, and the step of merging data uses N-way merging.
Claim 4
Dependent Claim
17 words
The method of claim 2 for logically sorting data on a storage system, wherein N is 3.
Claim 5
Dependent Claim
17 words
The method of claim 2 for logically sorting data on a storage system, wherein N is 4.
Claim 6
Dependent Claim
41 words
The method of claim 1 for logically sorting data on a storage system, wherein the optimum substring length is determined by dividing the amount of available working space in the memory means by the number of allocated input buffers plus one.
Claim 7
Dependent Claim
22 words
The method of claim 1 for logically sorting data on a storage system, wherein the substring pointer fields contain relative record numbers.
Claim 8
Dependent Claim
30 words
The method of claim 1 for logically sorting data on a storage system, wherein the generated substring pointer fields are written to the storage system with the corresponding data strings.
Claim 9
Independent Claim
623 words
A method for generating a key index multi-node tree structure for data on a storage system using a computer having (1) means for reading data from and writing data to the storage system, and (2) memory means for temporarily storing data in at least one buffer, including the steps of: a. pre-sorting the original data into a plurality of data strings each comprising a plurality of substrings, including the steps of: (1) reading part of the data from the storage system into a pre-sort buffer; (2) sorting the data in the pre-sort buffer; (3) generating substring pointer fields for the sorted data in the pre-sort buffer at intervals corresponding to a determined substring length, with each substring pointer field being set to indicate the location in the storage system of the next logical substring; (4) writing the sorted data in the pre-sort buffer to the storage system as a data string; (5) repeating steps a. (1) through a. (4) for all of the original data on the storage system, thereby generating a plurality of sorted data strings, each comprising a plurality of substrings, stored on the storage system; b. merging the data in place on the storage system into a set of logically linked, sorted substrings, including the steps of: (1) allocating in the memory means at least two input buffers and one output buffer each of a length sufficient to store a substring; (2) establishing a substring storage area tracking means for indicating available storage areas on the storage system from which substrings have been previously read; (3) reading the data from a substring from respective ones of the plurality of data strings into respective ones of the input buffers; (4) merging the data of the substrings in the input buffers into sorted order and storing the sorted data in the output buffer; (5) when the output buffer is full of sorted data, writing the data in the output buffer as a new substring to the storage system in an available storage area, determined from the substring storage area tracking means, and changing the substring pointer field corresponding to the new substring to indicate the location of the next available storage area, determined from the substring storage area tracking means; (6) repeating steps b. (3) through b. (5) for all substrings of the plurality of data strings and all new substrings until all of the data therein is merged, thereby generating a set of substrings linked in sorted logical order by means of the substring pointer fields; c. generating a key index multi-node tree structure for the data in the sorted set of substrings stored on the storage system, including the steps of: (1) establishing at least a first level branch node table for temporarily storing location reference information indicative of the location of selected data in the storage system; (2) reading into a tree index buffer the data from at least one node of data in the storage system, a node initially comprising at least one substring of the set of linked substrings; (3) generating a location reference for a selected portion of the data in the tree index buffer and storing the location reference in the first level of the branch node table; (4) when the first level branch node table is full, writing the contents of the branch node table to the storage system as a generated node of the tree structure; (5) repeating steps c. (2) through c. (4) for all nodes in the storage system containing linked substrings, wherein the nodes are read in sorted order; (6) repeating steps c. (2) through c. (4) for all generated nodes of the tree structure until a single root node for the tree structure is written to the storage system.
Claim 10
Independent Claim
623 words
A method for generating a key index multi-node tree structure for data on a storage system using a computer having (1) means for reading data from and writing data to the storage system, and (2) memory means for temporarily storing data in at least one buffer, including the steps of: a. pre-sorting the original data into a plurality of data strings each comprising a plurality of substrings, including the steps of: (1) reading part of the data from the storage system into a pre-sort buffer; (2) sorting the data in the pre-sort buffer; (3) generating substring pointer fields for the sorted data in the pre-sort buffer at intervals corresponding to a determined substring length, with each substring pointer field being set to indicate the location in the storage system of the next logical substring; (4) writing the sorted data in the pre-sort buffer to the storage system as a data string; (5) repeating steps a. (1) through a. (4) for all of the original data on the storage system, thereby generating a plurality of sorted data strings, each comprising a plurality of substrings, stored on the storage system; b. merging the data in place on the storage system into a set of logically linked, sorted substrings, including the steps of: (1) allocating in the memory means at least two input buffers and one output buffer each of a length sufficient to store a substring; (2) establishing a substring storage area tracking means for indicating available storage areas on the storage system from which substrings have been previously read; (3) reading the data from a substring from respective ones of the plurality of data strings into respective ones of the input buffers; (4) merging the data of the substrings in the input buffers into sorted order and storing the sorted data in the output buffer; (5) when the output buffer is full of sorted data, writing the data in the output buffer as a new substring to the storage system in an available storage area, determined from the substring storage area tracking means, and changing the substring pointer field corresponding to the new substring to indicate the location of the next available storage area, determined from the substring storage area tracking means; (6) repeating steps b. (3) through b. (5) for all substrings of the plurality of data strings and all new substrings until all of the data therein is merged, thereby generating a set of substrings linked in sorted logical order by means of the substring pointer fields; c. generating a key index multi-node tree structure for the data in the sorted set of substrings stored on the storage system, including the steps of: (1) establishing at least a first level branch node table for temporarily storing location reference information indicative of the location of selected data in the storage system; (2) reading into a tree index buffer the data from at least one node of data in the storage system, a node initially comprising at least one substring of the set of linked substrings; (3) generating a location reference for a selected portion of the data in the tree index buffer and storing the location reference in the first level of the branch node table; (4) when the first level branch node table is full, writing the contents of the branch node table to the storage system as a generated node of the tree structure; (5) repeating steps c. (2) through c. (4) for all nodes in the storage system containing linked substrings, wherein the nodes are read in sorted order; (6) repeating steps c. (2) through c. (4) for all generated nodes of the tree structure until a single root node for the tree structure is written to the storage system.
Claim 11
Dependent Claim
83 words
The method of claim 8 for generating a key index multi-node tree structure for data, further including the steps of: a. generating a location reference for a selected portion of the data in a previous level branch node table and storing the location reference in a next level branch node table; b. when the next level branch node table is full, writing the contents of the next level branch node table to the storage system as a generated node of the tree structure.
Claim 12
Dependent Claim
41 words
The method of claim 9 for generating a key index multi-node tree structure for data, wherein the number of input buffers is N, where N is greater than or equal to 2, and the step of merging data uses N-way merging.
Claim 13
Dependent Claim
19 words
The method of claim 10 for generating a key index multi-node tree structure for data, wherein N is 3.
Claim 14
Dependent Claim
19 words
The method of claim 10 for generating a key index multi-node tree structure for data, wherein N is 4.
Claim 15
Dependent Claim
43 words
The method of claim 8 for generating a key index multi-node tree structure for data, wherein the optimum substring length is determined by dividing the amount of available working space in the memory means by the number of allocated input buffers plus one.
Claim 16
Dependent Claim
24 words
The method of claim 8 for generating a key index multi-node tree structure for data, wherein the substring pointer fields contain relative record numbers.
Claim 17
Dependent Claim
32 words
The method of claim 8 for generating a key index multi-node tree structure for data, wherein the generated substring pointer fields are written to the storage system with the corresponding data strings.
Claim 18
Independent Claim
516 words
A method for physically sorting data on a storage system using a computer having (1) means for reading data from and writing data to the storage system, and (2) memory means for temporarily storing data in at least one buffer, including the steps of: a. pre-sorting the original data into a plurality of data strings each comprising a plurality of substrings, including the steps of: (1) reading part of the data from the storage system into a pre-sort buffer; (2) sorting the data in the pre-sort buffer; (3) generating substring pointer fields for the sorted data in the pre-sort buffer at intervals corresponding to a determined substring length, with each substring pointer field being set to indicate the location in the storage system of the next logical substring; (4) writing the sorted data in the pre-sort buffer to the storage system as a data string; (5) repeating steps a. (1) through a. (4) for all of the original data on the storage system, thereby generating a plurality of sorted data strings, each comprising a plurality of substrings, stored on the storage system; b. merging the data in place on the storage system into a set of logically linked, sorted substrings, including the steps of: (1) allocating in the memory means at least two input buffers and one output buffer each of a length sufficient to store a substring; (2) establishing a substring storage area tracking means for indicating available storage areas on the storage system from which substrings have been previously read; (3) reading the data from a substring from respective ones of the plurality of data strings into respective ones of the input buffers; (4) merging the data of the substrings in the input buffers into sorted order and storing the sorted data in the output buffer; (5) when the output buffer is full of sorted data, writing the data in the output buffer as a new substring to the storage system in an available storage area, determined from the substring storage area tracking means, and changing the substring pointer field corresponding to the new substring to indicate the location of the next available storage area, determined from the substring storage area tracking means; (6) repeating steps b. (3) through b. (5) for all substrings of the plurality of data strings and all new substrings until all of the data therein is merged, thereby generating a set of substrings linked in sorted logical order by means of the substring pointer fields; c. physically sorting the set of linked substrings, including the steps of: (1) reading into the memory means a substring of the set of linked substrings; (2) reading into the memory means a next substring in the location indicated by the value of the substring pointer field of the previous substring; (3) writing the previous substring in the location indicated by the value of the substring pointer field of such substring; (4) repeating steps c. (2) and c. (3) for such next substring, and for each subsequent substring of the set of linked substrings, thereby generating a set of substrings in physically sorted order.
Claim 19
Independent Claim
516 words
A method for physically sorting data on a storage system using a computer having (1) means for reading data from and writing data to the storage system, and (2) memory means for temporarily storing data in at least one buffer, including the steps of: a. pre-sorting the original data into a plurality of data strings each comprising a plurality of substrings, including the steps of: (1) reading part of the data from the storage system into a pre-sort buffer; (2) sorting the data in the pre-sort buffer; (3) generating substring pointer fields for the sorted data in the pre-sort buffer at intervals corresponding to a determined substring length, with each substring pointer field being set to indicate the location in the storage system of the next logical substring; (4) writing the sorted data in the pre-sort buffer to the storage system as a data string; (5) repeating steps a. (1) through a. (4) for all of the original data on the storage system, thereby generating a plurality of sorted data strings, each comprising a plurality of substrings, stored on the storage system; b. merging the data in place on the storage system into a set of logically linked, sorted substrings, including the steps of: (1) allocating in the memory means at least two input buffers and one output buffer each of a length sufficient to store a substring; (2) establishing a substring storage area tracking means for indicating available storage areas on the storage system from which substrings have been previously read; (3) reading the data from a substring from respective ones of the plurality of data strings into respective ones of the input buffers; (4) merging the data of the substrings in the input buffers into sorted order and storing the sorted data in the output buffer; (5) when the output buffer is full of sorted data, writing the data in the output buffer as a new substring to the storage system in an available storage area, determined from the substring storage area tracking means, and changing the substring pointer field corresponding to the new substring to indicate the location of the next available storage area, determined from the substring storage area tracking means; (6) repeating steps b. (3) through b. (5) for all substrings of the plurality of data strings and all new substrings until all of the data therein is merged, thereby generating a set of substrings linked in sorted logical order by means of the substring pointer fields; c. physically sorting the set of linked substrings, including the steps of: (1) reading into the memory means a substring of the set of linked substrings; (2) reading into the memory means a next substring in the location indicated by the value of the substring pointer field of the previous substring; (3) writing the previous substring in the location indicated by the value of the substring pointer field of such substring; (4) repeating steps c. (2) and c. (3) for such next substring, and for each subsequent substring of the set of linked substrings, thereby generating a set of substrings in physically sorted order.
Claim 20
Dependent Claim
39 words
The method of claim 16 for physically sorting data on a storage system, wherein the number of input buffers is N, where N is greater than or equal to 2, and the step of merging data uses N-way merging.
Claim 21
Dependent Claim
17 words
The method of claim 17 for physically sorting data on a storage system, wherein N is 3.
Claim 22
Dependent Claim
17 words
The method of claim 17 for physically sorting data on a storage system, wherein N is 4.
Claim 23
Dependent Claim
41 words
The method of claim 16 for physically sorting data on a storage system, wherein the optimum substring length is determined by dividing the amount of available working space in the memory means by the number of allocated input buffers plus one.
Claim 24
Dependent Claim
30 words
The method of claim 16 for physically sorting data on a storage system, wherein the generated substring pointer fields are written to the storage system with the corresponding data strings.
References Cited (Backward Citations)
US4209845A
Cited
US4417321A
Cited
US4499555A
Cited
US4628483A
Cited
US4559612A
Cited
US4595995A
Cited
US4567572A
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 1995-06-09 | 1995-12-09 | 1996-06-09 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 1999-06-09 | 1999-12-09 | 2000-06-09 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2003-06-09 | 2003-12-09 | 2004-06-09 | $7700.00 | Window Closed / Lapsed |