Хранение тегов и их количества в документе Cloud Firestore - PullRequest
0 голосов
/ 18 июня 2019

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

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

Я объясню два варианта, которые я обдумал, и почему они не очень хороши / не будут работать:

  1. Вариант 1: я уже храню документ для каждого тега и всех случаев, когда эти теги использовались. Это само по себе проблематично, потому что я могу хранить только до 20 000 экземпляров, и в долгосрочной перспективе это не очень хороший вариант. Но даже если бы мне пришлось создать этот список потенциальных тегов для использования пользователем в приложении, мне придется прочитать документ каждого тега и получить размер его экземпляра массива. Когда приложение используется, это может привести к тысячам прочтений, чтобы инициализировать этот список каждый раз, когда пользователь открывает мое приложение. Совсем не лучшая идея.

  2. Вариант 2. Иметь документ, в котором хранится карта всех тегов и количество их экземпляров. Всякий раз, когда используется тег, я просто увеличиваю это значение на карте. Это также не было бы хорошей идеей, потому что опять-таки у меня есть ограничение в 20 тыс. Полей, что означает, что я смогу хранить информацию только о 20 тыс. Тегов, что недопустимо в долгосрочной перспективе.

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

Редактировать: Я только что понял, что на самом деле мне не нужно хранить все экземпляры, где используется тег, потому что в Cloud Firestore у меня могут быть запросы и фильтр, и здесь используется тег, так что первый вариант жизнеспособен. Но это означает, что если я хочу сгенерировать этот список для пользователя, мне придется запрашивать базу данных для каждого предложения тега, которое я добавляю, чтобы я мог получить количество случаев, когда этот тег использовался. Это хорошая идея? Или это заняло бы слишком много ресурсов? Он будет запрашивать каждый раз, когда пользователь хочет что-то искать. Запрашивается ли размер запроса для чтения для каждого документа в результате? На самом деле я не буду читать никаких документов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...