¿Cómo sincronizar la base de datos SQLite en un teléfono Android con la base de datos MySQL en el servidor?

Estoy desarrollando una aplicación para Android. Quiero actualizar la base de datos SQLite local con la base de datos MySQL en el servidor. No puedo descifrar cuál es la forma más adecuada y estandarizada para hacerlo.

Cree un servicio web (REST es probablemente el mejor) y serialice sus datos SQLite / MySQL y PUT / POST / GET a / desde su servicio web. Esto le dará una buena capa de abstracción en caso de que decida cambiar de MySQL a otro lado del servidor.

Es posible que desee echar un vistazo a fyrecloud.com/amsler. Este es el código fuente de una aplicación de demostración de Android que implementa la replicación de MySQL entre un servidor MySQL y la base de datos SQLite en un dispositivo Android.

Amsler se basa en dos stackres:

  1. Se comunica con el servidor MySQL utilizando el protocolo MySQL Cliente / Servidor para conectarse al servidor para autenticación y para recibir eventos de replicación a medida que ocurren.

  2. Utiliza el software Antlr lex y parse para leer y analizar los eventos de replicación entrantes y luego traducir los comandos MySQL en comandos SQLite equivalentes.

Esto es ideal para la replicación unidireccional. Puede simular la replicación bidireccional modificando el servidor MySQL indirectamente a través de métodos de tipo RESTful y luego viendo mientras MySQL envía un nuevo evento de replicación.

Acceder a un servidor a través de REST es bastante fácil. Sin embargo, modificar una instalación MySQL existente para admitir la serialización presenta demasiados dolores de cabeza para enumerar aquí. Amsler aprovecha los servicios de replicación preexistentes. REST también depende de alguna estrategia de sondeo para mantener el dispositivo local razonablemente actualizado. Una vez más, muchos problemas con este enfoque. Amsler mantiene una conexión TCP / IP con el servidor que permite la notificación de actualizaciones push-server.

La parte más difícil de Amsler es descubrir el lexing / parsing. La syntax entre MySQL, SQLite y las diversas versiones de la misma tienen muchas diferencias sutiles. Tantas diferencias que no es práctico proporcionar un traductor retráctil y en su lugar debe recurrir a la modificación de la gramática.

Sin embargo, bueno, malo o feo, aquí está. Eche un vistazo y tal vez el guante encaje.

Esto probablemente sea útil: sincronizar las bases de datos Mysql SQLite

La verdadera respuesta es que no existe una forma estándar o construida de manera mágica para simplemente copiar una base de datos MySQL que vive en un servidor en alguna parte de un dispositivo. Deberá implementar un servicio web o convertir de alguna manera el DB de MySQL en el servidor a la implementación de sqlite de Android y descargar ese archivo en el directorio de datos de su aplicación (no es una ruta que recomendaría tomar).

Tarde en la fiesta, pero http://www.symmetricds.org/ es una buena solución.

Java, se ejecuta en Android también.

LGPL.

Puede manejar 10,000 de clientes.

No hay una forma estándar. Dependiendo de sus necesidades, puede, por ejemplo, usar servicios web en protocolos REST o SOAP o más intercambio de datos binarios.