IP Library Granted Patent US 10,740,316
Granted Patent B2
US 10,740,316 · App. 14/883,581 · Granted Aug 11, 2020

Cache optimization for data preparation

Inventors: Dave Brewster (Redwood City, CA); Victor Tze-Yeuan Tso (Redwood City, CA)
Assignee: DR HoldCo 2, Inc.
G06F16/23G06F16/248G06F16/2455G06F16/24524G06F16/24539
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 10,740,316
App. No.
14/883,581
Granted
Aug 11, 2020
Kind
B2
Abstract

Cache optimization for data preparation includes generating a data traversal program that represents a result of a set of sequenced data preparation operations performed on one or more sets of data. The data traversal program indicates how to assemble one or more affected columns in the one or more sets of data to derive the result. It further includes in response to receiving a specification of the set of sequenced operations to be performed on the one or more sets of data, accessing the data traversal program that represents the result or a stored copy of the data traversal program that represents the result. It further includes assembling the one or more affected columns in the one or more sets of data according to the data traversal program to re-generate the result. It further includes outputting the result.

Claims (38)

1. A system, comprising:

a processor configured to:

while a first plurality of sequenced data preparation operations is sequentially performed on one or more input data sets, generate a data traversal program that represents a cumulative result of sequentially performing the first plurality of sequenced data preparation operations on the one or more input data sets, wherein the data traversal program comprises:

a references table comprising references to mappings of row transformations that occurred during the performing of the first plurality of sequenced data preparation operations; and

a reference stack comprising references to one or more file sets that store column files of data values that were written based at least in part on the performing of the first plurality of sequenced data preparation operations;

cache the generated data traversal program representing the cumulative result of sequentially performing the first plurality of sequenced data preparation operations on the one or more input data sets;

at a time subsequent to caching the generated data traversal program, receive, via a user interface, a specification of a second plurality of sequenced data preparation operations;

in response to determining that at least a portion of the second plurality of sequenced data preparation operations matches at least a portion of the first plurality of sequenced data preparation operations, access the cached data traversal program that represents the cumulative result of sequentially performing the first plurality of sequenced data preparation operations on the one or more input data sets;

re-generate the cumulative result of sequentially performing the first plurality of sequenced data preparation operations on the one or more input data sets at least in part by executing the cached data traversal program, the executing of the data traversal program comprising using the reference stack in conjunction with the references table to obtain a set of rows that are at least a subset of a data set resulting from the first plurality of sequenced data preparation operations having been performed on the one or more input data sets; and

output the re-generated cumulative result, wherein outputting the re-generated cumulative result comprises displaying in the user interface the obtained set of rows that are at least a subset of the data set resulting from the first plurality of sequenced data preparation operations having been performed on the one or more input data sets; and

a memory coupled to the processor and configured to provide the processor with instructions.

2. The system of claim 1 wherein the data traversal program requires a less amount of memory storage than the cumulative result itself.

3. The system of claim 1 wherein generating the data traversal program does not duplicate the one or more input data sets.

4. The system of claim 1 wherein data pertaining to the data traversal program is stored automatically.

5. The system of claim 1 wherein data pertaining to the data traversal program is stored based on a complexity of the first plurality of sequenced data preparation operations.

6. The system of claim 1 wherein data pertaining to the data traversal program is stored in response to a request to store the cumulative result.

7. The system of claim 1 wherein the obtained set of rows are displayed in a windowed view.

8. The system of claim 1 wherein the data traversal program is associated with a set of one or more signatures.

9. The system of claim 8 wherein each signature in the set of one or more signatures is generated using a hash function.

10. A method, comprising:

while a first plurality of sequenced data preparation operations is sequentially performed on one or more input data sets, generating a data traversal program that represents a cumulative result of sequentially performing the first plurality of sequenced data preparation operations on the one or more input data sets, wherein the data traversal program comprises:

a references table comprising references to mappings of row transformations that occurred during the performing of the first plurality of sequenced data preparation operations; and

a reference stack comprising references to one or more file sets that store column files of data values that were written based at least in part on the performing of the first plurality of sequenced data preparation operations;

