Лучший способ отслеживать переменные счетчика для документов в коллекции - PullRequest
0 голосов
/ 05 мая 2020

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

Вариант 1 (Счетчик и сбор отдельно)

[User Collection]           [Followers Collection]
(uid)                       (uid)
  -username                   -uid_1
  -follower_count             -uid_2

Вариант 2 (Поместите счетчик и данные в отдельную коллекцию, сделайте под -коллекция для данных)

[User Collection]           [Followers Collection]
(uid)                       (uid)
 -username                   -count
                             -[Followers]
                               -uid_1
                               -uid_2

Вариант 3 (Храните все в одной коллекции и используйте массивы, чтобы получить все данные + счетчик за одно чтение - Беспокоитесь о том, что это приведет к документу превышение лимита 1Mib)

[User Collection]
(uid)
 -username
 -following
    -[uid_1, uid_2]                             

Есть ли явная проблема в том, чтобы сделать это одним из этих способов? Или все это приведет к одинаковым затратам / времени запроса в конце дня?

1 Ответ

0 голосов
/ 05 мая 2020

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

Независимо от того, используете ли вы коллекцию или вложенную коллекцию, полностью зависит от вас и от того, как она лучше всего подходит для ваших запросов. Поскольку мы не знаем ваших запросов или ожидаемых правил безопасности, невозможно сказать, какое из них лучше. Выберите тот, который соответствует вашим потребностям.

...