У меня есть автономное веб-приложение React, где все данные хранятся локально в indexedDB. Нет другого сервера, кроме файлового хостинга для статических ресурсов. Я приближаюсь к тому моменту, когда начинаю изучать использование избыточности, но я пытаюсь понять компромиссы между перемещением большего количества данных в хранилище и продолжением использования БД. Каков идиоматический способ использования локальной базы данных с избыточностью?
В настоящее время мое приложение состоит из нескольких компонентов контейнера, каждый из которых извлекает данные из базы данных в componentWillMount
. Один из вариантов интеграции избыточности — оставить его в основном таким же, с той лишь разницей, что состояние сохраняется в хранилище, а данные извлекаются с помощью действий и переходников.
С другой стороны, я видел множество примеров кода, который загружает все данные в хранилище при запуске. Это делает все приложение более детерминированным, его легче тестировать и воспроизводить. Переключение между основными компонентами будет происходить мгновенно (за счет первоначальной загрузки приложения). Но я теряю преимущества, предоставляемые БД, такие как индексы и хорошие запросы.
Кажется, что было бы неразумно загружать буквально всю БД в хранилище, по крайней мере, в моем случае это было бы около 10 МБ данных, а может и больше. Таким образом, у меня всегда будут по крайней мере некоторые компоненты, которым нужно будет продолжать извлекать свои данные при монтировании. Но есть подмножество данных, которое является центральным для приложения, и можно утверждать, что таблица должна быть загружена полностью (вероятно, это будет от 5000 до 10000 объектов).
Каков идиоматический способ работы с локальным хранилищем и избыточностью? Я понимаю, что асинхронная выборка в componentWillMount
не является идиоматической, если ее можно избежать. Даже в тех случаях, когда состояние достаточно мало, чтобы его можно было полностью загрузить в хранилище, стоит ли отказываться от преимуществ красивого эффективного интерфейса запросов?
Изменить: я должен упомянуть: я использую Dexie, это действительно замечательная библиотека для работы с индексированной БД. Он быстрый, имеет приятный интерфейс запросов, обрабатывает миграцию и т. д. Я бы очень хотел продолжать использовать Dexie, если только нет веских причин поступать иначе.
Для справки: вот обсуждение этой темы на github Dexie. Общая форма на вынос, то есть «это зависит». Не совсем тот ответ, который я искал, поэтому я надеюсь получить больше информации, если это возможно.