caching the generated data traversal program representing the cumulative result of sequentially performing the first plurality of sequenced data preparation operations on the one or more input data sets;

at a time subsequent to caching the generated data traversal program, receiving, via a user interface, a specification of a second plurality of sequenced data preparation operations;

in response to determining that at least a portion of the second plurality of sequenced data preparation operations matches at least a portion of the first plurality of sequenced data preparation operations, accessing the cached data traversal program that represents the cumulative result of sequentially performing the first plurality of sequenced data preparation operations on the one or more input data sets;

re-generating the cumulative result of sequentially performing the first plurality of sequenced data preparation operations on the one or more input data sets at least in part by executing the cached data traversal program, the executing of the data traversal program comprising using the reference stack in conjunction with the references table to obtain a set of rows that are at least a subset of a data set resulting from the first plurality of sequenced data preparation operations having been performed on the one or more input data sets; and

outputting the re-generated cumulative result, wherein outputting the re-generated cumulative result comprises displaying in the user interface the obtained set of rows that are at least a subset of the data set resulting from the first plurality of sequenced data preparation operations having been performed on the one or more input data sets.

11. The method of claim 10 wherein the data traversal program requires a less amount of memory storage than the cumulative result itself.

12. A computer program product embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

while a first plurality of sequenced data preparation operations is sequentially performed on one or more input data sets, generating a data traversal program that represents a cumulative result of sequentially performing the first plurality of sequenced data preparation operations on the one or more input data sets, wherein the data traversal program comprises:

a references table comprising references to mappings of row transformations that occurred during the performing of the first plurality of sequenced data preparation operations; and

a reference stack comprising references to one or more file sets that store column files of data values that were written based at least in part on the performing of the first plurality of sequenced data preparation operations;

caching the generated data traversal program representing the cumulative result of sequentially performing the first plurality of sequenced data preparation operations on the one or more input data sets;

at a time subsequent to caching the generated data traversal program, receiving, via a user interface, a specification of a second plurality of sequenced data preparation operations;

in response to determining that at least a portion of the second plurality of sequenced data preparation operations matches at least a portion of the first plurality of sequenced data preparation operations, accessing the cached data traversal program that represents the cumulative result of sequentially performing the first plurality of sequenced data preparation operations on the one or more input data sets;

re-generating the cumulative result of sequentially performing the first plurality of sequenced data preparation operations on the one or more input data sets at least in part by executing the cached data traversal program, the executing of the cached data traversal program comprising using the reference stack in conjunction with the references table to obtain a set of rows that are at least a subset of a data set resulting from the first plurality of sequenced data preparation operations having been performed on the one or more input data sets; and

outputting the re-generated cumulative result, wherein outputting the re-generated cumulative result comprises displaying in the user interface the obtained set of rows that are at least a subset of the data set resulting from the first plurality of sequenced data preparation operations having been performed on the one or more input data sets.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded Apr 7, 2025
From: CITIBANK, N.A.
To: DATAROBOT, INC.; ALGORITHMIA, INC.; DULLES RESEARCH, LLC
Reel/Frame 070750/0866 →
SECURITY INTEREST Recorded Mar 22, 2023
From: DATAROBOT, INC.; ALGORITHMIA, INC.; DULLES RESEARCH, LLC
To: CITIBANK, N.A.
Reel/Frame 063263/0926 →
RELEASE OF SECURITY INTEREST Recorded Feb 2, 2023
From: SILICON VALLEY BANK
To: PAXATA, INC.
Reel/Frame 063251/0119 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2022
From: DR HOLDCO 2, INC.
To: DATAROBOT, INC.
Reel/Frame 060019/0207 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2020
From: PAXATA, INC.
To: DR HOLDCO 2, INC.
Reel/Frame 052377/0987 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Nov 5, 2019
From: PAXATA, INC.
To: SILICON VALLEY BANK
Reel/Frame 050930/0534 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2015
From: BREWSTER, DAVE; TSO, VICTOR TZE-YEUAN
To: PAXATA, INC.
Reel/Frame 037304/0402 →
Continuity (1)
Related Publication 20170109387A1 · Apr 20, 2017