Actualizado el 21 de Marzo del 2018 (Publicado el 1 de Octubre del 2017)
632 visualizaciones desde el 1 de Octubre del 2017
59,9 KB
8 paginas
Creado hace 19a (03/11/2005)
LISTEN/NOTIFY
Introducción a PostgreSQL
Álvaro Herrera
1er Foro Mundial de Tecnolog’ia Libre
Álvaro Herrera
Introducción a PostgreSQL
LISTEN/NOTIFY
¿Qué es?
Demostración
Las Tripas
LISTEN/NOTIFY: ¿qué es?
I Mecanismo para notificar cambios hacia el exterior
I Asegura transaccionalidad
I sólo se dispara al momento de hacer COMMIT
I sólo si la transacción ha sido exitosa
Álvaro Herrera
Introducción a PostgreSQL
LISTEN/NOTIFY
¿Qué es?
Demostración
Las Tripas
Ejemplos de uso
I Envío de correo
I Refrescar vistas materializadas asincrónicas
I Invocar programas externos de limpieza
Veremos cómo se hace correctamente un sistema que envíe un mail a
un usuario cuando sucede algo.
Álvaro Herrera
Introducción a PostgreSQL
LISTEN/NOTIFY
¿Qué es?
Demostración
Las Tripas
Demostración
Acá hago la demostración del programa que envía mail.
Álvaro Herrera
Introducción a PostgreSQL
LISTEN/NOTIFY
¿Qué es?
Demostración
Las Tripas
El Esquema
Tabla «maildirs»
Columna
maildir_id
direccion
Tipo Modificadores
serial PRIMARY KEY
text
NOT NULL
Tabla «eventos_email»
Columna
evento_id
maildir_id
contenido
enviado
Tipo
serial
integer
text
boolean
Modificadores
PRIMARY KEY
not null REFERENCES maildir
not null
not null
Álvaro Herrera
Introducción a PostgreSQL
LISTEN/NOTIFY
¿Qué es?
Demostración
Las Tripas
El proceso Listener
I Listener: escucha permanentemente
I Recibe las notificaciones
I Debe actuar en respuesta
I Al recibir la notificación, la base de datos ya fue actualizada con
la nueva información
Álvaro Herrera
Introducción a PostgreSQL
LISTEN/NOTIFY
¿Qué es?
Demostración
Las Tripas
Listener: El Código Fuente
Acá muestro el código fuente del Listener
http://alvherre.atentus.cl/charlas/listener.c
Álvaro Herrera
Introducción a PostgreSQL
LISTEN/NOTIFY
¿Qué es?
Demostración
Las Tripas
El proceso Notificador
CREATE FUNCTION notifica_evento_email()
RETURNS TRIGGER LANGUAGE plpgsql AS $$
BEGIN
NOTIFY eventos_mail;
RETURN null;
END $$;
CREATE TRIGGER trig_notif
AFTER INSERT ON eventos_email
FOR EACH ROW
EXECUTE PROCEDURE notifica_evento_email();
Álvaro Herrera
Introducción a PostgreSQL
Comentarios de: Introducción a PostgreSQL (0)
No hay comentarios