Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Gedeelde clusters in MongoDB


Gedeelde clusters in MongoDB


MongoDB Sharded Clusters: een uitgebreide handleiding

MongoDB-sharding is een krachtige techniek voor het horizontaal schalen en distribueren van gegevens over meerdere servers of 'shards'. Met deze aanpak kan MongoDB de toenemende belasting aan en de prestaties verbeteren door gegevens in kleinere stukken te verdelen en deze over meerdere shards te verdelen. Het begrijpen van de componenten van een sharded cluster is van cruciaal belang voor het efficiënt beheren en schalen van de database-infrastructuur.

Componenten van een gedeeld cluster

1. Shards: Shards zijn horizontaal schaalbaar, waardoor u meer shards kunt toevoegen naarmate uw gegevens groeien om de toenemende belasting aan te kunnen. Elke shard in een shard-cluster kan zich op een andere fysieke machine of server bevinden, waardoor de gegevens en de werklast over meerdere knooppunten worden verdeeld. Shards kunnen dynamisch aan een shard-cluster worden toegevoegd, zodat u uw database-infrastructuur zonder downtime kunt schalen.

2. Primaire Shard: de toewijzing van de primaire Shard is gebaseerd op de grootte van de database op het moment dat deze werd gemaakt, maar kan indien nodig later handmatig opnieuw worden toegewezen. De primaire scherf is verantwoordelijk voor het opslaan van metagegevens die verband houden met de database, zoals de lijst met collecties en hun locaties. Als een primaire shard niet meer beschikbaar is, selecteert MongoDB automatisch een nieuwe primaire shard voor de betrokken databases om een ​​continue werking te garanderen.

3. Config Servers: Config-servers slaan metagegevens op over het shard-cluster, inclusief informatie over shards, chunks en clusterorganisatie. Ze vergemakkelijken administratieve handelingen en helpen de clusterconsistentie te behouden door ervoor te zorgen dat alle knooppunten in het cluster dezelfde weergave van de metagegevens hebben. Config-servers beheren de authenticatie- en autorisatie-instellingen en zorgen ervoor dat alleen geautoriseerde gebruikers en applicaties toegang hebben tot het cluster.

4. Mongos-instanties: Mongos-instanties fungeren als interface tussen clienttoepassingen en het sharded cluster. Ze verzorgen queryroutering, shardbeheer en aggregatie van resultaten. Mongos-instanties slaan zelf geen gegevens op, maar zijn afhankelijk van het cachen van metagegevens van de configuratieservers om zoekopdrachten efficiënt te routeren.

Hoe Sharding werkt

Wanneer een shard-cluster wordt gemaakt, verdeelt MongoDB de gegevens automatisch in segmenten en verdeelt deze over de beschikbare shards. Elk deel heeft een inclusieve ondergrens en een exclusieve bovengrens, waarmee het bereik van Shard-sleutelwaarden wordt gedefinieerd die op elke Shard zijn opgeslagen. Dit zorgt voor een gelijkmatige gegevensverdeling en efficiënte routering van zoekopdrachten.

Queryoptimalisatie in een gedeeld cluster

Het optimaliseren van query's is cruciaal voor het efficiënt ophalen van gegevens en het uitvoeren van query's in een shardd cluster. MongoDB biedt tools en opdrachten om primaire shards te beheren, zoals de opdracht `sh.status()` om de status van shards in een shard-cluster te bekijken. Bovendien ondersteunt MongoDB sharded-aggregatiequery's, waardoor u complexe gegevensaggregaties over meerdere shards kunt uitvoeren.

Stukken splitsen

Door segmenten te splitsen, kunt u de gegevensdistributie in een MongoDB-shardd cluster verfijnen. Door segmenten expliciet te splitsen, kunt u het bereik van Shard-sleutelwaarden beheren die op elke Shard zijn opgeslagen en zorgen voor een gelijkmatige gegevensverdeling. Dit houdt in dat u de waarde identificeert waarop u het deel wilt splitsen en het commando `sh.splitAt()` gebruikt om het deel op het gewenste splitspunt te splitsen.

Best practices voor gedeelde clusters

1. Config Servers implementeren als een replicaset met 3 leden: Zorg ervoor dat configuratieservers worden geïmplementeerd als een replicaset met 3 leden voor hoge beschikbaarheid en fouttolerantie.

2. Implementeer elke Shard als een replicaset met 3 leden: Zorg ervoor dat elke Shard wordt geïmplementeerd als een replicaset met 3 leden voor hoge beschikbaarheid en fouttolerantie.

3. Implementeer een of meer Mongos-routers: Implementeer een of meer Mongos-routers om queryroutering en shard-beheer af te handelen.

4. Bewaak prestaties: bewaak de prestaties van uw shard-cluster, inclusief de prestaties van configuratieservers en shards, om optimale prestaties en gegevensdistributie te garanderen.

5. Gebruik gesharde aggregatiequery's: gebruik gesharde aggregatiequery's om complexe gegevensaggregaties uit te voeren over meerdere shards, waardoor een efficiënte gegevensverwerking en -analyse wordt gegarandeerd.

Conclusie

MongoDB-sharding is een krachtige techniek voor het horizontaal schalen en distribueren van gegevens over meerdere servers of 'shards'. Het begrijpen van de componenten van een sharded cluster en hoe sharding werkt, is van cruciaal belang voor het efficiënt beheren en schalen van de database-infrastructuur. Door best practices te volgen en query's te optimaliseren, kunt u optimale prestaties en gegevensdistributie in uw Shard-cluster garanderen.

Citaties:
[1] https://www.mongodb.com/docs/manual/core/sharded-cluster-components/
[2] https://www.mongodb.com/docs/v6.2/core/sharded-cluster-components/
[3] https://www.geeksforgeeks.org/sharded-cluster-components-in-mongodb/
[4] https://www.squash.io/tutorial-on-database-sharding-in-mongodb/
[5] https://www.bmc.com/blogs/mongodb-sharding-explained/