Patent US5649181A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5649181A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for indexing database columns with bit vectors

Assignee: Sybase Inc
•
Filing: 1996-04-03
•
Granted: 1997-07-15
•
Expires: 2016-04-03
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A server performs an indexing method of data management to create and maintain indexes more efficiently than existing indexing approaches. The server is disposed between an application program and a DBMS and is coupled to a data base located within the DBMS. The data base has an ordered set of data values stored in memory. Each data value has a bit pattern and an identifier associated therewith. The server creates a plurality of bit vectors such that the number of bit vectors created equals the longest length bit pattern for the values. The server accesses one of the values stored in the data base. Each bit of the bit pattern for the value is then assigned by the server to a unique position in successive bit vectors. The bits are assigned to identical unique positions in each of the successive bit vectors. The server repeats the above-described accessing and assigning steps for each remaining value of the set to form an index of bit vectors for the values.

Inventors

  • 👤 Clark French
  • 👤 Peter W. White

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-30 16:02
CPC Classifications
G; G06; G06Q; G06Q40/00; G06F; G06F16/00; G06F16/20; G06F16/22; G06F16/2228; G06F16/2237; Y; Y10; Y10S; Y10S707/00; Y10S707/99931; Y10S707/99932; Y10S707/99933; Y10S707/99936

Claims Analysis

