Artículo para la revista Linux Actual número 13: Interfaces WWW a Bases de Datos.

Javier Fernández-Sanguino Peña jfs@computer.org

18 Marzo 2000


Con este artículo va a dar comienzo a una serie que va a estudiar las herramientas, diseño y programación para unir dos importantes tecnologías entre sí: Internet y las Bases de Datos.

1. Introducción a la serie

Este artículo es el primero de una serie que pretende enseñar al lector como, con herramientas sobre GNU/Linux se pueden unir dos tecnologías tan importantes hoy en día como son las Bases de Datos y el fenómeno de Internet, en particular la World Wide Web.

En primer lugar se va a realizar una introducción breve a estas tecnologías y a explicar la razón de usar como herramienta de desarrollo e integración a GNU/Linux. Posteriormente se analizarán las herramientas que pueden servir para gestionar la base de datos, y se aplicarán todos los conceptos en el diseño de una aplicación real. Se verán los métodos de programación y las alternativas existentes actualmente para integrar ambos sistemas, deteniéndonos en una de ellas para solucionar la implementación de la aplicación.

2. Introducción breve a las Bases de Datos

La tecnología de bases de datos es una de las más antiguas dentro de la ciencia de la informática, esencialmente es una tecnología que se basa en la capacidad para almacenar y recuperar información relacionada entre sí. Una base de datos puede ser desde un fichero de texto (estilo /etc/passwd) hasta un conjunto de tablas repartidas en ficheros binarios y que acumulen millones de registros. En cualquier caso es necesario un programa capaz de gestionar estos datos y permitir acceder a esta información de la manera más rápida posible.

Existe más de un esquema a la hora del desarrollo y definición de las bases de datos: bases de datos orientadas a objetos, bases de datos relacionales, bases de datos jerárquicas, etc... Hoy en día, a pesar del crecimiento de la programación orientada a objetos y, por tanto, de las bases de datos diseñadas con la misma filosofía (que actualmente permiten el desarrollo de las bases de datos multimedia), el tipo de bases de datos más utilizada sigue siendo las bases de datos relacionales.

Es necesario distinguir en una base de datos su diseño de su implementación, como veremos más adelante, para el mismo diseño se pueden escoger implementaciones distintas que se ajusten más o menos a éste. Evidentemente, si se escoge una implementación inadecuada se perderán algunas de las ventajas del modelo realizado en la etapa de diseño.

Las bases de datos constituyen una importante herramienta a la hora de almacenar y recuperar la información. Sin embargo, para utilizar esta herramienta es necesario ofrecer un interfaz al usuario para abstraer toda su complejidad. Sin este interfaz la base de datos puede seguir utilizándose pero el usuario ha de conocer el "lenguaje" de la misma para hacer uso de ésta (actualmente el más utilizado es SQL, Standard Query Language).

3. El interfaz World Wide Web a una base de datos.

Así pues, el interfaz es un elemento fundamental a la hora de hacer uso de una base de datos, aquí es donde entra la World Wide Web (WWW).

La World Wide Web se puede considerar como el elemento de Internet que integra el cliente universal, y por tanto, puede usarse como el interfaz universal a todo tipo de aplicaciones.

Muchos fabricantes de equipos y desarrolladores han empezado a mover sus aplicaciones e interfaces para que puedan ser operados con clientes basados en ésta. Así, por ejemplo, nos encontramos con fabricantes de elementos de interconexión de redes (switches, conmutadores, o routers) o impresoras de red que incluyen en su hardware un servidor de WWW para que sus herramientas puedan ser manejadas, configuradas, en fin, gestionadas, desde un navegador de WWW.

La ventaja para el fabricante es clara ya que le evita tener que crear una herramienta para el cliente, ahorrando en el desarrollo; no olvidemos que para un fabricante de hardware un cliente puede ser, potencialmente, cualquier combinación posible de uso de hardware, sistema operativo y software. Así pues en lugar de tener que realizar un interfaz para, por ejemplo, Solaris, otro para Linux y otro para Windows NT, el fabricante indica al usuario que sólo necesita un navegador de WWW como interfaz a la gestión de su equipo. No será necesario que programe un interfaz para cada plataforma en la que quiera que su hardware sea gestionado sino que, al incorporar tecnologías estándar de la WWW tanto de presentación (HTML) como de interacción cliente servidor (protocolo HTTP) su herramienta puede ser utilizada desde cualquier lugar y con cualquier plataforma que tenga un cliente de WWW.

