IP Library › Granted Patent US 12,229,189
Granted Patent B2
US 12,229,189 · App. 17/826,099 · Granted Feb 18, 2025

Continuous builds of derived datasets in response to other dataset updates

Inventors: Daniel Deutsch (New York, NY); Kyle Solan (San Francisco, CA); Thomas Mathew (New York, NY); Vasil Vasilev (Cambridge, MA)
Assignee: Palantir Technologies Inc.
G06F16/9024G06F16/2379G06F16/27
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,229,189
App. No.
17/826,099
Filed
May 26, 2022
Granted
Feb 18, 2025
Kind
B2
Examiner
LE, MIRANDA
Art Unit
2153
USPC
707/790
Abstract

A data processing method comprises creating and storing a dependency graph representing at least one derived dataset and one or more raw datasets or intermediate derived datasets on which the at least one derived dataset depends; reading configuration data specifying one or more periods for one or more datasets in the dependency graph; detecting a first update to a first dataset; initiating a first build of a first intermediate derived dataset only when a then-current time is within a first period of the one or more periods or a previous build of the first intermediate derived dataset occurred earlier than a then-current time less a second period of the one or more periods; asynchronously detecting a second update to a second dataset; initiating, in response to the second update, a second build of a second intermediate derived dataset that depends on the second dataset.

Claims (52)

1. A method comprising:

creating and storing a dependency graph in memory, based on which a data pipeline is maintained,

the dependency graph representing at least one derived dataset and one or more raw datasets or intermediate derived datasets on which the at least one derived dataset depends;

reading configuration data specifying one or more periods for one or more datasets in the dependency graph;

detecting, at an unscheduled time, a first update to a first dataset among the one or more raw datasets or intermediate derived datasets on which the at least one derived dataset depends;

determining, in response to the first update, that a current time is within a first period of the one or more periods from a fixed time of a day or a previous build of a first intermediate derived dataset occurred earlier than the current time less a second period of the one or more periods;

initiating, in response to the determining, at or near the current time, a first build of the first intermediate derived dataset that depends on the first dataset;

detecting that a frequency of updates to a dataset on which the first intermediate derived dataset depends exceeds a threshold;

in response to the detecting of the threshold being exceeded, updating the configuration data to revise the first period or the second period;

asynchronously detecting a second update to a second dataset among the one or more raw datasets or intermediate derived datasets on which the at least one derived dataset depends;

initiating, in response to the second update, a second build of a second intermediate derived dataset that depends on the second dataset without waiting for the first update to propagate through the dependency graph;

detecting and initiating continuously as other updates to other datasets are received, wherein the method is performed using one or more processors.

2. The method of claim 1 , the configuration data specifying the one or more periods respectively for one or more different datasets.

3. The method of claim 1 , the first period or the second period being associated with the first intermediate derived dataset.

4. The method of claim 1 , further comprising:

updating the configuration data to specify a certain period for a pipeline that recursively applies to parent datasets;

setting a period for a specific dataset having multiple children to a minimum of multiple periods applied to the multiple children.

5. The method of claim 1 , further comprising:

detecting that an amount of resource used in building the first intermediate derived dataset exceeds a second threshold;

in response to the detecting, updating the configuration data to specify the first period or the second period.

6. The method of claim 1 , the first period corresponding to an amount of resource usage below a certain threshold.

7. The method of claim 1 , further comprising:

detecting that a final dependency of a third intermediate derived dataset that depends on the first intermediate derived dataset is satisfied;

initiating a third build of the third intermediate derived dataset.

8. The method of claim 1 , the configuration data further specifying branch declarations related to logical branches of a build system.

9. The method of claim 8 , further comprising determining that the first intermediate derived dataset is not associated with a logical branch of the logical branches for which the branch declarations are specified.

10. A computer-readable, non-transitory storage medium storing computer-executable instructions, which when executed implement a method, the method comprising:

creating and storing a dependency graph in memory, based on which a data pipeline is maintained,

the dependency graph representing at least one derived dataset and one or more raw datasets or intermediate derived datasets on which the at least one derived dataset depends;

reading configuration data specifying one or more periods for one or more datasets in the dependency graph;

detecting, at an unscheduled time, a first update to a first dataset among the one or more raw datasets or intermediate derived datasets on which the at least one derived dataset depends;

