mejores prácticas en el desarrollo para sql server fernando g. guerrero solid quality learning...

14
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]

Upload: blanca-pilar

Post on 03-Jan-2015

12 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana CEOfguerrero@solidq.com Mario Roa Danysoft

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

Page 2: Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana CEOfguerrero@solidq.com Mario Roa Danysoft

• ¿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?

Page 3: Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana CEOfguerrero@solidq.com Mario Roa Danysoft

• 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

Page 4: Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana CEOfguerrero@solidq.com Mario Roa Danysoft

• 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)

Page 5: Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana CEOfguerrero@solidq.com Mario Roa Danysoft

• 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

Page 6: Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana CEOfguerrero@solidq.com Mario Roa Danysoft

• 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!

Page 7: Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana CEOfguerrero@solidq.com Mario Roa Danysoft

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

Page 8: Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana CEOfguerrero@solidq.com Mario Roa Danysoft

Team System DBProTeam System DBPro

Page 9: Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana CEOfguerrero@solidq.com Mario Roa Danysoft

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?

Page 10: Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana CEOfguerrero@solidq.com Mario Roa Danysoft

Pruebas en la base de datos

• Pruebas unitariasPruebas unitarias– Tipos

• Script Anterior• Prueba• Script posterior

– Pre-condiciones– Post-condiciones

Page 11: Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana CEOfguerrero@solidq.com Mario Roa Danysoft

Generación e implementación

• Consolidación de varios scripts• Mediante MSBuild

– Por tanto compatible con Team Build si se usa Team foundation

Page 12: Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana CEOfguerrero@solidq.com Mario Roa Danysoft

Más buenas prácticas

• Vistas y vistas indexadas• Procedimientos almacenados ¿para qué?• Triggers DDL y DML• ¿Service broker en mis aplicaciones?

Page 13: Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana CEOfguerrero@solidq.com Mario Roa Danysoft

Optimizar paraOptimizar parael rendimientoel rendimiento

Page 14: Mejores prácticas en el desarrollo para SQL Server Fernando G. Guerrero Solid Quality Learning Iberoamericana CEOfguerrero@solidq.com Mario Roa Danysoft