IP Library Granted Patent US 11,416,464
Granted Patent B2
US 11,416,464 · App. 16/590,646 · Granted Aug 16, 2022

Optimizing wide data-type storage and analysis of data in a column store database

Inventors: Chris Baskett (Belmont, CA); Tony Faustini (Berkeley, CA)
Assignee: INPIXON
G06F16/221G06F16/137G06F16/22G06F16/2228G06F16/2255G06F16/2423G06F16/284G06F16/31G06F16/3331G06F16/3338G06F16/9014
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,416,464
App. No.
16/590,646
Granted
Aug 16, 2022
Kind
B2
Abstract

Data structures can provide for a column store of a database table. Methods can use the data structures for efficiently responding to a query. Unique field values of a column of a database table can be identified. The unique values can be stored in a dictionary table along with reference keys that point to a row of the database table. A reference store column can replace the original column, where the reference store column stores index values of the dictionary table. A hash table can be used in accessing the database. A hash function can provide a hash value of a query term, and the hash value can be used to access a hash table to obtain a stored value of an index value of the dictionary table. The index value can be used to access the dictionary table to obtain reference keys corresponding to rows of the database table.

Claims (48)

1. One or more non-transitory, computer-readable media storing instructions that, when executed by one or more processors, effectuate operations comprising:

obtaining, by a computer system, an array of field values, wherein each field value of the array of field values is associated with one first array index value of M index values, wherein M corresponds to a length of the array of field values;

identifying unique field values from the array of field values by at least:

determining each field value with repeating field values from non-space separated field values; and

determining each field value with repeating field values from space separated field values;

creating, by the computer system, a first table including N index values, the unique field values, and reference keys, each reference key of the reference keys corresponding to one first array index value of the M index values and being associated with one index value of the N index values and one of the unique field values, and each unique field value being associated with one index value of the N index values, wherein at least one of the unique field values has more than one reference key;

creating, by the computer system, a second table including second array index values and a second array of fixed-width values, each of the fixed-width values corresponding to one of the N index values and being associated with one index value of the second array index values and the second array index values corresponding to the first array index values, wherein the creation of the second table replaces the array of field values with the second array of fixed-width values, and wherein the fixed-width of each of the second array of fixed-width values is less than a width of a field value of the array of field values having the greatest width of the array of field values; and

creating, by the computer system, a hash table including hash index values and a second set of fixed-width values, the second set of fixed-width values corresponding to the N index values, and each hash index value being associated with one of the fixed values of the second set of fixed-width values.

2. The non-transitory media of claim 1 , wherein each field value of the array of field values are character field values, the character field values being of variable length.

3. The non-transitory media of claim 2 , further comprising:

creating a compression table based on the first table, wherein the creating of the compression table includes:

identifying unique words from the character field values; and

creating the compression table including a different array of index values and the unique words, each of the unique words being associated with one of the different array of index values.

4. The non-transitory media of claim 1 , wherein a first number of the M index values is greater than a second number of the N index values.

5. The non-transitory media of claim 1 , wherein a number of the unique field values is less than a number of the M index values.

6. The non-transitory media of claim 1 , wherein at least one of the reference keys points to a row in the array of field values.

7. The non-transitory media of claim 1 , wherein the hash index values are generated by operating a hash function on the unique field values.

8. The non-transitory media of claim 7 , wherein the hash function includes a module function to generate the hash index values.

9. The non-transitory media of claim 1 , where a position of each of the second set of fixed-width values in the hash table is based on a hash function output of the unique field values.

10. The non-transitory media of claim 1 , wherein a number of rows in the hash table equals a number of rows in the first table.

11. The non-transitory media of claim 1 , wherein a number of rows in the hash table is less than a number of rows in the second table.

12. The non-transitory media of claim 1 , further comprising:

obtaining a query including first text;

operating on the first text using a hash function to obtain a first hash value;

accessing the hash table using the first hash value to obtain a corresponding row index of the first table;

accessing the first table using the corresponding row index to identify one or more first reference keys; and

using the one or more first reference keys to access the array of field values.

13. The non-transitory media of claim 12 , wherein the query includes an access pattern of: “Greater Than,” “Less Than,” or “Values Between.”

14. The non-transitory media of claim 1 , wherein a number of rows in the first table is less than a number of rows in the second table.

15. The non-transitory media of claim 1 , further comprising:

obtaining a query having query text; and

identifying a row in a database table corresponding to at least part of the query text in an O(1) operation, the database table including the M index values and the array of field values.

16. The non-transitory media of claim 1 , further comprising:

obtaining a query; and

identifying one or more rows in a database table based on the one or more rows having an associated row index that is greater than a row index associated with a content of the query in an O(1+N/2) operation, wherein N is a number of unique character field values, and wherein the database table includes the M index values and the array of field values.

17. The non-transitory media of claim 1 , further comprising:

receiving a query; and

identifying one or more rows in a database table based on the one or more rows having an associated row index that is between row indices associated with the query in an O(1+N/4) operation, wherein N is a number of unique character field values and wherein the database table includes the M index values and the array of field values.

18. The non-transitory media of claim 1 , wherein the operations comprise:

steps for optimizing variable-width data for column-store database storage.

19. A method for storing variable-width data in a database, the method comprising:

obtaining, by a computer system, an array of field values, wherein each field value of the array of field values is associated with one first array index value of M index values, wherein M corresponds to a length of the array of field values;

identifying unique field values from the array of field values by at least:

determining each field value with repeating field values from non-space separated field values; and

determining each field value with repeating field values from space separated field values;

creating, by the computer system, a first table including N index values, the unique field values, and reference keys, each reference key of the reference keys corresponding to one first array index value of the M index values and being associated with one index value of the N index values and one of the unique field values, and each unique field value being associated with one index value of the N index values, wherein at least one of the unique field values has more than one reference key; and

creating, by the computer system, a second table including second array index values and a second array of fixed-width values, each of the fixed-width values corresponding to one of the N index values and being associated with one index value of the second array index values and the second array index values corresponding to the first array index values, wherein the creation of the second table replaces the array of field values with the second array of fixed-width values, and wherein the fixed-width of each of the second array of fixed-width values is less than a width of a field value of the array of field values having the greatest width of the array of field values; and

creating, by the computer system, a hash table including hash index values and a second set of fixed-width values, the second set of fixed-width values corresponding to the N index values, and each hash index value being associated with one of the fixed values of the second set of fixed-width values.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 27, 2020
From: LIGHTMINER SYSTEMS, INC.
To: SYSOREX GLOBAL HOLDINGS CORP.
Reel/Frame 052251/0200 →
CHANGE OF NAME Recorded Mar 27, 2020
From: SYSOREX GLOBAL D/B/A SYSOREX USA AND/OR SYSOREX GLOBAL HOLDINGS CORP.
To: INPIXON
Reel/Frame 052252/0628 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2020
From: BASKETT, CHRIS; FAUSTINI, TONY
To: LIGHTMINER SYSTEMS, INC.
Reel/Frame 052239/0212 →
Continuity (3)
Continuation 14218859 · Mar 18, 2014
Provisional Application 61784921 · Mar 14, 2013
Related Publication 20200159707A1 · May 21, 2020