IP Library › Granted Patent US 12,619,599
Granted Patent B2
US 12,619,599 · App. 18/178,294 · Granted May 5, 2026

Projections for big database systems

Inventors: Benjamin Duffield (New York, NY); Joshua Casale (Seattle, WA); Mark Elliot (New York, NY); Matthew Sills (New York, NY); Robert Kruszewski (London, GB); Rahij Ramsharan (London, GB)
Assignee: Palantir Technologies Inc.
G06F16/2379G06F16/2455G06F16/248G06F16/273
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 12,619,599
App. No.
18/178,294
Granted
May 5, 2026
Kind
B2
Abstract

A database system comprised of a decoupled compute layer and storage layer is implemented to store, build, and maintain a canonical dataset, a temporary buffer, and projection datasets. The canonical dataset is a set of batch updated data. The data is appended in chunks to the canonical dataset such that the canonical dataset becomes a historical dataset over time. The buffer is a write ahead log that contains the most recent chunks of data and provides atomicity and durability for the database system. The projection datasets are indexes of the canonical dataset and/or the buffer that may have single or multiple column sort-orders and/or particular data formats. The writes to the canonical dataset, projection datasets, and buffer may be asynchronous and therefore the database system is advantageously less resource constrained.

Claims (63)

1 . A system comprising:

one or more non-transitory computer readable storage mediums configured to store:

program instructions;

a canonical dataset;

one or more projection datasets; and

a buffer; and

one or more processors configured to execute the program instructions to cause the system to:

access a first data chunk comprising an edit to the canonical dataset;

temporarily store the first data chunk in the buffer;

receive a query configured to execute on the canonical dataset;

analyze the query to determine a requested result of the query;

access the one or more projection datasets stored in the one or more non-transitory computer readable storage mediums to determine a selected projection dataset from among the one or more projection datasets to optimize query performance based on referencing projection rules associated with the one or more projection datasets to determine a projection rule that corresponds with the requested result, wherein the selected projection dataset is associated with the projection rule, the projection rule having been pre-applied to the selected projection dataset to obviate applying the projection rule to the selected projection dataset during query execution to reduce query execution time allowing the query to execute faster on the selected projection dataset than on other projection datasets of the one or more projection datasets to which the projection rule has not been pre-applied;

combine the selected projection dataset with the buffer in the one or more non-transitory computer readable storage mediums to form a combined projection dataset with data governed by the projection rule;

rewrite the query to execute on the combined projection dataset instead of the canonical dataset to produce the requested result of the query faster by executing on the combined projection dataset than by executing on the canonical dataset;

execute the rewritten query on the combined projection dataset; and

return the requested result.

2 . The system of claim 1 , wherein the one or more processors is further configured to execute the program instructions to cause the system to:

combine the buffer with a second projection dataset asynchronously with combining the buffer to the selected projection dataset based on resource availability of the system to form a second combined projection dataset.

3 . The system of claim 1 , wherein the one or more processors is further configured to execute the program instructions to cause the system to:

transform the combined projection dataset according to a projection rule set associated with the selected projection dataset.

4 . The system of claim 3 , wherein transforming the combined projection dataset includes one or more of sorting data contents of the combined projection dataset and compacting the data contents of the combined projection dataset.

5 . The system of claim 3 , wherein the one or more processors is further configured to execute the program instructions to cause the system to:

combine the buffer with a second projection dataset to form a second combined projection dataset; and

transform, according to a second projection rule set associated with the second projection dataset, the second combined projection dataset asynchronously with transforming the selected projection dataset based on resource availability of the system.

6 . The system of claim 1 , wherein the one or more processors is further configured to execute the program instructions to cause the system to:

transform the buffer according to a projection rule set associated with the selected projection dataset, wherein transforming the buffer includes one or more of sorting data contents of the buffer and compacting the data contents of the buffer.

7 . The system of claim 1 , wherein the one or more processors is further configured to execute the program instructions to cause the system to:

combine the buffer with the selected projection dataset by appending data contents of the buffer to data contents of the selected projection dataset.

