Как реализовать загрузку БД с сервера в мобильном приложении?
Имеется БД(MySQL) на сервере с данными.
Также имеем клиентское приложение на Android/iOS с SQLite, которое должно скачивать данные с сервера и отображать их. Похожий функционал виден в 2GIS, там скачивается база с сервера и потом развертывается в приложении.
Мне интересна сама технология такого развертывания БД на клиентской стороне - как это происходит?
1) Скачивается дамп бд и потом он уже используется напрямую клиентом.
2) Клиент получаем БД в виде JSON. После он парсится и вставляется уже в готовую структуру БД клиента? Что делать, если БД будет большой? Ведь тогда пострадает скорость.
Данные достаточно объемные + хочется, чтобы клиент был больше оффлайновым, поэтому обмен информацией с сервером через REST API не целесообразен.
Какие есть идеи? Может быть есть готовые решения или у вас был такой опыт?
А почему нельзя встравить изначальную (актуальную на момент сборки) версию БД в апк и копировать на карту при установке?
А затем уже докачивать обновления через JSON и REST API?
Иван: скажем так, приложение - справочник по городам(поэтому идет аналогия с 2GIS). Т.е. изначально не нужно пользователю иметь всю БД -> он качает только нужный ему город и все.
1. настраиваем логирование изменений в серверной БД
2. при первом коннекте получаем полную копию (кроме лога) серверной БД
3. при обновлениях дергаем логи, которые моложе времени последнего обновления и по ним реплицируем локальную БД
4. вешаем на сервере крон-скрипт подчищающий логи, которые старше определенного времени (например, старше чем 3 месяца, зависит от дискового пространства сервера)
5. если на клиенте последнее обновление было давно (более 3х месяцев назад), то придется снова выкачать базу целиком, ибо лог в этом случае не полный