Instalación de un servidor PostgreSQL bajo Linux

PostgreSQL es, indicutiblemente, la más popular de las bases de datos SQL de código abierto disponibles para Linux. Aunque en este momento la presencia de MySQL como plataforma de desarrollo Web es abrumadora, PostgreSQL resulta la alternativa más obvia para quienes deseen librarse completamente de las licencias comerciales del software propietario, y optar por una solución 100% libre y gratuita.

Destinatarios

Colegios y Universidades: Administración de alumnos, carreras, cátedras, calificaciones, horarios, etc.
Pymes: Administración de recursos, sueldos y jornales, empleados, gestión contable, etc.
Estudiantes: Aprendizaje.
Comercio: Gestión comercial, sueldos y jornales, control de stock, facturación, ventas, etc.
Estado: Administración de recursos, contabilidad, sueldos y jornales, administración de personal, etc.
Bibliotecas: Administración de recursos, catálogos, indices, prestamos y devoluciones, etc.

Objetivos

. Conocer las ventajas y usos de SQL.
. Aprender a instalar y configurar un servidor de SQL.
. Creación, modificación, y borrado de tablas.
. Fundamentos del lenguaje

Conceptos básicos

SQL es un método basado en un potente lenguaje, para organizar, administrar y consultar datos almacenados en una computadora. SQL es una sigla que deviene de su nombre en inglés "Structured Query Language" (Lenguaje de Consulta Estructurado). Más específicamente SQL esta definido en torno al modelo de bases de datos relacionales, basado en el álgebra relacional, esto le da a SQL las ventajas que lo imponen como el sistema de mayor aceptación. Algunas de las ventajas son:

. Marco teórico sólido, fundamentado en el álgebra relacional
. Simplicidad de conceptos (modelo de base de datos: tablas=lineas x columnas)
. Definición de vínculos en la consulta, esto le da a SQL una gran flexibilidad
. Fácil y rápido aprendizaje
. Arquitectura cliente-servidor
. Integración con cualquier lenguaje de programación
. Estandarización

SQL: Orígenes

El origen de SQL se remonta a el año 1974, cuando el gigante azul, IBM, desarrollo el lenguaje SEQUEL "Structured English QUEry Language" (Lenguaje de Consulta Estructurado en Ingles). Luego Oracle lanzó su primer producto comercial, una implementación de SQL realizada en el año 1979. Dos años más tarde IBM sacó al mercado el producto SQL/DS y en 1983 el popular DB2.

PostreSQL: Historia

PostgreSQL es una implementación de SQL, consta de un servidor de bases de datos, un cliente y varias herramientas adicionales. Los autores del software son Andrew Yu y Jolly Chen, aunque existen un serie con colaboradores del proyecto trabajando en portarlo a otras plataformas, pruebas, correcciones, y ampliaciones de las capacidades del producto. El origen del proyecto se debe a el profesor Michael Stonebraker de la Universidad de California, Berkeley. El proyecto comenzó en 1986 y la primera versión operativa, que era una "demo" se liberó en 1987. En el año 1988 fue presentado en la conferencia ACM-SIGMOD y finalmente en Junio de 1989 salió a la luz la versión 1 de PostgreSQL. Luego le sucedieron las nuevas versiones, en 1990 la versión 2, en 1991 la 3, cada vez con mayores prestaciones y mejor rendimiento. Recién en el año 1994, se incorpora el lenguaje SQL al manejador de bases de datos, así nace lo que se llamó Postgres95. Durante el año 1996, se decidió quitar el 95 del nombre como una forma de liberarse de la cronología, así nace PostgreSQL, y se reinicia la secuencia de versiones a la 6.0. Finalmente en este artículo trataremos la versión 6.5, que es la última disponible al momento de escribirlo.

Requirimientos

Los requerimientos mínimos para instalar PostgreSQL son:

. 8 megabytes de RAM
. 30 megabytes de espacio en disco para el cogido fuente
. 5 megabytes de espacio en disco para la instalación de los ejecutables
. 1 megabyte extra para las bases de datos básicas
. 3 megabytes de espacio en disco rígido para el tarball con el cogido fuente

Para chequear el espacio en disco puede usar el comando: df -k

Preparación

