PostgreSql¶
PostgreSQL¶
PostgreSQL es un SGBDR 1 de uso no comercial para Linux; implementa características de base de datos relacional orientada a objetos.
Arquitectura de Postgres¶
PostgreSQL usa una estructura cliente-servidor, con lo que trabajar con él requiere la ejecución concurrente de al menos tres procesos:
-
Un proceso demonio supervisor, llamado postmaster.
-
La aplicación cliente del usuario, generalmente un proceso psql.
-
Uno o más procesos servidores de bases de datos.
El postmaster mantiene las bases de datos en un ordenador central. Las aplicaciones cliente que desean acceder a las bases de datos intentan conectar con el postmaster haciendo uso de la librería libpq. La petición del usuario es enviada a través de la red al postmaster, el cual activa un nuevo proceso servidor y conecta el proceso cliente con el nuevo servidor. Desde ese momento el proceso cliente y el proceso servidor se comunican sin intervención del postmaster. De esta forma, el postmaster está siempre en ejecución, en espera de peticiones de usuarios. La librería libpq permite que una aplicación cliente se conecte con varias aplicaciones servidor.
Una consecuencia de la arquitectura es que el postmaster y los procesos servidores se ejecutan siempre en la misma máquina, mientras que las aplicaciones cliente pueden ejecutarse en diferentes sitios.
Administración¶
Una vez instalado el SGBD, el único usuario que hasta este momento puede trabajar con las bases de datos es el administrador. El administrador es el encargado de crear nuevos usuarios, asignar espacio en disco y controlar el acceso a las bases de datos; además es el propietario de los ficheros de configuración, de forma que sólo él podrá manipularlos.
Creación de usuarios¶
La forma que tiene el administrador de crear usuarios es mediante el script createuser. El nuevo usuario debe pertenecer al sistema.
Una vez creados los usuarios el administrado debe decidir a qué bases de datos puede conectarse, esto se hace mediante el fichero de configuración $PGDATA/pg_hba.conf.
Eliminación de usuarios¶
Para eliminar usuarios se ejecuta el script destroyuser con el nombre del usuario a eliminar.
Creación de bases de datos¶
Para crear una base de datos se ejecuta el script createdb con el nombre de la nueva base a crear.
Borrado de bases de datos¶
Para eliminar una base de datos es suficiente con ejecutar el script destroydb junto con el nombre de la base de datos que vayamos a borrar.
Conexión a una base de datos¶
La conexión a una base de datos se realiza con psql seguido del nombre de la base de datos a la que se quiere acceder.
Creación de tablas¶
Se hace mediante la sentencia SQL create table, donde se debe especificar el nombre de la tabla, el nombre de los campos que la componen y los tipos de datos de dichos campos. Además, se le pueden asignar restricciones a los campos tales como no permitir valores nulos, que los valores introducidos pertenezcan a un rango determinado, etc. Hay que añadir también que campo o campos formarán la tabla primaria.
Configuración inicial. 4-5-02¶
He añadido el usuario roberto al grupo postgres, para poder utilizar la base de datos. (creo que no es necesario)
Existe un espacio reservado para almacenar las bases de datos en /var/lib/pgsql/data
Con el usuario postgres (su; su posgres) creo un nuevo usuario para utilizar la base de datos:
## createuser roberto
- Ahora puedo entrar a la base de datos con ## psql
Creación de la base de datos biblioteca¶
-
psql
-
createdb biblioteca
Las siguientes veces puedo entrar directamente a esta base de datos mediante psql biblioteca
Creación de las tablas¶
-
psql biblioteca
-
create table autores (
-
idAutor int,
-
nombreAutor char(30),
-
apellidosAutor char(60)
-
);
Copia de los datos a las tablas¶
Los datos los he exportado desde access a ficheros de texto. Como delimitador se debe poner tabulador, y no se deben poner comillas. Hay que elegir como juego de caracteres Europeo Occidental (ISO).
Además el formato de fecha debe ser
Después desde linux hay que convertir los ficheros al formato unix (por la terminación de los finales de línea) mediante dos2unix
La copia no la puedo hacer con usuario normal (roberto), sino con el superusuario (postgres).
Se hace mediante:
autores from ’/home/roberto/biblioteca/Autores.txt’ using delimiters ’;’
si el delimitador fuese un ;
Lo mejor es poner como delimitador un tabulador al exportar desde access, y no hay que hacer nada más.
-
Sistema gestor de bases de datos relacional ↩