Re: query asincronico y SPI

From: Mario Soto Cordones - Venezuela <msotocl(at)gmail(dot)com>
To: Mario Soto Cordones - Venezuela <msotocl(at)gmail(dot)com>, Lista postgreslq Postgresql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: query asincronico y SPI
Date: 2005-09-23 20:38:50
Message-ID: e9b17cde050923133819425787@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gracias Alvaro, me quedo muy claro, buscare informacion respecto de
LISTEN/NOTIFY y probare .

Saludos

El 23/09/05, Alvaro Herrera<alvherre(at)alvh(dot)no-ip(dot)org> escribió:
> On Fri, Sep 23, 2005 at 02:03:58PM -0400, Mario Soto Cordones - Venezuela wrote:
>
> > Tengo una vista materializada que me actualiza una tabla de
> > referencias cruzadas, esto me funciona muy bien y me aliviana muchos
> > procesos de busquedas de registros en una tabla de mas de 4 millones
> > de registros, el problema actual que tengo es que al gatillar el query
> > que me actualiza la vista materializada despues de la insercion de un
> > registro, la aplicacion cliente queda tomada hasta que el servidor
> > termina de actualizar la vista,. Por eso busque informacion y encontre
> > que con libpq puedo tener querys asincronicos, pero libpq no me sirve
> > ya que mi aplizacion en windows utiliza psqlodbc, es por eso que
> > disene una funcion en lenguaje C con SPI y al gatillar el query pero a
> > la funcion que se llama actualiza.so, es resultado es el mismo.
>
> Entiendo. No, no puedes hacerlo con SPI, ni de ninguna otra forma en
> realidad, en esencia porque el "backend" no es multithread, y por lo
> tanto no puede quedar procesando la peticion de actualizacion y ademas
> seguir con el resto del procesamiento para el cliente.
>
> No desesperes eso si -- hay un mecanismo que me parece que es casi
> perfecto para lo que quieres; se trata de LISTEN/NOTIFY. La idea seria
> que el proceso que haga el trabajo de regeneracion de la vista
> materializada sea independiente de los que atienden a los clientes.
> Esto proceso debe hacer un LISTEN, y los procesos que modifiquen las
> tablas involucradas deben invocar a NOTIFY en un trigger. Entonces
> cuando se haga una modificacion, la notificacion despertara al proceso
> que reconstruye la vista, y este trabajara fuera de linea.
>
> Espero haberme explicado. Ojala te sirva este mecanismo; realmente es
> muy sencillo.
>
> --
> Alvaro Herrera http://www.advogato.org/person/alvherre
> www.google.com: interfaz de línea de comando para la web.
>

--
cordialmente,

Ing. Mario Soto Cordones

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Dimas Ayala 2005-09-23 20:58:35 foreing Key
Previous Message Alvaro Herrera 2005-09-23 20:26:32 Re: Ayuda con la conexion - Urgente