Download 3 El interfaz World Wide Web a una base de datos. - TLDP-ES

Document related concepts
Transcript
1 Introducciуn a la serie
#$+
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.
KEste
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
#$+
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.
KLa
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.
#$+
KAsн
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
#$+
KGNU/Linu
x 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[percnt] 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
#$+
montar un sistema de interfaz de bases de datos vнa WWW se han elegido como
componentes bбsicos:
KPara
 Sistema operativo: Debian GNU/Linux 2.1. Actualmente Debian es la distribuciуn
que mбs herramientas ofrece para un desarrollador y para el usuario, con mбs
de 5000 paquetes (4 cds de binarios en Debian 2.2) de cуdigo libre en la
distribuciуn principal. Si el lector es un desarrollador debe usar Debian
GNU/Linux. Como nъcleo del sistema utilizaremos un nъcleo Linux 2.2 ajustado
a las necesidades.
 Servidor de web: Apache 1.3.3. El servidor de web mбs utilizado en Internet,
extensible, seguro y rбpido, y portado a multitud de sistemas.
 Gestor de base de datos: PostgreSQL 6.3.2. Se ha elegido PostgreSQL en lugar
de otros sistemas de base de datos semi-libres debido a su amplia licencia.
Quizбs otros sistemas de base de datos (como mySQL) puedan ser mбs rбpidos
pero PostgreSQL ofrece todas las capacidades necesarias para un desarrollo e
implementaciуn inicial. El cambio posterior de la base de datos a otro sistema de
base de datos no serб dificil si en las herramientas desarrolladas se hace uso de
estбndares para comunicarse con la misma (JDBC, SQL..).
6 Instalaciуn de los componentes
#$+
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.
KGracias
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
#$+
KPara
ver que efectivamente tenemos el servidor de web instalado y lanzado haremos lo
siguiente:
 Comprobaremos que existe el demonio que atiende a las peticiones y estб
