MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongoose crée une connexion pour la prise en charge multi-tenant dans node.js

Je ne recommanderais pas de créer et de gérer manuellement ces connexions distinctes. Je ne connais pas les détails de vos besoins multi-locataires (nombre de locataires, taille des bases de données, nombre de transactions attendu, etc.), mais je pense qu'il serait préférable d'utiliser quelque chose comme Fonction useDb de Mongoose . Ensuite, Mongoose peut gérer tous les détails du pool de connexions.

mettre à jour

La première direction que j'explorerais consiste à configurer chaque locataire sur un processus de nœud distinct. L'exécution de vos locataires dans des processus de nœuds distincts présente des avantages intéressants. Cela a du sens du point de vue de la sécurité (mémoire isolée) et du point de vue de la stabilité (un crash de processus locataire n'affecte pas les autres).

En supposant que vous basiez la location sur l'URL, vous configureriez un serveur proxy devant les serveurs locataires réels. Son travail consisterait à examiner l'URL et à acheminer vers le processus correct en fonction de ces informations. Il s'agit d'un proxy http de nœud très simple mettre en place. Chaque instance de locataire peut être exactement la même base de code, mais lancée avec une configuration différente (qui leur indique quelle chaîne de connexion mongo utiliser).

Cela signifie que vous pouvez concevoir votre application réelle comme si elle n'était pas mutualisée. Chaque processus ne connaît qu'une seule base de données mongo et aucune logique multi-locataire n'est nécessaire. Il vous permet également de diviser facilement le trafic ultérieurement en fonction de la charge. Si vous devez diviser les locataires pour des raisons de performances, vous pouvez le faire de manière transparente au niveau du proxy. Le DNS peut rester le même et vous pouvez simplement déplacer le serveur sur lequel se trouvent les instances dans les coulisses. Vous pouvez même demander au proxy d'équilibrer les demandes d'un locataire entre plusieurs serveurs.