• Guión de prácticas

Guión de las prácticas de Bases de Datos y Perl


La Practica se dividira en 3 modulos distintos:

  • Familiarizacion con el lenguaje SQL y el shell de PostgreSQL (psql).
  • Acceso Programatico mediantes scripts de perl.
  • Instalacion y configuracion.


  • I Familiarización con el shell de PostgreSQL, psql


    1.- Ver las tablas que hay en una base de datos.
    2.- Describir una tabla
    3.- Cómo ejecutar un script de SQL
    4.- Cómo guardar los resultados en un fichero
    5.- Cómo salir de psql



    II Manipulación de datos. Transacciones

    Para esta práctica, la base de datos va a almacenar entradas de SWISSPROT, junto con parte de la información disponible en sus entradas. Se almacenarán todos los accession numbers de la entrada, tomando como representativo el primer accession number; el identificador; la fecha de la última modificación de la entrada; la descripción; la secuencia y el peso molecular.
    El fichero SQL con los comandos de creación de las tablas es initial.sql, y lo ejecutaremos como se ha visto en la práctica anterior.
    En la estructura inicial vamos a introducir manualmente datos inventados, para posteriormente comprobar las restricciones de integridad referencial, etc, etc... Para ello, vamos a tomar un par de entradas al azar de SWISSPROT, y vamos a insertarlas. Las entradas aleatorias se pueden obtener de este link:

    http://us.expasy.org/cgi-bin/get-random-entry.pl?S

    III Selección de datos. Consultas de agregación.

    Mediante consulta vamos a:

    * Recuperar una entrada por su accession number principal.
    * Recuperar las entradas que tengan un peso molecular entre 30000 y 90000.
    * Recuperar las entradas cuya descripción contenga un código enzimático.
    Mediante consultas de agregación, vamos a obtener los siguientes valores:

    * Número de entradas de SWISSPROT insertadas.
    * Número de entradas de SWISSPROT con una secuencia de más de 300 aminoácidos.
    * Longitud media de las secuencias intertadas.
    * La desviación estándar del peso molecular.
    * Calcular el número de accession number que hay por entrada.


    IV Acceso mediante programa a la base de datos

    Mediante el script de ejemplo de inserción swinsert.pl, vamos a insertar 12 nuevas entradas en la base de datos, existentes en un fichero con formato SW SW-sample.sw.
    Si todo ha funcionado correctamente, procederemos a la inserción de los datos de dos organismos: Mycoplasma mycoides y Staphylococcus aureus.
    A continuación, vamos a generar a partir del contenido de la base de datos un fichero FASTA con todas las secuencias, mediante el script fastawrite.pl.

    V Creación de nuevas tablas. Creación de nuevos scripts.

    En esta práctica hay que añadir a la estructura existente de la base de datos las tablas necesarias para poder guardar parte de la información existente en las entradas de la base de datos PDB, y relacionar cada entrada de PDB con las entradas de SWISSPROT que aparecen reseñadas en su interior. En extended.sql podeis encontrar las sentencias SQL necesarias para crear las tablas necesarias.
    De la entrada de PDB hay que guardar el identificador, la fecha en la que se creó la entrada, el título, las moléculas que contiene junto con el nombre de la molécula, las cadenas de cada molécula, las secuencias de cada cadena, su longitud y las referencias de cada cadena a las correspondientes entradas de SWISSPROT.
    Hay 5 ficheros PDB en el directorio samples2, relacionados con las entradas SWISSPROT de las prácticas anteriores. Esto ficheros os servirán para que escribais un script en Perl que extraiga de ellos los campos que queremos guardar. Los ficheros están comprimidos con compress, así que tendreis que descomprimirlos previamente a su uso en Perl. Otra posibilidad es que los abrais de una forma especial en el propio script, para que se vayan descomprimiendo sobre la marcha, con una línea como la siguiente

    open(INFILE,"gunzip -c fichero |");

    Esta línea especial hace que se ejecute el comando gunzip para descomprimir. El parámetro '-c' hace que el resultado de la descompresión salga por la salida estándar de gunzip. La barra vertical final indica a la sentencia open de Perl que recoja esa salida, y nos la vaya proporcionando a través del manejador de fichero INFILE.
    VI Instalación de PostgreSQL en un sistema Unix.

    1.- Hay que descargar el paquete del código fuente de PostgreSQL (de un mirror cercano):
    Lo podemos hacer con el comando wget o pinchando en este link : PostgresSQL 8.02

    2.- A continuación, se descomprime el paquete:

    bunzip2 -c postgresql-8.0.2.tar.bz2 | tar xf -


    o bien :

    gunzip -c postgresql-8.0.2.tar.gz | tar xf -

    y entramos en el directorio.

    cd postgresql-8.0.2

    3.- Hoy en día, dentro de casi todos los programas que se distribuyen en código fuente se usa un script tipo configure. Este script comprueba si el sistema dispone de todos los programas y librerías necesarios para compilar y usar el programa. Al ejecutar lo siguiente:

    ./configure --help

    obtendremos los parámetros de configuración del paquete. Todos los configure proporcionan la opción --prefix, que indica el directorio de instalación del software. En concreto, el configure de PostgreSQL tendrá al final del todo unas opciones similares a las siguientes:

    --with-pgport=PORTNUM change default port number 5432
    --with-tcl build Tcl and Tk interfaces
    --without-tk do not build Tk interfaces if Tcl is enabled
    --with-tclconfig=DIR tclConfig.sh and tkConfig.sh are in DIR
    --with-tkconfig=DIR tkConfig.sh is in DIR
    --with-perl build Perl modules (PL/Perl)
    --with-python build Python modules (PL/Python)
    --with-java build JDBC interface and Java tools
    --with-krb4[=DIR] build with Kerberos 4 support [/usr/athena]
    --with-krb5[=DIR] build with Kerberos 5 support [/usr/athena]
    --with-krb-srvnam=NAME name of the service principal in Kerberos postgres
    --with-pam build with PAM support
    --with-rendezvous build with Rendezvous support
    --with-openssl[=DIR] build with OpenSSL support [/usr/local/ssl]
    --without-readline do not use Readline
    --without-zlib do not use Zlib

    Salvo que necesitemos algo adicional, ejecutaremos:

    ./configure --prefix=${HOME}/pgsql


    En caso de que la librería readline no esté completa o bien instalada, tendremos que ejecutar:

    ./configure --prefix=${HOME}/pgsql --without-readline

    4.- Una vez que configure haya funcionado, simplemente ejecutaremos

    make

    y esperaremos a que el programa se termine de compilar (tarda unos cuantos minutos). El comando make toma las acciones a realizar de una serie de ficheros, entre ellos el fichero Makefile. Estos ficheros son creados por configure cuando termina sus chequeos sin problemas. Cuando termine de compilar, si no ha dado errores, comprobaremos si el gestor de bases de datos está bien compilado, ejecutando:

    make check

    Este comando crea una base de datos temporal, en la que se comprueba el buen funcionamiento de todas las características de PostgreSQL.

    5.- Por último, la instalación del software se termina ejecutando:

    make install

    y añadiendo las siguientes líneas al final de vuestro fichero .bashrc (si usais bash) o .profile (si usais sh):

    # Dónde está instalado PostgreSQL
    POSTGRES_HOME=${HOME}/pgsql
    export POSTGRES_HOME
    # Hacer que PostgreSQL sea ejecutable
    PATH=${POSTGRES_HOME}/bin:${PATH}
    LD_LIBRARY_PATH=${POSTGRES_HOME}/lib:${LD_LIBRARY_PATH}
    export PATH LD_LIBRARY_PATH
    # Dónde instalar los paquetes locales de Perl
    PERL5LIB=${HOME}/perllib:${PERL5LIB}
    export PERL5LIB

    Si sois usuarios de csh (fichero .cshrc) ó tcsh (fichero .tcshrc) los comandos a añadir serán:

    # Dónde está instalado PostgreSQL
    setenv POSTGRES_HOME ${HOME}/pgsql
    # Hacer que PostgreSQL sea ejecutable
    setenv PATH ${POSTGRES_HOME}/bin:${PATH}
    setenv LDTMP ${POSTGRES_HOME}/lib
    if( $?LD_LIBRARY_PATH ) then
    setenv LD_LIBRARY_PATH ${LDTMP}:${LD_LIBRARY_PATH}
    else
    setenv LD_LIBRARY_PATH ${LDTMP}
    endif
    unsetenv LDTMP

    # Dónde instalar los paquetes locales de Perl
    setenv PERL5LIBTMP ${HOME}/perllib
    if( $?PERL5LIB ) then
    setenv PERL5LIB ${PERL5LIBTMP}:${PERL5LIB}
    else
    setenv PERL5LIB ${PERL5LIBTMP}
    endif
    unsetenv PERL5LIBTMP


    VII Creación de la primera base de datos PostgreSQL, y puesta en ejecución del gestor de bases de datos:

    1.- Primero elegiremos dónde se van a almacenar los ficheros de la base de datos (por ejemplo, ${HOME}/PGDATA). El siguiente comando hay que ejecutarlo SÓLO UNA VEZ:

    initdb -D ${HOME}/PGDATA

    ¡¡¡CUIDADO!!! ¡Si borrais el directorio ${HOME}/PGDATA, se perderán TODAS LAS BASES DE DATOS Y USUARIOS QUE HAYAIS CREADO!.
    Para permitir las conexiones desde otra máquina entraremos en el directorio de la base de datos, y CON MUCHO CUIDADO (haciendo copia de seguridad de los ficheros originales) editaremos los siguientes ficheros:

    postgresql.conf (fichero de los parámetros de configuración de PostgreSQL)
    # En el apartado CONNECTIONS AND AUTHENTICATION, bajo
    # Connection Settings, descomentar la linea :
    #listen_addresses = 'localhost'
    y substituir localhost por '*' . De tal forma que la linea quede asi :
    listen_addresses = '*'
    Descomentar la siguente linea :
    #port = 5432

    pg_hba.conf (fichero de restricción de las conexiones)
    # Añadir al final del fichero (bajo: host all all 127.0.0.1/32 trust)
    # Permite la conexión desde otras máquinas, usando password:
    host all all 150.244.85.0 255.255.255.0 md5


    La dirección IP de la máquina la necesitaremos para permitir, por ejemplo, que los ordenadores de la red local puedan acceder a la base de datos. En Linux, mediante el siguiente comando obtendremos dicha IP:

    hostname -i

    Si por ejemplo dicho valor devuelto es 150.244.85.85, para el fichero anterior usaremos 150.244.85.0.

    2.- Para arrancar el gestor de bases de datos, tendreis que ejecutar el siguiente comando:

    pg_ctl start -D ${HOME}/PGDATA

    Recordad que hay que volver a arrancar el gestor de bases de datos DESPUÉS DE CADA REINICIO DEL ORDENADOR. En los manuales de PostgreSQL vienen las instrucciones de cómo hacer que Linux/Unix realice esta tarea de forma automática.

    3.- Todo gestor PostgreSQL tiene una base de datos template1, que se sólo se debe usar para tareas administrativas (crear y borrar usuarios y bases de datos). Para entrar dentro, hay que ejecutar:

    psql template1 {nombre de usuario de quien compiló postgres}
    Ya podeis ejecutar cualquier comando SQL soportado por PostgreSQL. Lo primero que vamos a hacer es crear un usuario de base de datos, y una base de datos:

    CREATE USER masteruser WITH ENCRYPTED PASSWORD 'masterpass';
    CREATE DATABASE masterdb WITH OWNER = masteruser;

    4.- Para probar la diferencia entre conectarse en local y conectarse por red, haremos lo siguiente:

    psql masterdb masteruser

    psql -h localhost masterdb masteruser


    La primera sentencia permite entrar directamente, sin preguntar password. La segunda sentencia sólo permite entrar en la base de datos con la password.

    VIII Instalación fácil de los paquetes de Perl para PostgreSQL:


    1.- Desde línea de comandos, vamos a ejecutar CPAN, un shell de instalación de paquetes de Perl:

    perl -MCPAN -e shell

    2.- Si es la primera vez que se ejecuta, preguntará algo como lo siguiente:
    Are you ready for manual configuration? [yes]
    Normalmente, salvo configuraciones especializadas, es mejor responder no.
    Salimos de la shell del CPAN y volvemos a entrar (Esto guarda los cambios locales efectuados).
    3.- Dado que vamos a instalar en nuestro propio directorio, lo primero que vamos a hacer es establecer el directorio de instalación:

    cpan> o conf makepl_arg LIB=~/perllib

    y vamos a grabar la configuración mediante el siguiente comando:

    cpan> o conf commit

    4.- Para instalar el paquete de Perl DBD::Pg, sólo hay que hacer:

    cpan> install DBI
    cpan> install DBD::Pg

    Si no está instalado, el paquete se descargará de internet, se compilará e instalará. Y si es necesario algún paquete adicional, automáticamente se añadirá éste al proceso de instalación.
    En algunas versions antiguas de Perl puede fallar el proceso de instalación porque no se ha podido verificar que DBD::Pg está bien compilado. Para pasar estas pruebas de instalación, DBD::Pg necesita que exista una base de datos. Para ello, usaremos la base de datos que hemos creado en las prácticas anteriores.
    5.- Establecemos las siguientes variables de entorno desde línea de comandos:

    bash$ DBI_DSN=dbi:Pg:dbname=masterdb
    bash$ DBI_USER=masteruser
    bash$ DBI_PASS=masterpass
    bash$ export DBI_DSN DBI_USER DBI_PASS

    Sustituyendo lo que está en cursiva por los valores de lo que hayais hecho. Desde este mismo terminal, ejecutaremos de nuevo CPAN para volver a instalar DBD::Pg.
    6.- Fin (por ahora)

    IX Instalación de PostgreSQL en Micro$oft Window$.

    La última versión de PostgreSQL, se caracteriza entre otras muchas cosas, por ser compatible con más sistemas operativos, por ejemplo Window$. Esto hacia que este gestor de bases de datos, fuera menos usado, que otros gestores con peores características funcionales, como MySQL.
    La instalación de PostgreSQL en este sistema operativo no forma parte del temario, ya que no es un sistema operativo muy apropiado para la Bioinformática. De forma que aquí se presentaran las nociones básicas.

    1.- Descarga del software.
    La descarga, la haremos desde un mirror cercano a nosotros, como es el de rediris. Tras descargar el fichero, habr´a que descomprimirlo. Para ellos usaremos cualquier herramienta de window$, como Winzip, WinRAR ..etc.
    Este paquete descargado, contiene 4 ficheros, un README, un fichero para hacer un upgrade, y dos de instalación con extension MSI ( windows installer file).

    2.- Instalación
    Para la instalación tenemos que ejecutar el fichero postgresql-8.0.msi, tras ejecutarlo nos aparecerá el típico menu de selección de idioma ( El castellaño no esta actualmente soportado).
    Una vez elegido el idioma, necesitamos crear un usuario que se encargara de ejecutar el servidor de bases de datos. Puede ser cualquier usuario (como lo queramos llamar).
    En el siguiente paso elegimos una contraseña para el administrador de las bases de datos, ( no deberia ser el mismo que se encarga de ejecutar las bases de datos).
    También tenemos que elegir el puerto de conexiones para el servidor de PostgreSQL y configuraciones generales, como las preferencias de idioma y el encoding. Es importante activar el servidor para que acepte conexiones desde cualquier dirección previamente añadida al fichero pg_hba.conf (igual que en Linux).
    Una vez terminado este paso, el programa empieza la instalación.
    Para poder usar programas de inserción y consulta basados en Perl:DBI, es necesario tener estos paquetes instalados con anterioridad. Para este sistema operativo, se sugiere el uso de programas como ActivePerl.

    3.- Configuración.
    Es importante editar ficheros como el pg_hba.conf para que el servidor pueda ser consultado desde cualquier maquina.

    4.- Herramientas bajo Window$ para el uso de PostgreSQL.
    PostgreSQL además del interfaz psql ( tipico de linux) viene con software como el PGAdmin III, que permite hacer cantidad de operaciones en el servidor de bases de datos con un par de clicks).

    Created by José María Fernández González
    Modified and Updated by Eduardo Andrés León

    Última modificación: vie 22 jul 2005 11:15:13 CEST

    Índice