You are on page 1of 15

Caractersticas, limitaciones y ventajas

CARACTERSTICAS
La ltima serie de produccin es la 9.1. Sus caractersticas tcnicas la hacen una de las
bases de datos ms potentes y robustas del mercado. Su desarrollo comenzo 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 a
el sistema.
A continuacin teneis algunas de las caractersticas ms importantes y soportadas por
PostgreSQL:

Generales
Es una base de datos 100% ACID.
Soporta distintos tipos de datos: adems del soporte para los tipos base,
tambin soporta datos de tipo fecha, monetarios, elementos grficos, datos sobre
redes (MAC, IP ...), cadenas de bits, etc. Tambin permite la creacin de tipos propios.
Incluye herencia entre tablas, por lo que a este gestor de bases de datos se le
incluye entre los gestores objeto-relacionales.
Copias de seguridad en caliente (Online/hot backups)
Unicode
Juegos de caracteres internacionales
Regionalizacin por columna
Multi-Version Concurrency Control (MVCC)
Multiples mtodos de autentificacin
Acceso encriptado via SSL
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.

Alta concurrencia
Mediante un sistema denominado MVCC (Acceso concurrente multiversin, por sus
siglas en ingls) PostgreSQL permite que mientras un proceso escribe en una tabla,
otros accedan a la misma tabla sin necesidad de bloqueos. Cada usuario obtiene una
visin consistente de lo ltimo a lo que se le hizo commit.
LIMITACIONES

Puntos de recuperacin dentro de transacciones. Actualmente, las


transacciones abortan completamente si se encuentra un fallo durante su ejecucin.
No soporta tablespaces para definir dnde almacenar la base de datos, el esquema,
los ndices, etc. (versiones antes de la 9.0)
El soporte a orientacin a objetos es una simple extensin que ofrece prestaciones
como la herencia, no un soporte completo.

Ventajas:

Ampliamente popular - Ideal para tecnologias Web.


Fcil de Administrar.
Su sintaxis SQL es estndar y fcil de aprender.
Footprint bajo de memoria, bastante poderoso con una configuracin
adecuada.
Multiplataforma.
Capacidades de replicacin de datos.
Soporte empresarial disponible.

Estabilidad y confiabilidad legendarias


En contraste a muchos sistemas de bases de datos comerciales, es extremadamente
comn que compaas reporten que PostgreSQL nunca ha presentado cadas en varios
aos de operacin de alta actividad. Ni una sola vez. Simplemente funciona.

Extensible
El cdigo fuente est disponible para todos sin costo. Si su equipo necesita extender o
personalizar PostgreSQL de alguna manera, pueden hacerlo con un mnimo esfuerzo,
sin costos adicionales. Esto es complementado por la comunidad de profesionales y
entusiastas de PostgreSQL alrededor del mundo que tambin extienden PostgreSQL
todos los das.

Multiplataforma
PostgreSQL est disponible en casi cualquier Unix (34 plataformas en la ltima versin
estable), y una versin nativa de Windows est actualmente en estado beta de
pruebas.

Diseado para ambientes de alto volumen


PostgreSQL usa una estrategia de almacenamiento de filas llamada MVCC para
conseguir una mucho mejor respuesta en ambientes de grandes volmenes. Los
principales proveedores de sistemas de bases de datos comerciales usan tambin esta
tecnologa, por las mismas razones.

DESVENTAJAS

En comparacin con MySQL es ms lento en inserciones y actualizaciones, ya que


cuenta con cabeceras de interseccin que no tiene MySQL.
Soporte en lnea: Hay foros oficiales, pero no hay una ayuda obligatoria.
Consume ms recursos que MySQL.
La sintaxtis de algunos de sus comandos o sentencias no es nada intuitiva.
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.

A continuacin teneis un grfico que ilustra de manera general los componentes ms


importantes en un sistema PostgreSQL.
Aplicacin cliente: Esta es la aplicacin cliente que utiliza PostgreSQL como
administrador de bases de datos. La conexin puede ocurrir via 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. Tambien 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 configuracion: 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.3. Sus caractersticas tcnicas la hacen una de las
bases de datos ms potentes y robustas del mercado. Su desarrollo comenzo 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 a el sistema.

A continuacin teneis 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)

Multiples mtodos de autentificacin

Acceso encriptado via 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 programacion, 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

Indices compuestos, nicos, parciales y funcionales en cualquiera de los metodos 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

