mejores prácticas en el desarrollo para sql server fernando g. guerrero solid quality learning...
TRANSCRIPT
Mejores prácticas en el desarrollo para SQL Server
Fernando G. GuerreroFernando G. Guerrero
Solid Quality Learning IberoamericanaSolid Quality Learning IberoamericanaCEOCEO
[email protected]@solidq.com
Mario RoaMario Roa
DanysoftDanysoftIngeniero de SistemasIngeniero de [email protected]@danysoft.com
Miguel EgeaMiguel Egea
Solid Quality Learning IberoamericanaSolid Quality Learning IberoamericanaMVP SQL ServerMVP SQL Server
[email protected]@solidq.com
• ¿y si no las sigo qué?¿y si no las sigo qué?– Te juro que en la oficina funcionabaTe juro que en la oficina funcionaba– ¡Claro! Es que el usuario tiene que ser sa¡Claro! Es que el usuario tiene que ser sa– Bueno, es que en España la fecha se pone Bueno, es que en España la fecha se pone
dd/mm/yyyydd/mm/yyyy– ¿Añadir una columna a la tabla clientes? ¿te has ¿Añadir una columna a la tabla clientes? ¿te has
vuelto loco?vuelto loco?• ¿Entonces esto del ciclo de vida va a ser ¿Entonces esto del ciclo de vida va a ser
verdad?verdad?
• Gestión del código fuente de BBDDGestión del código fuente de BBDD• Gestión del esquemaGestión del esquema• Comparaciones de objetosComparaciones de objetos• Pruebas en base de datosPruebas en base de datos• Generación e implementaciónGeneración e implementación• Más buenas prácticasMás buenas prácticas
• Antes de DBPro EditionAntes de DBPro Edition– Ningún control, producción siempre tiene lo Ningún control, producción siempre tiene lo
últimoúltimo– Copias del esquema en el control de versionesCopias del esquema en el control de versiones– Tratamiento especializado (DBA)Tratamiento especializado (DBA)
• Después de DBPro EditionDespués de DBPro Edition– Datos en producciónDatos en producción– Esquema en DBProEsquema en DBPro
• Control de cambios más sencillosControl de cambios más sencillos– Checkin vs ShelveCheckin vs Shelve– El papel del DBAEl papel del DBA
• Importación del esquemaImportación del esquema– Ingeniería inversa (1 vez)Ingeniería inversa (1 vez)– Esquemas en .SQL (n veces)Esquemas en .SQL (n veces)
• Organización del esquemaOrganización del esquema• Por tipo de objetoPor tipo de objeto• Por esquemaPor esquema
• Tareas pre y post deploymentTareas pre y post deployment• RefactoringRefactoring• ¡Más de un fichero por objeto!¡Más de un fichero por objeto!
Comparaciones de objetos
• Comparación de esquemas– Con o sin un proyecto DB Pro abierto– Diferencias en BBDD
• Generación de script de diferencias– Aplicado inmediatamente– Generación de script de diferencias
• Actualización, creación y borrado de objetos
Team System DBProTeam System DBPro
Pruebas en base de datos
• Pruebas de cargaPruebas de carga– ¿con que datos?
• Datos de producción– ¿Qué pasa con los datos sensibles
• Datos inventados– ¿Es suficiente con meter muchos millones de registros?
– ¿Qué pasa con la integridad referencial?
Pruebas en la base de datos
• Pruebas unitariasPruebas unitarias– Tipos
• Script Anterior• Prueba• Script posterior
– Pre-condiciones– Post-condiciones
Generación e implementación
• Consolidación de varios scripts• Mediante MSBuild
– Por tanto compatible con Team Build si se usa Team foundation
Más buenas prácticas
• Vistas y vistas indexadas• Procedimientos almacenados ¿para qué?• Triggers DDL y DML• ¿Service broker en mis aplicaciones?
Optimizar paraOptimizar parael rendimientoel rendimiento