Mirkom63
@Mirkom63
Я программист

Как реализовать синхронизацию данных с сервером для оффлайн/онлайн приложения?

Делаю мобильное приложение на ReactNative у которого подразумевается, что будут производиться действия оффлайн. Потом когда появится интернет нужно чтобы данные синхронизировались с сервером.
Думаю написать что-то типа очереди задач, куда закидываются запросы на сервер и если интернета нет, то ничего не происходит, а если интернет появился, то отправить все запросы которые стоят в очереди.
Уточню, что те же действия можно выполнять на сайте и нужно чтобы База данных была синхронизирована с состоянием данных в приложении.

Для примера заметки в телефоне. Я могу написать заметку когда интернета нет. Потом когда интернет появится, заметки синхронизируются с сервером и я могу их прочитать с другого устройства. Нужно что-то похожее по логике.

Хочу узнать есть ли общепринятные практики решения этой проблемы, готовые плагины на эту тему? Может вы уже делали так и что-то использовали?

Просто хочу узнать, прежде чем писать свое, не буду ли писать велосипед)
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 1
@rPman
Готовые механизмы синхронизации - у реляционных баз данных с поддержкой репликации, т.е. у тебя локально поднята полная копия базы данных, ты работаешь с ней, а она своими механизмами реплицируется на лету с удаленной, для однопользовательского доступа (когда удаленная база исключительно slave резервная реплика) это будет работать отлично.

репликацию можно приостанавливать, изменения будут накапливаться базой данных в логе, а при возобновлении работы - эффективно передаваться на удаленную базу

p.s. понятно что такие базы как mysql или postgres это умеют, но есть даже решения для sqlite (форки типа dqlite, rqlite и даже какие то внешние инструменты типа через фаловую систему litefs, сам не трогал но читал и запоминал возможности)
------------

самому можно конечно что то пилить, но трудоемкость процесса будет очень большой, ведь придется делать двойную работу.

Иногда, когда используемый ORM позволяет кешировать данные в памяти, можно добавить сериализацию и как то откладывать хранение данных в файлах, медленно криво но тоже просто.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы