Instalación previa:
Un único gestor de base de datos en el servidor.
En el cliente, es necesario tener instalados las librerías cliente de PostgreSQL, las librerías DBI y DBD::Pg de Perl y el shell del gestor PostgreSQL, psql (suele venir con la librerías de cliente).
Manipulaciones realizadas en el gestor:
Tal como está estructurada la práctica, con un único servidor al que se conectan todos los alumnos, hay que habilitar las conexiones TCP/IP en el gestor de la base de datos para toda la sala. A continuación, aumentar el número máximo de conexiones concurrentes al triple del número de puestos, para permitir más de una conexión por alumno. Como parte de la práctica, crear una cuenta de usuario por cada puesto, incluído el nodo principal, así como una base de datos (usuario practX y base de datos dbX, respectivamente). Cada usuario será el dueño de la base de datos que cree, tendrá privilegios de creación de usuarios y de bases de datos.
Estructura básica de la base de datos:
Esta 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
Datos iniciales proporcionados:
Doce entradas que han sido tomadas de forma pseudoaleatoria de SWISSPROT, que se encuentran en el fichero SW-sample.sw.
Programas iniciales:
- Insertor de entradas de SWISSPROT (swinsert.pl)
- Generador de ficheros FASTA (fastawrite.pl)
Prácticas:
Práctica opcional 1 (realizada): Creación de usuarios. Creación de una base de datos nueva. Otorgar privilegios.
Práctica 0: Familiarización con el shell de PostgreSQL, psql
Tablas existentes, descripción de una tabla, cómo ejecutar un script de SQL, cómo guardar los resultados, cómo salir del programa.Práctica 1: Manipulación de datos. Transacciones
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.Práctica 2: Acceso mediante programa a la base de datos
Práctica 3: Selección de datos. Consultas de agregación.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.
Práctica 4: 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.
Práctica opcional 2: Instalación de PostgreSQL.
Aquí teneis los pasos a dar para que realiceis vosotros mismos la práctica. Aunque en el guión se explica cómo hacerlo para PostgreSQL 7.2.4, los pasos son idénticos para PostgreSQL 7.3.3 (pasos a seguir).