determining, in response to the first update, that a current time is within a first period of the one or more periods from a fixed time of a day or a previous build of a first intermediate derived dataset occurred earlier than the current time less a second period of the one or more periods;

initiating, in response to the determining, at or near the current time, a first build of the first intermediate derived dataset that depends on the first dataset;

detecting that a frequency of updates to a dataset on which the first intermediate derived dataset depends exceeds a threshold;

in response to the detecting of the threshold being exceeded, updating the configuration data to revise the first period or the second period;

asynchronously detecting a second update to a second dataset among the one or more raw datasets or intermediate derived datasets on which the at least one derived dataset depends;

initiating, in response to the second update, a second build of a second intermediate derived dataset that depends on the second dataset without waiting for the first update to propagate through the dependency graph;

detecting and initiating continuously as other updates to other datasets are received, wherein the method is performed using one or more processors.

11. The computer-readable, non-transitory storage medium of claim 10 , the configuration data specifying the one or more periods respectively for one or more different datasets.

12. The computer-readable, non-transitory storage medium of claim 10 , the first period or the second period being associated with the first intermediate derived dataset.

13. The computer-readable, non-transitory storage medium of claim 10 , the method further comprising:

updating the configuration data to specify a certain period for a pipeline that recursively applies to parent datasets;

setting a period for a specific dataset having multiple children to a minimum of multiple periods applied to the multiple children.

14. The computer-readable, non-transitory storage medium of claim 10 , the method further comprising:

detecting that an amount of resource used in building the first intermediate derived dataset exceeds a second threshold;

in response to the detecting, updating the configuration data to specify the first period or the second period.

15. The computer-readable, non-transitory storage medium of claim 10 , the first period corresponding to an amount of resource usage below a certain threshold.

16. The computer-readable, non-transitory storage medium of claim 10 , the method further comprising:

detecting that a final dependency of a third intermediate derived dataset that depends on the first intermediate derived dataset is satisfied;

initiating a third build of second the third intermediate derived dataset.

17. The computer-readable, non-transitory storage medium of claim 10 , the configuration data further specifying branch declarations related to logical branches of a build system.

18. The method of claim 8 , further comprising determining that the first intermediate derived dataset is not associated with a logical branch of the logical branches for which the branch declarations are specified.

Continuity (3)
Continuation 15963038 · Apr 25, 2018
Provisional Application 62589856 · Nov 22, 2017
Related Publication 20220284057A1 · Sep 8, 2022
References Cited (25)
US 6208990B1 · Suresh · 2001 [cited by applicant]
US 7831574B2 · Pareek · 2010 [cited by applicant]
US 8447721B2 · Eshleman · 2013 [cited by applicant]
US 8719769B2 · Castellanos · 2014 [cited by applicant]
US 8725707B2 · Chen · 2014 [cited by applicant]
US 9589069B2 · Yang · 2017 [cited by applicant]
US 9805084B2 · Wright · 2017 [cited by applicant]
US 9887878B2 · Mahajan · 2018 [cited by examiner]
US 10474663B2 · Gray · 2019 [cited by examiner]
US 10599719B2 · Sirin · 2020 [cited by examiner]
US 20040186915A1 · Blaszcak · 2004 [cited by applicant]
US 20070174188A1 · Fish · 2007 [cited by examiner]
US 20090070785A1 · Alvez · 2009 [cited by examiner]
US 20090171999A1 · McColl · 2009 [cited by applicant]
US 20110035354A1 · Wan · 2011 [cited by examiner]
US 20130227573A1 · Morsi · 2013 [cited by examiner]
US 20130332812A1 · Houston · 2013 [cited by applicant]
US 20140040182A1 · Gilder · 2014 [cited by applicant]
US 20160103882A1 · Deshmukh · 2016 [cited by examiner]
US 20160224626A1 · Robichaud · 2016 [cited by examiner]
US 20170039260A1 · Adya · 2017 [cited by examiner]
US 20170195183A1 · Gershaft · 2017 [cited by examiner]
US 20170255460A1 · Frank · 2017 [cited by examiner]
US 20170286526A1 · Bar-Or · 2017 [cited by examiner]
US 20180075125A1 · Stiel · 2018 [cited by examiner]