Re: Stock Actual de Productos

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Alberto Cuevas <betocuevas(dot)net(at)gmail(dot)com>
Cc: "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com>, Hugo Germigniani - ProfInd <hugo(at)profind(dot)com(dot)ar>, Herman Estaban <hermanestaban(at)gmail(dot)com>, Carlos Enrique Perez - Syswarp - Direccion <Carlos(dot)perez(at)syswarp(dot)com(dot)ar>, pgsql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Stock Actual de Productos
Date: 2016-07-18 19:03:26
Message-ID: 20160718190326.GA2265@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Alberto Cuevas escribió:
> Exacto! lo que dice Alvaro es el problema que quiero evitar.
>
> Bueno he decidido tener el stock separado, vere como me va.

Hm, hasta donde veo, tener el stock separado no te va a resolver el
problema. Si sólo quieres leer el stock actual, da lo mismo si hay un
update o no lo hay en una tabla o en la misma tabla (MVCC significa que
lectores no son bloqueados por escritores). Si quieres actualizar el
stock (vender un producto) da lo mismo si están en la misma tabla o en
otra tabla: se bloquearán igual (un update tendrá que esperar a que el
otro haga commit/rollback en cualquiera de los dos casos)

IMO si quieres resolver ese problema de forma concurrente el diseño que
te sirve es el de una tabla con deltas, donde tienes una fila que
indica el total y varias filas que indican cambios al total
(agregar/quitar), y para saber el actual tienes que sumar todas esas
fiilas. Así puedes agregar una nueva fila de "quitar" cuando vendes, y
varios procesos pueden agregar esas filas concurrentemente (e insertas
una fila "agregar" cuando te llega stock nuevo del proveedor). Cada una
hora (o algo así) un proceso en background hace la suma total y borra
todos los deltas, haciendo un update de la fila del total (para evitar
proliferación de excesivas filas "delta").

Ahí no se bloquea nadie, aunque para saber "el stock actual" tienes que
considerar aquellos procesos que estén en ejecución concurrentemente.

--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Guillermo E. Villanueva 2016-07-19 11:22:23 Re: Stock Actual de Productos
Previous Message Alberto Cuevas 2016-07-18 14:44:55 Re: Stock Actual de Productos