Systèmes NoSQL : le
partitionnement (sharding)
Partitionnement: Composants
3 types de nœuds (serveurs) :
✓ Des routeurs
✓ Des serveurs de configuration
✓ Des serveurs de données
La composition minimum d’un cluster est de 2 routeurs,
3 Config Servers et 2 shards.
2
Partitionner, comment?
Déroulement du sharding (i.e. partitionnement)
1. Découper une (grande) collection en fragments (chunks) en
fonction d’un champ. le champ selon lequel les données sont
partitionnées est appelé clé de partitionnement (i.e. shard
key).
2. Distribuer les chunks sur les serveurs (i.e. shards) ;
3. Maintenir un répertoire indiquant que tel chunk se trouve dans
tel shard
4. Un serveur (le Routeur), ou ensemble de serveurs, consulte le
répertoire et oriente les recherches vers le bon shard.
3
Partitionner, comment?
4
Equilibrage de la charge et élasticité
Le sharding doit assurer l’élasticité et l’équilibrage de
charge
Load balancing
La charge doit être équitablement répartie sur les serveurs de
la grappe, sinon le serveur le plus lent ralentit tout le
traitement
Répartition dynamique (élasticité) : adaptation automatisée
à l’ajout/suppression de données
à l’ajout/disparition de serveurs
5
Equilibrage de la charge et élasticité
L’équilibrage de charge et l’élasticité se basent sur 2 opérations :
le split et la migration de chunks
Split : Diviser un chunk qui a dépassé la taille maximale prédéfinie
6
Equilibrage de la charge et élasticité
Migration et équilibrage : déplacement d’un chunk d’un shard à
un autre pour une répartition équitable
Le "split" n’est pas couteux, la migration l’est. Pourquoi? ⇒
généralement le système effectue une seule migration à la fois ( à un
instant donné)
7
Tolérance aux pannes
Un système NoSQL doit savoir gérer la reprise sur pannes : failover
Le serveur stockant le répertoire est un SPOF (Single point of
failure) ⇒ Le répertoire est répliqué : 3 copies au minimum dans
un environnement de production.
Les fragments sont répliqués
8
Le sharding de MongoDB
9
Etapes de création du cluster sous
MongoDb
1. Lancer les ConfigServer en ReplicaSet
2. Lancer chaque Shard en ReplicaSet
3. Lancer un mongos (routeur)
a) Connecter les ConfigServer
b) Connecter les shard
c) Lancer le sharding sur une collection
10
Cas de MongoDB
Réplication + partitionnement
Trois catégories de nœuds:
routeurs (processus mongos) communiquent avec les
applications clientes, se chargent de diriger les requêtes vers les
serveurs de stockage concernés, et transmettent les résultats
les replica set (processus mongod), un replica set est en charge
d’un ou plusieurs fragments (shards) et gère localement la
reprise sur panne par réplication
un replica set dit « de configuration » chargé de gérer les
informations de routage. Il est constitué de config
servers (processus mongod avec option configsrv) qui stockent la
configuration complète du système:
liste des replica sets (avec, pour chacun, le maître et les esclaves),
liste des fragments et allocation des fragments à chaque replica set
11
Le sharding de MongoDB
12
Le sharding de MongoDB
Config Server
Stocke le répertoire (obligatoirement répliqué) : " Serveurs de métadonnées "
Processus mongod
Instances mongos (Query Routers)
prend en charge les requêtes des clients.
consulte le répertoire (Config Server) et oriente les requêtes vers le shard approprié
agrège les résultats et envoie la réponse au client.
stateless (ne stocke pas les données)
il peut y avoir plusieurs routeurs (mais un client envoie une requête à un seul)
Chaque shard est un replica set complet
Shard : "serveur de données "
Il s’agit d’un processus mongod maître avec un ou plusieurs autres processus mongod
secondaries et éventuellement un mongod arbiter
On peut ajouter ou supprimer un shard dynamiquement (le processus d’arrière
plan Balancer se charge de répartition de la charge).
13