Evita los problemas de rendimiento modelando correctamente tu BBDD
Bases de datos, Programación, Servidores Añadir comentarioLa creación y gestión de modelos de datos es una parte fundamental de un arquitecto/administrador de bbdd, el cual dispone de los conocimientos necesarios para desempeñar ésta tarea. Sin embargo, a pequeña escala ésta función suele estar desempeñada por los propios programadores, que en muchos casos tienden a restar importancia al modelado de datos y su tarea se reduce a crear algo que “funcione”.
Son muchos los casos en los que nos encontramos con aplicaciones y sistemas que se encuentran en producción con graves problemas de rendimiento debido a una mala planificación o mal diseño de su base de datos.
Cuando ésto sucede y nuestro/s servidor/es de bbdd se satura/n, generalmente el cliente pedirá explicaciones al especialista a cargo y éste probablemente le dará una de las siguientes respuestas en función del tipo que sea:
- La del administrador de servidores: “Necesita un servidor nuevo con el doble de RAM y mejor procesador”, “Mysql no sirve para bases de datos grandes, deberia migrar todo a Oracle”, “Su aplicación está mal programada, hace demasiadas conexiones a la base de datos”.
- La del programador: “Deberíamos modificar la aplicación para cachear todas las consultas posibles a la bbdd y reducir la carga de la base de datos” o “se necesita un servidor mejor, no tenemos infraestructura suficiente para que tantas personas accedan al sistema/web/aplicación de forma simultánea.”
- La del administrador de bases de datos: “Deberíamos realizar un estudio para analizar qué consultas estan produciendo el cuello de botella y ver si podemos optimizarlas”, “Podriamos instalar un servidor esclavo para las consultas más pesadas”.
Obviamente no hay una solución universal para éste problema, ya que dependerá de cada caso, de hecho, probablemente podrían conseguirse algunos resultados combinando todas las respuestas, pero de forma individual probablemente todas éstas acciones no serán efectivas y sólo conseguirán que el cliente malgaste su preciado dinero y nuestro preciado tiempo, además de que nuestra reputación acabará por los suelos.
Un servidor de bases de datos saturado suele ser el producto de una mala planificación previa o incorrectas previsiones de crecimiento y de un mal diseño de su modelo de datos.
La reestructuración y rediseño de un modelo de datos de un servicio ya en producción es inviable en la mayor parte de los casos, al requerir ésta de grandes cambios en la aplicación, por lo que éste paso debe ser siempre uno de los primeros a realizar a la hora de desarrollar una aplicación, mucho antes de haber escrito una sola línea de código fuente. Si bien la base de datos no es una de las partes más visibles del sistema, es la más importante de todas, debido a que es el almacen primario para nuestra información persistente.
En resúmen: Evítate problemas y dedica algo de tu tiempo a aprender a modelar correctamente tus bases de datos
![]()
Próximamente intentare entrar más a fondo en éste tema, mientras tanto, aquí os dejo unas lecturas recomendas:
- ¿Qué es el modelado de datos? (En inglés): http://en.wikipedia.org/wiki/Data_modeling
- El modelo entidad-relación (En inglés): http://en.wikipedia.org/wiki/Entity-relationship_model
- Modelado de datos 101 (En inglés, intentaré traducirla en un post más adelante): http://www.agiledata.org/essays/dataModeling101.html
22 de Enero de 2010 at 04:36
algún enlace en español para iniciarse en la normalización y gestión de bbdd?
Un saludo
22 de Enero de 2010 at 14:56
Pues aunque parezca increíble, la wikipedia tiene información al respecto en Español.
http://es.wikipedia.org/wiki/Modelo_entidad-relaci%C3%B3n
http://es.wikipedia.org/wiki/Normalizaci%C3%B3n_de_bases_de_datos
Ojo, que no siempre es la mejor práctica normalizar todo hasta su máxima expresión, cuanto más atomizada esté la información y más tablas tengas, más joins necesitarás en tus consultas.