PostgreSQL, robusto como un elefante.

Tema: 

¿Qué es PostgreSQL?

La respuesta simple es que PostgreSQL es un poderoso sistema manejador de bases de datos. Es decir, es un sistema diseñado para manejar (administrar) grandes cantidades de datos.

PostgreSQL tiene más de 15 años de desarrollo activo y se ha ganado la reputación de ser confiable (de hecho, hay compañías que aseguran haber tenido corriendo postgres en producción durante varios años y con altas tasas de actividad sin haber experimentado problemas de ningún tipo) y mantener la integridad de los datos.

Además corre en la mayoría de los Sistemas Operativos más utilizados incluyendo, Linux, varias versiones de UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, SunOS, Tru64), BeOS y Windows.

Por si eso fuera poco, cumple la prueba ACID (Atomicity, Consistency, Integrity, Durability) y tiene soporte completo para llaves foraneas, joins, vistas, subconsultas (incluyendo subconsultas en la clasula FROM), triggers, y procedimientos almacenados (en varios lenguajes). Incluye la mayoría de los tipos de datos de los estándares SQL92 y SQL99 (INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, TIMESTAMP, entre otros). Tambien soporta almacenamiento de objetos grandes (imágenes, sonido y video). Así, como sus propias interfaces de programación para C/C++, Java, Perl, Python, Ruby, Tcl, ODBC, entre otros, y una documentación muy completa (aunque la documentación se encuentra en ingl&eactute;s hay un proyecto de traducción gestándose).

PostgreSQL como una solución real.

PostgreSQL se ha preocupado por ser una solución real a los complejos problemas del mundo empresarial y a la vez mantener la eficiencia al consultar los datos. Con ese fin, se han desarrollado y añadido a PostgreSQL las más interesantes y útiles características que antes sólo podían hallarse en sistemas manejadores de bases de datos comerciales con costos muy elevados; lo cual lo coloca, como su lema indica, como "el manejador (o gestor) de bases de datos de código abierto más avanzado del mundo".

Algunas de las características que posee PostgreSQL son:

  • Multi-Version Concurrency Control (MVCC, que sirve para lograr un control de concurrencia tan eficiente que en la gran mayoría de los casos no se requiere de bloqueos);
  • un sofisticado optimizador de consultas, que es capaz de resolver consultas complejas en tiempos comparables a los de los mejores DBMS (una última adición en este campo es la habilidad de usar varios índices para resolver consultas sobre una misma tabla);
  • herencia de tablas (aunque la orientación a objetos no esta completa esta carácteristica se la puede utilizar para lograr el particionamiento de tablas en varios discos mediante una técnica llamada "restricciones excluyentes");
  • el sistema de reglas (el sistema re-escritor de consultas), permite identificar ciertas acciones sobre una tabla y reemplazarlas por otras o ejecutar adicionales (podemos, por ejemplo, crear una regla para que al hacer INSERT sobre una vista se reemplaze por un INSERT sobre la tabla en la que se basa la vista, dando así la impresión de vistas actualizables);
  • varios lenguajes procedurales como: Java, Perl, Python, Ruby, Tcl, C/C++, así como su lenguaje nativo (PL/PGSQL) que es muy similar al PL/SQL de Oracle;
  • módulos contribuidos entre los que se cuentan OpenFTS (un m&eactute;todo para indexación de texto completo) y PostGIS (que añade objetos geográficos lo cual permite a PostgreSQL ser usado en proyectos de bases de datos para sistemas de información geográfica, por ejemplo los que usan sistemas repartidores), también modulos de criptografía (SHA1, MD5);
  • permite la creación de tipos de datos personalizados;
  • tipo de dato SERIAL (autoincremental);
  • LIMIT/OFFSET para lograr conjuntos de resultados parciales;
  • índices compuestos, unicos, parciales, funcionales (sobre funciones) que pueden ser definidos como B-tree, R-tree, hash o GiST, y toda la infraestructura necesaria para extender estos tipos de índices;
  • punto de recuperación en el tiempo (PITR);
  • tablespaces;
  • replicación asincrónica;
  • transacciones anidadas (savepoints);
  • respaldos en línea (respaldos incrementales);
  • COMMIT en dos fases (2PC);
  • escritura adelantada de registros (WAL) para evitar perdidas de datos en caso de falla de energía, fallos del Sistema Operativo, y fallas de hardware;
  • juegos de carácteres internacionales, codificación de caracteres multibyte y Unicode;
  • carcterísticas para la integridad de los datos, tales como: claves primarias, llaves foraneas con capacidad de actualizar en cascada o restringir la acción en caso que existan hijos, restricción check, restricción de unicidad y restricción not null; todas las restricciones se pueden postergar hasta el momento de terminar la transacción;
  • interfaces de programación para Java (JDBC), ODBC, Perl, Python, Ruby, C, C++, PHP, Lisp, Scheme, y Qt solo para nombrar algunas.

La implementación SQL de postgres se sujeta fuertemente a los estándares ANSI-SQL 92/99 (y últimamente se han añadido características del SQL2003). Es altamente escalable; tanto en lo que se refiere a cantidad de datos que puede manejar (se reportan ambientes de producción activos que manejan incluso más de 4 Terabytes); así como, al número de usuarios concurrentes que puede acomodar.

