Implementazione di Insert / Update asincroni per un'applicazione Web

6

Sono in procinto di implementare una piccola applicazione Web utilizzando memcached per gli oggetti di memorizzazione nella cache e il server sql per la persistenza del database.

In tutti i progetti che ho fatto prima ho fatto inserimenti / aggiornamenti nel thread web stesso. In questo progetto voglio implementare inserti e aggiornamenti asincroni. Userò memcached link per acquisire le modifiche e un servizio esterno (servizio Windows) per mantenere le modifiche in db.

Capisco che l'ottimizzazione prematura delle prestazioni sia malvagia, ma questo è solo un progetto di prova per imparare memcached.

Qualcuno l'ha già fatto prima. Quali sono gli svantaggi dell'utilizzo di questo?

    
posta NRS 27.10.2011 - 17:55
fonte

2 risposte

1

Questo approccio modifica notevolmente le garanzie ACID della tua applicazione. Se il tuo server memcached si interrompe, perdi tutte le modifiche dall'ultima sincronizzazione del database senza alcun modo di recuperarle. Fuori dalla scatola, memcached cancellerà vecchi valori quando esaurisce la RAM. Se la tua app è pesante in scrittura, potrebbe significare perdere dati tra la sincronizzazione.

È possibile migliorare le possibilità che i dati lo facciano nel database aggiungendo ridondanza al livello memcached, ma non crea ancora una soluzione con le stesse garanzie di un database relazionale. Questo non è sempre uno svantaggio. Alcuni approcci NoSQL stanno deliberatamente scambiando garanzie ACID per prestazioni e scalabilità. Ci sono anche alcuni aspetti matematici alla base di Teorema della PAC di Brewer .

Indipendentemente da ciò, la maggior parte delle soluzioni NoSQL non ACID garantiscono un'eventuale coerenza. Questo è qualcosa che il tuo attuale approccio non fornisce e la maggior parte degli utenti non vivrà senza. Se perdi il mio ordine, post di blog illuminante o commento spiritoso, probabilmente troverò un fornitore di software diverso.

    
risposta data 27.10.2011 - 22:30
fonte
1

Lo svantaggio è che stai usando sistemi distribuiti.

Il vantaggio è che stai usando sistemi distribuiti.

Conoscere i punti di forza, i punti deboli e i potenziali trucchi con i sistemi distribuiti è qualcosa che è fondamentale per chiunque desideri trasferirsi in applicazioni ad alto traffico, indipendentemente dal fatto che siano basate sul Web o meno. Cambia il modo in cui pensi all'architettura del tuo sistema.

L'uso di sistemi distribuiti renderà le tue applicazioni molto più complesse di quanto non sarebbero altrimenti.

Stai costruendo questa piccola applicazione come esercizio nella comprensione dei sistemi distribuiti? Altrimenti, mi azzarderei a dire che stai colpendo un chiodo con una mazza e molto probabilmente ti firmi per un sacco di mal di testa che altrimenti eviterai.

    
risposta data 27.10.2011 - 19:58
fonte

Leggi altre domande sui tag