Это скорее концептуальный вопрос, не обязательно связанный с какими-либо конкретными технологиями. Допустим, у вас есть база данных на сервере, некоторые REST/JSON API для доступа к содержимому в этой базе данных, а некоторые мобильные клиенты отображают данные, полученные через API.
Было бы неплохо иметь некоторый механизм кэширования на клиенте, а также иметь возможность автономного доступа к данным, пока клиент только читает (в моем случае это нормально, чтобы запретить доступ на запись к автономным клиентам, чтобы избежать чтобы справиться со всеми этими неприятными конфликтами, которые могут произойти).
Похоже, что хороший способ решить это будет иметь подмножество модели базы данных серверов, присутствующую на клиенте, и синхронизировать данные с сервера на клиент. Доступ к локальной базе данных может сразу же вернуть результаты, а также инициировать запросы на обновление для сервера. В случае, если сервер возвращает измененные данные, модель клиента затем синхронизирует его с локальной базой данных и уведомляет об изменении данных.
Конечная цель, конечно же, состоит в том, что пользователь может просматривать информацию независимо от стабильности своего интернет-соединения и не раздражается диалоговыми окнами подключения или подобными, если он не модифицирует какие-либо данные.
Теперь с точки зрения реализации... с одной стороны, кажется, что плохая идея - соединить базу данных сервера напрямую с клиентской базой данных, поскольку они могут быть от разных поставщиков. По-моему, по крайней мере, должна существовать независимая от поставщика модель выше обеих реализаций баз данных. С другой стороны, преобразование данных из базы данных сервера в какой-то транспортный формат и возврат его в клиентскую базу данных, похоже, связано с большими накладными расходами.
Любые предложения, как решить эту проблему элегантным и удобным способом?