actualmente ejecutбndose. Para ello ejecutamos ps aux [verbar] grep
apache. Que nos deberб mostrar el proceso ejecutбndose. Si no aparece una
lista de procesos lo deberнamos reiniciar con /etc/init.d/apache start
(esto es para Debian GNU/Linux, otras distribuciones ponen los guiones para
lanzar los demonios de otra forma.
 Probaremos el servidor para comprobar que funciona conectбndonos al puerto
en que por defecto se instala el demonio, el puerto 80. Bastarб con hacer un
telnet localhost 80 y ver que efectivamente hay una conexiуn. Para cerrarla
sin enviar pulsaremos Ctrl+5 lo que enviarб el cуdigo de escape a la aplicaciуn
telnet y podremos cerrarla escribiendo close (mбs informaciуn man telnet)
 Para ver que sirve adecuadamente pбginas lanzaremos un navegador contra el
servidor, escribiendo como direcciуn http://localhost/. Si el servidor ha
sido adecuadamente lanzado veremos una pбgina de muestra.
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
#$+
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.
KPara
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 igual manera que para el servidor de web, la base de datos se lanza como un
servicio llamado postmaster en un puerto determinado. Para ver si el servidor
estб lanzado haremos ps aux [verbar]grep postgres que nos deberб listar
un proceso lanzado como usuario postgres. Si no es asн quizбs no estй lanzado
(aunque el gestor de paquetes lo lanza al instalarlo) pero se puede lanzar con
/etc/init.d/postgres start.
 Ahora mismo no probaremos que nos podemos conectar al servidor ya que,
posiblemente, aъn no estй configurado para aceptar conexiones a travйs de
TCP/IP. Si estuviera configurado se lanzarнa en el puerto 5432 (ver
/etc/services), y podrнamos probarlo conectбndonos mediante un telnet
como antes.
 Dado que posiblemente acepte sуlo conexiones de usuarios de la misma
mбquina, probaremos a conectarnos con el interfaz de texto. Para ello
ejecutaremos pgsql sin argumentos. Si nos da un prompt del estilo de
template1=[gt
] estarб funcionando correctamente (saldremos con
Ctrl+D o con ""). Si da un error posiblemente no estй funcionando.
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
#$+
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.
KHay
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.
 cleardbdir: destruye todas las bases de datos instaladas. Sуlo se utiliza
cuando se quiere reinicializara el sistema de base de datos y es necesario para
el demonio postmaster.
 initdb: crea un nuevo sistema de base de datos, crea los directorios necesarios
para el sistema y la base de datos template1 que se trata de la plantilla a travйs
de la cual se generarбn el resto de las bases de datos. En un sistema en el que
se haya instalado correctamente la base de datos esto se habrб realizado ya y el
usuario no tendrб que hacerlo.
 initlocation: prepara un directorio para albergar el sistema de base de datos.
 pg[lowbar]passwd: permite manipular el fichero de contraseсas de la base de
datos. Se trata de una aplicaciуn similar al programa passwd pero para el
sistema de base de datos.
 pg[lowbar]upgrade: permite actualizar el sistema de base de datos. Cuando
se cambia de versiуn del sistema de base de datos es necesario actualizar los
datos ya que sino serбn incompatibles con el nuevo sistema. Este programa
facilita el movimiento de una versiуn a otra.
 pg[lowbar]dump y pg[lowbar]dumpall vuelcan (una base de datos en el
caso del primero y todas las bases el segundo), las ordenes SQL necesarias en
un fichero ASCII de forma que la base de datos se pueda recuperar a travйs de
йste. Sin hacer uso de ninguna opciуn la base de datos serб volcada con todos
los datos incluidos. Al tratarse de SQL estбndar, este mismo fichero puede
usarse para crear de nuevo la base de datos en otro sistema de bases de datos,
facilitando la migraciуn a cualquier otro sistema.
 pg[lowbar]id: devuelve el identificador de usuario correspondiente al usuario
administrador de las bases de datos.
 createdb: crea una base de datos en nuestro sistema de base de datos. En
realidad llama al interfaz pgsql para realizar esto.
 createuser: crea un usuario reconocido en el sistema de bases de datos. Los
usuarios del sistema de base de datosno tienen por quй tener relaciуn con los
usuarios en nuestro sistema operativo, pudiendo haber usuarios distintos.
 destroydb: elimina una base de datos.
 destroyuser: elimina un usuario del sistema de bases de datos.
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
#$+
KAntes
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:
 pgsql: el interfaz en modo texto para acceder a la base de datos, permite
realizar todas las funciones de acceso a una base de datos mediante уrdenes
SQL (teclear para acceder a la lista de todas las уrdenes disponibles) y obtener
tambiйn informaciуn del sistema de base de datos, como ver las bases de datos,
los tipos de datos soportados, etc... para ver las уrdenes disponibles teclear .
 pgaccess (ъltima versiуn 0.98.4): interfaz en Tcl/Tk que permite visualizar las
tablas, crearlas mediante un formulario de forma rбpida, etc.. Es el interfaz mбs
evolucionado para postgresql aparte del interfaz textual. No son necesarios
conocimientos de SQL para hacer uso de muchas de las funciones y permite
administrar tanto la base de datos como los datos en sн de una manera eficaz.
En el caso de Debian para instalarlo es necesario instalar el paquete libpgtcl.
 gtksql (ъltima versiуn 0.3): interfaz en Gtk a la base de datos. Muestra las
tablas de la base de datos y permite hacer consultas SQL, visualizando el
resultado en el mismo interfaz. Se trata de una herramienta aъn en desarrollo
pero que le puede resultar ъtil a un administrador para hacer tareas sencillas.
 gasql: un interfaz en Gtk para PostgreSQL desarrollado para el proyecto
GNOME, aъn se encuentra en desarrollo, pero tiene algunas funcionalidades
ъtiles.
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
#$+
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.
KEn
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
K
#$+
13 Listados
KLISTADO
#$+
1-
Para el lector interesado se recomienda buscar mбs informaciуn en diversos
servidores de web. Estos son:
 PostgreSQL: urlnam y su FAQ en urlnam.
 Apache: http://www.apache.org
 El HOWTO de PostgreSQL para Linux: urlnam, tambiйn se instala en
/usr/doc/HOWTO al instalar el paquete HOWTO en Debian.
 PGaccess: urlnam
 gtksql: urlnam
 gasql: urlnam
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." (urlnam) 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
(urlnam).
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 urlnam.
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
#$+
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.
KEsta
 postgresl.jpg: PostgreSQL es el sistema de base de datos libre mбs potente del
mundo.
 pgaccess.gif. PgAccess es un interfaz tremendamente ъtil para la gestiуn de
nuestro sistema de base de datos.
 gtksql.gif. Para los que quieran una simple "hoja SQL" gtksql es la herramienta a
utilizar.
15 Notas de maquetaciуn
#$+
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.
KEs
16 Notas de coordinaciуn
#$+
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.
KEste
T
OC_0
ntroducci_n_a_la_serie
b
rowse
Intro
ducciуn a la serie
T
OC_1
I
ntroducci_n_breve_a_las_Bases_de_Datos
b
rowse
Int
roducciуn breve a las Bases de Datos
T
OC_2
E
l_interfaz_World_Wide_Web_a_una_base_de_datos_
b
rowse
El i
nterfaz World Wide Web a una base de datos.
T
OC_3
G
NU_Linux_como_sistema_de_desarrollo
b
rowse
GNU/Linux
como sistema de desarrollo
T
OC_4
E
lecci_n_de_los_componentes
b
rowse
Elecc
iуn de los componentes
T
OC_5
I
nstalaci_n_de_los_componentes
b
rowse
Instalac
iуn de los componentes
T
OC_6
C
omprobaci_n_de_la_instalaci_n__Apache
b
rowse
Compr
obaciуn de la instalaciуn: Apache
T
OC_7
C
omprobaci_n_de_la_instalaci_n__PostgreSQL
b
rowse
Compr
obaciуn de la instalaciуn: PostgreSQL
T
OC_8
G
esti_n_como_usuario_postgres
b
rowse
Gest
iуn como usuario postgres
T
OC_9
H
erramientas_de_gesti_n_de_la_base_de_datos
b
rowse
Herram
ientas de gestiуn de la base de datos
T
OC_10
I
S
iguientes_art_culos
rowse
Sig
uientes artнculos
T
OC_11
S
umarios
b
rowse
S
umarios
T
OC_12
L
istados
b
rowse
b
Listados
T
OC_13
apturas
b
rowse
Captu
ras
T
OC_14
N
otas_de_maquetaci_n
b
rowse
Not
as de maquetaciуn
T
OC_15
N
otas_de_coordinaci_n
b
rowse
Notas
de coordinaciуn
C