► Parallel Processing Module (PPM) - Product Details

PPM is an Oracle PL/SQL framework (programming API) designed to enable programmers to easily make batch processes run in parallel.

PPM is an Oracle PL/SQL framework (programming API) designed to enable programmers to easily make batch processes run in parallel. With emphasis placed on ease of use and removing complexities of inter-process communication, it still provides means to retain a large degree of control over execution, with minimal overhead.

Transforming a serial process into parallel one can be tricky, and at occasions impossible. PPM offers an easy way to run tasks where processing can be split into smaller amounts of work that exhibit independency - at least on the same level as they are being processed. What does that mean? If work can be split between more workers that can carry out their tasks on their own, it is a good fit.

A marginal real world example:

  • A heavy weight object needs to be transferred. In real world two options are possible: a) several workers combine their strength and together move the object, or b) the object is taken apart into a number of smaller pieces and either a single worker (serial) or several workers (parallel) transfer parts of the object independently of each other. At target location the object is reassembled.
  • If option b is available for a given task, it can be made to run in parallel.
  • Most batch processes in a database application can be transformed to run in parallel. There usually is a source of adepts for processing (usually a query or a file) and a common process to be executed on each (renewal, invoicing, reminder, import, etc.).
  • There may at the same time be some minor dependency in the batch itself - e.g. count the total sum invoiced, generate single output file as aggregate result of the partial results of invoicing (or payment requests). PPM object finalization has been introduced for exactly this purpose - to enable post processing if such dependency exists.
  • With some degree of imagination even a lot more complex scenarios can be handled - by combining a well chosen order in which items are submitted and withholding dependent items from processing until the sub-items are finalized (hierarchical dependency) or by staging the processing into two or more PPM configurations / runs that run simultaneously and results from the first are aggregated in finalization and then submitted to the next level of processing ("pipelined").

We have used PPM to convert an existing batch print job (processing 6000 print requests), that was aborted after a run time of over 24 hours, to run in just over 2 hours!

Request Demo