Строгая согласованность хранилища данных путем загрузки сохраненной сущности по ключу - PullRequest
0 голосов
/ 23 сентября 2018

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

thing.setValue(newValue);
ofy().save().entity(thing).now();
Thing updatedThing = ofy().load().key(thingKey).now(); 

Содержит ли updatedThing новое значение?

Является ли это хорошим методом для обеспечения строгой согласованности в случае, когда я хочу обновить сущность?

1 Ответ

0 голосов
/ 23 сентября 2018

Да, поиск ключей всегда согласован в хранилище данных.Из таблицы в начале Окончательная согласованность в облачном хранилище данных :

[Lookup by key][2] (get())    Strong consistency

Но есть ловушка - если вы выполняете как запись, так и чтение внутри той же транзакции чтение не увидит записанную информацию.Начиная с Изоляция и согласованность :

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

...