Ver Mensaje Individual
  #4  
Antiguo 06-07-2016
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Reputación: 11
bucanero Va camino a la fama
Hola juniorSoft,

En mi sistema, la BBDD principal esta en MSSQL en local, y la BBDD de destino esta en un servidor MySQL en internet, y llego a realizar una sincronizacion completa con algo mas de 50 tablas, algunas de ellas con varios millones de registros en poco mas de 7 u 8 minutos.
Para tablas no muy grandes, varios miles de registros, apenas tardas unos segundos.
Todo esto, teniendo en cuenta que la mayoria de los datos no suelen cambiar, otra historia distinta es hacer una sincronizacion desde cero donde se van a crear todos los datos.

Yo el sistema lo he optimizado para que las cargas de trabajo al servidor de BBDD sean las minimas posibles.
Como pongo anteriormente me descargo solo los indices de cada registro con sus hash correspondientes ordenados por el/los campos indices y
recorro ambas tablas (la de origen y la de destino) buscando cambios en los hash o registros que no existan, y genero dos listas de indices, una con los indices que no existen o se han modificado y otra con los indices que hay que borrar en la tabla de destino

y una vez terminada esta comparación inicial:
- Se ejecuta la consulta de borrado con los indices de la lista a eliminar.
- Y se realiza una consulta de todos los campos que se van a actualizar para los indices que contiene la lista a modificar,
una vez que ya tengo esos datos monto una consulta de insercion masiva con modificacion de los datos, (Para MySQL seria una sentencia INSERT INTO.. ON DUPLICATE KEY UPDATE... y para MsSQL es un sentencia MERGE )


No tengo experiencia en cuanto a la programación con dispositivos moviles por lo que no se la velocidad que pueden llegar a tener este proceso.

Un saludo
Responder Con Cita