Este documento introduce PostgreSQL, un sistema de gestión de bases de datos objeto-relacional de código abierto. Explica las características principales de PostgreSQL como su propiedad ACID, características avanzadas como vistas e integridad referencial, e instalación, administración, objetos, tipos de datos, funciones y lenguajes procedurales. También cubre temas como seguridad, archivos clave y respaldos/restauraciones.
3. Que es? (1)
PostgreSQL es un sistema de administración
de base de datos objecto-relacional
(ORDBMS)
Basado en POSTGRES, Versión 4.2,
Soporta gran parte del estándar SQL y
ofrece nuevas características
Consultas complejas
Integridad referencial
Triggers
Vistas
Control de concurrencia
Propiedades ACID.
4. Que es? (2)
Puede ser extendida por el usuario:
Tipos de datos
Funciones
Operadores
Lenguaje procedural
Posee licencia BSD.
Puede ser usada modificada y distribuida libremente sin
cargo para cualquier propósito
5. Propiedad ACID
Atomicidad: Los cambios de estado
provocados por una transacción son
atómicos.
Consistencia: Una transacción es una
transformación de estado correcta.
Aislamiento (Isolation): Cada transacción
debe ejecutarse en forma aislada sin
importar que haya concurrencia.
Durabilidad: Una vez que una transacción ha
finalizado con éxito, todos los cambios
perduraran.
6. Características Avanzadas
Vistas
Consultas almacenadas como meta-datos
Integridad Referencial
Claves foráneas
Transacciones
Bloque de actualización. Varias actualizaciones o ninguna.
Ejemplo: Transferencia bancaria.
Herencia
Soporta herencia de tablas
7. Herencia
Ejemplo:
Sin Herencia Con Herencia
CREATE TABLE capitals ( CREATE TABLE cities (
name text, name text,
population real, population real,
altitude int, -- (in ft) altitude int -- (in ft)
state char(2) );
);
CREATE TABLE capitals (
CREATE TABLE non_capitals ( state char(2)
name text, ) INHERITS (cities);
population real,
altitude int -- (in ft)
);
9. Administración
psql: Herramienta de administración de línea
de comandos.
# psql
# psql -U username
# psql -d bdname -U username
Creación de Base de datos
psql> create database nombrebd -t template1
Creación de Roles
psql> create role nombreRol
Creación de Usuarios
psql> create user nombreUsuario
10. Administración (1)
Rol: Entidad que puede poseer objetos de base de
datos y privilegios
Usuario: Objecto que posee privilegios de acceso a la
base de datos.
Permisos: Acciones que el usuario o rol pueden
realizar.
Ventaja de Roles: Mejora la organización y
administración.
Crear una base de datos para un usuario
psql> create database nombrebd owner nombreusuario;
11. Herramientas gráficas
PgAdmin
OpenSource - BSD
Muy utilizado
Completa
PhpPgAdmin
Herramienta basada en web
OpenSource - GPL
EMS PostgreSQL Manager
Licencia – Costo (desde 60 U$S)
Completa
Funciones de importación y exportación en varios
formatos
13. Tipos de datos
Nativos
Numéricos
Monetarios
Texto
Binarios
Date/Time
Boolean
Network Address
XML type
.....
Soporta tipos definidos por el usuario
14. Funciones
Desarrollando en la base.
Sigue filosofía java.
Todo es función.
Un procedimiento almacenado retorna void
Se puede ejecuta con:
select nombreFuncion();
select nombreFuncion(p1);
Dentro de otras funciones se ejecuta:
perform nombreFuncion();
perform nombreFuncion(p1);
15. Lenguajes procedurales
Sin duda una gran ventaja es poder
programar en multiples lenguajes. Permite
reutilizar código
pl/pgsql
Programación en postgresql
pl/tcl
Programación en C
pl/perl
Programación en perl
pl/python
Programación en Python
16. Restricciones
Aseguran la consistencia de la base de datos
Ayudan a que se cumplan las reglas del
negocio.
Tipos:
Claves primarias
Claves únicas
Claves foráneas
17. SQL
Lenguaje de Definición de Datos (ddl)
Lenguaje de Manipulación de Datos (dml)
18. Lenguaje de Definición de Datos
(ddl)
Todo lo que sean objetos de base de datos
Tablas
Create table tablename (col1 datatype);
Restricciones
Alter table tablename add constraint ....
Vistas
Create view viewname as (select col1 from tablename);
Funciones
Create or replace function (par1 datatype,...) return void;
Triggers
Create trigger ...
19. Lenguaje de Manipulación de Datos
(dml)
Inserción de datos
Insert into tablename(col1,...) values (val1,...);
Eliminación de datos
Delete from tablename where col1=val1;
Actualización de datos
Update tablename set col1=val2 where col1=val1;
21. SQL - Tips
select *...
Ventaja:
Selecciona todas las columnas de una tabla. Útil solo cuando no se
conoce o no se recuerda la estructura de una determinada
tabla.
Desventajas:
Si se utiliza en grillas o reportes la cantidad de columnas crece o
decrece a medida que se agregan o eliminan columnas.
El orden de las columnas retornadas es determinado por el orden
de las columnas en el diccionario de datos.
Recomendación
Nombrar todas las columnas que deben ser retornadas.
22. SQL – Tips (2)
Utilización de alias
select Nopuede determinarse a
nombre
from tabla1, tabla2; que tabla corresponde la
columna nombre
select Simplicidad
Facil lectura
t1.nombre,t2.nombre
Correctamente realizada
from tabla1 t1, tabla2 t2
where t1.id=t2.id;
24. Seguridad
Seguridad
Otorgar permisos a usuarios
Otorgar permisos a roles
Modos de conexión (arch. pg_hba.conf)
Confiable (trust)
Cifrada (md5)
Modo de Servidor (arch. postgres.conf)
Local
Remoto
25. Archivos de PostgreSQL
pg_hba.conf
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host all all 127.0.0.1 255.255.255.255 trust
host all all 192.168.11.0 255.255.255.0 md5
host all all 192.168.12.0 255.255.255.0 reject
postgres.conf
#listen='*'
listen='localhost'
26. Backup y restauración
Backup
pg_dump:
Utilidad para realización de backup de una base de datos
http://www.postgresql.org/docs/8.3/static/app-pgdump.html
pg_dumpall:
Utilidad para realización de backup de todo el cluster de bases de
datos postgres
http://www.postgresql.org/docs/8.3/static/app-pg-dumpall.html
Restore
pg_restore
Utilidad para realizar restauraciones de una base de datos
http://www.postgresql.org/docs/8.3/static/app-pgrestore.html