Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Fernando G. Guerrero Solid Quality Learning Iberoamericana Solid Quality Learning Iberoamericana CEO CEO [email protected][email protected]Mario Roa Mario Roa Danysoft Danysoft Ingeniero de Sistemas Ingeniero de Sistemas [email protected][email protected]Miguel Egea Miguel Egea Solid Quality Learning Iberoamericana Solid Quality Learning Iberoamericana MVP SQL Server MVP SQL Server [email protected][email protected]
14
Embed
Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana [email protected] Mario Roa Danysoft.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Mejores prácticas en el desarrollo para SQL Server
• ¿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?