2016-12-05 1 views
1

Actuellement, j'explore comment fonctionne la base de données Sharding dans Mongo DB.Partage de base de données dans MongoDB?

Mon cas d'utilisation est que j'ai un certain nombre de produits comme l'électronique/bébé prods/livres/chiffons etc. dans mon application web. Dites que je veux stocker différents produits sur différents DB (sur une machine différente) pour distribuer la charge et l'échelle si nécessaire.

Ma question est de la responsabilité de Mongo DB de stocker le produit dans la bonne base de données en fonction du type de produit et le code java de mon serveur web ne le comprendra pas du tout? Est-ce que Mongo DB supporte cela?

Ou sera-t-il de la responsabilité de webserver java code de se connecter à la base de données correcte pour stocker le produit en fonction de son type?

Répondre

0

Oui, MongoDB prend en charge ce que vous décrivez. Sharding in MongoDB est comment MongoDB permet la mise à l'échelle/mise à l'échelle horizontale. Il nécessite une clé de fragmentation qui est utilisée pour décider quel fragment un document (un produit dans votre cas) dans une collection fragmentée aboutira. Il semble que vous souhaitiez utiliser le type de produit comme clé de partition. MongoDB prend la responsabilité de diriger les documents vers les fragments en fonction de la clé de partition. En référence à la page Web liée, votre serveur Web se connectera et enverra des requêtes aux instances de routeur de requête mongos qui achemineront les requêtes aux fragments de manière appropriée en fonction de la clé de partition.

Le choix de la clé de partition ne doit pas être pris à la légère. Si elles sont mal choisies, presque toutes les requêtes peuvent aboutir à un seul fragment. Découvrez comment les facteurs clés de partition, tels que la cardinalité, la fréquence et le taux de changement, peuvent avoir une incidence sur les performances de la partition here.

1

Votre application Java se connecte à mongos et mongos ne représentent pas toute la DB importe combien de mongod vous en cours d'exécution! mongos gère la connexion au bon serveur mongod et l'exécution de votre requête. Donc, en gros, votre application Java voit MongoDB comme une seule boîte noire. P.: vous pouvez exécuter plusieurs mongos, leur attribuer un seul nom de domaine dans votre local DNS provider et il s'occupera de l'équilibrage de charge sur votre mongos. Le comportement de votre application Java est le même dans ce scénario.