Qu'est-ce que l'approche recommandée vers le multi-locataire de bases de données dans MongoDB?

Je pense à la création d'un multi-locataire de l'app à l'aide de MongoDB. Je n'ai pas de suppositions en termes de nombre de locataires j'aurais encore, mais je voudrais être en mesure à l'échelle de plusieurs milliers de personnes.

Je pense, de trois stratégies:

  1. Tous les locataires dans la même collection, à l'aide de locataire champs spécifiques pour la sécurité
  2. 1 Collecte par le locataire dans une seule et même DB
  3. 1 Base de données par le locataire

La voix dans ma tête ce qui suggère que je pars avec l'option 2.

Pensées et les implications, n'importe qui?

  • Cher @Braintapper, nous sommes dans la même situation en ce moment avec notre application qui a besoin d'être multi-location-mesure. Avez-vous des expériences à partager? Ce serait génial, merci.
  • Pour mon application, j'ai fini par aller avec Postgresql (nous bénéficions d'une base de données relationnelles avec certains NoSQL comme fonctionnalité via le hstore extension) au lieu de MongoDB et de manutention multi-tenancy dans les Rails avec la portée. Nous utilisons une approche similaire à celle utilisée dans ce Railscast: railscasts.com/episodes/388-multitenancy-with-scopes
  • je sais que la réponse a déjà été choisi pour cette question, mais quelqu'un d'autre devrait se référer à ce document officiel sur mongohq site : support.mongohq.com/use-cases/multi-tenant.html . C'est clairement défenseurs contre @Braintapper solution ci-dessous
  • Réponse de mise à jour. Les informations dans votre lien n'était pas disponible en Mai 2010.
  • utilisez-vous postgresql solution (basé sur railscasts.com dès maintenant ? Je veux l'utiliser, mais je ne suis pas certain que cela apporte de la sécurité et combien de locataire, il peut prendre en charge ! svp j'ai besoin de vos commentaires au sujet de cette expérience. merci
  • Oui, nous utilisons notre propre version personnalisée de Postgresql solution. Vous pouvez avoir autant de locataires que vous le souhaitez, il vous suffit de vous assurer que votre conception de base de données est à l'écoute de vos besoins. En termes de sécurité, vous aurez à faire un travail là-bas. Il y a quelques conserves de pierres précieuses et de bibliothèques que vous pouvez trouver pour vous aider à gérer cela.
  • merci pour la réponse, je pensais à postgres schéma de séparation, mais il semble qu'il a ses limites, et peut-être que c'est mieux de faire de la "étendues de solution", pouvez-vous me donner une idée du genre de travail que j'ai à faire à l'intérieur de la question de la sécurité ?
  • Vous devez vous assurer que vos contrôleurs et les modèles sont en train de faire ce dont ils ont besoin pour ramasser le locataire actuel de l'id pour s'assurer que toutes les requêtes sont filtrés contre le locataire de l'id. Une fois de plus, à l'aide d'une conserve de gem pourrait probablement le faire pour vous. Tout ce que je vous raconte comment j'ai fait c'est probablement le cas.

InformationsquelleAutor Braintapper | 2010-05-01