¿Cómo sincronizar la base de datos SQLite en el 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 soy capaz de averiguar que ¿cuál es la manera más apropiada y estandarizada de hacerlo?

Crear un servicio web (REST es probablemente el mejor) y serializar 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 otra parte 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 el SQLite db en un dispositivo Android.

Amsler descansa sobre dos pilares:

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

  2. Utiliza el software Antlr lex y analiza para leer y analizar los eventos de replicación entrantes y luego traducir los comandos de 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 de nuevo.

Acceso a un servidor a través de REST es bastante fácil. Sin embargo, modificar una instalación existente de MySQL para soportar la serialización presenta demasiados dolores de cabeza para enumerar aquí. Amsler se aprovecha de 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 de servidor-push.

La parte más difícil de Amsler es averiguar el lexing / parsing. La sintaxis entre MySQL, SQLite y las diversas versiones de la misma tiene muchas diferencias sutiles. Tantas diferencias que no es práctico proporcionar un traductor de encogimiento-envoltura y en lugar de otro usted debe recurrir a la modificación de la gramática usted mismo.

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

Esto probablemente va a ser útil: bases de datos de sincronización Mysql SQLite

La respuesta real es que no hay estándar o construido en forma mágica para copiar sólo una base de datos MySQL que vive en un servidor en algún lugar de un dispositivo. Tendrás que implementar un servicio web o de alguna manera convertir el db de MySQL en el servidor a la implementación androide sqlite y descargar ese archivo en el directorio de datos de tu aplicación (no es una ruta que recomendaría tomar).

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

Java, se ejecuta en Android también.

LGPL.

Puede manejar 10,000's de clientes.

No hay manera estándar. Dependiendo de sus necesidades, puede utilizar servicios web en protocolos REST o SOAP o más intercambio binario de datos.

  • ¿Cómo acceder a un contexto de aplicación ya en ejecución desde un servicio de adaptador de sincronización en Android?
  • Android Gradle Error: "Error al obtener el ID de la aplicación para depurar"
  • ¿Cómo funciona la sincronización de datos y cómo la uso en aplicaciones cliente-servidor?
  • sincronización del tiempo del emulador androide
  • Utilizando un local_manifest.xml con repo
  • Recuperación de llamada de Android SyncAdapter
  • Android sync strings.xml
  • API de copia de seguridad de Android
  • Adaptador de sincronización sin cuenta
  • SyncAdapter no se llama dependiendo del orden de las llamadas de configuración de cuenta
  • Cómo compartir un objeto entre dos subprocesos (sincronización de subprocesos)?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.