Estoy desarrollando una aplicación web móvil (para iPhone y Android) con una base de datos local (usando html5 webstorage) para que mi aplicación siga siendo utilizable cuando el usuario está desconectado.
Esto funciona perfectamente, pero quiero guardar los datos locales en un servidor. Entonces necesito sincronizar la base de datos local con una base de datos en un servidor. La sincronización solo puede ser unidireccional, pero en el futuro, me gustaría sincronizarla en ambos sentidos (servidor <-> DB local).
Este requisito parece muy común (o lo será en el futuro para la aplicación web móvil), pero no puedo encontrar una biblioteca que lo haga.
Sé que google está haciendo eso en su aplicación web móvil (por ejemplo, gmail), y encontré el proyecto WSPL como un proyecto de google pero sin fuente para descargar.
Si no puedo encontrar una solución, crearé una biblioteca para hacerlo, ya que la sincronización unidireccional no parece difícil, pero me pregunto si hay otras soluciones.
Respuestas:
https://github.com/orbitaloop/WebSqlSync
http://quickconnect.pbworks.com/Using-Enterprise-Synchronization
Para usar esta biblioteca, debe usar el DataAccessObject del marco para acceder a su base de datos. Funciona almacenando todas las solicitudes SQL aplicadas a la base de datos (excepto seleccionar, por supuesto), y enviándolas al servidor. Es genial administrar la eliminación, pero es un poco pesado si tiene muchas actualizaciones, y el servidor necesita usar el mismo lenguaje SQL ...
http://www.quickconnectfamily.org/qcdbsync/ (creo que también almacena el historial de todas las solicitudes SQL)
https://github.com/zefhemel/persistencejs
"persistence.js es una biblioteca de mapeo relacional de objetos Javascript asíncrono. Puede usarlo en el navegador y también en el servidor (y puede compartir modelos de datos entre ellos)".
Tienen un módulo de sincronización de base de datos: DOC of persistence.synch.js
(funciona con HTML5 DB SQLite o Google Gears en el cliente y MySQL en el servidor)
http://impel.simulacre.org/api/Impel.inTouch
http://www.sencha.com/products/io/
fuente
He desarrollado una solución de sincronización genérica llamada WebSqlSync .
No depende de ningún marco. Está disponible aquí: https://github.com/orbitaloop/WebSqlSync
Extracto del archivo README:
WebSqlSync
Sincronice automáticamente una base de datos WebSql local (SQLite en el navegador) a un servidor. (Sincronización bidireccional: cliente <-> servidor)
Muy fácil de integrar a su aplicación existente y muy fácil de usar (2 funciones para llamar: initSync y syncNow)
Uso
Inicializar
Debe inicializar la lib (en cada inicio, por ejemplo).
Creará automáticamente 2 tablas (si aún no existen, una para almacenar todos los elementos nuevos o modificados (tabla new_elem) y otra para almacenar la fecha de la última sincronización (tabla sync_info). También creará activadores SQLite en Para ver INSERTAR o ACTUALIZAR en las tablas que desea sincronizar (para insertar automáticamente los elementos modificados en la tabla new_elem):
Donde TABLES_TO_SYNC es la lista de la tabla que desea sincronizar con el servidor, por ejemplo:
Sincronizar
Para comenzar la sincronización, debe llamar a la función syncNow. Puede llamarlo cada X segundos, o después de algunos cambios, por ejemplo:
Y eso es todo lo que necesita hacer en el cliente. En el lado del servidor, deberá codificar su propia solución (pero no es complicado). Y hay algunos ejemplos en PHP y Java. Nuevamente, las contribuciones son bienvenidas.
fuente