Variabili a lunga durata

In alcuni casi è possibile che si desideri memorizzare i dati per un periodo più lungo rispetto a quanto impiegato da un singolo messaggio per passare attraverso un flusso. Un modo per effettuare questa operazione è quello di memorizzare i dati in un database. Questa operazione è utile per la permanenza a lungo termine e la transazionalità, ma l'accesso (in particolare l'accesso in scrittura) è lento.

In alternativa, è possibile utilizzare tipi di dati ESQL "a lunga durata" appropriati per fornire una cache in memoria dei dati per un determinato periodo di tempo. In questo modo, l'accesso è più rapido rispetto a quello da un database, sebbene a discapito di una permanenza minore e della transazionalità, in questo caso non presente.

Le variabili a lunga durata vengono create utilizzando la parola chiave SHARED nell'istruzione DECLARE.

L'Esempio Instradamento del messaggio dimostra come definire le variabili condivise mediante l'istruzione DECLARE. L'esempio illustra come memorizzare le informazioni relative all'instradamento in una tabella del database e come utilizzare le variabili condivise per memorizzare la tabella del database in memoria nel flusso di messaggi per migliorare le prestazioni.

I tipi di dati a lunga durata hanno una durata estesa superiore a quella di un singolo messaggio che passa attraverso un nodo. Essi sono condivisi tra i thread ed esistono per la durata di un flusso di messaggi (il tempo tra le modifiche alla configurazione di un flusso di messaggi), come descritto in questa tabella:

  Ambito Durata Condiviso
Variabili a durata breve
Schema & Modulo Nodo Thread all'interno del nodo No
Routine locale Nodo Thread all'interno della routine No
Blocco locale Nodo Thread all'interno del blocco No
Variabili a lunga durata
Nodo condivisa Nodo Durata del nodo Tutti i thread del flusso
Flusso condivisa Flusso Durata del flusso Tutti i thread del flusso
Le funzioni dei tipi di dati ESQL a lunga durata includono:

Un utilizzo comune di questi tipi di dati potrebbe essere in un flusso in cui le tabelle di dati sono 'di sola lettura' per quanto riguarda il flusso. Sebbene i dati della tabella non siano statici, il flusso non li modifica e migliaia di messaggi passano attraverso il flusso prima che si verifichi una modifica ai dati della tabella.

Un esempio è una tabella che contiene le transazioni quotidiane di una carta di credito. La tabella viene creata ogni giorno ed i messaggi di quel giorno vengono eseguiti sulla tabella. Quindi, il flusso viene arrestato, la tabella aggiornata ed i messaggi del giorno successivo eseguiti. Un flusso di questo tipo viene eseguito in modo migliore se i dati della tabella vengono memorizzati in una cache piuttosto che letti da un database per ogni messaggio.

Un altro utilizzo di tali tipi di dati potrebbe essere l'accumulo e l'integrazione di dati da più messaggi.

Concetti correlati
Nodi di ESQL e attività di debug
Variabili ESQL
UDP (User-defined property) in ESQL
Riferimenti correlati
Istruzione DECLARE
Tipo di dati ROW ESQL
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak35120_