8 . The system of claim 1 , wherein the one or more processors is further configured to execute the program instructions to cause the system to:

combine the buffer with the selected projection dataset by appending less than all data contents of the buffer to data contents of the selected projection dataset based on at least a timestamp associated with the selected projection dataset indicating a time the selected projection dataset was previously updated and one or more timestamps associated with data in the buffer.

9 . The system of claim 1 , wherein the one or more processors is further configured to execute the program instructions to cause the system to:

flush the first data chunk from the buffer.

10 . A computer-implemented method comprising:

accessing a first data chunk comprising an edit to a canonical dataset;

temporarily storing the first data chunk in a buffer;

receiving a query configured to execute on the canonical dataset;

analyzing the query to determine a requested result of the query;

accessing one or more projection datasets stored in one or more non-transitory computer readable storage mediums to determine a selected projection dataset from among the one or more projection datasets to optimize query performance based on referencing projection rules associated with the one or more projection datasets to determine a projection rule that corresponds with the requested result, wherein the selected projection dataset is associated with the projection rule, the projection rule having been pre-applied to the selected projection dataset to obviate applying the projection rule to the selected projection dataset during query execution to reduce query execution time allowing the query to execute faster on the selected projection dataset than on other projection datasets of the one or more projection datasets to which the projection rule has not been pre-applied;

combining the selected projection dataset with the buffer in the one or more non-transitory computer readable storage mediums to form a combined projection dataset with data governed by the projection rule;

rewriting the query to execute on the combined projection dataset instead of the canonical dataset to produce the requested result of the query faster by executing on the combined projection dataset than by executing on the canonical dataset;

executing the rewritten query on the combined projection dataset; and

returning the requested result.

11 . The computer-implemented method of claim 10 further comprising:

transforming the combined projection dataset according to a projection rule set associated with the selected projection dataset.

12 . The computer-implemented method of claim 10 further comprising:

transforming the buffer according to a projection rule set associated with the selected projection dataset, wherein transforming the buffer includes one or more of sorting data contents of the buffer and compacting the data contents of the buffer.

13 . Non-transitory computer-readable media including computer-executable instructions that, when executed by a computing system, cause the computing system to perform operations comprising:

accessing a first data chunk comprising an edit to a canonical dataset;

temporarily storing the first data chunk in a buffer;

receiving a query configured to execute on the canonical dataset;

analyzing the query to determine a requested result of the query;

accessing one or more projection datasets stored in one or more non-transitory computer readable storage mediums to determine a selected projection dataset from among the one or more projection datasets to optimize query performance based on referencing projection rules associated with the one or more projection datasets to determine a projection rule that corresponds with the requested result, wherein the selected projection dataset is associated with the projection rule, the projection rule having been pre-applied to the selected projection dataset to obviate applying the projection rule to the selected projection dataset during query execution to reduce query execution time allowing the query to execute faster on the selected projection dataset than on other projection datasets of the one or more projection datasets to which the projection rule has not been pre-applied;

combining the selected projection dataset with the buffer in the one or more non-transitory computer readable storage mediums to form a combined projection dataset with data governed by the projection rule;

rewriting the query to execute on the combined projection dataset instead of the canonical dataset to produce the requested result of the query faster by executing on the combined projection dataset than by executing on the canonical dataset;

executing the rewritten query on the combined projection dataset; and

returning the requested result.

14 . The non-transitory computer-readable media of claim 13 , wherein the computer-executable instructions, when executed by the computing system, further cause the computing system to perform operations comprising:

transforming the combined projection dataset according to a projection rule set associated with the selected projection dataset.

15 . The non-transitory computer-readable media of claim 13 , wherein the computer-executable instructions, when executed by the computing system, further cause the computing system to perform operations comprising:

transforming the buffer according to a projection rule set associated with the selected projection dataset, wherein transforming the buffer includes one or more of sorting data contents of the buffer and compacting the data contents of the buffer.

16 . The system of claim 1 , wherein the projection rule includes one or more of a data sorting rule, a data format rule, or a data aggregation rule.

