Methods and systems for batch processing in an on-demand service environment
First Claim
1. A method in a system having at least a processor and a memory therein for executing instructions, wherein the method comprises:
- communicating, via a request interface of the system, with a remotely connected client device during a synchronous request/reply session established between the client device and the request interface of the system;
receiving at the request interface of the system, a request for synchronous processing from the remotely connected client device, the request specifying a real-time transaction request to retrieve or store data on behalf of the client device at a database system communicably interfaced with the system;
rejecting or terminating the real-time transaction request;
receiving, at the system, a batch processing request from the remotely connected client device, the batch processing request re-submitting the real-time transaction request to retrieve or store data on behalf of the client device at a database system as a batch processing request to be completed via asynchronous processing at the database system;
dividing the batch processing request into a plurality of processing target sub-groups;
queuing the batch processing request within a batch processing queue;
releasing each of the plurality of processing target sub-groups for processing by the database system at one or more times specified by the batch processing queue; and
sending a completion status to an originator of the batch processing request, the completion status indicating a successful or unsuccessful completion for each processing target sub-group, wherein each completion status comprises a status selected from the group comprising;
complete and committed without error;
complete and committed after re-try due to excessive use of resources;
complete and committed after re-try due to excessive workload at the database system; and
abort due to one or more errors for the respective processing target sub-group, wherein any database transaction error for the respective processing target sub-group prevents committing transaction associated with the respective processing target sub-group to the database system.
1 Assignment
0 Petitions
Accused Products
Abstract
In accordance with embodiments disclosed herein, there are provided mechanisms and methods for batch processing in an on-demand service environment. For example, in one embodiment, mechanisms include receiving a processing request for a multi-tenant database, in which the processing request specifies processing logic and a processing target group within the multi-tenant database. Such an embodiment further includes dividing or chunking the processing target group into a plurality of processing target sub-groups, queuing the processing request with a batch processing queue for the multi-tenant database among a plurality of previously queued processing requests, and releasing each of the plurality of processing target sub-groups for processing in the multi-tenant database via the processing logic at one or more times specified by the batch processing queue.
126 Citations
22 Claims
-
1. A method in a system having at least a processor and a memory therein for executing instructions, wherein the method comprises:
-
communicating, via a request interface of the system, with a remotely connected client device during a synchronous request/reply session established between the client device and the request interface of the system; receiving at the request interface of the system, a request for synchronous processing from the remotely connected client device, the request specifying a real-time transaction request to retrieve or store data on behalf of the client device at a database system communicably interfaced with the system; rejecting or terminating the real-time transaction request; receiving, at the system, a batch processing request from the remotely connected client device, the batch processing request re-submitting the real-time transaction request to retrieve or store data on behalf of the client device at a database system as a batch processing request to be completed via asynchronous processing at the database system; dividing the batch processing request into a plurality of processing target sub-groups; queuing the batch processing request within a batch processing queue; releasing each of the plurality of processing target sub-groups for processing by the database system at one or more times specified by the batch processing queue; and sending a completion status to an originator of the batch processing request, the completion status indicating a successful or unsuccessful completion for each processing target sub-group, wherein each completion status comprises a status selected from the group comprising; complete and committed without error; complete and committed after re-try due to excessive use of resources; complete and committed after re-try due to excessive workload at the database system; and abort due to one or more errors for the respective processing target sub-group, wherein any database transaction error for the respective processing target sub-group prevents committing transaction associated with the respective processing target sub-group to the database system. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A method comprising:
-
receiving a processing request for a multi-tenant database, wherein the processing request specifies processing logic and a processing target group within the multi-tenant database; dividing the processing target group into a plurality of processing target sub-groups; queuing the processing request with a batch processing queue for the multi-tenant database among a plurality of previously queued processing requests; releasing each of the plurality of processing target sub-groups for processing in the multi-tenant database via the processing logic at one or more times specified by the batch processing queue; wherein releasing each of the plurality of processing target sub-groups for processing at the one or more times specified by the batch processing queue comprises;
(i) waiting until the queued processing request reaches a top position in the batch processing queue, (ii) selecting an unprocessed one of the plurality of processing target sub-groups, (iii) releasing the selected unprocessed one of the plurality of processing target sub-groups to the multi-tenant database;wherein the method further comprises; re-queuing the processing request with the batch processing queue when at least one of the plurality of processing target sub-groups for the processing request remain unprocessed; iteratively repeating the waiting, selecting, and releasing operations until all of the plurality of processing target sub-groups for the processing request are processed in the multi-tenant database; sending a completion notification to the originator of the processing request, wherein the completion notification comprises a completion report specifying;
(i) each of the plurality of processing target sub-groups released for processing in the multi-tenant database and (ii) a completion status for each of the plurality of processing target sub-groups indicating a successful or unsuccessful completion for each processing target sub-group; andwherein each completion status comprises a status selected from the group comprising; complete and committed without error; complete and committed after re-try due to excessive use of resources; complete and committed after re-try due to excessive multi-tenant database workload; and abort due to one or more errors for the respective processing target sub-group, wherein any database transaction error for the respective processing target sub-group prevents committing transaction associated with the respective processing target sub-group to the multi-tenant database.
-
-
19. Non-transitory computer readable storage media having instructions stored thereupon that, when executed by a processor of a system, the instructions cause the system to perform operations comprising:
-
communicating, via a request interface of the system, with a remotely connected client device during a synchronous request/reply session established between the client device and the request interface of the system; receiving at the request interface of the system, a request for synchronous processing from the remotely connected client device, the request specifying a real-time transaction request to retrieve or store data on behalf of the client device at a database system communicably interfaced with the system; rejecting or terminating the real-time transaction request; receiving, at the system, a batch processing request from the remotely connected client device, the batch processing request re-submitting the real-time transaction request to retrieve or store data on behalf of the client device at a database system as a batch processing request to be completed via asynchronous processing at the database system; dividing the batch processing request into a plurality of processing target sub-groups; queuing the batch processing request within a batch processing queue; releasing each of the plurality of processing target sub-groups for processing by the database system at one or more times specified by the batch processing queue; and sending a completion status to an originator of the batch processing request, the completion status indicating a successful or unsuccessful completion for each processing target sub-group, wherein each completion status comprises a status selected from the group comprising; complete and committed without error; complete and committed after re-try due to excessive use of resources; complete and committed after re-try due to excessive workload at the database system; and abort due to one or more errors for the respective processing target sub-group, wherein any database transaction error for the respective processing target sub-group prevents committing transaction associated with the respective processing target sub-group to the database system. - View Dependent Claims (20)
-
-
21. A system comprising:
-
a processor and memory to execute instructions; a request interface to communicate with a remotely connected client device during a synchronous request/reply session established between the client device and the request interface of the system; the request interface to receive a request for synchronous processing from the remotely connected client device, the request to specify a real-time transaction request to retrieve or store data on behalf of the client device at a database system communicably interfaced with the system; a batch processing governor to reject or terminate the real-time transaction request; the request interface to receive a batch processing request from the remotely connected client device, the batch processing request being a re-submission of the real-time transaction request to retrieve or store data on behalf of the client device at a database system as a batch processing request to be completed via asynchronous processing at the database system; a request chunker to chunk the batch processing request into a plurality of processing target sub-groups; a batch processing queue to queue the batch processing request within a batch processing queue; a release agent to release each of the plurality of processing target sub-groups for processing by the database system at one or more times specified by the batch processing queue; and the request interface to further send a completion status to an originator of the batch processing request, the completion status to indicate a successful or unsuccessful completion for each processing target sub-group, wherein each completion status comprises a status selected from the group comprising; complete and committed without error; complete and committed after re-try due to excessive use of resources; complete and committed after re-try due to excessive workload at the database system; and abort due to one or more errors for the respective processing target sub-group, wherein any database transaction error for the respective processing target sub-group prevents committing transaction associated with the respective processing target sub-group to the database system. - View Dependent Claims (22)
-
Specification