postgresql

10
POSTGRESQL Introducción PostgreSQL es un sistema de gestión de bases de datos objeto-relacional, distribuido bajo licencia BSD y con su código fuente disponible libremente. Es el sistema de gestión de bases de datos de código abierto más potente del mercado y en sus últimas versiones no tiene nada que envidiarle a otras bases de datos comerciales. 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á el resto y el sistema continuará funcionando. PostgreSQL consta de varios componentes: Aplicación cliente: Esta es la aplicación cliente que utiliza PostgreSQL como administrador de bases de datos. La conexión puede ocurrir vía 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. También es el encargado de crear los procesos hijos que se encargaran de autentificar estas peticiones, gestionar las consultas y mandar los resultados a las aplicaciones clientes Ficheros de configuración: Los 3 ficheros principales de configuración 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 (recuperación de tipo REDO)

Upload: sebastian-rubio-gonzalez

Post on 15-Nov-2015

213 views

Category:

Documents


0 download

DESCRIPTION

PostgreSQL

TRANSCRIPT

POSTGRESQL

Introduccin

PostgreSQL es un sistema de gestin de bases de datos objeto-relacional, distribuido bajo licencia BSD y con su cdigo fuente disponible libremente. Es el sistema de gestin de bases de datos de cdigo abierto ms potente del mercado y en sus ltimas versiones no tiene nada que envidiarle a otras bases de datos comerciales.

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 el resto y el sistema continuar funcionando.

PostgreSQL consta de varios componentes:

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 encargaran 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.Caractersticas

La ltima serie de produccin es la 9.2. Sus caractersticas tcnicas la hacen una de las bases de datos ms potentes y robustas del mercado. Su desarrollo comenz hace ms de 16 aos, y durante este tiempo, estabilidad, potencia, robustez, 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 datos y una alta concurrencia de usuarios accediendo a la vez al sistema.

A continuacin tenis algunas de las caractersticas ms importantes y soportadas por PostgreSQL:

Generales

Es una base de datos 100% ACID 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

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.

Programacin / Desarrollo

Funciones/procedimientos almacenados (stored procedures) en numerosos lenguajes de programacin, entre otros PL/pgSQL (similar al PL/SQL de Oracle), PL/Perl, PL/Python y PL/Tcl

Bloques annimos de cdigo de procedimientos (sentencias DO)

Numerosos tipos de datos y posibilidad de definir nuevos tipos. Adems de los tipos estndares en cualquier base de datos, tenemos disponibles, entre otros, tipos geomtricos, de direcciones de red, de cadenas binarias, UUID, XML, matrices, etc. Soporta el almacenamiento de objetos binarios grandes (grficos, videos, sonido, ...)

APIs para programar en C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC, PHP, Lisp, Scheme, Qt y muchos otros.

SQL

SQL92,SQL99,SQL2003,SQL2008

Llaves primarias (primary keys) y forneas (foreign keys)

Check, Unique y Not null constraints

Restricciones de unicidad postergables (deferrable constraints)

Columnas auto-incrementales

ndices compuestos, nicos, parciales y funcionales en cualquiera de los mtodos de almacenamiento disponibles, B-tree, R-tree, hash GiST

Sub-selects

Consultas recursivas

Funciones 'Windows'

Joins

Vistas (views)

Disparadores (triggers) comunes, por columna, condicionales.

Reglas (Rules)

Herencia de tablas (Inheritance)

Eventos LISTEN/NOTIFY

Podis consultar la lista completa en ingls de caractersticas disponibles en todas las versiones en la direccin http://www.postgresql.org/about/featurematrixAlgunos de los lmites de PostgreSQL son:

LmiteValor

Mximo tamao base de datos Ilimitado (Depende de tu sistema de almacenamiento)

Mximo tamao de tabla32 TB

Mximo tamao de fila 1.6 TB

Mximo tamao de campo 1 GB

Mximo numero de filas por tablaIlimitado

Mximo numero de columnas por tabla250 - 1600 (dependiendo del tipo)

Mximo numero de ndices por tablaIlimitado

Historia

El proyecto PostgreSQL tal y como lo conocemos hoy en da empez en 1996, aunque las bases y el trabajo en la que se asienta tienen sus comienzos en la dcada de los 70. A continuacin tenis una corta descripcin de la historia de PostgreSQL.

Ingres 1977-1985 - "El comienzo"La dcada de los 70 fue una dcada de desarrollos y pruebas de nuevos conceptos en el nuevo mundo de los gestores de bases de datos.

IBM haba estado trabajando desde 1973 con los primeros conceptos, ideas y teoras sobre bases de datos relacionales. Su proyecto "System R" fue entre otras cosas la primera implementacin del lenguaje SQL (Structured Query Language). 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.

Por aquel entonces un profesor de la Universidad de Berkeley, Michael Stonebraker, ley unos artculos publicados por IBM sobre "System R" que le hicieron interesarse en el tema. Utilizando el dinero de otro proyecto que ya tenia asignado, Ingres (Interactive Graphics REtrieval System), Stonebraker empez a desarrollar sus ideas sobre bases de datos relacionales. Durante estos aos Ingres mantuvo su cdigo fuente abierto y permaneci en gran medida similar en conceptos a "System R".

