Administración del esquema en una aplicación SaaS que usa bases de datos multiinquilino particionadas
Se aplica a: Azure SQL Database
En este tutorial se examinan los desafíos de mantenimiento de una gran cantidad de bases de datos en una aplicación de software como servicio (SaaS). Se muestran soluciones para distribuir de manera ramificada los cambios de esquema en todas las bases de datos.
Como cualquier otra aplicación, la aplicación SaaS de Wingtip Tickets evolucionará con el tiempo y requerirá que se hagan cambios en la base de datos. Los cambios pueden afectar los datos de referencia o el esquema, o bien aplicar tareas de mantenimiento de la base de datos. Con una aplicación SaaS con un patrón de base de datos por inquilino, se deben coordinar los cambios en toda una cantidad potencialmente enorme de bases de datos de inquilino. Además, debe incorporar estos cambios en el proceso de aprovisionamiento de base de datos para garantizar que se incluyen en las bases de datos nuevas a medida que se crean.
Dos escenarios
En este tutorial se exploran estos dos escenarios:
- La implementación de actualizaciones de los datos de referencia para todos los inquilinos.
- La recompilación de un índice de la tabla que contiene los datos de referencia.
La característica Trabajos elásticos de Azure SQL Database se usa para ejecutar estas operaciones entre distintas bases de datos de inquilino. Los trabajos también funcionan en la base de datos de inquilino de "plantilla". En la aplicación Wingtip Tickets de ejemplo, esta base de datos de plantilla se copia para aprovisionar una base de datos de inquilino nueva.
En este tutorial, aprenderá a:
- Crear un agente de trabajo.
- Ejecutar una consulta T-SQL en bases de datos multiinquilino.
- Actualizar los datos de referencia en todas las bases de datos de inquilino.
- Crear un índice en una tabla en todas las bases de datos de inquilino.
Requisitos previos
La aplicación de base de datos multiinquilino de Wingtip Tickets ya debe estar implementada:
- Si desea ver las instrucciones, consulte el primer tutorial, en el que se presenta la aplicación de base de datos multiinquilino Wingtip Tickets de SaaS:
Implementación y exploración de una aplicación multiinquilino con particiones que usa Azure SQL Database.- El proceso de implementación se ejecuta durante menos de cinco minutos.
- Debe tener instalada la versión multiinquilino con particiones de Wingtip. Las versiones para Independiente y Base de datos por inquilino no admiten este tutorial.
- Si desea ver las instrucciones, consulte el primer tutorial, en el que se presenta la aplicación de base de datos multiinquilino Wingtip Tickets de SaaS:
Debe estar instalada la versión más reciente de SQL Server Management Studio (SSMS). Descarga e instalación de SSMS.
Azure PowerShell debe estar instalado. Para más información, consulte Introducción a Azure PowerShell.
Introducción a los patrones de administración de esquema de SaaS
El modelo de base de datos multiinquilino con particiones utilizado en este ejemplo habilita una base de datos de inquilino para que contenga uno o más inquilinos. En este ejemplo se analiza la posibilidad de usar una combinación de bases de datos multiinquilino o de un solo inquilino, lo cual permitiría habilitar un modelo híbrido de administración de inquilinos. La administración de cambios en estas bases de datos puede ser complicada. La característica Trabajos elásticos facilita la administración de grandes cantidades de bases de datos. Los trabajos le permiten ejecutar de manera segura y confiable los scripts de Transact-SQL como tareas en un grupo de bases de datos de inquilino. Las tareas son independientes de la interacción o la intervención del usuario. Este método se puede usar para implementar cambios en el esquema o en los datos de referencia comunes en todos los inquilinos de una aplicación. También puede usar Trabajos elásticos para mantener una copia de la base de datos de la plantilla golden. La plantilla se usa para crear inquilinos nuevos, asegurándose siempre de que se usen los datos de referencia y el esquema más recientes.
Trabajos elásticos
En 2024, los trabajos elásticos se publicaron como un producto disponible con carácter general que cuenta con nuevas características. Para ver alguna característica integrada de Azure SQL Database, consulte trabajos elásticos de bases de datos.
Obtención del código fuente y los scripts de la aplicación SaaS de base de datos multiinquilino Wingtip Tickets
Los scripts y el código fuente de la aplicación SaaS de base de datos multiinquilino Wingtip Tickets están disponibles en el repositorio WingtipTicketsSaaS-MultitenantDB de GitHub. Consulte las instrucciones generales para saber cuáles son los pasos para descargar y desbloquear los scripts SaaS de Wingtip Tickets.
Creación de una base de datos de agente de trabajo y un agente de trabajo nuevo
Para este tutorial, es necesario usar PowerShell para crear la base de datos de agente de trabajo y el agente de trabajo. Al igual que la base de datos msdb
que usa el Agente SQL, un agente de trabajo usa una base de datos de Azure SQL Database para almacenar definiciones de trabajos, estados de trabajo y el historial. Una vez que se crea el agente de trabajo, se pueden crear y supervisar trabajos inmediatamente.
- En PowerShell ISE, abra ...\Learning Modules\Schema Management\Demo-SchemaManagement.ps1.
- Presione F5 para ejecutar el script.
El script Demo-SchemaManagement.ps1 llama al script Deploy-SchemaManagement.ps1 para crear una base de datos denominada jobagent
en el servidor de catálogo. El script luego crea el agente de trabajo, con la base de datos jobagent
como parámetro.
Creación de un trabajo para implementar nuevos datos de referencia en todos los inquilinos
Preparación
Cada base de datos de inquilinos incluye un conjunto de los tipos de ubicación en la tabla VenueTypes
. Cada tipo de ubicación define la clase de eventos que se organizan en una ubicación. Estos tipos de ubicación se corresponden con las imágenes de fondo que se ven en la aplicación de eventos de inquilino. En este ejercicio, se implementa una actualización en todas las bases de datos para agregar dos tipos de ubicación adicionales: Motorcycle Racing (motociclismo) y Swimming Club (club de natación).
En primer lugar, revise los tipos de ubicación que se incluyen en cada base de datos de inquilino. Conéctese a una de las bases de datos de inquilino en SQL Server Management Studio (SSMS) y revise la tabla VenueTypes
. También puede consultar esta tabla en el Editor de consultas de Azure Portal, al que se accede desde la página de la base de datos.
- Abra SSMS y conéctese al servidor inquilino:
tenants1-dpt-<user>.database.windows.net
. - Para confirmar que Motorcycle Racing (motociclismo) y Swimming Club (club de natación) no están incluidos actualmente, vaya a la base de datos
contosoconcerthall
en el servidortenants1-dpt-<user>
y consulte la tablaVenueTypes
.
Pasos
Ahora cree un trabajo para actualizar la tabla VenueTypes
en cada base de datos de inquilinos. Para ello, agregue los dos tipos de ubicación nuevos.
Para crear un trabajo nuevo, puede usar el conjunto de procedimientos almacenamientos en el sistema de trabajos que se crearon en la base de datos jobagent
. Los procedimientos almacenados se crearon cuando se creó el agente de trabajo.
En SSMS, conéctese al servidor inquilino:
tenants1-mt-<user>.database.windows.net
.Vaya a la base de datos
tenants1
.Consulte la tabla
VenueTypes
para confirmar que ni Motorcycle Racing ni Swimming Club están todavía en la lista de resultados.Conéctese al servidor de catálogo, que es
catalog-mt-<user>.database.windows.net
.Conéctese a la base de datos
jobagent
en el servidor de catálogo.En SSMS, abra el archivo ...\Learning Modules\Schema Management\DeployReferenceData.sql.
Modifique la instrucción:
set @User = <user>
y sustituya el valor de usuario utilizado al implementar la aplicación SaaS de base de datos multiinquilino Wingtip Tickets.Presione F5 para ejecutar el script.
Observación
Observe los elementos siguientes en el script DeployReferenceData.sql:
sp_add_target_group crea el nombre del grupo de destino DemoServerGroup y agrega miembros de destino al grupo.
sp_add_target_group_member agrega los elementos siguientes:
- Un tipo de miembro de destino de servidor.
- Se trata del servidor
tenants1-mt-<user>
que contiene las bases de datos de inquilino. - Al incluir el servidor, se incluyen las bases de datos de inquilino que existen en el momento en que se ejecuta el trabajo.
- Se trata del servidor
- Un tipo de miembro de destino de base de datos para la base de datos de plantilla (
basetenantdb
) que reside en el servidorcatalog-mt-<user>
. - Un tipo de miembro de destino de base de datos para incluir la base de datos
adhocreporting
que se usa en un tutorial posterior.
- Un tipo de miembro de destino de servidor.
sp_add_job crea un trabajo denominado Reference Data Deployment.
sp_add_jobstep crea el paso de trabajo que contiene el texto del comando T-SQL para actualizar la tabla de referencia,
VenueTypes
.En las demás vistas del script se muestran los objetos existentes y se supervisa la ejecución de los trabajos. Use estas consultas para revisar el valor de estado en la columna ciclo de vida a fin de determinar si el trabajo finalizó. El trabajo actualiza la base de datos de inquilinos y actualiza las dos bases de datos adicionales que contienen la tabla de referencia.
En SSMS, vaya a la base de datos de inquilino del servidor tenants1-mt-<user>
. Consulte la tabla VenueTypes
para confirmar que ni Motorcycle Racing ni Swimming Club ahora se agregaron a la tabla. El número total de tipos de ubicación debe haber aumentado en dos.
Creación de un trabajo para administrar el índice de tabla de referencia
Este ejercicio crea un trabajo para recompilar el índice en la clave principal de la tabla de referencia en todas las bases de datos de inquilino. La recompilación de un índice es una operación de administración de bases de datos típica que un administrador puede ejecutar después de cargar una gran cantidad de datos con el fin de mejorar el rendimiento.
En SSMS, conéctese a la base de datos
jobagent
en el servidorcatalog-mt-<user>.database.windows.net
.En SSMS, abra ...\Learning Modules\Schema Management\OnlineReindex.sql.
Presione F5 para ejecutar el script.
Observación
Observe los elementos siguientes en el script OnlineReindex.sql:
sp_add_job
crea un trabajo denominado Online Reindex PK__VenueTyp__265E44FD7FD4C885.sp_add_jobstep
crea el paso de trabajo que contiene el texto del comando T-SQL para actualizar el índice.Las demás vistas del script permiten supervisar la ejecución del trabajo. Use estas consultas para revisar el valor de estado en la columna
lifecycle
a fin de determinar si el trabajo ha finalizado correctamente en todos los miembros del grupo de destino.
Recursos adicionales
Pasos siguientes
En este tutorial, ha aprendido cómo:
- Crear un agente de trabajo para ejecutar trabajos T-SQL en varias bases de datos
- Actualizar los datos de referencia en todas las bases de datos de inquilino
- Crear un índice en una tabla en todas las bases de datos de inquilino
A continuación, pruebe el tutorial de notificaciones ad hoc para explorar la ejecución de consultas distribuidas en las bases de datos de inquilino.