pg_recall, extesión para leer datos modificados de una tabla

Hace un tiempo se publicó una entrada que le permitía leer filas “sucias” en PostgreSQL, es decir filas que han sido modificadas o eliminadas sin que se les haya realizado VACCUM a la tabla. Siguiendo con el mismo tema de leer datos de una tabla que han sido modificados, les quiero mostrar una extensión llamada pg_recall realizada y mantenida por Manuel Reithuber, que la misma lo que realiza es llevar un registro de los datos de las tablas en el tiempo, lo que nos permite por  ejemplo, consultar la tabla X hace 5 minutos atrás. Pues  a ver que tal funciona:

Primero la descargamos de aqui

La descompactamos y la instalamos(ubuntu 14.04)


unzip pg_recall-dev.zip

sudo make install

Se requiere de la extensión btree_gist para que función por ende debemos instalarla


CREATE EXTENSION btree_gist;
CREATE EXTENSION  recall;

Comencemos a utilizarla, lo primero es indicar que tablas queremos registrar en el tiempo, en este caso utilizaremos la tabla categories de la base de datos Dell Store 2


SELECT recall.enable('categories', '1 year');

UPDATE categories SET categoryname=upper(categoryname) WHERE category>10
--esperamos un tiempo(5 min) para ver como funciona

--se crea una vista con los datos de hace 6 minutos 
SELECT recall.at('categories', now() - interval '6 minutes');

--y entonces consultamos los datos de esa tabla hace 6 min atrás llamando a la vista temporal
--categories_past que se crea en la llamada a la función recall.at

select * from categories_past  -- muestra los datos de la tabla hace 6 min atrás 
 category | categoryname
----------+-------------
 1 | Action
 2 | Animation
 3 | Children
 4 | Classics
 5 | Comedy
 6 | Documentary
 7 | Drama
 8 | Family
 9 | Foreign
 10 | Games
 11 | Horror
 12 | Music
 13 | New
 14 | Sci-Fi
 15 | Sports
 16 | Travel
(16 filas)


--si consultamos la tabla normalmente se verá que tiene los datos modificados en mayúscula 
select * from categories
 category | categoryname
----------+--------------
 1 | Action
 2 | Animation
 3 | Children
 4 | Classics
 5 | Comedy
 6 | Documentary
 7 | Drama
 8 | Family
 9 | Foreign
 10 | Games
 11 | HORROR
 12 | MUSIC
 13 | NEW
 14 | SCI-FI
 15 | SPORTS
 16 | TRAVEL
(16 filas)
--si deseamos quitar el registro sobre la tabla debemos ejecutar 
SELECT recall.disable('categories')


Como ven puede ser muy útil la extensión para cuando necesitamos consultar datos en el pasado de una tabla, si quiere profundizar  que más hace la extensión puede ir a su sitio de github.

Nos vemos en otra 😉


 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s