Lo primero que debemos hacer es crear la cuenta del superusuario de PostgreSQL, normalmente se usa por defecto como nombre de usuario "postgres". Este usuario debe ser un usuario común del sistema, sin privilegios de root, esto reduce considerablemente los riesgos de inseguridad. En la secuencia de abajo se detalla el procedimiento para esto:

# adduser postgres
# passwd postgres

Ahora que el usuario existe, logueese con esa cuenta. Toda la instalación del software y configuración se hará desde la cuenta postgres.

Pero antes de continuar estableceremos algunas variables de entorno necesarias para el uso del servidor. En el directorio "home" del usuario "postgres" editamos el archivo ".bashrc", si no existe lo creamos, y le agregamos las siguientes lineas:

PATH=$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man
PGLIB=/usr/local/pgsql/lib
PGDATA=/usr/local/pgsql/data
LC_COLLATE=C
LC_CTYPE=C
LC_COLLATE=C
export PATH MANPATH PGLIB PGDATA LC_COLLATE LC_CTYPE LC_COLLATE

Lo primero que debemos hacer es conseguir los fuentes del software, los podemos bajar gratuitamente de http:/www.postgresql.org/

Una vez que tenemos el fuente, debemos descomprimirlo en un directorio desde donde lo compilaremos, por defecto en Red Hat se acostumbra usar el directorio /usr/src como base aunque cualquier directorio que usemos nos va a servir, aunque no está de más ser prolijos en su ubicación. El proceso de preparación de directorios y descompresión se detalla a continuación:

Primero nos convertimos en root con:
# su
Ingresamos al directorio de los fuentes
# cd /usr/src
Creamos el directorio donde descomprimiremos el cogido fuente del servidor
# mkdir pgsql
Hacemos dueño del directorio al usuario postgres
# chown postgres:postgres pgsql
Ingresamos al directorio de programas de usuarios
# cd /usr/local
Creamos el directorio donde se instalara el software una vez compilado
# mkdir pgsql
Hacemos dueño del directorio al usuario postgres
# chown postgres:postgres pgsql
Dejamos la cuenta de root
# exit

Ya tenemos los directorios donde ubicaremos el cógido fuente a compilar y los binarios y demas archivos necesarios para el uso del serividor una vez que este compilado e instalado.

Ubicarnos en el directorio base (/usr/src/pgsql)
# cd /usr/src/pgsql
Finalmente debemos descomprimir el archivos con:
# tar xvfz postgresql-6.5.tar.gz

Con esto obtenemos un directorio llamado: postgresql-6.5 que es la base del árbol de directorios conteniendo el código fuente, la documentación y demás archivos necesarios.

Configuración

Previo a la compilación en si, se debe configurar el código fuente para nuestra plataforma en particular, en este proceso entra como factor de gran importancia la designación del directorio donde se instalará PostgreSQL, esto se hace mediante la variable "prefix".=, además incluiremos algunos parámetros específicos para para nuestras necesidades. Estos son:

–with-perl: Soporte perl
–with-odbc: Soporte ODBC
–enable-locale: Soporte de lenguajes
# cd /usr/src/pgsql/postgresql-6.5/src
# ./configure –prefix=/usr/local/pgsql –with-perl –with-odbc
–enable-locale

Donde prefix es el directorio base donde se instalara el servidor una vez compilado, si obviamos este parámetro por defecto toma el directorio /usr/local/psql

Una vez ejecutado este comando obtenemos una salida como la que se muestra en la Figura 2

Compilación

El proceso de compilación es idéntico a cualquier otro programa. En esta caso la documentación recomienda una secuencia algo distinta pero con el mismo resultado.

# gmake all >& make.log &
# tail -f make.log

Si todo sali como es de esperar, tail nos muestra la ultima linea del archivo de log, la que dice:

All of PostgreSQL is successfully made.
Ready to install.

Ahora debemos pulsar Control C para retornar al shell.

Instalación de binarios

Procedemos ahora a instalar los binarios y archivos adicionales. Si ya nos encontramos en el directorio "/usr/src/pgsql/postgresql-6.5/src" pasamos directamente a la segunda línea de la secuencia.

# cd /usr/src/pgsql/src
# gmake install >& make.install.log &
# tail -f make.install.log

