Download Postgres 1986-1994 - Despues (post) de ingres

Document related concepts

PostgreSQL wikipedia , lookup

Michael Stonebraker wikipedia , lookup

Trigger (base de datos) wikipedia , lookup

PostGIS wikipedia , lookup

Navicat wikipedia , lookup

Transcript
===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.
A continuación teneis un gráfico que ilustra de manera general los
componentes más importantes en un sistema PostgreSQL.
Límite
Valo
r


Aplicación cliente: Esta es la aplicación cliente que utiliza
PostgreSQL como administrador de bases de datos. La
conexión 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
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)
Kernel disk buffer cache: Caché de disco del sistema
operativo
Disco: Disco físico donde se almacenan los datos y toda la
información necesaria para que PostgreSQL funcione
===Características===
La última serie de producción es la 9.1. Sus características técnicas la
hacen una de las bases de datos más potentes y robustas del mercado.
Su desarrollo comenzo hace más de 16 años, y durante este tiempo,
estabilidad, potencia, robustez, facilidad de administración e
implementación de estándares han sido las características que más 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 continuación teneis algunas de las características más importantes y
soportadas por PostgreSQL:
Generales










Es una base de datos 100% ACID
Integridad referencial
Tablespaces
Nested transactions (savepoints)
Replicación asincrónica/sincrónica / 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









