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 24-10-2013
aitorqrv aitorqrv is offline
Miembro
 
Registrado: abr 2007
Posts: 18
Poder: 0
aitorqrv Va por buen camino
Sincronizar MySQL con SQLite

Hola, perdón si este no es el sitio adecuado del foro para mi pregunta, ya que yo programo en lazarus.

Estoy intentando hacer un programa multi usuario que tiene que sincronizar una base de datos Mysql que esta en internet con otra base de datos SQLite que tiene cada usuario en su PC o en un teléfono y vicebersa.

Me podéis asesorar de cual seria la forma mas segura de sincronizar ambas base de datos.

Cada usuario tendra su nombre de usuario y contraseña, y al ser un programa que va a ser de código abierto no creo que se pueda acceder directamente al servidor MySQL desde el programa ya que sino cualquiera sabría las contraseñas de la base de datos MySQL y la podría liar.

Muchas gracias.
Responder Con Cita
  #2  
Antiguo 08-11-2013
aitorqrv aitorqrv is offline
Miembro
 
Registrado: abr 2007
Posts: 18
Poder: 0
aitorqrv Va por buen camino
Hola gracias a todos por vuestro interés, según parece el problema es mas complicado de lo que parece, el no saber como llevar acabo esto yo se lo achacaba a mi falta de experiencia...

Al no obtener respuesta decidí mandarle un mensaje privado a Ñuño Martínez ya que he leído unos cuantos post en los que el ha participado y al ver que tenia conocimientos de Lazarus y PHP, pense que seria la persona idonea para orientarme sobre cuales podían ser los pasos para llevar acabo este proyecto que tengo entre manos.

Desde aquí quiero aprovechar para darle las gracias por su respuesta.
Cita:
Hola,

La verdad es que no se me ocurre ninguna forma de sincronizar ambas bases de datos de forma sencilla. Es a es la razón por la que no contesté en su momento a tu mensaje.

Por el lado web, habría que hacer un servicio web capaz de recibir los nuevos datos y actualizar la base de datos en web. Por el lado PC habría que hacer una conexión con dicho servicio y enviarle los datos adecuados. También sería útil poder consultar al servicio web las diferencias con la versión PC y viceversa.

Lamento ser tan escueto, pero no tengo mucho más tiempo. Puedes contestar a tu hilo en el foro para que vuelva a la cabecera, y quizá así alguien pueda darte alguna pista más.

Un saludo.
Visto de que esto es un poco complejo, creo que primero programare el programa que va a correr en el ordenador y luego cuando todo funcione correctamente, ya pensare en el modo de sincronizar ambas bases de datos.

Yo avía pensado el meter un campo Date Time a cada registro y así saber cuando se ha creado o actualizado ese registro. Luego tanto el programa como la aplicación PHP le preguntaría a cada tabla su última fecha y hora en el que se ha actualizado, compararía ambos resultados y en base a los resultados sincronizaría los datos en una dirección u otra.

Muchas gracias a todos por vuestro interés, si alguien tiene alguna idea o quiere aportar alguna opinión quedo a la escucha.

Gracias.
Responder Con Cita
  #3  
Antiguo 08-11-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por aitorqrv Ver Mensaje
Yo avía pensado el meter un campo Date Time a cada registro y así saber cuando se ha creado o actualizado ese registro. Luego tanto el programa como la aplicación PHP le preguntaría a cada tabla su última fecha y hora en el que se ha actualizado, compararía ambos resultados y en base a los resultados sincronizaría los datos en una dirección u otra.
En todo caso sería más fácil tener una tabla donde se guardan todos los cambios que se van haciendo: altas, bajas y modificaciones y ejecutar lo que haya en esa tabla en la otra base de datos.
Pero es un trabajo delicado que tienes que pensar bien antes de hacer nada.
Responder Con Cita
  #4  
Antiguo 08-11-2013
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.913
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
La forma mas simple es crear desde 0 la BD de sqlite desde los datos de MySql. Osea, se cargan todos los registros, tal cual. Es un proceso rapido para una carga de datos mediana (eso es lo que hago ahora con http://www.elmalabarista.com/bestseller).

Si tienes que sincronizar en tiempo real los cambios, es un cuento muy diferente. Es algo particularmente dificil de hacer (a menos que todos los cambios sean adiciones de registros, sin relaciones).

Si cuentas mas detalles...
__________________
El malabarista.
Responder Con Cita
  #5  
Antiguo 09-11-2013
aitorqrv aitorqrv is offline
Miembro
 
Registrado: abr 2007
Posts: 18
Poder: 0
aitorqrv Va por buen camino
Hola, muchas gracias a todos.

Los cambios no tienen por que hacerse en tiempo real ya que esto no es tan importante.

La opción que comenta mamcx me parece muy interesante lo que me preocupa es lo de a que se refiere con "Es un proceso rapido para una carga de datos mediana". La tabla mas grande que puedo llegar a manejar creo que en un caso extremo podrian ser 10000 registros anuales (la media estaria en 250) y la tabla podria tener 10 columnas como maximo (ahora no lo recuerdo la cantidad esacta). A lo largo de 100 años serian 1000000 de registros, ami eso me parece poco ya que la única referencia que tengo es el robot que manejo en el trabajo, y todos los meses ya genera mas de un millon de entradas en su control historico de movimientos.

No se sis estos datos seran aproximados ya que como he comentado no controlo mucho del tema:

En el caso extremo (mas bien tirando a imposible):
1.000.000 registros anuales
por 10 columnas 10.000.000 de datos
a una media de 10 letras por celda o registro 100.000.000
a lo largo de 100 años 10.000.000.000 letras
a 1kbyte por letra en 100 años la db ocuparia 9.31323Gb (95.36743Mb anuales)

En el caso mas realista (in cluso un poco tirando por lo alto):
250 (reg año)x10 (columnas)x10 (letras reg)x100(años)=2.500.000 caracteres en 100 años que suponenen 2.38419Gb (0.02384Mb anuales)



Yo creo que 0.02384Mb anuales no es tanto y en las opciones del progrma se podria hacer que por defecto solo sinclonizase solo los últimos 12 meses, los últimos 2 o 5 años, 10 años y todo....

Muchas gracias, un saludo.
Responder Con Cita
  #6  
Antiguo 09-11-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
El problema no es la cantidad de datos, sino sincronizarlos.
Si no necesitas tiempo real, entonces quizás te valdría comprimir la BD en un zip, enviarla completa al otro sitio, allí la descomprimes y la importas.
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
Copiar tabla de MySQL a SQLite darkerbyte Conexión con bases de datos 1 01-05-2013 03:09:06
Sincronizar BD MySQL Hosting con BD MySQL servidor local ivantech MySQL 3 09-03-2010 19:01:07
Sincronizar base de datos con MySQL anekro MySQL 0 19-06-2008 10:45:30
Sincronizar dos BD de SQL lgarcia SQL 2 18-05-2007 19:45:00
Sincronizar bdd con ado dimitri Conexión con bases de datos 0 29-01-2007 11:10:21


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


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