Você está na página 1de 36

PostgreSQL

Jornadas del sur

Baha Blanca, 15 de agosto 2009

PostgreSQL
Historia
Ingres en la Universidad de Berkeley, Michael Stonebraker (1977). Primeros intentos de crear un motor de BD relacional. Post-ingres, comprenda la incapacidad de estos modelos para comprender tipos mas complejos (mas tarde los llamaron objetos). 1988 . Versin estable 1995. Integran SQL y liberan Postgres95 1996. Se suman desarrolladores ajenos a la universidad (Bruce Momjian, Marc Fournier) y estabilizan el cdigo. As naci PostgreSQL !! PostgreSQL est ampliamente considerado como el sistema de bases de datos de cdigo abierto ms avanzado del mundo. Que pasaba en el mundo ??? - 1976. System R: Relational Approch to database Management . - Un tal Larry Ellison (Dueo de ORACLE) lee varios paper's relacionados. - 1977 primer versin de Oracle. - 1982 primer versin de DB2. - 1995, MySQL AB crea MySQL. - Base de datos de juguetes para los fanas de PostgreSQL
Jornadas del sur - PostgreSQL
No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Soporte de la comunidad

PostgreSQL se ha convertido en el RDBMS open source mas potente de la actualidad. La comunidad PostgreSQL proporciona un activo soporte a los usuarios de PostgreSQL. Listas de correos (pgsql-general, pgsql-hackers, etc) y WIKI Varios libros y manuales. Versiones
- Versionado de tres dgitos. - <Mayor>.<Nuevas Prestaciones>.<Patches> - 8.4.0. , 8.3.7, 8.2.11 ...

- Versin 7.4 (2003-11-17) - La primer versin que la industria tomo. - Versin 8.0 - 8.0.21 (2009-03-17) - Microsoft Windows Native Server, antes requera emularlo Linux. - Savepoints,Tablespace - Alrededor de 200 cambios sustanciales - Muchos cambios para aumentar la performace

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Versiones

Versin 8.1 (2005-11-08), - 8.1.17 (2009-03-17) - Commit de dos faces - Mejoras al acceso concurrente - Manejos de roles y usuarios - Se integraron contribs al core (pg_autovacuum) - ~= 300 cambios importantes. Versin 8.2 (2006-12-05) 8.2.13 (2009-03-17) - Incrementaron 5x la velocidad de joins - Mas performance en accesos concurrente - Reducen el uso de lock - Cambios en el core (+ robusto) - ~= 350 cambios importantes Versin 8.3 (2008-02-04) - 8.3.1 (2008-03-17) - Muchos cambios para aumentar performance. - ~= 500 cambios importantes por integrantes de 18 paises

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Versiones

Versin 8.1 (2005-11-08), - 8.1.17 (2009-03-17) - Commit de dos faces - Mejoras al acceso concurrente - Manejos de roles y usuarios - Se integraron contribs al core (pg_autovacuum) - ~= 300 cambios importantes. Versin 8.2 (2006-12-05) 8.2.13 (2009-03-17) - Incrementaron 5x la velocidad de joins - Mas performance en accesos concurrente - Reducen el uso de lock - Cambios en el core (+ robusto) - ~= 350 cambios importantes Versin 8.3 (2008-02-04) - 8.3.1 (2008-03-17) - Muchos cambios para aumentar performance. - ~= 500 cambios importantes por integrantes de 18 paises

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Versiones

Versin 8.4 (2009-07-21) - Restauracin de base de datos en procesos paralelos, que acelera la recuperacin de un respaldo hasta 8 veces. - Privilegios por Columna, que permiten un control ms granular de datos confidenciales. - Configuracin de ordenamiento configurable por base de datos, lo cual hace a PostgreSQL ms til en entornos con mltiples idiomas. - Actualizaciones en el lugar desde 8.3 a 8.4 con muy bajo downtime, gracias al uso de pg_migrator beta. - Nuevas Herramientas para Monitoreo de Consultas que le otorgan a los administradores mayor informacin sobre la actividad del sistema. - ANSI SQL:2003 - ~= 450 cambios importantes

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Prestaciones
Altamente Extensible - PostgreSQL soporta creacin de operadores, mtodos de acceso y tipos de datos definidos por el usuario. - PostGIS, aade mas soporte para tipos creados por el usuario y GeoEspaciales Soporta especificacin SQL2003 Integridad Referencial API Flexible - Java/JDBC , Object Pascal, Python, Perl, PHP, ODBC, Ruby, TCL, C/C++, y Pike MVCC (Multi-Version Concurrency Control) - Evita bloqueos innecesarios. - Opera a nivel de transacciones (diferentes visiones de la db).

