Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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
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
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).
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.
PostgreSQL
Otros RDBMs
Definimos como un buen RDBMS, aquel que a medida que lo exigimos... , responde.
PostgreSQL
Arquitectura
Postmaster
Server
Memoria compartida
Backend
Backend
Backend
Client
Frontend
Frontend
Frontend
Arquitectura
PostgreSQL
Arquitectura
PostgreSQL es multiproceso Cada cliente interacta con backend que fue forkeado desde postmaster Memoria compartida FyleSystem de terceros (ext3,reiserfs,fat, etc)
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 !
PostgreSQL
Directorios
Cluster Directory
Server
Base
pg_clog
Global
pg_xlog
1 (Template0)
1658 (MyDB)
WAL
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
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';
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)
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
PostgreSQL
Accesos - ejemplo
trust
Acceso: SSL y no SSL Address : loopback TPC/IP connections BD: todas Usuario: todos
Autenticacion: ninguna
PostgreSQL
Accesos - ejemplo
trust
Acceso: local Address : Unix domain sockets BD: todas Usuario: todos
Autenticacin: ninguna
PostgreSQL
Accesos - ejemplo
Acceso: SSL y no SSL Address : solo usuarios de 192.168.1.3 BD: solo testdb Usuario: todos Autenticacin: MD5
PostgreSQL
Accesos - ejemplo
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
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
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)
PostgreSQL
Psql
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
PostgreSQL
Psql - ejemplo
psql -h 192.168.1.2 -p 8000 -d mydb -U otroUsuario psql -c SELECT * FROM _persona -d mydb
PostgreSQL
Psql - ejemplo
PostgreSQL
Psql - ejemplo
PostgreSQL
Psql - ejemplo
PostgreSQL
PHPpgadmin
Cliente escrito en PHP Necesita un apache Para instalaciones en server anda perfecto. Permite mltiples cluster.
PostgreSQL
PHPPgadmin - reportes
Ejemplo: Consultas de procesos con lock Quien esta accediendo en este momento a la base de datos X
PostgreSQL
PHPpgamin
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/
PostgreSQL
Preguntas ???