Cinco recomendaciones para optimizar la base de datos de nuestra página web
Hoy en día, resulta difícil encontrar una página web estática. Es decir, sin actualizaciones, desarrollada en el tradicional HTML y con poca interactividad y flexibilidad para desplegar sus contenidos. Ya trabajemos con un gestor de contenido como como WordPress, con un desarrollo propio o con un aplicativo de negocio, seguro que detrás tenemos una base de datos.
Las bases de datos nos proporcionan un almacén de información con una estructura jerarquizada y relacionada de los datos. Esto permite extraer el contenido y disponerlo fácilmente, tal y como el desarrollador requiere en su proyecto web o el internauta necesita. De cara al desarrollo web, hay diversas opciones. MySQL es la base de datos más extendida, pero tampoco podemos olvidar otras alternativas, como Microsoft SQL Server, PostgreSQL o MongoDB.
Independientemente de nuestra elección, hay una serie de recomendaciones comunes relativas a la gestión y optimización de las bases de datos que repasamos en este artículo. Seguir estos consejos nos facilitará el trabajo y harán que nuestro proyecto vaya más fluido, mejorando la experiencia de nuestros usuarios. Aunque suene a perogrullada, un buen planteamiento y diseño inicial de la base de datos soluciona muchos de los problemas de rendimiento que experimenta un proyecto web a lo largo de su ciclo de vida. Básicamente, una base de datos es un conjunto de tablas, con filas y columnas en cuyas celdas se almacena la información (el nombre de un producto, un teléfono, un post, etc.) y esto es algo que debemos tener en cuenta.
Antes de diseñarla, es necesario determinar la finalidad de la base de datos, organizar y categorizar la información según las claves, definir las relaciones entre tablas y elementos y normalizarla de cara a facilitar la integración de la base de datos con nuestros sistemas. Estos pasos iniciales eliminarán duplicidades y nos ayudaran a configurar una metodología de trabajo eficiente en la gestión de la información de cara al futuro.
Una vez diseñada la base de datos, sólo nos queda optimizarla. Para ello, te pueden resultar útiles las siguientes recomendaciones.
- Por muy bien que realices el planteamiento inicial de la base de datos, con el paso del tiempo, seguramente tengas tablas en desuso. ¡Elíminalas! Tener tablas en desuso es muy parecido a guardar cosas que no usas en un cajón. Cuando vas a buscar algo porque lo necesitas urgentemente y vas al «cajón de las cosas olvidadas»… ¡Tardas mucho más en encontrarlo! Sucede lo mismo en las bases de datos, los sistemas tienes que rastrear todas las tablas y elementos hasta encontrar la respuesta a la consulta.
- Optimiza los índices. Tener una buena relación de índices entre tablas es básico para las búsquedas relacionales funcionen correctamente. Agrega índices a las tablas y, sobre ellas, utiliza las sentencias de consulta (SELECT, WHERE…). También resulta recomendable acostumbrarse a verificar periódicamente el registro de consultas (o «queries») lentas para identificar aquellas que deben ser optimizadas.
- No mantengas consultas abiertas en tu código y realiza las querys justas. Así, evitamos saturar la memoria de la máquina. Como sucede en cualquier sistema informático, un proceso abierto afecta al rendimiento del hardware. Eliminando esas consultas inútiles, liberarás recursos para que se empleen en las consultas útiles que necesitamos.
- En general, no almacenes imágenes en la base de datos. Sólo referencias a la ruta en la que se encuentran y metadatos para identificarlas. No nos engañemos, las bases de datos crecen y crecen y las imágenes siguen aumentando en tamaño a su propio ritmo. Si mantienes sólo las referencias al almacén de imágenes, la base de datos estará en forma para devolverte los procesos mas rápidamente.
- No uses nombres complejos en las claves y campos de las tablas. ¡Simplifica! Por ejemplo, en la tabla Clientes, es mejor utilizar nombre en vez de nombre_cliente para almacenar el nombre del cliente. Cuanto más sencillos sean los nombres, más rápido se ejecuta la consulta.
También resulta recomendable no dejarse llevar y hacer un buen planteamiento de la infraestructura hardware y software que necesitamos para adaptarnos a los objetivos y especificaciones de nuestro proyecto. Elegir un sistema concebido inicialmente para un uso concreto puede ser mejor que ir a las alternativas estándar. Por ejemplo, para usos concurrentes Nginx puede darnos un mejor resultado que Apache. Salirse de lo acostumbrado para tener un mejor rendimiento no cuesta tanto, y en este sentido, la flexibilidad y rapidez de despliegue de los Servidores Cloud puede facilitarnos mucho la elección.