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

Прошу извинить за чайниковский вопрос, если я хочу, чтобы приложение

работало и в офлайне (а потом синхронизировалось при появлении сети) обязательно использовать что-нибудь типа SQL lite или можно просто текущий стейт сохранять на диск? При условии, что данных относительно много (скажем десять таблиц, в каждой до 2000 значений)

13 ответов

8 просмотров

20 000 элементов - это не так уж много (особенно если там преимущественно числа а не строки с абзацами текста). если у вас redux можете взять redux-persist, он по умолчанию в AsyncStorage конфигурируется, но при необходимости можно и в realm, например, или вообще по частям разбить и в разные хранилища складывать. сам asyncstorage (на android) тоже поверх sqlite работает только учитывайте что на android у asyncstorage по умолчанию ограничение 6 мб (можно увеличить) а redux-persist при дефолтной настройке всё пишет в один ключ (но можно для разных редюсеров настраивать отдельные ключи https://github.com/rt2zz/redux-persist#nested-persists). соответственно у sqlite это будет одно поле с ограничением по максимальной длине строки.

Vitaliy Ponomarev
20 000 элементов - это не так уж много (особенно е...

Мне вот больше интересно, как оффлайн ферст подход в архитектуре строится. Не видели никаких статей хороших? Мне никогда не приходилось таким заниматься, но интересно

Pav Huk
я делаю через amplify datastore

это деталь реализации

Vitaliy Ponomarev
20 000 элементов - это не так уж много (особенно е...

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

Denis
а насколько такое кол-во элементов будет влиять на...

да, оно будет при rehydrate попадать в redux поэтому и уточнил - для чисел это не так критично. если же там абзацы текста - это может быть неоптимально и лучше другое решение посмотреть

Vitaliy Ponomarev
это деталь реализации

да, но там и архитектура не нужна, сервис сам все делает

Denis
это аналог firebase db ?

нет, для db там есть отдельная штука

Denis
но он тоже платный?

да, но Free Tier есть

dan Andreev
Мне вот больше интересно, как оффлайн ферст подход...

смотреть в направлении статей про оптимистичный UI + стратегии синхронизации данных и разрешения конфликтов и состояний (на фронте и бэке). можно начать вот с этого https://habr.com/ru/company/productivity_inside/blog/317664/ https://habr.com/ru/post/319392/ https://github.com/redux-offline/redux-offline#3-decorate-actions-with-offline-metadata (не привязываясь к redux, сам подход) и вот тут есть про один из вариантов реализации обновления данных (и возможных стратегий при возникновении конфликтов) при многопользовательской работе, но концептуально при разруливании онлайн/офлайн событий одного пользователя примерно те же вопросы будут https://youtu.be/IWkQxg6RQ-A?t=11039

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта