IP Library Granted Patent US 10,050,858
Granted Patent B2
US 10,050,858 · App. 14/522,320 · Granted Aug 14, 2018

Selectively re-homing data processing tasks based on data complexity and candidate system performance characteristics

Inventor: Mike Rosengarten (Sunnyvale, CA)
Assignee: OPENGOV, INC.
H04L43/0817H04L67/1008H04L67/32H04L67/34
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,050,858
App. No.
14/522,320
Granted
Aug 14, 2018
Kind
B2
Abstract

Techniques are disclosed for selectively re-homing data processing tasks based on data complexity and candidate system performance characteristics. A server system obtains performance capabilities of a target system such that the server can decide whether to send program code and data to the target system for execution, based in part on the complexity of the data and code used in performing the request. In cases where a client system sending a request is capable of executing code and where other constraints are satisfied, e.g., bandwidth, throughput, and data volume, then the server can decide to re-home both the data and the program code to the client for execution.

Claims (31)

1. A computer-implemented method for responding to a data processing request received by a first computing system, the method comprising:

receiving, from a second computing system, the data processing request;

obtaining a data complexity score assigned to data to be processed in response to the data processing request, wherein the data complexity score is computed by the first computing system based on at least one of: the size of the data; the structure of the data; the sequence of the data; and the organization of the data;

obtaining a code complexity score assigned to one or more code components executed to perform the data processing request, wherein the code complexity score is computed by the first computing system based on at least one of: the number of lines of code in the one or more code components; an expected O(n) performance of the one or more code components; expected memory requirements of the one or more code components; and a number of expected operations of the one or more code components;

determining, based on the data complexity score, code complexity score, and on performance metrics associated with the second computing system, whether to re-home the data and the one or more code components to the second computing system; and

upon determining to re-home the data and the one or more executable code components to the second computing system, sending the data and the one or more code components to the second computing system, wherein the second computing system executes the code components using the data to service the data processing request.

2. The method of claim 1 , further comprising upon determining to not re-home the data and the one or more executable code components to the second computing system, executing, by the first computing system, the code components using the data to service the data processing request.

3. The method of claim 1 , further comprising, determining that one or more preconditions for re-homing the data and the one or more code components to the second computing system are satisfied.

4. The method of claim 1 , further comprising, sending a performance benchmark component to the second computing system, wherein the performance benchmark component is configured to generate the performance metrics associated with the second computing system.

5. The method of claim 1 , wherein the data comprises a chart of accounts and one or more general ledgers.

6. A non-transitory computer-readable storage medium storing instructions, which, when executed on a processor, performs an operation for responding to a data processing request received by a first computing system, the operation comprising:

receiving, from a second computing system, the data processing request;

obtaining a data complexity score assigned to data to be processed in response to the data processing request, wherein the data complexity score is computed by the first computing system based on at least one of: the size of the data; the structure of the data; the sequence of the data; and the organization of the data;

obtaining a code complexity score assigned to one or more code components executed to perform the data processing request, wherein the code complexity score is computed by the first computing system based on at least one of: the number of lines of code in the one or more code components; an expected O(n) performance of the one or more code components; expected memory requirements of the one or more code components; and a number of expected operations of the one or more code components;

determining, based on the data complexity score, code complexity score, and on performance metrics associated with a second computing system, whether to re-home the data and the one or more code components to the second computing system, and upon determining to re-home the data and the one or more executable code components to the second computing system, sending the data and the one or more code components to the second computing system, wherein the second computing system executes the code components using the data to service the data processing request.

7. The non-transitory computer-readable storage medium of claim 6 , wherein the operation further comprises upon determining to not re-home the data and the one or more executable code components to the second computing system, executing, by the first computing system, the code components using the data to service the data processing request.

8. The non-transitory computer-readable storage medium of claim 6 , wherein the operation further comprises, determining that one or more preconditions for re-homing the data and the one or more code components to the second computing system are satisfied.

9. The non-transitory computer-readable storage medium of claim 6 , wherein the operation further comprises, sending a performance benchmark component to the second computing system, wherein the performance benchmark component is configured to generate the performance metrics associated with the second computing system.

10. The non-transitory computer-readable storage medium of claim 6 , wherein the data comprises a chart of accounts and one or more general ledgers.

11. A system, comprising:

a processor; and

a memory hosting an application, which, when executed on the processor, performs an operation for an operation for responding to a data processing request received by a first computing system, the operation comprising:

receiving, from a second computing system, the data processing request,

obtaining a data complexity score assigned to data to be processed in response to the data processing request, wherein the data complexity score is computed by the first computing system based on at least one of: the size of the data; the structure of the data; the sequence of the data; and the organization of the data,

obtaining a code complexity score assigned to one or more code components executed to perform the data processing request, wherein the code complexity score is computed by the first computing system based on at least one of: the number of lines of code in the one or more code components; an expected O(n) performance of the one or more code components; expected memory requirements of the one or more code components; and a number of expected operations of the one or more code components, and

determining, based on the data complexity score, code complexity score, and on performance metrics associated with a second computing system, whether to re-home the data and the one or more code components to the second computing system, and

upon determining to re-home the data and the one or more executable code components to the second computing system, sending the data and the one or more code components to the second computing system, wherein the second computing system executes the code components using the data to service the data processing request.

12. The system of claim 11 , wherein the operation further comprises, upon determining to not re-home the data and the one or more executable code components to the second computing system, executing, by the first computing system, the code components using the data to service the data processing request.

13. The system of claim 11 , wherein the operation further comprises, determining that one or more preconditions for re-homing the data and the one or more code components to the second computing system are satisfied.

14. The system of claim 11 , wherein the operation further comprises, sending a performance benchmark component to the second computing system, wherein the performance benchmark component is configured to generate the performance metrics associated with the second computing system.

15. The system of claim 11 , wherein the data comprises a chart of accounts and one or more general ledgers.

Assignments (3)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 27, 2023
From: VCP CAPITAL MARKETS, LLC
To: OPENGOV, INC.
Reel/Frame 062881/0993 →
SECURITY INTEREST Recorded Aug 29, 2019
From: OPENGOV, INC.
To: VCP CAPITAL MARKETS, LLC
Reel/Frame 050210/0270 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2014
From: ROSENGARTEN, MIKE
To: OPENGOV, INC.
Reel/Frame 034022/0900 →
Continuity (1)
Related Publication 20160119209A1 · Apr 28, 2016