IP Library Granted Patent US 11,467,971
Granted Patent B2
US 11,467,971 · App. 16/114,542 · Granted Oct 11, 2022

Systems and methods for accelerating data computation

Inventors: Ngoc Nguyen (Cupertino, CA); Darren Kermit Lee (Sunnyvale, CA); Ilan Cohen (Santa Clara, CA); Crichton McCutcheon (Miami Beach, FL); Christof Bornhoevd (Belmont, CA)
Assignee: Workday, Inc.
G06F12/0891G06F9/44536G06F9/544G06F12/0815G06F17/18G06F40/18G06Q10/06G06Q10/087
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,467,971
App. No.
16/114,542
Granted
Oct 11, 2022
Kind
B2
Abstract

Systems and methods for precomputing data and storing cache objects corresponding to the precomputed data are described. A system creates a new cache object when a user interacts with the system. The system precomputes formulas in the newly created cache object by replacing the formulas with corresponding calculated values. The system precomputes the formulas in the background (i.e., the user is not presented with the precomputed values while the user is manipulating the data). The system may persistently store a precomputed version cache object in a dedicated version cache storage for later use. If updates are performed to the structure and/or values of a version represented in a precomputed version cache object, effected parts of the version cache object are invalidated by replacing calculated values with the underlying formulas.

Claims (112)

1. A computer-implemented method comprising:

receiving input data associated with a plan version from a device, the input data including cells, each cell of a subset of the cells including one of a numeric value or a formula;

generating a version cache object corresponding to the input data;

assigning a precompute sequence number to the plan version;

generating a precomputed version cache object, comprising replacing at least one formula included in the version cache object with a precomputed numerical value, generating of the precomputed version cache object being imperceptible to a user of the device;

assigning the precompute sequence number to the precomputed version cache object;

receiving, from the device, a signal indicating a result should be calculated, wherein calculating the result comprises reading the precomputed version cache object;

determining whether the precompute sequence number for the precomputed version cache object matches a current sequence number assigned to the plan version; and

in response to a determination that the precompute sequence number for the precomputed version cache object does not match the current sequence number assigned to the plan version, replacing the precomputed numerical value with the at least one formula.

2. The computer-implemented method of claim 1 , further comprising:

receiving second input data from the device;

generating second data corresponding to a second plan version corresponding to the second input data;

receiving, from the device, a second signal indicating second results should be calculated;

determining the second data is represented in a list of plan versions to be precomputed;

generating a second precomputed version cache object based on the second data; and

sending second output data to the device, the second output data corresponding to the second precomputed version cache object.

3. The computer-implemented method of claim 1 , further comprising:

receiving second input data from the device;

generating second data corresponding to a second plan version corresponding to the second input data;

receiving, from the device, a second signal indicating second results should be calculated;

determining the second data is unrepresented in a list of plan versions to be precomputed;

determining a second precomputed version cache object is unrepresented in the precomputed version cache storage;

generating second output data by replacing formulas represented in the second data with values; and

sending the second output data to the device.

4. The computer-implemented method of claim 1 , wherein the input data is first input data associated with a first unique identifier and the precomputed version cache object is associated with the first unique identifier, and wherein the computer-implemented method further comprises:

receiving second input data from the device;

generating, based on the second input data, second data corresponding to an updated plan version;

associating the second data with a second unique identifier; and

marking the precomputed version cache object as invalid based on the second data being associated with the second unique identifier and the precomputed version cache object being associated with the first unique identifier.

5. The computer-implemented method of claim 4 , further comprising:

deleting the precomputed version cache object based on the second data being associated with the second unique identifier and the precomputed version cache object being associated with the first unique identifier.

6. The computer-implemented method of claim 4 , further comprising:

generating, based on the second data, a second precomputed version cache object corresponding to an updated precomputed version cache object; and

associating the second precomputed version cache object with the second unique identifier.

7. A system comprising:

at least one processor; and

at least one memory including instructions that, when executed by the at least one processor, cause the system to:

receive input data associated with a plan version from a device, the input data including cells, each cell of a subset of the cells including one of a numeric value or a formula;

generate a version cache object corresponding to the input data;

assign a precompute sequence number to the plan version;

generate a precomputed version cache object, comprising replacing at least one formula included in the version cache object with a precomputed numerical value, generating of the precomputed version cache object being imperceptible to a user of the device;

assign the precompute sequence number to the precomputed version cache object;

receive, from the device, a signal indicating a result should be calculated, wherein calculating the result comprises reading the precomputed version cache object;

determine whether the precompute sequence number for the precomputed version cache object matches a current sequence number assigned to the plan version; and

in response to a determination that the precompute sequence number for the precomputed version cache object does not match the current sequence number assigned to the plan version, replace the precomputed numerical value with the at least one formula.

8. The system of claim 7 , wherein the instructions, when executed by the at least one processor, further cause the system to:

receive second input data from the device;

generate second data corresponding to a second plan version corresponding to the second input data;

receive, from the device, a second signal indicating second results should be calculated;

determine the second data is represented in a list of plan versions to be precomputed;

generate a second precomputed version cache object based on the second data; and

send second output data to the device, the second output data corresponding to the second precomputed version cache object.

9. The system of claim 7 , wherein the instructions, when executed by the at least one processor, further cause the system to:

receive second input data from the device;

generate second data corresponding to a second plan version corresponding to the second input data;

receive, from the device, a second signal indicating second results should be calculated;

determine the second data is unrepresented in a list of plan versions to be precomputed;

determine a second precomputed version cache object is unrepresented in the precomputed version cache storage;

