Una base de datos es un conjunto de información relacionada, estructurada y almacenada de manera sistemática. El objetivo es poder acceder a esa información de manera fácil, tanto para consultarla como para añadir nuevos datos. Los programas que se encargan de gestionar bases de datos se denominan sistemas gestores de bases de datos (SGBD) y son una pieza importante en el entramado de la web.
Hace unos años (en marzo del 2004), escribimos un artículo para la revista Mosaic titulado Páginas web estáticas vs. páginas web dinámicas. Las bases de datos en Internet, donde dábamos una breve explicación de lo que es una página web dinámica y las diferencias con las páginas web estáticas. Recomendamos una lectura de dicho artículo antes de seguir con este porque lo vamos a usar como referencia.
Si en el 2004 las bases de datos ya eran importantes, actualmente casi todas las webs tienen detrás un gestor de contenidos que, a su vez, utiliza un SGBD para almacenar la información de la web. Sea como sea, si se quiere crear una web que sea fácilmente actualizable, la opción más sencilla será personalizar un gestor de contenidos y la más complicada será crearlo; en ambos casos, será importante tener conocimientos de cómo funcionan las bases de datos y cómo acceder a la información en el lenguaje del SGBD que uséis.
Aunque la situación de los diferentes SGBD usados en la web ha cambiado algo desde el 2004, los cambios no son, ahora mismo, demasiado importantes. Así, SQL sigue siendo el lenguaje de consulta de SGBD más habitual y en la web, MySQL, PostgreSQL y SQLite son las soluciones libres más usadas; por su parte, Microsoft SQL Server y Oracle Database son las soluciones privativas más comunes.
A partir de aquí, vamos a centrarnos en uno de esos gestores de bases de datos (MySQL) para explicar de qué manera acceden a los datos las aplicaciones web. La elección de MySQL no es casual. Según un estudio de Gartner elaborado en el año 2008, MySQL era en ese momento el tercer SGBD más usado en el mundo, el primero de código libre. Desde entonces y a pesar de que la compra de MySQL por parte de Oracle hizo que algunos desarrolladores pensasen en pasarse a PostgreSQL, su presencia en la web no ha dejado de crecer.
Por otra parte, muchas aplicaciones web usan una combinación de MySQL como base de datos, PHP como lenguaje de programación, Apache como servidor web y Linux como sistema operativo. Esta combinación de tecnologías recibe el nombre de LAMP (Linux, Apache, MySQL y, habitualmente, PHP) y es una de las más usadas en los servidores web.
En una aplicación web, como un gestor de contenidos o una tienda en línea o cualquier otra web que haga uso de bases de datos, podemos encontrar hasta cuatro tipos de desarrollo:
- Desarrollo de HTML + CSS
- Desarrollo JavaScript
- Desarrollo en PHP
- Consultas SQL
De las cuatro, las dos primeras se ejecutan en el navegador y las dos segundas, en el servidor, aproximadamente de la siguiente manera:
- En el servidor, un archivo .php contiene el programa PHP con las instrucciones SQL para acceder a los datos, con el código HTML y CSS necesario para poderlos visualizar correctamente y con el JavaScript necesario para interactuar con el usuario.
- El servidor ejecuta las instrucciones PHP y las consultas SQL, obtiene los datos y envía al cliente un archivo con el HTML, el CSS, el JavaScript y los datos obtenidos.
- El navegador presenta los datos al usuario y ejecuta las instrucciones JavaScript.
- El navegador envía al servidor los datos que proporciona el usuario.
- El servidor recibe esa información y la guarda en la base de datos.
En la práctica, PHP, SQL y HTML suelen ir en un archivo, mientras que el CSS y el JavaScript van en archivos aparte, con lo que el navegador recibe un archivo HTML con los datos, un archivo CSS con el diseño y un archivo JavaScript con el programa que se va a ejecutar.
En general, las diferentes tecnologías que podemos encontrar en una aplicación web requieren de varias personas con diferentes competencias. Volviendo a la base de datos, su diseño no es una tarea trivial. Dependiendo de lo bien o mal hecha que esté, el número de transacciones (consultas o modificaciones) que deberán hacerse puede variar de modo considerable. En aplicaciones sencillas o para sitios con poco movimiento, la importancia puede ser relativa, pero en aplicaciones complejas y, en especial, en sitios con muchas visitas, reducir el número de consultas a la base de datos puede reducir considerablemente el coste en hardware del sitio. Y es que, en sitios web con muchas visitas, la importancia de la base de datos es tal que suele situarse en un servidor aparte del servidor de la aplicación.