Domanda

sto scrivendo un sistema di workflow che è guidato interamente a ogni passo per l'interazione umana esplicito. Cioè, un compito viene assegnato a una persona, quella persona sceglie tra un paio di opzioni limitate {approvare, respingere, in avanti}, e allora è sia inviato insieme alla persona successiva o terminato.

Solo curioso se Oracle Streams / AQ ha nulla da offrire su tavoli piatti gestite da regolare codice dell'applicazione web. La quantità di elaborazione dopo ogni azione è piuttosto limitata e il volume non è terribilmente alto, quindi non c'è davvero bisogno di strozzare le cose gettandoli in una coda. Quali sono alcuni dei vantaggi di introdurre una struttura di coda, o è eccessivo per la mia situazione?

È stato utile?

Soluzione

Ci sono molte ragioni di un sistema di accodamento è vantaggioso, ma io non sono sicuro che si applicano nella vostra situazione. Sembra che si dispone di un unico sistema tutti memorizzati in un unico database. In quanto tale, non credo che fare la coda sarebbe alcun vantaggio nei tavoli normali.

Le situazioni in cui AQ fornisce vantaggi includono:  - come un meccanismo per sistemi diversi (più database) per parlare gli uni agli altri

  • quando si dispone di sistemi debolmente accoppiati - un produttore di invio di messaggi a un numero imprecisato di abbonati

Come un modo per gestire lo stato in un unico sistema, come lei descrive, credo Streams / AQ sarebbe eccessivo.

Altri suggerimenti

Il grande vantaggio con la messa in coda è che può rendere problemi di concorrenza che sono altrimenti davvero difficile (visualizza uno e un solo filo di questo disco per l'elaborazione) davvero facile. Senza fare la coda, si potrebbe provare, ma non assicura, questo tipo di comportamento, e che avrebbe dovuto finire per fare un sacco di aggiornamento dello stato intermedio e controllo per i thread non riuscita.

In 10g e al di sotto, Oracle implementata l'operazione dequeue transazionale con la sintassi SKIP LOCKED che gli utenti finali non era permesso. In 11g, che la sintassi è stato esposto per permettere alle persone di risolvere il problema (mi record successivo mostrare) senza richiedere AQ implementazioni.

Un vantaggio secondario di AQ è che la pulizia coda è asincrona.

Il grande svantaggio di AQ è la sua dimensione e la manutenzione - si finisce per creare l'ordine di 7 tavoli / IOT per una singola coda di persistente / argomento, e non si può mantenere direttamente quegli oggetti di database, ma è necessario fare la manutenzione attraverso i pacchetti DBMS_AQ e DBMS_AQADM.

Se l'applicazione è davvero così basso volume e assumendo qualche minuto di latenza è accettabile, eviterei entrambi e utilizzare vecchia scuola innesca per popolare le mie tabelle di registrazione. Vorrei quindi il trattamento di questi con i lavori pl. Il tutto per evitare le caratteristiche aggiuntive / complessità AQ porta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top