Este documento resume la evolución de PostgreSQL desde la versión 7.1 hasta la 9.4, destacando las mejoras clave en cada versión como soporte para nuevos tipos de datos, réplica de datos, rendimiento y escalabilidad. También compara las características de PostgreSQL con otros sistemas de gestión de bases de datos, concluyendo que PostgreSQL ha evolucionado para mantenerse al día con los estándares SQL mientras ofrece características avanzadas similares a los sistemas propietarios.
1. Arkadios K&T, Villavicencio 361, Oficina #112, Barrio Bellas Artes,
Santiago – Chile
www.arkadios.cl | contacto@arkadios.cl | (+56 2) 2733 97 00
Camino y Evolución
hasta PostgreSQL 9.4
Anthony R. Sotolongo León
Consultor en Gestión de la Información
http://anthonysotolongo.wordpress.com
2. • Características globales.
• Evolución de las principales
características de PostgreSQL.
• “Mejoras” de la versión 9.5.
• Comparación de características con
otros gestores.
• Conclusiones.
Agenda:
3. • Estándar SQL:
SQL92,SQL99,SQL2003,SQL2008.
• Tipos de datos bases, complejos y definidos
por el usuario (compuestos , enum…).
• Vistas, Manejo de usuarios.
• Réplica de datos y HA.
• Portabilidad.
• Optimizador inteligente.
Característica globales de
PostgreSQL.
5. Evolución de las versiones
PostgreSQL
• Soporte de versiones 5 años.
• Últimas versiones 9.4.5, 9.3.10, 9.2.14,
9.1.19, 9.0.23!
• Ciclo de desarrollo de una nueva versión
es de 1 año aproximadamente.
(9.2,9.3,9.4)
• Ciclo de actualización de una rama 3
meses aproximadamente(9.2.1,9.2.2).
6. Evolución de las versiones
PostgreSQL
www.postgresql.org/support/submitbug/
BUGS
7. PostgreSQL 7.1 [2001]
• Write-Ahead Log (WAL).
• Se eliminaron limitaciones antiguas sobre
SQL.
• Permitieron hacer consultas más
complejas.
8. PostgreSQL 7.2 [2002]
• VACUUM mejorado.
• Optimizador de consultas mejorado.
• Se permitieron ver las estadísticas del
servidor con detalles.
9. PostgreSQL 7.3 [2002]
• Schemas.
• Consultas preparadas.
• Privilegios sobre las funciones.
• Herencia de tablas.
10. POSTGRESQL
PostgreSQL 7.4 [2003]
• Mejoran la búsqueda de texto
contrib/tsearch2.
• Agregan el information schema.
• Considerables mejoras de
optimización con subconsultas.
• Soporte tipos de datos IPv6(cidr, inet, macaddr).
12. PostgreSQL 8.1 [2005]
• Mejoras del uso de índices.
• Creación de ROLES.
• Particionado de tablas.
13. PostgreSQL 8.2 [2006]
• Mejoras en las operaciones de ordenamiento.
• Cláusula RETURNING a las operaciones INSERT,
DELETE,UPDATE.
DELETE FROM tabla WHERE nom=‘Juan’
RETURNING *;
• Creación de índices sin bloqueos a operaciones
INSERT, DELETE,UPDATE.
14. PostgreSQL 8.3 [2008]
• Tipos de datos XML, ENUM, UUID.
• Mejoras en la operaciones con cursores.
• Búsqueda de texto pasa al núcleo.
15. PostgreSQL 8.4 [2009]
• Funciones ventanas.
SELECT empid, departamento, salario,
edad, avg(salario) OVER (PARTITION BY
departamento)
AS salario_medio FROM empleado ;
• Cláusula WITH(CTE).
• Permisos por columnas a usuarios.
16. PostgreSQL 9.0 [2010],
Replication Capabilities
• Replicación nativa asincrónica (Hot
Standby & Streaming Replication).
• Permisos por esquemas.
• Triggers por columnas y condicionales.
• pg_upgrade.
20. PostgreSQL 9.1 [2011]
Extensibility & Replication
• Triggers en vistas.
CREATE TRIGGER trigger1 INSTEAD OF
INSERT OR UPDATE OR DELETE ON vista
FOR EACH ROW EXECUTE PROCEDURE
funcion();
21. PostgreSQL 9.1 [2011]
Extensibility & Replication
• Mejoras a las clausula WITH.
WITH mover_filas as
(DELETE FROM persona WHERE edad>0
and edad<10 returning *)
INSERT INTO persona_logs SELECT *
from mover_filas;
23. PostgreSQL 9.3 [2013]
Reliability and Integration
• Vistas materializadas.
“Materialized views is one of the most
effective ways to speed up queries against
large data sets…”
Gregory Smith
24. PostgreSQL 9.3 [2013]
Reliability and Integration
CREATE MATERIALIZED VIEW nombre AS select …;
REFRESH MATERIALIZED VIEW vmaterializada;
25. PostgreSQL 9.3 [2013]
Reliability and Integration
• Triggers sobre eventos.
CREATE FUNCTION trigger_evento() RETURNS
event_trigger AS $$
BEGIN
RAISE NOTICE 'Evento: % , Horario: %',
tg_tag,now() ;
INSERT INTO registro_evento VALUES
(tg_tag,now());
END;
$$ LANGUAGE plpgsql;
26. PostgreSQL 9.3 [2013]
Reliability and Integration
• Vistas simples auto actualizables(SQL-92):
• No presenta cláusula DISTINCT.
• Cada columna que muestra la vista es la referencia a
una columna de la tabla, y cada columna debe aparecer
al menos una vez.
• El FROM contiene exactamente una relación base.
• No presenta cláusulas GROUP BY o HAVING.
• No realiza operaciones sobre conjuntos (UNION,
INTERSECT o EXCEPT).
27. PostgreSQL 9.3 [2013]
Reliability and Integration
• Permite a los FDW la inserción, actualización y
eliminación sobre tablas foráneas.
• Implementa el estándar SQL LATERAL.
28. PostgreSQL 9.4 [2014]
Flexibility, Scalability and
Performance
• JSONB.
CREATE TABLE tablajsonb (atributo JSONB);
SELECT atributo->'edad'::text,atributo-
>'nombre_apellidos' FROM tablajsonb WHERE
atributo->'edad'::text='0‘
Índices sobre JSONB
29. PostgreSQL 9.4 [2014]
Flexibility, Scalability and
Performance
• LOGICAL DECODING (replica de datos).
• Mejoras en el SQL (FILTER).
select substr(last_name, 1,1),
count(*) as all,
count(*) filter ( where substr(first_name, 1,1) =
substr(last_name, 1,1)) from actor group by 1 order
by 1;
31. Mejoras de versión PostgreSQL
9.5 [2015]
• Row-Level Security Policies
• BRIN Indexes
• GROUPING SETS, CUBE and ROLLUP
• INSERT ... ON CONFLICT DO
NOTHING/UPDATE ("UPSERT“ o “MERGE”)
32. Comparación a otros
gestores
Caracterís
ticas/Gest
or
SQL
Server
DB2 ORACLE MySQL PostgreSQL
Plataform
a
Windows Windows,li
nux, AIX,
mac OS
Windows,li
nux, Mac
OS,UNIX,
AIX
Windows,l
inux,UNIX
, FreeBSD,
AIX, mac
os
Windows,linux,
Mac OS,UNIX,
FreeBSD, AIX
Modelo Relacional Relacional Relacional Relacional Objeto-
Relacional
Procedura
l
Language
T-sql SQL PL PL/sql MySQL PL Pl/pgsql,
PL/python,
PL/sh, PL/perl,
PL/TCL, PLR, ect
Table
Partition
si si si si si
Vistas Normal, Normal, Normal, Normal Normal,
33. Comparación a otros
gestores
Caracte
rísticas/
Gestor
SQL Server DB2 ORACLE MySQL PostgreSQL
Objetos Tablas,
vistas,
index,
domain,
triggers,seq
uence
Tablas,
vistas,
index,
domain,
triggers,se
quence
Tablas,
vistas,
index,
domain,
triggers,se
quence
Tablas,
vistas,
index,
domain,
triggers
Tablas, vistas,
index, domain,
rules,triggers,seq
uence
Modifica
ción
Por el dueño Por el
dueño
Por el
dueño
Por
dueño/P
or
usuarios
Por usuarios
HA si si si si si
PITR si si si si si
Acceso si si si Si Si
34. Comparación a otros
gestores
Caracterís
ticas/Gest
or
SQL
Server
DB2 ORACLE MySQL PostgreSQL
Tipos de
datos
avanzado
s
XML,Spatial
Types,
uniqueident
ifier,
binary,geog
raphy ,UDT,
sql_variant
XML,bina
ry,GRAPH
IC,spatial
, UDT
XML,JSON,
URL,UDT,
IMAGE,
spatial,
ENUM
binary,sp
atial,
ENUM
XML, JSON,
Bytea,enum,
geometric,netw
ork, uuid, range,
UDT
Niveles
de
Seguridad
Autenticaci
ón, Objetos,
Columnas y
Filas
Autentica
ción,
Objetos,
Columna
s y Filas
Autenticac
ión,
Objetos,
Columnas
y Filas
Autentica
ción,
Objetos,
Columnas
Autenticación,
Objetos,
Columnas y Filas
35. Comparación a otros
gestores: SQL Avanzado
CTE
WINDOWS FUCNTIONS
SETS, CUBE and ROLLUP
Lateral
Offset
Merge-Upsert
1990 1995 2000 2005 2010 2015 2020
SQL Server
DB2
ORACLE
MySQL
PostgreSQL
41. Arkadios K&T, Villavicencio 361, Oficina #112, Barrio Bellas Artes,
Santiago – Chile
www.arkadios.cl | contacto@arkadios.cl | (+56 2) 2733 97 00
Camino y Evolución
hasta PostgreSQL 9.4
Anthony R. Sotolongo León
Consultor en Gestión de la Información
http://anthonysotolongo.wordpress.com