1.- Creación de una base de datos. Creación de usuarios.
2.- Ver las tablas que hay en una base de datos.
3.- Describir una tabla
4.- Cómo ejecutar un script de SQL
5.- Cómo guardar los resultados en un fichero
6.- Cómo salir de psql
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:
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).
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.
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.
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.
1.- Hay que descargar el paquete del código fuente de PostgreSQL (por ejemplo, con wget) de un mirror cercano:
wget http://ftp.rediris.es/mirror/postgresql/src/v7.4.1/postgresql-7.4.1.tar.bz2o bienwget http://ftp.rediris.es/mirror/postgresql/src/v7.4.1/postgresql-7.4.1.tar.gz2.- A continuación, se descomprime el paquete:
bunzip2 -c postgresql-7.4.1.tar.bz2 | tar xf -o biengunzip -c postgresql-7.4.1.tar.gz | tar xf -y entramos en el directorio.cd postgresql-7.4.13.- 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 --helpobtendremos 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:Salvo que necesitemos algo adicional, ejecutaremos:--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./configure --prefix=${HOME}/pgsqlEn caso de que la librería readline no esté completa o bien instalada, tendremos que ejecutar:./configure --prefix=${HOME}/pgsql --without-readline4.- Una vez que configure haya funcionado, simplemente ejecutaremos
makey 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 checkEste 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 instally añadiendo las siguientes líneas al final de vuestro fichero .bashrc (si usais bash) o .profile (si usais sh):Si sois usuarios de csh (fichero .cshrc) ó tcsh (fichero .tcshrc) los comandos a añadir serán:# 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# 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
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¡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:
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:
postgresql.conf (fichero de los parámetros de configuración de PostgreSQL)
# Añadir al principio del fichero # Permite conexiones TCP/IP tcpip_socket = truepg_hba.conf (fichero de restricción de las conexiones)
# Añadir al final del fichero # Permite la conexión desde otras máquinas, usando password: host all all 127.0.0.0 255.255.255.0 crypt host all all 150.244.85.0 255.255.255.0 crypthostname -iSi 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}/PGDATARecordad 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:
La primera sentencia permite entrar directamente, sin preguntar password. La segunda sentencia sólo permite entrar en la base de datos con la password.psql masterdb masteruser psql -h localhost masterdb masteruser
1.- Desde línea de comandos, vamos a ejecutar CPAN, un shell de instalación de paquetes de Perl:
perl -MCPAN -e shell2.- 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.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=~/perlliby vamos a grabar la configuración mediante el siguiente comando:cpan> o conf commit4.- Para instalar el paquete de Perl DBD::Pg, sólo hay que hacer:
cpan> install DBD::PgSi 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.Como vereis, ha fallado 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_PASSSustituyendo 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)