Als ontwikkelaar kan je in situaties terecht komen waarbij de database van je applicatie grote hoeveelheden gegevens moet verwerken. Een manier om deze gegevens effectief te beheren is door middel van sharding van de database, een techniek die gegevens horizontaal over meerdere servers of databases verdeelt. Sharding kan prestaties, schaalbaarheid en betrouwbaarheid verbeteren door een grote database op te splitsen in kleinere, meer beheerbare delen, ook wel shards genoemd.
In dit artikel gaan we in op het concept van database sharding, bespreken verschillende sharding strategieën en bieden een gedetailleerde handleiding voor het implementeren van sharding in MongoDB, een populaire NoSQL database.
Begrijpen Database Sharding
Database sharding houdt in dat een groot gegevensbestand wordt opgesplitst in kleinere subsets, ook wel shards genoemd. Elk shard bevat een deel van de totale gegevens en functioneert onafhankelijk van de anderen. Door query’s en transacties uit te voeren op een enkel shard in plaats van op het volledige gegevensbestand, worden reactietijden versneld en worden resources efficiënter benut.
Sharding Strategieën
Er zijn verschillende sharding strategieën om uit te kiezen, afhankelijk van de vereisten van je applicatie:
- Bereik-gebaseerde sharding: Gegevens worden verdeeld op basis van een specifiek waardebereik (bijv., gebruikers met IDs 1-1000 in Shard 1, gebruikers met IDs 1001-2000 in Shard 2).
- Hash-based sharding: Een hashfunctie wordt toegepast op een specifiek kenmerk (bijv., gebruikers-ID), en het resultaat bepaalt welk shard de gegevens behoort. Deze methode zorgt voor een evenwichtige verdeling van gegevens over shards.
- Directory-based sharding: Een apart lookup-dienst of tabel wordt gebruikt om te bepalen tot welk shard een stuk gegevens behoort. Deze aanpak biedt flexibiliteit bij het toevoegen of verwijderen van shards, maar kan een extra laag complexiteit introduceren.
- Geolocation-based sharding: Gegevens worden gepartitioneerd op basis van de geografische locatie van de gebruikers of bronnen, wat de latentie vermindert voor op geografisch verdeelde gebruikers.
Implementeren van Sharding in MongoDB
MongoDB ondersteunt sharding standaard, waardoor het een uitstekende keuze is voor ontwikkelaars die sharding in hun applicaties willen implementeren. Hier is een stapsgewijze gids om sharding in te stellen in MongoDB. We gebruiken de MongoDB shell die JavaScript-syntaxis gebruikt voor het schrijven van commando’s en omgaan met de database:
1. Stel een Config Server in
De config server slaat metadata over de cluster en shardlocaties op. Voor productieomgevingen, gebruik een replica set van drie config servers.
mongod --configsvr --dbpath /data/configdb --port 27019 --replSet configReplSet
2. Initialiseer de Config Server Replica Set
Dit commando initieert een nieuwe replica set op een MongoDB-instantie die draait op poort 27019
.
mongo --port 27019
> rs.initiate()
3. Stel Shard Servers in
Start elke shard server met de --shardsvr
optie en een unieke --dbpath
.
mongod --shardsvr --dbpath /data/shard1 --port 27018
mongod --shardsvr --dbpath /data/shard2 --port 27017
4. Start de mongos-proces
De mongos
proces fungeert als een router tussen clients en de geshardeerde cluster.
mongos --configdb configReplSet/localhost:27019
5. Verbinding maken met de mongos-instantie en de shards toevoegen
mongo
> sh.addShard("localhost:27018")
> sh.addShard("localhost:27017")
6. Sharding inschakelen voor een specifieke database en verzameling
> sh.enableSharding("myDatabase")
> sh.shardCollection("myDatabase.myCollection", {"userId": "hashed"})
In dit voorbeeld hebben we een MongoDB geshardeerde cluster ingesteld met twee shards en gebruik gemaakt van hash-based sharding op het userId
veld. Nu wordt de data in de "myCollection"
verzameling verdeeld over de twee shards, waardoor de prestaties en schaalbaarheid verbeteren.
Conclusie
Database sharding is een effectieve techniek voor het beheren van grote datasets in uw applicatie. Door verschillende shardingstrategieën te begrijpen en ze te implementeren met behulp van MongoDB, kunt u de prestaties, schaalbaarheid en betrouwbaarheid van uw applicatie aanzienlijk verbeteren. Met deze gids zou u nu een solide kennis moeten hebben van hoe u sharding in MongoDB kunt instellen en toepassen op uw eigen projecten.
Veel plezier met leren!!
Source:
https://dzone.com/articles/a-developers-guide-to-database-sharding-with-mongo