Batch Processing Queue for Multi-Tenant Database Transactions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional client/server transaction models are inefficient for handling long-duration transactions, leading to client device timeouts, resource wastage, and potential data corruption, especially when dealing with large or numerous database transactions, which can overwhelm shared architectures and degrade performance for other users.

Innovation Solution

Implementing batch processing in an on-demand service environment, where requests are divided into sub-groups, queued, and processed asynchronously, allowing for efficient utilization of resources without affecting other users, and enabling completion notifications when all sub-groups are processed.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Duration of action of moving object

If a conventional client/server transaction model is used for long-duration transactions, then the server can process the request, but the client device may timeout or appear hung before receiving a response, wasting time and potentially causing the server to waste resources

Engineering Contradiction:
Improvetransaction processing durationVSAvoidclient waiting time
Core Design Contradiction:
Duration of action of moving objectVSLoss of time

Solution Approach 1:

The patent segments long-duration transactions into smaller processing units that can be handled more efficiently. By dividing the transaction processing into manageable segments, the system reduces the perceived waiting time for clients while maintaining comprehensive processing capabilities on the server side.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system performs preliminary actions by preparing and validating transaction requests before full processing begins. This includes pre-checking client connectivity, validating request formats, and setting up processing contexts in advance, so that if a client disconnects, the system has already minimized resource commitment and can abort gracefully without wasting extensive resources.

Inventive Principle:
Principle #10Preliminary action

2Ease of operation

If a client terminates prematurely due to perceived delay, then the client can resume operations, but the server may have already processed the request, causing duplicative effort and transactional errors

Engineering Contradiction:
Improveclient responsivenessVSAvoidtransaction integrity
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The system implements feedback mechanisms where the server acknowledges receipt of requests and provides status updates to clients. This feedback loop allows clients to understand that their requests are being processed even if the full result isn't immediately available, reducing premature terminations. Conversely, if a client disconnects, the server can detect this and provide feedback to prevent duplicative processing.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The patent introduces an intermediary layer (such as a message queue or transaction coordinator) that sits between the client and server. This intermediary manages the transaction lifecycle, tracking request states and coordinating between client actions and server processing. It can detect client disconnections and prevent the server from executing duplicate transactions, maintaining integrity while allowing client flexibility.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Speed

If large transactions or numerous small transactions are processed quickly, then client satisfaction improves, but the supporting architecture may be overburdened or overwhelmed

Engineering Contradiction:
Improvetransaction processing speedVSAvoidarchitecture load
Core Design Contradiction:
SpeedVSDevice complexity

Solution Approach 1:

The system employs dynamic resource allocation and adaptive processing strategies. Processing capacity is dynamically adjusted based on current system load, client priorities, and transaction characteristics. When the architecture is under heavy load, the system can dynamically queue transactions, adjust processing threads, or allocate resources differently to prevent overwhelming the system while still maintaining good throughput during lighter load periods.

Inventive Principle:
Principle #15Dynamics

4Productivity

If processing resources are dedicated to complete a request for one entity, then that entity receives fast service, but performance for all other entities sharing the supporting architecture degrades

Engineering Contradiction:
Improveindividual entity processing throughputVSAvoidoverall system performance
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent implements universal resource pools and multi-functional processing components that can serve multiple entities simultaneously. Instead of dedicated resources for each entity, the system uses shared resource pools (processing threads, database connections, memory buffers) that can be dynamically allocated to any entity needing service. This multi-functionality allows the system to maintain high throughput for individual entities while preventing any single entity from monopolizing resources and degrading overall system performance.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS10013278B2Methods and systems for batch processing in an on-demand service environment
Publication Date: 2018.07.03 SALESFORCE INC
  • US10013278B2 patent drawing
  • US10013278B2 patent drawing
  • US10013278B2 patent drawing

AI summary

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.