Я работаю над мобильным приложением (Cordova iOS / Android) с медленно меняющимися данными, доступными только для чтения (для пользователя) объемом менее 100 МБ, которые должны быть доступны для поиска (полный текст и фасеты).Исходя из веб-фона, мы обычно обслуживаем данные из веб-API и базы данных.Однако нам бы хотелось, чтобы приложение можно было использовать в автономном режиме.Учитывая, что база данных может удобно размещаться на устройстве, и нам не нужно обновлять информацию в реальном времени для большинства наших наборов данных, я хотел бы посмотреть, что мы могли бы сделать, чтобы предварительно разместить контент на устройстве.Мы являемся службой подписки, поэтому эти данные находятся за платным экраном (который, я считаю, ограничивает наши возможности индексированием приложений Core Spotlight / Firebase).
Учитывая, что все, что мы придумаем, должно быть кроссплатформенным,Я сосредоточился на Sqlite (возможно, на заказ в комплекте с приложением).Он имеет полнотекстовый поиск, и мы можем фильтровать по связанным данным фасетов.
Вот подход, который я исследую:
- Ежедневная / почасовая работа по восстановлению набора контента из вышестоящих данных.
- Переиндексация новых данных в таблицах FTS.
- Сохранение базы данных sqlite в корзине, доступной через Интернет.
- Уведомление приложений о новом наборе контента.
- Они загружают изменения (или полную базу данных).
Существует ли уже существующая служба или библиотека, которая уже делает это?
Ископаемые кажется, что это очень многоиз этого, но это не широко используется.Я не могу найти случай, когда он использовался в качестве хранилища контента в мобильном приложении.Кроме того, нам не нужно выдвигать изменения обратно с устройства, поэтому я не знаю, будем ли мы брать на себя много накладных расходов на функцию, которая нам не нужна.
Большинство другихсервисы, обеспечивающие синхронизацию и офлайн (AppSync, Firebase), также кажутся излишними для наших нужд и в большей степени ориентированы на то, чтобы быть бэкэндами в режиме реального времени с несколькими авторами.