Consistencia ante concurrencia
Publicado por Geronimo (17 intervenciones) el 22/04/2006 19:21:05
Tengo una duda acerca de la consistencia en los datos fisicos cuando existe concurrencia y trabajo con el modelo desconectado.
Según tengo entendido, ADO.NET tiene la capacidad de levantar los datos necesarios a un DataSet desde la BD física y desconectarse de ésta hasta que sea nuevamente necesaria una conexion.
Me puse a pensar en un caso en el que no se como manejaría la consistencia de los datos físicos siguiendo el modelo desconectado.
1) Tengo 2 procesos en 2 maquinas diferentes y ambos pueden acceder a los mismos registros de una tabla en la bd fisica.
2) Levanto todos los registros de "tabla1" a un DataSet en ambos procesos al mismo tiempo.
3) El proceso1 modifica el campo1 (que actualmente vale 5) en el registro1 de tabla1 en el DataSet incrementando en 2 el valor del campo1 (5+2=7). Luego actualiza los datos en la bd fisica.
4) El proceso2 ahora tendría los datos desactualizados en su DataSet y realiza la misma operacion que el proceso1.
La pregunta es la siguiente. En la tabla física el campo1 es igual a 7 y si la tarea del proceso2 es la misma del proceso1 debería incrementar en 2 el valor del campo en la tabla fisica (7+2=0) pero por tener los datos desactualizados en el DataSet al actualizar los datos haria (5+2=7). Existe un control de la concurrencia y la consistencia de los datos utilizando un modelo desconectado?
Quisiera saber cual es el mecanismo utilizado por ADO .NET para estos casos o si el tratamiento de la concurrencia sería tratado por el motor de la bd.
Saludos y gracias de antemano.
Según tengo entendido, ADO.NET tiene la capacidad de levantar los datos necesarios a un DataSet desde la BD física y desconectarse de ésta hasta que sea nuevamente necesaria una conexion.
Me puse a pensar en un caso en el que no se como manejaría la consistencia de los datos físicos siguiendo el modelo desconectado.
1) Tengo 2 procesos en 2 maquinas diferentes y ambos pueden acceder a los mismos registros de una tabla en la bd fisica.
2) Levanto todos los registros de "tabla1" a un DataSet en ambos procesos al mismo tiempo.
3) El proceso1 modifica el campo1 (que actualmente vale 5) en el registro1 de tabla1 en el DataSet incrementando en 2 el valor del campo1 (5+2=7). Luego actualiza los datos en la bd fisica.
4) El proceso2 ahora tendría los datos desactualizados en su DataSet y realiza la misma operacion que el proceso1.
La pregunta es la siguiente. En la tabla física el campo1 es igual a 7 y si la tarea del proceso2 es la misma del proceso1 debería incrementar en 2 el valor del campo en la tabla fisica (7+2=0) pero por tener los datos desactualizados en el DataSet al actualizar los datos haria (5+2=7). Existe un control de la concurrencia y la consistencia de los datos utilizando un modelo desconectado?
Quisiera saber cual es el mecanismo utilizado por ADO .NET para estos casos o si el tratamiento de la concurrencia sería tratado por el motor de la bd.
Saludos y gracias de antemano.
Valora esta pregunta


0