Diferentes tipos de isolation levels Cursores


Lenguajes soportados - SQL (Por default, instalado en todas las BD) - PL/pgSQL - C (Por default, instalado en todas las BD) - Tcl ,Perl,Python,Lua

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Prestaciones

Write Ahead Logging (WAL) - Registro de cambios antes de que estos sean escritos en la base de datos. - Permite PITR - Point in Time Recovery - Existe un registro de las transacciones a partir del cual podremos restaurar la base de datos. - Cualquier cambio que no fue escrito en la base de datos pueden ser recuperado usando el dato que fue previamente registrado.

EXPLAIN
- Muestra el plan de ejecucin de la consulta que el planificador genera, algoritmos para la unin, bsqueda secuencial o por ndice .. etc . - SQL es declarativo, especifica el QUE y no el COMO. - Existen equivalencias en SQL (joins) - Predicados en diferentes ordenes - Plan con menor costo.

- En pseudocdigo seria ...


- Enumerar todos los planes. - Calcular el costo de cada plan. - Elegir el mejor.

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Otros RDBMs

Definimos como un buen RDBMS, aquel que a medida que lo exigimos... , responde.

PostgreSQL Oracle,DB2, SQLServer (+/-)

Mysql,Informix,, Firebird (Borland-liberado)

Bases de datos embebidas (SQLite, Derby), Access

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Arquitectura

Postmaster

Server

Memoria compartida

Backend

Backend

Backend

Client

Frontend

Frontend

Frontend

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

Arquitectura

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Arquitectura

PostgreSQL es multiproceso Cada cliente interacta con backend que fue forkeado desde postmaster Memoria compartida FyleSystem de terceros (ext3,reiserfs,fat, etc)

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Instalacin

Ya compilado e instalado. Que hacemos ? Debemos crear el cluster Al instalarse, por default, crea el usuario postgres initdb Crea un cluster vaco para alocar las bases de datos. -D PATH (donde PATH es lugar donde se va a alocar las bd) Cuidado con los encoding !

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

Administracin del servidor

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Directorios

Cluster Directory

/var/lib/pgsql/data (depende de la distribucin)

Server

Base

pg_clog

Global

pg_xlog

1 (Template0)

1658 (MyDB)

transaction commit status data

WAL

1247 (pg_type) 1249 (pg_attribute) 1255 (pg_size)

1698 (customer) 1699(staff) 1170 (people)

980 (pg_group) 981 (pg_shadow) 982 (index)

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Directorios

Configuracin del server - Al modificarlo es necesario reiniciar el servicio o SELECT pg_reload_conf(); Usualmente en $PG_DATA, o depende de la distribucin. (Ubuntu,
/etc/postgresql/<version>/main)

Optimizaciones, memoria, disco logging, Query planner - Optimazer ssl, puerto, conexiones externas WAL y muuuuuuchas cosas mas

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Usuarios Separados de usuarios UNIX. Cada BD tiene un dueo. Usuarios y grupos Super-usuario acceso a todo. Nunca usar postgres ni root !!! SQL CREATE USER, desde cualquier cliente PosgreSQL.
CREATE USER salesuser WITH PASSWORD '0303456' VALID UNTIL '2002-11-11';

createuser desde una consola. createuser newuser -P

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Accesos pg_hba.conf Usualmente $PG_DATA/pg_hba.conf. (En Ubuntu, /etc/postgresql/<version>/main) Configuracin de autenticacin Discrimina por Direccin de IP (del cliente). Base de datos Nombre de usuario Mtodo de autenticacin
-