generate second output data by replacing formulas represented in the second data with values; and

send the second output data to the device.

10. The system of claim 7 , wherein the input data is first input data associated with a first unique identifier and the precomputed version cache object is associated with the first unique identifier, and wherein the instructions, when executed by the at least one processor, further cause the system to:

receive second input data from the device;

generate, based on the second input data, second data corresponding to an updated plan version;

associate the second data with a second unique identifier; and

mark the precomputed version cache object as invalid based on the second data being associated with the second unique identifier and the precomputed version cache object being associated with the first unique identifier.

11. The system of claim 10 , wherein the instructions, when executed by the at least one processor, further cause the system to:

delete the precomputed version cache object based on the second data being associated with the second unique identifier and the precomputed version cache object being associated with the first unique identifier.

12. The system of claim 10 , wherein the instructions, when executed by the at least one processor, further cause the system to:

generate, based on the second data, a second precomputed version cache object corresponding to an updated precomputed version cache object; and

associate the second precomputed version cache object with the second unique identifier.

13. The system of claim 7 , wherein the instructions, when executed by the at least one processor, further cause the system to:

generate precomputed version cache objects based on data corresponding to plan versions received subsequent to a previous precomputation iteration.

14. A first device comprising:

at least one processor; and

at least one memory including instructions that, when executed by the at least one processor, cause the first device to:

receive input data associated with a plan version from a second device, the input data including cells, each cell of a subset of the cells including one of a numeric value or a formula;

generate a version cache object corresponding to the input data;

assign a precompute sequence number to the plan version;

generate a precomputed version cache object, comprising replacing at least one formula included in the version cache object with a precomputed numerical value, generating of the precomputed version cache object being imperceptible to a user of the device;

assign the precompute sequence number to the precomputed version cache object;

receive, from the second device, a signal indicating a result should be calculated, wherein calculating the result comprises reading the precomputed version cache object;

determine whether the precompute sequence number for the precomputed version cache object matches a current sequence number assigned to the plan version; and

in response to a determination that the precompute sequence number for the precomputed version cache object does not match the current sequence number assigned to the plan version, replace the precomputed numerical value with the at least one formula.

15. The first device of claim 14 , wherein the instructions, when executed by the at least one processor, further cause the first device to:

receive second input data from the second device;

generate second data corresponding to a second plan version corresponding to the second input data;

receive, from the second device, a second signal indicating second results should be calculated;

determine the second data is represented in a list of plan versions to be precomputed;

generate a second precomputed version cache object based on the second data; and

send second output data to the second device, the second output data corresponding to the second precomputed version cache object.

16. The first device of claim 14 , wherein the instructions, when executed by the at least one processor, further cause the first device to:

receive second input data from the second device;

generate second data corresponding to a second plan version corresponding to the second input data;

receive, from the second device, a second signal indicating second results should be calculated;

determine the second data is unrepresented in a list of plan versions to be precomputed;

determine a second precomputed version cache object is unrepresented in the precomputed version cache storage;

generate second output data by replacing formulas represented in the second data with values; and

send the second output data to the second device.

17. The first device of claim 14 , wherein the input data is first input data associated with a first unique identifier and the precomputed version cache object is associated with the first unique identifier, and wherein the instructions, when executed by the at least one processor, further cause the first device to:

receive second input data from the second device;

generate, based on the second input data, second data corresponding to an updated plan version;

associate the second data with a second unique identifier; and

mark the precomputed version cache object as invalid based on the second data being associated with the second unique identifier and the precomputed version cache object being associated with the first unique identifier.

18. The first device of claim 17 , wherein the instructions, when executed by the at least one processor, further cause the first device to:

delete the precomputed version cache object based on the second data being associated with the second unique identifier and the precomputed version cache object being associated with the first unique identifier.

19. The first device of claim 17 , wherein the instructions, when executed by the at least one processor, further cause the first device to:

generate, based on the second data, a second precomputed version cache object corresponding to an updated precomputed version cache object; and

associate the second precomputed version cache object with the second unique identifier.

20. The first device of claim 14 , wherein the instructions, when executed by the at least one processor, further cause the first device to:

generate precomputed version cache objects based on data corresponding to plan versions received subsequent to a previous precomputation iteration.

21. The computer-implemented method of claim 1 , further comprising:

determining a precomputed version cache storage includes the precomputed version cache object.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 6, 2019
From: ADAPTIVE INSIGHTS LLC
To: WORKDAY, INC.
Reel/Frame 050931/0879 →
CONVERSION Recorded Aug 1, 2019
From: ADAPTIVE INSIGHTS, INC.
To: ADAPTIVE INSIGHTS LLC
Reel/Frame 049938/0850 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THIRD INVENTORS NAME PREVIOUSLY RECORDED AT REEL: 046813 FRAME: 0020. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 8, 2019
From: NGUYEN, NGOC; LEE, DARREN KERMIT; COHEN, ILAN; MCCUTCHEON, CRICHTON; BORNHOEVD, CHRISTOF
To: ADAPTIVE INSIGHTS, INC.
Reel/Frame 048030/0534 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 7, 2018
From: NGUYEN, NGOC; LEE, DARREN KERMIT; COHEN, HAN; MCCUTCHEON, CRICHTON; BORNHOEVD, CHRISTOF
To: ADAPTIVE INSIGHTS, INC.
Reel/Frame 046813/0020 →
Continuity (2)
Provisional Application 62551564 · Aug 29, 2017
Related Publication 20190188143A1 · Jun 20, 2019