IP Library Granted Patent US 9,753,935
Granted Patent B1
US 9,753,935 · App. 15/226,675 · Granted Sep 5, 2017

Time-series data storage and processing database system

Inventors: David Tobin (Atherton, CA); Pawel Adamowicz (London, GB); Steven Fackler (Menlo Park, CA); Sri Krishna Vempati (Jersey City, NJ); Wilson Wong (Menlo Park, CA); Orcun Simsek (New York, NY)
Assignee: Palantir Technologies Inc.
G06F17/30138G06F17/30554
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 9,753,935
App. No.
15/226,675
Granted
Sep 5, 2017
Kind
B1
Abstract

A database system is described that includes components for storing time-series data and executing custom, user-defined computational expressions in substantially real-time such that the results can be provided to a user device for display in an interactive user interface. For example, the database system may process stored time-series data in response to requests from a user device. The request may include a start time, an end time, a period, and/or a computational expression. The database system may retrieve the time-series data identified by the computational expression and, for each period, perform the arithmetic operation(s) identified by the computational expression on data values corresponding to times within the start time and the end time. Once all new data values have been generated, the database system may transmit the new data values to the user device for display in the interactive user interface.

Claims (32)

1. A database configured to receive and process requests associated with time-series data and provide results to a user device, the database comprising:

a processing node comprising a computer processor and memory;

a time-series database storing a first data segment file and a second data segment file, wherein the first data segment file comprises data associated with a first time-series, wherein a size of the first data segment file is within a first size range, wherein a size of the second data segment file is within the first size range; and

a non-transitory computer readable storage medium storing program instructions, wherein the program instructions are configured for execution by the computer processor in order to cause the processing node to:

determine that a number of data segment files stored in the time-series database that comprise data associated with the first time-series and that have a size within the first size range is greater than a threshold value;

compact the first data segment file with the second data segment file to form a third data segment file, wherein a size of the third data segment file is within a second size range different than the first size range;

store the third data segment file in the time-series database;

determine that a number of data segment files stored in the time-series database that comprise data associated with the first time-series and that have a size within the second size range is greater than a second threshold value;

compact the third data segment file with other data segment files that comprise data associated with the first time-series and that have a size within the second size range to form a fourth data segment file, wherein a size of the fourth data segment file is within a third size range different than the first and second size ranges; and

store the fourth data segment file in the time-series database.

2. The database of claim 1 , wherein the threshold value and the second threshold value are the same value.

3. The database of claim 1 , wherein the program instructions are further configured for execution by the computer processor in order to cause the processing node to mark the first data segment file and the second data segment file for deletion.

4. The database of claim 1 , wherein the program instructions are further configured for execution by the computer processor in order to cause the processing node to:

receive second data associated with the first time-series;

compress the second data; and

store the compressed second data in the time-series database as the second data segment file.

5. The database of claim 4 , wherein the program instructions are further configured for execution by the computer processor in order to cause the processing node to compress the second data using one of block compression, out of box compression, or a delta-based compression.

6. The database of claim 4 , wherein the program instructions are further configured for execution by the computer processor in order to cause the processing node to store the compressed second data in a global write ahead log and in an in-memory buffer associated with the first time-series.

7. The database of claim 6 , wherein the program instructions are further configured for execution by the computer processor in order to cause the processing node to store the compressed second data in a local write ahead log associated with the first time-series in response to the global write ahead log reaching capacity.

8. The database of claim 7 , wherein the program instructions are further configured for execution by the computer processor in order to cause the processing node to store the compressed second data in the time-series database as the second data segment file in response to the local write ahead log reaching capacity.

9. The database of claim 1 , wherein a range of sizes corresponding to the second size range is larger than a range of sizes corresponding to the first size range.

10. The database of claim 1 , wherein the first size range is contiguous with the second size range.

11. The database of claim 1 , wherein the program instructions are further configured for execution by the computer processor in order to cause the processing node to:

receive a series expression, a start time, an end time, and a period from a user device;

retrieve, from the time-series database, a portion of the third data segment file corresponding to the start time and the end time; and

transmit the portion of the third data segment file to a plug-in computation device for generating, for each period between the start time and the end time, a value based on a computation identified by the series expression.

12. The database of claim 11 , wherein the program instructions are further configured for execution by the computer processor in order to cause the processing node to:

receive the generated values from the plug-in computation device; and

transmit the generated values to the user device for display.

13. The database of claim 11 , wherein the start time and the end time correspond to a window of data displayed in an interactive user interface generated by the user device.

14. The database of claim 13 , wherein the period identifies a period of time that corresponds with a width of a pixel in the interactive user interface.

15. The database of claim 1 , wherein the first data segment file stored in the time-series database is immutable.

Assignments (8)
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 →
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
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: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2017
From: TOBIN, DAVID; ADAMOWICZ, PAWEL; FACKLER, STEVEN; VEMPATI, SRI KRISHNA; WONG, WILSON; SIMSEK, ORCUN
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 042424/0205 →