Total Claims: 51
Claim 1
Independent Claim 242 words
A method for data management in a data processing system comprising the steps of: in a database comprising a database table having data arranged as an ordered set in row and column format, storing said data as a sequence of rows of data records, each data record having data values categorized by column, each data value having a bit pattern of arbitrary length and an identifier associated therewith; creating an index of bit vectors by forming from data records of a particular column a number of bit vectors, each bit vector comprising bit values taken from a single bit position for said particular column of said database table, wherein: (i) the number of bit vectors so created is equal to the length of the longest of the bit patterns for the data values for said particular column; and (ii) the length of each bit vector is equal to the number of data values for said particular column; said creating step including the substeps of: accessing each one of the rows of data records in the database, for the row being accessed assigning to a unique position in successive bit vectors each bit of the bit pattern for the data value of said particular column, each bit being assigned to an identical unique position in each of the successive bit vectors; and compressing data values of said sequence of rows of data records which are also stored in said index of bit vectors.
Claim 2
Independent Claim 242 words
A method for data management in a data processing system comprising the steps of: in a database comprising a database table having data arranged as an ordered set in row and column format, storing said data as a sequence of rows of data records, each data record having data values categorized by column, each data value having a bit pattern of arbitrary length and an identifier associated therewith; creating an index of bit vectors by forming from data records of a particular column a number of bit vectors, each bit vector comprising bit values taken from a single bit position for said particular column of said database table, wherein: (i) the number of bit vectors so created is equal to the length of the longest of the bit patterns for the data values for said particular column; and (ii) the length of each bit vector is equal to the number of data values for said particular column; said creating step including the substeps of: accessing each one of the rows of data records in the database, for the row being accessed assigning to a unique position in successive bit vectors each bit of the bit pattern for the data value of said particular column, each bit being assigned to an identical unique position in each of the successive bit vectors; and compressing data values of said sequence of rows of data records which are also stored in said index of bit vectors.
Claim 3
Dependent Claim 70 words
The method of claim 1 further comprising the steps of: receiving a search value and a search function from an application program; comparing the search value to the index of bit vectors for the values by manipulation of the bit vectors based on the search value and the search function; and producing a resultant bit vector having a bit pattern indicating the identifier of each value satisfying the search function.
Claim 4
Dependent Claim 39 words
The method of claim 2 further comprising the steps of: retrieving from the data base each value associated with each identifier indicated in the bit pattern of the resultant vector; and providing each retrieved value to the application program.
Claim 5
Dependent Claim 48 words
The method of claim 2 further comprising the step of reconstructing each data value associated with each identifier indicated in the bit pattern of the resultant bit vector by selecting each bit, in each successive bit vector of the index, having a unique position corresponding to said identifier.
Claim 6
Dependent Claim 29 words
The method of claim 2 wherein the manipulation of the bit vectors comprises performing Boolean functions on selected bit vectors based on the search value and the search function.
Claim 7
Dependent Claim 31 words
The method of claim 1 wherein the compression step further comprises discarding the ordered set of values from the database and any bit vectors having bit values all equal to zero.
Claim 8
Dependent Claim 15 words
The method of claim 1 wherein the data records comprise medium or high cardinality data.
Claim 9
Dependent Claim 40 words
The method of claim 1 further comprising the steps of: providing another ordered set of values stored in the data base; accessing the other ordered set of values; and forming a B-tree index for the other ordered set of values.
Claim 10
Dependent Claim 17 words
The method of claim 8 wherein the other ordered set of values corresponds to low cardinality data.
Claim 11
Dependent Claim 57 words
The method of claim 8 further comprising the steps of: performing, for each ordered set of values corresponding to medium or high cardinality data, the processing steps necessary to form an index of bit vectors; and performing, for an ordered set of values corresponding to low cardinality data, the processing steps necessary to form a B-tree index.
Claim 12
Dependent Claim 44 words
The method of claim 8 further comprising the step of performing, based on the cardinality of a particular ordered set of values, either the processing steps necessary to form an index of bit vectors or the processing steps necessary to form a B-tree index.
Claim 13
Dependent Claim 329 words
An index method of data management in a data processing system, the method comprising: providing an application program, a database management system and a server; forming an index of bit vectors in the server, the index being formed from an ordered set of data values disposed in a database of the database management system as a plurality of data records arranged in row and column format, each data value disposed in the database having a bit pattern of arbitrary length and an identifier for a particular column associated therewith, the index being formed by: (i) creating a number of bit vectors, wherein the number of bit vectors is equal to the length of the longest of the bit patterns for the data values and the length of each bit vector is equal to the number of data values; (ii) assigning to a unique position in successive bit vectors each bit of the bit pattern for each data value, wherein each bit of the bit pattern for each data value is assigned to identical unique position in each of the successive bit vectors; so that each bit vector comprises an array storing a transposed sequence of bit values derived by taking a single bit value for each record of said database table, each bit vector comprising bit values taken from a single bit position for said particular column of said database table; receiving a search value and a search function from the application program; comparing the search value to the data values assigned into the bit vectors by manipulation of the bit vectors based on the search value and the search function; producing a resultant bit vector having a bit pattern indicating the identifier of one or more data values, thereby indicating that said one or more data values satisfy the search function; and compressing the ordered set of data values disposed in the database by deleting all data values which can be derived from said index of bit vectors.
Claim 14
Dependent Claim 329 words
An index method of data management in a data processing system, the method comprising: providing an application program, a database management system and a server; forming an index of bit vectors in the server, the index being formed from an ordered set of data values disposed in a database of the database management system as a plurality of data records arranged in row and column format, each data value disposed in the database having a bit pattern of arbitrary length and an identifier for a particular column associated therewith, the index being formed by: (i) creating a number of bit vectors, wherein the number of bit vectors is equal to the length of the longest of the bit patterns for the data values and the length of each bit vector is equal to the number of data values; (ii) assigning to a unique position in successive bit vectors each bit of the bit pattern for each data value, wherein each bit of the bit pattern for each data value is assigned to identical unique position in each of the successive bit vectors; so that each bit vector comprises an array storing a transposed sequence of bit values derived by taking a single bit value for each record of said database table, each bit vector comprising bit values taken from a single bit position for said particular column of said database table; receiving a search value and a search function from the application program; comparing the search value to the data values assigned into the bit vectors by manipulation of the bit vectors based on the search value and the search function; producing a resultant bit vector having a bit pattern indicating the identifier of one or more data values, thereby indicating that said one or more data values satisfy the search function; and compressing the ordered set of data values disposed in the database by deleting all data values which can be derived from said index of bit vectors.
Claim 15
Dependent Claim 40 words
The method of claim 12 further comprising the additional steps of: retrieving from the data base each value associated with each identifier indicated in the bit pattern of the resultant vector; and providing each retrieved value to the application program.
Claim 16
Dependent Claim 59 words
The method of claim 12 further comprising the additional steps of: reconstructing each data value associated with each identifier indicated in the bit pattern of the resultant bit vector by selecting each bit, in each successive bit vector of the index, having a unique position corresponding to said identifier; and providing each reconstructed data value to the application program.
Claim 17
Dependent Claim 29 words
The method of claim 12 wherein the manipulation of the bit vectors comprises performing Boolean functions on selected bit vectors based on the search value and the search function.
Claim 18
Dependent Claim 22 words
The method of claim 12 wherein the compression step further comprises discarding any bit vectors having bit values all equal to zero.
Claim 19
Dependent Claim 18 words
The method of claim 12 wherein the ordered set of values corresponds to medium or high cardinality data.
Claim 20
Dependent Claim 42 words
The method of claim 12 further comprising the additional steps of: providing another ordered set of data values stored in the data base; accessing said other ordered set of values; and forming a B-tree index for the other ordered set of values.
Claim 21
Dependent Claim 17 words
The method of claim 18 wherein the other ordered set of values corresponds to low cardinality data.
Claim 22
Dependent Claim 240 words
A database management system comprising: a server having a database comprising an ordered set of data values stored as a plurality of data records arranged in row and column format, each data value having a bit pattern and an identifier associated therewith, the server comprising a memory, and a processor; means for creating a number of bit vectors in the memory, such that the number of bit vectors is equal to the length of the longest of the bit patterns for the data values and the length of each bit vector is equal to the number of data values; means for accessing one of the ordered set of data values stored in the database; means for assigning each successive bit of the bit pattern for the accessed data value to a unique position in successive bit vectors, the bits being assigned into an identical unique position in each of the successive bit vectors, so that each bit vector comprises an array storing a column of bit values created by taking a single bit value at a particular unique bit position of one column for each record of said database table; means for repeating the accessing and assigning steps for each remaining data value to form an index of bit vectors for the data values; and means for compressing the ordered set of data values disposed in the database by eliminating data values which can be derived from said bit vectors.
Claim 23
Dependent Claim 240 words
A database management system comprising: a server having a database comprising an ordered set of data values stored as a plurality of data records arranged in row and column format, each data value having a bit pattern and an identifier associated therewith, the server comprising a memory, and a processor; means for creating a number of bit vectors in the memory, such that the number of bit vectors is equal to the length of the longest of the bit patterns for the data values and the length of each bit vector is equal to the number of data values; means for accessing one of the ordered set of data values stored in the database; means for assigning each successive bit of the bit pattern for the accessed data value to a unique position in successive bit vectors, the bits being assigned into an identical unique position in each of the successive bit vectors, so that each bit vector comprises an array storing a column of bit values created by taking a single bit value at a particular unique bit position of one column for each record of said database table; means for repeating the accessing and assigning steps for each remaining data value to form an index of bit vectors for the data values; and means for compressing the ordered set of data values disposed in the database by eliminating data values which can be derived from said bit vectors.
Claim 24
Dependent Claim 76 words
The data base management system of claim 20 further comprising: means for receiving a search value and a search function from an application program; means for comparing the search value to the index of bit vectors for the values by manipulation of the bit vectors based on the search value and the search function; and means for producing a resultant bit vector having a bit pattern indicating the identifier of each value satisfying the search function.
Claim 25
Dependent Claim 43 words
The data base management system of claim 21 further comprising: means for retrieving from the data base each value associated with each identifier indicated in the bit pattern of the resultant vector; and means for providing each retrieved value to the application program.
Claim 26
Dependent Claim 50 words
The data base management system of claim 21 further comprising means for reconstructing each data value associated with each identifier indicated in the bit pattern of the resultant bit vector by selecting each bit, in each successive bit vector of the index, having a unique position corresponding to said identifier.
Claim 27
Dependent Claim 24 words
The database management system of claim 20 wherein the means for compressing discards all of the ordered set of data values from the database.
Claim 28
Dependent Claim 32 words
The data base management system of claim 21 wherein the manipulation of the bit vectors comprises performing Boolean functions on selected bit vectors based on the search value and the search function.
Claim 29
Dependent Claim 20 words
The data base management system of claim 20 wherein the ordered set of data values corresponds to high cardinality data.
Claim 30
Dependent Claim 39 words
The data base management system of claim 26 further comprising means for accessing another ordered set of data values stored in the data base, and means for forming a B-tree index for the other ordered set of data values.
Claim 31
Dependent Claim 21 words
The data base management system of claim 27 wherein the other ordered set of data values corresponds to low cardinality data.
Claim 32
Independent Claim 316 words
A method for data management in a data processing system comprising the steps of: storing a database comprising data arranged as an ordered set of data values in row and column format, each data value having a bit pattern of arbitrary length and an identifier associated therewith; creating a number of bit vectors, wherein the number of bit vectors is equal to the length of the longest of the bit patterns for the data values and the length of each bit vector is equal to the number of data values, said creating step comprising substeps of: (i) accessing one of the ordered set of data values stormed in the database; (ii) assigning to a unique position in successive bit vectors each bit of the bit pattern for said data value, each bit being assigned to an identical unique position in each of the successive bit vectors; and (iii) repeating the accessing and assigning steps for each remaining data value to form an index of bit vectors for the data values, so that each bit vector comprises an array storing a column of bit values created by taking a single bit value at a particular unique bit position of one column for each row of said database; receiving a search value and a search function from the application program; comparing the search value to the data values assigned into the bit vectors by manipulation of the bit vectors based on the search value and the search function; producing a resultant bit vector having a bit pattern indicating the identifier of one or more data values, thereby indicating that said one or more data values satisfy the search function; and reconstructing each data value associated with each identifier indicated in the bit pattern of the resultant bit vector by selecting each bit, in each successive bit vector of the index, having a unique position corresponding to said identifier.
Claim 33
Independent Claim 316 words
A method for data management in a data processing system comprising the steps of: storing a database comprising data arranged as an ordered set of data values in row and column format, each data value having a bit pattern of arbitrary length and an identifier associated therewith; creating a number of bit vectors, wherein the number of bit vectors is equal to the length of the longest of the bit patterns for the data values and the length of each bit vector is equal to the number of data values, said creating step comprising substeps of: (i) accessing one of the ordered set of data values stormed in the database; (ii) assigning to a unique position in successive bit vectors each bit of the bit pattern for said data value, each bit being assigned to an identical unique position in each of the successive bit vectors; and (iii) repeating the accessing and assigning steps for each remaining data value to form an index of bit vectors for the data values, so that each bit vector comprises an array storing a column of bit values created by taking a single bit value at a particular unique bit position of one column for each row of said database; receiving a search value and a search function from the application program; comparing the search value to the data values assigned into the bit vectors by manipulation of the bit vectors based on the search value and the search function; producing a resultant bit vector having a bit pattern indicating the identifier of one or more data values, thereby indicating that said one or more data values satisfy the search function; and reconstructing each data value associated with each identifier indicated in the bit pattern of the resultant bit vector by selecting each bit, in each successive bit vector of the index, having a unique position corresponding to said identifier.
Claim 34
Dependent Claim 27 words
The method of claim 29 further comprising the step of compressing the ordered set of data values disposed in the data base subsequent to the repeating step.
Claim 35
Dependent Claim 27 words
The method of claim 30 wherein the compressing step further comprises discarding those data values of the ordered set which can be derived from said bit vectors.
Claim 36
Dependent Claim 333 words
A database management system comprising: a server having a database storing an ordered set of data values as rows of data records, each data value having a bit pattern and an identifier for a particular database column associated therewith, the server comprising a memory and a processor; means for creating a number of bit vectors in the memory, such that the number of bit vectors is equal to the length of the longest of the bit patterns for the data values and the length of each bit vector is equal to the number of data values, said means for creating including: means for accessing one of the ordered set of data values stored in the database; means for assigning each bit of the bit pattern for the accessed data value to a unique position in successive bit vectors, the bits being assigned into an identical unique position in each of the successive bit vectors; and means for repeating the accessing and assigning steps for each remaining data value to form an index of bit vectors for the data values, so that each bit vector comprises an array storing a column of bit values created by taking a single bit value at a particular unique bit position of one column for each row of said database; means for receiving a search value and a search function from the application program; means for comparing the search value to the data values assigned into the bit vectors by manipulation of the bit vectors based on the search value and the search function; means for producing a resultant bit vector having a bit pattern indicating the identifier of one or more data values, thereby indicating that said one or more data values satisfy the search function; and means for reconstructing each data value associated with each identifier indicated in the bit pattern of the resultant bit vector by selecting each bit, in each successive bit vector of the index, having a unique position corresponding to said identifier.
Claim 37
Dependent Claim 333 words
A database management system comprising: a server having a database storing an ordered set of data values as rows of data records, each data value having a bit pattern and an identifier for a particular database column associated therewith, the server comprising a memory and a processor; means for creating a number of bit vectors in the memory, such that the number of bit vectors is equal to the length of the longest of the bit patterns for the data values and the length of each bit vector is equal to the number of data values, said means for creating including: means for accessing one of the ordered set of data values stored in the database; means for assigning each bit of the bit pattern for the accessed data value to a unique position in successive bit vectors, the bits being assigned into an identical unique position in each of the successive bit vectors; and means for repeating the accessing and assigning steps for each remaining data value to form an index of bit vectors for the data values, so that each bit vector comprises an array storing a column of bit values created by taking a single bit value at a particular unique bit position of one column for each row of said database; means for receiving a search value and a search function from the application program; means for comparing the search value to the data values assigned into the bit vectors by manipulation of the bit vectors based on the search value and the search function; means for producing a resultant bit vector having a bit pattern indicating the identifier of one or more data values, thereby indicating that said one or more data values satisfy the search function; and means for reconstructing each data value associated with each identifier indicated in the bit pattern of the resultant bit vector by selecting each bit, in each successive bit vector of the index, having a unique position corresponding to said identifier.
Claim 38
Dependent Claim 22 words
The database management system of claim 32 further comprising means for compressing the ordered set of data values disposed in the database.
Claim 39
Dependent Claim 33 words
The database management system of claim 33 wherein the means for compressing discards any data values of the ordered set of values from the database which can be derived from said bit vectors.
Claim 40
Dependent Claim 249 words
In a database system comprising a database storing information in a database table as a sequence of data records arranged in row and column format, an improved method for indexing said database table, the method comprising: selecting a particular column of the database table to index, said particular column representing a particular category of information for which each data record stores a data value, each data value representing information in the database stored as a sequence of bit values, each bit value having a particular bit position in said sequence of bit values; and creating an index for said particular column comprising a plurality of bit vectors by performing substeps of: (i) determining a maximum number of bit positions employed in said sequence of bit values for storing information for said particular column, (ii) initializing a sequence of bit vectors based on said determined maximum number of bit positions, so that each bit vector is associated with a particular one of said bit positions employed, and (iii) copying data values stored for said particular column by said sequence of data records into said sequence of bit vectors, so that for each particular bit position at each particular data record any bit value stored thereat is copied into the bit vector associated with that bit position, the bit value being copied into a particular bit position of the bit vector which corresponds to position of the particular data record relative to other data records in said sequence of data records.
Claim 41
Dependent Claim 249 words
In a database system comprising a database storing information in a database table as a sequence of data records arranged in row and column format, an improved method for indexing said database table, the method comprising: selecting a particular column of the database table to index, said particular column representing a particular category of information for which each data record stores a data value, each data value representing information in the database stored as a sequence of bit values, each bit value having a particular bit position in said sequence of bit values; and creating an index for said particular column comprising a plurality of bit vectors by performing substeps of: (i) determining a maximum number of bit positions employed in said sequence of bit values for storing information for said particular column, (ii) initializing a sequence of bit vectors based on said determined maximum number of bit positions, so that each bit vector is associated with a particular one of said bit positions employed, and (iii) copying data values stored for said particular column by said sequence of data records into said sequence of bit vectors, so that for each particular bit position at each particular data record any bit value stored thereat is copied into the bit vector associated with that bit position, the bit value being copied into a particular bit position of the bit vector which corresponds to position of the particular data record relative to other data records in said sequence of data records.
Claim 42
Dependent Claim 27 words
The method of claim 35, further comprising: compressing the data values stored in said bit vectors by eliminating bit values which are unused by the data values.
Claim 43
Dependent Claim 33 words
The method of claim 36, wherein said compressing step comprises: compressing the data values stored in said bit vectors by eliminating any bit vector having its bit values all set equal to 0.
Claim 44
Dependent Claim 30 words
The method of claim 36, wherein said particular column stores integer data values, and wherein said unused bit values comprise at least some high-order bits of the integer data values.
Claim 45
Dependent Claim 19 words
The method of claim 35, further comprising: compressing the database table by eliminating data values of said particular column.
Claim 46
Dependent Claim 29 words
The method of claim 39, further comprising: reconstructing said particular column by copying data values stored in said sequence of bit vectors back into said sequence of data records.
Claim 47
Dependent Claim 20 words
The method of claim 35, further comprising: repeating said selecting and creating steps for another column of the database table.
Claim 48
Dependent Claim 16 words
The method of claim 35, wherein said category of information comprises medium or high cardinality data.
Claim 49
Dependent Claim 64 words
The method of claim 35, further comprising: receiving a search value and a search function from an application program; comparing the search value to the index of bit vectors of data values by manipulation of the vectors based on the search functions; and producing a resultant bit vector having a bit pattern indicating a record identifier for each data value satisfying the search function.
Claim 50
Dependent Claim 38 words
The method of claim 43, further comprising: retrieving from the database each data record associated with each record identifier indicated in the bit pattern of the resultant vector; and providing each retrieved data record to the application program.
Claim 51
Dependent Claim 28 words
The method of claim 35, wherein: each bit vector has a length equal to how many data values are present in the database table for said particular column.

References Cited (Backward Citations)

US4606002A Cited
US4677550A Cited
US4776026A Cited
US5153591A Cited
US5495608A Cited
US5293616A Cited
US5404510A Cited
US5377348A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2000-07-14 2001-01-13 2001-07-15 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2004-07-14 2005-01-13 2005-07-15 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2008-07-14 2009-01-13 2009-07-15 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag