Считаются ли транзакции Firestore последовательными очередями? - PullRequest
1 голос
/ 20 марта 2020

Если базовые данные в транзакции Firestore изменяются во время транзакции (извне транзакции), эта транзакция повторяется для обеспечения текущих данных. Однако, если эти базовые данные могут изменяться только внутри транзакций, эффективно ли сериализуются эти данные? Другими словами, если документ может быть создан и отредактирован только с помощью транзакции, когда выполняется одна транзакция, конкурирующие транзакции (в том же документе) ожидаются? Это «первым пришел - первым обслужен» или транзакции с одними и теми же данными прерывают друг друга?

1 Ответ

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

Транзакции не сериализуются - это не будет масштабироваться так, как этого требует Firestore. С точки зрения веб-клиентов и мобильных клиентов транзакции используют «оптимистическую блокировку c» для внесения изменений. Этот стиль блокировки на самом деле не заставляет документ изменяться, он просто указывает, что запись может завершиться не так, как ожидалось, из-за другого изменения. Вот почему транзакции повторяются (, как описано в документации ) - если документ изменяется, пока удерживается блокировка optimisti c, транзакция получает еще один шанс внести изменения с новым содержимым всех документы, участвующие в транзакции.

См. также: Блокировка документов Cloud Firestore

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