¿Cúantos datos puede acomodar PostgreSQL?

A continuación se muestran algunos valores límites de PostgreSQL:

  • Tamaño de una base de datos       - Ilimitada (Limitada solo por el espacio en disco)
  • Tamaño de una tabla                      - 32 Terabytes
  • Tamaño de una fila                          - 1.6 Terabytes
  • Tamaño de un campo                      - 1 Gigabyte
  • Número de filas en una tabla           - Ilimitada (Limitada solo por el espacio en disco)
  • Número de columnas en una tabla  - de 250 - 1600 dependiendo de los tipos de datos
  • Número de índices en una tabla      - Ilimitada (Limitada solo por el espacio en disco)

 Por todo esto y más PostgreSQL se ha ganado la admiración y el respeto de sus usuarios, así como el reconocimiento de la industria (ganador del Linux New Media Award for Best Database System y 3 veces ganador del The Linux Journal Editors' Choice Award for best DBMS).

¿Quién usa PostgreSQL?

En la página de PostgreSQL se pueden encontrar algunos casos de estudio de empresas que han optado por PostgreSQL y se estan recopilando más experiencias que se irán añadiendo a la página. Además es un secreto a voces (los que dudan pueden usar google para confirmar) que los dominios .ORG y .INFO corren bajo postgres, tambien la página TravelPost.com y Rambler.ru, así como ciertas agencias gubernamentales de Estados Unidos (tales como: City of Garden Grove, CA; National Gallery; Media Library project of the Library of Congress; US Army; Dept of Forestry; State of California; NCSA; National Weather Hidrology Laboratory), The Oxford University Computing Services, Sandia Labs, solo por mencionar algunos pero se pueden encontrar aun más alrededor del mundo.

En Ecuador, el único caso que conozco es el del Colegio Cristóbal Colón.

¿Existe soporte para PostgreSQL?

Soporte de la comunidad. El principal soporte de PostgreSQL lo provee la comunidad a trav&eactute;s de las listas de correo (lo esperamos en la lista en español) y los canales de IRC (tambi&eactute;n tenemos nuestro canal en español).

Soporte comercial. Tambien existen varias empresas que proveen soporte comercial para postgres, entre las que tenemos: Fujitsu (Australia); Hub.org (Canadá); PostgreSQL, Inc. (Canadá); credativ GmbH (Alemania); Afilias Limited (Irlanda); Software Research Associates (Japón, con subsidiarias en USA); Delta-Soft LLC (Rusia); 2ndQuadrant (Reino Unido); 800 Pound Gorilla (USA); Command Prompt, Inc. (USA); EnterpriseDB (USA); Greenplum (USA); Pervasive Software, Inc. (USA); RedHat, Inc. (USA) y, hace unos días atras, Sun Microsystems anunció que daría soporte a sus usuarios de Solaris. Además, hace poco SRA me comentó su deseo de ingresar al mercado latino americano (en cuanto a eso; es probable que una empresa ecuatoriana, si los t&eactute;rminos se dan, de a conocer una relación de negocios con SRA en ese sentido).

Por supuesto, también existimos quienes damos soporte a nivel individual.

¿Cúal es el costo de usar PostgreSQL?

En realidad el único costo asociado a PostgreSQL es el de conocerlo, el código fuente de postgres está disponible bajo la más liberal de las licencias del Open Source: la licencia BSD. Bajo esta licencia tenemos la libertad de usar, modificar y distribuir postgres en cualquier forma que queramos, en productos comerciales o no comerciales.

Conclusiones

Al llegar a su versión 8.1 (lanzada en noviembre del 2005), PostgreSQL se ha convertido en una herramienta muy versátil, que en vez de atarnos a sus funcionalidades se adapta a nuestras necesidades.

Además; su extraordinario soporte que incluye desde reporte y recuperación de fallas (he visto casos en los que fallos han sido solucionados en solo 3 horas), instrucciones sobre como usar tal o cual característica y optimización de consultas. Convierten a PostgreSQL en un DBMS de nivel empresarial, que puede ser usado en casi todo tipo de sistemas (desde los más comunes sistemas de facturación hasta páginas web y los más complejos sistemas científicos).

Conserva el alto rendimiento sin sacrificar la estabilidad ni la integridad de los datos, como dijo uno de sus usuarios "simplemente funciona".

Comentarios

PostgreSQL es un manejador

Imagen de kfirmad Kronsage

PostgreSQL es un manejador de base de datos muy confiable, actualmente lo tengo soportando la información de más de 1500 personas via web y ha respondido a la altura.

Por eso PostgreSQL es mi elección :D

 

LINUX ES LIBERTAD!!

----------------------------
Cada día más Grande... y no lo detiene nadie!!

Otras funciones

Otras funcionalidades muy útiles:

Procesamiento de documentos XML.
Tablas distribuidas con dblink.
Transacciones distribuidas con dblink.
Consultas SQL utilizando el arbol de herencia.

PostgreSQL es la base de datos orientada a objetos más avanzada que se puede encontrar en la actualidad.
No duden en utilizarla en cualquier sistema empresarial.