introducción a postgresql - software libre
TRANSCRIPT
![Page 1: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/1.jpg)
Introducción a Postgresql
![Page 2: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/2.jpg)
History! 1977-1985 Michael Stonebraker Inicia postgreSQL como Ingres en la
Universidad de Berkeley, California.
1986, comprado por Computer Associates.�
1989, Liberada la primera versión como Postgres.
1994-95 dos estudiantes graduados de Berkeley Jolly Chen y Andrew Yu añaden SQL a Postgres y lo llaman Postgres95.
1996, (1000 colaboradores) Se decidió quitar el 95 al nombre para liberarse de la cronología y nace PostgreSQL.
Ultima version al momento 8.3.7, 8.4 en test y 8.5 en desarrollo.
![Page 3: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/3.jpg)
PresentaciónEs el SGBD Open Source mas potente del mercado.
Posee casi 30 años de desarrollo.
Licencia BSD de Berkeley.
Esta en la vanguardia de la investigacion en al tecnología transaccional.
Es ACID.
Es segura.
Tiene alternativas comerciales de muchísima calidad. Ej: EnterpriseDB, CyberTech(Alemania), etc.
Tiene otras alernativas (forks) FastDB, Bizgres, etc.
![Page 4: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/4.jpg)
Presentación
Es un motor Objeto-Relacional [*].
Cliente/servidor
Extensible
Multiples conectores desde lenguajes de programación.
Lenguaje procedimental propio (PL/pgsql) y extendido (PL/PERL, PL/PYTHONu, PL/JAVA, PL/RUBY, PL/R, C, C++...)
![Page 5: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/5.jpg)
Presentación
Puede conectarse por OBDC, OLE DB y JBDC, además de los conectores propios de cada lenguaje.
¡ Cocomo de papel !
![Page 6: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/6.jpg)
[*]
El estandar SQL:2003 define las siguientes características 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 colección (ARRAY, MULTISET, SET, LIST)
Amplaición del SQL para hacerlo computacionalmente completo.
Soporte para objetos de gran tamaño (BLOB y CLOB)
Recursión.
![Page 7: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/7.jpg)
[*] El punto de vista de Stonebraker
CapacidadesDe búsqueda/soportemultiusuario
Complejidad de los datos y ampliabilidad
SistemasDe
archivos
SGBD relacional
SGBD O-R
SGBDOO
Derby
Mysql Postgresql
DB4O
Mayor velocidad
Menor velocidad
![Page 8: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/8.jpg)
Arquitecturas comunes
Archivo/s
Datos
Servidor
Backend
Backend
ProcesoServidor /
Cluster de servidores
Cliente Cliente
Derby – BerkeleyDB
Mysql – Postgresql - Firebird
Oracle – DB2 - Greenplum
...
![Page 9: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/9.jpg)
Características Ppales.El modelo es de cliente/servidor (hoy en día el más común, pero no el único).
Su lenguaje procedimental es muy similar al PL de Oracle, logrando una migración 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.
![Page 10: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/10.jpg)
Caracteristicas Ppales.
Juegos de caracteres internacionales UNICODE e internacionalización.
Tipo de tablas BerkeleyDB (las puede usar Mysql).
![Page 11: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/11.jpg)
Adicionales
Tipos de datos accesorios:
Números de presición arbitraria (creando numeros más complejos)
Text de largo ilimitado.
Figuras geometricas, con funciones asociadas.
IpV4 y 6.
Mac Address.
Arrays.
Postgis (necesita un capítulo aparte).
![Page 12: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/12.jpg)
Límites
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.
![Page 13: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/13.jpg)
Rango de tamaño frecuente en comparación con otras BD
(Terabytes)
Mysql Postgresql Oracle Greenplum
0
10
20
30
40
50
60
70
Tamaño aproximadoTamaño aproximado
![Page 14: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/14.jpg)
Indices
Pueden ser definidos por el usuario:
Binary Tree, hash, GIN y Gist.Basados en expresiones.
parciales
bitmaps.
![Page 15: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/15.jpg)
AvanzadasRestricciones 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)
![Page 16: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/16.jpg)
Estructura
![Page 17: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/17.jpg)
Arquitectura de servicios
Aplicacion
Postgres
postmaster
psql
Postgres
![Page 18: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/18.jpg)
Ámbitos y Esquemas de Conexión
postmaster
backend
frontend
backend
frontend
frontend
Servidor Cliente
Tiempo
Inicio de Conexion
Auth
Query's
![Page 19: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/19.jpg)
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.
![Page 20: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/20.jpg)
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.
![Page 21: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/21.jpg)
Esquema Logico del cluster
Repositorio que engloba varias bases de datos.
Las bases de datos engloban un conjunto de esquemas, con 1 usuario minimo propietario.
La sesion se abre solo contra la Base de datos, no contra Cluster, ni esquemas, ni Tablas.
Por defecto se crean Template 0, ...1 y postgres.
Tablespaces no se crean por defecto.
Roles. usuarios. Son independientes del sistema.
![Page 22: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/22.jpg)
Jerarquia de Objetos
Servidores
Bases de datosCast
Lenguajes
Esquemas
...
Replicacion
Tablespaces.
Roles Group y User.
Tablas
Vistas
Tipos
Funciones
Sequences
Funciones y Triggers
Dominios
F. Agregación y conversiones
Operadores
![Page 23: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/23.jpg)
Instalación
¿Homo paquetus u Homo compilatus ?
![Page 24: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/24.jpg)
Instalación 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 español, customizable (instalación silenciosa), paquete MSI: embebible en otros instaladores
OneClickInstaller: más simple pero en ingles
Ambos tienen el StackBuilder (apache, php, etc.). Soporta Win, Linux y MacOS.
![Page 25: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/25.jpg)
Lo que hay que saber por si las...
#export PGDATA='/usr/local/postgresql/data'
#su postgres
/usr/lib/postgresql/<ver>/bin$initdb -l /var/log (...parametros extra)
SE CREA UN CLUSTER NECESARIO PARA ARRANCAR
#postmaster -D $PGDATA
o
#pg_ctl start & (para que quede en segundo plano)
![Page 26: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/26.jpg)
pg_ctlstart
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
![Page 27: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/27.jpg)
Arranque automaticocopiar 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
![Page 28: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/28.jpg)
Configuración y herramientas
principales
![Page 29: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/29.jpg)
Archivospostgresql.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
![Page 30: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/30.jpg)
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
![Page 31: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/31.jpg)
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
![Page 32: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/32.jpg)
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
![Page 33: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/33.jpg)
ACID
![Page 34: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/34.jpg)
¿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.
![Page 35: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/35.jpg)
Solucion para [A]
Sentencias de BEGIN, END, ROLLBACK, COMMIT y SAVEPOINT.
![Page 36: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/36.jpg)
Solucion [C]
A partir de 7.*, gestor de integridad:
not null
check
unique
primary key
fk -match full y partial
![Page 37: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/37.jpg)
Solucion [I]MVCC
![Page 38: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/38.jpg)
Solucion [D]WAL (write Ahead Log) /var/pg_xlog
Acelera los tiempos de commit y de insercion y update.
![Page 39: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/39.jpg)
Monitoreo basico
![Page 40: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/40.jpg)
MonitorA 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 ....
![Page 41: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/41.jpg)
Monitoreando I/O desde psql
SELECT relfilenode, relpages FROM pg_class WHERE relname='tabla'
SELECT ..... WHERE relname IN ('pg_toast_relfilenode','pg_toast','relfilenode') –desborde de TOAST.
![Page 42: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/42.jpg)
psql(herramienta cliente)
![Page 43: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/43.jpg)
El poder de la linea de comando...
El psql permite hacer absolutamente todo lo que se puede hacer con el Postgresql.
Inclusive, todo aquello que hacemos de forma grafica con el Pgadmin3.
![Page 44: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/44.jpg)
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.
![Page 45: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/45.jpg)
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)
![Page 46: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/46.jpg)
[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)
![Page 47: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/47.jpg)
Referencias:
¡Esta vez me tocabaa mi !
![Page 48: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/48.jpg)
Bibliografia Recomendada
Practical Postgresql (www.commandprompt.org)
www.postgresql.org/documentation
www.pgfoundry.org
www.planetpostgresql.org
wiki.postgresql.org
![Page 49: Introducción a Postgresql - Software Libre](https://reader036.vdocuments.us/reader036/viewer/2022070215/62bdbe18275f651ddf55493b/html5/thumbnails/49.jpg)
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