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 met behulp 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 feite informatie over de verschillende mongodb instanties die de Shard-gegevens bevatten.
  3. Een router - Dit is een mongodb instantie die in principe verantwoordelijk is voor het omleiden van de opdrachten die door de client naar de juiste servers worden verzonden.

Stapsgewijs voorbeeld van een Sharding-cluster

Stap 1) Maak een aparte database voor de configuratieserver.

mkdir /data/configdb

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

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 op

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.