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