2011-02-04 4 views
5

Per essere più specifici per la mia applicazione: i dati condivisi sono per lo più dati persistenti come stato di monitoraggio, configurazioni - non più di poche centinaia di elementi, e vengono aggiornati e letti frequentemente ma non più di 1 o 2Hz. I processi sono locali tra loro sulla stessa macchina.Quali sono i pro e i contro dell'utilizzo del database per IPC per condividere i dati anziché il passaggio dei messaggi?

MODIFICA 1: ulteriori informazioni - Si prevede che i processi eseguano il polling su un set di dati a cui sono interessati (ovvero il monitoraggio) La maggior parte dei dati è persistente durante la vita del programma ma alcuni (ad esempio i configs) sono richiesti da ripristinare dopo il riavvio del software. I dati vengono aggiornati solo dal proprietario (si assume un proprietario per ogni dato) Numero di processi anche piccolo (non più di 10)

Sebbene l'utilizzo di un database sia notevolmente più affidabile e scalabile, mi sembra sempre che sia gentile di un overkill o troppo pesante da usare quando tutto ciò che faccio è condividere dati all'interno di un'applicazione. Mentre il messaggio passa con es. JMS ha anche la parte middleware, ma è più leggera e ha un'API di comunicazione più naturale o flessibile. Implementare la notifica degli eventi e il pattern di comando è anche più semplice con la messaggistica.

Sarà di grande aiuto se qualcuno può darmi un esempio di quale circostanza sarebbe più preferibile all'altra.

Ad esempio, so che possiamo condividere più facilmente dati persistenti tra i processi che utilizzano il database, sebbene sia anche fattibile con la messaggistica distribuendo attraverso processi e/o archiviando con alcuni file XML.

E secondo qui, http://en.wikipedia.org/wiki/Database-as-IPC e qui, http://tripatlas.com/Database_as_an_IPC. Dice che sarebbe un pattern anti quando usato al posto del passaggio del messaggio, ma non viene elaborato ad es. quanto può essere dannoso l'impatto della performance usando il database rispetto al passaggio del messaggio.

Sono passato attraverso diversi post precedenti che hanno posto una domanda simile, ma spero di trovare una risposta che si concentri sulla giustificazione del design. Ma da quelle domande che ho letto fino ad ora posso vedere un sacco di persone hanno usato il database per IPC (o implementato la coda dei messaggi con database)

Grazie!

+2

Per uno, se si utilizza un database, sarà necessario ricorrere al polling per i nuovi messaggi. Devi decidere quanta parte di un problema è questo (ad esempio, consuma risorse significative? Le connessioni consentite massime potrebbero essere un problema). – Piskvor

+0

Grazie. Si prevede che i processi eseguano il polling su un insieme di dati a cui sono interessati (ovvero il monitoraggio) e la maggior parte dei dati sono persistenti e aggiornati solo dal proprietario (si assume un proprietario per ciascun dato). Il numero di processi è troppo piccolo (non più di 10) – kennyc

risposta

3

Tenendo conto che DBMS è un modo per negozio informazioni e messaggi sono la strada da trasporti informazioni, la vostra decisione dovrebbe essere basata sulla risposta alla domanda: "ho bisogno di persistenza dei dati in tempo oppure i dati vengono consumati dal destinatario ".

Problemi correlati