Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-07-2006
supermilloriver supermilloriver is offline
Miembro
 
Registrado: jul 2005
Posts: 32
Poder: 0
supermilloriver Va por buen camino
Thumbs down Concurrencia

Hola!:
Estoy armando una aplicación que será usada desde varios puestos de trabajo. Todavía no decidí que motor de BD usar, pero tengo una duda que quiero ir sacandome desde ahora:

¿Cómo puedo controlar el hecho de que dos usuarios editen al mismo tiempo un registro de una tabla?

si sirve para algo, pienso manejarme con Client Datasets y quizá el motor sea FireBird...

Gracias...
Responder Con Cita
  #2  
Antiguo 19-07-2006
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Creo que de eso se debe ocupar el motor de la base de datos. Que yo sepa, hagas lo que hagas en el cliente no influirá mucho.

En tu caso deberás buscar un motor que permita conectar a varios usuarios a la vez y que no se líe si dos de ellos intentan una consulta o modificación al mismo tiempo.
Responder Con Cita
  #3  
Antiguo 19-07-2006
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Transacciones jóvenes, hay que usar transacciones
__________________

Responder Con Cita
  #4  
Antiguo 20-07-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 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
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Concurrencia leflaco PHP 6 06-05-2006 07:55:01
Concurrencia mary123 C++ Builder 1 31-03-2005 19:58:13
Alta concurrencia SCORDOBA Firebird e Interbase 3 11-05-2004 16:53:42
concurrencia en interbase hibero Firebird e Interbase 6 14-04-2004 15:11:12
problemas con concurrencia davidgaldo Conexión con bases de datos 4 21-02-2004 18:23:56


La franja horaria es GMT +2. Ahora son las 14:08:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi