Realtime, near realtime, and batch are terms commonly used in the field of computer science to classify different types of systems based on their time constraints and processing capabilities.
Realtime systems are intricately connected to the physical world and necessitate precise time constraints for their operation. They encompass synchronous and asynchronous web services, with completion time being a crucial component of their correctness.
Near realtime systems operate within the limits of human perception, enabling them to keep pace with real-world inputs, albeit with some latency. Examples of near realtime systems include JMS, messaging systems, and event-driven systems.
Batch systems are timed systems that execute when triggered. They involve processing large blocks of computing tasks with macroscopic deadlines, and can be performed at any given time and location. Batch systems are self-contained and typically process data after it has been accumulated. Prominent examples of batch systems include data analytics and scheduled reports.
Understanding the distinct characteristics and attributes of these classifications aids in distinguishing and comprehending various types of systems.
Realtime
Realtime systems, such as synchronous and asynchronous web services, are characterized by their strong coupling to the physical world and the requirement for precise time constraints, where the completion time is integral to their correctness.
These systems operate on time constraints ranging from microseconds to hours, and their functioning is contingent upon meeting these constraints. For instance, a real-time stock trading system must execute trades within microseconds to maintain accuracy and prevent financial losses.
Similarly, a real-time traffic monitoring system needs to process and update data within seconds to provide up-to-date information to users.
Realtime systems are typically used in scenarios where immediate and accurate responses are crucial, and any delay or failure to meet the time constraints can have significant consequences.
Near realtime
Near realtime systems are designed to keep up with real-world inputs and provide responses within human perception tolerances, although they may experience occasional latency.
These systems, such as JMS, messaging systems, and event-driven systems, have similar requirements to realtime systems but with more tolerance for long response times. They are capable of processing and reacting to incoming data in a timely manner, but the time constraints are probabilistic rather than precise.
Unlike realtime systems, near realtime processing may have larger delays but will not fall behind to fill up the buffer. These systems can run indefinitely while new data is being acquired, ensuring they can keep up with the constant influx of inputs.
Batch
Batch processing is a timed computational system that operates when it wakes up and processes large blocks of tasks with macroscopic deadlines. Unlike real-time and near real-time systems, batch processing is not concerned with immediate response or precise time constraints.
It is commonly used for computationally intensive tasks that can be performed at any time and any place, typically on a schedule. Examples of batch processing include payroll processing, bulk data processing, and end-of-day report generation.
In these cases, the data is collected over a period of time and processed in batches once all the necessary information is available. Batch processing allows for efficient utilization of resources and can handle large volumes of data, but it lacks the immediacy and real-time responsiveness of other processing methods.