Post on 13-Jun-2015
description
Introducción a PostgreSQL
A.U.S. - D.B.A. Martín Gomeztinchogomez@gmail.com
AgendaQue es?Propiedad ACIDCaracterísticas AvanzadasInstalaciónAdministraciónObjetosTipos de DatosFuncionesLenguajes proceduralesSQL y Tips
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.
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
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.
Características AvanzadasVistas 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
HerenciaEjemplo:
Sin Herencia Con HerenciaCREATE 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));
CREATE TABLE cities ( name text, population real, altitude int -- (in ft));
CREATE TABLE capitals ( state char(2)) INHERITS (cities);
Instalación
MultiplataformaLink: 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
Administraciónpsql: Herramienta de administración de línea
de comandos.# psql# psql -U username# psql -d bdname -U username
Creación de Base de datospsql> create database nombrebd -t template1
Creación de Rolespsql> create role nombreRol
Creación de Usuariospsql> create user nombreUsuario
Administración (1)Rol: Entidad que puede poseer objetos de base de
datos y privilegiosUsuario: 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;
Herramientas gráficasPgAdmin 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
PgAdmin
Tipos de datosNativos Numéricos Monetarios Texto Binarios Date/Time Boolean Network Address XML type .....
Soporta tipos definidos por el usuario
FuncionesDesarrollando 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);
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
RestriccionesAseguran la consistencia de la base de datos
Ayudan a que se cumplan las reglas del negocio.
Tipos: Claves primarias Claves únicas Claves foráneas
SQL
Lenguaje de Definición de Datos (ddl)
Lenguaje de Manipulación de Datos (dml)
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 ...
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;
Muestra de ejemplos de Script's
SQL - Tipsselect *... 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.
SQL – Tips (2)Utilización de aliasselect nombre
from tabla1, tabla2;
select t1.nombre,t2.nombre
from tabla1 t1, tabla2 t2where t1.id=t2.id;
No puede determinarse a que tabla corresponde la columna nombre
SimplicidadFacil lecturaCorrectamente realizada
Parte II
SeguridadSeguridad 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
Archivos de PostgreSQL
pg_hba.conf# TYPE DATABASE USER IP-ADDRESS IP-MASK METHODhost all all 127.0.0.1 255.255.255.255 trusthost all all 192.168.11.0 255.255.255.0 md5host all all 192.168.12.0 255.255.255.0 reject
postgres.conf#listen='*'listen='localhost'
Backup y restauraciónBackup 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