Anda di halaman 1dari 28

PostgreSQL

PostgreSQL Development Group


Edwin Quintero
William Len
Contenido
1. Que es?
2. Historia
3. Versiones
4. Escalabilidad y lmites
5. Motor de almacenamiento
6. Tipo de modelo usado
7. Soporte nativo
8. Caractersticas
9. Tipo de datos
10. Servidores
11. Licenciamiento
12. Ventajas
13. Desventajas
14. Casos de xito
15. Referencias
16. Ejercicio




Imagen tomada de la portada de http://www.postgresql.org/

Qu es?
PostgreSQL es un Sistema de Gestin de Bases de Datos
relacional orientado a objetos y libre, publicado bajo la
licencia BSD.

Es una licencia de software permisiva como la licencia de
Open SSL, la cual permite uso del cdigo fuente en
software no libre. Es el sistema de Bases de Datos libre
ms potente del mercado
1

1
http://es.wikipedia.org/wiki/PostgreSQL
Historia
El proyecto PostgreSQL empez en
1996, aunque las bases y el trabajo en
la que se asienta tiene sus inicios en la
dcada de los 70.
Ingres (1977 - 1985)
Desde 1973 IBM haba estado trabajando con la implementacin de las
primeras bases de datos relacionales. Su proyecto System R fue,
entre otras cosas, la primera implementacin del lenguaje SQL. Este
proyecto, sus decisiones de diseo y muchos de los algoritmos usados,
influenciaron muchos de los sistemas de bases de datos relacionales
que aparecieron posteriormente.
Postgres (1986 - 1994)
Michael Stonebraker lider un nuevo proyecto llamado Postgres (despus de Ingres) patrocinado por
la Defense Advanced Research Projects Agency (DARPA), la Army Research Office (ARO), la
National Science Foundation (NSF), y ESL, Inc. Con este proyecto y basndose en la experiencia
obtenida con Ingres, Stonebraker tena como meta mejorar lo que haba conseguido y aprendido en el
desarrollo de Ingres. Y aunque se bas en muchas ideas de Ingres, no se bas en el cdigo fuente
del mismo.
Los objetivos iniciales de este proyecto fueron:
Proporcionar un mejor soporte para objetos complejos
Proporcionar a los usuarios la posibilidad de extender los tipos de datos, operadores y mtodos
de acceso.
Proporcionar los mecanismos necesarios para crear bases de datos activas (triggers, etc)
Simplificar el cdigo encargado de la recuperacin del sistema despues de una cada del mismo
Hacer cambios mnimos (preferiblemente ninguno) en el modelo relacional.
Mejorar el lenguaje de consulta QUEL heredado de Ingres (POSTQUEL).

PostgreSQL (1994- 1995)
En 1994, dos estudiantes de Berkeley, Andrew Yu y Jolly Chen, empezaron a trabajar con el
cdigo de Postgres (versin 4.2) y llamaron al proyecto Postgres95. Hicieron una limpieza
general del cdigo, arreglaron errores en el mismo, e implementaron otras mejoras, entre las
que destacan:
Sustitucin de POSTQUEL por un intrprete del lenguaje SQL
Reimplementacin de las funciones agregadas
psql fue creado para ejecutar consultas SQL
El interface de objetos grandes (large-object) fue revisado
Un pequeo tutorial sobre Postgres fue creado
Postgres se pudo empezar a compilar con GNU make y GCC sin parchear
La versin 1.0 de Postgre95 vio la luz en 1995, el cdigo era 100% ANSI C, un 25% ms corto
en relacin con la versin 4.2 y un 30-50% ms rpido. El cdigo fue publicado en la web y
liberado bajo una licencia BSD, y ms y ms personas empezaron a utilizar y a colaborar en el
proyecto.

