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

multiples clientes haciedno el mismo insert

Estas en el tema de multiples clientes haciedno el mismo insert en el foro de Bases de Datos General en Foros del Web. Buenas, Estoy preparando una aplicacion java centralizada en la que varios clientes van a recolectar informacion de unos elementos, la van a tratar y van ...
  #1 (permalink)  
Antiguo 05/08/2010, 02:38
 
Fecha de Ingreso: noviembre-2008
Mensajes: 65
Antigüedad: 15 años, 6 meses
Puntos: 0
multiples clientes haciedno el mismo insert

Buenas,

Estoy preparando una aplicacion java centralizada en la que varios clientes van a recolectar informacion de unos elementos, la van a tratar y van a realizar un insert de muchos elementos en el servidor. El problema es que entre los clientes no hay comunicacion alguna, asi que muchos de sus inserts van a a producir error porque algun otro cliente ya ha insertado ese elemento.

Como se trata esta situacion si:
- no es posible que haya comunicacion entre clientes.
- Los clientes disponen de recursos practicamente ilimitados; el servidor va a ser relativamente reducido.

Cual es la mejor aproximacion en el cliente? Insert tras insert, y seguir aunque fallen? Pedir primero la sublista de los que no estan en su lista y luego realizar los insert?

Gracias!
  #2 (permalink)  
Antiguo 05/08/2010, 03:54
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: multiples clientes haciedno el mismo insert

Estudiar el tema de transacciones: Concurrencia y transacciones.
__________________
¿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 05/08/2010, 04:42
 
Fecha de Ingreso: noviembre-2008
Mensajes: 65
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: multiples clientes haciedno el mismo insert

gnz, siempre estas ahi, macho. Gracias por la informacion, pero este tema ya lo conozco.

Lo que pregutno es una aproximacion practica a este tema. Lo unico que se me ocurre ahora mismo es hacer los inserts de uno en uno (sin transaccion) e ignorar el error que sea que ya existe.

La unica ventaja que tengo es que los elementos ya tienen id cuando el cliente los encuentra.
  #4 (permalink)  
Antiguo 05/08/2010, 05:46
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: multiples clientes haciedno el mismo insert

Cita:
El problema es que entre los clientes no hay comunicacion alguna, asi que muchos de sus inserts van a a producir error porque algun otro cliente ya ha insertado ese elemento.
El segundo insert queda en espera durante X tiempo (configurable) hasta que la tabla queda liberada por el primero. En ese estado, si la clave ya existe, simplemente no ingresará.
En este contexto puedes usar un INSERT IGNORE para contrar el evento de error si el error no te interesa, pero lo que debes tener en cuenta es que la PK de esa tabla no puede ser en ese caso autoincremental. Debe estar creada en base a campos propios de la tabla, porque sería la única forma de evitar duplicaciones.
Si sólo puedes manejar autoincrementales o numéricos controlados por aplicación, deberás administrar el ingreso de próxima clave antes de la inserción, lo que implica una consulta. Siendo que los vas a manejar con transacciones eso no debería ser problema: bastaría conque la consulta de la próxima clave estuvie4se también dentro de la transacción.

Lo que te conviene es graficar en alguna planilla o en diagrama, los diferentes estados de concurrencia posible para ver cómo resolver el tema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 05/08/2010, 07:21
 
Fecha de Ingreso: noviembre-2008
Mensajes: 65
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: multiples clientes haciedno el mismo insert

La PK es un campo propio. Si dos clientes encuentran el mismo elemento y hacen el insert, ambos insert llevan la misma PK.

Bueno, la opcion es buena para mysql pero no es seguro que vaya aa ser el sistema que usemos.

Lo dejare en stand-by porque hay cosas con mayor prioridad.

Mcuahs gracias GNZSOLOYO
  #6 (permalink)  
Antiguo 05/08/2010, 07:34
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: multiples clientes haciedno el mismo insert

Cita:
Bueno, la opcion es buena para mysql pero no es seguro que vaya aa ser el sistema que usemos.
Hay variaciones en cuanto a la implementación de las transacciones, pero el concepto básico es general para todos los DBMS. Lo que deberás estudiar, entonces, es lo que debes hacer en el DBMS que elijas finalmente.
Recuerda que esa elección afectará todo lo que hagas en SQL... y no solamente las transacciones.
__________________
¿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: insert, multiples, cliente
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 20:43.