Gérer un schéma dans une application SaaS qui utilise des bases de données mutualisées partitionnées
S’applique à : Azure SQL Database
Ce didacticiel examine les défis liés du maintien d’un parc de bases de données dans une application SaaS (Software as a Service). Les solutions sont présentées pour la ventilation des modifications de schéma dans le parc de bases de données.
Comme n’importe quelle application, l’application SaaS Wingtip Tickets évolue au fil du temps et nécessite l’apport de modifications à la base de données. Les modifications peuvent avoir un impact sur les données de schéma ou de référence ou appliquer des tâches de maintenance des bases de données. Avec une application SaaS qui utilise une base de données par modèle de client, les modifications doivent être coordonnées dans un parc potentiellement massif de bases de données client. En outre, vous devez intégrer ces modifications dans le processus d’approvisionnement de bases de données pour vous assurer qu’elles sont incluses dans les nouvelles bases de données, telles que créées.
Deux scénarios
Ce didacticiel explore les deux scénarios suivants :
- Déployer des mises à jour des données de référence pour tous les locataires.
- Régénérer un index sur la table qui contient les données de référence.
La fonctionnalité Tâches élastiques d’Azure SQL Database est utilisée pour exécuter ces opérations sur les bases de données de locataire. Les travaux fonctionnent également sur la base de données de client « modèle ». Dans l’exemple d’application Wingtip Tickets, cette base de données modèle est copiée pour provisionner une nouvelle base de données client.
Ce didacticiel vous montre comment effectuer les opérations suivantes :
- Créer un agent de travail.
- Exécuter une requête T-SQL sur plusieurs bases de données client.
- Mettre à jour les données de référence dans toutes les bases de données client.
- Créer un index sur une table dans toutes les bases de données de locataire.
Prérequis
L’application de bases de données mutualisées Wingtip Tickets doit déjà être déployée :
- Pour obtenir des instructions, consultez le premier didacticiel qui introduit l’application de bases de données mutualisées SaaS Wingtip Tickets :
Déployer et explorer une application multilocataire partitionnée qui utilise Azure SQL Database.- Le processus de déploiement dure moins de cinq minutes.
- Vous devez avoir la version mutualisée partitionnée de Wingtip installée. Les versions Autonome et Base de données par client ne prennent pas en charge ce didacticiel.
- Pour obtenir des instructions, consultez le premier didacticiel qui introduit l’application de bases de données mutualisées SaaS Wingtip Tickets :
La dernière version de SQL Server Management Studio (SSMS) doit être installée. Téléchargez et installez SSMS.
Azure PowerShell doit être installé. Pour plus d’informations, consultez Prise en main d’Azure PowerShell.
Présentation des modèles de gestion de schéma SaaS
Le modèle de base de données partitionnée mutualisée utilisé dans cet exemple permet à une base de données de locataire de contenir un ou plusieurs locataires. Cet exemple présente la possibilité d’utiliser une combinaison de bases de données mutualisées et à locataire unique, créant ainsi un modèle de gestion de locataire hybride. La gestion des modifications apportées à ces bases de données peut être compliquée. Les travaux élastiques facilitent l’administration et la gestion d’un grand nombre de bases de données. Les tâches vous permettent d’exécuter de façon sécurisée et fiable des scripts Transact-SQL en tant que tâches, sur un groupe de bases de données de locataire. Les tâches sont indépendants de la saisie ou de l’interaction utilisateur. Cette méthode peut être utilisée pour déployer les modifications de schéma ou de données de référence commune sur tous les locataires d’une application. Les Tâches élastiques permettent également de conserver une copie du modèle finale de la base de données. Le modèle est utilisé pour créer de nouveaux locataires, afin de s’assurer que le schéma et les données de référence les plus récents sont utilisés.
Tâches élastiques
En 2024, les tâches élastiques ont été publiés en tant que produit en disponibilité générale avec de nouvelles fonctionnalités. Une fonctionnalité intégrée d’Azure SQL Database, consultez tâches de base de données élastique.
Obtenir les scripts et le code source de l’application de base de données multi-locataire SaaS Wingtip Tickets
Les scripts de base de données Wingtip Tickets SaaS mutualisée et le code source de l’application sont disponibles dans le référentiel WingtipTicketsSaaS-MultiTenantDB sur GitHub. Consultez les conseils généraux avant de télécharger et de débloquer les scripts Wingtip Tickets SaaS.
Créer une base de données d’agent de travail et un nouvel agent de travail
Ce didacticiel nécessite l’utilisation de PowerShell pour créer la base de données de l’agent de travail et l’agent de travail. Comme la base de données msdb
utilisée par SQL Agent, un agent de travail utilise une base de données d’Azure SQL Database pour stocker les définitions, l’état et l’historique des travaux. Une fois l’agent de travail créé, vous pouvez immédiatement créer et surveiller des travaux.
- Dans PowerShell ISE, ouvrez ...\Learning Modules\Schema Management\Demo-SchemaManagement.ps1.
- Appuyez sur F5 pour exécuter le script.
Le script Demo-SchemaManagement.ps1 appelle le script Deploy-SchemaManagement.ps1 pour créer une base de données nommée jobagent
sur le serveur de catalogue. Il crée ensuite l’agent de travail, en passant la base de données jobagent
comme un paramètre.
Créer un travail pour déployer les nouvelles données de référence sur tous les locataires
Préparation
Chaque base de données de client comprend un ensemble de types de lieux dans la table VenueTypes
. Chaque type de lieux définit le type d’événements qui peut être hébergé dans un lieu. Ces types de lieux correspondent aux images d’arrière-plan visibles dans l’application des événements client. Dans cet exercice, vous allez déployer une mise à jour dans toutes les bases de données afin d’ajouter deux types de lieux supplémentaires : Motorcycle Racing (Courses de moto) et Swimming Club (Club de natation).
Tout d’abord, examinez les types de lieux inclus dans chaque base de données client. Connectez-vous à l’une des bases de données de locataire dans SQL Server Management Studio (SSMS) et vérifiez la table VenueTypes
. Vous pouvez également interroger cette table dans l’éditeur de requêtes du portail Azure, auquel vous avez accès par la page de la base de données.
- Ouvrez SSMS et connectez-vous au serveur de locataire :
tenants1-dpt-<user>.database.windows.net
. - Pour confirmer que Motorcycle Racing et Swimming Club ne sont pas déjà inclus, accédez à la base de données
contosoconcerthall
sur le serveurtenants1-dpt-<user>
et interrogez la tableVenueTypes
.
Étapes
Maintenant, vous créez une tâche pour mettre à jour la table VenueTypes
dans chaque base de données de locataire en ajoutant les deux nouveaux types de lieux.
Pour créer un nouveau travail, utilisez l’ensemble de procédures stockées du système de travaux créé dans la base de données jobagent
. Les procédures stockées ont été créées lors de la création de l’agent de travail.
Dans SSMS, connectez-vous au serveur de locataire :
tenants1-mt-<user>.database.windows.net
.Naviguez jusqu’à la base de données
tenants1
.Interrogez la table
VenueTypes
pour confirmer que Motorcycle Racing et Swimming Club ne sont pas encore dans la liste des résultats.Connectez-vous au serveur de catalogue,
catalog-mt-<user>.database.windows.net
.Connectez-vous à la base de données
jobagent
dans le serveur de catalogues.Dans SSMS, ouvrez le fichier ...\Learning Modules\Schema Management\DeployReferenceData.sql.
Modifiez l’instruction :
set @User = <user>
et remplacer la valeur de l’utilisateur utilisée lors du déploiement de l’application de base de données Wingtip Tickets SaaS multilocataire.Appuyez sur F5 pour exécuter le script.
Observer
Observez les éléments suivants dans le script DeployReferenceData.sql :
sp_add_target_group crée le nom de groupe cible DemoServerGroup et ajoute des membres cibles au groupe.
sp_add_target_group_member ajoute les éléments suivants :
- Un type de membre cible serveur.
- Il s’agit du serveur
tenants1-mt-<user>
qui contient les bases de données de locataire. - Y compris le serveur contient les bases de données client qui existent au moment de l'exécution du travail.
- Il s’agit du serveur
- Un type de membre cible base de données pour la base de données modèle (
basetenantdb
) qui réside sur le serveurcatalog-mt-<user>
, - Un type de membre cible base de données pour inclure la base de données
adhocreporting
utilisée dans un autre didacticiel.
- Un type de membre cible serveur.
sp_add_job crée une tâche appelée Reference Data Deployment (Déploiement des données de référence).
sp_add_jobstep crée l’étape du travail contenant le texte de la commande T-SQL pour mettre à jour la table de référence,
VenueTypes
.Les autres vues dans le script indiquent l’existence des objets et contrôlent l’exécution du travail. Utilisez ces requêtes pour passer en revue la valeur d’état dans la colonne cycle de vie afin de déterminer la fin du travail. La tâche met à jour la base de données de locataire et met à jour les deux bases de données supplémentaires contenant la table de référence.
Dans SSMS, accédez à la base de données de locataire sur le serveur tenants1-mt-<user>
. Interrogez la table VenueTypes
pour confirmer que Motorcycle Racing et Swimming Club sont désormais dans la liste des résultats. Le nombre total de types de lieux doit avoir augmenté par deux unités.
Créer une tâche pour gérer l’index de la table de référence
Cet exercice crée un travail pour régénérer l’index sur la clé primaire de la table de référence de toutes les bases de données client. Une régénération d’index est une opération d’administration de bases de données qu’un administrateur peut exécuter après le chargement de charge de données volumineuses, afin d’améliorer les performances.
Dans SSMS, connectez-vous à la base de données
jobagent
sur le serveurcatalog-mt-<user>.database.windows.net
.Dans SSMS, ouvrez ...\Learning Modules\Schema Management\OnlineReindex.sql.
Appuyez sur F5 pour exécuter le script.
Observer
Observez les éléments suivants dans le script OnlineReindex.sql :
sp_add_job
crée une tâche nommée Online Reindex PK__VenueTyp__265E44FD7FD4C885.sp_add_jobstep
crée l’étape du travail contenant le texte de la commande T-SQL pour mettre à jour l’index.Les vues restantes dans le script surveillent l’exécution du travail. Utilisez ces requêtes pour passer en revue la valeur d’état dans la colonne
lifecycle
afin de déterminer le moment où la tâche a été terminée avec succès sur tous les membres du groupe cible.
Ressources supplémentaires
Étapes suivantes
Dans ce tutoriel, vous avez appris à effectuer les opérations suivantes :
- Créer un agent de travail pour exécuter des travaux T-SQL dans plusieurs bases de données
- Mettre à jour les données de référence dans toutes les bases de données de locataire
- Créer un index sur une table dans toutes les bases de données de locataire
Ensuite, consultez le didacticiel de génération d’états ad hoc pour explorer l’exécution de requêtes distribuées dans les bases de données de locataire.