R-GMA: Architectural Design

Producers

There are three classes of producer: Primary, Secondary and On-demand. Each is created by a user application and returns tuples in response to queries from other user applications. The main difference is in where the tuples come from.

producers overview diagram

The producer service in these pictures is a process running on a server on behalf of the user code (this is expanded in the Web Services section which follows later). In a Primary Producer, the user code periodically inserts tuples into storage maintained internally by the Primary Producer service. The producer service autonomously answers consumer queries from this storage. The Secondary producer service also answers queries from its internal storage, but it populates this storage itself by running its own query against the virtual table: the user code only sets the process running; the tuples come from other producers. In the On-demand Producer, there is no internal storage; data is provided by the user code in direct response to a query forwarded on to it by the producer service.

The tuple-storage maintained by Primary and Secondary producers can either be in memory, in a file, or in a real database table. Producers that use non-database storage are optimized to answer simple queries quickly, but they must support complex queries too (e.g. by creating an in-memory database on the fly). In an On-demand producer, tuple-storage (if any) is the responsibility of the user code, but may also be in a real database.

Next : Consumers

    Contact the R-GMA team Last Modified:26/07/2005