Всегда ли обновления в группе объектов видны для чтения в группе после возврата коммита? - PullRequest
1 голос
/ 29 февраля 2012

У меня есть вопрос о примерах в этой статье:

http://code.google.com/appengine/articles/transaction_isolation.html

Предположим, я поместил Адама и Боба в одну группу сущностей и изменил операцию getTallPeople, чтобы проверять только высоту Адама и Боба (то есть получить доступ только к сущностям в группе сущностей). Теперь, если я выполню следующие заявления:

begin transaction
updatePerson (update Adam's height to 74 inches)
commit transaction

begin transaction
getTallPeople
commit transaction

Могу ли я быть уверен, что getTallPeople всегда будет возвращать как Адама, так и Боба? То есть если обновления сущности / индекса еще не завершены, будет ли вторая транзакция ждать, пока они не будут выполнены? Кроме того, будет ли поведение таким же без использования транзакции для getTallPeople?

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 01 марта 2012

Да.Чтобы getTallPeople вызывался внутри транзакции, он должен использовать фильтр «предок» в своем запросе, чтобы ограничить свои результаты членами группы.Если это так, то как индексные данные, которые он использует для определения результатов, так и объекты, которые он выбирает на основе этих результатов, будут строго соответствовать зафиксированным результатам предыдущей транзакции.Это также верно без явной транзакции, если в запросе используется фильтр предков, а вы используете хранилище данных HR.(Хранилище данных HR некоторое время использовалось по умолчанию, поэтому вы, вероятно, используете его.)

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

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