Luego de unos segundos en el monitor veremos la siguiente línea, esto nos indica que ya termino la instalación del servidor.

Thank you for choosing PostgreSQL, the most advanced open source database engine.

Instalación de la Documentación

Solo nos resta instalar la documentación, para ello debemos posisionarnos en el directorio "/usr/local/pgsql/postgresql-6.5/doc" y ejecutar:

# make install

Librerías

Debemos indicar ahora a nuestro sistema la ubicación de las librerías necesarias para PostgreSQL. Esto debemos hacerlo desde la cuenta "root", primero editaremos el archivo "ld.so.conf" del directorio "/etc" en el agregamos la siguiente linea "/usr/local/pgsql/lib" y luego de grabar el archivo y salir ejecutamos el programa "ldconfig" que actualiza los enlaces de las librerías dinámicas.

Instalación de módulos Perl

Como la instalación se realizó como un usuario no privilegiado no pudimos instalar el módulo de Perl debido a que el acceso los directorios de Perl no tienen permiso de escritura habilitado para usuarios comunes, de manera que nuevamente como "root" ponemos los siguientes comandos:

# cd /usr/src/pgsql/src/interfaces/perl5
# make install

Termina con una línea como ésta:

Appending installation info to /usr/lib/perl5/i386-linux/5.004/perllocal.pod

Creación de las bases de datos

El siguiente paso es crear las bases de datos básicas para el funcionamiento del servidor de SQL. Es te paso en sencillo, solo hace falta ejecutar un script, pero debemos hacerlo desde la cuenta del usuario de PostgreSQL (postgres), esto es importante para mantener la seguridad del sistema.

# initdb

Prueba

Bien, ahora vamos a ver si todo salio como es de esperar, primero vamos a lanzar el servidor de SQL de PostgreSQL, para ello invocamos el script postmaster, con el parametro -i y & para que nos devuelva el shell.

# postgres -i &
Cramos la base de datos de prueba con la siguiente linea de comando:
# createdb
Finalmente nos conectamos al servidor con el cliente:
# psql

Esto nos muestra unos mensajes como se puede ver en la Figura 3. Estamos en la linea de comandos del server, desde aca podemos ingresaro los mandatos para gestionar, consultar y administrar nuestras bases de datos, primeto veremos la ayuda en linea del shell del cliente, para ello ingresamos /? o /help y obtenemos un listado de los comandos disponibles, estos son solo los del cliente, no estan listados los comandos del lenguaje en si.

Consultemos la fecha y hora con: postgres=> SELECT datetime now;

?column?
—————————-
Thu Jul 29 13:05:56 1999 GMT
(1 row)
postgres=>

Para salir del programa usamos /q

Ahora, comprobado que todo funciona como debe ser, podemos destruir la base de datos de prueba con:

# destroydb
Arranque de PostgreSQL
Para lanzar el servidor debemos hacerlo con la siguiente línea:
# nohup postmaster > regress.log 2>&1

Si lo que deseamos es que el server se lance cada vez que arrancamos el sistema debemos copiar de "/usr/src/pgsql/postgresql-6.5/contrib/linux" a el directorio "/etc/rc.d/init.d" el archivo "postgres.init.sh" como "postgres", luego entramos al directorio "rcX.d" (donde X corresponde al runlevel que estamos usando) y creamos el link "S98postgres" para que automáticamente se cargue el demonio del server en el arranque o cambio de runlevel, si lo que queremos es deshabilitar esta carga lo que debemos hacer es renombrar el link cambiando la "S" inicial por una "K".

Fundamentos del lenguaje

Este potente lenguaje cumple las funciones de DDL (data definition statements), esto sifnifica que se definen, mantienen y borran bases de datos, se regulan permisos, etc. (Por ej. CREATE, DROP, GRANT, etc.) y DML (data manipulation statements). Manipulan datos de la base de datos, consultando, insertando, actualizando y borrando filas.(Por ej. SELECT, UPDATE, DELETE, INSERT ,etc) TCS (Transaction control statements). manipulan los cambios hechos por las sentencias DML deshaciéndolos,validándolos. (Por ej. ROLLBACK, COMMIT, SAVEPOINT etc.)

Deja un comentario