PostgreSQL (1996 - Actualidad)
En 1996, Andrew Yu y Jolly Chen ya no tenan tanto tiempo para dirigir y desarrollar
Postgres95. Algunos de los usuarios habituales de las listas de correo del proyecto
decidieron hacerse cargo del mismo y crearon el llamado "PostgreSQL Global
Development Team".
En un principio este equipo de desarrolladores al cargo de la organizacin del proyecto
estuvo formado por Marc Fournier en Ontario, Canad, Thomas Lockhart en Pasadena,
California, Vadim Mikheev en Krasnoyarsk, Rusia y Bruce Momjian in Philadelphia,
Pennsylvania. El nombre fue cambiado de Postgres95 a PostgreSQL y lanzaron la
versin 6.0 en enero de 1997.
Hoy en da el grupo central (core team) de desarrolladores est formado por 6 personas,
existen 38 desarrolladores principales y ms 21 desarrolladores habituales. En total
alrededor de 65 personas activas, contribuyendo con el desarrollo de PostgreSQL.
http://www.postgresql.org/community/contributors/

PostgreSQL (1996 - Actualidad)
Existe tambin una gran comunidad de usuarios, programadores y administradores que
colaboran activamente en numerosos aspectos y actividades relacionadas con el
proyecto. Informes y soluciones de problemas, tests, comprobacin del
funcionamiento, aportaciones de nuevas ideas, discusiones sobre caractersticas y
problemas, documentacin y fomento de PostgreSQL son solo algunas de las actividades
que la comunidad de usuarios realiza.
No tenemos que olvidar tampoco que existen muchas empresas que tambien colaboran
con dinero y/ con tiempo/personas en mejorar PostgreSQL. Muchos desarrolladores y
nuevas caractersticas estn muchas veces patrocinadas por empresas privadas.
En los ltimos aos los trabajos de desarrollo se han concentrado mucho en la
velocidad de proceso y en caractersticas demandadas en el mundo empresarial.
4

4
http://www.postgresql.org.es/sobre_postgresql
Versiones
El proyecto PostgreSQL tiene como objetivo mantener y soportar cada versin de
postgreSQL durante como mnimo 5 aos desde el momento en que la versin se abre al
pblico, segn lo muestra la imagen:











Imagen tomada de:
http://www.postgresql.org.es/sobre_postgresql
Escalabilidad y lmites
Motor de almacenamiento
PostgreSQL soporta un motor por defecto, el
sistema de almacenamiento Postgres (Postgres
Storage System) pero adems de este cuenta
con:
MyIsam
InnoDB
Modelo
PostgreSQL utiliza un modelo cliente/servidor
y usa multiprocesos en vez de multihilos para
garantizar la estabilidad del sistema. Un fallo
en uno de los procesos no afectar al resto
del sistema y continuar funcionando.
Aplicacin cliente: Esta es la aplicacin
cliente que utiliza PostgreSQL como
administrador de bases de datos. La conexin
puede ocurrir va TCP/IP sockets locales.
Demonio postmaster: Este es el proceso
principal de PostgreSQL. Es el encargado de
escuchar por un puerto/socket por conexiones
entrantes de clientes. Tambin es el encargado
de crear los procesos hijos que se encargarn
de autentificar estas peticiones, gestionar las
consultas y mandar los resultados a las
aplicaciones clientes
Ficheros de configuracin: Los 3 ficheros
principales de configuracin utilizados por
PostgreSQL, postgresql.conf, pg_hba.conf y
pg_ident.conf
Procesos hijos postgres: Procesos hijos que
se encargan de autentificar a los clientes, de
gestionar las consultas y mandar los
resultados a las aplicaciones clientes
PostgreSQL share buffer cache: Memoria
compartida usada por POstgreSQL para
almacenar datos en cach.
Write-Ahead Log (WAL): Componente del
sistema encargado de asegurar la integridad
de los datos (recuperacin de tipo REDO)
Kernel disk buffer cache: Cach de disco del
sistema operativo
Disco: Disco fsico donde se almacenan los
datos y toda la informacin necesaria para que
PostgreSQL funcione
2
2
http://www.postgresql.org.es/sobre_postgresql
Soporte nativo
Caractersticas
La ltima serie de produccin es la versin 9.3. Sus caractersticas le hacen
una de las Bases de Datos ms potentes y robustas del mercado. Su desarrollo
comenz hace 16 aos y durante este tiempo estabilidad, robustez, potencia
facilidad de administracin e implementacin de estndares han sido las
caractersticas que ms se han tenido en cuenta durante su desarrollo.
PostgreSQL funciona muy bien con grandes cantidades de informacin y una
alta concurrencia de usuarios accediendo a la vez al sistema.
Es una base de datos 100% ACID
3
Integridad referencial
Tablespaces
Nested transactions (savepoints)
Replicacin asincrnica/sincrnica / Streaming replication - Hot Standby
Two-phase commit
PITR - point in time recovery
Copias de seguridad en caliente (Online/hot backups)
Unicode
Juegos de caracteres internacionales
Caractersticas (2)
Caractersticas (3)
Regionalizacin por columna
Multi-Version Concurrency Control (MVCC)
Mltiples mtodos de autentificacin
Acceso encriptado va SSL
Actualizacin in-situ integrada (pg_upgrade)
SE-postgres
Completa documentacin
Licencia BSD
Disponible para Linux y UNIX en todas sus variantes (AIX, BSD, HP-UX, SGI IRIX,
Mac OS X, Solaris, Tru64) y Windows 32/64bit.

