Hovedfunktionen af et replikasæt er at give dataredundans og høj tilgængelighed til din MongoDB-implementering. Det vil sige, at hvis den primære node i et replikasæt gik ned af en eller anden grund, ville en sekundær straks tage over som den nye primære (i gennemsnit inden for ~10 sekunder). Se replikering for flere detaljer om dette emne.
Officielle MongoDB-drivere er opmærksomme på denne replika-valgbegivenhed og vil give automatisk genforbindelse og genforsøg til den nye primære. Fra appens synspunkt skete der ikke noget i databasesiden.
En anden fordel ved at bruge et replikasæt med flere sekundære komponenter er muligheden for nul nedetid opgradering/vedligeholdelse på en rullende måde. Dette kan gøres ved at tage en sekundær offline, lave vedligeholdelse på den, derefter udføre vedligeholdelse på de andre sekundære, og til sidst trappe ned den primære og udføre vedligeholdelse på den. Igen, da officielle MongoDB-drivere er opmærksomme på disse hændelser, kan du teknisk set udføre vedligeholdelse på en live-database med meget minimal påvirkning og ingen nedetid til appen.
Dette er en anden filosofi i forhold til en monolitisk databaseserver, hvor der kun er én rigtig stor server. Selvom der er visse fordele ved en monolitisk implementering (hvilket er en anden diskussion igen :) ), blev MongoDB designet som en fejltolerant distribueret database i tankerne. En umiddelbar ulempe ved en enkelt server er, at serveren skal være oppe 100 % hele tiden, ellers bliver appen forstyrret. Et replikasæt blev designet, så din app kan have 100 % oppetid uden at lægge pres på individuelle servere, der skal have 100 % oppetid.
Som en bonus kan et replikasæt kunne give læseskalerbarhed ved at indstille driveren til at læse fra sekundære (skriver skal altid gå til den primære). Bemærk, at der bør være et omhyggeligt design, hvis du ønsker at udføre sekundære læsninger, da dette potentielt kan forstyrre det høje tilgængelighedsaspekt, hvis det misbruges.
Sammenfattende kan et replikasæt give:
- Høj tilgængelighed og fejltolerance
- Ingen nedetidsvedligeholdelse
- Datareundans til skalering af læsninger
uden at kræve, at hardwaren er 100 % pålidelig. Dette er grunden til, at et replikasæt anbefales kraftigt i en prod-installation.
Se Replica Set Deployment Architectures for mere detaljerede overvejelser om implementering af replikasæt.