Можно ли наблюдать частичные изменения от атомного Firestore?

Mårten Wikström спросил: 12 мая 2018 в 05:16 в: firebase

В документах Firestore говорится, что обе транзакции и пакетные записи являются атомарными операциями - либо все изменения записываются, либо ничего не изменяется.

Этот вопрос касается того, могут ли изменения атомной операции в Firestore быть частично наблюдаемый , или все или ничего не распространяется на читателей тоже?


Пример:

Предположим, что у нас есть база данных Firestore, по крайней мере, с двумя документами X и Y.

Давайте также скажем, что к этой базе данных подключены как минимум два клиента (A и B).

В некоторый точечный клиент A выполняет пакетную запись, которая обновляет как документы X, так и Y.

Позже клиент B считывает документ X и замечает изменение, сделанное клиентом A.

Теперь, если клиент B также будет читать документ Y, есть ли гарантия того, что изменение, сделанное A (в той же операции с пакетной записью), будет наблюдаться?

(Предполагая, что никаких других изменений, внесенных в эти документы )


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

может быть в том случае, если разрешено Firestore (в течение ограниченного промежутка времени), чтобы выставить изменение документа X клиенту B, но все же не подвергать изменения документа Y. Оба изменения будут отображаться в конечном итоге .

Вопрос; будут ли они отображаться как атомная операция или это простота, предусмотренная только для записи?


1 ответ

Есть решение
Mårten Wikström ответил: 22 мая 2018 в 07:45

Я получил отличный ответ от Гила Гилберта в группе Firebase Google.

Короче говоря; Firestore действительно гарантирует, что чтение также соответствует. Никаких частичных наблюдений, о которых я беспокоился.

Однако, Гил упоминает, что два случая заключались в том, что клиент мог наблюдать подобную несогласованность в любом случае из-за автономного кэширования и обработки сеанса.

Ответ Гила (ссылка выше) для деталей.