Tema: Concurrencia
Ver Mensaje Individual
  #4  
Antiguo 20-07-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Reputación: 22
Mick Va por buen camino
Casi todos los gestores de bases de datos tienen uno o varios mecanismos que permiten gestionar la concurrencia.

Pero es trabajo del programador decidir de que modo y cual de estos mecanismos utilizar. Es decir en cada formulario de edicion de datos segun que tipo de datos sea, el programador tiene que pensar que debe pasar
cuando varios usuarios a la vez intenta la edicion, y seguramente en determinados formularios lo logico sea hacer una cosa y en otros otra distinta. En definitivia, dos usuarios editan a la vez una ficha que
debe pasar ? Pues tenemos varias opciones:

1. Que solo el primero que entre en modo edicion lo pueda hacer y al resto les de error o un aviso de que la ficha ya esta siendo editada y no puedan editarla hasta que el primero acabe. Este sistema tiene el grabe problema de que si un usuario que esta editando una ficha se va a comer por ejemplo, dejara bloqueada esa ficha durante mucho tiempo y nadie mas podra modificarla.

2. Que puedan editar "a la vez" la ficha, si dejamos que esto se produzca, la decision de que hacer se pospone al momento de la grabacion de los nuevos datos. Es decir cuando estos usuarios esten editando y al final graben sus modificaciones que debe pasar ? Pues otra vez tenemos varias posibilidades:

2.1 De todos los que estan editando, que el primero en grabar los datos sea el que "gane", y al resto les de error.

2.2 Que se permitan las grabaciones de todos los usuarios, esto tiene el problema de que a los primeros usuarios que grabaron, posteriormente les parecera que se han perdido datos, debido a que las grabaciones siguientes de los otros usuarios que estaban editando simultaneamente sobreescribiran sus modificaciones.

2.3 Que se permitan las grabaciones a todos los usuarios solo si los campos modificados no son los mismos que los usuarios que hayan grabado previamente. Es decir si dos personas estan editando la ficha de un cliente y una modifica su nombre y graba, y el otro modifica la direccion y graba, a este segundo no le dara error porque se han modificado campos distintos, en cambio si este ultimo modificase tambien el nombre si le daria error.

Sabiendo todas estas posibilidades es cuando el programador debera decidir cual es el sistema mas logico a usar en cada formulario de entrada de datos segun la naturaleza de esos datos, y tambien segun las posibilidades que le de el gestor de bases de datos que este usando.

Los puntos 2.x son la forma normal de trabajar en sistema de bases de datos cliente/servidor como interbase, firebird, etc.
El sistema del punto 1 es la opcion por defecto (y la unica en muchos de ellos) de los sistemas de bases de datos de tablas planas como paradox, dbase, etc.

Despues, la forma de implementar las opciones que he dado depende del gestor de bases de datos y sobre todo de los componentes de bases de datos que estemos utilizando, con unos componentes se hara de una forma y con otros de otra.

Saludos
Responder Con Cita