IP Library Granted Patent US 11,762,701
Granted Patent B2
US 11,762,701 · App. 17/156,264 · Granted Sep 19, 2023

Computer system providing numeric calculations with less resource usage

Inventors: Gowri Shankar Ravindran (Cupertino, CA); Prashanthi Ramamurthy (Dublin, CA); Kandarp Mahadev Desai (Mountain View, CA)
Assignee: Xactly Corporation
G06F9/5038G06F16/2465G06F16/2471G06F16/27G06F16/9024G06F17/10
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,762,701
App. No.
17/156,264
Granted
Sep 19, 2023
Kind
B2
Abstract

A data processing method includes receiving a request to perform a calculation, identifying, based on the request, data items needed to perform the calculation and retrieving the data items from a data store, storing, in memory, the items, generating graphs for the calculation, wherein each graph comprises one or more nodes, each node comprising instructions to perform at least a portion of the calculation and at least one data item needed by the portion of the calculation, executing each of the graphs to generate a result for the calculation by traversing the graph and processing each node using the instructions of the node and the at least one data item of the node, wherein executing is performed without accessing the data store, and storing, in the data store, the result.

Claims (44)

1. A computer-implemented method executed by a computing system comprising one or more computers communicatively connected to a data store, the method comprising:

receiving, from a client computing device, a request to perform a calculation, wherein data items needed for the calculation are identified based on the request, and wherein the computing system is a multi-tenant system in which client data for different tenants is stored together but subject to access control procedures, wherein the calculation comprises a plurality of parallel computations corresponding to a plurality of identities;

retrieving the data items from the data store into a digital computer memory;

generating a plurality of execution graphs for an in-memory execution of the calculation, wherein each of the plurality of execution graphs is for a particular tenant among a plurality of different tenants associated with the multi-tenant system, and wherein each of the plurality of execution graphs corresponds to each of the plurality of identities;

executing the calculation by traversing the plurality of execution graphs using a graph traversal algorithm to generate a result to the request; and

storing, in the data store, the result.

2. The method of claim 1 , wherein each of the plurality of execution graphs comprises one or more nodes, wherein each node comprises executable program instructions to perform at least one or more steps of the calculation and at least one of the data items needed by the at least one or more steps of the calculation.

3. The method of claim 2 , wherein two nodes of the one or more nodes for a particular graph are connected by an edge that represents a dependency between the two nodes and guidance on an order of execution of nodes.

4. The method of claim 2 , wherein a node of the one or more nodes for a first graph is dependent on a second graph.

5. The method of claim 2 , further comprising:

determining a first node of a particular graph of the plurality of execution graphs will execute on a third computing device and a second node of the particular graph of the plurality of execution graphs will execute on a fourth computing device; and

executing, in parallel, the first node by the third computing device and the second node by the fourth computing device.

6. The method of claim 1 , further comprising:

determining a first graph of the plurality of execution graphs will execute on a first computing device and a second graph of the plurality of execution graphs will execute on a second computing device; and

executing, in parallel, the first graph by the first computing device and the second graph by the second computing device.

7. The method of claim 1 , wherein the generating results in a digitally stored in-memory list of execution graphs.

8. The method of claim 7 , wherein traversing the plurality of execution graphs comprises traversing the in-memory list executing each of the plurality of execution graphs based on input from an in-memory context comprising instructions for the calculation of that graph.

9. The method of claim 1 , wherein the data store is a distributed data store.

10. The method of claim 1 , wherein the computing system comprises a public cloud.

11. The method of claim 1 , further comprising causing displaying, on the client computing device, the result.

12. A computing system comprising:

one or more computers communicatively connected to a data store, the one or more computers comprising one or more processors and one or more computer-readable non-transitory storage media coupled to one or more of the processors and comprising instructions operable when executed by the one or more processors to cause the one or more computers to:

receive, from a client computing device, a request to perform a calculation, wherein data items needed for the calculation are identified based on the request, and wherein the computing system is a multi-tenant system in which client data for different tenants is stored together but subject to access control procedures, wherein the calculation comprises a plurality of parallel computations corresponding to a plurality of identities;

retrieve the data items from the data store into a digital computer memory;

generate a plurality of execution graphs for an in-memory execution of the calculation, wherein each of the plurality of execution graphs is for a particular tenant among a plurality of different tenants associated with the multi-tenant system, and wherein each of the plurality of execution graphs corresponds to each of the plurality of identities;

execute the calculation by traversing the plurality of execution graphs using a graph traversal algorithm to generate a result to the request; and

store, in the data store, the result.

13. The system of claim 12 , wherein each of the plurality of execution graphs comprises one or more nodes, wherein each node comprises executable program instructions to perform at least one or more steps of the calculation and at least one of the data items needed by the at least one or more steps of the calculation.

14. The system of claim 13 , wherein two nodes of the one or more nodes for a particular graph are connected by an edge that represents a dependency between the two nodes and guidance on an order of execution of nodes.

15. The system of claim 13 , wherein a node of the one or more nodes for a first graph is dependent on a second graph.

16. The system of claim 13 , wherein the one or more processors are further operable when executing the instructions to:

determine a first node of a particular graph of the plurality of execution graphs will execute on a third computing device and a second node of the particular graph of the plurality of execution graphs will execute on a fourth computing device; and

execute, in parallel, the first node by the third computing device and the second node by the fourth computing device.

17. The system of claim 12 , wherein the one or more processors are further operable when executing the instructions to:

determine a first graph of the plurality of execution graphs will execute on a first computing device and a second graph of the plurality of execution graphs will execute on a second computing device; and

execute, in parallel, the first graph by the first computing device and the second graph by the second computing device.

18. The system of claim 12 , wherein the generating results in a digitally stored in-memory list of execution graphs.

19. The system of claim 18 , wherein traversing the plurality of execution graphs comprises traversing the in-memory list executing each of the plurality of execution graphs based on input from an in-memory context comprising instructions for the calculation of the graph.

20. One or more computer-readable non-transitory storage media embodying software that is operable when executed by a computing system comprising one or more computers communicatively connected to a data store to:

receive, from a client computing device, a request to perform a calculation, wherein data items needed for the calculation are identified based on the request, and wherein the computing system is a multi-tenant system in which client data for different tenants is stored together but subject to access control procedures, wherein the calculation comprises a plurality of parallel computations corresponding to a plurality of identities;

retrieve the data items from the data store into a digital computer memory;

generate a plurality of execution graphs for an in-memory execution of the calculation, wherein each of the plurality of execution graphs is for a particular tenant among a plurality of different tenants associated with the multi-tenant system, and wherein each of the plurality of execution graphs corresponds to each of the plurality of identities;

execute the calculation by traversing the plurality of execution graphs using a graph traversal algorithm to generate a result to the request; and

store, in the data store, the result.

Assignments (2)
SECURITY INTEREST Recorded Aug 21, 2024
From: XACTLY CORPORATION
To: GOLDMAN SACHS BDC, INC., AS COLLATERAL AGENT
Reel/Frame 068349/0781 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 26, 2021
From: RAVINDRAN, GOWRI SHANKAR; RAMAMURTHY, PRASHANTHI; DESAI, KANDARP MAHADEV
To: XACTLY CORPORATION
Reel/Frame 055030/0701 →
Continuity (3)
Continuation 16429971 · Jun 3, 2019
Continuation 15977939 · May 11, 2018
Related Publication 20210141674A1 · May 13, 2021