Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Buenas prácticas para desarrolladores de Bases de Datos

396 views

Published on

http://pa.summit.solidq.com
Presentación durante el SolidQ Summit Panama City 2016

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Buenas prácticas para desarrolladores de Bases de Datos

  1. 1. #SQSummit Buenas prácticas para desarrolladores de bases de datos (300) Eladio Rincón erincon@solidq.com
  2. 2. Sponsors del SolidQ Summit Panamá
  3. 3. Experiencias del Año: Desarrollo BD ROLES DE UN DESARROLLADOR DE BASES DE DATOS – SEGÚN MICROSOFT LEARNING
  4. 4. Experiencias del Año: Desarrollo DB • En Resumen: • Escribir consultas TSQL, y programar objetos de bases de datos • Capacidad de afinamiento y optimización • Diseño lógico, conceptual y físico de bases de datos • Conocer y obtener requerimientos de negocio • Diseñar y optimizar Capa de Acceso a Datos ROLES DE UN DESARROLLADOR DE BASES DE DATOS (BY MSL)  O lo que es lo mismo:  Capacidad de diagnóstico: Profiler y un poco de PerfMon  Buena codificación TSQL  Objetos de BD: PAs, UDFs, Vistas, Triggers  Diseño relacional: Tablas, PKs, FKs, UQs  Diseño físico: Índices, Filegroups, Particionamiento
  5. 5. Experiencias del Año: Desarrollo DB • Cursores de cliente vs Cursores de servidor • Cuidado donde lo abres y tipo de cursor • Consultas ad-hoc vs consultas parametrizadas vs procedimientos almacenados • Trata bien tu CPU • Calidad del código TSQL • UDFs, Vistas , Date Correlation Optimization AGENDA
  6. 6. Experiencias del Año: Desarrollo DB • Habitual en aplicaciones VB tradicional donde debías especificar tipo de cursor y donde se abre CURSORES DE CLIENTE VS CURSORES DE SERVIDOR
  7. 7. Investigando los tipos de cursores
  8. 8. Experiencias del Año: Desarrollo DB •Conclusión • Viajes de Ida y Vuelta • Keyset, estáticos, dinámicos • Usan tempdb • Keyset, estáticos • Rápidos: fast_forward (server y client) • .NET no lo sufre sin triquiñuelas ; Cuidado con APIs en las que puedes especificar tipo de cursor y ubicación CURSORES DE CLIENTE VS CURSORES DE SERVIDOR
  9. 9. Experiencias del Año: Desarrollo DB • Seguridad • Gestión basada a nivel de SP (no por objeto base) • Encapsulación: Punto único de entrada • poco acoplamiento, alta cohesión • Rendimiento  Cuestión de CPU y tiempo!!! • Vs. consultas ad-hoc • Parsing, validaciones, seguridad, exec plan, … • Vs. consultas preparadas • Gestión de red • Los SPs son más cuidadosos con la memoria • Monitoriza la gestión del buffer pool • Mantenimiento: unidad centralizada para: • Mejorar proceso, optimización, gestión de bugs, … CONSULTAS AD-HOC, PARAMETRIZADAS, SPS ¿POR QUÉ PROCEDIMIENTOS ALMACENADOS SI?
  10. 10. Investigando ad-hoc, params, sprocs
  11. 11. Experiencias del Año: Desarrollo DB •Conclusión • Muévete a consultas parametrizadas o procedimientos almacenados • Si no, puedes considera: • Parametrización forzada: • SQL Server trata autoparametrizar “todo” • En algunos escenarios: • sp_configure ‘optimize for adhoc workloads’ CONSULTAS AD-HOC, PARAMETRIZADAS, SPS ¿POR QUÉ PROCEDIMIENTOS ALMACENADOS SI?
  12. 12. Experiencias del Año: Desarrollo DB • Vistas • ¿Para qué usarlas? • Simplificación • Acceso más “fácil” (leer, modificar, borrar) • Gestión de permisos • Alternativa a estructuras físicas existentes • Vistas indexadas • Vistas particionadas • ¿Qué debes evitar? • Generalización de vistas • “Cruzar” objetos no necesarios VISTAS, UDFS, DATE CORRELATION OPTIMIZATION
  13. 13. Experiencias del Año: Desarrollo DB • UDFs; usado para: • Simplificación y generalización de código existente • Tipo1: Escalares • “Resolución de constantes” • Convertir un caso de uso en procedural • Tipo2 y Tipo3: de Resultado de Tablas • Simular “vistas parametrizadas” • JOINs con Tablas o UDFs (sentencia APPLY) • ¿Qué debes evitar? • Puede llegar a funcionar como un cursor VISTAS, UDFS, DATE CORRELATION OPTIMIZATION
  14. 14. Experiencias del Año: Desarrollo DB • Date Correlation Optimization • Ayudar a consultas relaciones 1:N “utilizar” dependencias. • Ejemplo: • Pedidos (FechaPedido) • LineaDePedido (FechaDeEntrega) • Normalmente, existe relación entre la fecha del pedido y la de entrega • Consultas que busquen por una fecha: • SQL Server tratará de buscar la correlación • Requerimientos: • 1:N con FK mono_columna definida • Las dos tablas tienen columna date o datetime NOT NULL • Una columna datetime como CLUSTERED • Se implementa mediante vistas indexadas • Desde la columna CLUSTERED a las tablas relacionadas VISTAS, UDFS, DATE CORRELATION OPTIMIZATION
  15. 15. Vistas, UDFs, Date Correlation Optimization…
  16. 16. Experiencias del Año: Desarrollo DB • Cursores de cliente vs Cursores de servidor • Cuidado donde lo abres y tipo de cursor • Consultas ad-hoc vs consultas parametrizadas vs procedimientos almacenados • Trata bien tu CPU • Calidad del código TSQL • UDFs, Vistas, Date Correlation Optimization • Material del apoyo: evento TechDays 2009: • Google: Buscar post en ElRincónDelDBA “TechDays 2009: Mejorando el acceso a SQL Server para Desarrolladores” • http://blogs.solidq.com/ES/ElRinconDelDBA/Lists/Posts/Post.aspx?List=831e20de%2D9c63%2D418a%2D84dd%2D618b21380b9a&ID=119&Source=http%3A%2F%2Fblogs%2Esolidq%2Ecom%2 FES%2FElRinconDelDBA%2FLists%2FPosts%2FArchive%2Easpx%3FSortField%3DAuthor%26SortDir%3DAsc%26View%3D%257bDF570F41%252d2403%252d444F%252dA152%252dF81D443C2C15%25 7d RESUMEN
  17. 17. También puedes preguntar tus dudas con el hashtag #SQSummit en Twitter ADAPTIVE BI FRAMEWORK Te ayudaremos a mejorar la velocidad de desarrollo de tu plataforma de analítica de negocio basada en nuestra experiencia: •Diseña antes de construir •Automatización de procesos por ETL •Servicios de mentoring para ayudarte a conseguir mejores prácticas para la construcción de procesos específicos y plataformas de analítica de negocio •Muy fácil de mantener SOLIDQ FLEX SERVICES Con SolidQ Flex Services evitarás sustos, consiguiendo que tus sistemas sean estables. Desde una solución sencilla de monitorización, hasta un servicio de atención de incidencias 24/7, mantenimiento proactivo, resolución de problemas y línea de soporte. Todo con un coste fijo mensual… y tú dedica el tiempo a las cosas importantes. ¡Gracias!

×