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

duda interesante

Estas en el tema de duda interesante en el foro de Bases de Datos General en Foros del Web. Hola a todos, A ver, estoy empezando con un proyecto que incluye version móvil de la web app. La idea es que la parte móvil ...
  #1 (permalink)  
Antiguo 04/05/2011, 04:42
 
Fecha de Ingreso: mayo-2009
Mensajes: 201
Antigüedad: 15 años, 5 meses
Puntos: 9
duda interesante

Hola a todos,

A ver, estoy empezando con un proyecto que incluye version móvil de la web app.
La idea es que la parte móvil pueda funcionar sin conexion a internet con toda la historia de html5 y la base de datos local que provee.

El problema es que lógicamente esas bases de datos tendran que sincronizarse en algún momento.

1. Conoceis alguna forma de sincronizar dos bases de datos?

He mirado por ahi, y lo que hay es a base de librerias dificiles de comprender y que hay que adaptarse mucho a ellas. Igual sabeis alguna alternativa.

2. a mi se me ocurre una alternativa, pero es tan sencilla que seguramente me este dejando algo por el camino. Os la explico:

La idea seria crear una tabla para alojar todas las consultas que se realicen (bueno, las de lectura no, jeje). Cada vez que se haga un insert por ejemplo, el string del insert vaya a esta tabla con un timestamp.

eso tanto en el dispositivo móvil como en el servidor.

cuando se este online, hacer un join de las dos tablas, ordenar por el timestamp, e ir ejecutandolas por orden (solo aquellas que hayan sido hechas en la otra base de datos) en ambos lados.

Que fallos le veis a esta aproximacion del problema?

Yo le veo uno, y es que parece que con dos bases de datos a sincronizar funcionaria bien, pero con mas no acabo de verlo. En mi caso no es un problema en principio, pero claro, nunca se sabe. Segun el tipo de datos (en mi caso cada dispositivo móvil no necesitaria acceso a los datos creados en el resto de dispositivos, ya que serian usuarios diferentes) se podrian crear tablas exclusivas para cada dispositivo y sincronizar esas tablas solo.

Como se podria mejorar?

Que soluciones alternativas se os ocurren?

Me parece un tema interesantisimo.
  #2 (permalink)  
Antiguo 04/05/2011, 07:23
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: duda interesante

hola monxas...

Con lo que describes, yo me lo imagino con una sola tabla y solo sería hacer un volcado de datos del dispositivo a la tabla online. Si es así, tu idea sería adecuada.

Por ejemplo.... en la ciudad donde resido, en los restaurantes y cafes llegan los proveedores con una palm o dispositivo movil. Toman el pedido, lo almacenan en un archivo txt con la estructura de la base de datos que tienen centralizada. Efectivamente ordenan por fecha (timestamp) para saber que deben despachar primero en la central. CUando llegan, la sincronización simplemente es subir el archivo txt a la tabla y borrarlo del dispositivo.

Con esta metodología existen algunos problemas. El mas delicado sería la parte de inventario.
Si un cliente pide 100 paquetes de papas (En el inventario offline hay 150) le va a permitir hacer la venta. Otro cliente offline hace un pedido de 70 paquetes (En el offline también tendrá 150) también lo permite. Cuando ambos empleados llegan a sincronizar sus pedidos, el inventario general encuentra la inconsistencia. Tiene un deficit de 20 paquetes y a alguno de sus clientes no podrá tenerlo satisfecho con el servicio. Esto es un caso de 2 clientes, imaginate que sean 1000 o 2000 clientes.

Si nos describes un poco mas el motivo de tu sistema y lo que quiers conseguir, tal vez te demos mejores ideas.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: bases-de-datos
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 14:14.