Приложение Flutter: часто извлекайте данные из sqlite или храните в памяти

#flutter #sqflite

Вопрос:

У меня есть приложение flutter, в котором есть некоторые основные данные и 2 большие таблицы с отношениями между родителями и детьми. Данные хранятся на устройстве в базе данных SQLite. Я ожидаю сотни или, может быть, пару тысяч записей в самой большой таблице, которая является дочерней таблицей. Из этих записей я создаю списки объектов. В приложении мне нужны эти списки, упорядоченные по разным полям. Мне кажется, что гораздо проще извлекать данные из базы данных каждый раз, когда они мне нужны.

Мой вопрос в том, какой подход лучше?

  • Извлечение всей базы данных при открытии приложения и работа с этими списками в памяти. Для меня недостатком этого решения является то, что мне нужно поддерживать порядок списков, что может быть довольно болезненным по сравнению с одним оператором SQL. Порядок объектов в этих списках очень важен!
  • Или я должен читать данные из базы данных каждый раз, когда они мне нужны? И это означает, что я читаю только те записи из БД, которые мне нужны для данного экрана.

Какой подход лучше с точки зрения производительности?

Ответ №1:

Если только он не является MVP со слишком небольшим количеством данных, то приблизьтесь к двум. Это будет немного более громоздко для вас, но это сделает приложение более надежным в будущем и не будет тратить много оперативной памяти(если на устройстве ее достаточно). Вероятно, вам придется реализовать запросы с разбивкой по страницам(выбор, с ограничением и смещением). В то время как пользователь прокручивает и сбрасывает их, если фильтры меняются.

Ответ №2:

Как правило, подкачка-лучший выбор для повышения производительности.

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