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, the method involving a device having a processor and comprising:
- executing, on the processor, programming that causes the device to;
partition the operation into a partitioned operation having three portions comprising;
a pre-engine portion executed by the client,a processing engine portion executed by the processing engine, anda post-engine portion executed by the client;
identify a relocatable instruction that;
is initially provided in a first portion of the partitioned operation;
is more efficiently executed in a second portion that is different from the first portion;
with respect to an unrelocatable instruction within the first portion, is located on a first side of the relocatable instruction opposite the second portion; and
can be executed opposite the first side of the unrelocatable instruction without altering a logical end result of the operation;
move the relocatable instruction from the first portion to the second portion;
execute the pre-engine portion at the client to produce a pre-engine partially executed operation;
send the pre-engine partially executed operation to the processing engine;
receive a processing engine partially executed operation from the processing engine after sending the pre-engine partially executed operation; and
execute 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.
94 Citations
20 Claims
-
1. A method of evaluating an operation comprising instructions to be processed by a processing engine for a client, the method involving a device having a processor and comprising:
-
executing, on the processor, programming that causes the device to; partition the operation into a partitioned operation having three portions comprising; 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; identify a relocatable instruction that; is initially provided in a first portion of the partitioned operation; is more efficiently executed in a second portion that is different from the first portion; with respect to an unrelocatable instruction within the first portion, is located on a first side of the relocatable instruction opposite the second portion; and can be executed opposite the first side of the unrelocatable instruction without altering a logical end result of the operation; move the relocatable instruction from the first portion to the second portion; execute the pre-engine portion at the client to produce a pre-engine partially executed operation; send the pre-engine partially executed operation to the processing engine; receive a processing engine partially executed operation from the processing engine after sending the pre-engine partially executed operation; and execute 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, 14, 15)
-
-
16. A computer-readable storage 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 three portions comprising; 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; identifying a relocatable instruction that; is initially provided in a first portion of the partitioned operation; is more efficiently executed in a second portion that is different from the first portion; with respect to an unrelocatable instruction within the first portion, is located on a first side of the relocatable instruction opposite the second portion; and can be executed opposite the first side of the unrelocatable instruction without altering a logical end result of the operation; moving the relocatable instruction from the first portion to the second portion; executing the pre-engine portion at the client to produce a pre-engine partially executed operation; executing 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 (17, 18, 19)
-
-
20. 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 three portions comprising; 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; and identify a relocatable instruction that; is initially provided in a first portion of the partitioned operation; with respect to an unrelocatable instruction within the first portion, is located on a first side of the relocatable instruction opposite the second portion; is more efficiently executed in a second portion that is different from the first portion; and can be executed opposite the first side of the unrelocatable instruction without altering a logical end result of the operation; move the relocatable instruction from the first portion to the second portion; execute the pre-engine portion at the client to produce a pre-engine partially executed operation; send the pre-engine partially executed operation produced by the client portion execution component to the processing engine; receive the processing engine partially executed operation from the processing engine after sending the 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.
-
Specification