Sintaxis <modo> <db> <user> [ipadd] [mask] <metodo> [params] Modo local: conexiones locales (Sockets) host: conexiones TCP/IP de los clientes (SSL y no SSL) hostssl: conexiones TCP/IP (solo SSL) hostnossl: conexiones TCP/IP (sin SSL)

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Accesos
db All : se puede conectar a cualquier base de datos. SameUser: Especifica que el cliente slo puede conectarse a una base de datos en la que coinciden los nombre de usuarios autenticados de los clientes name: Nombre de una base de datos . @file: lista de bases de datos en $PG_DATA Ip_addr, netmask Especifican una direccin IP, o rango de direcciones, que estn autorizadas a conectar al servidor PostgreSQL. 192.168.0.100/32 (solo los usuarios con la IP 100) 192.168.0.100/24 (mask , 255.255.255.0) Mtodos de autenticacin Trust, Confiar en todo el mundo Password,password en texto plano Crypt,password cifrada con crypt MD5,krb4,krb5

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Accesos - ejemplo

host all all 127.0.0.1

trust

Acceso: SSL y no SSL Address : loopback TPC/IP connections BD: todas Usuario: todos

Autenticacion: ninguna

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Accesos - ejemplo

local all all

trust

Acceso: local Address : Unix domain sockets BD: todas Usuario: todos

Autenticacin: ninguna

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Accesos - ejemplo

host testdb all 192.168.1.3 md5

Acceso: SSL y no SSL Address : solo usuarios de 192.168.1.3 BD: solo testdb Usuario: todos Autenticacin: MD5

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Accesos - ejemplo

hostssl testdb @admins 192.168.1.3/24 md5

Acceso: solo SSL Address : usuarios de la subred 192.168.1.X BD: solo testdb Usuario: lista de administradores en $PG_DATA/admins Autenticacin: MD5

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Accesos - ejemplo

host

all

all

192.168.1.1/24

reject

Acceso: SSL y no SSL Address : usuarios de la subred 192.168.1.X BD: todas Usuario: todos Autenticacin: los ignora

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Clientes

Interactuar con PostgreSQL - psql - Pgadmin3 (M$ y Linux) - Phppgadmin PSQL Monitor interactivo de PostgreSQL, incluido en la distribucin oficial. Ingresar consultas interactivamente Examinar resultados Experimentar con SQL Crear objetos Examinar catlogos del sistema Recuperar respaldos, Mantenimiento (cron)

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Psql

psql [dbName [user]]

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Psql Comandos backslash \? , ayuda \h , ayuda SQL \o , archivo de salida (output) \i FILE , lee comandos desde un archivo \d , lista los objetos \l , lista las bases de datos \q, sale de psql

Variables de entorno $PGUSER, usuario de BD $PGDATABASE, BD a conectarse $PGPASSWORD $PGHOST $PGPORT, por default es 5432

PGUSER=user && PGDATABASE=mydb && PGPASSWORD=0303456 && PGHOST=localhost && PGPORT=5432 && psql

psql -d mydb -U user -h localhost -p 5432 -W 03030456

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Psql - ejemplo

psql -h 192.168.1.2 -p 8000 -d mydb -U otroUsuario psql -c SELECT * FROM _persona -d mydb

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Psql - ejemplo

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Psql - ejemplo

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Psql - ejemplo

Cliente visual desktop Multiplataforma. Mucha documentacin

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
PHPpgadmin
Cliente escrito en PHP Necesita un apache Para instalaciones en server anda perfecto. Permite mltiples cluster.

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
PHPPgadmin - reportes

Por default esta desactivado SQL's que ejecutamos frecuentemente

Ejemplo: Consultas de procesos con lock Quien esta accediendo en este momento a la base de datos X

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
PHPpgamin

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL
Referencias

Wiki espaol http://wiki.postgresql.org/wiki/Espa%C3%B1ol Wiki oficial http://wiki.postgresql.org/wiki/Main_Page PostgreSQL http://www.postgresql.org/ Pgadmin http://www.pgadmin.org/ PHPpgamin http://phppgadmin.sourceforge.net/

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

PostgreSQL

Preguntas ???

Jornadas del sur - PostgreSQL


No imprima este documento si no es necesario. Protejamos el medio ambiente.

Você também pode gostar