Automated client/server operation partitioning
First Claim
1. A method of evaluating an operation comprising instructions to be processed by a processing engine for a client on a device having a processor, the method comprising:
- executing, on the processor, instructions that cause the device to;
partition the operation into a partitioned operation having a pre-engine portion executed by the client, a processing engine portion executed by the processing engine, and a post-engine portion executed by the client;
modify the partitioned operation by;
identifying, in the partitioned operation, a compacting instruction that;
compacts a result of the operation,follows a computationally intensive instruction involving the result, andcan be logically executed either before or after the computationally intensive instruction; and
moving the compacting instruction in the partitioned operation to precede the computationally intensive instruction; and
execute the partitioned operation, including the compacting operation moved to precede the computationally intensive instruction, by;
executing the pre-engine portion at the client to produce a pre-engine partially executed operation;
sending the pre-engine partially executed operation to the processing engine;
receiving a processing engine partially executed operation from the processing engine after sending the pre-engine partially executed operation; and
executing the post-engine portion of the computing engine partially executed operation at the client to complete the operation execution.
1 Assignment
0 Petitions
Accused Products
Abstract
An operation (such as a relational query) may be processed on a processing engine (such as a relational database server) on behalf of a client. A conventional processing involves the delivery of the operation to the processing engine, which executes the entire operation to completion and returns a result data set. It may be more efficient to allocate part of the operation to be performed on the client, but a developer may be unable or unavailable to rewrite the operation in a distributed manner. Instead, the operation may be automatically partitioned into a pre-engine client portion, a processing engine portion, and a client portion, and the instructions of each portion may be automatically allocated respectively to the client, the server, and the client. The partitioning may be adjusted to conserve computing resources, such as bandwidth and storage, and the instructions may be reordered to improve the processing of the operation.
106 Citations
20 Claims
-
1. A method of evaluating an operation comprising instructions to be processed by a processing engine for a client on a device having a processor, the method comprising:
executing, on the processor, instructions that cause the device to; partition the operation into a partitioned operation having a pre-engine portion executed by the client, a processing engine portion executed by the processing engine, and a post-engine portion executed by the client; modify the partitioned operation by; identifying, in the partitioned operation, a compacting instruction that; compacts a result of the operation, follows a computationally intensive instruction involving the result, and can be logically executed either before or after the computationally intensive instruction; and moving the compacting instruction in the partitioned operation to precede the computationally intensive instruction; and execute the partitioned operation, including the compacting operation moved to precede the computationally intensive instruction, by; executing the pre-engine portion at the client to produce a pre-engine partially executed operation; sending the pre-engine partially executed operation to the processing engine; receiving a processing engine partially executed operation from the processing engine after sending the pre-engine partially executed operation; and executing the post-engine portion of the computing engine partially executed operation at the client to complete the operation execution. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
13. A computer-readable memory device storing data encoding programming that, when executed by a processor of a device, causes the device to evaluate an operation comprising instructions to be processed by a processing engine for a client, by:
-
partitioning the operation into a partitioned operation having a pre-engine portion executed by the client, a processing engine portion executed by the processing engine, and a post-engine portion executed by the client; modifying the partitioned operation by; identifying, in the partitioned operation, a compacting instruction that; compacts a result of the operation, follows a computationally intensive instruction involving the result, and can be logically executed either before or after the computationally intensive instruction, and moving the compacting instruction in the partitioned operation to precede the computationally intensive instruction; and executing the partitioned operation, including the compacting operation moved to precede the computationally intensive instruction, by; executing the pre-engine portion at the client to produce a pre-engine partially executed operation, and execute the post-engine portion of a processing engine partially executed operation at the client to complete the operation execution; sending the pre-engine partially executed operation produced by the client portion execution component to the processing engine, and receiving the processing engine partially executed operation from the processing engine after sending the pre-engine partially executed operation. - View Dependent Claims (14, 15, 16)
-
-
17. A device that evaluates an operation comprising instructions to be processed by a processing engine for a client, the device comprising:
-
a processor; and a memory storing data encoding programming that, when executed by the processor, causes the device to; partition the operation into a partitioned operation having a pre-engine portion executed by the client, a processing engine portion executed by the processing engine, and a post-engine portion executed by the client; modify the partitioned operation by; identifying, in the partitioned operation, a compacting instruction that; compacts a result of the operation, follows a computationally intensive instruction involving the result, and can be logically executed either before or after the computationally intensive instruction, and moving the compacting instruction in the partitioned operation to precede the computationally intensive instruction; execute the partitioned operation, including the compacting operation moved to precede the computationally intensive instruction, by; executing the pre-engine portion at the client to produce a pre-engine partially executed operation; sending the pre-engine partially executed operation to the processing engine; receiving a processing engine partially executed operation from the processing engine after sending the pre-engine partially executed operation; and executing the post-engine portion of the computing engine partially executed operation at the client to complete the operation execution. - View Dependent Claims (18, 19, 20)
-
Specification