• Lunes 29 de Abril de 2024, 06:10

Autor Tema:  Re: concurrencia  (Leído 2986 veces)

bea

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: concurrencia
« en: Martes 16 de Septiembre de 2003, 12:55 »
0
Quisiera saber como puedo hacer para que mientras estoy modificando una base de datos en local no se pueda realizar ningun cambio en la base de datos que esta en internet, puesto que despues de modificar en local la quiero subir al servidor y los cambios que se hubieran realizado desde internet se perderian

Muchas gracias

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
Re: concurrencia
« Respuesta #1 en: Martes 16 de Septiembre de 2003, 14:43 »
0
No me imagino la logica de lo que planteas... a ver...

Tienes una BD en un servidor de Internet, y esa misma base la tienes en un servidor local ?

Quieres modificar la BD local y luego que esas modificaciones se vuelquen en la BD remota ?

Si es eso lo que quieres, simplemente pisas la remota con la local y listo !!!

Quizas no te comprendi bien.

Suerte
Pablo Tilotta
Analista de Sistemas
Argentina

bea

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: concurrencia
« Respuesta #2 en: Martes 16 de Septiembre de 2003, 15:02 »
0
Tengo una base de datos en local y la misma en un servidor en internet.
Por un lado desde internet se accede a la base de datos y se puede modificar, y tambien desde local accedo a la base de datos para modificarla. Pero el problema es que podemos estar a la vez modificando ambas y entonces si luego subo la local a internet pierdo los cambios que se hayan hecho desde internet, y lo mismo al reves, es decir, que al bajarme a local de la internet pierdo los cambios que haya hecho en local.
Es que el problema es que necesito tener la informacion actualizada en cada momento tanto en local como en el  servidor

Muchas gracias

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
Re: concurrencia
« Respuesta #3 en: Martes 16 de Septiembre de 2003, 15:08 »
0
Cualquier profesional de Sistemas te diria que carece de toda logica, no se puede realizar modificaciones en 2 copias de BD y que la informacion te quede bien..


Creo que tendrias que modificar tu logica ya que no hay mucha solucion a eso.

Es que ... si tu modificas un registro en tu Base Local y en la remota se modifica el mismo registro... CUAL ES EL CORRECTO ?

Creo que tendrias que trabajar todo en la remota desde tus aplicaciones de escritorio, usando algun servicio que te permita usar la BD remota de la misma manera que lo harias con un BD que se encuentre en un recurso compartido de una red.

Tratare de fijarme como se puede hacer eso y te lo digo.

Suerte
Pablo Tilotta
Analista de Sistemas
Argentina

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: concurrencia
« Respuesta #4 en: Martes 16 de Septiembre de 2003, 15:53 »
0
Hola bea.

Aparte de la correcta observación que te hace Chiaravel sobre la lógica de tener bases de datos replicadas, por si tienes tus razones, te diré dos posibilidades, aunque no sé si serán válidas en tu caso:

Algunas bases de datos (DB/2 por ejemplo) reconocen sentencias SQL del tipo LOCK TABLE Tabla para bloquear una tabla en modo exclusivo o compartido. Si es tu caso, estás de suerte.

Otra forma, poco ortodoxa pero posiblemente efectiva, puede ser REDENOMINAR la base de datos. Eso sí, tendrías que supervisar los posibles errores que se producirían en los procesos que se encontrasen con que la base de datos tiene otro nombre.

A ver si estos comentarios te son de ayuda.

Suerte.

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
Re: concurrencia
« Respuesta #5 en: Martes 16 de Septiembre de 2003, 16:01 »
0
La teoria del Lockeo no sirve en el problema planteado por Bea ya que ella tendria que loquear la BD remota cada vez que modifica la local :think: y tampoco serviria esto ya que luego de modificar la local no se actualizara automaticamente la remota.

Aqui hay que hacer un cambio muy profundo en la logica, sino se hace no le veo una solucion muy agradable y confiable.

Suerte
Pablo Tilotta
Analista de Sistemas
Argentina

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: concurrencia
« Respuesta #6 en: Martes 16 de Septiembre de 2003, 16:30 »
0
Citar
Originalmente publicado por chiaravel
Cualquier profesional de Sistemas te diria que carece de toda logica, no se puede realizar modificaciones en 2 copias de BD y que la informacion te quede bien..
 