Regionalización por columna
Multi-Version Concurrency Control (MVCC)
Multiples métodos de autentificación
Acceso encriptado via SSL
Actualización in-situ integrada (pg_upgrade)
SE-postgres
Completa documentación
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.
Programación / 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 anónimos de código de procedimientos (sentencias
DO)
Numerosos tipos de datos y posibilidad de definir nuevos tipos.
Además de los tipos estándares en cualquier base de datos,
tenemos disponibles, entre otros, tipos geométricos, de
direcciones de red, de cadenas binarias, UUID, XML, matrices,
etc
Soporta el almacenamiento de objetos binarios grandes
(gráficos, 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 foráneas (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, Btree, 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 características
disponibles en todas las versiones en la dirección
http://www.postgresql.org/about/featurematrix
Algunos de los limites de PostgreSQL son:
Máximo tamaño base de dato
Máximo tamaño de tabla
Máximo tamaño de fila
Máximo tamaño de campo
Máximo numero de filas por tabla
Máximo numero de columnas por tabla
Máximo numero de indices por tabla
Ilimitado
(Depende de
tu sistema de
almacenamien
to)
32 TB
1.6 TB
1 GB
Ilimitado
250 - 1600
(dependiendo
del tipo)
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
continuación teneis una corta descripción de la historia de PostgreSQL.
Ingres 1977-1985 - "El comienzo"
La década de los 70 fue una década 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
implementación del lenguaje SQL (Structured Query Language). Este proyecto, sus decisiones
de diseño 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
artículos 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 años Ingres mantuvo su código 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 código e implementación 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 versión 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 código 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
métodos de acceso.
 Proporcionar los mecanismos necesarios para crear bases de datos activas (triggers, etc)
 Simplificar el código encargado de la recuperación del sistema despues de una caída del
mismo
 Hacer cambios mínimos (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 artículos originales y completos
en ingles relacionados con el proyecto Postgres:
 "The design of POSTGRES": El diseño de Postgres
 "The POSTGRES data model": El módelo de datos de Postgres
 "The design of the POSTGRES storage system": El diseño del sistema de
almacenamiento de Postgres
 "The implementation of POSTGRES": Presentación de la versión 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 versión de Postgres en este projecto fue la versión 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
código de Postgres (versión 4.2) y llamaron al proyecto Postgres95. Hicieron una limpieza
general del código, arreglaron errores en el mismo, e implementaron otras mejoras, entre las
que destacan:






Sustitución de POSTQUEL por un interprete del lenguaje SQL
Reimplementación de las funciones agregadas
psql fue creado para ejecutar consultas SQL
El interface de objetos grandes (large-object) fue revisado
Un pequeño tutorial sobre Postgres fue creado
Postgres se pudo empezar a compilar con GNU make y GCC sin parchear
La versión 1.0 de Postgre95 vio la luz en 1995, el código era 100% ANSI C, un 25% más corto
en relación con la versión 4.2 y un 30-50% más rápido. El código fue publicado en la web y
liberado bajo una licencia BSD, y más y más 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 organización 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 versión 6.0 en enero de 1997.
Hoy en dia el grupo central (core team) de desarrolladores está formado por 7 personas, existen
24 desarrolladores principales y más 18 desarrolladores habituales. En total alrededor de 50
personas activas, contribuyendo con el desarrollo de PostgreSQL. Podeis encontrar más
información sobre este equipo de desarrolladores en
http://www.postgresql.org/community/contributors/
Existe tambien una gran comunidad de usuarios, programadores y administradores que
colaboran actívamente en numerosos aspectos y actividades relacionadas con el proyecto.
Informes y soluciones de problemas, tests, comprobación del funcionamiento, aportaciones de
nuevas ideas, discusiones sobre características y problemas, documentación 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
características están muchas veces patrocinadas por empresas privadas.
En los últimos años los trabajos de desarrollo se han concentrado mucho en la velocidad de
proceso y en características demandadas en el mundo empresarial. En este gráfico 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 años de existencia del Proyecto PostgreSQL, el tamaño del mismo, tanto en
número de desarrolladores, como en números de linea de código, funciones y complejidad del
mismo ha ido aumentando año a año. En el siguiente gráfico teneis una gráfica con la evolución
del número de lineas de código en cada versión de PostgreSQL.
Los datos de este gráfico estan generados con CLOC. Contabilizamos como lineas de código a
todas las lineas de código en diferentes lenguaje, más comentarios, menos lineas en blanco.
Los ficheros HTML y CSS no se cuentan como código.
Usando el modelo de estimación 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.
Según COCOMOII, obtendriamos estos números para PostgreSQL 9.0.0:
Descripción
Valor
Números de lineas de código (PG-9.0.0)
969.562
Habilidad de los programadores (alta)
0,6
Complejidad del projecto (alta)
1,24
Precio/hora ($100.000/año - 1.875horas/año) $53,3
Programadores-año
Precio por linea de código
Precio Total
Lineas de código por persona/dia
Tiempo de desarrollo del proyecto (años)
Número medio de programadores
618,71
$65,30
$63.316.697
7
3.6
171,4
Ref: http://www.cms4site.ru/utility.php?ecur=1.24&eafcur=0.6&utility=cocomoii...
||
Nombre del producto
El uso de caracteres en mayúscula en el nombre PostgreSQL puede confundir a algunas
personas a primera vista. Las distintas pronunciaciones de "**SQL**" pueden llevar a
confusión. Los desarrolladores de PostgreSQL lo pronuncian /poːst ɡɹɛs kjuː ɛl/;. Es
también común oír abreviadamente como simplemente "Postgres", el que fue su nombre
original. Debido a su soporte del estándar SQL entre la mayor parte de bases de datos
relacionales, la comunidad consideró cambiar el nombre al anterior Postgres. Sin
embargo, el PostgreSQL Core Team anunció en 2007 que el producto seguiría
llamándose PostgreSQL. El nombre hace referencia a los orígenes del proyecto como la
base de datos "post-**Ingres**", y los autores originales también desarrollaron la base de
datos Ingres.
Historia
PostgreSQL ha tenido una larga evolución, la cual se inicia en 1982 con el proyecto
**Ingres** en la **Universidad de Berkeley**. Este proyecto, liderado por **Michael
Stonebraker**, fue uno de los primeros intentos en implementar un motor de base de
datos relacional. Después de haber trabajado un largo tiempo en Ingres y de haber tenido
una experiencia comercial con él mismo, Michael decidió volver a la Universidad en 1985
para trabajar en un nuevo proyecto sobre la experiencia de Ingres, dicho proyecto fue
llamado post-ingres o simplemente POSTGRES.
El proyecto post-ingres pretendía resolver los problemas con el modelo de base de datos
relacional que habían sido aclarados a comienzos de los **años 1980**. El principal de
estos problemas era la incapacidad del modelo relacional de comprender "tipos", es
decir, combinaciones de datos simples que conforman una única unidad. Actualmente
estos son llamados **objetos**. Se esforzaron en introducir la menor cantidad posible de
funcionalidades para completar el soporte de tipos. Estas funcionalidades incluían la
habilidad de definir tipos, pero también la habilidad de describir relaciones - las cuales
hasta ese momento eran ampliamente utilizadas pero mantenidas completamente por el
usuario. En Postgres la base de datos «comprendía» las relaciones y podía obtener
información de **tablas** relacionadas utilizando reglas. Postgres usó muchas ideas de
Ingres pero no su código.
La siguiente lista muestra los hitos más importantes en la vida del proyecto Postgres.




1986: se publicaron varios papers que describían las bases del sistema.
1988: ya se contaba con una versión utilizable.
1989: el grupo publicaba la versión 1 para una pequeña comunidad de usuarios.
1990: se publicaba la versión 2 la cual tenía prácticamente reescrito el sistema de
reglas.
 1991: publicación de la versión 3, esta añadía la capacidad de múltiples motores de
almacenamiento.
 1993: crecimiento importante de la comunidad de usuarios, la cual demandaba más
características.
 1994: después de la publicación de la versión 4, el proyecto terminó y el grupo se
disolvió.
Después de que el proyecto POSTGRES terminara, dos graduados de la universidad,
**Andrew Yu** y **Jolly Chen**, comenzaron a trabajar sobre el código de POSTGRES, esto
fue posible dado que POSTGRES estaba licenciado bajo la **BSD**, y lo primero que
hicieron fue añadir soporte para el lenguaje SQL a POSTGRES, dado que anteriormente
contaba con un **intérprete** del lenguaje de consultas QUEL (basado en Ingres), creando
así el sistema al cual denominaron Postgres95.
Para el año 1996 se unieron al proyecto personas ajenas a la Universidad como **Marc
Fournier** de Hub.Org Networking Services, **Bruce Momjian** y **Vadim B. Mikheev**
quienes proporcionaron el primer servidor de desarrollo no universitario para el esfuerzo
de desarrollo de código abierto y comenzaron a trabajar para estabilizar el código de
Postgres95.
En el año 1996 decidieron cambiar el nombre de Postgres95 de tal modo que refleje la
característica del lenguaje **SQL** y lo terminaron llamando PostgreSQL, cuya primera
versión de código abierto fue lanzada el 1 de agosto de 1996. La primera versión formal
de PostgreSQL (6.0) fue liberada en enero de 1997. Desde entonces, muchos
desarrolladores entusiastas de los motores de base de datos se unieron al proyecto,
coordinaron vía Internet y entre todos comenzaron a incorporar muchas características al
motor.
Aunque la licencia permitía la comercialización de PostgreSQL, el código no se
desarrolló en principio con fines comerciales, algo sorprendente considerando las
ventajas que PostgreSQL ofrecía. La principal derivación se originó cuando Paula
Hawthtorn (un miembro del equipo original de Ingres que se pasó a Postgres) y **Michael
Stonebraker** conformaron Illustra Information Technologies para comercializar Postgres.
En 2000, ex inversionistas de **Red Hat** crearon la empresa Great Bridge para
comercializar PostgreSQL y competir contra proveedores comerciales de bases de datos.
Great Bridge auspició a varios desarrolladores de PostgreSQL y donó recursos de vuelta
a la comunidad, pero a fines de 2001 cerró debido a la dura competencia de compañías
como Red Hat y pobres condiciones del mercado.
En 2001, Command Prompt, Inc. lanzó Mammonth PostgreSQL, la más antigua
distribución comercial de PostgreSQL. Continúa brindando soporte a la comunidad
PostgreSQL a través del auspicio de desarrolladores y proyectos, incluyendo PL/Perl,
PL/php y el alojamiento de proyectos de comunidades como PostgreSQL Build Farm.
En enero de 2005, PostgreSQL recibió apoyo del proveedor de base de datos **Pervasive
Software**, conocido por su producto **Btrieve** que se utilizaba en la plataforma **Novell
Netware**. Pervasive anunció soporte comercial y participación comunitaria y logró algo
de éxito. Sin embargo, en julio de 2006 dejó el mercado de soporte de PostgreSQL.
A mediados de 2005 otras dos compañías anunciaron planes para comercializar
PostgreSQL con énfasis en nichos separados de mercados. **EnterpriseDB** añadió
funcionalidades que le permitían a las aplicaciones escritas para trabajar con Oracle ser
más fáciles de ejecutar con PostgreSQL. Greenplum contribuyó mejoras directamente
orientadas a aplicaciones de **Data Warehouse** e **Inteligencia de negocios**, incluyendo
el proyecto BizGres.
En octubre de 2005, John Loiacono, vicepresidente ejecutivo de software en **Sun
Microsystems** comentó: "No estamos yendo tras el **OEM** de **Microsoft** pero estamos
viendo a PostgreSQL ahora", aunque no se dieron especificaciones en ese momento.
Para noviembre de 2005, Sun Solaris 10 (lanzamiento 6/06) incluía PostgreSQL.
En agosto de 2007 EnterpriseDB anunció el Postgres Resource Center y EnterpriseDB
Postgres, diseñados para ser una completamente configurada distribución de
PostgreSQL incluyendo muchos módulos contribuidos y agregados. EnterpriseDB
Postgres fue renombrado Postgres Plus en marzo de 2008.
El proyecto PostgreSQL continúa haciendo lanzamientos principales anualmente y
lanzamientos menores de reparación de bugs, todos disponibles bajo la licencia BSD, y
basados en contribuciones de proveedores comerciales, empresas aportantes y
programadores de código abierto mayormente.
Características
Algunas de sus principales características son, entre otras:
Alta concurrencia
Mediante un sistema denominado MVCC (Acceso concurrente multiversión, por sus
siglas en inglés) PostgreSQL permite que mientras un proceso escribe en una tabla,
otros accedan a la misma tabla sin necesidad de bloqueos. Cada usuario obtiene una
visión consistente de lo último a lo que se le hizo commit. Esta estrategia es superior al
uso de bloqueos por tabla o por **filas** común en otras bases, eliminando la necesidad
del uso de bloqueos explícitos.....
Amplia variedad de tipos nativos
PostgreSQL provee nativamente soporte para:







Números de **precisión arbitraria**.
Texto de largo ilimitado.
Figuras geométricas (con una variedad de funciones asociadas).
**Direcciones IP** (IPv4 e IPv6).
Bloques de direcciones estilo **CIDR**.
**Direcciones MAC**.
**Arrays**.
Adicionalmente los usuarios pueden crear sus propios tipos de datos, los que pueden
ser por completo indexables gracias a la infraestructura GiST de PostgreSQL. Algunos
ejemplos son los tipos de datos **GIS** creados por el proyecto **PostGIS**.
Otras características
 **Claves ajenas** también denominadas Llaves ajenas o Claves Foráneas (foreign
keys).
 **Disparadores** (triggers): Un disparador o trigger se define como una acción
específica que se realiza de acuerdo a un evento, cuando éste ocurra dentro de la
base de datos. En PostgreSQL esto significa la ejecución de un procedimiento
almacenado basado en una determinada acción sobre una tabla específica. Ahora
todos los disparadores se definen por seis características:
o El nombre del disparador o trigger
o El momento en que el disparador debe arrancar
o El evento del disparador deberá activarse sobre...
o La tabla donde el disparador se activará
o La frecuencia de la ejecución
o La función que podría ser llamada
Entonces combinando estas seis características, PostgreSQL le permitirá crear una
amplia funcionalidad a través de su sistema de activación de disparadores (triggers).





**Vistas**.
Integridad transaccional.
Herencia de tablas.
Tipos de datos y operaciones geométricas.
Soporte para transacciones distribuidas. Permite a PostgreSQL integrase en un
sistema distribuido formado por varios recursos (p.ej, una base de datos
PostgreSQL, otra Oracle, una cola de mensajes IBM MQ JMS y un ERP SAP)
gestionado por un servidor de aplicaciones donde el éxito ("commit") de la
transacción globlal es el resultado del éxito de las transacciones locales. Más
información en inglés en
**http://www.theserverside.com/discussions/thread.tss?thread_id=21385#95297** y en
**http://java.sun.com/javaee/technologies/jta/index.jsp**.
Funciones
Bloques de código que se ejecutan en el servidor. Pueden ser escritos en varios
lenguajes, con la potencia que cada uno de ellos da, desde las operaciones básicas de
programación, tales como bifurcaciones y bucles, hasta las complejidades de la
programación orientada a objetos o la programación funcional.
Los disparadores (triggers en inglés) son funciones enlazadas a operaciones sobre los
datos.
Algunos de los lenguajes que se pueden usar son los siguientes:












Un lenguaje propio llamado **PL/PgSQL** (similar al **PL/SQL** de oracle).
**C**.
**C++**.
**Java****PL/Java web**.
**PL/Perl**.
**plPHP**.
**PL/Python**.
**PL/Ruby**.
**PL/sh**.
**PL/Tcl**.
**PL/Scheme**.
Lenguaje para aplicaciones estadísticas **R** por medio de **PL/R**.
PostgreSQL soporta funciones que retornan "filas", donde la salida puede tratarse como
un conjunto de valores que pueden ser tratados igual a una fila retornada por una
consulta (query en inglés).
Las funciones pueden ser definidas para ejecutarse con los derechos del usuario
ejecutor o con los derechos de un usuario previamente definido. El concepto de
funciones, en otros DBMS, son muchas veces referidas como "procedimientos
almacenados" (stored procedures en inglés).
Productos alrededor de PostgreSQL
El **PGDG** solo desarrolla el Motor de Datos y un número pequeño de utilidades, para
potenciar el trabajo con PostgreSQL suele ser necesario añadir utilidades externas
creadas especialmente para este motor, algunas de estas herramientas son:
Alternativas Comerciales
Gracias a su licencia **BSD**, se permite la utilización del código para ser
comercializado. Uno de los casos ejemplo es la de Enterprise DB (Postgresql Plus), la
cual incluye varios agregados y una interfaz de desarrollo basada en **Java**. Entre otras
empresas que utilizan Postgresql para comercializar se encuentra CyberTech (alemania),
con su producto CyberCluster.
GIS
**PostGIS**
Extensión que añade soporte de objetos geográficos a PostgreSQL y permite realizar
análisis mediante consultas SQL espaciales o mediante conexión a aplicaciones **GIS**
(Sistema de Información Geográfica).
Replicación
**PgCluster**
Replicación multi maestro.
**Slony-I**
Replicación maestro esclavo.
**PyReplica**
Replicación maestro esclavo y multi maestro asincrónica.
Herramientas de administración
**PgAdmin3**
Entorno de escritorio visual.
**PgAccess**
Entorno de escritorio visual.
**PhpPgAdmin**
Entorno web.
psql
Cliente de consola.
**Database Master**
Entorno de escritorio visual.
Búsqueda de texto
Full text search
Incluido en el núcleo a partir de la versión 8.3.
Via **Tsearch2** y **OpenFTS** para versiones anteriores a la 8.3.
XML
**XML**/**XSLT** soporte
Via **XPath extensiones en la sección contrib**.
[**editar**] Usuarios destacados








**.org**, **.info**, **.mobi** y **.aero** registros de dominios por **Afilias**.**[****1]**
La **American Chemical Society**.
**BASF**.
**IMDb**.
**Skype**.
**TiVo**.
**Penny Arcade**.
**Sony Online**.**[****2]**








**U.S. Departamento de Trabajo**.
**USPS**.
**VeriSign**.
**Pictiger.com**
**Wisconsin Circuit Court Access** con 6 * 180GB DBs replicados en tiempo real.
**OpenACS** y **.LRN**.
**INEGI**.
**IFE**.
Premios
PostgreSQL ha recibido los siguientes reconocimientos:**[****3]**










1999 LinuxWorld Editor's Choice Award for Best Database
2000 Linux Journal Editors' Choice Awards for Best Database
2002 Linux New Media Editors Choice Award for Best Database
2003 Linux Journal Editors' Choice Awards for Best Database
2004 Linux New Media Award For Best Database
2004 Linux Journal Editors' Choice Awards for Best Database
2004 ArsTechnica Best Server Application Award
2005 Linux Journal Editors' Choice Awards for Best Database
2006 Linux Journal Editors' Choice Awards for Best Database
2008 Developer.com Product of the Year, Database Tool
Referencias
1. **↑****PostgreSQL affiliates.ORG domain**
2. **↑****Sony Online opts for open-source database over Oracle**
3. **↑** «PostgreSQL, Award Winning Software». postgresql.org (19-01-2008).
Consultado el 31-01-2008.
Aplicaciones para Empresas, EmpresaVentajas y desventajas de PostgreSQL
PostgreSQL es un sistema de gestión de base de datos relacional orientada a objetos y
libre, publicada bajo licencia BSD. Es un programa de código abierto, por lo que está
dirigido por una comunidad de desarrolladores llamada PGDG (PostgreSQL Global
Development Group). Comienza su desarrollo en el año 1982 con el proyecto Ingres en la
Universidad de Berkeley. Entre sus principales características tenemos la alta concurrencia,
la amplia variedad de tipos nativos, y diversas funciones más específicas. Hoy hablaremos
de las principales ventajas y desventajas de PostgreSQL:
Ventajas:
A pesar de que la velocidad de respuesta pueda parecer deficiente en bases de datos
pequeñas, esa velocidad se mantiene al aumentar el tamaño de la base de datos, cosa que
no sucede con otros programas, que se enlentecen brutalmente.
Instalación ilimitada: No se puede demandar a una empresa por instalarlo en más
ordenadores de los que la licencia permite, ya que no hay costo asociado a la licencia de
software. Esto permite un negocio más rentable con instalaciones a gran escala, no
debemos preocuparnos por ser auditados para ver si cumplimos con la licencia, y hay
flexibilidad y desarrollo sin costos adicionales de licenciamiento.
Ahorros considerables de costos de operación: PostgreSQL ha sido diseñado para tener un
mantenimiento y ajuste menor que los productos de proveedores comerciales, conservando
todas las características, estabilidad y rendimiento.
Estabilidad y confiabilidad: No se han presentado caídas de la base de datos.
Extensible: El código fuente está disponible de forma gratuita, para que quien necesite
extender o personalizar el programa pueda hacerlo sin costes.
Multiplataforma: Está disponible en casi cualquier Unix, con 34 plataformas en la última
versión estable, además de una versión nativa de Windows en estado de prueba.
Diseñado para ambientes de alto volumen: Utilizando una estrategia de almacenamiento de
filas llamada MVCC, consigue mejor respuesta en grandes volúmenes. Además, MVCC
permite a los accesos de solo lectura continuar leyendo datos consistentes durante la
actualización de registros, permitiendo copias de seguridad en caliente
Herramientas gráficas de diseño y administración de bases de datos.
Soporta los tipos de datos, cláusulas, funciones y comandos de tipo estándar SQL92/SQL99
y extendidos propios de PostgreSQL.
Puede operar sobre distintas plataformas, incluyendo Linux, Windows, Unix, Solaris y
MacOS X.
Buen sistema de seguridad mediante la gestión de usuarios, grupos de usuarios y
contraseñas.
Gran capacidad de almacenamiento.
Buena escalabilidad ya que es capaz de ajustarse al número de CPU y a la cantidad de
memoria disponible de forma óptima, soportando una mayor cantidad de peticiones
simultáneas a la base de datos de forma correcta.
Desventajas:
En comparación con MySQL es más lento en inserciones y actualizaciones, ya que cuenta
con cabeceras de intersección que no tiene MySQL.
Soporte en línea: Hay foros oficiales, pero no hay una ayuda obligatoria.
Consume más recursos que MySQL.
La sintaxtis de algunos de sus comandos o sentencias no es nada intuitiva.
Bibliografía
Wikipedia
**http://es.wikipedia.org/wiki/PostgreSQL**
aplicaciones empresariales
**http://www.aplicacionesempresariales.com/ventajas-y-desventajas-de-postgresql.html**