Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción A PostgreSQL
Introducción A PostgreSQL
History!
1977-1985 Michael Stonebraker Inicia postgreSQL como Ingres en la Universidad de Berkeley, California. 1986, comprado por Computer Associates. 1989, Liberada la primera versin como Postgres. 1994-95 dos estudiantes graduados de Berkeley Jolly Chen y Andrew Yu aaden SQL a Postgres y lo llaman Postgres95. 1996, (1000 colaboradores) Se decidi quitar el 95 al nombre para liberarse de la cronologa y nace PostgreSQL. Ultima version al momento 8.3.7, 8.4 en test y 8.5 en desarrollo.
Presentacin
Es el SGBD Open Source mas potente del mercado. Posee casi 30 aos de desarrollo. Licencia BSD de Berkeley. Esta en la vanguardia de la investigacion en al tecnologa transaccional. Es ACID. Es segura. Tiene alternativas comerciales de muchsima calidad. Ej: EnterpriseDB, CyberTech(Alemania), etc. Tiene otras alernativas (forks) FastDB, Bizgres, etc.
Presentacin
Es un motor Objeto-Relacional [*]. Cliente/servidor Extensible Multiples conectores desde lenguajes de programacin. Lenguaje procedimental propio (PL/pgsql) y extendido (PL/PERL, PL/PYTHONu, PL/JAVA, PL/RUBY, PL/R, C, C++...)
Presentacin
Puede conectarse por OBDC, OLE DB y JBDC, adems de los conectores propios de cada lenguaje.
Cocomo de papel !
[*]
El estandar SQL:2003 define las siguientes caractersticas que se peuden implementar en las bases Objeto relacionales:
Rowtype Tipos definidos y rutinas por usuario. Poliformismo Herencia Tipos de referencia e identidad de objetos (el OID es uno de ellos) Tipos de coleccin (ARRAY, MULTISET, SET, LIST) Amplaicin del SQL para hacerlo computacionalmente completo. Soporte para objetos de gran tamao (BLOB y CLOB) Recursin.
Sistemas De archivos
ad d i oc l e v
SGBD OO DB4O
or n Me ad d i oc l e v
Derby
r o y Ma
Arquitecturas comunes
Backend Proceso Backend Cliente Cliente ...
Archivo/s
Servidor
Datos
Derby BerkeleyDB
Caractersticas Ppales.
El modelo es de cliente/servidor (hoy en da el ms comn, pero no el nico). Su lenguaje procedimental es muy similar al PL de Oracle, logrando una migracin mas amena. Se adapta a los standares SQL:2003. Posee MVCC (Multi-Version Concurrency Control). Fue una de las pioneras (la primera fue InterBase) Posee WAL (Write Ahead LOG). Herencia de tablas. Puntos de recuperacion avanzados (savepoints, replicacion asincronica) Optimizador de consultas.
Caracteristicas Ppales.
Juegos de caracteres internacionales UNICODE e internacionalizacin. Tipo de tablas BerkeleyDB (las puede usar Mysql).
Adicionales
Tipos de datos accesorios:
Nmeros de presicin arbitraria (creando numeros ms complejos) Text de largo ilimitado. Figuras geometricas, con funciones asociadas. IpV4 y 6. Mac Address. Arrays. Postgis (necesita un captulo aparte).
Lmites
Maximo de la BD: ilimitado. De Tablas: 32 TB. De tupla: 1.6 TB. De campo: 1 GB Tuplas x tabla: ilimitado. ndices por tabla: ilimitado.
70
60
50
40
30
20
10
Indices
Pueden ser definidos por el usuario:
Binary Tree, hash, GIN y Gist.
Basados en expresiones. parciales bitmaps.
Avanzadas
Restricciones Referential Integrity Constraints. Evita dropeos accidentales. Transacciones BEGIN END- SAVEPOINTS. Anidacion de consultas avanzada. Conexiones encriptadas via SSL. Dominios, clustering, tablaspaces. TOAST (atributos comprimidos largos)
Estructura
Arquitectura de servicios
Aplicacion Postgres
postmaster
psql
Postgres
Servidor
Cliente
PostMaster
Proceso principal. Se maneja como un servicio de sistema. Levanta la memoria compartida. Vigila solicitudes y esta al tanto de los movimientos. Realiza el enlazado a los archivos de datos. puede manejar varias bases de datos y usuarios. Uno x CLUSTER.
Conexiones
La comunicacion entre Back y front se realiza mediante sockets a traves del puerto 5432 (por defecto). Generalmente el archivo es /tmp/s.PGSQL.5432.
Jerarquia de Objetos
Servidores
Bases de datos
Cast Lenguajes Esquemas ... Replicacion
Tablas Vistas Tipos Funciones Sequences Funciones y Triggers Dominios F. Agregacin y conversiones Operadores
Instalacin
Instalacin Recomendada
En linux a traves de RPM o APT-GET (Ej: rpm -i postgresql-8.3.rpm o apt-get install postgresql-8.3).
En Windows tiene un asistente: PgInstaller: traducido al espaol, customizable (instalacin silenciosa), paquete MSI: embebible en otros instaladores
Ambos tienen el StackBuilder (apache, php, etc.). Soporta Win, Linux y MacOS.
pg_ctl
start stop (pg_ctl stop -m s[mart] f[ast] i[nmediate]) status restart kill register y unregister ps -ef |grep postgres .... ps -A |grep postgres
Arranque automatico
copiar el script de postgresql de las contrib a et/init.d/ chmod a+x postgresql-8.3 ln -s /etc..sql /etc/rc3.d/S12postgresql idem K02 o en debian con: update-rc.d postgresql defaults 98 02
Archivos
postgresql.conf pg_hba.conf pg_ident.conf main.pid (solo contiene el pid del proceso) (son iguales tambien en windows) Las rutas dependen mucho del paquete de instalacion, por defecto compilando desde fuentes es /usr/local/pgsql
postgresql.conf
Principales: listen_addresses='*' port max_connections ssl max_stack_depth=2048 (pila) log_destination=stderr log_rotatio_age log_rotation_size vacuum cliente
pg_hba.conf
Controla accesos de users desde ip's Tipos de conexiones TRUST, REJECT, MD5, PASSWD, CRYPT, KRB5....
TYPE-DATABASE-USR-ADDRESS-METHOD local all all 127.0.0.1/32 md5 local all all 0.0.0.0 ident sameuser
Servidores Dedicados
$sysctl -w vm.overcommit_memory=2 es por que el kernel 2.4 y superior mata al postmaster... Se recomienda que los procesos tengan prioridad -10 o mayor. Backups ! PITR, pg_dump, mirroring
ACID
Que es?
[A]tomicidad (transacciones indivisibles) [C]onsistencia [I]solation ,aislamiento (no se pueden ver entre transacciones) [D]urabilidad: exito de una transaccion que perdura.
Solucion [C]
A partir de 7.*, gestor de integridad:
not null check unique primary key fk -match full y partial
Solucion [I]
MVCC
Solucion [D]
WAL (write Ahead Log) /var/pg_xlog Acelera los tiempos de commit y de insercion y update.
Monitoreo basico
Monitor
A traves de ps o top, free, vmstat, iostat. Para poder realizar estadisticas desde el catalogo debe estar activo el recolector de estadisticas en el postgresql.conf. tablas de catalogo: pg_stat_activity pg_stat_database pg_stat_all_databases pg_stat_all_indexes pg_locks ....
Ingreso
La autenticacion puede ser configurada a traves de los archivos pg_hba.conf y pg_ident.conf. Estos controlan y realizan el nexo con entre los usuarios del sistema operativo y la base de datos. postgres$psql -Upostgres -Ddatabase Se recomienda el ident en sameuser.
desde afuera...
psql -l -Upostgres (lista las bases) psql template1 postgres -A -t -c select * from pg_database where encoding = 6 | while read D; do (tira el result set a $D)
[Meta]comandos
\c (conecta con otra base) \? \h <comando sql> \l (lista bases) \d[t|i|s|S|v] \o (redirecciona output) \H (html) \i (ejecutar comandos desde archivos)
Referencias:
Bibliografia Recomendada
Practical Postgresql (www.commandprompt.org)
Ud. ya conoce Postgresql. Que tal si lo prueba? Gracias por quedarse en su asiento SIN arrojar zapatos al disertante.
file:///media/KINGSTON/PGDAY_JUNIN/INTRO_POSTGRES/unnoba.JPG