Мой вопрос о том, как хранить данные, которые когда-то были получены онлайн и все еще могут быть обработаны после того, как мобильное устройство отключилось и/или было перезапущено. Я использую AngularJS с Ionic (PhoneGap) для создания приложений. Но мой вопрос явно не касается этих технологий.
Лучшие практики, шаблоны или алгоритмы были бы очень полезны для меня или даже некоторые полезные статьи или ключевые слова.
1) Самая простая задача — сделать мое приложение более удобным для пользователя, сделав его функционал пригодным для использования не только в онлайн-режиме, но и в офлайн-режиме. В моем случае это означает, что я должен сделать последние извлеченные онлайн-данные доступными для последующего использования (когда устройство находится в автономном режиме, а также после перезапуска устройства!).
2) Немного сложнее снизить затраты на связь, только синхронизируя измененные данные на стороне сервера при повторном подключении устройства к Интернету.
3) Объекты также могут быть созданы на стороне клиента, когда устройство находится в автономном режиме, и они также должны быть синхронизированы с сервером. Потенциальные риски конфликтов отсутствуют, так как пользователи не совместно используют объекты с правами на запись.
4) Я использую push-сервисы Google и Apple для информирования устройств о новых версиях объектов, которые должны обновляться на стороне клиента. Так что голосование не нужно.
Технологии на стороне клиента: Javascript, AngularJS Framework, Ionic Framework, SQLite (WebSQL) или IndexedDB, PhoneGap (Cordova)
Серверные технологии: Java EE, JPA, MySQL
Формат данных и обмен данными: JSON через REST/http, сервисы push-уведомлений Google и Apple для обмена сообщениями между серверами и клиентами.