En tant que développeur, vous pourriez être confronté à des situations où la base de données de votre application doit gérer de grandes quantités de données. Une façon d’administrer ces données efficacement est par le biais de la sharding de base de données, une technique qui distribue les données sur plusieurs serveurs ou bases de données de manière horizontale. La sharding peut améliorer les performances, la scalabilité et la fiabilité en divisant une grande base de données en morceaux plus petits et plus gérables appelés shards.
Dans cet article, nous allons explorer le concept de sharding de base de données, discuter de diverses stratégies de sharding et fournir un guide étape par étape pour mettre en œuvre la sharding dans MongoDB, une base de données NoSQL populaire.
Comprendre la Sharding de Base de Données
La sharding de base de données consiste à diviser un grand ensemble de données en sous-ensembles plus petits appelés shards. Chaque shard contient une partie des données totales et fonctionne indépendamment des autres. En exécutant des requêtes et des transactions sur un seul shard plutôt que sur l’ensemble de l’ensemble de données, les temps de réponse sont plus rapides et les ressources sont utilisées de manière plus efficace.
Stratégies de Sharding
Il existe plusieurs stratégies de sharding à choisir, en fonction des exigences de votre application :
- Sharding par plage :Les données sont partitionnées en fonction d’une plage spécifique de valeurs (par exemple, les utilisateurs avec des ID 1-1000 dans le Shard 1, les utilisateurs avec des ID 1001-2000 dans le Shard 2).
- Partitionnement par hachage : Une fonction de hachage est appliquée à un attribut spécifique (par exemple, l’ID de l’utilisateur), et le résultat détermine à quel fragment les données appartiennent. Cette méthode garantit une distribution équilibrée des données à travers les fragments.
- Partitionnement basé sur un répertoire : Un service de recherche distinct ou une table est utilisé pour déterminer à quel fragment une donnée appartient. Cette approche offre une flexibilité pour ajouter ou supprimer des fragments, mais peut introduire une couche supplémentaire de complexité.
- Partitionnement basé sur la géolocalisation : Les données sont partitionnées en fonction de la localisation géographique des utilisateurs ou des ressources, réduisant la latence pour les utilisateurs répartis géographiquement.
Mise en œuvre du partitionnement dans MongoDB
MongoDB prend en charge le partitionnement de manière native, ce qui en fait une excellente option pour les développeurs souhaitant mettre en œuvre le partitionnement dans leurs applications. Voici un guide étape par étape pour configurer le partitionnement dans MongoDB. Nous utiliserons l’interface en ligne de commande MongoDB qui utilise la syntaxe JavaScript pour écrire des commandes et interagir avec la base de données :
1. Configurer un serveur de configuration
Le serveur de configuration stocke les métadonnées sur le cluster et les emplacements des fragments. Pour les environnements de production, utilisez un ensemble de réplication de trois serveurs de configuration.
mongod --configsvr --dbpath /data/configdb --port 27019 --replSet configReplSet
2. Initialiser l’ensemble de réplication du serveur de configuration
Cette commande initie un nouvel ensemble de réplication sur une instance MongoDB en cours d’exécution sur le port 27019
.
mongo --port 27019
> rs.initiate()
3. Configurer les serveurs de fragment
Démarrez chaque serveur de fragment avec l’option --shardsvr
et un --dbpath
unique.
mongod --shardsvr --dbpath /data/shard1 --port 27018
mongod --shardsvr --dbpath /data/shard2 --port 27017
4. Démarrer le processus mongos
Le processus mongos
agit comme un routeur entre les clients et le cluster partagé.
mongos --configdb configReplSet/localhost:27019
5. Se connecter à l’instance mongos et ajouter les shards
mongo
> sh.addShard("localhost:27018")
> sh.addShard("localhost:27017")
6. Activer le partage pour une base de données et une collection spécifiques
> sh.enableSharding("myDatabase")
> sh.shardCollection("myDatabase.myCollection", {"userId": "hashed"})
Dans cet exemple, nous avons configuré un cluster partagé MongoDB avec deux shards et utilisé le partage basé sur le hachage sur le champ userId
. Désormais, les données de la collection "myCollection"
seront réparties sur les deux shards, améliorant ainsi les performances et la scalabilité.
Conclusion
Le partage de base de données est une technique efficace pour gérer de gros ensembles de données dans votre application. En comprenant différentes stratégies de partage et en les mettant en œuvre à l’aide de MongoDB, vous pouvez considérablement améliorer les performances, la scalabilité et la fiabilité de votre application. Avec ce guide, vous devriez désormais avoir une compréhension solide de la façon de configurer le partage dans MongoDB et de l’appliquer à vos propres projets.
Joyeux apprentissage!!
Source:
https://dzone.com/articles/a-developers-guide-to-database-sharding-with-mongo