Podeis consultar la lista completa en ingles de caractersticas disponibles en todas las


versiones en la direccin http://www.postgresql.org/about/featurematrix

Algunos de los limites de PostgreSQL son:

Lmite Valor

Ilimitado (Depende de tu sistema de


Mximo tamao base de dato
almacenamiento)

Mximo tamao de tabla 32 TB


Mximo tamao de fila 1.6 TB

Mximo tamao de campo 1 GB

Mximo numero de filas por tabla Ilimitado

Mximo numero de columnas por


250 - 1600 (dependiendo del tipo)
tabla

Mximo numero de indices por tabla Ilimitado

Historia

El proyecto PostgreSQL tal y como lo conocemos hoy en dia empez en 1996, aunque las
bases y el trabajo en la que se asienta tienen sus comienzos en la decada de los 70. A
continuacin teneis 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 habia estado trabajando desde 1973 con los primeros conceptos, ideas y teorias 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, leyo


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 empezo a desarrollar sus ideas sobre bases de datos
relacionales. Durante estos aos Ingres mantuvo su cdigo fuente abierto y permanecio 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 version 6.0).

Michael Stonebraker dejo la Universidad de Berkeley en 1982 para comercializar Ingres


pero volvio a la misma en 1985 con nuevas ideas.

Postgres 1986-1994 - Despues (post) de ingres

Despues de su vuelta a Berkeley en 1985, Michael Stonebraker lider un nuevo proyecto


llamado Postgres (despues 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 basandose en la experiencia obtenida con Ingres,
Stonebraker tenia como meta mejorar lo que habian 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 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).

Para los interesados en el tema, teneis 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 mdelo de datos de Postgres

"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 projecto fue la versin 4.2.

Postgres95 1994-1995 - Nueva vida en el mundo opensource

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 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 PostgreSQL

En 1996, Andrew Yu y Jolly Chen ya no tenian 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, Canada, 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 dia 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. Podeis
encontrar ms informacin sobre este equipo de desarrolladores
en http://www.postgresql.org/community/contributors/

Existe tambien una gran comunidad de usuarios, programadores y administradores que


colaboran actvamente 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. En este grfico podeis
ver cuando las diferentes versiones de PostgreSQL han visto la luz y las principales
caracteristicas 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 linea de cdigo, funciones y complejidad
del mismo ha ido aumentando ao a ao. En el siguiente grfico teneis una grfica con la
evolucin del nmero de lineas de cdigo en cada versin de PostgreSQL.
Los datos de este grfico estan generados con CLOC. Contabilizamos como lineas de cdigo
a todas las lineas de cdigo en diferentes lenguaje, ms comentarios, menos lineas 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 necesitarian para
desarrollar un producto similar desde cero.

Segn COCOMOII, obtendriamos estos nmeros para PostgreSQL 9.0.0:

Descripcin Valor

Nmeros de lineas de cdigo (PG-9.0.0) 969.562

Habilidad de los programadores (alta) 0,6

Complejidad del projecto (alta) 1,24

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

Programadores-ao 618,71
Precio por linea de cdigo $65,30

Precio Total $63.316.697

Lineas de cdigo por persona/dia 7

Tiempo de desarrollo del proyecto (aos) 3.6

Nmero medio de programadores 171,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 teneis un
resumen del ciclo de vida de las diferentes versiones de PostgreSQL:

Versin Versin menor Soportada Lanzamiento Soporte

9.2 9.2.0 Si Sep 2012 Sep 2017

9.1 9.1.5 Si Sep 2011 Sep 2016

9.0 9.0.9 Si Sep 2010 Sep 2015

8.4 8.4.13 Si Jul 2009 Jul 2014

8.3 8.3.20 Si Feb 2008 Feb 2013

8.2 8.2.23 No Dic 2006 Dic 2011

8.1 8.1.23 No Nov 2005 Nov 2010


8.0 8.0.26 No Ene 2005 Oct 2010

7.4 7.4.30 No Nov 2003 Oct 2010

7.3 7.3.21 No Nov 2002 Nov 2007

7.2 7.2.8 No Feb 2002 Feb 2007

7.1 7.1.3 No Abr 2001 Abr 2006

7.0 7.0.3 No May 2000 May 2005

6.5 6.5.3 No Jun 1999 Jun 2004

6.4 6.4.2 No Oct 1998 Oct 2003

6.3 6.3.2 No Mar 1998 Mar 2003

You might also like