#google-cloud-firestore
# #google-облако-firestore
Вопрос:
Мне интересно, существует ли вероятность того, что Firestore ServerTimestamp будет точно таким же для 2 или более документов в данной коллекции, учитывая, что несколько клиентов будут записывать данные в коллекцию. Я спрашиваю об этом, потому что Firestore не предоставляет автоматически увеличивающийся порядковый номер для созданных документов, и мы должны полагаться на метку времени сервера, чтобы предполагать последовательную запись. Мой вариант использования требует, чтобы документы были пронумерованы или, по крайней мере, имели сходство с моделью «линейной записи». Мое приложение работает на мобильных устройствах и в Интернете
(Есть и другие способы получить добавочное число, например, облачную функцию Firebase с использованием FieldValue.Increment()
метода, который я уже делаю, но это добавляет еще один уровень сложности и задержки)
Можно ли с уверенностью предположить, что каждый документ, созданный в данной коллекции, будет иметь уникальную временную метку и столкновения не будет? Помещает ли Firestore записи в очередь для коллекции или записи выполняются параллельно?
Заранее спасибо.
Ответ №1:
Можно ли с уверенностью предположить, что каждый документ, созданный в данной коллекции, будет иметь уникальную временную метку и столкновения не будет?
Нет, это небезопасно предполагать. Но также крайне маловероятно, что произойдет столкновение, в зависимости от того, как на самом деле происходят записи. Если вам нужен гарантированный порядок, добавьте еще один случайный фрагмент данных в документ в другом поле и используйте его порядок сортировки, чтобы детерминированным образом разорвать любые связи. Вам нужно будет решить для себя, стоит ли это для вашего варианта использования.
Помещает ли Firestore записи в очередь для коллекции или записи выполняются параллельно?
Вы должны учитывать, что все записи выполняются параллельно. Порядок операций записи не гарантируется, поскольку он вообще плохо масштабируется.
Комментарии:
1. Это отвечает на мой вопрос, спасибо. Хотя я не уверен, что наличие другого поля со случайными данными и сортировка коллекции по полю решат мою проблему. На данный момент, я думаю, я буду использовать то, что у меня есть — логику увеличения на стороне облачной функции. На самом деле я делаю то, что вы предлагаете. В документе есть поле, которое увеличивается с помощью функции cloud. Спасибо за быстрый ответ.