Guión de las prácticas de Bases de Datos y Perl
La Practica se dividira en 3 modulos distintos:
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 |