Compartir a través de


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

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.

pantalla

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.

  1. En PowerShell ISE, abra ...\Learning Modules\Schema Management\Demo-SchemaManagement.ps1.
  2. 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.

  1. Abra SSMS y conéctese al servidor inquilino: tenants1-dpt-<user>.database.windows.net.
  2. 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 servidor tenants1-dpt-<user> y consulte la tabla VenueTypes.

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.

  1. En SSMS, conéctese al servidor inquilino: tenants1-mt-<user>.database.windows.net.

  2. Vaya a la base de datos tenants1.

  3. Consulte la tabla VenueTypes para confirmar que ni Motorcycle Racing ni Swimming Club están todavía en la lista de resultados.

  4. Conéctese al servidor de catálogo, que es catalog-mt-<user>.database.windows.net.

  5. Conéctese a la base de datos jobagent en el servidor de catálogo.

  6. En SSMS, abra el archivo ...\Learning Modules\Schema Management\DeployReferenceData.sql.

  7. 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.

  8. 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.
    • Un tipo de miembro de destino de base de datos para la base de datos de plantilla (basetenantdb) que reside en el servidor catalog-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.
  • 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.

  1. En SSMS, conéctese a la base de datos jobagent en el servidor catalog-mt-<user>.database.windows.net.

  2. En SSMS, abra ...\Learning Modules\Schema Management\OnlineReindex.sql.

  3. 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.