Control Plane / Data Plane
Se adopta un modelo de database-per-tenant (no schema-per-tenant): cada célula recibe su propia base de datos física en la misma instancia de SQL Server 2022, separada de una base de datos de catálogo que actúa como control plane.
Figura 1. Separación entre control plane (catálogo) y data plane (bases tenant).
El enunciado exige que cada base de datos aprovisionada tenga un peso máximo estricto y un ciclo de
vida (TTL) propio que pause o elimine la base completa. Esto solo es limpio con aislamiento físico
real: un esquema compartido no permite aplicar MAXSIZE por tenant a nivel de motor ni hacer DROP DATABASE de un tenant sin afectar a los demás. Database-per-tenant también acota el radio de
explosión de un ataque o bug: un problema en la DB de una célula nunca cruza hacia la de otra.
Rol del catálogo (control plane)
La base de datos de catálogo almacena: células registradas, tenants por célula, connection strings (cifradas), cuotas de almacenamiento, marcas de última actividad para el TTL, y el mapeo de rutas (célula/tenant → base de datos física). Es la única fuente de verdad que el backend consulta para resolver a qué base de datos conectarse en cada petición.
Rol de las bases de datos tenant (data plane)
Cada base de datos tenant contiene exclusivamente los objetos de negocio de esa célula: sus tablas, sus Stored Procedures, sus Views y sus Functions. No tiene visibilidad ni acceso a otras bases de datos tenant ni al catálogo.