Esto no es nada raro, sobre todo dependiendo del tipo de información que contenga la base de datos; normalmente no se modifica/añade/deletea un mismo registro en las dos bb.dd. Te diré que conozco casos en que las bases de datos están replicadas en varios sitios y las copias perfectamente sincronizadas (otra cosa es que la sincronización sea más o menos instantánea). Por ejemplo, imagina que yo soy una especie de corresponsal que añado eventos a una agenda en una base de datos y que en Pernambuco hay otro corresponsal haciendo lo mismo en otra base de datos, ¿qué problema hay en que en un determinado momento la información de los dos corresponsales se replique complementándose cada una en la misma base de datos?

Independientemente de la mejor o peor lógica o práctica, es perfectamente posible realizar la sincronización de datos entre dos bases de datos mediante bloqueos y actualizaciones... otra cosa es cómo implementarlo y lo complicado o fácil que sea. Utilizando 'triggers' si es posible, programando eventos que se desencadenen en determinado momento y que actualicen las bb.dd, programando actualizaciones, etc.

En fin, todo un mundo...

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
Re: concurrencia
« Respuesta #7 en: Martes 16 de Septiembre de 2003, 16:41 »
0
Me referia a lo que bea en este momento quiere lograr, tu ejemplo es valido pero no es lo que bea quiere lograr.

Ya que ella habla de como loquear precisamente porque quiere subir toda la BD a Internet por lo que cualquier tecnica o proceso fracasaria, ya que si ella hace eso que dice, simplemente pisa la BD.

A veces en sistemas sabemos que es mas facil retroceder y tomar otro rumbo, que buscar salidas y arreglos y modificaciones sin cambiar de rumbo, y como resultado tenemos un embrollo totalmente inconsistente.

Suerte
Pablo Tilotta
Analista de Sistemas
Argentina

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: concurrencia
« Respuesta #8 en: Martes 16 de Septiembre de 2003, 17:03 »
0
Pues yo lo veo así de sencillo sin saber cuales son los motivos de bea, que si leo bien, no los dice (sólo pregunta cómo bloquear la bd que está en internet).

1- Bloqueo base de datos en internet.
2- Actualizo base de datos local.
3- Modifico base de  datos local.
4- Actualizo base de datos internet (en el paso 3, podría hacer las modificaciones en las dos bb.dd. simultáneamente)
5- Desbloqueo base de datos internet.

y ya tengo las dos bases de datos sincronizadas... ¿o no?

También podría seguir esta secuencia:

1- Renombro base de datos en internet.
2- Actualizo base de datos local.
3- Modifico base de  datos local.
4- Copio base de datos local a internet.
5- Elimino base de datos renombrada.

el truco está en ACTUALIZAR tablas y NO SUSTITUIR una base de datos por otra. Evidentemente si intento hacer la sincronización 'pisando' una con otro como Chiaravel dice, es completamente imposible sincronizar nada.

Abur.

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: concurrencia
« Respuesta #9 en: Martes 16 de Septiembre de 2003, 17:08 »
0
Según me parece entender, Bea quiere tener en su equipo local una réplica de la bd que campea en el servidor (Internet); lo  mismo que ella, otros usuarios tienen su propia copia.

Lo que pretende es hacer las pertinentes actualizaciones en SU copia y luego subir ésta al servidor, con lo cual no cabe duda de que va a machacar cualquier posible actualización que haya hecho otro cliente.  Tendría que haber actualizado su copia inmediatamente antes de hacer los cambios, bloquear la bd del servidor, actualizar la copia y sustituir la bd del servidor, dejándola ya desbloqueada...  Si este fichero es pesado y su conexión no tiene la suficiente agilidad... tendrá que pedir permiso a toda la comunidad de clientes para cambiar que en lugar de 13 camisas quiere sólo 12...

Soy de la opinión de que más vale abandonar esa idea y tomar el cauce de la lógica que indica Chiaravel... que cada cliente acceda a la bd del servidor de forma optimista o pesimista, según se encuentra de ánimo (¡perdón por el chiste!) y que pueda si lo desea mantener una copia en su equipo para CONSULTAR, sin conexión, los datos que dependan de él exclusivamente, porque la base actualizada on line sólo podrá conocerla accediendo al servidor.

Saludos y suerte

bea

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
concurrencia
« Respuesta #10 en: Miércoles 17 de Septiembre de 2003, 10:53 »
0
El problema es querer mantener las dos bases de datos. Lo que pasa es que no habia pensado en tener solo la del servidor y acceder a ella desde visual basic.
Que cadena de conexion hay que poner para conectarte desde visual basic a una base de datos access en el servidor remoto?

muchas gracias a todos