3
http://es.wikipedia.org/wiki/ACID

Tipos de datos







Imagen tomada de http://www.postgresql.org/docs/9.3/static/datatype.html
Tipos de datos (2)







Imagen tomada de http://www.postgresql.org/docs/9.3/static/datatype.html
Tipos de datos (3)






Imagen tomada de http://www.postgresql.org/docs/9.3/static/datatype.html
Servidores
Licenciamiento
BSD (La redistribucin y el uso en las formas de cdigo fuente y binario, con o sin modificaciones, estn permitidos siempre
que se cumplan las siguientes condiciones:
1. Las redistribuciones del cdigo fuente deben conservar el aviso de copyright anterior, esta lista de condiciones y el siguiente
descargo de responsabilidad.
2. Las redistribuciones en formato binario deben reproducir el aviso de copyright anterior, esta lista de condiciones y la siguiente
renuncia en la documentacin y/u otros materiales suministrados con la distribucin.
3. Todo el material publicitario que mencione las funciones o utilice este software debe mostrar el siguiente reconocimiento:
Este producto incluye software desarrollado por la Universidad de California, Berkeley y sus colaboradores.
4. Ni el nombre de la Universidad ni los nombres de sus colaboradores pueden usarse para apoyar o promocionar productos
derivados de este software sin permiso previo y por escrito.)
PostgreSQL license (Permission to use, copy, modify, and distribute this
software and its documentation for any purpose, without fee, and without a written
agreement is hereby granted, provided that the above copyright notice and this paragraph and
the following two paragraphs appear in all copies.)
Ventajas
Es software libre no hay costo asociado a la licencia
Extensible, el cdigo fuente est disponible para todos sin costo
Multiplataforma
Soporta Vistas, Triggers, Secuencias, Outer Joins, Sub-selects, Stored
Procedures.
Soporte para consultas con UNION, UNION ALL y EXCEPT.
EXPLAIN de consultas para ver cmo se optimizan las mismas o para
ayudar a optimizarlas.
Increible estabilidad
Integridad de los datos excelente
Desventajas
Sin experticia, configurar puede llegar a ser un caos
Problemas de InnoDB (indexacin)
Problemas de MyIsam (carece de integridad relacional)
Puntos de recuperacin dentro de las transacciones (si falla no se recupera nada)
Muy poco intuitivo
Casi nulo el soporte en linea

Casos de xito
Referencias
http://2ndquadrant.com/es/postgresql/postgresql-vs-mysql/
http://2ndquadrant.com/es/postgresql/
http://opensource.org/licenses/postgresql
http://www.postgresql.org/about/licence/
http://www.postgresql.org/about/press/presskit92/es/
http://www.fing.edu.uy/~asabigue/prgrado/2004eofgl/contenido/anexo2/anexo_ii_62.html