Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Grabar varias tablas de manera concurrente por varios usuarios

Estas en el tema de Grabar varias tablas de manera concurrente por varios usuarios en el foro de Bases de Datos General en Foros del Web. Buenas noches, tengo una duda para la creación de un sistema que puede llegar a grabar en la misma tabla por varios usuarios y quisiera ...
  #1 (permalink)  
Antiguo 01/04/2016, 20:36
 
Fecha de Ingreso: diciembre-2014
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Grabar varias tablas de manera concurrente por varios usuarios

Buenas noches, tengo una duda para la creación de un sistema que puede llegar a grabar en la misma tabla por varios usuarios y quisiera me aclararan, como pgsql maneja estas operaciones; desde un cliente el usuario 1 enviara a la base de datos una información y por medio de un procedimiento almacenado se afectaran 5 tablas, pero sucede que al mismo tiempo, desde otro cliente el usuario 2, graba, y se van afectar las mismas 5 tablas y así sucesivamente..... como pgsql maneja estos procesos??
  #2 (permalink)  
Antiguo 01/04/2016, 21:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Grabar varias tablas de manera concurrente por varios usuarios

En principio, cada proceso de inserciones desde cada cliente debe ser transaccional. Esa es la clave de todo el asunto.

http://www.postgresql.org.ar/trac/wi...nsactions.html

http://pgsqltutorial.readthedocs.org...nsactions.html

En cuanto a cómo funcionan las transacciones internamente, hay mucha documentacion para leer del tema.

Lee algo de los links y dinos qué es lo que te presenta dudas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 01/04/2016, 22:07
 
Fecha de Ingreso: diciembre-2014
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Grabar varias tablas de manera concurrente por varios usuarios

buenas noches amigo muchas gracias, hasta ahí entiendo. pero realmente hablo de un sistema de ventas por ejemplo 2 personas están comprometiendo un mismo producto ejemplo producto a=10, que hay 10 productos "a" y la persona 1 compromete una existencia de 7 productos, quedan 3 mientras la otra persona tenia en pleno proceso una venta y vende 4 productos "a"..... en la configuración de sistema iría que no comprometa productos sin existencia pero esto ya ah cargado porque antes había. todo depende de quien le de primero el botón aceptar y no puede esta sujeto a esa condición en la vida real... muchas gracias de ante mano
  #4 (permalink)  
Antiguo 01/04/2016, 22:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Grabar varias tablas de manera concurrente por varios usuarios

Como te comentaron, todo depende de como el manejador de bases de datos haga el manejo de las transacciones y aisle estas de las demas :) dale una revisada a la documentacion que te plantean para que entiendas mejor el tema ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 01/04/2016, 22:19
 
Fecha de Ingreso: diciembre-2014
Mensajes: 18
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Grabar varias tablas de manera concurrente por varios usuarios

entonces, guiándome de esos enlaces lo mejor es hacer un punto muerto(SAVEPOINT) antes de procesar "comprometer" y antes de procesar la "venta". bueno muchas a ambos que estén bien
  #6 (permalink)  
Antiguo 01/04/2016, 22:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Grabar varias tablas de manera concurrente por varios usuarios

Mirá, el tema es complejo y lleva bastante tiempo de desarrollo, y mucho más tiempo de pruebas para poder implementarlo.
La transaccionalidad es una parte de la solución, pero tienes que tener en cuenta que todo proceso concurrente donde se estén realizando ventas o entregas de biens de cualquier tipo necesitan segurizar el estado de los bienes en cada momento.
¿Que quiere decir eso?
Que cada proceso de venta que se inicia debe con solo consultar, realizar la reserva de los bienes a entregar. Y cada vez que se pasa a una nueva etapa del proceso se debe validar que los bienes sigan estando disponibles, antes de cerrar la venta.
Para poder hacerlo correctamente debes definir cuidadosamente los pasos de cada proceso, y ver qué validaciones y recaudo se deben tener no sólo para que la venta sea exitosa, sino para que se pueda deshacer completamente en caso de fallo o cancelación.
Y esto último debe ser en cada una de las etapas de cancelación posible, incluyendo cuando se ha terminado y facturado la venta (el cliente puede pretender cancelarla, y tiene derecho a hacerlo).

No existe un método único para lograr eso, hay tantos métodos como sistemas de venta se diseñan. Cada uno puede tener soluciones diferentes en el contexto de cada empresa, completamente contrapuestos a otra.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: postgres, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:54.