Tutoriel MongoD...login
Tutoriel MongoDB
auteur:php.cn  temps de mise à jour:2022-04-21 17:49:03

Partage MongoDB



Partage

Il existe un autre type de cluster dans Mongodb, la technologie de partage, qui peut répondre aux besoins de la croissance massive du volume de données de MongoDB.

Lorsque MongoDB stocke d'énormes quantités de données, une seule machine peut ne pas suffire pour stocker les données ou fournir un débit de lecture et d'écriture acceptable. À l'heure actuelle, nous pouvons diviser les données sur plusieurs machines afin que le système de base de données puisse stocker et traiter davantage de données.


Pourquoi utiliser le partitionnement

  • Copiez toutes les opérations d'écriture sur le nœud principal

  • Les données sensibles retardées seront interrogées sur le nœud maître

  • Un seul jeu de réplicas est limité à 12 nœuds

  • Lorsque le volume de requêtes est énorme, la mémoire sera insuffisante.

  • Disque local insuffisant

  • La mise à l'échelle verticale coûte cher


Partage MongoDB

La figure suivante montre la distribution de la structure du cluster fragmenté dans MongoDB :

La figure ci-dessus comporte principalement trois composants principaux comme suit :

  • Shard :

    est utilisé pour stocker les blocs de données réels. Dans l'environnement de production réel, un rôle de serveur de fragments peut être joué par plusieurs machines et un seul ensemble de relicas. point de défaillance de l'hôte

  • Serveur de configuration :

    instance mongod, qui stocke l'intégralité des métadonnées du cluster, y compris les informations sur les fragments.

  • Routeurs de requêtes :

    Routage frontal, le client y accède et fait ressembler l'ensemble du cluster à une seule base de données, et l'application frontale peut être utilisée de manière transparente.


Instance partitionnée

La distribution des ports de la structure de partitionnement est la suivante :

Shard Server 1:27020
Shard Server 2:27021
Shard Server 3:27022
Shard Server 4:27023
Config Server :27100
Route Process:40000

Étape 1 : démarrer le serveur Shard

[root@100 /]# mkdir -p /www/mongoDB/shard/s0
[root@100 /]# mkdir -p /www/mongoDB/shard/s1
[root@100 /]# mkdir -p /www/mongoDB/shard/s2
[root@100 /]# mkdir -p /www/mongoDB/shard/s3
[root@100 /]# mkdir -p /www/mongoDB/shard/log
[root@100 /]# /usr/local/mongoDB/bin/mongod --port 27020 --dbpath=/www/mongoDB/shard/s0 --logpath=/www/mongoDB/shard/log/s0.log --logappend --fork
....
[root@100 /]# /usr/local/mongoDB/bin/mongod --port 27023 --dbpath=/www/mongoDB/shard/s3 --logpath=/www/mongoDB/shard/log/s3.log --logappend --fork

Étape 2 : Démarrez le serveur de configuration

[root@100 /]# mkdir -p /www/mongoDB/shard/config
[root@100 /]# /usr/local/mongoDB/bin/mongod --port 27100 --dbpath=/www/mongoDB/shard/config --logpath=/www/mongoDB/shard/log/config.log --logappend --fork

Remarque : Ici, nous pouvons le démarrer exactement comme démarrer le service mongodb ordinaire, sans ajouter les paramètres --shardsvr et configsvr. Comme la fonction de ces deux paramètres est de changer le port de démarrage, nous pouvons simplement spécifier le port nous-mêmes.

Étape 3 : Démarrer le processus de route

/usr/local/mongoDB/bin/mongos --port 40000 --configdb localhost:27100 --fork --logpath=/www/mongoDB/shard/log/route.log --chunkSize 500

Dans les paramètres de démarrage de mongos, l'élément chunkSize est utilisé pour spécifier la taille du morceau. L'unité est Mo. La taille par défaut est de 200 Mo.

Étape 4 : Configurer Sharding

Ensuite, nous utilisons MongoDB Shell pour nous connecter à mongos et ajouter un nœud Shard

[root@100 shard]# /usr/local/mongoDB/bin/mongo admin --port 40000
MongoDB shell version: 2.0.7
connecting to: 127.0.0.1:40000/admin
mongos> db.runCommand({ addshard:"localhost:27020" })
{ "shardAdded" : "shard0000", "ok" : 1 }
......
mongos> db.runCommand({ addshard:"localhost:27029" })
{ "shardAdded" : "shard0009", "ok" : 1 }
mongos> db.runCommand({ enablesharding:"test" }) #设置分片存储的数据库
{ "ok" : 1 }
mongos> db.runCommand({ shardcollection: "test.log", key: { id:1,time:1}})
{ "collectionsharded" : "test.log", "ok" : 1 }

Étape 5 : Il n'est pas nécessaire de changer grand-chose dans le code du programme. Connectez simplement la base de données à l'interface 40000

tout comme vous vous connectez à une base de données mongo ordinaire.

Site Web PHP chinois