Notre application Spwns est actuellement une nouvelle base de données pour chaque client. Nous commençons à nous demander si nous devrions envisager de refléter cela à un système multi-locataires. p>
Quels avantages / échanges devrions-nous envisager? Quelles sont les meilleures pratiques pour la mise en œuvre d'une application multi-locataires dans les rails? P>
5 Réponses :
Les systèmes multi-locataires introduiront toute une gamme de problèmes pour vous. Mes pensées rapides sont inférieures à p>
tout SQL doit être examiné et refactored pour inclure une cliente valeur. p> li>
Tous les index doivent être examinés à déterminer si le clientIide doit être inclus p> li>
une erreur dans une déclaration SQL par un Développeur / Sysadmin dans la production affecter tous vos clients. P> LI>
une corruption de base de données / problème sera affecter tous vos clients P> li>
Vous avez des problèmes de confidentialité de données Pendant que la pauvre code / mise en œuvre pourrait Autoriser Customera de voir les données appartenant à à la clientèle p> li>
Un client utilisant votre système dans un La manière lourde / agressive peut affecter Autres clients Perception des performances p> li>
adapter les données statiques à une préférence des clients individuels devient plus complexe. p> li> ul>
Je suis sûr qu'il y a un certain nombre d'autres problèmes, mais ils étaient mes pensées initiales. P>
Merci Steve .. Vous ne sonnez pas trop émis .. aucun avantage de le faire à votre avis?
Hmm. Il y a aussi beaucoup d'inconvénients à l'approche multi-bases de données. Si je concevez un système, il aurait tendance à être multi-fonctions avec des clients importants particuliers peut-être diviser sur un système distinct. Il existe en effet des avantages pour un système multi-locataires. Le nombre de bases de données devient un mal de tête administratif. Il s'agit également de mises à jour de script Painfulto à plusieurs bases de données, etc.
Je n'ai aucune expérience avec cela personnellement, mais pendant la foudre parle au ruby Hoedown 2009, Andrew Coleman a présenté un plugin qu'il conçu et utilise pour des bases de données multi-locataires dans des rails avec des sous-domaines. Vous pouvez Découvrez les diapositives de conversation Lightning et voici le Repository ACTS_AS_RESTRICTED_SUBDOMAIN . P>
Pourquoi voudriez-vous? Avez-vous une grosse agrégation entre les utilisateurs ou vous frayez-vous trop de DBS? Avez-vous envisagé d'utiliser des fichiers SQLITE par locataire au lieu de serveurs de DB partagés (puisque les applications multi -antes sont souvent faibles et n'ont pas besoin de beaucoup de concurrence)? P>
Nous avons considéré cela, cependant, dans une configuration de serveur Web équilibré de la charge, nous aurions rencontré des problèmes à l'aide de SQLLITE sur différents serveurs Web, vous avez donc opté pour une approche de 2 niveaux.
Cela dépend vraiment de ce que vous faites. P>
Nous faisons un programme MIS pour l'industrie d'impression qui suit des stocks, des employés, des clients, des équipements et des calculs graves pour estimer les coûts d'effectuer des travaux basés sur de nombreuses variables d'entrée. P>
Nous prévoyons de très grandes bases de données pour chaque client et nous avons actuellement 170 tables. Ajout d'une autre colonne à presque toutes les table pour stocker le client_id blesse mon cerveau. P>
Nous sommes actuellement dans la phase bêta de notre programme et voici quelques éléments que nous avons rencontrés: p>
Si vous avez des questions spécifiques sur l'une d'entre elles, je peux vous aider. P>
Notre application fonctionne beaucoup comme indiqué ci-dessus. Nous avons toujours eu des problèmes de migration de bases de données et avons constaté que notre développement peut dériver dans différents schémas incompatibles, ce qui entraîne de nombreux efforts pour tenter de fusionner lorsque nous voulons déployer. Les principales attractions visant à refactoriser notre application en tant que système multi-tennant sont que nous n'avons pas à vous soucier de beaucoup de logiques de migration moindre de la base de données, nous pouvons mettre en place notre application basée sur une base de données unique, et nous pouvons construire un ensemble de nettoyage de Outils d'administration ..
Je suis en train de rechercher la même chose et je viens de trouver cette présentation pour offrir une solution intéressante: à l'aide de schémas de Postgre (un peu comme des espaces de noms) pour séparer les données au niveau de DB tout en gardant tous les locataires dans la même dB et à rester (surtout ) transparent aux rails. P>
Écrire des applications multi-locataires dans les rails - Guy Naor P>