PostgreSQL es un sistema de gestión de bases de datos relacional orientado a objetos y libre, publicado bajo la licencia PostgreSQL, similar a la BSD o la MIT.
Como muchos otros proyectos de código abierto, el desarrollo de PostgreSQL no es manejado por una empresa o persona, sino que es dirigido por una comunidad de desarrolladores que trabajan de forma desinteresada, altruista, libre o apoyados por organizaciones comerciales.
Algunas de sus principales características son:
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.
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.
Sobre la nueva versión de PostgreSQL 11.0
Hace algunos días fue lanzada la nueva versión de PostgreSQL la cual ha llegado a su versión PostgreSQL 11 con la cual añade nuevas características y sobre todo varias correcciones de errores.
Las principales novedades es que se centraron en la gestión de bases con un gran volumen de datos.
Partición mejorada
PostgreSQL ya permite la partición durante mucho tiempo, se trata de almacenar datos en varias tablas separadas que están lógicamente en una sola tabla.
El usuario de la base de datos no ve esta distribución y esto hace posible almacenar datos en varios sistemas de archivos para tener diferentes características de acuerdo con los datos. Por ejemplo, los datos recientes se almacenan en SSD y los datos más antiguos se almacenan en el disco duro.
Era posible hacer particiones en listas de datos o intervalos. Ahora es posible hacer particiones en un hash de la clave para distribuir los datos aleatoriamente.
Esto hace posible distribuir operaciones de lectura y escritura en varios almacenes.
Las claves primarias y externas, así como los índices y desencadenantes, ahora pueden declararse en el nivel de la tabla principal y se reflejarán en todas las tablas miembro de la partición.
PostgreSQL ahora también puede cambiar los datos de la partición automáticamente si se cambia la clave de distribución.
El rendimiento de lectura de las tablas particionadas también se ha mejorado con una nueva estrategia de eliminación de particiones.
La característica UPSERT ahora está disponible para tablas particionadas.
Disponibilidad de transacciones en procedimientos almacenados
Los procedimientos almacenados han estado disponibles en PostgreSQL durante mucho tiempo, pero no fue posible crear transacciones allí. Ahora es posible.
Rendimiento mejorado
Ahora se pueden hacer varias operaciones en paralelo para aprovechar los muchos núcleos de los procesadores actuales.
Por lo tanto, las tablas particionadas se pueden leer en paralelo, pero también cuando una consulta SELECT incluye una cláusula UNION .
La creación de índices también está en paralelo, así como otros comandos del Lenguaje de definición de datos (DDL) , como CREATE TABLE o CREATE MATERIALIZED VIEW.
Compilacion sobre la marcha
Un compilador de tiempo está disponible. Puede optimizar consultas complejas para mejorar su velocidad de ejecución. PostgreSQL usa el compilador LLVM para este propósito.
Para activarlo, deben de agregarlo jit=onal archivo de configuración o definir la variable de sesión SET jit=on.
Simplificación = velocidad
Ya no es necesario volver a escribir la tabla completa cuando se realiza la llamada ALTER TABLE … ADD COLUMN … DEFAULT … con un valor predeterminado que no es NULL . Esto mejora en gran medida la velocidad de ejecución de este comando, si la tabla es grande.
Experiencia de usuario
Las palabras clave quity exit ahora son reconocidas por la interfaz de línea de comandos (psql) para completar el proceso, además de \q.
Para poder obtener esta nueva versión pueden visitar el siguiente enlace.