Introducción a PostgreSql

26
Introducción a PostgreSQL A.U.S. - D.B.A. Martín Gomez [email protected]

description

Introducción a PostgreSql - ORDBMS

Transcript of Introducción a PostgreSql

Page 1: Introducción a PostgreSql

Introducción a PostgreSQL

A.U.S. - D.B.A. Martín [email protected]

Page 2: Introducción a PostgreSql

AgendaQue es?Propiedad ACIDCaracterísticas AvanzadasInstalaciónAdministraciónObjetosTipos de DatosFuncionesLenguajes proceduralesSQL y Tips

Page 3: Introducción a PostgreSql

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.

Page 4: Introducción a PostgreSql

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

Page 5: Introducción a PostgreSql

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.

Page 6: Introducción a PostgreSql

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

Page 7: Introducción a PostgreSql

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);

Page 8: Introducción a PostgreSql

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

Page 9: Introducción a PostgreSql

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

Page 10: Introducción a PostgreSql

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;

Page 11: Introducción a PostgreSql

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

Page 12: Introducción a PostgreSql

PgAdmin

Page 13: Introducción a PostgreSql

Tipos de datosNativos Numéricos Monetarios Texto Binarios Date/Time Boolean Network Address XML type .....

Soporta tipos definidos por el usuario

Page 14: Introducción a PostgreSql

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);

Page 15: Introducción a PostgreSql

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

Page 16: Introducción a PostgreSql

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

Page 17: Introducción a PostgreSql

SQL

Lenguaje de Definición de Datos (ddl)

Lenguaje de Manipulación de Datos (dml)

Page 18: Introducción a PostgreSql

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 ...

Page 19: Introducción a PostgreSql

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;

Page 20: Introducción a PostgreSql

Muestra de ejemplos de Script's

Page 21: Introducción a PostgreSql

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.

Page 22: Introducción a PostgreSql

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

Page 23: Introducción a PostgreSql

Parte II

Page 24: Introducción a PostgreSql

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

Page 25: Introducción a PostgreSql

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'

Page 26: Introducción a PostgreSql

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