IP Library Granted Patent US 11,321,316
Granted Patent B2
US 11,321,316 · App. 16/538,726 · Granted May 3, 2022

Storing nested complex data structures in a data store

Inventor: Nicholas White (London, GB)
Assignee: Palantir Technologies Inc.
G06F16/24542G06F16/13G06F16/221G06F16/2282G06F16/248
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,321,316
App. No.
16/538,726
Granted
May 3, 2022
Kind
B2
Abstract

A data processing method provides an improvement in speed of obtaining, in response to a computer search query from one or more computing devices, a particular compressed data chunk that may include a particular data value that is digitally stored in a large data file. The method comprises creating and digitally storing a digital data file comprising a first set of uncompressed metadata chunks; a second set of uncompressed metadata chunks; and a set of compressed data chunks; each chunk of the first and second sets of uncompressed metadata chunks comprising a set of bits; the set of compressed data chunks comprising a first compressed data chunk; the first compressed data chunk comprising a first set of values; the first set of uncompressed metadata chunks spaced evenly across the data file; the second set of uncompressed metadata chunks spaced evenly between a first metadata chunk of the first set of uncompressed metadata chunks and a second metadata chunk of the first set of uncompressed metadata chunks; the first metadata chunk comprising a first set of bits. The method further comprises setting a first subset of bits of the first set of bits to indicate a minimum value of the first set of values, setting a second subset of bits of the first set of bits to indicate a maximum value of the first set of values, and setting a third subset of bits of the first set of bits to indicate a first portion of the data file separating the first metadata chunk and the second metadata chunk. The method also comprises receiving the search query specifying the particular data value, reading the first metadata chunk, and, in response to determining that the particular data value is equal to or greater than the minimum value and equal to or less than the maximum value, sending the first compressed data chunk to the one or more computing devices.

Claims (47)

1. A data processing method comprising:

creating and digitally storing a digital file of data comprising a first set of uncompressed metadata chunks, a second set of uncompressed metadata chunks, and a set of compressed data chunks, each chunk of the first and second sets of uncompressed metadata chunks comprising a set of bits, a first compressed data chunk of the set of compressed data chunks comprising a first set of values, a first metadata chunk of the first set of uncompressed metadata chunks comprising a first set of bits;

setting a first subset of bits of the first set of bits to indicate a minimum value of the first set of values, setting a second subset of bits of the first set of bits to indicate a maximum value of the first set of values, and setting a third subset of bits of the first set of bits to indicate a first portion of the digital file of data separating the first metadata chunk and a second metadata chunk of the first set of uncompressed metadata chunks;

receiving a search query specifying a particular data value;

reading the first metadata chunk;

in response to determining that the particular data value is between the minimum value and the maximum value, sending the first compressed data chunk to one or more computing devices.

2. The method of claim 1 , wherein the digital file of data further comprises location metadata for the first set of uncompressed metadata chunks at an end of the digital file of data.

3. The method of claim 1 , wherein the first set of uncompressed metadata chunks are spaced evenly across the digital file of data.

4. The method of claim 1 , wherein the second set of uncompressed metadata chunks are spaced evenly between the first metadata chunk of the first set of uncompressed metadata chunks and the second metadata chunk of the first set of uncompressed metadata chunks.

5. The method of claim 1 , the set of compressed data chunks comprising a second compressed data chunk, the second compressed data chunk comprising a second set of values, and the second metadata chunk comprising a second set of bits, the method further comprising:

setting a first subset of bits of the second set of bits to indicate a minimum value of the second set of values, setting a second subset of bits of the second set of bits to indicate a maximum value of the second set of values, and setting a third subset of bits of the first set of bits to indicate a second portion of the digital file of data separating the second metadata chunk and a third metadata chunk of the first set of uncompressed metadata chunks;

in response to determining that the particular data value is not equal to or greater than the minimum value of the first set of values or equal to or less than the maximum value of the first set of values:

skipping the first portion of the digital file of data;

reading the second metadata chunk; and

in response to determining that the particular data value is equal to or greater than the minimum value of the second set of values and equal to or less than the maximum value of the second set of values, sending the second compressed data chunk to the one or more computing devices.

6. The method of claim 1 , wherein the second set of uncompressed metadata chunks comprises a third metadata chunk, wherein the third metadata chunk comprises a second set of bits, wherein the third metadata chunk immediately precedes a second compressed data chunk, wherein the second compressed data chunk is a subset of the first compressed data chunk, and wherein the second compressed data chunk comprises a second set of values, the method further comprising:

in response to determining that the particular data value is equal to or greater than the minimum value of the first set of values and equal to or less than the maximum value of the first set of values, reading the third metadata chunk.

7. The method of claim 6 further comprising setting a first subset of bits of the second set of bits to indicate a minimum value of the second set of values.

8. The method of claim 6 further comprising setting a second subset of bits of the second set of bits to indicate a maximum value of the second set of values.

