AUTOMATED CLIENT/SERVER OPERATION PARTITIONING
First Claim
1. A computer-implemented method of evaluating an operation comprising instructions to be processed by a processing engine for a client, the method 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;
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.
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.
75 Citations
20 Claims
-
1. A computer-implemented method of evaluating an operation comprising instructions to be processed by a processing engine for a client, the method 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; 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, 14, 15)
-
-
16. A system for evaluating an operation comprising instructions to be processed by a processing engine for a client, the system comprising:
-
an operation partitioning component configured 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; a client portion execution component configured to; execute 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; and a processing engine communications component configured to; send the pre-engine partially executed operation produced by the client portion execution component to the processing engine, and receive 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 computer-implemented method of evaluating an operation comprising a language-integrated query to be processed by a processing engine comprising a relational data query processor for a client, the method comprising:
-
transforming the operation into an expression tree; 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; expanding 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; adjusting the partitioned operation 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 can 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 can 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 can 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 can 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 can 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 can 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 can be equivalently executed in the processing engine portion, moving the relocatable instruction into the processing engine portion; 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.
-
Specification