La funzione principale di un set di repliche è fornire ridondanza dei dati e disponibilità elevata per la distribuzione di MongoDB. In altre parole, se il nodo primario in un set di repliche si interrompe per qualsiasi motivo, un secondario subentra immediatamente come nuovo primario (in media entro ~10 secondi). Vedi Replica per maggiori dettagli su questo argomento.
I driver MongoDB ufficiali sono a conoscenza di questo evento elettorale del set di repliche e fornirebbero la riconnessione automatica e i tentativi di operazione al nuovo primario. Dal punto di vista dell'app non è successo nulla lato database.
Un altro vantaggio dell'utilizzo di un set di repliche con più secondari è la possibilità di aggiornamento/manutenzione senza tempi di inattività in modo continuativo. Questo può essere fatto portando un secondario offline, eseguirne la manutenzione, quindi eseguire la manutenzione sugli altri secondari e infine dimettere il primario ed eseguire la manutenzione su di esso. Anche in questo caso, poiché i driver MongoDB ufficiali sono a conoscenza di questi eventi, puoi tecnicamente eseguire la manutenzione su un database live con un impatto minimo e senza tempi di inattività dell'app.
Questa è una filosofia diversa rispetto a un server di database monolitico, in cui esiste un solo vero grande server. Sebbene ci siano alcuni meriti in una distribuzione monolitica (che è di nuovo una discussione diversa :) ), MongoDB è stato progettato come un database distribuito tollerante ai guasti. Uno svantaggio immediato di un singolo server è che il server deve essere sempre attivo del 100%, altrimenti l'app viene interrotta. È stato progettato un set di repliche in modo che la tua app possa avere un tempo di attività del 100% senza mettere sotto pressione i singoli server che devono avere un tempo di attività del 100%.
Come bonus, un set di repliche può essere in grado di fornire scalabilità in lettura impostando il driver per leggere dai secondari (le scritture devono sempre andare al primario). Tieni presente che dovrebbe esserci una progettazione attenta se desideri eseguire letture secondarie, poiché ciò può potenzialmente interferire con l'aspetto dell'elevata disponibilità in caso di abuso.
In sintesi, un set di repliche può fornire:
- Alta disponibilità e tolleranza ai guasti
- Nessuna manutenzione durante i tempi di fermo
- Ridondanza dei dati per scalare le letture
senza richiedere che l'hardware sia affidabile al 100%. Questo è il motivo per cui un set di repliche è fortemente consigliato in una distribuzione di prodotti.
Vedere Architetture di distribuzione dei set di repliche per considerazioni più dettagliate sulla distribuzione dei set di repliche.