17 . The computer-implemented method of claim 10 , wherein the projection rule includes one or more of a data sorting rule, a data format rule, or a data aggregation rule.

18 . The non-transitory computer-readable media of claim 13 , wherein the projection rule includes one or more of a data sorting rule, a data format rule, or a data aggregation rule.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 17, 2023
From: DUFFIELD, BENJAMIN; CASALE, JOSHUA; ELLIOT, MARK; SILLS, MATTHEW; KRUSZEWSKI, ROBERT; RAMSHARAN, RAHIJ
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 063678/0004 →
Continuity (3)
Continuation 17444715 · Aug 9, 2021
Provisional Application 63067596 · Aug 19, 2020
Related Publication 20230281191A1 · Sep 7, 2023
References Cited (40)
US 7673099B1 · Beaverson · 2010 [cited by examiner]
US 7685083B2 · Fairweather · 2010 [cited by applicant]
US 9846567B2 · Kaushik · 2017 [cited by examiner]
US 10303516B1 · Ward · 2019 [cited by examiner]
US 10360215B1 · Ciarlini · 2019 [cited by examiner]
US 10373267B2 · Chang · 2019 [cited by examiner]
US 10698854B1 · Waishaupt et al. · 2020 [cited by applicant]
US 10740312B1 · Mritunjai et al. · 2020 [cited by applicant]
US 11620280B2 · Duffield et al. · 2023 [cited by applicant]
US 20030191752A1 · Fairweather · 2003 [cited by applicant]
US 20040212619A1 · Saito · 2004 [cited by examiner]
US 20040225670A1 · Cameron · 2004 [cited by examiner]
US 20040255048A1 · Lev Ran et al. · 2004 [cited by applicant]
US 20070112714A1 · Fairweather · 2007 [cited by applicant]
US 20100169392A1 · Lev Ran et al. · 2010 [cited by applicant]
US 20120311237A1 · Park · 2012 [cited by examiner]
US 20140208041A1 · Hyde · 2014 [cited by examiner]
US 20150242762A1 · Cox · 2015 [cited by examiner]
US 20150363167A1 · Kaushik · 2015 [cited by examiner]
US 20160012108A1 · Hu · 2016 [cited by examiner]
US 20170046329A1 · Mirhaji · 2017 [cited by examiner]
US 20180067978A1 · Matsuura · 2018 [cited by examiner]
US 20180196850A1 · Schaeffer · 2018 [cited by examiner]
US 20180205552A1 · Struttmann et al. · 2018 [cited by applicant]
US 20190205773A1 · Ackerman · 2019 [cited by examiner]
US 20200004736A1 · Liu · 2020 [cited by examiner]
US 20200026620A1 · Skowronski et al. · 2020 [cited by applicant]
US 20210385251A1 · Crabtree · 2021 [cited by examiner]
US 20220004568A1 · Patil · 2022 [cited by examiner]
US 20220027379A1 · Unterbrunner · 2022 [cited by examiner]
US 20220059029A1 · Kishimoto · 2022 [cited by examiner]
US 20220067038A1 · Ponnamperuma Arachchi · 2022 [cited by examiner]
US 20230359671A1 · Teflioudi · 2023 [cited by examiner]
US 20230386473A1 · Li · 2023 [cited by examiner]
CN 111159213A · 2020 [cited by examiner]
EP 3958142 · 2022 [cited by applicant]
Official Communication for European Patent Application No. 21192024.4 dated May 16, 2023. [cited by applicant]
Official Communication for European Patent Application No. 21192024.4 dated Jan. 12, 2022, 10 pages. [cited by applicant]
Plattner et al., “Organizing and Accessing Data in SanssouciDB—In-Memory Data Management: An Inflection Point for Enterprise Applications”, Mar. 5, 2011, Springer-Verlag, 62 pages. [cited by applicant]
Official Communication for European Patent Application No. 21192024.4 dated Jan. 29, 2026, 9 pages. [cited by applicant]