A principio de los 80, Ingres estuvo compitiendo con Oracle por el liderazgo en el mundo de bases de datos relacionales y su cdigo e implementacin evolucionaron y fueron el origen de otras bases de datos relacionales, entre ellas podemos citar a Informix, NonStop SQL y Sybase (Microsoft SQL Server fue una versin licenciada de Sybase hasta su versin 6.0).

Michael Stonebraker dejo la Universidad de Berkeley en 1982 para comercializar Ingres pero volvi a la misma en 1985 con nuevas ideas.

Postgres 1986-1994 - Despus (post) de IngresDespus de su vuelta a Berkeley en 1985, 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 tenia como meta mejorar lo que haban conseguido y aprendido en el desarrollo de Ingres. Y aunque se baso en muchas ideas de Ingres, no se baso 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 despus de una cada del mismo

Hacer cambios mnimos (preferiblemente ninguno) en el modelo relacional.

Mejorar el lenguaje de consulta QUEL heredado de Ingres (POSTQUEL).

Para los interesados en el tema, tenis disponibles una serie de artculos originales y completos en ingles relacionados con el proyecto Postgres:

"The design of POSTGRES": El diseo de Postgres

"The POSTGRES data model": El modelo de datos de Postgres

HYPERLINK "http://www.postgresql.org.es/sites/default/files/ERL-M87-06.pdf" "The design of the POSTGRES storage system": El diseo del sistema de almacenamiento de Postgres

"The implementation of POSTGRES": Presentacin de la versin 1 de Postgres en la conferencia ACM-SIGMOD de 1988

"A commentary on the POSTGRES rules system": Comentarios sobre el sistema de reglas de Postgres

"On Rules, Procedures, Caching and Views in Database Systems": Sobre reglas, procedimientos, cache y vistas en sistemas de bases de datos

La ltima versin de Postgres en este proyecto fue la versin 4.2.

Postgres95 1994-1995 - Nueva vida en el mundo opensourceEn 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 interprete 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 - Proyecto PostgreSQLEn 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. Podis encontrar ms informacin sobre este equipo de desarrolladores en http://www.postgresql.org/community/contributors/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 tambin 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. En este grfico podis ver cuando las diferentes versiones de PostgreSQL han visto la luz y las principales caractersticas en las que se ha centrado el desarrollo.

Durante los aos de existencia del Proyecto PostgreSQL, el tamao del mismo, tanto en nmero de desarrolladores, como en nmeros de lnea de cdigo, funciones y complejidad del mismo ha ido aumentando ao a ao. En el siguiente grfico tenis una grfica con la evolucin del nmero de lneas de cdigo en cada versin de PostgreSQL.

Los datos de este grfico estn generados con CLOC. Contabilizamos como lneas de cdigo a todas las lneas de cdigo en diferentes lenguajes, ms comentarios, menos lneas en blanco. Los ficheros HTML y CSS no se cuentan como cdigo.Usando el modelo de estimacin de costes de software "COCOMOII" (Constructive COst MOdel) podemos obtener unos datos meramente orientativos pero que nos pueden ayudar a entender la complejidad del proyecto PostgreSQL y los recursos que se necesitaran para desarrollar un producto similar desde cero.

Segn COCOMOII, obtendramos estos nmeros para PostgreSQL 9.0.0:

DescripcinValor

Nmeros de lneas de cdigo (PG-9.0.0)969.562

Habilidad de los programadores (alta)0,6

Complejidad del proyecto (alta)1,24

Precio/hora ($100.000/ao - 1.875horas/ao)$53,3

Programadores-ao618,71

Precio por lnea de cdigo$65,30

Precio Total$63.316.697

Lneas de cdigo por persona/da7

Tiempo de desarrollo del proyecto (aos)3.6

Nmero medio de programadores171,4

Ref: http://www.cms4site.ru/utility.php?ecur=1.24&eafcur=0.6&utility=cocomoii...Ciclo de vida (EOL) y soporte

El Proyecto PostgreSQL tiene como objetivo mantener y soportar cada versin de PostgreSQL durante 5 aos desde el momento de su lanzamiento. A continuacin tenis un resumen del ciclo de vida de las diferentes versiones de PostgreSQL:

VersinVersin menorSoportadaLanzamientoSoporte

9.29.2.0SiSep 2012Sep 2017

9.19.1.5SiSep 2011Sep 2016

9.09.0.9SiSep 2010Sep 2015

8.48.4.13SiJul 2009Jul 2014

8.38.3.20SiFeb 2008Feb 2013

8.28.2.23NoDic 2006Dic 2011

8.18.1.23NoNov 2005Nov 2010

8.08.0.26NoEne 2005Oct 2010

7.47.4.30NoNov 2003Oct 2010

7.37.3.21NoNov 2002Nov 2007

7.27.2.8NoFeb 2002Feb 2007

7.17.1.3NoAbr 2001Abr 2006

7.07.0.3NoMay 2000May 2005

6.56.5.3NoJun 1999Jun 2004

6.46.4.2NoOct 1998Oct 2003

6.36.3.2NoMar 1998Mar 2003