Найдите n ближайших местоположений в flutter: локальная база данных (Sqlite) в сочетании с облачным хранилищем Firestore и базой данных Firebase в реальном времени

#firebase #flutter #firebase-realtime-database #google-cloud-firestore #geolocation

#firebase #flutter #firebase-realtime-database #google-cloud-firestore #геолокация

Вопрос:

Сейчас я работаю над следующей темой:

  • около 8000 хранилищ / объектов (уникальный идентификатор, имя, адрес, широта, долгота, геохеш, количество продуктов, количество продуктов.)
    • в будущем появятся новые магазины, а также некоторые из магазинов будут удалены
    • Я планирую добавить атрибут версии к каждому данные: например, я начинаю с version1. Если я получу обновление или новое хранилище, у него будет версия2
    • для получения изменений в реальном времени это не требуется. Эти данные будут меняться только пару раз в месяц
  • Приложение Flutter с функцией: найдите n магазинов в этом местоположении

  • поскольку данные меняются нечасто, я планировал добавлять обновленную локальную базу данных sqlite в каждую сборку
  • Я буду использовать базу данных в реальном времени или Firestore для получения обновленных данных в моем приложении, чтобы избежать публикации новой версии только потому, что база данных была изменена
  • Firestore: я добавлю только новый атрибут в свой документ и буду запрашивать все данные, которые новее, чем версия моей локальной базы данных, и у меня также будет коллекция, в которой есть все удаленные элементы
  • База данных в реальном времени: здесь у меня было бы что-то вроде этого
          -updates
                  version1
                           newData: List of unique IDs
                           deletedData: List of unique IDs
     

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

Вопросы:

  1. Является ли мой подход хорошей идеей или я должен забыть о локальной базе данных sqlite и использовать только Firebase / Firestore?
  2. Если я буду использовать локальную базу данных и буду получать обновления только от серверной части, Какие из сервисов мне следует использовать с точки зрения ценообразования и т. Д.? (Преимущество Firestore: если я использую Firestore, я могу легко переключиться на него с помощью плагина flutter и забыть о своей локальной базе данных)

Ответ №1:

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

Затем вы можете использовать что-то вроде хранилища Firebase или даже хостинга Firebase для распространения обновленных наборов данных среди пользователей. Конечно, вы могли бы использовать Firestore или Realtime Database и для этого, но если вы не используете их возможности запросов или реального времени, есть более дешевые варианты распространения статического файла.