lunes, 19 de septiembre de 2011

Lo nuevo en PostgreSQL 9.1

El pasado 12 de septiembre, el equipo de desarrollo del motor de base de datos de código abierto más robusto del mundo (Lo siento MySQL, desde que estás en manos de Oracle ya no eres de mi favoritos) presentó la versión 9.1 de PostgreSQL.

Esta nueva edición trae bastantes novedades, donde se destaca particularmente, la -por fin- inclusión de la replicación activa. Una característica que muchos negocios que emplean bases de datos de misión crítica pedían a gritos  desde hace ya bastante rato.


Pero veamos qué nos trae la nueva edición de acuerdo a la siguiente edición:

  • Replicación Sincrónica: permitiendo alta disponibilidad con consistencia sobre multiples servidores.  
  • Regionalización por columna: soportando correctamente el ordenamiento por lenguaje en las bases de datos, tablas o columnas.
  • Tablas unlogged: importante incremento del rendimiento para datos efímeros.
  • Indexamiento de los K vecinos más próximos (K-Nearest-Neighbor):  índices sobre "distancia" para consultas rápidas de ubicación y búsquedas de texto. (Algoritmo KNN http://es.wikipedia.org/wiki/Knn)
  • Nivel de Aislamiento Serializable a través de "Snapshots": mantiene consistentes multiples transacciones concurrentes sin el uso de bloqueos, usando "verdadera serialización"
  • Writeable Common Table Expressions: ejecuta actualizaciones multi-fases complejas en una simple consulta
  • Security-Enhanced Postgres: despliega seguridad de nivel militar y control de acceso mandatorio.

Como podrá notar el lector los cambios no son pocos pero tal y como decíamos anteriormente, destaca la posibilidad de usar replicación síncrona:

Permitiendo alta disponibilidad con consistencia a través de múltiples nodos, mediante la implementación de clústeres de servidores PostgreSQL usando replicación sincrónica. La replicación síncrónica soporta "2-safe replication" que asegura que las transacciones han sido confirmadas por una réplica del servidor maestro, limitando grandemente la posibilidad de perdida de datos. Solo PostgreSQL soporta replicación sincrónica a nivel de transacciones, permitiendo a los usuarios.

En principio (A riesgo de emitir un juicio) podemos decir que PostgreSQL 9.1 apostó a la replicación síncrona confiable antes que el rendimiento… No estoy seguro de cómo el servidor maneje un “failover” (Hacer el cambio al otro servidor en caso de falla) pero al menos la estrategia de recuperación de uno de los nodos sí fue pensada para ser más optima y rápida que un simple bloqueo  a la base de datos y la realización de una copia de seguridad.

Sin embargo, otras alternativas de replicación síncrona como PGPool-II parecen tener todavía la ventaja sobre la replicación nativa, ya que además de ofrecer la función de mantener arriba una o más instancias de la base de datos listas para entrar en caso de, ofrece un plus al rendimiento: Capacidad de balancear la carga, consultas paralelizadas y pool de conexiones.

Con lo anterior, quiero decir que PostgreSQL va por muy buen camino en cuanto a alta disponibilidad se refiere, con un horizonte claro y teniendo como premisa la integridad de los datos y la confiabilidad pero todavía estamos -un poquito- lejos de soluciones tan sofisticadas como Oracle RAC (Claro si estás dispuesto a pagar los pocos miles de dólares que vale una solución de Oracle).

Por lo demás, PostgreSQL 9.1 se afirma como el motor de base de datos más robusto del mundo del código abierto.

PostgreSQL 9.1 en Fedora

En Fedora PostgreSQL 9.1 está disponible en el repositorio Rawhide. Se espera que sea parte integral de Fedora 16.

1 comentario: