Подтвердить что ты не робот

Как синхронизировать базу данных SQLite на телефоне Android с базой данных MySQL на сервере?

Я разрабатываю приложение для Android. Я хочу обновить локальную базу данных SQLite с базой данных MySQL на сервере. Я не могу понять, что самый подходящий и стандартизованный способ сделать это?

4b9b3361

Ответ 1

Создайте веб-сервис (возможно, лучший вариант REST) ​​и выполните сериализацию данных SQLite/MySQL и PUT/POST/GET с веб-службы. Это даст вам хороший уровень абстракции, если вы решите переключиться с MySQL на другую серверную сторону.

Ответ 2

Вы можете взглянуть на fyrecloud.com/amsler. Это исходный код для демонстрационного приложения для Android, которое реализует репликацию MySQL между сервером MySQL и SQLite db on Android-устройство.

Амслер опирается на два столпа:

  • Он взаимодействует с сервером MySQL, используя протокол MySQL Client/Server, чтобы подключиться к серверу для аутентификации и получать события репликации по мере их возникновения.

  • Он использует программное обеспечение Antlr lex и parse для lex и анализирует входящие события репликации, а затем переводит команды MySQL в эквивалентные команды SQLite.

Это отлично подходит для односторонней репликации. Вы можете имитировать двустороннюю репликацию, путем изменения сервера MySQL косвенно с помощью методов типа RESTful, а затем наблюдать, когда MySQL отправляет новое событие репликации.

Доступ к серверу через REST достаточно прост. Однако изменение существующей установки MySQL для поддержки сериализации представляет слишком много головных болей для перечисления здесь. Amsler использует уже существующие службы репликации. REST также зависит от некоторой стратегии опроса, чтобы поддерживать локальное устройство в разумных пределах. Опять же, многие проблемы с этим подходом. Amsler поддерживает TCP/IP-соединение с сервером, что позволяет уведомлять об обновлениях на сервере.

Самая сложная часть Амслера заключается в определении лексинга/синтаксического анализа. Синтаксис между MySQL, SQLite и различными версиями одного и того же имеет много тонких различий. Так много различий, что нецелесообразно предоставлять переводчик с термоусадочной пленкой, и вместо этого вы должны прибегать к модификации грамматики самостоятельно.

Тем не менее, хороший, плохой или уродливый, вот он. Посмотрите и, возможно, перчатка подходит.

Ответ 3

Это, вероятно, будет полезно: синхронизировать базы данных Mysql SQLite

Реальный ответ заключается в том, что нет никакого стандартного или встроенного волшебного способа просто скопировать базу данных MySQL, которая живет на сервере где-то на устройстве. Вам нужно будет либо использовать вебсервис, либо каким-то образом преобразовать MySQL db на сервер в реализацию sqlite android и загрузить этот файл в каталог данных приложения (не маршрут, который я бы рекомендовал принять).

Ответ 4

Поздно к партии, но http://www.symmetricds.org/ является хорошим решением.

Java, работает и на Android.

LGPL.

Может обрабатывать 10 000 клиентов.

Ответ 5

Нет стандартного способа. В зависимости от ваших потребностей вы можете, например, использовать веб-сервисы в протоколах REST или SOAP или больше обмена двоичными данными.