Как синхронизировать базу данных SQLite на телефоне Android с базой данных MySQL на сервере? - PullRequest
29 голосов
/ 28 июня 2011

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

Ответы [ 5 ]

14 голосов
/ 28 июня 2011

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

5 голосов
/ 21 февраля 2012

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

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

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

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

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

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

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

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

2 голосов
/ 09 августа 2013

Поздно до вечеринки, но http://www.symmetricds.org/ - хорошее решение.

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

LGPL.

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

2 голосов
/ 28 июня 2011

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

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

0 голосов
/ 28 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...