<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.ecured.cu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Asotolongo</id>
	<title>EcuRed - Contribuciones del colaborador [es]</title>
	<link rel="self" type="application/atom+xml" href="https://www.ecured.cu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Asotolongo"/>
	<link rel="alternate" type="text/html" href="https://www.ecured.cu/Especial:Contribuciones/Asotolongo"/>
	<updated>2026-06-10T18:38:18Z</updated>
	<subtitle>Contribuciones del colaborador</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://www.ecured.cu/index.php?title=PostgreSQL&amp;diff=2410256</id>
		<title>PostgreSQL</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=PostgreSQL&amp;diff=2410256"/>
		<updated>2015-01-11T04:32:27Z</updated>

		<summary type="html">&lt;p&gt;Asotolongo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software&lt;br /&gt;
|nombre=PostgreSQL&lt;br /&gt;
|familia=&lt;br /&gt;
|imagen=Postgresql.jpeg&lt;br /&gt;
|tamaño=&lt;br /&gt;
|descripción=Sistema de gestión de base de datos relacional orientada a objetos y libre&lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=PostgreSQL Global Development Group&lt;br /&gt;
|desarrollador=&lt;br /&gt;
|diseñador=&lt;br /&gt;
|modelo de desarrollo=&lt;br /&gt;
|lanzamiento inicial=&lt;br /&gt;
|versiones=&lt;br /&gt;
|última versión estable=9.4 - 18 de [[Diciembre]] de [[2014]]&lt;br /&gt;
|género=RDBMS&lt;br /&gt;
|sistemas operativos=[[Multiplataforma]]&lt;br /&gt;
|idioma=&lt;br /&gt;
|licencia=[[BSD]]&lt;br /&gt;
|premios=&lt;br /&gt;
|web=http://www.postgresql.org&lt;br /&gt;
}}'''PostgreSQL'''. Sistema de gestión de [[base de datos]] relacional orientada a objetos y libre, publicado bajo la licencia [[BSD]]. &lt;br /&gt;
&lt;br /&gt;
Como muchos otros proyectos de [[Código abierto]], el desarrollo de PostgreSQL no es manejado por una sola empresa sino que es dirigido por una comunidad de desarrolladores y organizaciones comerciales las cuales trabajan en su desarrollo. Dicha comunidad es denominada el PGDG (PostgreSQL Global Development Group). &lt;br /&gt;
&lt;br /&gt;
== Nombre del producto ==&lt;br /&gt;
&lt;br /&gt;
El uso de caracteres en [[mayúscula]] en el nombre PostgreSQL puede confundir a algunas personas a primera vista. Las distintas pronunciaciones de &amp;quot;SQL&amp;quot; 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 &amp;quot;Postgres&amp;quot;, 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 &amp;quot;post-Ingres&amp;quot;, y los autores originales también desarrollaron la base de datos Ingres. &lt;br /&gt;
&lt;br /&gt;
== Historia ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;tipos&amp;quot;, 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. &lt;br /&gt;
&lt;br /&gt;
La siguiente lista muestra los hitos más importantes en la vida del proyecto Postgres. &lt;br /&gt;
&lt;br /&gt;
*[[1986]]: se publicaron varios papers que describían las bases del sistema. &lt;br /&gt;
*[[1988]]: ya se contaba con una versión utilizable. &lt;br /&gt;
*[[1989]]: el grupo publicaba la versión 1 para una pequeña comunidad de usuarios. &lt;br /&gt;
*[[1990]]: se publicaba la versión 2 la cual tenía prácticamente reescrito el sistema de reglas. &lt;br /&gt;
*[[1991]]: publicación de la versión 3, esta añadía la capacidad de múltiples motores de almacenamiento. &lt;br /&gt;
*[[1993]]: crecimiento importante de la comunidad de usuarios, la cual demandaba más características. &lt;br /&gt;
*[[1994]]: después de la publicación de la versión 4, el proyecto terminó y el grupo se disolvió.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
En [[Octubre]] de [[2005]], John Loiacono, vicepresidente ejecutivo de software en Sun Microsystems comentó: &amp;quot;No estamos yendo tras el OEM de Microsoft pero estamos viendo a PostgreSQL ahora&amp;quot;, aunque no se dieron especificaciones en ese momento. Para noviembre de 2005, Sun Solaris 10 (lanzamiento 6/06) incluía PostgreSQL. &lt;br /&gt;
&lt;br /&gt;
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]]. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Características ==&lt;br /&gt;
&lt;br /&gt;
Algunas de sus principales características son, entre otras: &lt;br /&gt;
&lt;br /&gt;
=== Alta concurrencia ===&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
PostgreSQL provee nativamente soporte para: &lt;br /&gt;
&lt;br /&gt;
*Números de precisión arbitraria. &lt;br /&gt;
*Texto de largo ilimitado. &lt;br /&gt;
*Figuras geométricas (con una variedad de funciones asociadas) &lt;br /&gt;
*Direcciones [[IP]] ([[IPv4]] e [[IPv6]]). &lt;br /&gt;
*Bloques de direcciones estilo CIDR. &lt;br /&gt;
*Direcciones [[MAC]]. &lt;br /&gt;
*Arrays.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== Otras características ===&lt;br /&gt;
&lt;br /&gt;
*Claves ajenas también denominadas Llaves ajenas o Claves Foráneas (foreign keys). &lt;br /&gt;
*Disparadores (triggers): Un disparador o trigger se define en una acción especifica basada en algo ocurrente entro 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:&lt;br /&gt;
&lt;br /&gt;
**El nombre del disparador o trigger &lt;br /&gt;
**El momento en que el disparador debe arrancar &lt;br /&gt;
**El evento del disparador deberá activarse sobre... &lt;br /&gt;
**La tabla donde el disparador se activará &lt;br /&gt;
**La frecuencia de la ejecución &lt;br /&gt;
**La función que podría ser llamada&lt;br /&gt;
&lt;br /&gt;
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). &lt;br /&gt;
&lt;br /&gt;
*Vistas. &lt;br /&gt;
*Integridad transaccional. &lt;br /&gt;
*Herencia de tablas. &lt;br /&gt;
*Tipos de datos y operaciones geométricas. &lt;br /&gt;
*Soporte para transacciones distribuidas. Permite a PostgreSQL integrase en un sistema distribuido formado por varios recursos (p.ej, una base de datos PostgreSQL, otra [http://www.oracle.com/index.html Oracle], una cola de mensajes IBM MQ JMS y un ERP SAP) gestionado por un servidor de aplicaciones donde el éxito (&amp;quot;commit&amp;quot;) de la transacción goblal es el resultado del éxito de las transacciones locales.&lt;br /&gt;
&lt;br /&gt;
=== Funciones  ===&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Los disparadores (''triggers'' en inglés) son funciones enlazadas a operaciones sobre los datos. &lt;br /&gt;
&lt;br /&gt;
Algunos de los lenguajes que se pueden usar son los siguientes: &lt;br /&gt;
&lt;br /&gt;
*Un lenguaje propio llamado [http://www.postgresql.org/docs/8.4/interactive/plpgsql.html PL/PgSQL] (similar al PL/SQL de oracle). &lt;br /&gt;
*[[Lenguaje_de_Programación_C|C]]. &lt;br /&gt;
*[[C++]]. &lt;br /&gt;
*[[Lenguaje de programación Java|Java]] [http://gborg.postgresql.org/project/pljava/projdisplay.php PL/Java web]. &lt;br /&gt;
*[[Perl|PL/Perl]]. &lt;br /&gt;
*[http://plphp.commandprompt.com/ plPHP]. &lt;br /&gt;
*[http://www.postgresql.org/docs/current/interactive/plpython.html PL/Python]. &lt;br /&gt;
*[http://raa.ruby-lang.org/project/pl-ruby PL/Ruby]. &lt;br /&gt;
*[http://plsh.projects.postgresql.org/ PL/sh]. &lt;br /&gt;
*[http://www.postgresql.org/docs/current/interactive/pltcl.html PL/Tcl]. &lt;br /&gt;
*[http://plscheme.projects.postgresql.org/ PL/Scheme]. &lt;br /&gt;
*Lenguaje para aplicaciones estadísticas [[Lenguaje R|R]] por medio de [http://www.joeconway.com/plr/ PL/R].&lt;br /&gt;
&lt;br /&gt;
PostgreSQL soporta funciones que retornan &amp;quot;filas&amp;quot;, 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). &lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;procedimientos almacenados&amp;quot; (stored procedures en inglés).&lt;br /&gt;
== Configuración ==&lt;br /&gt;
Lo primero que se debe hacer es crear un usuario con permiso de superadministrador, es sencillo:&lt;br /&gt;
#Primero nos autenticamos como root sudo su.&lt;br /&gt;
#Pasamos a ser el usuario postgres, el cual se crea cuando instalamos postgres su postgres&lt;br /&gt;
#Creamos el usuario nuevo con permisos de super administrador createuser -s -P nombre_usuario&lt;br /&gt;
El otro inconveniente que encontré fue que sólo me podía autenticar localmente desde  la PC donde instalé el postgres y necesitaba que desde cualquier PC de  la misma subred del lab se puedieran autenticar. Solución:&lt;br /&gt;
Primero  debemos decirle que no escuche peticiones solamente desde el localhost,  para eso editamos el fichero ubicado en  /etc/postgresql/8.3/main/postgresql.conf&lt;br /&gt;
  # sudo nano /etc/postgresql/8.3/main/postgresql.conf&lt;br /&gt;
Una vez que abrimos el archivo ubicamos la siguiente línea:&lt;br /&gt;
  #listen_addresses = ‘localhost’&lt;br /&gt;
Sustituimos esa línea por la siguiente:&lt;br /&gt;
  listen_addresses = ‘*’&lt;br /&gt;
Asi escuchará peticiones desde las direcciones permitidas en el fichero pg_hba.conf&lt;br /&gt;
#Ahora debemos decirle en el fichero pg_hba.conf cuales son las direcciones ip autorizadas a conectarse al server&lt;br /&gt;
  sudo nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
Si queremos que escuche desde una subred entera, agregamos la siguiente línea al final&lt;br /&gt;
  host    all     all     10.35.12.0/24   md5&lt;br /&gt;
Ahí  se está diciendo que para todas las bases de datos(primer all), todos  los usuarios que intenten loguearse(segundo all) desde los '''Ip 10.35.12.1 al 10.35.12.254''' se pueden loguear y se usará md5 .&lt;br /&gt;
Si en vez de la subred solamenmte nos interesara que se logueen desde el '''IP 10.35.12.26:host all all 10.35.12.26 255.255.255.255 trust'''&lt;br /&gt;
Y si se quisiera que desde cualquier PC de la UCI se  logueen:h'''ost all all 0.0.0.0 0.0.0.0 md5'''&lt;br /&gt;
Luego se reinicia el postgres para que coja la configuración que le hemos dado:&lt;br /&gt;
  sudo /etc/init.d/postgresql-8.3 restart.&lt;br /&gt;
Bueno,  hasta aquí sesolví lo que necesitaba,opcionalmente si quieres  administrar el server de Postgres desde la web puedes instalar el  paquete phppgadmin&lt;br /&gt;
  sudo apt-get install phppgadmin&lt;br /&gt;
Luego  para acceder desde la web lo haces con http://ip_servidor/phppgadmin ,  debes haber instalado el Apache para poder acceder por la web.&lt;br /&gt;
Nota:  Si al intentar acceder desde la web el server nos dice que no encuentra  la direccion /phppgadmin debemos decirle al Apache que cargue el  fichero de configuración del phppgadmin, para eso:&lt;br /&gt;
Editamos el fichero de configuración del Apache&lt;br /&gt;
  sudo nano /etc/apache2/apache/apache2.conf&lt;br /&gt;
Y le decimos que incluya al fichero de configuración del phppgadmin, para eso le añadimos la siguiente línea al final:&lt;br /&gt;
Include /etc/phppgadmin/apache.conf y reiniciamos el Apache:&lt;br /&gt;
  sudo /etc/init.d/apache2 restart&lt;br /&gt;
También existe un cliente para Postgres llamado PgAdmin, para instalarlo debes instalar el paquete pgadmin3 en la PC desde la cual deseas administrar el server.&lt;br /&gt;
Si en el mismo server tienes una aplicación programada con php y desde la  misma necesitas acceder al postgres, debes instalar los siguientes  paquetes:&lt;br /&gt;
php5, php5-pgsql(soporte de php para postgres), apache2(servidor web Apache), para ello ejecutas el siguiente comando:&lt;br /&gt;
  sudo apt-get install php5  php5-pgsql apache2&lt;br /&gt;
&lt;br /&gt;
== Productos alrededor de PostgreSQL  ==&lt;br /&gt;
&lt;br /&gt;
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: &lt;br /&gt;
&lt;br /&gt;
=== Alternativas Comerciales  ===&lt;br /&gt;
&lt;br /&gt;
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 [[Lenguaje de programación Java|Java]]. Entre otras empresas que utilizan Postgresql para comercializar se encuentra CyberTech (alemania), con su producto CyberCluster. &lt;br /&gt;
&lt;br /&gt;
=== GIS  ===&lt;br /&gt;
&lt;br /&gt;
;PostGIS &lt;br /&gt;
: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).&lt;br /&gt;
&lt;br /&gt;
=== Replicación  ===&lt;br /&gt;
&lt;br /&gt;
;PgCluster &lt;br /&gt;
:Replicación multi maestro.&lt;br /&gt;
&lt;br /&gt;
;Slony-I &lt;br /&gt;
:Replicación maestro esclavo.&lt;br /&gt;
&lt;br /&gt;
;PyReplica &lt;br /&gt;
:Replicación maestro esclavo y multi maestro asincrónica.&lt;br /&gt;
&lt;br /&gt;
=== Herramientas de administración  ===&lt;br /&gt;
&lt;br /&gt;
;[[PgAdmin3]] &lt;br /&gt;
:Entorno de escritorio visual.&lt;br /&gt;
&lt;br /&gt;
;[[PgAccess]] &lt;br /&gt;
:Entorno de escritorio visual.&lt;br /&gt;
&lt;br /&gt;
;PhpPgAdmin &lt;br /&gt;
:Entorno web.&lt;br /&gt;
&lt;br /&gt;
;psql &lt;br /&gt;
:Cliente de consola.&lt;br /&gt;
&lt;br /&gt;
;[http://www.nucleonsoftware.com Database Master] &lt;br /&gt;
:Entorno de escritorio visual.&lt;br /&gt;
&lt;br /&gt;
=== Búsqueda de texto  ===&lt;br /&gt;
&lt;br /&gt;
;Full text search &lt;br /&gt;
:Incluido en el núcleo a partir de la versión 8.3. &lt;br /&gt;
:Via [http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/ Tsearch2] y OpenFTS para versiones anteriores a la 8.3.&lt;br /&gt;
&lt;br /&gt;
=== XML  ===&lt;br /&gt;
&lt;br /&gt;
;[[XML]]/XSLT soporte &lt;br /&gt;
:Via [http://www.throwingbeans.org/postgresql_and_xml.html XPath extensiones en la sección contrib].&lt;br /&gt;
&lt;br /&gt;
== Premios  ==&lt;br /&gt;
&lt;br /&gt;
PostgreSQL ha recibido los siguientes reconocimientos: &lt;br /&gt;
&lt;br /&gt;
*[[1999 |1999 ]]LinuxWorld Editor's Choice Award for Best Database &lt;br /&gt;
*[[2000|2000]] Linux Journal Editors' Choice Awards for Best Database &lt;br /&gt;
*[[2002|2002]] Linux New Media Editors Choice Award for Best Database &lt;br /&gt;
*[[2003|2003]] Linux Journal Editors' Choice Awards for Best Database &lt;br /&gt;
*[[2004|2004]] Linux New Media Award For Best Database &lt;br /&gt;
*2004 Linux Journal Editors' Choice Awards for Best Database &lt;br /&gt;
*2004 ArsTechnica Best Server Application Award &lt;br /&gt;
*[[2005|2005]] Linux Journal Editors' Choice Awards for Best Database &lt;br /&gt;
*[[2006|2006]] Linux Journal Editors' Choice Awards for Best Database &lt;br /&gt;
*[[2008|2008]] Developer.com Product of the Year, Database Tool&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos  ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.postgresql.org/support/professional_support Asistencia técnica profesional para PostgreSQL] &lt;br /&gt;
*[http://www.postgresql.org Sitio web oficial de PostgreSQL] &lt;br /&gt;
*[http://wiki.woop.es/PostgreSQL Guía de administración básica de PostgreSQL bajo Linux] &lt;br /&gt;
*[http://www.pervasivepostgres.com/ Base de datos basada en PostgreSQL] &lt;br /&gt;
*[http://www.postgresql-es.org/ PostgreSQL-es.org] - Portal en español sobre PostgreSQL &lt;br /&gt;
*[http://www.arpug.com.ar Comunidad de usuarios y sitio de PostgreSQL de Argentina] &lt;br /&gt;
*[http://www.postgresql.org.pe/ Comunidad de usuarios y sitio de PostgreSQL de Perú] &lt;br /&gt;
*[http://www.postgresql.cl/ Comunidad de usuarios de PostgreSQL de Chile] &lt;br /&gt;
*[http://phppgadmin.sourceforge.net/ Cliente escrito en PHP]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:Bases_de_datos]] [[Category:Software_para_Linux]]&lt;/div&gt;</summary>
		<author><name>Asotolongo</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Federal_(Aguada_de_Pasajeros)&amp;diff=2410251</id>
		<title>Federal (Aguada de Pasajeros)</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Federal_(Aguada_de_Pasajeros)&amp;diff=2410251"/>
		<updated>2015-01-11T04:15:43Z</updated>

		<summary type="html">&lt;p&gt;Asotolongo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Localidad&lt;br /&gt;
|nombre            = Federal&lt;br /&gt;
|nombre completo   = Consejo Popular Federal&lt;br /&gt;
|país              = Cuba&lt;br /&gt;
|unidad            = Consejo Popular&lt;br /&gt;
|tipo_superior_1   = Cienfuegos&lt;br /&gt;
|superior_1        = [[Cienfuegos]]&lt;br /&gt;
|tipo_superior_2   = Aguada de Pasajeros&lt;br /&gt;
|superior_2        = [[Aguada de Pasajeros]]&lt;br /&gt;
|población         = 9 600&lt;br /&gt;
|imageninferior    = &lt;br /&gt;
|imageninferior_pie= &lt;br /&gt;
|fundación         = [[1965]]&lt;br /&gt;
}}'''Federal (Aguada)'''. Consejo Popular del municipio de [[Aguada de Pasajeros]], provincia de [[Cienfuegos]], su fundación data a [[1965]].&lt;br /&gt;
&lt;br /&gt;
==Ubicación==&lt;br /&gt;
&lt;br /&gt;
El Consejo Popular Federal está ubicado al Sureste del municipio [[Aguada de Pasajeros]], con una gran extensión territorial, donde limita al Norte: Consejo Popular [[Libertad (Aguada de Pasajeros)|Libertad]], al Sur:Consejo Popular [[Torula (Aguada de Pasajeros)|Torula]], al Este: Consejo Popular [[Primero de Mayo (Aguada de Pasajeros)|1ro de Mayo]]. &lt;br /&gt;
&lt;br /&gt;
== Reseña Histórica ==&lt;br /&gt;
&lt;br /&gt;
A principio del [[Triunfo de la Revolución]] se construyen edificios en la zona, nombrandole por los habitantes Reparto Federal, posteriormente en [[1965]] pasa a ser consejo popular federal, el cual se a ido desarrollando con la creación de una fábrica de hielo, vaquerías y organopónicos, asi como el incremento de la población hasta la actualidad.&lt;br /&gt;
&lt;br /&gt;
==Desarrollo Económico==&lt;br /&gt;
&lt;br /&gt;
Sus principales actividades están basadas en la ganadería, producción de hielo y organopónicos.&lt;br /&gt;
&lt;br /&gt;
==Desarrollo Social==&lt;br /&gt;
&lt;br /&gt;
===Educación===&lt;br /&gt;
&lt;br /&gt;
El consejo cuenta con tres centros primarios &amp;quot;Frank País&amp;quot;, &amp;quot;Julio A. Mella&amp;quot;, &amp;quot;Nguyen Van Troi&amp;quot;, dos círculos infantiles, una escuela especial y una escuela de economía.&lt;br /&gt;
&lt;br /&gt;
===Salud===&lt;br /&gt;
&lt;br /&gt;
La población es de 9600 habitantes contando con 7 Consultorios Médicos, un Policlínico y el Hospital &amp;quot;Alipio González&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Cultura=== &lt;br /&gt;
&lt;br /&gt;
En las tradiciones culturales del consejo popular se destacan el juego de dominó.&lt;br /&gt;
&lt;br /&gt;
=== Deporte ===&lt;br /&gt;
&lt;br /&gt;
Cuenta con la Dirección Municipal del Inder.&lt;br /&gt;
&lt;br /&gt;
== Fuente ==&lt;br /&gt;
*Técnico inversión Aguada de Pasajeros  &lt;br /&gt;
*Presidente  del Consejo Popular Federal.&lt;br /&gt;
[[Category:Historia_de_la_localidad]]&lt;/div&gt;</summary>
		<author><name>Asotolongo</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=CouchDB&amp;diff=1412139</id>
		<title>CouchDB</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=CouchDB&amp;diff=1412139"/>
		<updated>2012-03-05T00:03:51Z</updated>

		<summary type="html">&lt;p&gt;Asotolongo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software&lt;br /&gt;
|nombre=Apache CouchDB&lt;br /&gt;
|familia= Apache&lt;br /&gt;
|imagen=Couchdb.png&lt;br /&gt;
|tamaño= 200 px&lt;br /&gt;
|descripción= Base de Datos NoSQL&lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=&lt;br /&gt;
|desarrollador= Damien Katz&lt;br /&gt;
|diseñador=&lt;br /&gt;
|modelo de desarrollo=&lt;br /&gt;
|lanzamiento inicial=&lt;br /&gt;
|versiones=&lt;br /&gt;
|última versión estable=&lt;br /&gt;
|género=[[RDBMS]]&lt;br /&gt;
|sistemas operativos=&lt;br /&gt;
|idioma=&lt;br /&gt;
|licencia=[[Apache License, Version 2.0]]&lt;br /&gt;
|premios=&lt;br /&gt;
|web= http://couchdb.apache.org/&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
'''Apache CouchDB''' es una base de datos orientada a documentos que se pueden consultar utilizando [[JavaScript]] en una forma [[MapReduce]]. CouchDB también ofrece replicación incremental con detección de conflictos bi-direccional y resolución.&lt;br /&gt;
&lt;br /&gt;
==Que ofrece CouchDB==&lt;br /&gt;
&lt;br /&gt;
CouchDB ofrece una API [[JSON API]] que se puede acceder desde cualquier entorno que permite a las peticiones [[HTTP]]. Existen miles de librerías de terceros clientes que hacen que este sea aún más fácil a partir de su lenguaje de programación de su elección.CouchDB incorporado en la consola Web de administraciónse dirige directamente a la base de datos mediante solicitudes [[HTTP]]emitidas desde el navegador.&lt;br /&gt;
&lt;br /&gt;
CouchDB está escrito en [[Erlang]], un robusto ideal funcional lenguaje de programación concurrente para a construcción de sistemas distribuidos. [[Erlang]] permite un diseño flexible que es fácilmente escalable y extensible.&lt;br /&gt;
&lt;br /&gt;
==Base de datos documental sin schema==&lt;br /&gt;
&lt;br /&gt;
CouchDB guarda los datos en forma de documentos. Todo lo que almacenamos es un documento sin schema, lo cual permite guardar juntos documentos con distintos campos dentro de la misma [[Base de Datos]].&lt;br /&gt;
los documentos se almacenan en [[JSON]], un formato ligero, sencillo y cómodo de usar desde cualquier lenguaje. Ejemplo de típico documento de CouchDB:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;_id&amp;quot; : &amp;quot;234a41170621c326ec63382f846d5764&amp;quot;,&lt;br /&gt;
   &amp;quot;_rev&amp;quot; : &amp;quot;1-480277b989ff06c4fa87dfd0366677b6&amp;quot;,&lt;br /&gt;
   &amp;quot;tipo&amp;quot; : &amp;quot;articulo&amp;quot;,&lt;br /&gt;
   &amp;quot;titulo&amp;quot; : &amp;quot;Esto es una prueba&amp;quot;,&lt;br /&gt;
   &amp;quot;cuerpo&amp;quot; : &amp;quot;Soy el contenido de un artículo de   prueba&amp;quot;,  &lt;br /&gt;
   &amp;quot;tags&amp;quot; : [&amp;quot;cine&amp;quot;, &amp;quot;comedia&amp;quot;]&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
El '''_id''' sirve para que CouchDB lo distinga de otros documentos y vale para poder recuperarlo posteriormente. Es un string que puede contener lo que queramos aunque si no ponemos nada CouchDB generará un UUID.&lt;br /&gt;
El uso del UUID permite tener un id único UNIVERSALMENTE, lo cual es útil en el tema de la replicación.&lt;br /&gt;
El campo '''_rev''' es especial y sirve para que CouchDB controle la versión del documento. Cada vez que se guarde un cambio en un documento cambia el número de revisión (se incrementa el 1 de antes del – y el resto del número cambia). Esto es útil porque cada vez que se intente guardar un documento se pasa el numero de la versión que vamos a modificar, de forma que si CouchDB ve que estamos guardando un cambio sobre una revisión antigua da error y no permite continuar.&lt;br /&gt;
El resto de los campos se puede usar expresiones [[JSON]] válidas, como en el ejemplo donde se tiene el atributo '''tags''' que es un array de strings. Podría ser un diccionario:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
({“clave1″: “valor1″, “clave2″:”valor2″}),un número (2), etc…&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Al trabajar sin [[Schema]] el sistema se adapta a los cambios en la estructura de los documentos que es necesario almacenar. De esta forma el usuario puede despreocuparse de lo que se va introduciendo en la base de datos.&lt;br /&gt;
&lt;br /&gt;
==Consultable al estilo MapReduce==&lt;br /&gt;
&lt;br /&gt;
CouchDB no ofrece un lenguaje tipo [[SQL]] para realizar consultas sino que ofrece un sistema basado en [[MapReduce]] para poder obtener los datos. Este sistema se compone de una parte '''Map''' y una parte '''Reduce'''.&lt;br /&gt;
&lt;br /&gt;
=== Map y Reduce ===&lt;br /&gt;
&lt;br /&gt;
*'''Map''': Es una función que se ejecuta para cada documento. Esta función recibe como parámetro el propio documento y puede devolver pares de clave-valor. Un función puede devolver 0, 1 ó varios de estos pares para un único documento de entrada. A primera vista esto puede parece muy ineficiente, pero la función sólo se ejecuta una vez para cada documento y va almacenando los resultados en un índice que relaciona claves y valores de forma que en posteriores consultas se ataque sobre este índice. Por supuesto, si alguno de los documentos de la Base de Datos se modifica, se vuelve a rehacer el índice (pero sólo para los documentos modificados)&lt;br /&gt;
ejemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function(doc) {  &lt;br /&gt;
   for (var i in doc.tags)  &lt;br /&gt;
      emit(doc.tags[i],   doc);  &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
las funciones Map (y las Reduce) se definen en [[Javascript]].&lt;br /&gt;
CouchDB ofrece una arquitectura [[pluggable]] mediante la cual se puede crear estas en cualquier lenguaje sea [[Python]], [[Ruby]] y otros.&lt;br /&gt;
Esta función devuelve como clave cada uno de los tags y como valor el propio documento. De esta forma ejecutada sobre el doc de ejemplo daría 2 filas: una para “cine” y otra para “comedia” ambas teniendo como valor el propio documento.&lt;br /&gt;
Después sobre este conjunto de resultados se puede filtrar por clave o bien por un par de claves inicio y fin. De esta forma si se quiere sabes todos los artículos que son de cine filtraríamos aquellos que tienen la clave “cine”. &lt;br /&gt;
las claves pueden ser cualquier tipo de datos soportado por [[JSON]] como arrays, números, diccionarios… lo cual puede ser útil para realizar consultas más avanzadas.&lt;br /&gt;
*'''Reduce''': A grandes rasgos esta agrupa los resultados del Map para obtener un número. De esta forma si la parte Map anterior fuera asi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function(doc) {  &lt;br /&gt;
   for (var i in doc.tags)  &lt;br /&gt;
      emit(doc.tags[i],   1);&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;pre&amp;gt;  &lt;br /&gt;
Definicion de una funcion reduce:&lt;br /&gt;
&amp;lt;pre&amp;gt;        &lt;br /&gt;
 function(keys, values) {  &lt;br /&gt;
   return sum(values);  &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
La función Reduce recibe como entrada todas las claves y todos los valores. Con la funcion sum, proporcionada por CouchDB, vamos acumulando los 1 que devuelve la función map de forma que como resultado de esta obtenemos varias filas con cada uno de los tags como clave y el número de documentos que tienen este tag como valor.&lt;br /&gt;
En la nomenclatura de CouchDB un par de funciones [[MapReduce]] se llama view (no siendo obligatorio definir la parte reduce).&lt;br /&gt;
&lt;br /&gt;
==Accesible por REST==&lt;br /&gt;
&lt;br /&gt;
REST permite acceder a los datos de una forma muy sencilla a través de [[URLs]]. Por ejemplo para recuperar los documento con id ''6e1295ed6c29495e54cc05947f18c8af'' de la Base de Datos ''albums'' se accedería a la siguiente [[URL]] que devuelve el documento JSON correspondiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:5984/albums/6e1295ed6c29495e54cc05947f18c8af&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De forma similar si se quiere acceder a una view como la que comentábamos cuando explicábamos el Map y recuperar algún resultado iremos a la URL:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:5984/blog/_design/doc/_view/tag?key=”cine”&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esta [[URL]] quiere decir que se esta accediendo a la Base de Datos llama blog, para recuperar un design document (donde se guardan las views dentro de la Base de Datos) llamado doc y dentro de este a la view llamada tag. Después dentro de la view si se desea recuperar el resultado identificado por la clave cine.&lt;br /&gt;
En esta [[URL]] se obtiene un resultado similar a este:&lt;br /&gt;
&amp;lt;pre&amp;gt;     &lt;br /&gt;
 {  &lt;br /&gt;
   &amp;quot;total_rows&amp;quot;:   4,&lt;br /&gt;
   &amp;quot;offset&amp;quot;:   0,&lt;br /&gt;
   &amp;quot;rows&amp;quot;:[   {&lt;br /&gt;
      &amp;quot;id&amp;quot;:&amp;quot;9280b03239ca11af9cfedf66b021ae88&amp;quot;,&lt;br /&gt;
      &amp;quot;key&amp;quot;:&amp;quot;cine&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:{&lt;br /&gt;
         &amp;quot;_id&amp;quot;:&amp;quot;9280b03239ca11af9cfedf66b021ae88&amp;quot;,&lt;br /&gt;
         &amp;quot;_rev&amp;quot;:&amp;quot;1-0289d70fe05850345fd4e9118934a99b&amp;quot;,&lt;br /&gt;
         &amp;quot;tags&amp;quot;:[&amp;quot;cine&amp;quot;,&amp;quot;comedia&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
     }, {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;id&amp;quot;:&amp;quot;a92d03ff82289c259c9012f5bfeb639c&amp;quot;,&lt;br /&gt;
        &amp;quot;key&amp;quot;:&amp;quot;cine&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;:   {&lt;br /&gt;
           &amp;quot;_id&amp;quot;:&amp;quot;a92d03ff82289c259c9012f5bfeb639c&amp;quot;,&lt;br /&gt;
          &amp;quot;_rev&amp;quot;:&amp;quot;2-97377eef95764a4dbf107d8142187f53&amp;quot;,&lt;br /&gt;
          &amp;quot;tags&amp;quot;:[&amp;quot;cine&amp;quot;,&amp;quot;drama&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
   ]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
En '''key''' y '''value''' estan los resultado esperados: el tag y el documento que lo contiene. Aparte CouchDB incluye el id del documento que ha dado lugar a ese resultado (el que entra como parámetro en la función Map). Además se devuelve el numero total de filas devueltas y el offset del resultado.&lt;br /&gt;
En vez del parámetro key se le puede pasar a nuestra vista un par de parámetros startkey y endkey para obtener un rango de los resultados que nos interese (p.ej. en una view que devolviera como clave un string representando una fecha).&lt;br /&gt;
&lt;br /&gt;
==Replicación integrada==&lt;br /&gt;
&lt;br /&gt;
Una funcionalidad relativamente exótica que permite que las Bases de Datos de datos sincronicen sus datos de una forma muy sencilla (una simple llama [[REST]] la activa) con otra Base de Datos remota o local. De este modo se tiene de una forma sencilla una o mas réplicas de la BD para implementar arquitecturas de alta disponibilidad o de balanceo de carga.&lt;br /&gt;
De forma similar, el atributo _rev anteriormente comentado nos permite que CouchDB detecte casos en los que un mismo documento ha sido modificado en varias bases de datos a la vez (cada documento tendria un _rev diferente) &lt;br /&gt;
CloudTPS:&lt;br /&gt;
&lt;br /&gt;
==Transacciones escalable para aplicaciones Web en la nube==&lt;br /&gt;
&lt;br /&gt;
[[NoSQL]] Nube almacenes de datos proporcionan la escalabilidad y características de alta disponibilidad para aplicaciones web, pero al mismo tiempo que sacrificar la coherencia de datos. Sin embargo, muchas aplicaciones no pueden permitirse ninguna incoherencia de datos. [[CloudTPS]] es un gestor de transacciones escalable que garantiza las propiedades [[ACID]] completa de multi-elemento de operaciones emitidas por las aplicaciones web, incluso en la presencia de fallas en el servidor y las particiones de red. Ponemos en práctica este enfoque en la parte superior de las dos principales familias de las capas de datos escalables: [[Bigtable]] y [[SimpleDB]]. La evaluación del desempeño en la parte superior de [[HBase[[ (una versión de código abierto de Bigtable) en nuestro grupo local y Amazon SimpleDB en la nube de Amazon muestra que nuestro sistema de escalas de forma lineal al menos hasta 40 nodos en nuestras agrupaciones locales y 80 nodos en la nube de Amazon.&lt;br /&gt;
&lt;br /&gt;
== APIs para acceso a couchdb ==&lt;br /&gt;
Existen APIs en varios lenguajes para el acceso a las bases de datos CouchDB por ejemplo:[[JavaScript]], [[Erlang]], [[.Net]], [[Java]], [[perl]], [[PHP]],[[Python]], [[Ruby]], [[Lua]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Url para Descargar el SoftWare ==&lt;br /&gt;
&lt;br /&gt;
http://couchdb.apache.org/downloads.html&lt;br /&gt;
&lt;br /&gt;
== Fuentes  ==&lt;br /&gt;
&lt;br /&gt;
*http://www.4tic.com/blog/2011/06/29/couchdb-una-base-de-datos-diferente-2/&lt;br /&gt;
*http://softlibre.barrapunto.com/article.pl?sid=09/11/29/1420207&lt;br /&gt;
*http://couchdb.apache.org/&lt;br /&gt;
*http://wiki.apache.org/couchdb/Related_Projects&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:Software]] [[Category:Bases_de_datos]] [[Category:Software_para_Linux]]&lt;/div&gt;</summary>
		<author><name>Asotolongo</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=PostgreSQL&amp;diff=1335678</id>
		<title>PostgreSQL</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=PostgreSQL&amp;diff=1335678"/>
		<updated>2012-01-24T14:45:51Z</updated>

		<summary type="html">&lt;p&gt;Asotolongo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software&lt;br /&gt;
|nombre=PostgreSQL&lt;br /&gt;
|familia=&lt;br /&gt;
|imagen=Logo_postgresql.png&lt;br /&gt;
|tamaño=&lt;br /&gt;
|descripción=Sistema de gestión de base de datos relacional orientada a objetos y libre&lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=PostgreSQL Global Development Group&lt;br /&gt;
|desarrollador=&lt;br /&gt;
|diseñador=&lt;br /&gt;
|modelo de desarrollo=&lt;br /&gt;
|lanzamiento inicial=&lt;br /&gt;
|versiones=&lt;br /&gt;
|última versión estable=9.1 - [[12 de septiembre de 2011]]&lt;br /&gt;
|género=[[RDBMS]]&lt;br /&gt;
|sistemas operativos=[[Multiplataforma]]&lt;br /&gt;
|idioma=&lt;br /&gt;
|licencia=[[BSD]]&lt;br /&gt;
|premios=&lt;br /&gt;
|web=http://www.postgresql.org&lt;br /&gt;
}}'''PostgreSQL''' es un sistema de gestión de base de datos relacional orientada a objetos y libre, publicado bajo la licencia [[BSD]]. &lt;br /&gt;
&lt;br /&gt;
Como muchos otros proyectos de [[Código abierto]], el desarrollo de PostgreSQL no es manejado por una sola empresa sino que es dirigido por una comunidad de desarrolladores y organizaciones comerciales las cuales trabajan en su desarrollo. Dicha comunidad es denominada el PGDG (PostgreSQL Global Development Group). &lt;br /&gt;
&lt;br /&gt;
== Nombre del producto ==&lt;br /&gt;
&lt;br /&gt;
El uso de caracteres en mayúscula en el nombre PostgreSQL puede confundir a algunas personas a primera vista. Las distintas pronunciaciones de &amp;quot;SQL&amp;quot; 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 &amp;quot;Postgres&amp;quot;, 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 &amp;quot;post-Ingres&amp;quot;, y los autores originales también desarrollaron la base de datos Ingres. &lt;br /&gt;
&lt;br /&gt;
== Historia ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;tipos&amp;quot;, 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. &lt;br /&gt;
&lt;br /&gt;
La siguiente lista muestra los hitos más importantes en la vida del proyecto Postgres. &lt;br /&gt;
&lt;br /&gt;
*1986: se publicaron varios papers que describían las bases del sistema. &lt;br /&gt;
*1988: ya se contaba con una versión utilizable. &lt;br /&gt;
*1989: el grupo publicaba la versión 1 para una pequeña comunidad de usuarios. &lt;br /&gt;
*1990: se publicaba la versión 2 la cual tenía prácticamente reescrito el sistema de reglas. &lt;br /&gt;
*1991: publicación de la versión 3, esta añadía la capacidad de múltiples motores de almacenamiento. &lt;br /&gt;
*1993: crecimiento importante de la comunidad de usuarios, la cual demandaba más características. &lt;br /&gt;
*1994: después de la publicación de la versión 4, el proyecto terminó y el grupo se disolvió.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
En [[Octubre de 2005]], John Loiacono, vicepresidente ejecutivo de software en Sun Microsystems comentó: &amp;quot;No estamos yendo tras el OEM de Microsoft pero estamos viendo a PostgreSQL ahora&amp;quot;, aunque no se dieron especificaciones en ese momento. Para noviembre de 2005, Sun Solaris 10 (lanzamiento 6/06) incluía PostgreSQL. &lt;br /&gt;
&lt;br /&gt;
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]]. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
== Características ==&lt;br /&gt;
&lt;br /&gt;
Algunas de sus principales características son, entre otras: &lt;br /&gt;
&lt;br /&gt;
=== Alta concurrencia ===&lt;br /&gt;
&lt;br /&gt;
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 [editar] &lt;br /&gt;
&lt;br /&gt;
PostgreSQL provee nativamente soporte para: &lt;br /&gt;
&lt;br /&gt;
*Números de precisión arbitraria. &lt;br /&gt;
*Texto de largo ilimitado. &lt;br /&gt;
*Figuras geométricas (con una variedad de funciones asociadas) &lt;br /&gt;
*Direcciones [[IP]] ([[IPv4]] e [[IPv6]]). &lt;br /&gt;
*Bloques de direcciones estilo CIDR. &lt;br /&gt;
*Direcciones [[MAC]]. &lt;br /&gt;
*Arrays.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
=== Otras características ===&lt;br /&gt;
&lt;br /&gt;
*Claves ajenas también denominadas Llaves ajenas o Claves Foráneas (foreign keys). &lt;br /&gt;
*Disparadores (triggers): Un disparador o trigger se define en una acción especifica basada en algo ocurrente entro 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:&lt;br /&gt;
&lt;br /&gt;
**El nombre del disparador o trigger &lt;br /&gt;
**El momento en que el disparador debe arrancar &lt;br /&gt;
**El evento del disparador deberá activarse sobre... &lt;br /&gt;
**La tabla donde el disparador se activará &lt;br /&gt;
**La frecuencia de la ejecución &lt;br /&gt;
**La función que podría ser llamada&lt;br /&gt;
&lt;br /&gt;
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). &lt;br /&gt;
&lt;br /&gt;
*Vistas. &lt;br /&gt;
*Integridad transaccional. &lt;br /&gt;
*Herencia de tablas. &lt;br /&gt;
*Tipos de datos y operaciones geométricas. &lt;br /&gt;
*Soporte para transacciones distribuidas. Permite a PostgreSQL integrase en un sistema distribuido formado por varios recursos (p.ej, una base de datos PostgreSQL, otra [http://www.oracle.com/index.html Oracle], una cola de mensajes IBM MQ JMS y un ERP SAP) gestionado por un servidor de aplicaciones donde el éxito (&amp;quot;commit&amp;quot;) de la transacción goblal es el resultado del éxito de las transacciones locales.&lt;br /&gt;
&lt;br /&gt;
=== Funciones  ===&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Los disparadores (''triggers'' en inglés) son funciones enlazadas a operaciones sobre los datos. &lt;br /&gt;
&lt;br /&gt;
Algunos de los lenguajes que se pueden usar son los siguientes: &lt;br /&gt;
&lt;br /&gt;
*Un lenguaje propio llamado [http://www.postgresql.org/docs/8.4/interactive/plpgsql.html PL/PgSQL] (similar al [[PL/SQL]] de oracle). &lt;br /&gt;
*[[Lenguaje_de_Programación_C|C]]. &lt;br /&gt;
*[[C++]]. &lt;br /&gt;
*[[Lenguaje de programación Java|Java]] [http://gborg.postgresql.org/project/pljava/projdisplay.php PL/Java web]. &lt;br /&gt;
*[[Perl|PL/Perl]]. &lt;br /&gt;
*[http://plphp.commandprompt.com/ plPHP]. &lt;br /&gt;
*[http://www.postgresql.org/docs/current/interactive/plpython.html PL/Python]. &lt;br /&gt;
*[http://raa.ruby-lang.org/project/pl-ruby PL/Ruby]. &lt;br /&gt;
*[http://plsh.projects.postgresql.org/ PL/sh]. &lt;br /&gt;
*[http://www.postgresql.org/docs/current/interactive/pltcl.html PL/Tcl]. &lt;br /&gt;
*[http://plscheme.projects.postgresql.org/ PL/Scheme]. &lt;br /&gt;
*Lenguaje para aplicaciones estadísticas [[Lenguaje R|R]] por medio de [http://www.joeconway.com/plr/ PL/R].&lt;br /&gt;
&lt;br /&gt;
PostgreSQL soporta funciones que retornan &amp;quot;filas&amp;quot;, 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). &lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;[[procedimientos almacenados]]&amp;quot; (stored procedures en inglés).&lt;br /&gt;
== Configuración ==&lt;br /&gt;
Lo primero que debemos hacer es crear un usuario con permiso de superadministrador, es sencillo:&lt;br /&gt;
#Primero nos autenticamos como root sudo su.&lt;br /&gt;
#Pasamos a ser el usuario postgres, el cual se crea cuando instalamos postgres su postgres&lt;br /&gt;
#Creamos el usuario nuevo con permisos de super administrador createuser -s -P nombre_usuario&lt;br /&gt;
El otro inconveniente que encontré fue que sólo me podía autenticar localmente desde  la PC donde instalé el postgres y necesitaba que desde cualquier PC de  la misma subred del lab se puedieran autenticar. Solución:&lt;br /&gt;
Primero  debemos decirle que no escuche peticiones solamente desde el localhost,  para eso editamos el fichero ubicado en  /etc/postgresql/8.3/main/postgresql.conf&lt;br /&gt;
  # sudo nano /etc/postgresql/8.3/main/postgresql.conf&lt;br /&gt;
Una vez que abrimos el archivo ubicamos la siguiente línea:&lt;br /&gt;
  #listen_addresses = ‘localhost’&lt;br /&gt;
Sustituimos esa línea por la siguiente:&lt;br /&gt;
  listen_addresses = ‘*’&lt;br /&gt;
Asi escuchará peticiones desde las direcciones permitidas en el fichero pg_hba.conf&lt;br /&gt;
#Ahora debemos decirle en el fichero pg_hba.conf cuales son las direcciones ip autorizadas a conectarse al server&lt;br /&gt;
  sudo nano /etc/postgresql/8.3/main/pg_hba.conf&lt;br /&gt;
Si queremos que escuche desde una subred entera, agregamos la siguiente línea al final&lt;br /&gt;
  host    all     all     10.35.12.0/24   md5&lt;br /&gt;
Ahí  estamos diciendo que para todas las bases de datos(primer all), todos  los usuarios que intenten loguearse(segundo all) desde los '''Ip 10.35.12.1 al 10.35.12.254''' se pueden loguear y se usará md5 .&lt;br /&gt;
Si en vez de la subred solamenmte nos interesara que se logueen desde el '''IP 10.35.12.26:host all all 10.35.12.26 255.255.255.255 trust'''&lt;br /&gt;
Y si quisiéramos que desde cualquier PC de la UCI se  logueen:h'''ost all all 0.0.0.0 0.0.0.0 md5'''&lt;br /&gt;
Luego reiniciamos el postgres para que coja la configuración que le hemos dado:&lt;br /&gt;
  sudo /etc/init.d/postgresql-8.3 restart.&lt;br /&gt;
Bueno,  hasta aquí sesolví lo que necesitaba,opcionalmente si quieres  administrar el server de Postgres desde la web puedes instalar el  paquete phppgadmin&lt;br /&gt;
  sudo apt-get install phppgadmin&lt;br /&gt;
Luego  para acceder desde la web lo haces con http://ip_servidor/phppgadmin ,  debes haber instalado el Apache para poder acceder por la web.&lt;br /&gt;
Nota:  Si al intentar acceder desde la web el server nos dice que no encuentra  la direccion /phppgadmin debemos decirle al Apache que cargue el  fichero de configuración del phppgadmin, para eso:&lt;br /&gt;
Editamos el fichero de configuración del Apache&lt;br /&gt;
  sudo nano /etc/apache2/apache/apache2.conf&lt;br /&gt;
Y le decimos que incluya al fichero de configuración del phppgadmin, para eso le añadimos la siguiente línea al final:&lt;br /&gt;
Include /etc/phppgadmin/apache.conf y reiniciamos el Apache:&lt;br /&gt;
  sudo /etc/init.d/apache2 restart&lt;br /&gt;
También existe un cliente para Postgres llamado PgAdmin, para instalarlo debes instalar el paquete pgadmin3 en la PC desde la cual deseas administrar el server.&lt;br /&gt;
Si en el mismo server tendrás una aplicación programada con php y desde la  misma necesitas acceder al postgres, debes instalar los siguientes  paquetes:&lt;br /&gt;
php5, php5-pgsql(soporte de php para postgres), apache2(servidor web Apache), para ello ejecutas el siguiente comando:&lt;br /&gt;
  sudo apt-get install php5  php5-pgsql apache2&lt;br /&gt;
&lt;br /&gt;
== Productos alrededor de PostgreSQL  ==&lt;br /&gt;
&lt;br /&gt;
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: &lt;br /&gt;
&lt;br /&gt;
=== Alternativas Comerciales  ===&lt;br /&gt;
&lt;br /&gt;
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 [[Lenguaje de programación Java|Java]]. Entre otras empresas que utilizan Postgresql para comercializar se encuentra CyberTech (alemania), con su producto CyberCluster. &lt;br /&gt;
&lt;br /&gt;
=== GIS  ===&lt;br /&gt;
&lt;br /&gt;
;[[PostGIS]] &lt;br /&gt;
: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).&lt;br /&gt;
&lt;br /&gt;
=== Replicación  ===&lt;br /&gt;
&lt;br /&gt;
;[[PgCluster]] &lt;br /&gt;
:Replicación multi maestro.&lt;br /&gt;
&lt;br /&gt;
;[[Slony-I]] &lt;br /&gt;
:Replicación maestro esclavo.&lt;br /&gt;
&lt;br /&gt;
;[[PyReplica]] &lt;br /&gt;
:Replicación maestro esclavo y multi maestro asincrónica.&lt;br /&gt;
&lt;br /&gt;
=== Herramientas de administración  ===&lt;br /&gt;
&lt;br /&gt;
;[[PgAdmin3]] &lt;br /&gt;
:Entorno de escritorio visual.&lt;br /&gt;
&lt;br /&gt;
;[[PgAccess]] &lt;br /&gt;
:Entorno de escritorio visual.&lt;br /&gt;
&lt;br /&gt;
;[[PhpPgAdmin]] &lt;br /&gt;
:Entorno web.&lt;br /&gt;
&lt;br /&gt;
;psql &lt;br /&gt;
:Cliente de consola.&lt;br /&gt;
&lt;br /&gt;
;[http://www.nucleonsoftware.com Database Master] &lt;br /&gt;
:Entorno de escritorio visual.&lt;br /&gt;
&lt;br /&gt;
=== Búsqueda de texto  ===&lt;br /&gt;
&lt;br /&gt;
;Full text search &lt;br /&gt;
:Incluido en el núcleo a partir de la versión 8.3. &lt;br /&gt;
:Via [http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/ Tsearch2] y [[OpenFTS]] para versiones anteriores a la 8.3.&lt;br /&gt;
&lt;br /&gt;
=== XML  ===&lt;br /&gt;
&lt;br /&gt;
;[[XML]]/[[XSLT]] soporte &lt;br /&gt;
:Via [http://www.throwingbeans.org/postgresql_and_xml.html XPath extensiones en la sección contrib].&lt;br /&gt;
&lt;br /&gt;
== Premios  ==&lt;br /&gt;
&lt;br /&gt;
PostgreSQL ha recibido los siguientes reconocimientos: &lt;br /&gt;
&lt;br /&gt;
*[[1999 |1999 ]]LinuxWorld Editor's Choice Award for Best Database &lt;br /&gt;
*[[2000|2000]] Linux Journal Editors' Choice Awards for Best Database &lt;br /&gt;
*[[2002|2002]] Linux New Media Editors Choice Award for Best Database &lt;br /&gt;
*[[2003|2003]] Linux Journal Editors' Choice Awards for Best Database &lt;br /&gt;
*[[2004|2004]] Linux New Media Award For Best Database &lt;br /&gt;
*2004 Linux Journal Editors' Choice Awards for Best Database &lt;br /&gt;
*2004 ArsTechnica Best Server Application Award &lt;br /&gt;
*[[2005|2005]] Linux Journal Editors' Choice Awards for Best Database &lt;br /&gt;
*[[2006|2006]] Linux Journal Editors' Choice Awards for Best Database &lt;br /&gt;
*[[2008|2008]] Developer.com Product of the Year, Database Tool&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos  ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.postgresql.org/support/professional_support Asistencia técnica profesional para PostgreSQL] &lt;br /&gt;
*[http://www.postgresql.org Sitio web oficial de PostgreSQL] &lt;br /&gt;
*[http://wiki.woop.es/PostgreSQL Guía de administración básica de PostgreSQL bajo Linux] &lt;br /&gt;
*[http://www.pervasivepostgres.com/ Base de datos basada en PostgreSQL] &lt;br /&gt;
*[http://www.postgresql-es.org/ PostgreSQL-es.org] - Portal en español sobre PostgreSQL &lt;br /&gt;
*[http://www.arpug.com.ar Comunidad de usuarios y sitio de PostgreSQL de Argentina] &lt;br /&gt;
*[http://www.postgresql.org.pe/ Comunidad de usuarios y sitio de PostgreSQL de Perú] &lt;br /&gt;
*[http://www.postgresql.cl/ Comunidad de usuarios de PostgreSQL de Chile] &lt;br /&gt;
*[http://phppgadmin.sourceforge.net/ Cliente escrito en PHP]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]] [[Category:Bases_de_datos]] [[Category:Software_para_Linux]]&lt;/div&gt;</summary>
		<author><name>Asotolongo</name></author>
		
	</entry>
</feed>