Счетчик приращений по нескольким вложенным коллекциям - PullRequest
0 голосов
/ 13 января 2020

Я структурирую приложение, в котором пользователи могут увеличивать счетчик посетителей, когда нажимают «go» на событии. Для упрощения чтения события дублируются в подколлекциях «События» между пользователями, которые следуют за определенным организатором. Когда у организатора есть, например, 10000 подписчиков, каждый раз, когда пользователь нажимает «go» на событии, этот счетчик должен быть увеличен во всех вложенных коллекциях, что в данном случае составляет 10000 записей документа. Является ли дублирование данных правильным решением в данном конкретном случае, или я должен просто объединиться, чтобы прочитать сообщение организатора, чтобы мне не приходилось обновлять эти данные для всех подписчиков организатора. «Go» - это довольно часто выполняемое действие, оно не обновляет изображение профиля, которое происходит, может быть, раз в год, но я ожидаю, что каждый пользователь будет нажимать «go» на мероприятии несколько раз в день, потому что приложение допускает частые передумать.

1 Ответ

0 голосов
/ 13 января 2020

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

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

Имейте в виду, что существует ограничение в 500 документов в одна транзакция, поэтому если вам нужно обновить 10000 документов, вы не сможете сделать это атомарно. Вполне возможно, что некоторые документы просто не получат обновления, если ваш код не устойчив к ошибкам или неполной работе. Это может быть достаточной причиной, чтобы не раздувать запись в стольких документах.

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