9. The method of claim 6 further comprising setting a third subset of bits of the second set of bits to indicate a second portion of the digital file of data separating the third metadata chunk and a fourth metadata chunk of the second set of uncompressed metadata chunks.

10. The method of claim 6 further comprising, in response to determining that the particular data value is equal to or greater than the minimum value of the second set of values and equal to or less than the maximum value of the second set of values, sending the second compressed data chunk to the one or more computing devices.

11. The method of claim 1 , further comprising setting a fourth subset of bits of the first set of bits to indicate a number of values in the first set of values.

12. The method of claim 1 , wherein the first metadata chunk immediately precedes the set of compressed data chunks in the digital file of data.

13. The method of claim 1 wherein reading the first metadata chunk comprises performing a binary search of the first set of uncompressed metadata chunks and one or more linear searches of the second set of uncompressed metadata chunks.

14. A data processing system comprising:

one or more processors;

a memory storing instructions which, when executed by the one or more processors, causes performing:

creating and digitally storing a digital file of data comprising a first set of uncompressed metadata chunks, a second set of uncompressed metadata chunks, and a set of compressed data chunks, each chunk of the first and second sets of uncompressed metadata chunks comprising a set of bits, a first compressed data chunk of the set of compressed data chunks comprising a first set of values, a first metadata chunk of the first set of uncompressed metadata chunks comprising a first set of bits;

setting a first subset of bits of the first set of bits to indicate a minimum value of the first set of values, setting a second subset of bits of the first set of bits to indicate a maximum value of the first set of values, and setting a third subset of bits of the first set of bits to indicate a first portion of the digital file of data separating the first metadata chunk and a second metadata chunk of the first set of uncompressed metadata chunks;

receiving a search query specifying a particular data value;

reading the first metadata chunk;

in response to determining that the particular data value is between the minimum value and the maximum value, sending the first compressed data chunk to one or more computing devices.

15. The system of claim 14 , wherein the digital file of data further comprises location metadata for the first set of uncompressed metadata chunks at an end of the digital file of data.

16. The system of claim 14 , wherein the first set of uncompressed metadata chunks are spaced evenly across the digital file of data and the second set of uncompressed metadata chunks are spaced evenly between the first metadata chunk of the first set of uncompressed metadata chunks and the second metadata chunk of the first set of uncompressed metadata chunks.

17. The system of claim 14 , the set of compressed data chunks comprising a second compressed data chunk, the second compressed data chunk comprising a second set of values, and the second metadata chunk comprising a second set of bits, wherein the instructions, when executed by the one or more processors, further cause performance of:

setting a first subset of bits of the second set of bits to indicate a minimum value of the second set of values, setting a second subset of bits of the second set of bits to indicate a maximum value of the second set of values, and setting a third subset of bits of the first set of bits to indicate a second portion of the digital file of data separating the second metadata chunk and a third metadata chunk of the first set of uncompressed metadata chunks;

in response to determining that the particular data value is not equal to or greater than the minimum value of the first set of values or equal to or less than the maximum value of the first set of values:

skipping the first portion of the digital file of data;

reading the second metadata chunk; and

in response to determining that the particular data value is equal to or greater than the minimum value of the second set of values and equal to or less than the maximum value of the second set of values, sending the second compressed data chunk to the one or more computing devices.

18. The system of claim 14 , wherein the second set of uncompressed metadata chunks comprises a third metadata chunk, wherein the third metadata chunk comprises a second set of bits, wherein the third metadata chunk immediately precedes a second compressed data chunk, wherein the second compressed data chunk is a subset of the first compressed data chunk, wherein the second compressed data chunk comprises a second set of values, and wherein the instructions, when executed by the one or more processors, further cause performance of:

in response to determining that the particular data value is equal to or greater than the minimum value of the first set of values and equal to or less than the maximum value of the first set of values, reading the third metadata chunk.

19. The system of claim 18 wherein the instructions, when executed by the one or more processors, further cause performance of setting a first subset of bits of the second set of bits to indicate a minimum value of the second set of values.

20. The system of claim 19 wherein the instructions, when executed by the one or more processors, further cause performance of:

setting a second subset of bits of the second set of bits to indicate a maximum value of the second set of values;

setting a third subset of bits of the second set of bits to indicate a second portion of the digital file of data separating the third metadata chunk and a fourth metadata chunk of the second set of uncompressed metadata chunks;

in response to determining that the particular data value is equal to or greater than the minimum value of the second set of values and equal to or less than the maximum value of the second set of values, sending the second compressed data chunk to the one or more computing devices.

Assignments (7)
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENTS Recorded Jul 3, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0640 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY LISTED PATENT BY REMOVING APPLICATION NO. 16/832267 FROM THE RELEASE OF SECURITY INTEREST PREVIOUSLY RECORDED ON REEL 052856 FRAME 0382. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 26, 2021
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 057335/0753 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →
Continuity (3)
Continuation 15632105 · Jun 23, 2017
Provisional Application 62468859 · Mar 8, 2017
Related Publication 20190361898A1 · Nov 28, 2019