Как вести большой уникальный подсчет? - PullRequest
0 голосов
/ 07 декабря 2018

Я бы хотел сохранить количество учетных записей пользователей (в нескольких документах), и я не знаю, как лучше всего подойти к нему, учитывая ограничение в 1 МБ для Firestore.В идеале я хотел бы хранить каждый уникальный идентификатор пользователя в одном массиве и получать счет таким образом.Это делает задачу идемпотентной, так как (1) каждый пользователь может только добавлять и удалять свои собственные идентификаторы из массива и (2) получить точный счет так же просто, как получить счетчик массива.Однако размер массива ограничен пределом размера документа, и документы должны быть маленькими.

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

Какой самый лучший третий вариант?

1 Ответ

0 голосов
/ 07 декабря 2018

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

...