Download Postgres 1986-1994 - Despues (post) de ingres
Document related concepts
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**