122 votes

Quelle est l'approche recommandée pour les bases de données multi-tenant dans MongoDB ?

J'envisage de créer une application multi-tenant en utilisant MongoDB. Je ne sais pas encore combien de locataires j'aurai, mais j'aimerais pouvoir m'étendre à des milliers de personnes.

Je peux penser à trois stratégies :

  1. Tous les locataires dans la même collection, en utilisant des champs spécifiques aux locataires pour la sécurité.
  2. 1 Collection par locataire dans une seule BD partagée
  3. 1 base de données par locataire

La voix dans ma tête me suggère de choisir l'option 2.

Réflexions et implications, quelqu'un ?

0 votes

Cher @Braintapper, nous sommes actuellement dans la même situation avec notre application qui doit être multi-tenant. Avez-vous des expériences à partager ? Ce serait formidable, merci.

3 votes

Pour mon application, j'ai fini par choisir Postgresql (nous bénéficions d'une base de données relationnelle avec des fonctionnalités de type NoSQL via l'extension hstore) au lieu de MongoDB et de gérer la multi-location dans Rails avec le scoping. Nous utilisons une approche similaire à celle utilisée dans ce Railscast : railscasts.com/episodes/388-multitenancy-with-scopes

2 votes

Je sais qu'une réponse a déjà été choisie pour cette question mais toute autre personne devrait se référer à ce document officiel sur le site mongohq : support.mongohq.com/use-cases/multi-tenant.html . Il se prononce clairement contre la solution de @Braintapper ci-dessous

-4voto

Sumedh Points 141

Bien que la discussion porte ici sur le NoSQL et principalement sur MongoDB, nous, chez Citus Nous utilisons PostgreSQL et construisons une base de données distribuée/sharded multi-tenant.

Notre site guide des cas d'utilisation passe en revue un exemple d'application, couvrant le schéma et les diverses fonctionnalités spécifiques au multi-tenant.

Pour les données non structurées, nous utilisons la colonne JSONB de PostgreSQL pour stocker ces données et celles propres aux locataires.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X