# Formación PostgreSQL
## APSL
.fx: titleslide
---
# Agenda
* Introducción
* Historia
* Arquitectura
* Configuración
* postgresql.conf
* pg_hba.conf
* Instalación
---
# APSL
* Usamos PostgreSQL en producción desde versión 7.4 (2004).
* Usos Postgres:
* Tuning para arquitecturas Web
* Mejor Backend para ORM Django
* BD OpenERP
* Hot backups. PITR. Wal-e, Bacula/Bareos
* HA con pacemaker: Master/Slave replica.
* Los profes :P
* Edu Herraiz eherraiz@apsl.net
* Bernardo Cabezas bcabezas@apsl.net
* [http://cursos.apsl.net/postgresql](http://cursos.apsl.net/postgresql)
---
# PostgreSQL
PostgreSQL es un sistema de gestión de bases de datos objeto-relacional, distribuido bajo licencia BSD.
Características a destacar:
* Es una base de datos [ACID](http://es.wikipedia.org/wiki/ACID) *compilant*
* Integridad referencial
* Tablespaces
* Replicación asincrónica/sincrónica / Streaming replication - Hot Standby
* PITR - point in time recovery
* Copias de seguridad en caliente (Online/hot backups)
* Multi-Version Concurrency Control ([MVCC](http://es.wikipedia.org/wiki/Multiversion_concurrency_control))
* Multiples métodos de autentificación
* Actualización in-situ (pg_upgrade)
* Linux, UNIX (AIX, BSD, HP-UX, Mac OS X, Tru64), y Windows 32/64bit
* ...
---
# Historia
* Se inició como proyecto académico en Berkeley (1985), por Michael Stonebraker,
bajo el nombre de **Postgres**, y con licencia BSD.
* Se trabajó hasta 1994, hasta la versión 4, cuando el proyecto académico se disolvió.
* Postgres fué comercializado como *Illustra*, comprado por Informix e integrado
en su paquete *Universal Server*. Informix fué compardo por IBM en 2001.
* En 1995 retomaron el trabajo Andrew Yu y Jolly Chen para añadir soporte al lenguaje SQL, creando postgres95.
* En 1996 se introducen colaboradores fuera del ámbito universitario coordinandose por internet.
Se decide cambiar el nombre a PostgreSQL.
* Desde entonces, se ha seguido el desarrollo, y como la licencia lo permite,
muchas empresas se han involucrado en su comercialización. **The PostgreSQL Global Development Group** (PGDG)
---
# Historia
[PostgreSQL Storylines](http://www.michaelogawa.com/michael/projects/evolines/postgres.svg)
---
# Versiones y rendimiento
* Hay mejores alternativas para data warehouse (cambiando).
* Para BD sencillas sin integridad referencial, puede ser más rápida MySQL o incluso sqlite
* En medio de estos 2 extremos, es una de las mejores soluciones, y el cuello de botella será el hardware o la app.
---
# Versiones y rendimiento
[Postgres History](http://suckit.blog.hu/2009/09/29/postgresql_history)
* Conclusiones:
* Para mejorar rendimiento, antes de pensar en cualquier tipo de *tuning*: **Actualizar a la última Versión**
* Cualquier conclusión antigua sobre rendimiento, está desactualizada.
---
# Versiones
---
# Distribución PostgreSQL
* PosgreSQL distribuye sólo core y utilidades que sólo se pueden desarrollar como parte de la misma BD (psql).
* Si algo se puede mantener fuera del core, se mantiene como proyecto externo.
* *Major* versions:
* Normalmente, no compatibles hacia atrás.
* `pg_upgrade`
* **5 años** soporte.
* *Minor* versions:
* Actualización sencilla. Actualizar siempre a la última *minor* disponible.
---
# Distribución PostgreSQL
* PostgreSQL **contrib**
* Utilidades que no están instaladas por defecto. Desarrolladas y distribuidas con el *core*.
* Desde 9.1: `CREATE EXTENSION module_name;`
* [Lista contrib modules](http://www.postgresql.org/docs/9.3/static/contrib.html)
* PgFoundry
* *Home* de proyectos PostgreSQL.
* [pgfoundry.org](http://pgfoundry.org/)