1. PostgreSQL 2011
PostgreSQL 9.1
Ernesto Quiñones Azcárate
Regional Press Contact para Perú de PostgreSQL
pe@postgresql.org
http://www.postgresql.org 1/19
pe@postgresql.org
2. PostgreSQL 9.1
¿Qué nuevo nos trae?
http://www.postgresql.org 2/19
pe@postgresql.org
3. PostgreSQL 9.1
● Replicación Síncrona
● Soporte de Tablas foráneas
● Internacionalización por Campo/Columna
● Tablas sin Log
● SELinux integrado a PostgreSQL
● Y muchas muchas funcionalidades nuevas más y mejoras a
nivel de motor de base de datos.
http://www.postgresql.org 3/19
pe@postgresql.org
4. PostgreSQL 9.1 – Replicación Síncrona
PostgreSQL incorpora dentro de su funcionalidad replicación
desde la versión 9.0, esta es asíncrona, es decir existe tiempo
de demora entre el servidor MASTER procesando la
información y el servidor SLAVE recibiendola, para este tipo
de replicación se utilizan los archivos de WAL de PostgreSQL
que permiten regenerar una base de datos, la debilidad de
esta replicación es que ante caidas del MASTER algunas
transacciones podrían no haber llegado al SLAVE.
http://www.postgresql.org 4/19
pe@postgresql.org
5. PostgreSQL 9.1 – Replicación Síncrona
●Las transacciones no se completan a menos que se
completen en el servidor MASTER y en el SLAVE (esto genera
un tiempo de proceso mayor para cada transacción).
●La única posibilidad de perder data la momento de una caida
es que ambos servidores colapsen al mismo tiempo.
MASTER SLAVE
WAL WAL
DATA DATA
http://www.postgresql.org 5/19
pe@postgresql.org
6. PostgreSQL 9.1 – Replicación Síncrona
●Para reducir el tiempo de demora en completar las
transacciones PostgreSQL 9.1 ahora implementa la
posibilidad de especificar el nivel de importancia de las
mismas, desde toda una db, un usuario, una conexión o hasta
una transacción en específico de tal manera que podamos
priorizar las más importantes y asegurarnos que se repliquen
primero ante posible caidas del sistema.
http://www.postgresql.org 6/19
pe@postgresql.org
7. PostgreSQL 9.1 – Replicación Síncrona
●Con el fin de generar entornos con mayor tolerancia a fallos
la replicación puede ser configurada para copiar la data a
multiples servidores.
MASTER
SLAVE SLAVE SLAVE
http://www.postgresql.org 7/19
pe@postgresql.org
8. PostgreSQL 9.1 – Soporte de Tablas Foráneas
●PostgreSQL desde hace un tiempo soporta gracias a
paquetes del CONTRIB para acceder a data en otros motores
de bases de datos.
●Ahora se puede configurar las conexiones sin instalar
paquetes adicionales e interactuar directamente con las
tablas ejecutando comandos como:
● Create foreign table
● Alter .....
● Drop .....
http://www.postgresql.org 8/19
pe@postgresql.org
9. PostgreSQL 9.1 – Soporte de Tablas Foráneas
CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [
{ column_name data_type [ NULL | NOT NULL ] }
[, ... ]
])
SERVER server_name
[ OPTIONS ( option ’value’ [, ... ] ) ]
http://www.postgresql.org 9/19
pe@postgresql.org
10. PostgreSQL 9.1 – Internacionalización por Campo/Columna
●Desde PostgreSQL 8.3 la internacionalización de las
“cadenas” de nuestra base de datos se unía fuertemente a la
del sistema operativo en el cual se ejecutaba.
●Ahora es posible definir por cada columna de nuestra tabla,
si así lo requerimos, un juego de caracteres diferente.
CREATE TABLE test1 (
a text COLLATE "de_DE",
b text COLLATE "es_ES",
...
);
http://www.postgresql.org 10/19
pe@postgresql.org
11. PostgreSQL 9.1 – Internacionalización por Campo/Columna
●También es posible ahora especificar la internacionalización
a utilizar cuando realizamos una consulta, por ejemplo:
SELECT a < (’foo’ COLLATE "fr_FR") FROM test1;
SELECT a COLLATE "de_DE" < b FROM test1;
●PostgreSQL ahora incluye soporte para +/- 50 juegos de
caracteres internacionales diferentes, incluyendo idiomas
arábicos y asiáticos.
http://www.postgresql.org 11/19
pe@postgresql.org
12. PostgreSQL 9.1 – Tablas sin Log
●PostgreSQL guarda un “log de transacciones”, este log es en
palabras simples un ahora de proceso especial (en disco)
donde los datos son trabajados antes de pasar al repositorio
principal de los datos “finales”.
●Esto permite asegurar la integridad de la data antes de ser
“commiteada” al respositorio “final”, apoya al trabajo de alta
concurrencia para evitar coliciones entre los usuarios.
●Estas ventajas tienen un costo en tiempo de procesamiento
y trabajo en disco, ahora es posible desactivarlas opteniendo
un tiempo de respuesta mucho mayor a un costo de mayor
sensibilidad en nuestra base de datos.
http://www.postgresql.org 12/19
pe@postgresql.org
13. PostgreSQL 9.1 – Tablas sin Log
●Esto debe ser utilizado solo en entornos donde el hardware
es altamente confiable y con opciones de redundancia porque
ante caidas del sistema no podrá ser recuperada la
información si esta se corrompe.
●Estas tablas no podrán ser replicadas por los diferentes
tipos (/síncrono y asíncrono) de servicio que ofrece
Postgresql integrados.
●La performance en operaciones de escritura en tablas
mejoras hasta en 10 veces usando el parametro “unlogged”
al crearlas.
http://www.postgresql.org 13/19
pe@postgresql.org
14. PostgreSQL 9.1 – SELinux integrado a PostgreSQL
●Security Enhanced Linux fue creado por la Agencia de
Seguridad Nacional de EEUU, consiste en una serie de
modificaciones para el kernel de Linux con el fin de otorgar
altos niveles de seguridad a este.
●Ahora podemos compartir estos niveles de seguridad con
PostgreSQL utilizando el comando SECURITY LABEL.
SECURITY LABEL FOR selinux ON TABLE mytable
IS ’system_u:object_r:sepgsql_table_t:s0’;
http://www.postgresql.org 14/19
pe@postgresql.org
15. PostgreSQL 9.1 – SELinux integrado a PostgreSQL
●Este módulo debe ser activado explicitamente y no contiene
en la actualidad el soporte de TODAS las reglas de SELinux.
http://www.postgresql.org 15/19
pe@postgresql.org
16. PostgreSQL 9.1 – SELinux integrado a PostgreSQL
●Para utilizar esto se requiere:
● Kernel de Linux 2.6.28 o superior
● Que el kernel tenga el soporte de SELinux 3.9.13 o
superior
●Es posible configurar que Bases de Datos de mi servidor
deben tener soporte de SELinux ejecutando dentro de ella el
script “sepgsql.sql”.
●Con este soporte los accesos a tablas y funciones serán
controlados por SEPostgreSQL y se sobrepondrán a los
definidos en la base de datos con GRANT y REVOKE, se
puede llegar a controlar incluso campos y registros
específicos.
http://www.postgresql.org 16/19
pe@postgresql.org
17. PostgreSQL 9.1 – SELinux integrado a PostgreSQL
SECURITY LABEL [ FOR provider ] ON
{
TABLE object_name |
COLUMN table_name.column_name |
AGGREGATE agg_name (agg_type [, ...] ) |
DOMAIN object_name |
FOREIGN TABLE object_name
FUNCTION function_name ( [ [ argmode ] [ argname ] argtype [, ...]
])|
LARGE OBJECT large_object_oid |
[ PROCEDURAL ] LANGUAGE object_name |
SCHEMA object_name |
SEQUENCE object_name |
TYPE object_name |
VIEW object_name
} IS ’label’
http://www.postgresql.org 17/19
pe@postgresql.org
18. PostgreSQL 9.1 – ¿HAY MAS?
Si mucho mas ..... visita http://www.postgresql.org
●http://www.postgresql.org/docs/9.1/static/release-9-1.html
●http://www.postgresql.org/docs/9.1/static/release-9-1-1.html
Ya estamos discutiendo que viene
En PostgreSQL 9.2
http://www.postgresql.org 18/19
pe@postgresql.org
19. PostgreSQL 9.1 – ¿QUIERES APOYARNOS?
Toda ayuda es bienvenida:
● Necesitamos diseñadores gráficos para crear material
publicitario y educativo.
● Necesitamos traductores de documentación oficial (el
manual oficial tiene más de 2500 páginas A4).
● Puedes apoyar en la programación si sabes C.
● Usalo en tus investigaciones y en tus negocios.
GRACIAS
Nos vemos en PostgreSQL 9.2 :)
http://www.postgresql.org 19/19
pe@postgresql.org