El movimiento del acceso de bases de datos de sistemas propietarios a un sistema abierto como es la WWW, empezó ya hace años, y su arquetipo un sistema por y para la WWW, es el conocido yahoo, en realidad cualquier buscador en la WWW. Este buscador no es más que una base de datos de documentos al que se accede mediante un interfaz WWW. La ventaja, al margen de la que ofrezca la aplicación en si, es que, por un lado, cualquiera puede "preguntar" a la base de datos sin conocer el funcionamiento de lo que hay detrás, por otro los "clientes" potenciales son todos aquellos con acceso a la WWW porque los estándares usados son los mismos que para acceder a cualquier otro servidor.

4. GNU/Linux como sistema de desarrollo

GNU/Linux es un sistema ideal para instalar una base de datos que se va a utilizar desde Internet, no sólo por su demostrada velocidad en el acceso a bases de datos, sino también por la multitud de sistemas de bases de datos y herramientas que se pueden encontrar para GNU/Linux.

En GNU/Linux se dispone actualmente de un buen número de sistemas de bases de datos, por un lado sistemas libres como PostgreSQL o BeagleSQL, por otro sistemas "semi-libres" como mSQL o mySQL, y, finalmente, sistemas propietarios: Oracle, Informix o Sybase.

También dispone de una multitud de servidores de WWW, de entre los que merece una mención especial Apache, el servidor de WWW más utilizado en Internet. Finalmente, al tratarse de un sistema abierto y poderse optimizar "a medida" para el desarrollo a realizar se convierte en la alternativa ideal.

No hay que olvidar tampoco el factor coste. En la actualidad se puede montar un sistema profesional utilizando herramientas totalmente libres, el coste será sólo el del hardware y el de las personas dedicadas a montarlo. El coste en licencias será nulo y puede creer el lector que el coste de un sistema de base de datos y un sistema operativo propietarios que dé las mismas prestaciones (sino menos) es ciertamente elevado (estamos hablando de millones de pesetas). Si se monta el sistema con herramientas libres se podrán adaptar al 100% para lo que se precisa ya que el desarrollador tendrá a su disposición el código fuente de todas ellas para adaptarlas a medida.

5. Elección de los componentes

Para montar un sistema de interfaz de bases de datos vía WWW se han elegido como componentes básicos:

6. Instalación de los componentes

Gracias al sistema de paquetes usado por las distribuciones de GNU/Linux, hoy en día se pueden instalar los componentes comentados previamente sin mayor esfuerzo por parte del administrador. Simplemente seleccionando el componente e instalándolo, restando sólo hacer la configuración (que en la mayor parte de los casos vendrá una por defecto pero será necesaria adaptar a las necesidades específicas del usuario). En el caso de Debian GNU/Linux instalaremos los paquetes apache y postgresql.

Podríamos comentar cómo hacer la instalación a partir de cero desde el código fuente distribuido por los proyectos de desarrollo, pero no se va a comentar aquí como hacerlo ya que ha sido previamente comentado para ambos componentes en esta misma revista.

Dado que aún no hemos especificado la aplicación que vamos a realizar no entraremos aún en la configuración de estos componentes, sino que la dejaremos para más adelante. Nos bastará con ver que los componentes han sido correctamente instalados y funcionan.

7. Comprobación de la instalación: Apache

Para ver que efectivamente tenemos el servidor de web instalado y lanzado haremos lo siguiente:

En cualquier caso si vemos cualquier problema es recomendable acudir a la documentación. En el caso de Debian viene dentro del paquete apache-doc, y que, tras instalar, incluirá la documentación en /usr/doc/apache-doc. También es recomendable acudir a los registros del programa que se encuentran (en Debian) en /var/log/apache.

8. Comprobación de la instalación: PostgreSQL

Para probar la configuración de PostgreSQL vamos a utilizar uno de los interfaces de gestión que más adelante se comentarán, ya que se trata del más sencillo viene incluido con la distribución normal de PostgreSQL.

Conviene comentar que Debian GNU/Linux viene con un usuario de gestión de la base de datos que es que el debe usarse para realizar la gestión de la misma: creación de usuarios de la base de datos y bases de datos. Mientras no se haya creado ningún usuario de base de datos que sea un DBA (Database Administrator) será necesario usar siempre éste.

Por ello para probar la base de datos lo primero que haremos será "convertirnos" en este usuario haciendo, como superusuario, su - postgres. Este usuario tiene como directorio home el /var/postgres que es donde se van a encontrar todos los ficheros que utilice la base de datos. Tras esto haremos algunas pruebas:

