214 похожих чатов

Таков вопрос. Есть offline приложение, с несколькими разными таблицами данных в

sqlite.

Появилась необходимость добавить синхронизацию со стороны сервера, но приложение всё ещё должно оставаться offline-first.

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

Пока в голове вертятся банальные:
- Добавить у каждой синхронизируемой таблицы поле sync BOOLEAN которое будет меняться в зависимости от ситуации.
или
- Держать отдельную сущность с очередью на синхронизацию, чтобы не смешивать данные синхронизации с данными самих сущностей.

Хочется послушать чужие мысли перед тем как садиться за реализацию. Может я не вижу какого-то простого и хорошего решения?

Или кто-то реализовывал подобное поведение и подскажет о подводных камнях.

4 ответов

8 просмотров

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

Я добавлял в такой ситуации колонку sync, отправка через periodic worker + попытка сразу при сохранении

Andrey
Я добавлял в такой ситуации колонку sync, отправка...

А что там сейчас используется для periodic worker? А то задача появилась, лет 6 как надобности такой не было, а сейчас всякие доз моды итд

Konstantin-Dovnar Автор вопроса

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

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
Всем вечера. Подскажите как лучше сделать. делаю на Д10 Например будет база данных на SQLite. в ней будет много таблиц. более 50шт Типа справочник. Содержать ID Name Id p...
Андрей Т 🐎
10
Я короче решил скомпилировать Nim в js, я думал он сработает как обычный транслятор. По итогу он мне создал файл с расширением js, и туда поместил кучу кода Вопрос, что это з...
𝕾𝖍𝖆𝖉𝖊 <suspense>
9
это группа токсиков или тех кто помогает?
Ибрагим
9
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
мы пытаемся подменить функцию, которая имеет меньше инструкций относительно функции, которой подменяем. https://www.reddit.com/r/jailbreakdevelopers/comments/w06ujy/mshookfun...
Óðinn
6
Карта сайта