Je vous recommande de lire Multi-Tenant Data Architecture , un livre blanc qui présente les options dont vous disposez, les avantages et les inconvénients. Pour résumer, il propose trois options:
- DB séparés
- schémas séparés
- schéma partagé
Vous êtes maintenant à l'étape de bases de données distinctes, qui offre la meilleure séparation (isolation entre les locataires), mais est la plus difficile à gérer. En devenant des centaines de locataires, vous vous rendrez compte que la logistique de l'administration de centaines de bases de données est loin d'être anodine. Pensez à la sauvegarde-restauration (emplacement des fichiers sauvegardés, des tâches, des planifications, etc.). Réfléchissez à la façon dont vous allez surveiller et gérer l'allocation des fichiers, l'espace disque utilisé et la croissance de la base de données sur des centaines de bases de données. Vous pensez quel sera votre scénario de haute disponibilité / reprise après sinistre dans un avenir proche avec 1000 locataires? 1000 DB en miroir, 1000 sessions d'envoi de journaux? Pensez à ce que si dans 6 mois votre équipe de développement vient à vous et vous dit "Je sais comment donner cette fonctionnalité géniale à notre produit, nous utiliserons la réplication transactionnelle!", Que direz-vous? "Bien sûr, permettez-moi de créer 500 éditeurs,"! Il n'est pas impossible de gérer des centaines de bases de données, mais si vous prévoyez de le faire, vous feriez mieux de perfectionner vos compétences PowerShell et de cesser d'utiliser les outils de gestion de l'interface utilisateur dès maintenant .
De plus, vous devez considérer que plusieurs (centaines) bases de données ont un impact mesurable sur les performances et les coûts:
- l'espace disque physique est utilisé de manière moins efficace (chaque base de données doit avoir une pièce de rechange, vous aurez cette pièce de rechange multipliée par le nombre de bases de données)
- Il n'y a aucun moyen de créer un disque de journal dédié pour les tâches gourmandes en écriture, vous devrez déplacer tous ces LDF sur un (ou plusieurs) stockage SSD
- les écritures de journal seront moins efficaces lors des validations fréquentes car elles s'étalent sur de nombreux enregistrements de bloc de journaux individuels par rapport à l'agrégation en un (vous obtiendrez des blocs de journaux sous-utilisés). Voir Qu'est-ce qu'un LSN: Numéro de séquence de journal pour comprendre de quoi je parle.
Les bases de données séparées présentent certains avantages, mais en raison de l'isolement, le principal avantage étant la sauvegarde / restauration indépendante.
Un scénario comme le vôtre est un candidat parfait pour les bases de données SQL Azure . Aucune administration d'espace disque, pas besoin de fournir HA / DR, passer à des centaines / milliers de bases de données, etc.