MongoDB - Partage

Le partage est le processus de stockage des enregistrements de données sur plusieurs machines et c'est l'approche de MongoDB pour répondre aux exigences de la croissance des données. À mesure que la taille des données augmente, une seule machine peut ne pas être suffisante pour stocker les données ni fournir un débit de lecture et d'écriture acceptable. Le sharding résout le problème de la mise à l'échelle horizontale. Avec le partitionnement, vous ajoutez plus de machines pour prendre en charge la croissance des données et les exigences des opérations de lecture et d'écriture.

Pourquoi Sharding?

  • Dans la réplication, toutes les écritures vont au nœud maître

  • Les requêtes sensibles à la latence vont toujours au maître

  • Le jeu de réplicas unique a une limite de 12 nœuds

  • La mémoire ne peut pas être assez grande lorsque le jeu de données actif est volumineux

  • Le disque local n'est pas assez grand

  • La mise à l'échelle verticale est trop chère

Partage dans MongoDB

Le diagramme suivant montre le partage dans MongoDB à l'aide d'un cluster partitionné.

Dans le diagramme suivant, il y a trois composants principaux -

  • Shards- Les fragments sont utilisés pour stocker des données. Ils offrent une haute disponibilité et une cohérence des données. Dans un environnement de production, chaque partition est un jeu de réplicas distinct.

  • Config Servers- Les serveurs de configuration stockent les métadonnées du cluster. Ces données contiennent un mappage de l'ensemble de données du cluster vers les fragments. Le routeur de requête utilise ces métadonnées pour cibler les opérations sur des fragments spécifiques. Dans un environnement de production, les clusters partitionnés ont exactement 3 serveurs de configuration.

  • Query Routers- Les routeurs de requêtes sont essentiellement des instances mongo, interfacent avec les applications clientes et dirigent les opérations vers la partition appropriée. Le routeur de requête traite et cible les opérations sur des fragments, puis renvoie les résultats aux clients. Un cluster partitionné peut contenir plusieurs routeurs de requêtes pour diviser la charge de requêtes client. Un client envoie des demandes à un routeur de requête. En règle générale, un cluster partitionné possède de nombreux routeurs de requête.