MongoDB Sharding: stapsgewijze zelfstudie met voorbeeld

Wat is Sharding in MongoDB?

Sharding is een begrip in MongoDB, dat grote datasets opsplitst in kleine datasets over meerdere MongoDB instanties.

Soms de gegevens erin MongoDB zal zo groot zijn dat zoekopdrachten op zulke grote datasets een groot CPU-gebruik op de server kunnen veroorzaken. Om deze situatie aan te pakken, MongoDB heeft een concept van Sharding, wat in feite het splitsen van datasets over meerdere is MongoDB instanties.

De verzameling, die groot van omvang kan zijn, is feitelijk verdeeld over meerdere verzamelingen of Shards, zoals ze worden genoemd. Logischerwijs werken alle scherven als één verzameling.

Sharding implementeren

Shards worden geïmplementeerd door gebruik te maken van clusters die niets anders zijn dan een groep MongoDB instanties.

De componenten van een Shard omvatten

  1. Zo moeilijk – Dit is het fundamentele, en dit is niets anders dan een MongoDB instantie die de subset van de gegevens bevat. In productieomgevingen moeten alle shards deel uitmaken van replicasets.
  2. Configuratieserver – Dit is een mongodb-instantie die metagegevens over het cluster bevat, in principe informatie over de verschillende mongodb-instanties die de shardgegevens zullen bevatten.
  3. Een router – Dit is een mongodb-instantie die in principe verantwoordelijk is voor het omleiden van de opdrachten die door de client worden verzonden naar de juiste servers.

Stap voor stap delen Cluster Voorbeeld

Stap 1) Maak een aparte database voor de configuratieserver.

mkdir /data/configdb

Stap 2) Start de mongodb-instance in de configuratiemodus. Stel dat we een server hebben met de naam Server D, die onze configuratieserver zou zijn, dan zouden we de onderstaande opdracht moeten uitvoeren om de server te configureren als een configuratieserver.

mongod –configdb ServerD: 27019

Stap 3) Start het mongos-exemplaar door de configuratieserver op te geven

mongos –configdb ServerD: 27019

Stap 4) Maak vanuit de mongo-shell verbinding met de instantie van de mongo

mongo –host ServerD –port 27017

Stap 5) Als u Server A en Server B hebt die aan het cluster moeten worden toegevoegd, geeft u de onderstaande opdrachten uit

sh.addShard("ServerA:27017")
sh.addShard("ServerB:27017")

Stap 6) Schakel sharding in voor de database. Dus als we de Employeedb-database moeten sharden, voer dan de onderstaande opdracht uit

sh.enableSharding(Employeedb)

Stap 7) Schakel sharding in voor de verzameling. Dus als we de Employee-verzameling moeten sharden, voer dan de onderstaande opdracht uit

Sh.shardCollection("db.Employee" , { "Employeeid" : 1 , "EmployeeName" : 1})

Overzicht:

  • Zoals in zelfstudie, Sharding is een begrip in MongoDB, dat grote datasets opsplitst in kleine datasets over meerdere MongoDB instanties.