Firestore: как работать с несколькими записями в одном документе (1 в секунду) для случая «Liked Count» в сообщении - PullRequest
0 голосов
/ 01 марта 2020

Как бы мы реализовали функцию post liked count, как в Instagram в Firestore, не затрагивая лимит записи?

Допустим, создаваемое социальное приложение очень популярно и является известным пользователем с миллионами подписчиков. отправляет сообщение. Естественно, что за короткий промежуток времени многим последователям понравится этот пост. likes не проблема, поскольку они представляют собой коллекцию верхнего уровня. И здесь это не касается ограничения, поскольку каждый подписчик обновляет свой собственный документ c.

Однако для поля like_count все эти пользователи будут пытаться обновить этот документ одновременно , Это было бы проблематично c из-за ограничения. И подсчет одинаковых значений был бы неправильным.

Я узнал о «Sharding» или «Распределенном счетчике» , который в основном распределяет число одинаковых по многим документам и линейно делит предел. Однако это не то решение, которое я ищу, поскольку оно плохо масштабируется и требует слишком много архитектуры для генерации такого простого числа.

Означает ли это ограничение такое приложение, как Instagram, Twitter, Facebook, Snapchat, TikTok никогда не может использовать Firestore в качестве бэкэнда? Или есть какие-то умные стратегии, которые преодолевают эти ограничения.

1 Ответ

1 голос
/ 01 марта 2020

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

...