Introduccin a PostgreSQL
Agenda
Que es? Propiedad ACID Caractersticas Avanzadas Instalacin Administracin Objetos Tipos de Datos Funciones Lenguajes procedurales SQL y Tips
Que es? (1)
PostgreSQL es un sistema de administracin de base de datos objecto-relacional (ORDBMS) Basado en POSTGRES, Versin 4.2, Soporta gran parte del estndar SQL y ofrece nuevas caractersticas
Consultas complejas Integridad referencial Triggers Vistas Control de concurrencia Propiedades ACID.
Que es? (2)
Puede ser extendida Tipos de datos Funciones Operadores Lenguaje procedural
por el usuario:
Posee licencia BSD. Puede ser usada modificada y distribuida libremente sin cargo para cualquier propsito
Propiedad ACID
Atomicidad: Los cambios de estado provocados por una transaccin son atmicos. Consistencia: Una transaccin es una transformacin de estado correcta. Aislamiento (Isolation): Cada transaccin debe ejecutarse en forma aislada sin importar que haya concurrencia. Durabilidad: Una vez que una transaccin ha finalizado con xito, todos los cambios perduraran.
Caractersticas Avanzadas
Vistas Consultas almacenadas como meta-datos Integridad Referencial Claves forneas Transacciones Bloque de actualizacin. Varias actualizaciones o ninguna.
Ejemplo: Transferencia bancaria.
Herencia Soporta herencia de tablas
Herencia
Ejemplo:
Sin Herencia CREATE TABLE capitals ( name text, population real, altitude int, -- (in ft) state char(2) ); CREATE TABLE non_capitals ( name text, population real, altitude int -- (in ft) ); Con Herencia CREATE TABLE cities ( name text, population real, altitude int -- (in ft) ); CREATE TABLE capitals ( state char(2) ) INHERITS (cities);
Instalacin
Multiplataforma Link: http://www.postgresql.org/download/
Windows: .exe o .msi Linux (src): .tar.gz Linux (debian): .deb o apt-get Linux (Red Hat): .rpm o yum Open Solaris: Package Manager FreeBSD Mac OS X
Administracin
psql:
Herramienta de administracin de lnea de comandos.
# psql # psql -U username # psql -d bdname -U username
Creacin de Base de datos psql> create database nombrebd -t template1 Creacin de Roles psql> create role nombreRol Creacin de Usuarios psql> create user nombreUsuario
Administracin (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 organizacin y administracin.
Crear
una base de datos para un usuario
psql> create database nombrebd owner nombreusuario;
Herramientas grficas
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 importacin y exportacin en varios formatos
PgAdmin
Tipos de datos
Nativos Numricos Monetarios Texto Binarios Date/Time Boolean Network Address XML type .....
Soporta tipos definidos por el usuario
Funciones
Desarrollando en la base. Sigue filosofa java. Todo es funcin. 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);
Lenguajes procedurales
Sin duda una gran ventaja es poder programar en multiples lenguajes. Permite reutilizar cdigo pl/pgsql
Programacin en postgresql
pl/tcl Programacin en C pl/perl Programacin en perl pl/python Programacin en Python
Restricciones
Aseguran Ayudan
la consistencia de la base de datos
a que se cumplan las reglas del negocio.
Tipos: Claves primarias Claves nicas Claves forneas
SQL
Lenguaje
de Definicin de Datos (ddl)
Lenguaje
de Manipulacin de Datos (dml)
Lenguaje de Definicin de Datos (ddl)
Todo lo Tablas
que sean objetos de base de datos
Restricciones
Create table tablename (col1 datatype); Alter table tablename add constraint .... Create view viewname as (select col1 from tablename); Create or replace function (par1 datatype,...) return void; Create trigger ...
Vistas
Funciones Triggers
Lenguaje de Manipulacin de Datos (dml)
Insercin de datos Insert into tablename(col1,...) values (val1,...); Eliminacin de datos Delete from tablename where col1=val1; Actualizacin de datos Update tablename set col1=val2 where col1=val1;
Muestra de ejemplos de Script's
SQL - Tips
select *... Ventaja:
Desventajas:
Selecciona todas las columnas de una tabla. til solo cuando no se conoce o no se recuerda la estructura de una determinada tabla. 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. Nombrar todas las columnas que deben ser retornadas.
Recomendacin
SQL Tips (2)
Utilizacin
select
nombre from tabla1, tabla2;
de alias
No
puede determinarse a que tabla corresponde la columna nombre
select
t1.nombre,t2.nombre from tabla1 t1, tabla2 t2 where t1.id=t2.id;
Simplicidad Facil lectura Correctamente
realizada
Parte II
Seguridad
Seguridad Otorgar permisos a usuarios Otorgar permisos a roles Modos de conexin Confiable (trust) Cifrada (md5) Modo de Local Remoto
(arch. pg_hba.conf)
Servidor (arch. postgres.conf)
Archivos de PostgreSQL
pg_hba.conf
# TYPE DATABASE host all host all host all USER all all all IP-ADDRESS 127.0.0.1 192.168.11.0 192.168.12.0 IP-MASK METHOD 255.255.255.255 trust 255.255.255.0 md5 255.255.255.0 reject
postgres.conf
#listen='*' listen='localhost'
Backup y restauracin
Backup pg_dump:
Utilidad para realizacin de backup de una base de datos
pg_dumpall:
http://www.postgresql.org/docs/8.3/static/app-pgdump.html
Utilidad para realizacin 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