Automated client/server operation partitioning
First Claim
1. A method of evaluating an operation comprising instructions to process by a processing engine for a client on a device having a processor, the method comprising:
- executing on the processor instructions 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;
after partitioning the operation between a first instruction in the client executed portion and a last instruction in the processing engine portion, adjust the partitioned operation according to at least one instruction adjusting rule by moving at least one instruction other than the first instruction in the client executed portion and the last instruction in the processing engine portion to the other of the processing engine portion and the client executed 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.
2 Assignments
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.
61 Citations
13 Claims
-
1. A method of evaluating an operation comprising instructions to process by a processing engine for a client on a device having a processor, the method comprising:
executing on the processor instructions 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; after partitioning the operation between a first instruction in the client executed portion and a last instruction in the processing engine portion, adjust the partitioned operation according to at least one instruction adjusting rule by moving at least one instruction other than the first instruction in the client executed portion and the last instruction in the processing engine portion to the other of the processing engine portion and the client executed 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, 12)
-
8. A storage device storing instructions to evaluate an operation to process by a processing engine for a client, the instructions comprising:
-
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, and after partitioning the operation between a first instruction in the client executed portion and a last instruction in the processing engine portion, adjust the partitioned operation according to at least one instruction adjusting rule by moving at least one instruction other than the first instruction in the client executed portion and the last instruction in the processing engine portion to the other of the processing engine portion and the client executed portion; executing the pre-engine portion at the client to produce a pre-engine partially executed operation, and 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 executed 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 (9, 10, 13)
-
-
11. A method of evaluating an operation comprising a language-integrated query to process by a processing engine comprising a relational data query processor for a client on a device having a processor, the method comprising:
executing on the processor instructions to; transform the operation into an expression tree; 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; expand at least one portion of the partitioned query executed by one of the client and the processing engine, and equivalently compacting portions of the partitioned query executed by the other of the client and the processing engine, related to at least one of; processing capacity of the processing engine, processing capacity of the client, computational load of the processing engine, computational load of the client, storage capacity of the processing engine, storage capacity of the client, and communications capacity between the processing engine and the client; after partitioning the operation between a first instruction in the client executed portion a last instruction in the processing engine portion, adjust the partitioned operation according to at least one instruction adjusting rule by moving at least one instruction other than the first instruction in the client executed portion and the last instruction the processing engine portion to the other of the processing engine portion and the client executed portion according to instruction adjusting rules comprising at least one of; upon identifying a compacting instruction in the post-engine portion that compacts the post-engine portion and be equivalently executed in the processing engine portion, moving the compacting instruction to the processing engine portion; upon identifying a compacting instruction in the processing engine portion that compacts the processing engine portion and be equivalently executed in the pre-engine portion, moving the compacting instruction to the pre-engine portion; upon identifying a compacting instruction that compacts the operation, follows a computationally intensive instruction, and be equivalently executed before the computationally intensive instruction, moving the compacting instruction before the computationally intensive instruction; upon identifying a relocatable instruction in the processing engine component that is preferably executed by the client, follows an unrelocatable instruction that is preferably executed by the processing engine, and be equivalently executed in the pre-engine portion, moving the relocatable instruction into the pre-engine portion; upon identifying a relocatable instruction in the processing engine component that is preferably executed by the client, is preceded by an unrelocatable instruction that is preferably executed by the processing engine, and be equivalently executed in the post-engine portion, moving the relocatable instruction into the post-engine portion; upon identifying a relocatable instruction in the pre-engine component that is preferably executed by the processing engine, precedes an unrelocatable instruction that is preferably executed by the client, and be equivalently executed in the processing engine portion, moving the relocatable instruction into the processing engine portion; and upon identifying a relocatable instruction in the post-engine component that is preferably executed by the processing engine, follows an unrelocatable instruction that is preferably executed by the client, and be equivalently executed in the processing engine portion, moving the relocatable instruction into the processing engine 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.
Specification