DBA
Schema, migraciones, tuning.
El DBA es la persona que mantiene los almacenes de datos operacionales rápidos, seguros y honestos bajo cambio. En un SDLC AI-nativo, el DBA opera un agente Schema Guard, cuatro slash prompts y un catálogo de MCPs validados sobre Azure SQL Database y Azure Cosmos DB — no un laptop lleno de scripts SQL.
Resumen ejecutivo
El DBA es responsable de la salud de las bases de datos operacionales — principalmente Azure SQL Database y Azure Cosmos DB — abarcando evolución de schema, performance de queries y confiabilidad. En un SDLC AI-nativo, su flujo se operacionaliza mediante un agente Schema Guard con cuatro slash prompts (/migrate-plan, /index-review, /query-tune, /rollback-script), instrucciones con alcance para archivos SQL y de migración, y MCPs validados que llegan a Azure Monitor, Application Insights y GitHub.
Las entregas primarias son planes de migración reversibles, cargas indexadas y tuneadas, scripts de rollback validados en no-producción y un log de cambios de schema que cualquier ingeniero puede leer. El DBA cierra la brecha entre la evolución de la aplicación y la realidad de la base de datos: las migraciones se despliegan detrás de feature flags, con prueba de que son reversibles, y las regresiones de performance se atrapan en CI, no en producción.
El DBA es un colaborador del Data Engineer y del Developer, no un guardián. Su poder se multiplica con agentes que vuelven automáticas las partes aburridas.
Rol y responsabilidades
Piensa en el DBA como el jefe de máquinas de un barco. El capitán fija el rumbo; el jefe de máquinas garantiza que los motores nunca se detengan, que las bombas sigan funcionando y que cada línea de combustible se pruebe antes de la tormenta. En un SDLC AI-nativo, el DBA mantiene los motores de datos corriendo bajo cambio constante.
Responsabilidades primarias:
- Revisar y mergear cada migración de schema con un plan de rollback
- Mantener la estrategia de índices para Azure SQL Database y la estrategia de partición para Azure Cosmos DB
- Tunear queries marcadas por Application Insights y por Azure SQL Query Store
- Aprobar cambios de acceso vía Microsoft Entra ID con defaults de menor privilegio
- Garantizar que backups y drills de restauración corran trimestralmente
- Colaborar con el Data Engineer en schemas compartidos y con el Developer en mappings de ORM
- Operar el agente Schema Guard y los prompts
/migrate-plan,/index-review,/query-tune,/rollback-script - Mantener el log de cambios de schema y el dashboard de performance de queries
Jobs to be done
- Como DBA, quiero que cada migración se revise con un script de rollback generado, para que ningún paso hacia adelante sea irreversible.
- Como DBA, quiero sugerencias de índice surgidas desde telemetría real de carga, para que el trabajo de optimización apunte al dolor real.
- Como DBA, quiero queries de larga duración tuneadas con análisis asistido por agente, para que las latencias p99 se mantengan dentro del SLA.
- Como DBA, quiero que las partition keys de Cosmos DB se revisen en los PRs de modelo de datos, para que las hot partitions no aparezcan a escala.
- Como DBA, quiero que los cambios de schema se desplieguen detrás de feature flags con backfill seguro, para que ningún release esté gateado por una operación DDL.
- Como DBA, quiero chequeos diarios de integridad y drills de restauración evidenciados en Azure Monitor, para que las afirmaciones de resiliencia sean verificables.
- Como DBA, quiero que las revisiones de acceso a la base de datos corran con Entra ID, para que el menor privilegio sea el estado por defecto.
- Como DBA, quiero un único log de cambios de schema publicado en Microsoft Teams, para que producto e ingeniería vean qué cambió en los datos compartidos.
Dolores antes del AI-nativo
- Migraciones forward-only. Una mala migración en producción significa restaurar desde backup, no revertir.
- Índices por adivinanza. Índices agregados por intuición del developer, no por evidencia del Query Store.
- ORMs dueños del schema. Schemas inferidos desde anotaciones de código, derivando del diseño previsto.
- Hot partitions en Cosmos. Partition keys elegidas para minimizar esfuerzo; el throttling en producción es el primer feedback.
- Grants de acceso ad-hoc. Permisos otorgados durante incidentes, nunca revocados, convirtiéndose en la nueva normalidad.
- Drills de restauración salteados. “Tenemos backups” se cree hasta el día en que necesitamos usarlos.
- Silencio en cambios de schema. Ingeniería se entera de la nueva columna por los errores de producción, no por la revisión de PR.
Flujo diario AI-nativo
El DBA trabaja desde Visual Studio Code con GitHub Copilot y desde la terminal con Claude Code, operando el agente Schema Guard a lo largo del día.
Setup matinal
- Abre Azure Monitor y Azure SQL Query Store; revisa queries largas y alertas de la madrugada.
- Ejecuta
/index-review --since=yesterday; el Schema Guard surgea recomendaciones de índice desde telemetría real. - Revisa los PRs de migración pendientes; confirma que cada uno tenga un
/rollback-script. - Verifica métricas de Cosmos DB para hot partitions y throttling; haz triage.
- Sincroniza con el Data Engineer sobre cualquier dependencia cross-store en movimiento hoy.
Ejecución al mediodía
- Para cada PR de migración, ejecuta
/migrate-plan; el Schema Guard verifica reversibilidad y produce un plan de ejecución paso a paso con gating por feature flag. - Invoca
/query-tunepara las regresiones top identificadas por Application Insights. - Valida los scripts de rollback en una base de datos de staging; adjunta la evidencia al PR.
- Empareja con Developers en mismatches entre ORM y schema.
Revisión al final de la tarde
- Publica el log diario de cambios de schema en Microsoft Teams.
- Revisa el acceso a la base de datos mediado por Entra ID; cierra grants obsoletos.
- Verifica el estado del drill de restauración; si no está verde este trimestre, agenda y ejecuta.
Primitivas recomendadas
Agente
| Agente | Archivo | Propósito |
|---|---|---|
schema-guard | .github/agents/schema-guard.agent.md | Revisa migraciones, planea índices, tunea queries y escribe scripts de rollback |
Slash prompts
| Comando | Archivo | Propósito |
|---|---|---|
/migrate-plan | .github/prompts/migrate-plan.prompt.md | Generar un plan de migración reversible con gating y estrategia de backfill |
/index-review | .github/prompts/index-review.prompt.md | Surgir recomendaciones de índice desde telemetría de Azure SQL Query Store |
/query-tune | .github/prompts/query-tune.prompt.md | Tunear una query lenta con análisis de plan de ejecución y sugerencias de reescritura |
/rollback-script | .github/prompts/rollback-script.prompt.md | Producir y validar un script de rollback para una migración |
Instrucciones con alcance
Alcance (applyTo) | Archivo | Propósito |
|---|---|---|
migrations/**/*.sql | .github/instructions/migrations.instructions.md | Pasos up y down requeridos, sin DDL destructivo sin un gate |
src/**/entities/** | .github/instructions/ormschema.instructions.md | Reglas de alineación ORM-schema para Azure SQL |
cosmos/**/*.ts | .github/instructions/cosmos-dba.instructions.md | Revisiones de partition key y política de índices para Azure Cosmos DB |
queries/**/*.sql | .github/instructions/queries.instructions.md | SARGabilidad, parametrización, política de query hints |
Hooks
pre-commit: lint de SQL, detector de DDL destructivopre-push: dry-run de migración contra una base de datos shadowpost-merge: agendar la ejecución de la migración con gating por feature flagnightly: ejecutar/index-reviewcontra Query Store y abrir issueson-deploy: publicar el log de cambios de schema en Microsoft Teams
MCPs validados
| MCP | Propósito | Dueño |
|---|---|---|
| GitHub MCP Server | PRs, runs de Actions, logs de cambios de schema | GitHub |
| Azure MCP Server | Consultar Azure SQL, Cosmos DB, Azure Monitor, Application Insights, Entra ID | Microsoft |
| Microsoft Learn Docs MCP | Referenciar guía actual de Azure SQL y Cosmos DB | Microsoft |
| Azure DevOps MCP Server | Trackear work items del DBA cuando el equipo usa Azure DevOps | Microsoft |
| Playwright MCP | Validar flujos de UX guiados por datos tras una migración | Microsoft |
Ejemplos reales
Ejemplo 1: migración segura detrás de un feature flag
Un PR agrega una columna preferred_currency a accounts. /migrate-plan genera un plan en dos pasos: agregar columna nullable, hacer backfill por lotes, y luego activar el feature flag. /rollback-script produce y valida el reverso. La migración corre en horas valle; el código de la aplicación lee el nuevo campo solo cuando el flag está activo.
Ejemplo 2: recomendación de índice desde telemetría
De madrugada, /index-review surgea un índice no clusterizado faltante en orders(customer_id, created_at) que está empujando el 62 por ciento de la CPU en la carga de reportes analíticos. El DBA abre un PR; la migración es reversible; el índice cae; a la mañana siguiente, Query Store confirma que el p95 bajó de 3,4 s a 240 ms.
Ejemplo 3: hot partition de Cosmos DB atrapada temprano
Una nueva feature escribe telemetría con clave por country. /migrate-plan marca la elección como propensa a crear hot partitions (el tráfico de US domina). El Schema Guard sugiere una clave sintética que combina country y un hash de user_id. El cambio cae antes del rollout a producción.
Anti-patrones
- Migraciones forward-only. Nunca mergees una migración sin un script de rollback validado.
- ORM como fuente de verdad. El schema de la base es la fuente de verdad; los ORMs lo reflejan.
- Índice por sensación. Usa telemetría de Query Store y Application Insights; no intuición.
- Permisos ad-hoc. Todo acceso a la base vía grupos de Entra ID con dueños nombrados.
- Drills de restauración salteados. Si no restauraste desde backup este trimestre, no tienes backups.
- DDL destructivo sin gate.
DROP COLUMNen un PR sin revisar es un incidente esperando ocurrir. - Cambios de schema escondidos en PRs de la app. Las migraciones viven en
migrations/*y se revisan con el dueño del schema.
KPIs y métricas de impacto
| Métrica | Baseline (manual) | Objetivo (agéntico) | Fuente |
|---|---|---|---|
| Migraciones con rollback validado | 30 por ciento | 100 por ciento | Check de PR |
| Regresiones de p95 en producción | 10 por trimestre | < 1 | Application Insights |
| Hot partitions observadas a escala | 3 por trimestre | 0 | Métricas de Cosmos DB |
| Finalización de drills de restauración | Anual | Trimestral | Reportes de Azure Backup |
| Identidades de acceso obsoletas | 20 | 0 | Revisiones de acceso de Entra ID |
| Recomendaciones de índice atendidas en 30 días | 20 por ciento | > 80 por ciento | Historial de /index-review |
| Log de cambios de schema publicado | Ad hoc | Diario | Microsoft Teams |
Madurez en cuatro niveles
- L1 Manual: scripts SQL por correo, migraciones forward-only, índices por adivinanza.
- L2 Asistido: Copilot redacta SQL, migraciones rastreadas en una herramienta, pero el rollback sigue siendo ad hoc.
- L3 Aumentado: agente Schema Guard, cuatro slash prompts, instrucciones con alcance, migraciones con feature flag.
- L4 Autónomo: revisión nocturna de índices, rollbacks autovalidados, drills de restauración agendados y evidenciados, log diario de cambios de schema.
Integración con otras personas
- Con el Data Engineer: gobernanza de schema compartido para datasets cross-store; revisión de migración.
- Del Developer: cambios de entidades y ORM coordinados vía PRs.
- Del Software Architect: elecciones de tecnología de almacenamiento y modelos de capacidad.
- Con el SRE: runbooks para incidentes de base de datos y procedimientos de restauración.
- Con el InfoSec Officer: revisiones de acceso, audit logging, rotación de claves de cifrado.
- Al Compliance Auditor: evidencia de control de cambio, revisiones de acceso, postura de backup.
- Con el Product Owner: ventanas de migración planeadas contra el calendario de releases.
Glosario
- Migración: un cambio versionado y reversible al schema o a los objetos de la base de datos.
- Script de rollback: un script validado que devuelve el schema a un estado previo.
- Query Store: feature de Azure SQL que captura planes de query y estadísticas de runtime.
- Partition key: la propiedad de Cosmos DB que determina la distribución de los datos.
- SARGable: un predicado de query que puede usar un índice de forma eficiente.
- Backfill: el proceso de poblar una columna nueva o cambiada para las filas existentes.
- Drill de restauración: un ensayo de restauración desde backup para validar los objetivos de tiempo de recuperación.
Referencias
- Documentación de Azure SQL Database — almacén relacional operacional
- Documentación de Azure Cosmos DB — almacén NoSQL distribuido globalmente
- Azure Monitor para bases de datos — métricas, alertas, diagnóstico
- Application Insights — telemetría de dependencias para tuning
- Autenticación de Microsoft Entra ID para Azure SQL — acceso de menor privilegio
- Azure Key Vault para secretos de base de datos — rotación y almacenamiento
- GitHub Actions para despliegues de SQL — CI/CD para migraciones
- GitHub Actions — orquestación de CI y despliegue a través del stack
- Microsoft Learn Docs MCP — recuperación de documentación first-party en tiempo de implementación
- GitHub Advanced Security — CodeQL, Dependabot, Secret Scanning, Push Protection