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;
upon identifying a compacting instruction that;
compacts a result of the operation,follows a computationally intensive instruction involving the result, andcan be equivalently executed before the computationally intensive instruction,moving the compacting instruction in the partitioned operation to precede the computationally intensive instruction;
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.
22 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; upon identifying a compacting instruction that; compacts a result of the operation, follows a computationally intensive instruction involving the result, and can be equivalently executed before the computationally intensive instruction, moving the compacting instruction in the partitioned operation to precede the computationally intensive instruction; 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)
moving the relocatable instruction from the first portion to the second portion.
-
-
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; and upon identifying a compacting instruction that; compacts a result of the operation, follows a computationally intensive instruction involving the result, and can be equivalently executed before the computationally intensive instruction, moving the compacting instruction in the partitioned operation to precede the computationally intensive instruction; 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 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; upon identifying a compacting instruction that; compacts a result of the operation, follows a computationally intensive instruction involving the result, and can be equivalently executed before the computationally intensive instruction, moving the compacting instruction in the partitioned operation to precede the computationally intensive instruction; 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