De la misma forma que Apache, para cualquier problema debemos consultar la documentación, que en Debian se instala en el paquete postgres-doc, y los ficheros de registro que ahora estarán en /var/log/postgres.log.

9. Gestión como usuario postgres

Hay ciertas herramientas de gestión de la base de datos que son necesarias conocer para utilizarlas como usuario 'postgres'. Veremos más adelante su uso particular para la base de datos que se va a crear, pero no está de más recordarlas aquí. Al instalar la distribución de postgres, quedarán instalados en el directorio /usr/lib/postgresql/bin los programas que son necesarios para gestionar "desde cero" la base de datos. Estos programas estarán en el PATH del usuario postgres.

Antes de nada es necesario tener clara una cosa del sistema de base de datos. Un sistema de base de datos es una colección de bases de datos administradas por el mismo usuario, físicamente el sistema así como cada base de datos, es una serie de ficheros pertenecientes al usuario y que el servicio postmaster se encarga de gestionar, en el caso de Debian estos ficheros se instalan por defecto en /var/lib/postgres/data. La ventaja de esta filosofía es que para mover la base de datos o hacer una copia de seguridad de ésta basta con copiar los ficheros de la misma.

El administrador de la base de datos necesita conocer estas herramientas para usarlas, si surge la necesidad. En particular, aquellas funciones que no se pueden hacer a través del interfaz, ya que la creación y destrucción de bases de datos y usuarios se podrá hacer con las herramientas de gestión que ahora se analizarán.

10. Herramientas de gestión de la base de datos

Antes de hacer nada en el sistema de base de datos, ni crear usuarios ni otras bases de datos, deberemos conocer primero qué programas podremos usar para la gestión de la base de datos:

Estos programas nos van a ser útiles para poder acceder a la base de datos sin tener muchos conocimientos del funcionamiento de ésta, aunque nos va a ser imprescindible el conocimiento del lenguaje SQL, podemos utilizarlas en muchas situaciones. Existen otras herramientas como wisql y owd que el autor aún no ha probado, y serán comentadas en posteriores artículos.

11. Siguientes artículos

En los siguientes artículos de esta serie vamos a analizar el desarrollo de una aplicación específica y a ver las herramientas necesarias para ofrecer un interfaz de acceso a nuestra base de datos mediante la WWW.

Llevaremos a cabo el análisis de la aplicación así como su desarrollo y empezaremos a ver la ventaja de tener herramientas gráficas de gestión de la base de datos para detectar errores y depurar la aplicación.

12. Sumarios

13. Listados

LISTADO 1-

Para el lector interesado se recomienda buscar más información en diversos servidores de web. Estos son:

También para seguir esta serie puede ser conveniente algún conocimiento de bases de datos generales. Se recomienda el libro de Silberschatz, Korth y Sudarsan: "Database Systems Concepts, III ed, Mc Graw-Hill, 1996." ( http://www.bell-labs.com/topic/books/db-book/index.html) que también ha sido traducido al castellano, otro libro también recomendado es el de Ullman y Widom: "A First Course in Database Systems" de 1997 editado por Prentice-Hall ( http://www-db.stanford.edu/~ullman/fcdb.html).

Para el lector que quiera profundizar en SQL podrá encontrar muchos enlaces en la parte bibliográfica del HOWTO de PostgreSQL para Linux aunque también es recomendable el tutorial disponible en http://w3.one.net/~jhoffman/sqltut.htm.

Finalmente, se recomienda la lectura de los artículos relacionados con Bases de Datos publicados en Linux Actual ("Bases de Datos en Internet bajo GNU/Linux" de Alvaro del Castillo en LA 2 y la serie "ODBC sobre Linux" de Juan Antonio Martínez que comienza en LA 3 ) y en Linux Journal (número 5 de la edición en castellano "Especial Bases de Datos").

PIE LISTADO 1:Servidores donde encontrar más información

14. Capturas

Esta es la lista de ficheros adjuntos así como su pie de página. La primera captura puede ir en cualquier lado, las segundas conviene que estén hacia el final del artículo.

15. Notas de maquetación

Es mejor que, si no entra todo el artículo, antes que ponerlo a cuatro columnas se avise al autor de que es necesario recotarlo. Dado que es una serie no hay ningún problema en poner lo recortado en el siguiente artículo de la serie. Por favor, contactar con el autor si hay algún problema.

16. Notas de coordinación

Este es el primer artículo de la serie, si es necesario recortarlo hablar con el autor para que lo que no se incluya en éste número se incluya en el siguiente artículo.