TLDR: Batch processing is a way of running computer programs automatically without needing constant user interaction. It's like a chef preparing a bunch of dishes at once without needing to be told what to do for each dish.
Batch processing has been around for a long time, and it started with early computers that could only run one program at a time. Users would bring their program and data to the computer, load it in, run it, and then take the output. As computers got faster, the time it took to set up and take down each program became a bigger part of the overall time. So, they developed something called a "monitor" that could process a series of programs, or a batch, one after the other. The output would often be written to magnetic tape and printed or punched offline.
In the 1960s, third-generation computers came along that could run multiple batch programs at the same time. This meant that the system could stay busy by running multiple programs simultaneously. They also developed something called a "job scheduler" that could manage the resources needed by each job, like memory and disk space. IBM's Job Control Language (JCL) became a popular scripting language for supplying this information. They also came up with a way to submit batch jobs from remote terminals.
Today, batch processing is still widely used in many organizations because it's great for tasks that don't need constant user interaction. For example, it's used for bulk database updates, converting files from one format to another, and training machine learning models. Modern batch applications use frameworks like Spring Batch or Java's JSR 352 to handle fault tolerance and scalability. They can also be integrated with grid computing solutions to distribute the workload across multiple processors.
A batch window is a period of time when the computer system can run batch jobs without interference from other online systems. This is important for tasks like end-of-day processing in banks. The batch size refers to the number of work units processed in one batch operation. It can vary depending on the task at hand.
Overall, batch processing is a valuable method for automating repetitive tasks and efficiently processing large amounts of data. It has evolved over time and continues to be an important part of computer systems today.